agenix

-3
.gitmodules
···
-
[submodule "secrets"]
-
path = secrets
-
url = git@git.freumh.org:ryan/nixos-secrets.git
+127 -31
flake.lock
···
{
"nodes": {
+
"agenix": {
+
"inputs": {
+
"darwin": "darwin",
+
"home-manager": "home-manager",
+
"nixpkgs": "nixpkgs",
+
"systems": "systems"
+
},
+
"locked": {
+
"lastModified": 1707830867,
+
"narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=",
+
"owner": "ryantm",
+
"repo": "agenix",
+
"rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6",
+
"type": "github"
+
},
+
"original": {
+
"owner": "ryantm",
+
"repo": "agenix",
+
"type": "github"
+
}
+
},
"alec-website": {
"inputs": {
"flake-utils": "flake-utils",
···
"url": "ssh://git@github.com/ryangibb/colour-guesser.git"
}
},
+
"darwin": {
+
"inputs": {
+
"nixpkgs": [
+
"agenix",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1700795494,
+
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
+
"owner": "lnl7",
+
"repo": "nix-darwin",
+
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
+
"type": "github"
+
},
+
"original": {
+
"owner": "lnl7",
+
"ref": "master",
+
"repo": "nix-darwin",
+
"type": "github"
+
}
+
},
"devshell": {
"locked": {
"lastModified": 1642188268,
···
]
},
"locked": {
-
"lastModified": 1709565128,
-
"narHash": "sha256-ZhBaGudEKv84phqhSps4Y7cpneWzJvEWxZuiV/ehYSQ=",
+
"lastModified": 1710294901,
+
"narHash": "sha256-TehQkd+aY48m2q9O3UBjXSmkxjZwITbbZNs2bfYeSY8=",
"owner": "RyanGibb",
"repo": "eilean-nix",
-
"rev": "ef944e2d2544dc71befca73660b7eab600185e0a",
+
"rev": "be8f1b31735b86c98c2c12ba14bb16902202486e",
"type": "github"
},
"original": {
···
},
"flake-utils_10": {
"inputs": {
-
"systems": "systems_6"
+
"systems": "systems_7"
},
"locked": {
"lastModified": 1685518550,
···
},
"flake-utils_2": {
"inputs": {
-
"systems": "systems"
+
"systems": "systems_2"
},
"locked": {
"lastModified": 1681202837,
···
},
"flake-utils_4": {
"inputs": {
-
"systems": "systems_2"
+
"systems": "systems_3"
},
"locked": {
"lastModified": 1701680307,
···
},
"flake-utils_6": {
"inputs": {
-
"systems": "systems_3"
+
"systems": "systems_4"
},
"locked": {
"lastModified": 1694529238,
···
},
"flake-utils_8": {
"inputs": {
-
"systems": "systems_4"
+
"systems": "systems_5"
},
"locked": {
"lastModified": 1692799911,
···
},
"flake-utils_9": {
"inputs": {
-
"systems": "systems_5"
+
"systems": "systems_6"
},
"locked": {
"lastModified": 1701680307,
···
},
"gomod2nix": {
"inputs": {
-
"nixpkgs": "nixpkgs",
+
"nixpkgs": "nixpkgs_2",
"utils": "utils"
},
"locked": {
···
"home-manager": {
"inputs": {
"nixpkgs": [
+
"agenix",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1703113217,
+
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
+
"owner": "nix-community",
+
"repo": "home-manager",
+
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-community",
+
"repo": "home-manager",
+
"type": "github"
+
}
+
},
+
"home-manager_2": {
+
"inputs": {
+
"nixpkgs": [
"nixpkgs"
]
},
···
"neovim": {
"inputs": {
"flake-utils": "flake-utils_9",
-
"nixpkgs": "nixpkgs_2"
+
"nixpkgs": "nixpkgs_3"
},
"locked": {
"dir": "contrib",
···
"nix-rpi5": {
"inputs": {
"flake-compat": "flake-compat_4",
-
"nixpkgs": "nixpkgs_3"
+
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1704485878,
···
},
"nixpkgs": {
"locked": {
-
"lastModified": 1658285632,
-
"narHash": "sha256-zRS5S/hoeDGUbO+L95wXG9vJNwsSYcl93XiD0HQBXLk=",
+
"lastModified": 1703013332,
+
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "5342fc6fb59d0595d26883c3cadff16ce58e44f3",
+
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "master",
+
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
···
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 1703013332,
-
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
-
"owner": "nixos",
-
"repo": "nixpkgs",
-
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
-
"type": "github"
-
},
-
"original": {
-
"owner": "nixos",
-
"ref": "nixos-unstable",
+
"lastModified": 1658285632,
+
"narHash": "sha256-zRS5S/hoeDGUbO+L95wXG9vJNwsSYcl93XiD0HQBXLk=",
+
"owner": "NixOS",
+
"repo": "nixpkgs",
+
"rev": "5342fc6fb59d0595d26883c3cadff16ce58e44f3",
+
"type": "github"
+
},
+
"original": {
+
"owner": "NixOS",
+
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
···
},
"nixpkgs_4": {
"locked": {
-
"lastModified": 1710162809,
-
"narHash": "sha256-i2R2bcnQp+85de67yjgZVvJhd6rRnJbSYNpGmB6Leb8=",
+
"lastModified": 1703013332,
+
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "ddcd7598b2184008c97e6c9c6a21c5f37590b8d2",
+
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nixos",
+
"ref": "nixos-unstable",
+
"repo": "nixpkgs",
+
"type": "github"
+
}
+
},
+
"nixpkgs_5": {
+
"locked": {
+
"lastModified": 1709677081,
+
"narHash": "sha256-tix36Y7u0rkn6mTm0lA45b45oab2cFLqAzDbJxeXS+c=",
+
"owner": "nixos",
+
"repo": "nixpkgs",
+
"rev": "880992dcc006a5e00dd0591446fdf723e6a51a64",
"type": "github"
},
"original": {
···
},
"root": {
"inputs": {
+
"agenix": "agenix",
"alec-website": "alec-website",
"colour-guesser": "colour-guesser",
"eeww": "eeww",
"eilean": "eilean",
"eon": "eon",
"fn06-website": "fn06-website",
-
"home-manager": "home-manager",
+
"home-manager": "home-manager_2",
"hyperbib-eeg": "hyperbib-eeg",
"i3-workspace-history": "i3-workspace-history",
"matrix-appservices": "matrix-appservices",
···
"nix-on-droid": "nix-on-droid",
"nix-rpi5": "nix-rpi5",
"nixos-hardware": "nixos-hardware",
-
"nixpkgs": "nixpkgs_4",
+
"nixpkgs": "nixpkgs_5",
"nixpkgs-compat": "nixpkgs-compat",
"nixpkgs-unstable": "nixpkgs-unstable",
"ryan-cv": "ryan-cv",
···
},
"systems_6": {
+
"locked": {
+
"lastModified": 1681028828,
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+
"owner": "nix-systems",
+
"repo": "default",
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-systems",
+
"repo": "default",
+
"type": "github"
+
}
+
},
+
"systems_7": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+4
flake.nix
···
nixos-hardware.url = "github:nixos/nixos-hardware";
#home-manager.url = "github:nix-community/home-manager/release-23.11";
home-manager.url = "github:RyanGibb/home-manager/fork";
+
agenix.url = "github:ryantm/agenix";
nix-on-droid.url = "github:nix-community/nix-on-droid/release-23.05";
eeww.url = "github:RyanGibb/eeww/nixos";
eon.url = "github:RyanGibb/eon";
···
nixpkgs-compat,
nixos-hardware,
home-manager,
+
agenix,
nix-on-droid,
eeww,
eon,
···
inherit system;
config = nixpkgsConfig;
};
+
agenix = agenix.packages.${system}.default;
eeww = eeww.defaultPackage.${system};
eon = eon.defaultPackage.${system};
mautrix-whatsapp = prev.callPackage ./pkgs/mautrix-whatsapp.nix { };
···
eon.nixosModules.default
matrix-appservices.nixosModule
hyperbib-eeg.nixosModules.default
+
agenix.nixosModules.default
];
};
readModes = dir:
+6 -3
hosts/elephant/default.nix
···
'';
};
+
age.secrets."restic.env".file = ../../secrets/restic.env.age;
+
age.secrets.restic-repo.file = ../../secrets/restic-repo.age;
+
age.secrets.restic-elephant.file = ../../secrets/restic-elephant.age;
services.restic.backups.sync = {
-
environmentFile = "${config.custom.secretsDir}/restic.env";
-
repositoryFile = "${config.custom.secretsDir}/restic-repo";
-
passwordFile = "${config.custom.secretsDir}/restic-password-elephant";
+
environmentFile = config.age.secrets."restic.env".path;
+
repositoryFile = config.age.secrets.restic-repo.path;
+
passwordFile = config.age.secrets.restic-elephant.path;
initialize = true;
paths = [
"/tank/family/mp4/"
+9 -1
hosts/elephant/services.nix
···
};
};
+
age.secrets.nextcloud = {
+
file = ../../secrets/nextcloud.age;
+
mode = "770";
+
owner = "nextcloud";
+
group = "nextcloud";
+
};
services.nextcloud = {
enable = true;
package = pkgs.nextcloud28;
hostName = "nextcloud";
-
config.adminpassFile = "${config.custom.secretsDir}/nextcloud";
+
config.adminpassFile = config.age.secrets.nextcloud.path;
};
services.transmission = {
···
};
};
+
age.secrets.restic-owl.file = ../../secrets/restic-owl.age;
+
age.secrets.restic-gecko.file = ../../secrets/restic-gecko.age;
services.restic = {
#backups.owl = {
# repository = "${config.services.restic.server.dataDir}/owl";
+3 -2
hosts/elephant/zfs.nix
···
interval = "Tue, 02:00";
};
+
age.secrets.email-elephant.file = ../../secrets/email-system.age;
programs.msmtp = {
enable = true;
setSendmail = true;
···
accounts = {
default = {
host = "mail.${config.networking.domain}";
-
passwordeval = "cat ${config.custom.secretsDir}/email-pswd-unhashed";
-
user = "misc@${config.networking.domain}";
+
passwordeval = "cat ${config.age.secrets.email-elephant.path}";
+
user = "system@${config.networking.domain}";
from = "nas@${config.networking.domain}";
};
};
+2 -1
hosts/gecko/default.nix
···
'';
};
+
age.secrets.restic-gecko.file = ../../secrets/restic-gecko.age;
services.restic.backups.${config.networking.hostName} = {
repository = "rest:http://100.64.0.9:8000/${config.networking.hostName}/";
-
passwordFile = "${config.custom.secretsDir}/restic-password-gecko";
+
passwordFile = config.age.secrets.restic-gecko.path;
initialize = true;
paths = [
"/home/${config.custom.username}"
+97 -57
hosts/owl/default.nix
···
inputs.fn06-website.nixosModules.default
];
-
eilean = {
-
publicInterface = "enp1s0";
+
eilean.publicInterface = "enp1s0";
-
mailserver.enable = true;
-
matrix.enable = true;
-
turn.enable = true;
-
mastodon.enable = true;
-
headscale.enable = true;
-
#dns.enable = lib.mkForce false;
+
eilean.mailserver.enable = true;
+
+
eilean.matrix.enable = true;
+
age.secrets.matrix-shared-secret = {
+
file = ../../secrets/matrix-shared-secret.age;
+
mode = "770";
+
owner = "${config.systemd.services.matrix-synapse.serviceConfig.User}";
+
group = "${config.systemd.services.matrix-synapse.serviceConfig.Group}";
+
};
+
eilean.matrix.registrationSecretFile = config.age.secrets.matrix-shared-secret.path;
+
+
eilean.turn.enable = true;
+
age.secrets.coturn = {
+
file = ../../secrets/coturn.age;
+
mode = "770";
+
owner = "${config.systemd.services.coturn.serviceConfig.User}";
+
group = "${config.systemd.services.coturn.serviceConfig.Group}";
};
+
eilean.turn.secretFile = config.age.secrets.coturn.path;
+
+
eilean.mastodon.enable = true;
+
eilean.headscale.enable = true;
+
#eilean.dns.enable = lib.mkForce false;
hosting = {
freumh.enable = true;
···
};
'';
-
services.nginx = {
-
commonHttpConfig = ''
-
add_header Strict-Transport-Security max-age=31536000 always;
-
add_header X-Frame-Options SAMEORIGIN always;
-
add_header X-Content-Type-Options nosniff always;
-
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; base-uri 'self'; frame-src 'self'; frame-ancestors 'self'; form-action 'self';" always;
-
add_header Referrer-Policy 'same-origin';
+
+
services.nginx.commonHttpConfig = ''
+
add_header Strict-Transport-Security max-age=31536000 always;
+
add_header X-Frame-Options SAMEORIGIN always;
+
add_header X-Content-Type-Options nosniff always;
+
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; base-uri 'self'; frame-src 'self'; frame-ancestors 'self'; form-action 'self';" always;
+
add_header Referrer-Policy 'same-origin';
+
'';
+
services.nginx.virtualHosts."teapot.${config.networking.domain}" = {
+
extraConfig = ''
+
return 418;
'';
-
virtualHosts = {
-
"teapot.${config.networking.domain}" = {
-
extraConfig = ''
-
return 418;
-
'';
-
};
-
"${config.services.ryan-website.domain}" = {
-
locations."/phd/" = {
-
basicAuthFile= "${config.custom.secretsDir}/website-phd";
-
};
-
};
-
"capybara.fn06.org" = {
-
forceSSL = true;
-
enableACME = true;
-
locations."/" = {
-
proxyPass = ''
-
http://100.64.0.10:8123
-
'';
-
proxyWebsockets = true;
-
};
-
};
-
"shrew.freumh.org" = {
-
forceSSL = true;
-
enableACME = true;
-
locations."/" = {
-
# need to specify ip or there's a bootstrap problem with headscale
-
proxyPass = ''
-
http://100.64.0.6:8123
-
'';
-
proxyWebsockets = true;
-
};
-
};
+
};
+
age.secrets.website-phd = {
+
file = ../../secrets/website-phd.age;
+
mode = "770";
+
owner = "${config.systemd.services.nginx.serviceConfig.User}";
+
group = "${config.systemd.services.nginx.serviceConfig.Group}";
+
};
+
services.nginx.virtualHosts."${config.services.ryan-website.domain}" = {
+
locations."/phd/" = {
+
basicAuthFile = config.age.secrets.website-phd.path;
+
};
+
};
+
services.nginx.virtualHosts."capybara.fn06.org" = {
+
forceSSL = true;
+
enableACME = true;
+
locations."/" = {
+
proxyPass = ''
+
http://100.64.0.10:8123
+
'';
+
proxyWebsockets = true;
+
};
+
};
+
services.nginx.virtualHosts."shrew.freumh.org" = {
+
forceSSL = true;
+
enableACME = true;
+
locations."/" = {
+
# need to specify ip or there's a bootstrap problem with headscale
+
proxyPass = ''
+
http://100.64.0.6:8123
+
'';
+
proxyWebsockets = true;
};
};
···
"net.ipv6.conf.all.forwarding" = 1;
};
-
mailserver.loginAccounts."${config.custom.username}@${config.networking.domain}".sieveScript = ''
-
require ["fileinto", "mailbox"];
-
-
if header :contains ["to", "cc"] ["~rjarry/aerc-discuss@lists.sr.ht"] {
-
fileinto :create "lists.aerc";
-
stop;
-
}
-
'';
-
services.headscale.settings.dns_config.extra_records = [
{
name = "jellyfin.vpn.${config.networking.domain}";
···
}
];
+
age.secrets.restic-owl.file = ../../secrets/restic-owl.age;
services.restic.backups.${config.networking.hostName} = {
repository = "rest:http://100.64.0.9:8000/${config.networking.hostName}/";
-
passwordFile = "${config.custom.secretsDir}/restic-password-owl";
+
passwordFile = config.age.secrets.restic-owl.path;
initialize = true;
paths = [
"/var/"
···
dates = lib.mkForce "03:00";
randomizedDelaySec = "1hr";
options = lib.mkForce "--delete-older-than 3d";
+
};
+
};
+
+
age.secrets.email-ryan.file = ../../secrets/email-ryan.age;
+
age.secrets.email-system.file = ../../secrets/email-system.age;
+
eilean.mailserver.systemAccountPasswordFile = config.age.secrets.email-system.path;
+
mailserver.loginAccounts = {
+
"${config.eilean.username}@${config.networking.domain}" = {
+
passwordFile = config.age.secrets.email-ryan.path;
+
aliases = [
+
"dns@${config.networking.domain}"
+
"postmaster@${config.networking.domain}"
+
];
+
sieveScript = ''
+
require ["fileinto", "mailbox"];
+
+
if header :contains ["to", "cc"] ["~rjarry/aerc-discuss@lists.sr.ht"] {
+
fileinto :create "lists.aerc";
+
stop;
+
}
+
'';
+
};
+
"misc@${config.networking.domain}" = {
+
passwordFile = config.age.secrets.email-ryan.path;
+
catchAll = [ "${config.networking.domain}" ];
+
};
+
"system@${config.networking.domain}" = {
+
aliases = [
+
"nas@${config.networking.domain}"
+
];
};
};
}
+3 -10
modules/default.nix
···
./hosting/rmfakecloud.nix
];
-
options.custom = {
-
username = lib.mkOption {
-
type = lib.types.str;
-
default = "ryan";
-
};
-
secretsDir = lib.mkOption {
-
type = lib.types.path;
-
default = "/etc/nixos/secrets";
-
};
+
options.custom.username = lib.mkOption {
+
type = lib.types.str;
+
default = "ryan";
};
config = let nixPath = "/etc/nix-path"; in {
eilean = {
username = config.custom.username;
-
secretsDir = config.custom.secretsDir;
serverIpv4 = "135.181.100.27";
serverIpv6 = "2a01:4f9:c011:87ad:0:0:0:0";
};
+7 -1
modules/hosting/nix-cache.nix
···
options.hosting.nix-cache.enable = lib.mkEnableOption "nix-cache";
config = lib.mkIf cfg.nix-cache.enable {
+
age.secrets."cache-priv-key.pem" = {
+
file = ../../secrets/cache-priv-key.pem.age;
+
mode = "770";
+
owner = "${config.systemd.services.nix-serve.serviceConfig.User}";
+
group = "${config.systemd.services.nix-serve.serviceConfig.Group}";
+
};
services.nix-serve = {
enable = true;
-
secretKeyFile = "${config.custom.secretsDir}/cache-priv-key.pem";
+
secretKeyFile = config.age.secrets."cache-priv-key.pem".path;
};
services.nginx = {
+2 -1
modules/hosting/rmfakecloud.nix
···
};
config = lib.mkIf cfg.enable {
+
age.secrets.rmfakecloud.file = ../../secrets/rmfakecloud.age;
services.rmfakecloud = {
enable = true;
storageUrl = "https://${cfg.domain}";
port = cfg.port;
-
environmentFile = "${config.custom.secretsDir}/rmfakecloud.env";
+
environmentFile = config.age.secrets.rmfakecloud.path;
extraSettings = {
RM_SMTP_SERVER = "mail.freumh.org:465";
RM_SMTP_USERNAME = "misc@${domain}";
+2 -2
modules/personal/authorized_keys
···
-
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAGNcdBuEeoJiMH8TMO4k/w3OVKfiSZ9IZ3xrzFOZEi8 ryan@dell-xps
-
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDvc+NPAI/8+2HurPFG2cRbbToIrEJCmaaHDOlle6D6n ryan@desktop
+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAGNcdBuEeoJiMH8TMO4k/w3OVKfiSZ9IZ3xrzFOZEi8 ryan@gecko
+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDvc+NPAI/8+2HurPFG2cRbbToIrEJCmaaHDOlle6D6n ryan@vulpine
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAzkZA+GFmHqkvk3xNhmj5LSKYujLP3lPMtG/XW0ND+c ryan@pixel-7a
+1
modules/personal/default.nix
···
environment = {
systemPackages = with pkgs; [
nix
+
agenix
tree
htop
bind
secrets/cache-priv-key.pem.age

This is a binary file and will not be displayed.

+7
secrets/coturn.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw yYow/p+dJOB7q2c6d3xAudf/qnib45GNo1ZoeZG3ARw
+
f8EUVRWMuKY80KZM4vyXZIaMspofNbtQRE9hqKLv0kM
+
-> ssh-ed25519 suwb0g zkyX7V+nDvx4LErnGf13RaHqihuEou9c2p5dgWq55jQ
+
tsVexMsDalEbQy0hMmkWB5Vl9oK5pN4MfLhbK/VXskQ
+
--- jtrLTqGGp/e0ofSd6yuy90Sz9OUQ3V8iKSRmeWWPqZI
+
���n�}Q9�h���Kv��e���/G����t��\��%�}�%�RB���Cڊq����
+10
secrets/email-ryan.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw HicTBNJMbqbFCO13MqTZgUCd5v/lZG8fQG4VJJqvF04
+
ZEIdrLvXBPj+tMmKeA9eIBdQKvfhWNbS6HxXzJLQTts
+
-> ssh-ed25519 kGzv/A Eu4S6fZNcXdm88bFjzpGj8SHg92/oKglfOAlaArcnlo
+
Vgf0hMeLEktJjYC1Y+6zgCR4rAHwetiEDHX0DfnNgaI
+
-> ssh-ed25519 suwb0g o+vUNNvXlYT4xOdeqxn64+glCZ6kAWrg9pf8Khewiis
+
4NmqCp7J9DDPttCoSKgriTmdpPCQiF85jw0aC0GYdhI
+
--- xjN0cRDJdH5Mh19CzkWo/zaC9jOdjofvRrM9mstifKA
+
~�����$��aY�C��v���bw����
+
w�*� JoȻ���O��`
+13
secrets/email-system.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw gAkaa1kB+guzV9cnSbYYIVEuvIhsFI5QoBXa0yRlkwc
+
WcvrbIgsSPMlxpGW+vhgTyj+c60WJ0x7gylEXFWE/Uo
+
-> ssh-ed25519 kGzv/A M027fX5r/bn6SIdyOnwL9TAaPsuJQwSlp1HC5GC3wEg
+
puBA4aEVjHT9xlDQ5qgxxLYqB9ObwzIzdABI2dyC/Tg
+
-> ssh-ed25519 suwb0g pXmkXEI12HOLE1N9uUr46ZiB39aNA40GLFhX4Lmz9Rg
+
URMeJAJ/1vhP8Sz9Okbk21+KPs++rNkLPsLSU3Ch1VI
+
-> ssh-ed25519 hFxbYA 95YBwgvPfZg4tqu0kufH3SZsoYDgquEwAJbxZYZ9L0E
+
FWioYSWLIqo4x4mu1tPRfGoGcZlsluRgZcrigG6s6Go
+
--- YY1gpBzACyfugLfnMjFfMXLMP9EM/E9P2mQEN6jBkYM
+
@eH�~5<���:r3
+
_3"
+
Po����D*m���)���XuјV
+8
secrets/headscale.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw G6q6+o1E83IlyXnSaA4qA7LCZgpag/FZ7BrEmex/iGE
+
dwPcnIpdkWTYXq81BsoPx1gwR3XxZyAqKiMS0QFgjTw
+
-> ssh-ed25519 suwb0g pb4/NyjIrHn/+HD+1mwimeq24Rbfh64haxOmnF8+zXw
+
mgnRcBTCwL8A0T0/8Xrfhhsy+TlrP6R72IJEjvmt1hY
+
--- rQLXeCL+dLX/5W0qWzhSh9YplMURRVEfBPQUVgQisZU
+
��l��׃���8���[dJ�';u:{�Sg��7��Qw��EUp�ƫJ>���㠃�
+
�ew��Q�v��!Me�.��:t
+7
secrets/matrix-shared-secret.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw r96HKuvrpe6trVLJKL7VQEYargBTo2MPRO479kV3Bgw
+
dgMzEvqgu45tmia1QxLxyhdEJ+GEfqTF8Z5uwjFKZc0
+
-> ssh-ed25519 suwb0g LDk/kskgo/NyOt90jOPbDD9w10txyqNqJW9M4ozR+gg
+
ycwKI/aSoTXOeFR+pIDZSgKA/GPVYouiz3Jb8Fgxlwc
+
--- JyYD3MxYrXI2N/o2XZcFHe0K/sf0rZ2HInhUSBz/Z34
+
̸����u+�����"l)�O��ѭYVL��E;:�t����&;&腵ء�
+8
secrets/matrix-turn-shared-secret.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw bah7x/Aq1GfU+JeF59dCLGJaiyDoYX60Zlwt7463LmY
+
vFuXN0qlAxzbxdew/JDISIQBtiJqVh/Abrfwxm+i7uY
+
-> ssh-ed25519 suwb0g kKLy2jN9nt6mGIHIy0wIQrNOrlVHdkmu+0D6g/kyJRE
+
nOxpbnavQ4xKi0viRQbauhH+nQcCItUZz4ygO/172/I
+
--- 4Wt/0ts+PjMHG2vn1JSYhs0Ds/yeOw5F/bbc0oduI4A
+
��2���Uef���P�&�I��ox��@� �$%,�et&@�a��vv��
+
Nr�Jz�*�=T=� V�9���N;7$�
+7
secrets/nextcloud.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw DrjReYI+IVUCx7Au47vYbBiT9EhknCm4ieDrgOVeOhc
+
6q4L9FgIAUEw+JGutCsZVi97fyBZ6Ubw9gEBC1C4ofQ
+
-> ssh-ed25519 hFxbYA FncIavgK4kGxaj8mmzKPRejp58ylekt024o2Ju/EpVA
+
+PgokBmcKd1I8d9mzPqN8xN1zFQuVhodSIqGD2G/dhc
+
--- 3iBjML8PUt5vo6HTW2QEvlCyrT1m8GOCe0ZNsC5unz4
+
����k��TZ�A�I-��;��bt�Ǥ����Z�m�O՛Q%,�6~��
+7
secrets/restic-elephant.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw zM/UVwI1BZ1DbNFS35G1S6v7JgvGrDaYRA3VPAnFmU0
+
1Agnb8DOQjiYb8j5eDZJuhgCuNyRMszY86FziZjdKFg
+
-> ssh-ed25519 hFxbYA Hb7HnaSwjvBEz6QRTe64cg9W+STnt/Ld00q+mpXLYXk
+
Q6vxVGaJwtkl3I25U9kQyPZ8NiWyEwMO3wAzMa9wYtA
+
--- mgBy5AGa0ThwD4AU7D1Xbxl03UG7DgG17Jt3No38t4w
+
�=���r����}��٦�V�Q %j�&��9�kB!����P >�]�@�
+9
secrets/restic-gecko.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw eyiRwvCVX25HnDBOqBoX+jff1VyS6+a3iM1pGgHM52U
+
15+c4VdyybARvUUm5WsamLgG7d9l1VezbqCLUqQ5IbY
+
-> ssh-ed25519 kGzv/A HPy/dvPROQ7Mmd6dwMZ4E64XTxDCI5jADULgoAi54HA
+
VXfRu7XXgYwAj3lG2aKkL8Zqm+hlVb57xcpFJG5o790
+
-> ssh-ed25519 hFxbYA iwkB/Q2kL2Qk8p/2r/IJSQedhrtuNCvucaIFCbz2SS8
+
X6+8OWi1DrihdHZQAjig3MBfraE/oaPJpsxY+b2DmAQ
+
--- EZbLc+7OoHmFU4zUstw8YfopHzPuVMZYm7aPeyzK1DA
+
�tR��3֌�^����sw+[� ���!`��s,�=�ܦEa�!.y��NV��
+9
secrets/restic-owl.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw WO7KQIsaIvyu/0LIDe5XCdD10nmvhxnscYaAfBLuDSo
+
brTFl87oaAJM8WiP7EZg3Rtn/Wv/waFkAEeXdzIWxG8
+
-> ssh-ed25519 suwb0g CrhB1lj3TFawcN9Y5kh95oshWAMCl1irYB27n04pBRk
+
2YJjubEi3JQJpqIxwlNcprSuBbaQHp3DZMYA7qF5NWs
+
-> ssh-ed25519 hFxbYA IXQcsKt1VL58qXb/VUbrNeOMblrFHfp2pou4Dm/LTCM
+
yk5jERwP10elSANCGtyjl3jaYYwZw0XraAlzF7VRLJU
+
--- siBkW7thasO4RVe7uODHXH2a6qSXELxDVh92g1kzajc
+
;X�Y�_��o�� D�7���!M�^���%�'N$�1(Z��4�:��
+7
secrets/restic-repo.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw jTVgYavqQDKvCiM1nshz2UOephg8Yj+wqx2AMYVHm1g
+
VThYUo4lcaTKonmEaj3Fnrhd+hTc3Ysku0s4YKf/WvU
+
-> ssh-ed25519 hFxbYA PfswIpX5ypDAhpgq7niJNcHqQHtMITaMWxGB1dD8aB4
+
9+3jWKIycqutXGEzRu6/jW0+D5GcMxx1aovs+H9mdwA
+
--- ELFkLcStgKTPx2xaUqa4FgE6uDDlpd5JypbQO0BhXQE
+
[�t���ߣ�n��>�U��}��v��B�XIs۵7�3+�'�w�4WkW��Q�
+7
secrets/restic.env.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw fskgfBZTQmDGSndoDQEFGm5/hu7BYKTlBM1a0YqKgGQ
+
qPRneBQV++l1ephtxiuGqTjyKelDEzJgVxo0RJW5Pgk
+
-> ssh-ed25519 hFxbYA S6O9RUO8T2YwqyXAtfg95gyeTBZCI9EWRzyQ6Qr0m0c
+
01HvlsSN5mYiUa8hLcR7koIVeuw1WjYI75yn6xPxjuY
+
--- 4R2yEzRVDtpwZD+vLOfuthkQo02sDOCDUKsIuVL1yYs
+
i������|��30ߡ%6څ�C]'����3���v �����(��n'Ñd��v��)��z�i���r�cw��ܚ��Gٛ�7���^=KZ��/��LH��)�ɢ�2�RX����Qxp��7eݵ
+9
secrets/rmfakecloud.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 2wDnOw cZAHymi1bx5cJOnV85KT5Dl7zbxq/fa5iG/gGlSsfjc
+
bKbYQAV9gDXuVppL651POALVyaHEOWs9nlzn6TBCgIs
+
-> ssh-ed25519 suwb0g OlpsG/YuFrNV9HC5sXH4OioW9GVFpjXMemeamN4hpTk
+
4c4eIz0V0yPIsuIB2QbD7EZ/OY25C5HdBbj158TNhfo
+
--- PPbup/ff9S0ZPbmELCQtQY6lYwMTcGbwf33046/Bphc
+
��tm�&�Ic���y�a��'z�
+
%�����a� ��X��teo^ \�
+
,��b�^�"�d��K.�/�f���� 9����[�,�A�ko���[3 "�8�r<,�E<����^8�����(�����=�Z9NyY� ǤpfFC�`��r����!-�^�T�����~��Z�A�W�W|(�c!�oC?lY���qM�u� �K��R8ڧsJ{����^����?�ޗaC�W��:)�*���Ҋc+�5����+��N�6�������}�
+27
secrets/secrets.nix
···
+
let
+
user = [
+
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAGNcdBuEeoJiMH8TMO4k/w3OVKfiSZ9IZ3xrzFOZEi8 ryan@dell-xps"
+
];
+
+
gecko = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGLEtqkSlJx219h1aYRXRjP60vBmJmhrCp0Mj1FIF25N root@gecko";
+
owl = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILP6Cgm/BWnJvuGgU1SjWwjOCjuE5AXGqEdQonWYR7BA root@owl";
+
elephant = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+ddohsRFrypCVJqIhI3p3R12pJI8iwuMfRu0TJWuPe root@elephant";
+
shrew = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLiZ0xdXSlF1eMibrs320lVQaushEpEDMrR6lp9uFkx root@shrew";
+
in
+
{
+
"cache-priv-key.pem.age".publicKeys = user ++ [ owl ];
+
"email-ryan.age".publicKeys = user ++ [ gecko owl ];
+
"email-system.age".publicKeys = user ++ [ gecko owl elephant ];
+
"matrix-shared-secret.age".publicKeys = user ++ [ owl ];
+
"matrix-turn-shared-secret.age".publicKeys = user ++ [ owl ];
+
"coturn.age".publicKeys = user ++ [ owl ];
+
"website-phd.age".publicKeys = user ++ [ owl ];
+
"rmfakecloud.age".publicKeys = user ++ [ owl ];
+
"restic-owl.age".publicKeys = user ++ [ owl elephant ];
+
"restic-gecko.age".publicKeys = user ++ [ gecko elephant ];
+
"restic-elephant.age".publicKeys = user ++ [ elephant ];
+
"restic.env.age".publicKeys = user ++ [ elephant ];
+
"restic-repo.age".publicKeys = user ++ [ elephant ];
+
"nextcloud.age".publicKeys = user ++ [ elephant ];
+
"headscale.age".publicKeys = user ++ [ owl ];
+
}
secrets/website-phd.age

This is a binary file and will not be displayed.