summaryrefslogtreecommitdiff
path: root/lib/configs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/configs.nix')
-rw-r--r--lib/configs.nix90
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}));
}