diff --git a/hosts/default.nix b/hosts/default.nix index 83b61ee..32d7c0e 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -24,13 +24,17 @@ let ../secrets/age.nix inputs.maomaowm.hmModules.maomaowm ] ++ (builtins.attrValues self.homeManagerModules); -in -{ - flake = - let - host = "eden-inspiron"; - user = "eden"; - in + + mkHost = + { + host, + user, + extraOSModules ? [ ], + extraOSArgs ? { }, + extraHomeModules ? [ ], + extraHomeArgs ? { }, + ... + }: { nixosConfigurations.${host} = nixpkgs.lib.nixosSystem { specialArgs = { @@ -41,10 +45,8 @@ in host user ; - }; - modules = [ - ./inspiron/os.nix - ] ++ sharedOSModules; + } // extraOSArgs; + modules = extraOSModules ++ sharedOSModules; }; homeConfigurations."${user}@${host}" = inputs.home-manager.lib.homeManagerConfiguration { @@ -56,12 +58,22 @@ in host user ; - nixosVersion = "unstable"; - homeManagerVersion = "master"; - }; - modules = [ - ./inspiron/home.nix - ] ++ sharedHomeModules; + } // extraHomeArgs; + modules = extraHomeModules ++ sharedHomeModules; }; }; + +in +{ + flake = import ./hosts.nix |> map mkHost |> builtins.foldl' (x: y: x // y) { }; + # flake = mkHost { + # host = "eden-inspiron"; + # user = "eden"; + # extraOSModules = [ ./inspiron/os.nix ]; + # extraHomeModules = [ ./inspiron/home.nix ]; + # extraHomeArgs = { + # nixosVersion = "unstable"; + # homeManagerVersion = "master"; + # }; + # }; } diff --git a/hosts/hosts.nix b/hosts/hosts.nix new file mode 100644 index 0000000..d9ac175 --- /dev/null +++ b/hosts/hosts.nix @@ -0,0 +1,13 @@ +[ + { + host = "eden-inspiron"; + user = "eden"; + extraOSModules = [ ./inspiron/os.nix ]; + extraHomeModules = [ ./inspiron/home.nix ]; + extraHomeArgs = { + nixosVersion = "unstable"; + homeManagerVersion = "master"; + }; + publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqbqHz5O4f6nBoki57c6hekVqUiO4hvSb9k771i61YS"; + } +] diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 3e4b89d..f96b21f 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -1,30 +1,18 @@ let eden = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGXeMZ+CkyITSuDSbt4T9uglVJvt+c75X4QPiX8iCFbx"; - eden-inspiron = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqbqHz5O4f6nBoki57c6hekVqUiO4hvSb9k771i61YS"; + publicKeys = [ eden ] ++ (map (host: host.publicKey) (import ../hosts/hosts.nix)); + secrets = [ + "siliconflow_token" + "gemini_token" + "deepseek_token" + "zjuchat_token" + "tavily_token" + "zjuconnect_password" + ]; in -{ - "siliconflow_token.age".publicKeys = [ - eden - eden-inspiron - ]; - "gemini_token.age".publicKeys = [ - eden - eden-inspiron - ]; - "deepseek_token.age".publicKeys = [ - eden - eden-inspiron - ]; - "zjuchat_token.age".publicKeys = [ - eden - eden-inspiron - ]; - "tavily_token.age".publicKeys = [ - eden - eden-inspiron - ]; - "zjuconnect_password.age".publicKeys = [ - eden - eden-inspiron - ]; -} +builtins.listToAttrs ( + map (secret: { + name = "${secret}.age"; + value = { inherit publicKeys; }; + }) secrets +)