diff options
| author | seth <[email protected]> | 2023-05-25 14:48:53 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-05-25 14:48:53 -0400 |
| commit | e0929cdc52e96393d734ddc669cb2e7900eb581a (patch) | |
| tree | 322604e26a8ee1d1abca1760a563bf6ec69c31e1 /lib/configs.nix | |
| parent | b7b2ee0e077cb5f69efd3b3d665e73c6ffefd941 (diff) | |
lib: overhaul configs + add ci helpers
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})); } |
