diff options
Diffstat (limited to 'lib/configs.nix')
| -rw-r--r-- | lib/configs.nix | 90 |
1 files changed, 23 insertions, 67 deletions
diff --git a/lib/configs.nix b/lib/configs.nix index d7460ac..9b20897 100644 --- a/lib/configs.nix +++ b/lib/configs.nix @@ -1,81 +1,37 @@ -# this is mainly for my host/hm configurations -{ - lib, - inputs, -}: let - inherit (builtins) mapAttrs readDir; - inherit (lib) filterAttrs hasPrefix; -in rec { - mapFilterDir = dir: filter: map: let - dirs = filterAttrs filter (readDir dir); - in - mapAttrs map dirs; - - mapModules = dir: let - check = n: v: v == "directory" && !(hasPrefix "_" n); - in - mapFilterDir dir check; +inputs: { + mkNixOS = { + name, + profile, + modules ? profile.modules, + system ? profile.system, + specialArgs ? profile.specialArgs, + }: + profile.builder { + inherit specialArgs system; + modules = + ["${inputs.self}/hosts/${name}"] + ++ ( + if modules == profile.modules + then modules + else modules ++ profile.modules + ); + }; mkHMUser = { - username, - pkgs, + name, modules ? [], - extraSpecialArgs ? {}, - inputs, - dir, + pkgs ? import inputs.nixpkgs {system = "x86_64-linux";}, + extraSpecialArgs ? inputs, }: inputs.home-manager.lib.homeManagerConfiguration { - inherit pkgs; - extraSpecialArgs = inputs // extraSpecialArgs; + inherit pkgs extraSpecialArgs; modules = [ - "${dir}/${username}/home.nix" - { programs.home-manager.enable = true; } ] + ++ ["${inputs.self}/users/${name}/home.nix"] ++ modules; }; - - mapHMUsers = system: dir: let - users = import dir system inputs; - in - mapModules dir ( - username: _: - mkHMUser ({ - inherit username inputs dir; - inherit (users.${username}) extraSpecialArgs modules pkgs; - } - // users.${username}) - ); - - mkHost = { - name, - modules ? [], - specialArgs ? {}, - system ? "x86_64-linux", - inputs ? {}, - builder, - dir, - }: - builder { - inherit system; - specialArgs = inputs // specialArgs; - modules = - [ - "${dir}/${name}" - ] - ++ modules; - }; - - mapHosts = dir: let - hosts = import "${dir}" inputs; - in - mapModules dir (name: _: - mkHost ({ - inherit name dir inputs; - inherit (hosts.${name}) builder system; - } - // hosts.${name})); } |
