29 lines
676 B
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);
|
|
}
|