diff --git a/.sops.yaml b/.sops.yaml index 239f8ce..a3c046e 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -4,6 +4,7 @@ keys: - &host_kasei age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc - &host_dosei age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c - &host_europa age14mer45e52r2q4uz8n3fmv69tvk8gvwany4m4ndudud8ajv3jm4nqdj9m6a + - &host_xps16 age1np3fg9ue2tp4l47x7waapvjxh5zcaye2j54laapy7uklamve2c4qv3gytm - &home age10f4a5acpar8vwz3v298r3nv7gggfpmyh4wxpkc2hwq9paq0scf8qee8lau creation_rules: @@ -16,6 +17,7 @@ creation_rules: - *host_kasei - *host_dosei - *host_europa + - *host_xps16 - *home - path_regex: secrets/home.yaml @@ -25,6 +27,13 @@ creation_rules: age: - *home + - path_regex: secrets/xps16.yaml + key_groups: + - pgp: + - *gpg_h7x4 + age: + - *host_xps16 + - path_regex: secrets/kasei.yaml key_groups: - pgp: diff --git a/flake.nix b/flake.nix index 062943f..182424a 100644 --- a/flake.nix +++ b/flake.nix @@ -199,6 +199,7 @@ }]; }; kasei = nixSys "kasei" { }; + xps16 = nixSys "xps16" { }; europa = nixSys "europa" { }; tsuki = nixSys "tsuki" { modules = [ diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 693830e..5aaa67e 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -37,8 +37,8 @@ in { time.timeZone = "Europe/Oslo"; console = { - font = "Lat2-Terminus16"; - keyMap = "us"; + font = lib.mkDefault "Lat2-Terminus16"; + keyMap = lib.mkDefault "us"; }; networking = { diff --git a/hosts/xps16/configuration.nix b/hosts/xps16/configuration.nix new file mode 100644 index 0000000..4109756 --- /dev/null +++ b/hosts/xps16/configuration.nix @@ -0,0 +1,89 @@ +{ config, lib, pkgs, inputs, specialArgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + + ./services/btrfs.nix + ./services/docker.nix + ./services/libvirtd.nix + ./services/logiops.nix + ./services/tailscale.nix + ./services/keybase.nix + + ./testconfig.nix + ]; + + sops.age.keyFile = "/var/lib/sops/age-key.txt"; + + system.stateVersion = "24.11"; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.binfmt.emulatedSystems = [ + "x86_64-windows" + "aarch64-linux" + "armv7l-linux" + "i686-linux" + ]; + + nix.settings.system-features = [ + "kvm" + "benchmark" + "big-parallel" + "nixos-test" + ]; + + i18n.extraLocaleSettings = { + LC_ALL = "en_US.UTF-8"; + }; + + console = { + earlySetup = true; + font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz"; + packages = with pkgs; [ terminus_font ]; + }; + + boot.loader.systemd-boot.consoleMode = "1"; + + machineVars = { + headless = false; + gaming = true; + development = true; + creative = true; + }; + + networking = { + hostName = "xps16"; + networkmanager.enable = true; + firewall.enable = true; + # hostId = "f0660cef"; + }; + + services = { + xserver.upscaleDefaultCursor = true; + xserver.dpi = 192; + tailscale.enable = true; + }; + + environment.systemPackages = [ + pkgs.webcamoid + ]; + + hardware = { + bluetooth.enable = true; + enableRedistributableFirmware = true; + keyboard.zsa.enable = true; + sane.enable = true; + graphics = { + enable = true; + enable32Bit = true; + }; + # ipu6 = { + # enable = true; + # platform = "ipu6epmtl"; + # }; + }; +} diff --git a/hosts/xps16/hardware-configuration.nix b/hosts/xps16/hardware-configuration.nix new file mode 100644 index 0000000..17a4593 --- /dev/null +++ b/hosts/xps16/hardware-configuration.nix @@ -0,0 +1,119 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=root" "compress=zstd" "noatime" ]; + }; + + boot.initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/88bbd92a-88b5-4175-9d6f-c14033607b70"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/34BA-6EA6"; + fsType = "vfat"; + }; + + fileSystems."/home/h7x4" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/.snapshots" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/snapshots" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/git" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/git/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/ctf" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/ctf/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/downloads" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/downloads/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/pictures" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/pictures/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/music" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/music/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home/h7x4/music/.snapshots" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=home/h7x4/music/snapshots" "compress=zstd" "noatime" ]; + }; + + fileSystems."/var/log" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=var/log/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/var/log/.snapshots" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=var/log/snapshots" "compress=zstd" "noatime" ]; + }; + + fileSystems."/var/lib" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=var/lib/active" "compress=zstd" "noatime" ]; + }; + + fileSystems."/var/lib/.snapshots" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=var/lib/snapshots" "compress=zstd" "noatime" ]; + }; + + fileSystems."/var/lib/docker" = + { device = "/dev/disk/by-uuid/178502e0-0481-47ed-842c-2d6b1cf81ac5"; + fsType = "btrfs"; + options = [ "subvol=var/lib/docker" "compress=zstd" "noatime" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s13f0u1u4.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0f0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/xps16/home/default.nix b/hosts/xps16/home/default.nix new file mode 100644 index 0000000..564e9fd --- /dev/null +++ b/hosts/xps16/home/default.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + home.stateVersion = "24.11"; +} diff --git a/hosts/xps16/services/btrfs.nix b/hosts/xps16/services/btrfs.nix new file mode 100644 index 0000000..1b87165 --- /dev/null +++ b/hosts/xps16/services/btrfs.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + services.btrfs.autoScrub.enable = true; +} diff --git a/hosts/xps16/services/docker.nix b/hosts/xps16/services/docker.nix new file mode 100644 index 0000000..9201bf8 --- /dev/null +++ b/hosts/xps16/services/docker.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + virtualisation.docker.enable = true; +} diff --git a/hosts/xps16/services/keybase.nix b/hosts/xps16/services/keybase.nix new file mode 100644 index 0000000..882545e --- /dev/null +++ b/hosts/xps16/services/keybase.nix @@ -0,0 +1,15 @@ +{ config, pkgs, lib, ... }: +{ + services.keybase.enable = true; + + services.kbfs = { + enable = true; + extraFlags = [ + "-label kbfs" + "-mount-type normal" + ]; + # enableRedirector = true; + }; + + environment.systemPackages = with pkgs; [ keybase keybase-gui kbfs ]; +} diff --git a/hosts/xps16/services/libvirtd.nix b/hosts/xps16/services/libvirtd.nix new file mode 100644 index 0000000..0e63f16 --- /dev/null +++ b/hosts/xps16/services/libvirtd.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + virtualisation.libvirtd.enable = true; +} diff --git a/hosts/xps16/services/logiops.nix b/hosts/xps16/services/logiops.nix new file mode 100644 index 0000000..da17ab6 --- /dev/null +++ b/hosts/xps16/services/logiops.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + # TODO: remove when merged: https://github.com/NixOS/nixpkgs/pull/167388 + systemd.services = { + logid = { + description = "Logitech Configuration Daemon"; + startLimitIntervalSec = 0; + wants = [ "multi-user.target" ]; + after = [ "multi-user.target" ]; + wantedBy = [ "graphical-session.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.logiops}/bin/logid"; + User = "root"; + ExecReload = "/bin/kill -HUP $MAINPID"; + Restart="on-failure"; + }; + }; + }; + + hardware.logitech.wireless.enable = true; +} diff --git a/hosts/xps16/services/tailscale.nix b/hosts/xps16/services/tailscale.nix new file mode 100644 index 0000000..1b80d40 --- /dev/null +++ b/hosts/xps16/services/tailscale.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + services.tailscale.enable = true; + + networking.firewall = { + allowedUDPPorts = [ config.services.tailscale.port ]; + checkReversePath = "loose"; + trustedInterfaces = [ "tailscale0" ]; + }; +} diff --git a/hosts/xps16/testconfig.nix b/hosts/xps16/testconfig.nix new file mode 100644 index 0000000..9b2c3e0 --- /dev/null +++ b/hosts/xps16/testconfig.nix @@ -0,0 +1,6 @@ +{ ... }: +# NOTE: this file is a space where i put new configuration while i'm testing it. +# There shouldn't really be anything here, I'm not planning to commit any config here. +{ + +} \ No newline at end of file diff --git a/secrets/common.yaml b/secrets/common.yaml index fcf6cdc..92a727e 100644 --- a/secrets/common.yaml +++ b/secrets/common.yaml @@ -23,69 +23,78 @@ sops: - recipient: age1c92j4w0gqh32hwssl5m2mfrggssxax9pge8qxwytv9lmrnfttcvqdrgsst enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpdjRzYzVQelFCejYvbUdu - RDJSemN0VjJMNXh3ayttNTFiN3JSOGpEbzA0CkVtNmw5cTZTNnM2NlBnS2VuWTRN - S3VIKzA1VGE4aUxEWWdYNnBIbGMzMDAKLS0tIE9CaVdJQ1RGZVh4VktXWTZNRnBO - Qjc3cVNiVEkzK3g0dFptZWx4VUsvTFEK5f9MFIMBCKZzTz8N9ojOKI9VJ9R+m3Ln - wVIRMHSWSRoMrIFVhOq24qFPvKJ2y8c9j42N/AYETYZ1MaQkTVeAvQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXaStDclprYzNYbkR5SUsv + U0d1YXR6RzNaeGdyV3dKNHdpMnYySnJoMUdJCmp2dHNHSy9CZVpQQ0JMZEZHTzF4 + cHRpOXY0NUIvNGEwU3VhZmtneGJMQU0KLS0tIE55ZllIaUNBazZPOWFnUFhMRWVV + U21KL3dQS3BEa3ZWVGluRDF6VzNSU1EKE/sbmHOL70KxgtJlmUkuv0kRKkUZ//Fq + d/UfvyHA+50YpRfMH+HMcJZGMqOv7Ait7tz+JgLQACIjsPgz+mJhjg== -----END AGE ENCRYPTED FILE----- - recipient: age1eu2a6m3adakfzelfa9pqpl74a5dz0wkyr0v7gegm5ajnx7aqmqcqsp2ftc enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoZSsvZjU0Q2U0R2ZqZ0NO - NW1YVUFieDYvZ3k0dW9vd0NhT3NiQXdFNWxRClRXMWpTdHZ6d2c3alpVcXU0SXpZ - ZE9NZnY0dFRJcEkxa2NuZ0tUNHVqNTQKLS0tIC81SVdsQ25ZQ0hxQkZlM0VkVGJX - S0kyZzYxNDdHVy92NFVVVnpYT29MVXMKfGgQZvp8nZBjs7ToWsODwia0tT40h99X - ZOQitYNJKPQ6CAtruWUrRi00OuvChEg+oJJ+U0gfwcWJKBkUKuT2Qw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDYndBdE10eGdDZ3ovQkhq + SXRzdWdHdzBhdGxSMVRzSEQ0TWZVaHR3L1hjCkJ3WkRvc051VjBhWTkxUThCQm44 + elBUMzZHa1NtMXdKaTlUMExNSUFpa3cKLS0tIEJUL1BEbDFPOU02aFpvby9aM3Zl + ZjI2WkVVZnZFWlBTcG54V2E3M0M3Y00KdmD2GrdA9So121ITI5Dk22MwX/WuzaUi + jDuhLT3ZJo9k9tihWq0n4+tTAkSKXjX09kDFtW1QezjMWcrC06SdVQ== -----END AGE ENCRYPTED FILE----- - recipient: age179y7apa80p9unvyjtsphpzyhve90ex986vlxkx43xt9n6m7en3csqnug7c enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBERjM5bEpySWMzUFdidkk4 - cDJUVGUralN4RjZoN0E1QTh2eGVHazZiQmxjClB1QnB2ZmVvbVo3SnZLNnlPejV1 - eGZjUDhDVVRNUVlXdVJDWSsxQlR4S00KLS0tIGtDU1R4UnRwcEJJcmtYei9nWHFH - M0VPbTdsTU4xRll1ZG1LcndTZmx3NHcKwA6fUauOTUHadUaion9dfjQPvUxwUIdt - ZaHSpuj8usrKd901BvDRxVGv23FAxBb9Ylr2Az+MhHYaVGU/kbQ9mA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhWmpHejNCV0ZyUGE2aXlt + STQ5KzY0aUFDQmpnQWhLK1hldGtnS09YS1E0CjZJVC95Wml4Y0Z5Y081dDRjWUI3 + OWFMZDQwV3JkTHpYR2NldngrYzdaUjAKLS0tIEZ0am5peUhxSUpGMzBzUjdIcks2 + QVprOUt3azczazE0QWhQQmlnRnZhSzgKsp5nt1AnRUnmvJRBgrYufniM+7tm2JGW + Uojg7j8zr0kUpu+OhVXiBYNi4oS+Uscgt2faS62Jubl7Q7in/W4rrA== -----END AGE ENCRYPTED FILE----- - recipient: age14mer45e52r2q4uz8n3fmv69tvk8gvwany4m4ndudud8ajv3jm4nqdj9m6a enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmZGk1TVVFZ3NxV0NqUEtD - bUNaWFpic0JBQTY3YXRRNmM2SmVzRVdlS1YwCmx1R2tCSndFU2VnU2VFNC9TNEVt - R3diVE5LK2Q0Y2FrZUpUUDQyQldNYUkKLS0tIEE2SWU1NmlkcE8xMHJhaHNhRHhT - enl1ZlNhNjZIU2o5ejh6TjJUWVJQLzAKhhm88Am5Dfng4SRmEGEbsYne/9SrtNxW - 5ntmc8AEMN3v1g8hEIOvllms5gqiZP1LUrTAvYddI0+ykwPuTY06Jw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqYnlXbU1OdTJsTEE0WWd2 + VW5UUk1tazEzYUF4R0xOSlpueFphUndaL0NVCngrUHB4LzZremxpNGJoSXUwa2do + L3lydVJNTk1sWXNLUmJENkVRR2JIalkKLS0tIHJUbHpUTTlkMGo4UXBQdVl6NGU0 + K2U3c0JvSHBRVnM0RVNGcVg1L0hCREEKwKsonjIjHvFerhsu6qX5StFh9NvOd4CB + GfgNQsvhEGWMV2i195ERzGd2T61GpqLb/iYx8Tx2WQQ52n0aDbZO+g== + -----END AGE ENCRYPTED FILE----- + - recipient: age1np3fg9ue2tp4l47x7waapvjxh5zcaye2j54laapy7uklamve2c4qv3gytm + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBic0I5dExTYWtUSllMUEFv + WGJwTkw5UkJCd2ZYejFZaUprdnNhSXRVOUNBClQxeFFnQVR1THVSR3gzWklySUww + U01GLzdZQ1dxN0VEWEYxMW0xSDZxUmsKLS0tIGwySmZSQ0xPdHExZVhYRXZ4RHh6 + dGppRHhuZVRGVGZNdWVjRHhaL1FDMzgK23NeGYX8616C/XT4TXuDDu7ZE89z0/3B + 6jR2N2/d1rTPxwCSdympTyLLSczQeMkULODM6iezz79MSlbSFwtObw== -----END AGE ENCRYPTED FILE----- - recipient: age10f4a5acpar8vwz3v298r3nv7gggfpmyh4wxpkc2hwq9paq0scf8qee8lau enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBka0tVODhFWHo4Q3RSZG5h - K0dwMEg1SVVtTUljamxCNEMxdGg5a1IvRVhnCmpnNEdEc3BPcVRVS1VzOUFNZFBU - bEtqNlgzWGM0Um5RMHNKUWdRZS95TFkKLS0tIFNKZ2dDS1Nnb2JKeW92djhUOWRG - cm15UjQ4S0xoclpLV0pYcmJzM1g2eDAKAjJUhGgicEG3dj8BdMjPvr9MC/c+oIGx - kPxtKQ5REb5UolEuBBsWapKhKeXLFtTsV/qGOokO34HT1PqZI37Ikw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQQW9ORktON2d5aEg1RTZ6 + SzZySE9lYmViVWQ4enpZQWdVWDg0YWVUOUQ0CnRycWZmVUlvR2JNMUlmQktOMnJR + VWluUzlRa0czakZqSjdzeTBpTFU2UmcKLS0tIEYweklNVjcvOVVOSUw3azZsNG1F + blkrc0locjd0eENvcnVmVW8zaStSODQK5icytb3Ae6BmoU3Sz6yp7aAj/CtmHIS0 + 27xAjcGnnDmpVwo1NgjOgF1wZfmVA6II393E3KNNVs4pGeesS5C0VA== -----END AGE ENCRYPTED FILE----- lastmodified: "2024-11-25T09:09:38Z" mac: ENC[AES256_GCM,data:virqHg0KoyhLVP9yynReVwSGhTBWz2mO5uBRXqzae7plALvRS+mzErfR+h63bX4TF/iLxQ/pJZb+KqQugweWEon9cycIyoKfRaIqaIZ4t8SnVWmDt6xEebkZC4JT7FD9xf27YTzxnamyINRdiCirTfJOeF4PKEow0EjH0WoS1DQ=,iv:giJ6JOXJQInavkdZbkDABG66B45ciNTetGHcwcz73dA=,tag:rvCbdxNFwoYjGuFi/YwI2Q==,type:str] pgp: - - created_at: "2024-07-17T14:18:35Z" + - created_at: "2024-12-04T17:04:12Z" enc: |- -----BEGIN PGP MESSAGE----- - hQIMA0av/duuklWYAQ//bUJNyi/KLucLpVhBV8ehdWQcJ2U4M6JEQRaJH9QOmkXw - TG/KH0AumC5jl8u6yCoK98nslsETRSWufpSGfgsotqs9gxMXb8KT28bKR2ZwJ+oJ - KCiFn7YMma04bWjdezrNgOlIy8slGkNzeeJkqbPqcz77hRZUgzMxigXH6FphKmqN - kZgBQTXavnDYvMUplUvm13fuHu93jONxwSD9lqkaDTPL5l0OLJoDxvVlslDVu4Wm - 9bK0a170veBEfpKCcz6RnGvXIbKhASm8WBnWLkD+TrISkAywTMX7/YdRboPRZMGk - EGdibq+8Vh117ohgIVrWYGuW/1HrdJj6EO7Wc2F59xmELN+Zc64dIvIVLXLNj5ir - jJ5UjQhJ99IYC3b9iLXumMIYCFVwoozyJCAzEx70JhCj0tUSuG+q7JEu3xfJSUsi - rAukG6isHJ2ENULbX7fKdWLGzi7bHbv7ObPqc7iKSlQxsKuVY0uKZ90LsPfA2mln - 9eYzeSeec/0XpDG/0ipmdjsZUu0ZGSwehBHX7BGJG0CS6cj9hgiTliUWZ1kCm7js - wFDWDbkVT7ypNcnkqZ1HfHPxlXNvoMTDRQT9AJTLATCaf8QHZ/D5GQ8nqcGig5wb - I3roxkITIV4R8Y6eGFU+VJEImEcGTelSNuXV5/POddBkegBrzUmt9aqtgDHSa1jS - XgFJQeZzZq8mDnzhupP06stS+oDeZdC82IhmPnGg/PVrq8cgFqobDWBsNY+yK4tV - 3ozDdn28623shx0i0+uangfl7L5BYK9oi1NJD5qsCgzFXCvs/HKcbiJXFKkqDcE= - =smFv + hQIMA0av/duuklWYARAAzeQVSGMJVLpE4L3/HJSTi9eyprFy4+B4hP3wLO7laCIc + OLOCZklYExSEImJXtyOmNnWVyk2ZvbAyyg48gHkQldglnn+RrWH3wV2hdUfX5qZL + 8EGuDp2olWd3YBphH1lE9h6TEabtAfjWXywOdVqwoiQCTkBqPYkZGFx2LyUL/kE+ + nVh/ssoqVDdhHDhBpW1jXbWu+0/5nBgJWyfgFpFtZdfGaThYp26Wi32P/sNwHOZL + raDyC0q/c5hojyVNhDRIJXqcDge3uZ9/LdZm+qBwpeyHhJob1x7F88f58M7G8B5j + gA6e2kF0Xrig/4xUAhvd2/gtkhg+eWuDLnurJBuG0O8aoRZ1B0VXir5NSPN6/iFs + 0XOhZBzcu33xAN0CDH1qwp3gJuTwVpjAeD7y1sg6mmyqbYnY3eY5jo+RUUstTc6r + XEXNuaKmnvZEE8QlzvVIf8Kytb2yssen7h1U6XXm4B65CHX3d42S+psoPs9EkcZ8 + b59ix5QrPdmTU5AWG7uOYgkcgyuQmR40pICKGrAPqaiArXstFyndTGnmtqu65jal + Hm+yZiDCz50mqqiBPh4n5wu2sxpvaqBkWIU1fn8c1PnyX3xgIQrV4nA5fewAEf74 + 0jeVGBgPohTUpkpL4rRbSLEvH9wh1qH4qEwzH1vvArCMRPLCASaqxoTu3/e/n2HS + XAGVjX/gRHHmuHpVSW+nE+lPpuLQZeMfA4rU+GCSBzrFIw/rbfWU+FoiIM8M+DDX + 7YIfveJLVGlPiPVpyUYrsEjTtZvcDmSrTBTP9odIois1eNXECJEZX0VRwr9B + =gSDK -----END PGP MESSAGE----- fp: F7D37890228A907440E1FD4846B9228E814A2AAC unencrypted_suffix: _unencrypted