chore(hooks): enforce enable option on all home modules
This commit is contained in:
@@ -5,33 +5,52 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
let
|
||||||
options = {
|
moduleDirs = lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./.);
|
||||||
host.username = lib.mkOption {
|
dirHasEnableOption =
|
||||||
type = lib.types.str;
|
name:
|
||||||
default = config.home.username;
|
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 {
|
nixgl.wrap = lib.mkOption {
|
||||||
type = lib.types.functionTo lib.types.package;
|
type = lib.types.functionTo lib.types.package;
|
||||||
default = if config.lib ? nixGL then config.lib.nixGL.wrap else lib.id;
|
default = if config.lib ? nixGL then config.lib.nixGL.wrap else lib.id;
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
wrapApp = lib.mkOption {
|
wrapApp = lib.mkOption {
|
||||||
type = lib.types.raw;
|
type = lib.types.raw;
|
||||||
default =
|
default =
|
||||||
pkg: flags:
|
pkg: flags:
|
||||||
if config.lib ? nixGL then
|
if config.lib ? nixGL then
|
||||||
pkg.overrideAttrs (old: {
|
pkg.overrideAttrs (old: {
|
||||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
|
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
|
||||||
postInstall = (old.postInstall or "") + ''
|
postInstall = (old.postInstall or "") + ''
|
||||||
wrapProgram $out/bin/${pkg.meta.mainProgram} --add-flags "${flags}"
|
wrapProgram $out/bin/${pkg.meta.mainProgram} --add-flags "${flags}"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
pkg;
|
pkg;
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user