EdenQwQ/hosts/default.nix
2025-03-27 22:40:24 +08:00

79 lines
1.8 KiB
Nix

{
inputs,
nixpkgs,
self,
...
}:
let
sharedOSModules = [
../os
../nix
inputs.stylix.nixosModules.stylix
inputs.niri.nixosModules.niri
inputs.maomaowm.nixosModules.maomaowm
];
sharedHomeModules = [
../home
../nix/nixpkgs.nix
inputs.nur.modules.homeManager.default
inputs.stylix.homeManagerModules.stylix
inputs.niri.homeModules.niri
inputs.nixvim.homeManagerModules.nixvim
inputs.agenix.homeManagerModules.default
../secrets/age.nix
inputs.maomaowm.hmModules.maomaowm
] ++ (builtins.attrValues self.homeManagerModules);
mkHost =
{
host,
user,
extraOSModules ? [ ],
extraOSArgs ? { },
extraHomeModules ? [ ],
extraHomeArgs ? { },
...
}:
{
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit
inputs
nixpkgs
self
host
user
;
} // extraOSArgs;
modules = extraOSModules ++ sharedOSModules;
};
homeConfigurations."${user}@${host}" = inputs.home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages."x86_64-linux";
extraSpecialArgs = {
inherit
inputs
self
host
user
;
} // 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";
# };
# };
}