diff options
author | lassulus <lassulus@lassul.us> | 2018-12-01 04:20:50 +0100 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2018-12-04 23:44:06 +0100 |
commit | 140bdfdf6c87c1822e0c4ec8f497a20ad1d4cf19 (patch) | |
tree | 5fd7d7eaaa0d6423fc83d02f74e68392114e016e | |
parent | eb68146cc4848cfc0c0339c72a44a96fdeb4a1de (diff) |
populate: add derivation type
-rw-r--r-- | lib/types/populate.nix | 15 | ||||
-rw-r--r-- | pkgs/populate/default.nix | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/types/populate.nix b/lib/types/populate.nix index 2cd3267..49996f6 100644 --- a/lib/types/populate.nix +++ b/lib/types/populate.nix @@ -11,6 +11,14 @@ else throw "cannot determine type"; type = lib.types.enum known-types; }; + derivation = lib.mkOption { + apply = x: + if lib.types.str.check x + then { text = x; } + else x; + default = null; + type = lib.types.nullOr (lib.types.either lib.types.str source-types.derivation); + }; file = lib.mkOption { apply = x: if lib.types.absolute-pathname.check x @@ -47,6 +55,13 @@ }); source-types = { + derivation = lib.types.submodule { + options = { + text = lib.mkOption { + type = lib.types.str; + }; + }; + }; file = lib.types.submodule { options = { path = lib.mkOption { diff --git a/pkgs/populate/default.nix b/pkgs/populate/default.nix index 939ffb3..dcb26b9 100644 --- a/pkgs/populate/default.nix +++ b/pkgs/populate/default.nix @@ -20,6 +20,10 @@ let fi ''; + pop.derivation = target: source: shell' target /* sh */ '' + nix-build -E ${quote source.text} -o ${quote target.path} + ''; + pop.file = target: source: let configAttrs = ["useChecksum"]; config = filterAttrs (name: _: elem name configAttrs) source; |