move encrypted secrets near relevant files

This commit is contained in:
Noah Masur 2025-03-09 17:09:33 +00:00
parent f59ac536a2
commit 37d1d7724a
60 changed files with 27 additions and 94 deletions

View File

@ -1,5 +0,0 @@
# Disks
These are my [disko](https://github.com/nix-community/disko) configurations,
which allow me to save desired disk formatting layouts as a declarative file so
I don't have to remember how to format my disks later on.

View File

@ -52,7 +52,7 @@ rec {
nmasur.presets.services.cloudflared = { nmasur.presets.services.cloudflared = {
tunnel = { tunnel = {
id = "bd250ee1-ed2e-42d2-b627-039f1eb5a4d2"; id = "bd250ee1-ed2e-42d2-b627-039f1eb5a4d2";
credentialsFile = ../../../private/cloudflared-flame.age; credentialsFile = ./cloudflared-flame.age;
ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK/6oyVqjFGX3Uvrc3VS8J9sphxzAnRzKC85xgkHfYgR3TK6qBGXzHrknEj21xeZrr3G2y1UsGzphWJd9ZfIcdA= open-ssh-ca@cloudflareaccess.org"; ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK/6oyVqjFGX3Uvrc3VS8J9sphxzAnRzKC85xgkHfYgR3TK6qBGXzHrknEj21xeZrr3G2y1UsGzphWJd9ZfIcdA= open-ssh-ca@cloudflareaccess.org";
}; };
}; };

View File

@ -34,7 +34,7 @@ in
]; ];
x86_64-linux-hosts = lib.pipe (lib.filesystem.listFilesRecursive ./x86_64-linux) [ x86_64-linux-hosts = lib.pipe (lib.filesystem.listFilesRecursive ./x86_64-linux) [
# Get only files ending in default.nix # Get only files ending in default.nix
(builtins.filter (name: lib.hasSuffix ".nix" name)) (builtins.filter (name: lib.hasSuffix "default.nix" name))
# Import each host function # Import each host function
(map (file: { (map (file: {
name = lib.removeSuffix ".nix" (builtins.baseNameOf file); name = lib.removeSuffix ".nix" (builtins.baseNameOf file);

View File

@ -85,7 +85,7 @@ rec {
nmasur.presets.services.cloudflared = { nmasur.presets.services.cloudflared = {
tunnel = { tunnel = {
id = "646754ac-2149-4a58-b51a-e1d0a1f3ade2"; id = "646754ac-2149-4a58-b51a-e1d0a1f3ade2";
credentialsFile = ../../private/cloudflared-swan.age; credentialsFile = ./cloudflared-swan.age;
ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCHF/UMtJqPFrf6f6GRY0ZFnkCW7b6sYgUTjTtNfRj1RdmNic1NoJZql7y6BrqQinZvy7nsr1UFDNWoHn6ah3tg= open-ssh-ca@cloudflareaccess.org"; ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCHF/UMtJqPFrf6f6GRY0ZFnkCW7b6sYgUTjTtNfRj1RdmNic1NoJZql7y6BrqQinZvy7nsr1UFDNWoHn6ah3tg= open-ssh-ca@cloudflareaccess.org";
}; };
}; };

View File

@ -98,7 +98,7 @@ rec {
nmasur.presets.services.cloudflared = { nmasur.presets.services.cloudflared = {
tunnel = { tunnel = {
id = "ac133a82-31fb-480c-942a-cdbcd4c58173"; id = "ac133a82-31fb-480c-942a-cdbcd4c58173";
credentialsFile = ../../../private/cloudflared-tempest.age; credentialsFile = ./cloudflared-tempest.age;
ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPY6C0HmdFCaxYtJxFr3qV4/1X4Q8KrYQ1hlme3u1hJXK+xW+lc9Y9glWHrhiTKilB7carYTB80US0O47gI5yU4= open-ssh-ca@cloudflareaccess.org"; ca = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPY6C0HmdFCaxYtJxFr3qV4/1X4Q8KrYQ1hlme3u1hJXK+xW+lc9Y9glWHrhiTKilB7carYTB80US0O47gI5yU4= open-ssh-ca@cloudflareaccess.org";
}; };
}; };

View File

@ -1,18 +0,0 @@
# Return a list of all nix-darwin hosts
{ lib, ... }:
lib.pipe (lib.filesystem.listFilesRecursive ./.) [
# Get only files ending in default.nix
(builtins.filter (name: lib.hasSuffix "default.nix" name))
# Remove this file
(builtins.filter (name: name != ./default.nix))
# Import each host function
map
(file: {
name = builtins.baseNameOf (builtins.dirOf file);
value = import file;
})
# Convert to an attrset of hostname -> host function
(builtins.listToAttrs)
]

View File

@ -1,22 +0,0 @@
# Return a list of all NixOS hosts
{ nixpkgs, ... }:
let
inherit (nixpkgs) lib;
in
lib.pipe (lib.filesystem.listFilesRecursive ./.) [
# Get only files ending in default.nix
(builtins.filter (name: lib.hasSuffix "default.nix" name))
# Remove this file
(builtins.filter (name: name != ./default.nix))
# Import each host function
map
(file: {
name = builtins.baseNameOf (builtins.dirOf file);
value = import file;
})
# Convert to an attrset of hostname -> host function
(builtins.listToAttrs)
]

View File

@ -1,22 +0,0 @@
# Return a list of all NixOS hosts
{ nixpkgs, ... }:
let
inherit (nixpkgs) lib;
in
lib.pipe (lib.filesystem.listFilesRecursive ./.) [
# Get only files ending in default.nix
(builtins.filter (name: lib.hasSuffix "default.nix" name))
# Remove this file
(builtins.filter (name: name != ./default.nix))
# Import each host function
map
(file: {
name = builtins.baseNameOf (builtins.dirOf file);
value = import file;
})
# Convert to an attrset of hostname -> host function
(builtins.listToAttrs)
]

View File

@ -112,7 +112,7 @@ in
notmuch.enable = true; notmuch.enable = true;
# Used to login and send and receive emails # Used to login and send and receive emails
passwordCommand = "${lib.getExe pkgs.age} --decrypt --identity ~/.ssh/id_ed25519 ${pkgs.writeText "mailpass.age" (builtins.readFile ../../../../../../private/mailpass.age)}"; passwordCommand = "${lib.getExe pkgs.age} --decrypt --identity ~/.ssh/id_ed25519 ${pkgs.writeText "mailpass.age" (builtins.readFile ./mailpass.age)}";
smtp = { smtp = {
host = cfg.smtpHost; host = cfg.smtpHost;

View File

@ -32,7 +32,7 @@ in
passwordFile = lib.mkOption { passwordFile = lib.mkOption {
type = lib.types.path; type = lib.types.path;
description = "Password file for SMTP"; description = "Password file for SMTP";
default = ../../../../../../private/mailpass-system.age; default = ./mailpass-system.age;
}; };
}; };

View File

@ -250,27 +250,27 @@ in
# Secrets for Prometheus exporters # Secrets for Prometheus exporters
secrets.radarrApiKey = { secrets.radarrApiKey = {
source = ../../../private/radarr-api-key.age; source = ./radarr-api-key.age;
dest = "/var/private/radarr-api"; dest = "/var/private/radarr-api";
prefix = "API_KEY="; prefix = "API_KEY=";
}; };
secrets.readarrApiKey = { secrets.readarrApiKey = {
source = ../../../private/radarr-api-key.age; source = ./radarr-api-key.age;
dest = "/var/private/readarr-api"; dest = "/var/private/readarr-api";
prefix = "API_KEY="; prefix = "API_KEY=";
}; };
secrets.sonarrApiKey = { secrets.sonarrApiKey = {
source = ../../../private/sonarr-api-key.age; source = ./sonarr-api-key.age;
dest = "/var/private/sonarr-api"; dest = "/var/private/sonarr-api";
prefix = "API_KEY="; prefix = "API_KEY=";
}; };
secrets.prowlarrApiKey = { secrets.prowlarrApiKey = {
source = ../../../private/prowlarr-api-key.age; source = ./prowlarr-api-key.age;
dest = "/var/private/prowlarr-api"; dest = "/var/private/prowlarr-api";
prefix = "API_KEY="; prefix = "API_KEY=";
}; };
secrets.sabnzbdApiKey = { secrets.sabnzbdApiKey = {
source = ../../../private/sabnzbd-api-key.age; source = ./sabnzbd-api-key.age;
dest = "/var/private/sabnzbd-api"; dest = "/var/private/sabnzbd-api";
prefix = "API_KEY="; prefix = "API_KEY=";
}; };

View File

@ -98,7 +98,7 @@ in
# Private key is used for LetsEncrypt # Private key is used for LetsEncrypt
secrets.letsencrypt-key = { secrets.letsencrypt-key = {
source = ../../../../../../private/letsencrypt-key.age; source = ./letsencrypt-key.age;
dest = "${config.secretsDirectory}/letsencrypt-key"; dest = "${config.secretsDirectory}/letsencrypt-key";
owner = "caddy"; owner = "caddy";
group = "caddy"; group = "caddy";
@ -106,7 +106,7 @@ in
# API key must have access to modify Cloudflare DNS records # API key must have access to modify Cloudflare DNS records
secrets.cloudflare-api = { secrets.cloudflare-api = {
source = ../../../../../../private/cloudflare-api.age; source = ./cloudflare-api.age;
dest = "${config.secretsDirectory}/cloudflare-api"; dest = "${config.secretsDirectory}/cloudflare-api";
owner = "caddy"; owner = "caddy";
group = "caddy"; group = "caddy";

View File

@ -52,7 +52,7 @@ in
# API key needed to connect to Gitea # API key needed to connect to Gitea
secrets.giteaRunnerToken = { secrets.giteaRunnerToken = {
source = ../../../private/gitea-runner-token.age; # TOKEN=xyz source = ./gitea-runner-token.age; # TOKEN=xyz
dest = "${config.secretsDirectory}/gitea-runner-token"; dest = "${config.secretsDirectory}/gitea-runner-token";
}; };
systemd.services.giteaRunnerToken-secret = { systemd.services.giteaRunnerToken-secret = {

View File

@ -17,7 +17,7 @@ in
# Allow Grafana to connect to email service # Allow Grafana to connect to email service
secrets.mailpass-grafana = { secrets.mailpass-grafana = {
source = ../../../../../../private/mailpass-grafana.age; source = ./mailpass-grafana.age;
dest = "${config.secretsDirectory}/mailpass-grafana"; dest = "${config.secretsDirectory}/mailpass-grafana";
owner = "grafana"; owner = "grafana";
group = "grafana"; group = "grafana";

View File

@ -33,7 +33,7 @@ in
# Create credentials file for InfluxDB admin # Create credentials file for InfluxDB admin
secrets.influxdb2Password = lib.mkIf config.services.influxdb2.enable { secrets.influxdb2Password = lib.mkIf config.services.influxdb2.enable {
source = ../../../../../../private/influxdb2-password.age; source = ./influxdb2-password.age;
dest = "${config.secretsDirectory}/influxdb2-password"; dest = "${config.secretsDirectory}/influxdb2-password";
owner = "influxdb2"; owner = "influxdb2";
group = "influxdb2"; group = "influxdb2";
@ -44,7 +44,7 @@ in
before = [ "influxdb2.service" ]; before = [ "influxdb2.service" ];
}; };
secrets.influxdb2Token = lib.mkIf config.services.influxdb2.enable { secrets.influxdb2Token = lib.mkIf config.services.influxdb2.enable {
source = ../../../../../../private/influxdb2-token.age; source = ./influxdb2-token.age;
dest = "${config.secretsDirectory}/influxdb2-token"; dest = "${config.secretsDirectory}/influxdb2-token";
owner = "influxdb2"; owner = "influxdb2";
group = "influxdb2"; group = "influxdb2";

View File

@ -29,7 +29,7 @@ in
accessKeySecret = lib.mkOption { accessKeySecret = lib.mkOption {
type = lib.types.nullOr lib.types.path; type = lib.types.nullOr lib.types.path;
description = "S3 secret key path for Litestream backups"; description = "S3 secret key path for Litestream backups";
default = ../../../../../../private/backup.age; default = ./backup.age;
}; };
}; };
}; };

View File

@ -38,7 +38,7 @@ in
# Create credentials file for remote Prometheus push # Create credentials file for remote Prometheus push
secrets.prometheus = { secrets.prometheus = {
source = ../../../../../../private/prometheus.age; source = ./prometheus.age;
dest = "${config.secretsDirectory}/prometheus"; dest = "${config.secretsDirectory}/prometheus";
owner = "prometheus"; owner = "prometheus";
group = "prometheus"; group = "prometheus";

View File

@ -71,7 +71,7 @@ in
}; };
secrets.vmauth = lib.mkIf config.services.victoriametrics.enable { secrets.vmauth = lib.mkIf config.services.victoriametrics.enable {
source = ../../../../../../private/prometheus.age; source = ./prometheus.age;
dest = "${config.secretsDirectory}/vmauth"; dest = "${config.secretsDirectory}/vmauth";
prefix = "PASSWORD="; prefix = "PASSWORD=";
}; };

View File

@ -47,7 +47,7 @@ in
}; };
secrets.vmagent = { secrets.vmagent = {
source = ../../../../../../private/prometheus.age; source = ./prometheus.age;
dest = "${config.secretsDirectory}/vmagent"; dest = "${config.secretsDirectory}/vmagent";
}; };
systemd.services.vmagent-secret = lib.mkIf config.services.vmagent.enable { systemd.services.vmagent-secret = lib.mkIf config.services.vmagent.enable {

View File

@ -200,7 +200,7 @@ in
# Create credentials file for nextcloud # Create credentials file for nextcloud
secrets.nextcloud = { secrets.nextcloud = {
source = ../../../private/nextcloud.age; source = ./nextcloud.age;
dest = "${config.secretsDirectory}/nextcloud"; dest = "${config.secretsDirectory}/nextcloud";
owner = "nextcloud"; owner = "nextcloud";
group = "nextcloud"; group = "nextcloud";

View File

@ -51,7 +51,7 @@ in
services.cloudflare-dyndns.domains = [ hostnames.paperless ]; services.cloudflare-dyndns.domains = [ hostnames.paperless ];
secrets.paperless = { secrets.paperless = {
source = ../../../../../../private/prometheus.age; source = ./paperless.age;
dest = "${config.secretsDirectory}/paperless"; dest = "${config.secretsDirectory}/paperless";
owner = "paperless"; owner = "paperless";
group = "paperless"; group = "paperless";

View File

@ -10,7 +10,7 @@ in
resticPassword = lib.mkOption { resticPassword = lib.mkOption {
type = lib.types.nullOr lib.types.path; type = lib.types.nullOr lib.types.path;
description = "Password file path for Restic backups"; description = "Password file path for Restic backups";
default = ../../../../../../private/restic.age; default = ./restic.age;
}; };
s3 = { s3 = {
endpoint = lib.mkOption { endpoint = lib.mkOption {
@ -26,7 +26,7 @@ in
accessKeySecretPair = lib.mkOption { accessKeySecretPair = lib.mkOption {
type = lib.types.nullOr lib.types.path; type = lib.types.nullOr lib.types.path;
description = "Path to file containing S3 access and secret key for Restic backups"; description = "Path to file containing S3 access and secret key for Restic backups";
default = ../../../../../../private/s3-glacier.age; default = ./s3-glacier.age;
}; };
}; };
}; };

View File

@ -43,7 +43,7 @@ in
}; };
secrets.vaultwarden = { secrets.vaultwarden = {
source = ../../../../../../private/vaultwarden.age; source = ./vaultwarden.age;
dest = "${config.secretsDirectory}/vaultwarden"; dest = "${config.secretsDirectory}/vaultwarden";
owner = "vaultwarden"; owner = "vaultwarden";
group = "vaultwarden"; group = "vaultwarden";

View File

@ -52,7 +52,7 @@ in
# Create private key file for wireguard # Create private key file for wireguard
secrets.wireguard = { secrets.wireguard = {
source = ../../../private/wireguard.age; source = ./wireguard.age;
dest = "${config.secretsDirectory}/wireguard"; dest = "${config.secretsDirectory}/wireguard";
}; };
}; };