allow extraFiles to contain paths
This commit is contained in:
parent
8d74fade2b
commit
1d5ebbce46
2 changed files with 15 additions and 7 deletions
|
@ -51,9 +51,11 @@ it accepts an attrset of:
|
|||
- `extraArgs` - an attrset of additional arguments passed to all entries and templates
|
||||
- `entries` - a list of all entry files to be processed
|
||||
- `templates` - a list of all template files to be applied
|
||||
- `extraFiles` - a list of attrsets of `source` and `destination`:
|
||||
- `source` - a path, if relative `$PWD` is `$src` in the `installPhase`
|
||||
- `destination` - a path, never absolute, appended to `$out` in the `installPhase`
|
||||
- `extraFiles` - a list of either:
|
||||
- a path to the source file - will be copied to `$out` in the `installPhase`
|
||||
- attrset of `source` and `destination`:
|
||||
- `source` - a path, if relative `$PWD` is `$src` in the `installPhase`
|
||||
- `destination` - a path, never absolute, appended to `$out` in the `installPhase`
|
||||
|
||||
example usage of the wrapper function:
|
||||
```nix
|
||||
|
@ -86,6 +88,7 @@ mkNteDerivation {
|
|||
];
|
||||
|
||||
extraFiles = [
|
||||
./data.txt # equivalent to { source = ./data.txt; destination = "/"; }
|
||||
{ source = ./image.png; destination = "/assets/"; }
|
||||
{ source = ./image2.png; destination = "/assets/dupa.png"; }
|
||||
{ source = "./data/*"; destination = "/assets/data/"; }
|
||||
|
|
13
nte-drv.nix
13
nte-drv.nix
|
@ -8,6 +8,7 @@ pkgs: engine: {
|
|||
extraFiles ? []
|
||||
}: let
|
||||
inherit (pkgs) lib;
|
||||
inherit (lib.attrsets) isAttrs;
|
||||
inherit (lib.lists) forEach init;
|
||||
inherit (lib.strings) concatStrings concatStringsSep match normalizePath optionalString splitString;
|
||||
in pkgs.stdenv.mkDerivation {
|
||||
|
@ -28,12 +29,16 @@ in pkgs.stdenv.mkDerivation {
|
|||
|
||||
${concatStrings (forEach extraFiles
|
||||
(extraFile: let
|
||||
isInSubdir = (match ".+/.*" extraFile.destination) != null;
|
||||
outDir = normalizePath "$out/${concatStringsSep "/" (init (splitString "/" extraFile.destination))}";
|
||||
outPath = normalizePath "$out/${extraFile.destination}";
|
||||
fileAttrs = if isAttrs extraFile
|
||||
then extraFile
|
||||
else { source = extraFile; destination = "/"; };
|
||||
|
||||
isInSubdir = (match ".+/.*" fileAttrs.destination) != null;
|
||||
outDir = normalizePath "$out/${concatStringsSep "/" (init (splitString "/" fileAttrs.destination))}";
|
||||
outPath = normalizePath "$out/${fileAttrs.destination}";
|
||||
in /*sh*/''
|
||||
${optionalString isInSubdir /*sh*/"mkdir -p ${outDir}"}
|
||||
cp -r ${extraFile.source} ${outPath}
|
||||
cp -r ${fileAttrs.source} ${outPath}
|
||||
''))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue