diff options
Diffstat (limited to 'lib/lib.nix')
| -rw-r--r-- | lib/lib.nix | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/lib.nix b/lib/lib.nix new file mode 100644 index 0000000..5310a6d --- /dev/null +++ b/lib/lib.nix @@ -0,0 +1,52 @@ +let + optionalAttrs = cond: as: + if cond + then as + else {}; + + mkIfNull = cond: as: + if cond + then as + else null; + + globimport = { + lazyImport = path: optionalAttrs (builtins.pathExists path) (import path); + + getSubdirs = dir: + builtins.filter (x: x != null) + (builtins.attrValues + (builtins.mapAttrs + (name: value: mkIfNull (value == "directory") name) + (builtins.readDir dir))); + + getSubfiles = dir: + builtins.filter (x: x != null) + (builtins.attrValues + (builtins.mapAttrs + (name: value: mkIfNull (value == "file") name) + (builtins.readDir dir))); + }; + + options = { + lib, + config, + }: let + inherit (lib) mkOption mkEnableOption; + mkProgramOption' = name: extraOpts: + { + enable = mkEnableOption "whether to enable ${name}"; + theme = mkOption { + type = lib.types.enum ["catppuccin" "adwaita"]; + default = config.collinux.terminal.theme; + }; + } + // extraOpts; + + mkProgramOption = name: mkProgramOption' name {}; + in { + inherit mkProgramOption' mkProgramOption; + }; +in { + inherit globimport; + inherit options; +} |
