57 lines
1.5 KiB
Nix
57 lines
1.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
moduleDirs = lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./.);
|
|
dirHasEnableOption =
|
|
name:
|
|
let
|
|
nixFiles = lib.filterAttrs (n: v: v == "regular" && lib.hasSuffix ".nix" n) (
|
|
builtins.readDir ./${name}
|
|
);
|
|
in
|
|
!(builtins.pathExists ./${name}/default.nix)
|
|
|| lib.any (f: lib.hasInfix "mkEnableOption" (builtins.readFile ./${name}/${f})) (
|
|
builtins.attrNames nixFiles
|
|
);
|
|
withoutEnableOption = builtins.attrNames (
|
|
lib.filterAttrs (name: _: !dirHasEnableOption name) moduleDirs
|
|
);
|
|
in
|
|
lib.throwIf (withoutEnableOption != [ ])
|
|
"home modules missing enable option: ${lib.concatStringsSep ", " withoutEnableOption}"
|
|
{
|
|
options = {
|
|
host.username = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = config.home.username;
|
|
};
|
|
|
|
nixgl.wrap = lib.mkOption {
|
|
type = lib.types.functionTo lib.types.package;
|
|
default = if config.lib ? nixGL then config.lib.nixGL.wrap else lib.id;
|
|
readOnly = true;
|
|
};
|
|
|
|
wrapApp = lib.mkOption {
|
|
type = lib.types.raw;
|
|
default =
|
|
pkg: flags:
|
|
if config.lib ? nixGL then
|
|
pkg.overrideAttrs (old: {
|
|
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
|
|
postInstall = (old.postInstall or "") + ''
|
|
wrapProgram $out/bin/${pkg.meta.mainProgram} --add-flags "${flags}"
|
|
'';
|
|
})
|
|
else
|
|
pkg;
|
|
readOnly = true;
|
|
};
|
|
};
|
|
}
|