nix-config/lib/users/default.nix

29 lines
676 B
Nix

{ config, lib, pkgs, ... }:
with builtins;
let
userModules = let
userDir = readDir ./.;
filter = name: kind: name != "default.nix" && kind != "directory";
in lib.filterAttrs filter userDir;
import' = name:
lib.mkIf config.c3d2.users.${name}
(import (./. + "/${name}.nix") { inherit config lib pkgs; });
userNames = let f = replaceStrings [ ".nix" ] [ "" ];
in map f (attrNames userModules);
in {
options.c3d2.users = let
f = name: {
inherit name;
value = lib.mkOption {
type = lib.types.bool;
default = false;
};
};
in listToAttrs (map f userNames);
config = lib.mkMerge (map import' userNames);
}