diff --git a/.sops.yaml b/.sops.yaml index b6d2227..fc077f4 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -2,6 +2,7 @@ keys: - &system_hetznix01 age1rd55wsu0hhvxk25tm69d9h57z0z0u6556x4ypg09muj3vh4yqs5qaw23nu - &system_hetznix02 age180w4c04kga07097u0us6d72aslnv2523hx64x8fzgzu4tccrxuyqa50hpm + - &system_nixnas1 age1g4h5a4f5xfle2a6np8te342pphs3mcuan60emz2zp87nrwjzl5yquhr5vl - &system_nixnuc age1g24zhwvgenpc4wqejt63thvgd4rn5x9n7nnwwme7dm83nfqpp93se2vmq4 - &system_rainbow_planet age15xlw5vnnjdx2ypz6rq0mqcywuaj3yx8y6lrgf95satafqf7y4qus6rv6ck - &user_airpuppet age1awdf9h0avajf57cudx0rjfmxu2wlxw8wf3sa7yvfk8rp4j6taecsu74x77 @@ -17,6 +18,10 @@ creation_rules: key_groups: - age: - *system_hetznix02 + - path_regex: nixnas1/secrets.yaml$ + key_groups: + - age: + - *system_nixnas1 - path_regex: nixnuc/secrets.yaml$ key_groups: - age: @@ -46,6 +51,7 @@ creation_rules: - age: - *system_hetznix01 - *system_hetznix02 + - *system_nixnas1 - *system_nixnuc - *system_rainbow_planet - *user_airpuppet diff --git a/flake.nix b/flake.nix index 06acb0a..5bf6609 100644 --- a/flake.nix +++ b/flake.nix @@ -230,6 +230,15 @@ ]; additionalSpecialArgs = {}; }; + nixnas1 = nixosHostConfig { + system = "x86_64-linux"; + hostname = "nixnas1"; + username = "gene"; + additionalModules = [ + simple-nixos-mailserver.nixosModule + ]; + additionalSpecialArgs = {}; + }; nixnuc = nixosHostConfig { system = "x86_64-linux"; hostname = "nixnuc"; diff --git a/modules/home-manager/hosts/nixnas1/gene.nix b/modules/home-manager/hosts/nixnas1/gene.nix new file mode 100644 index 0000000..2645578 --- /dev/null +++ b/modules/home-manager/hosts/nixnas1/gene.nix @@ -0,0 +1,7 @@ +{ ... }: { + home.stateVersion = "24.05"; + imports = [ + ../../common/all-cli.nix + ../../common/all-linux.nix + ]; +} diff --git a/modules/hosts/nixos/nixnas1/default.nix b/modules/hosts/nixos/nixnas1/default.nix new file mode 100644 index 0000000..01dc1f1 --- /dev/null +++ b/modules/hosts/nixos/nixnas1/default.nix @@ -0,0 +1,126 @@ +{ pkgs, username, ... }: { + imports = [ + ./disk-config.nix + ./hardware-configuration.nix + ../../../system/common/linux/restic.nix + ]; + + system.stateVersion = "24.05"; + + # Use the GRUB 2 boot loader. + boot = { + loader.grub = { + enable = true; + zfsSupport = true; + efiSupport = true; + efiInstallAsRemovable = true; + device = "nodev"; + mirroredBoots = [ + { + devices = ["/dev/disk/by-uuid/02A5-6FCC"]; + path = "/boot"; + } + { + devices = ["/dev/disk/by-uuid/02F1-B12D"]; + path = "/boot-fallback"; + } + ]; + }; + supportedFilesystems = ["zfs"]; + zfs = { + extraPools = [ "storage" ]; + forceImportRoot = false; + }; + }; + + environment.systemPackages = with pkgs; [ + net-snmp + ]; + + networking = { + # Open ports in the firewall. + firewall.allowedTCPPorts = [ + 22 # ssh + ]; + + hostId = "da074317"; # head -c4 /dev/urandom | od -A none -t x4 + hostName = "nixnas1"; + + networkmanager.enable = false; + useNetworkd = true; + }; + + programs.mtr.enable = true; + services = { + fwupd.enable = true; + lldpd.enable = true; + resolved.enable = true; + restic.backups.daily.paths = [ + # "/storage/foo" + ]; + zfs.autoScrub.enable = true; + }; + + sops = { + age.keyFile = /home/${username}/.config/sops/age/keys.txt; + defaultSopsFile = ./secrets.yaml; + secrets = { + local_git_config = { + owner = "${username}"; + path = "/home/${username}/.gitconfig-local"; + }; + local_private_env = { + owner = "${username}"; + path = "/home/${username}/.private-env"; + }; + }; + }; + + sound.enable = false; + + systemd.network = { + enable = true; + netdevs = { + "10-bond0" = { + netdevConfig = { + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer2+3"; + }; + }; + }; + networks = { + "30-eno1" = { + matchConfig.Name = "eno1"; + networkConfig.Bond = "bond0"; + }; + "30-enp3s0" = { + matchConfig.Name = "enp3s0"; + networkConfig.Bond = "bond0"; + }; + "40-bond0" = { + matchConfig.Name = "bond0"; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig = { + DHCP = "yes"; + # accept Router Advertisements for Stateless IPv6 Autoconfiguraton (SLAAC) + IPv6AcceptRA = true; + }; + }; + }; + }; + + users.users.${username} = { + isNormalUser = true; + description = "Gene Liverman"; + extraGroups = [ "wheel" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIp42X5DZ713+bgbOO+GXROufUFdxWo7NjJbGQ285x3N gene.liverman@ltnglobal.com" + ]; + }; +} diff --git a/modules/hosts/nixos/nixnas1/disk-config.nix b/modules/hosts/nixos/nixnas1/disk-config.nix new file mode 100644 index 0000000..b8bf80c --- /dev/null +++ b/modules/hosts/nixos/nixnas1/disk-config.nix @@ -0,0 +1,127 @@ +{ lib, ... }: +{ + disko.devices = { + disk = { + sdc = { + device = "/dev/disk/by-id/ata-SATA_SSD_H2101081000455"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "BOOT"; + size = "1G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + zfs = { + size = "100%"; + content = { + type = "zfs"; + pool = "zroot"; + }; + }; + }; + }; + }; # end sdc + sdd = { + device = "/dev/disk/by-id/ata-SATA_SSD_D2109088000361"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot-fallback = { + name = "BOOT-FALLBACK"; + size = "1G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot-fallback"; + }; + }; + zfs = { + size = "100%"; + content = { + type = "zfs"; + pool = "zroot"; + }; + }; + }; + }; + }; # end sdd + sda = { + device = "/dev/disk/by-id/ata-TEAM_T2532TB_TPBF2401240030200343"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + zfs = { + size = "100%"; + content = { + type = "zfs"; + pool = "zstorage"; + }; + }; + }; + }; + }; # end sda + sdb = { + device = "/dev/disk/by-id/ata-TEAM_T2532TB_TPBF2401240030201870"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + zfs = { + size = "100%"; + content = { + type = "zfs"; + pool = "zstorage"; + }; + }; + }; + }; + }; # end sdb + }; + zpool = { + zroot = { + type = "zpool"; + mode = "mirror"; + # mountpoint = "none"; + postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^zroot@blank$' || zfs snapshot zroot@blank"; + options = { + ashift = "12"; + autotrim = "on"; + compatibility = "grub2"; + }; + rootFsOptions = { + mountpoint = "none"; + atime = "off"; + acltype = "posixacl"; + xattr = "sa"; + }; + datasets = { + "root" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/"; + }; + "root/home" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/home"; + }; + "root/nix" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/nix"; + }; + }; + }; # end zroot + }; + }; +} \ No newline at end of file diff --git a/modules/hosts/nixos/nixnas1/hardware-configuration.nix b/modules/hosts/nixos/nixnas1/hardware-configuration.nix new file mode 100644 index 0000000..2b2d86a --- /dev/null +++ b/modules/hosts/nixos/nixnas1/hardware-configuration.nix @@ -0,0 +1,57 @@ +# 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 = [ "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ "nvme" ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "zroot/root"; + fsType = "zfs"; + }; + + fileSystems."/nix" = + { device = "zroot/root/nix"; + fsType = "zfs"; + }; + + fileSystems."/home" = + { device = "zroot/root/home"; + fsType = "zfs"; + }; + + fileSystems."/boot" = + # { device = "/dev/disk/by-uuid/02A5-6FCC"; + { device = "/dev/disk/by-partlabel/disk-sdc-BOOT"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/boot-fallback" = + # { device = "/dev/disk/by-uuid/02F1-B12D"; + { device = "/dev/disk/by-partlabel/disk-sdd-BOOT-FALLBACK"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + 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.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/hosts/nixos/nixnas1/secrets.yaml b/modules/hosts/nixos/nixnas1/secrets.yaml new file mode 100644 index 0000000..33731b4 --- /dev/null +++ b/modules/hosts/nixos/nixnas1/secrets.yaml @@ -0,0 +1,22 @@ +local_git_config: ENC[AES256_GCM,data:ToPd/elv3VOuiSQtF/lBvpOwebQLTk986uc/jyYaKx8fepw9VaPPU5E=,iv:clW+JU4HtPo/Kwa95DxLSm71EL+TnBlvmLxUR6GOTEY=,tag:I7cnY580Tb5osur7pfSKTA==,type:str] +local_private_env: ENC[AES256_GCM,data:xeZv93xCk98UjvAUfjB1eEI9DL9Talpj00oB6zxOYSGnICprIDAzXdV86I5h6H+NgM/q20AsZ8ijpomQiFff,iv:iuhI0sKi0x3Ckw4bNxJAL4T6UzzdkJEMo6VMXl/X3sc=,tag:fHIDWL4Mmn42e2FUoaO/oQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1g4h5a4f5xfle2a6np8te342pphs3mcuan60emz2zp87nrwjzl5yquhr5vl + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDbTNUaUJDWHliYVJoTStU + ZjFlRjExYitrN3BDMWZWUnpTb204aUNRUWxVClZIWlJQeUlrdFhOYXRaQzRFUmNT + aTYyKzlZR1JFVkUwQkQyVGV0Mys2NjAKLS0tIEhBNWk5NDFoRnJUVUpnMDl2RlRS + bnA3M3dVdWNEVVFVYVF6R2xvQ2s4WTgKl8KsbY8lLraUZmZFlbKS50I+hemSa3lI + irdGQWBGL5aaeKFT9bOta9z+1YdMAsXxvAWOM/PZ2hwXTd6CCUpKtg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-11-27T06:15:28Z" + mac: ENC[AES256_GCM,data:d3pkBfhvNpbxKla3Ki0Bcv2KMu0/S818d75e2uwgVXsVMJdiPNIjF1NyleB+6i4LAFnVvYdkVXdIzctWITQrQv/Bq0sQzlZx/EuioYzD9Z7c2SCrf2PWPnorm+1uc23rN8pc9uxCrOqf8P94qxJRieiLOoCQMJDQrAk/bn5NglU=,iv:C6b7z6tg295Peoh1rj+uG4t62AOxJjMf/SQN0DJDdeY=,tag:LneADYRHFVHSqN7PmiE/5w==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.8.1 diff --git a/modules/system/common/secrets.yaml b/modules/system/common/secrets.yaml index bb0f545..b34a777 100644 --- a/modules/system/common/secrets.yaml +++ b/modules/system/common/secrets.yaml @@ -12,74 +12,83 @@ sops: - recipient: age1rd55wsu0hhvxk25tm69d9h57z0z0u6556x4ypg09muj3vh4yqs5qaw23nu enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLWnUrOGU0Sk43Vzk3WFlO - SGVvU3lwS0dqK2Zkb3NxK201UHhBcWt1c1I0CldQU3d2bHBnYTV1UHUrbHF6YmZq - YXpaUE1ySis0cnJMQmZiODVMS1VIVkkKLS0tIE0rd1g3c2IwcC9DRk5jcnpXSnBF - K2FoMlZkalRUMnFZTTZCc2ZRSElpcjAKB5KXVdpZDY3m3RI7VuCgY559cJ60hK29 - I4PexxpYlOvQqu6k29KmbjznHRIonXDLV7YPnKGGCF52/fjNOnpaOg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4bUFtRmZja1ZVK1Blbnk3 + Q0h6cVBNU0t0K1puY1ZIbUVjMmhpSTdVMjFFCms1WE9ZQ3U2b0Q5bysvQlQxT0ty + QjhMTFkyUFB3UlUyb0dla1lvM1laZlUKLS0tIGlBTyt2b0hhNkRsa2t6ajBxa1U5 + UGtrYk43S1FqZUlvT0tOcnlJVXg0TzQKnaloZ21vCJUFpg7kg7A/FkXGhEyKHfbv + GJ6bHLWzgH6Dr78lJoNjwvXdz2Ypld1Rk7ELxU55kxSuBKMIX5e0NQ== -----END AGE ENCRYPTED FILE----- - recipient: age180w4c04kga07097u0us6d72aslnv2523hx64x8fzgzu4tccrxuyqa50hpm enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBucnA2SVNzaEVFMkpPVW9P - YUdlTmIwM05EVGZ6ekh0N25hcEJiZytkUFhJCllIdWlDUllqOUhaOW01Tzg2MnJm - YWxqNHUyOW15MlBiNThOT2NOYzhoZnMKLS0tIDR1Z1BDdVdDSGFSckxTOVFVMG16 - R2N6a0t1YmlTb05leFd2L0MzL0JTdmsKh4fwAg/AVJ9skTrgbIMNIY+E+u7U6nN5 - gADaBwJrKKcxY3tFxUkEw3/LNrVH64JDEyhqfUM6yB2TM+pMCpO1Sw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2VWlqS1VkeWh1WnFDeVd6 + dENWTHZmR2x3RXZTSlhUbmdabE9jU1FuV1EwCkh4ekZzS0ZnbVhVcEhoMUFUUzNG + cXhMMlZ3b0ZqWjFRTnJPc0VHNVIxMlkKLS0tIGlaOWhPdmJTV21jdWVhWHp6K21T + Wk84YWlWeGE3S09ZU0dEeXNYYVZ0dmMKcbtPczNboSE2q23B/1DBsE/wlpyOXcp6 + GFpwHvG19JyuTTBanXdimMTycrmaBZtQkyjhKT267Ap9hADVStlOZg== + -----END AGE ENCRYPTED FILE----- + - recipient: age1g4h5a4f5xfle2a6np8te342pphs3mcuan60emz2zp87nrwjzl5yquhr5vl + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQaUVlZnBkeDIvZlZHRHZa + OGVjM3NwUUtkTmd5ZlJlanpNWFMzekFwQzBFCnJQeThwbzNhUVNTRmVKNGxvRDBM + OTlYL1lnenpTUk41YnVCdnlHMzU5RTgKLS0tIHdmODhCUW95WW1DZTduOFkzdGVN + bHZIYitEdktkdG5yYUVXL3puV2xxNG8KRJGCGOfQIkh5HIlhU+KOWmyxOI4iEwE5 + hPpeafdtQIeYUPxRZ9LYapXxryjvm0smwgU1sAww7h6rk7pOuhKCGQ== -----END AGE ENCRYPTED FILE----- - recipient: age1g24zhwvgenpc4wqejt63thvgd4rn5x9n7nnwwme7dm83nfqpp93se2vmq4 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0UXlUK1hEMW9EUmNacDFh - Y3FRc0VGMllMTGV6WDMwL2VNYnA5RVRhd1JrCit0WWsxK3lPaVEzSzlXbXQwWisv - YUxHdnpQSGNzTUdVMDA2OXZsNG85Qk0KLS0tIFI5Z1g4OTFaZTM5K0dlcEVpVkNy - K1p6a1RkRy9JYU5rZVJZQUtSelFnUE0KkWBLKwEhDPwBFMslhXmKRCcWotDDSuwO - zrPDwr2eAlCOkNXbLga+z/onfRm7bQhY/axucQWicCQAP8rShyhyKA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhc0YwWlA2Nko3dTgwcFF5 + UkVpdHBGanRzYnQ0ZFVFNzg0eHpYQkQzMVc0CjR1NnNwa0RkbGMycGRIK1lKVnVn + cXBURFl2WTNxSlV3ZUFnemhMYnNFVDgKLS0tIEVrQVNXZDFuODg3NytuZ3gwcWxY + TFpmZFJEWWFlQWdZUlNxaE1ETXdzTlkKMNVpzuDykFeSoZ5zDLsswdNfTjEjYLPl + p8rffgia2ixVMGhGEHBZKGo6ST3+aeYNhzB2qaLMP8Dj8Jqs1+P+Ng== -----END AGE ENCRYPTED FILE----- - recipient: age15xlw5vnnjdx2ypz6rq0mqcywuaj3yx8y6lrgf95satafqf7y4qus6rv6ck enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtM3ZucFB2bk1KVmVnOGlR - R3FUWE5kOWNpeE11d0IyZ2JsUGhCQzNoVTFzCjRGSnFETmV0aU5lcFgzQ1loSnpj - LzJqRTB0U1FIR0FJZ1E0ZGsyTjVPaEkKLS0tIHlvZVk0b0t5cVByTGgrSGd0WG0y - anJlU0FDQk14UUZPcG5IdmJCR1VJSWcKvTqLLRWeBmiA/4cBrjXxeNrPBXKuLPQX - AkiQTrtC9bao22QhmJ6+ebA5l8x+rUYm6PIQpieVKRRpqZFS6Cj/GQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzd0JxcSt3WWg0aFloREZu + RldneXFYTjl1U014RXhZQXVxTzBBMkpwbmhrClJ5TmFUMXhCWGY5TVNzazVzczEz + U3FYOCtyZE9KNmR0dzZ3UUxkaEVQREkKLS0tIHlsaVd5WDUzWWVoWVYzZ3ZVSVcw + VDkvQWViUDdVY045dmRrMjRtMjhFWjAKCoBQXpY1wjNqQIYDB14sA3IEKqSZsJBH + POi1HhW1sxc8SKnJ/ZJX0dir9/KMRcUZO5u/7I+hqe/W5014kOD3+Q== -----END AGE ENCRYPTED FILE----- - recipient: age1awdf9h0avajf57cudx0rjfmxu2wlxw8wf3sa7yvfk8rp4j6taecsu74x77 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkYTg4SlhvUW8vdXVxY04z - SWVzOFRpeDdYdEx5M3kwaEdlNitJY0F3UlhvCkU2MUdqQ29jZHpZVG8rU2lwQUVs - ZnNna1JkR25saThiK25ocWFOUWNPMDQKLS0tIHNHbDFveHN2KzRHN20rcjBXK1lS - cWh5bGptQ2ZrNnpTbXJQNFcyNWpCOWsK2IIip2rhMMXem3ALeOvw4Hxp6HF7UpRk - YmKAoN6OwWHwgkWXxapUCTrhx4mLr/Okx9zK3B+6cVNd5yyVtrcBnw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHZTlnS0p5V2oxQnVoRUJt + R3JrYXBSbEloMk9EZ1JEL1ZKT3Nobk9ycEdBCnMySkpYVzNsS1VIWFA3Ui9vQzR3 + RWppUElDLzRTc0lUbVpOR0NjSlVJUWcKLS0tIER1QVZzcmZ1WmlVNmtoaUMrR2Nx + VkVxa2Ztc3dVVjltSDd0TzVtN2l1SGsKU4Ipyi2EsnglhEF/pZEKprvI/Bb4eocL + oGsYMOyahIMkcFVai+7R74MC+y9GdCklnDVGuVZjaIc2pylzmP6Acg== -----END AGE ENCRYPTED FILE----- - recipient: age1rt72txg22w8y3cdvq9w7zff0cas6xtkplpj36kxnevfnrtn82f6ss7yw7d enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwMW1CVzA2YnB6OUlFTktu - SEk1UkhqalZNZklGVmo2c1RmWmJ1WC9QMFRrCjNoVUJjM0trN2F1d2lLMWd2Zmh4 - bXZFQ2hqaktQRFdCSHN2eGZQeDFwVmcKLS0tIGNBS0x1T3FCOTNmeERrN3RYOXpV - UGc5aFF3cXBoYU45WHFyU0NXajhMRzgKtPbwNjOmoe7KL6LdlFV//TF6Q5PAJ40i - y/CzPN05BlcTQNUcm/ZpFMT6Mn5l5fDER79LKyzBBzL3s3qYzdruBQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHTkZVbWNkcktyUDNKZDJM + VW1DUElwTGVucXlTUEtVb0hUM2ltbm10M0hNCjNyVzBmTUpGWHV1UkZwdkhMM0pw + ZE5VMTBVRHlSNUNvdWUzM0NhTG00LzAKLS0tIDRYSFFWV2tPMW9MQndjV0ZzY0lr + WXFMb0xUYUZiY2NLUmh4S1U3b29SNUEKKghGvX5G9jfOlEFYsRVSE3lLKCaKpz+F + AoglIjgdaQTrqbAaLM8DG79d+VgzHrZdgeobenGtNSF2WRz/3VDNBg== -----END AGE ENCRYPTED FILE----- - recipient: age1zz34qx3n3dj63sva24kaymetv3apn58lafjq4dl6zw7xxachuyts00mhck enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaZlhDN3k5QnZhTnFzb0Ni - cUZwMDgvTGtQUHlJZ2NRU1hhMEdPNFlYSldNCjhiTFNlUzdmaTM5bHd1RzExTTBB - bGRWd1JkK1RSKzExT2NkVkkvc3ljWVEKLS0tIEErOVdBVnA4NGZ0VXc4S1psUE9U - bnhYRDFHaTFYQnBPU0ZMUWZaaVNaaHcKryDBNTvoy2x/to0/zOzLaQLfYR9jO335 - Svt2eAxMXt59x964hLRmuaON0jxNqpVyCOFAk8UWyqq952YCerG1Iw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6azlFM1JGZ0JDY3RZdkRS + dXdtZUE2QnJVK3dmc3VxbGtDTldlb0dmTVRvClA3Y0x0ZDY3WmtqTWp5b2VRRGdF + VmkyM2dLUXJyeDdNUVpIZlpvdVE3UEEKLS0tIGRuZzEzRkZtT0N4Vjd3TUgyQ29T + Y000cS9ZblJZTkpRMzhNYnZRNVpmODgK9MpExCq5d5PN8HCJPa7WxViLL9pbWv3m + qGfW2iz4N4UH/3mq5zx67jNwtwOKd7B9L4yX+oGgsYewQnLFhr5Xng== -----END AGE ENCRYPTED FILE----- - recipient: age1rpy8edlpgxuf6w75cvlqexuq2xe4c49h9t2ge6jhc3fzczp8vfasnjelwq enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5L3dUSHRLQjZOUXB4NlVi - aXRjWHJONXVsMFZKSmJCU1VYWlY5UUJXYXdBCmloYndMR2VnWHR3T3p5NytyUVZt - dHk5YWJFQ09xR1Qvd3BEWjJXVHJrQWsKLS0tIEhFQXJLTDBUWXNzYnhoZ1l3bFRE - dDQybkwzOUtraGk1U21VeHBkNUpLeGsKgBP+mn2AZmKf6v15JnOE4YeSUpsKMAgP - DbbDSJBf3zgwcUECglSB9pM09ZkxM/WA8+sBPNt7/pepUfpKWfoiIA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4c0tmWGVBSlMwdkhLTC81 + bFBIbWZML2JiVDhrcldVdU1McHl0Ui9nUkhNCm9Ob3hEbGRhTzBreG5hTmFOS1lZ + UE16QzJ4Rjl4NVVMZ0ZzWUxRWm9CM1EKLS0tIHY2QUVNY1Q1Q0dpVDB6K3RsUlpQ + N2VYRDNrUk5wd3JQRVZabUhlRTF2UHMKCjCaXJ394MfsOKSWCuRVa8EA2pcLu1TU + VaXATezktIU+ZrXOrpwRc9u9uac9V3PmxykpzjEvyo2BQ7Ji0wOeEw== -----END AGE ENCRYPTED FILE----- lastmodified: "2024-06-15T21:02:47Z" mac: ENC[AES256_GCM,data:vZie4+27bytMtLHLO3cR5X6XsvVjoLWXbZ9gSyeJAg//TYDdojfCKtLatBb22oVyjjeoFKKqcHwVPv888Kpc8SwFIY7C0YxgmFbHXZMkUk4EWsolGPJ4V3p2GdWSRJkn/B9fM0TjvWiHASvtDNUNw03Rs6PT8fP0YTSzomKGR+U=,iv:5UY3+wj8h/uW/l3gkBPub+bWWt2kKabH5jErjmNp4sM=,tag:2DrAzNOS+dd3bNCs42PPbw==,type:str]