mirror of
https://github.com/TECHNOFAB11/disko.git
synced 2025-12-12 08:00:05 +01:00
run hooks, fix defineHookVariables
This commit is contained in:
parent
313d0e2315
commit
0e658ad7f7
1 changed files with 20 additions and 6 deletions
26
types.nix
26
types.nix
|
|
@ -120,12 +120,20 @@ rec {
|
|||
subset of config variables as a shell script snippet.
|
||||
*/
|
||||
defineHookVariables = {config, options}:
|
||||
let
|
||||
sanitizeName = lib.replaceStrings ["-"] ["_"];
|
||||
isAttrsOfSubmodule = o: o.type.name == "attrsOf" && o.type.nestedTypes.elemType.name == "submodule";
|
||||
isSerializable = n: o: !(
|
||||
lib.hasPrefix "_" n
|
||||
|| lib.hasSuffix "Hook" n
|
||||
|| isAttrsOfSubmodule o
|
||||
# TODO don't hardcode diskoLib.subType options.
|
||||
|| n == "content" || n == "partitions");
|
||||
in
|
||||
lib.toShellVars
|
||||
(lib.mapAttrs
|
||||
(n: o: o.value)
|
||||
(lib.filterAttrs diskoLib.isSerializable options));
|
||||
isSerializable = n: o: !(lib.hasPrefix "_" n || lib.hasSuffix "Hook" n || diskoLib.isAttrsOfSubmodule o);
|
||||
isAttrsOfSubmodule = o: o.type.name == "attrsOf" && o.type.nestedTypes.elemType.name == "submodule";
|
||||
(lib.mapAttrs'
|
||||
(n: o: lib.nameValuePair (sanitizeName n) o.value)
|
||||
(lib.filterAttrs isSerializable options));
|
||||
|
||||
hookMixin = { config, options,... }: {
|
||||
options = let
|
||||
|
|
@ -146,7 +154,13 @@ rec {
|
|||
internal = true;
|
||||
readOnly = true;
|
||||
type = types.functionTo types.str;
|
||||
default = {}: "";
|
||||
default = args:
|
||||
lib.concatStrings [
|
||||
(diskoLib.defineHookVariables { inherit config options; })
|
||||
config.preCreateHook
|
||||
(default args)
|
||||
config.postCreateHook
|
||||
];
|
||||
description = "Creation script";
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue