diff --git a/hive.nix b/hive.nix index e1451bf..6f5434f 100644 --- a/hive.nix +++ b/hive.nix @@ -13,7 +13,7 @@ let ]; # Include default secrets - dgn-secrets.sources = [ ./machines/${node}/secrets ]; + age-secrets.sources = [ ./machines/${node}/secrets ]; # Deployment config is specified in meta.nodes.${node}.deployment inherit (metadata.nodes.${node}) deployment; diff --git a/machines/compute01/ds-fr/default.nix b/machines/compute01/ds-fr/default.nix index 48922d1..2ace102 100644 --- a/machines/compute01/ds-fr/default.nix +++ b/machines/compute01/ds-fr/default.nix @@ -60,5 +60,5 @@ in { }; }; - dgn-secrets.matches."^ds_fr-.*$" = { owner = "ds-fr"; }; + age-secrets.matches."^ds_fr-.*$" = { owner = "ds-fr"; }; } diff --git a/machines/compute01/k-radius/default.nix b/machines/compute01/k-radius/default.nix index 0ab6cdf..04844da 100644 --- a/machines/compute01/k-radius/default.nix +++ b/machines/compute01/k-radius/default.nix @@ -55,7 +55,7 @@ radiusClients = { }; }; - dgn-secrets.matches."^radius-.*$" = { owner = "radius"; }; + age-secrets.matches."^radius-.*$" = { owner = "radius"; }; networking.firewall.allowedTCPPorts = [ 1812 ]; networking.firewall.allowedUDPPorts = [ 1812 ]; diff --git a/machines/compute01/mastodon.nix b/machines/compute01/mastodon.nix index d2b7551..0c076a4 100644 --- a/machines/compute01/mastodon.nix +++ b/machines/compute01/mastodon.nix @@ -38,5 +38,5 @@ in { extraEnvFiles = [ config.age.secrets."mastodon-extra_env_file".path ]; }; - dgn-secrets.matches."^mastodon-.*$" = { owner = "mastodon"; }; + age-secrets.matches."^mastodon-.*$" = { owner = "mastodon"; }; } diff --git a/machines/compute01/nextcloud.nix b/machines/compute01/nextcloud.nix index f8b05cd..5f63022 100644 --- a/machines/compute01/nextcloud.nix +++ b/machines/compute01/nextcloud.nix @@ -190,7 +190,7 @@ in { networking.hosts = { "129.199.146.148" = [ "s3.dgnum.eu" ]; }; - dgn-secrets.matches."^nextcloud-.*$" = { owner = "nextcloud"; }; + age-secrets.matches."^nextcloud-.*$" = { owner = "nextcloud"; }; system.activationScripts = { restart-nextcloud.text = '' diff --git a/machines/compute01/outline.nix b/machines/compute01/outline.nix index 7ef7daf..76603ec 100644 --- a/machines/compute01/outline.nix +++ b/machines/compute01/outline.nix @@ -51,5 +51,5 @@ in { }; }; - dgn-secrets.matches."^outline-.*$" = { owner = "outline"; }; + age-secrets.matches."^outline-.*$" = { owner = "outline"; }; } diff --git a/machines/compute01/satosa/default.nix b/machines/compute01/satosa/default.nix index f1e3f17..24d1070 100644 --- a/machines/compute01/satosa/default.nix +++ b/machines/compute01/satosa/default.nix @@ -144,5 +144,5 @@ in { forceSSL = true; }; - dgn-secrets.matches."^satosa-.*$" = { owner = "satosa"; }; + age-secrets.matches."^satosa-.*$" = { owner = "satosa"; }; } diff --git a/machines/compute01/zammad.nix b/machines/compute01/zammad.nix index a272e31..ec966a1 100644 --- a/machines/compute01/zammad.nix +++ b/machines/compute01/zammad.nix @@ -51,5 +51,5 @@ in { }; }; - dgn-secrets.matches."^zammad-.*$" = { owner = "zammad"; }; + age-secrets.matches."^zammad-.*$" = { owner = "zammad"; }; } diff --git a/machines/storage01/forgejo.nix b/machines/storage01/forgejo.nix index 2e4d224..85389e7 100644 --- a/machines/storage01/forgejo.nix +++ b/machines/storage01/forgejo.nix @@ -77,5 +77,5 @@ in { users.groups.git = { }; - dgn-secrets.matches."^forgejo-.*$" = { owner = "git"; }; + age-secrets.matches."^forgejo-.*$" = { owner = "git"; }; } diff --git a/machines/storage01/netbird/default.nix b/machines/storage01/netbird/default.nix index 45acc7b..aaaf1aa 100644 --- a/machines/storage01/netbird/default.nix +++ b/machines/storage01/netbird/default.nix @@ -42,5 +42,5 @@ in }; }; - # dgn-secrets.matches."^netbird-.*$" = { owner = "netbird"; }; + # age-secrets.matches."^netbird-.*$" = { owner = "netbird"; }; } diff --git a/machines/storage01/peertube.nix b/machines/storage01/peertube.nix index 7581440..64544dd 100644 --- a/machines/storage01/peertube.nix +++ b/machines/storage01/peertube.nix @@ -63,5 +63,5 @@ in { forceSSL = true; }; - dgn-secrets.matches."^peertube-.*$" = { owner = "peertube"; }; + age-secrets.matches."^peertube-.*$" = { owner = "peertube"; }; } diff --git a/machines/web01/linkal/module.nix b/machines/web01/linkal/module.nix index 63da24a..bc49e69 100644 --- a/machines/web01/linkal/module.nix +++ b/machines/web01/linkal/module.nix @@ -70,7 +70,7 @@ in { # allowedUDPPorts = [ 53 ]; # }; # - # dgn-secrets.options = [{ named-bind_dnskeys_conf.owner = "named"; }]; + # age-secrets.options = [{ named-bind_dnskeys_conf.owner = "named"; }]; # # # Configure ACME for DNS certificate validation # security.acme = { diff --git a/machines/web01/matterbridge.nix b/machines/web01/matterbridge.nix index 1e133d9..5a152df 100644 --- a/machines/web01/matterbridge.nix +++ b/machines/web01/matterbridge.nix @@ -6,5 +6,5 @@ configPath = config.age.secrets."matterbridge-config_file".path; }; - dgn-secrets.matches."^matterbridge-.*$" = { owner = "matterbridge"; }; + age-secrets.matches."^matterbridge-.*$" = { owner = "matterbridge"; }; } diff --git a/modules/default.nix b/modules/default.nix index 17ace8b..f61d961 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,4 +1,4 @@ -# Copyright : +# Copyright : # - Tom Hubrecht 2023 # - Maurice Debray 2023 # @@ -44,12 +44,13 @@ "dgn-hardware" "dgn-network" "dgn-runners" - "dgn-secrets" "dgn-ssh" "dgn-web" "dgn-vm-variant" ]) ++ [ "${sources.agenix}/modules/age.nix" "${sources.attic}/nixos/atticd.nix" - ]; + ] ++ ((import sources.nix-modules { inherit lib; }).importModules [ + "age-secrets" + ]); } diff --git a/modules/dgn-runners/default.nix b/modules/dgn-runners/default.nix index 7297083..27f6f6e 100644 --- a/modules/dgn-runners/default.nix +++ b/modules/dgn-runners/default.nix @@ -293,7 +293,7 @@ in { }; }; - dgn-secrets.sources = [ ./. ]; + age-secrets.sources = [ ./. ]; services.gitea-actions-runner.instances = lib.genAttrs (builtins.genList (n: "runner${builtins.toString n}") cfg.nbRunners) diff --git a/modules/dgn-secrets.nix b/modules/dgn-secrets.nix deleted file mode 100644 index 98feed7..0000000 --- a/modules/dgn-secrets.nix +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright : -# - Tom Hubrecht 2023 -# -# Ce logiciel est un programme informatique servant à déployer des -# configurations de serveurs via NixOS. -# -# Ce logiciel est régi par la licence CeCILL soumise au droit français et -# respectant les principes de diffusion des logiciels libres. Vous pouvez -# utiliser, modifier et/ou redistribuer ce programme sous les conditions -# de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA -# sur le site "http://www.cecill.info". -# -# En contrepartie de l'accessibilité au code source et des droits de copie, -# de modification et de redistribution accordés par cette licence, il n'est -# offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, -# seule une responsabilité restreinte pèse sur l'auteur du programme, le -# titulaire des droits patrimoniaux et les concédants successifs. -# -# A cet égard l'attention de l'utilisateur est attirée sur les risques -# associés au chargement, à l'utilisation, à la modification et/ou au -# développement et à la reproduction du logiciel par l'utilisateur étant -# donné sa spécificité de logiciel libre, qui peut le rendre complexe à -# manipuler et qui le réserve donc à des développeurs et des professionnels -# avertis possédant des connaissances informatiques approfondies. Les -# utilisateurs sont donc invités à charger et tester l'adéquation du -# logiciel à leurs besoins dans des conditions permettant d'assurer la -# sécurité de leurs systèmes et ou de leurs données et, plus généralement, -# à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. -# -# Le fait que vous puissiez accéder à cet en-tête signifie que vous avez -# pris connaissance de la licence CeCILL, et que vous en avez accepté les -# termes. - -{ config, lib, ... }: - -let - inherit (lib) - mkOption - - types; - - inherit (lib.extra) getSecrets mkBaseSecrets recursiveFuse; - - cfg = config.dgn-secrets; - - optionsType = with types; - submodule ({ config, ... }: { - options = { - mode = mkOption { - type = str; - default = "0400"; - description = '' - Permissions mode of the decrypted secret in a format understood by chmod. - ''; - }; - - owner = mkOption { - type = str; - default = "0"; - description = '' - User of the decrypted secret. - ''; - }; - - group = mkOption { - type = str; - default = config.users.${config.owner}.group or "0"; - description = '' - Group of the decrypted secret. - ''; - }; - }; - }); - -in { - options.dgn-secrets = { - sources = mkOption { - type = with types; listOf path; - default = [ ]; - description = '' - List of directories containing secrets managed with agenix. - ''; - }; - - options = mkOption { - type = with types; listOf (attrsOf optionsType); - default = [ ]; - description = '' - List of attribute sets of secrets' configuration overrides. - ''; - }; - - names = mkOption { - type = with types; listOf str; - default = builtins.foldl' (acc: dir: acc ++ (getSecrets dir)) [ ] - cfg.sources; - description = '' - List of the names of the secrets. - ''; - }; - - matches = mkOption { - type = with types; attrsOf optionsType; - default = { }; - description = '' - Matches of secret names associated to options. - ''; - }; - }; - - config = { - dgn-secrets.options = builtins.concatLists (builtins.attrValues - (builtins.mapAttrs (pattern: options: - builtins.map (secret: { ${secret} = options; }) - (builtins.filter (secret: builtins.match pattern secret != null) - cfg.names)) cfg.matches)); - - age.secrets = recursiveFuse (cfg.options - ++ (builtins.map (dir: mkBaseSecrets dir (getSecrets dir)) cfg.sources)); - }; -}