style: Switch to nixfmt from nixpkgs-fmt
Most of the ecosystem has moved to this formatter, and many people configured their editors to autoformat it with this formatter. Closes: https://git.snix.dev/snix/snix/issues/62 Change-Id: Icf39e7836c91fc2ae49fbe22a40a639105bfb0bd Reviewed-on: https://cl.snix.dev/c/snix/+/30671 Reviewed-by: Florian Klink <flokli@flokli.de> Tested-by: besadii Autosubmit: Ilan Joselevich <personal@ilanjoselevich.com>
This commit is contained in:
parent
3443e6bd08
commit
91d02d8c84
136 changed files with 39952 additions and 11007 deletions
|
|
@ -1,35 +1,55 @@
|
|||
{ depot, lib, pkgs, ... }:
|
||||
{
|
||||
depot,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib) fix pipe mapAttrsToList isAttrs concatLines isString isDerivation isPath;
|
||||
inherit (lib)
|
||||
fix
|
||||
pipe
|
||||
mapAttrsToList
|
||||
isAttrs
|
||||
concatLines
|
||||
isString
|
||||
isDerivation
|
||||
isPath
|
||||
;
|
||||
inherit (depot.nix.utils) isReferencablePath;
|
||||
|
||||
esc = s: lib.escapeShellArg /* ensure paths import into store */ "${s}";
|
||||
esc =
|
||||
s:
|
||||
lib.escapeShellArg # ensure paths import into store
|
||||
"${s}";
|
||||
|
||||
writeTreeAtPath = path: tree:
|
||||
writeTreeAtPath =
|
||||
path: tree:
|
||||
''
|
||||
mkdir -p "$out/"${esc path}
|
||||
''
|
||||
+ pipe tree [
|
||||
(mapAttrsToList (k: v:
|
||||
(mapAttrsToList (
|
||||
k: v:
|
||||
if isReferencablePath v then
|
||||
"cp -R --reflink=auto ${esc "${v}"} \"$out/\"${esc path}/${esc k}"
|
||||
else if lib.isAttrs v then
|
||||
writeTreeAtPath (path + "/" + k) v
|
||||
else
|
||||
throw "invalid type (expected path, derivation, string with context, or attrs)"))
|
||||
throw "invalid type (expected path, derivation, string with context, or attrs)"
|
||||
))
|
||||
concatLines
|
||||
];
|
||||
|
||||
/* Create a directory tree specified by a Nix attribute set structure.
|
||||
/*
|
||||
Create a directory tree specified by a Nix attribute set structure.
|
||||
|
||||
Each value in `tree` should either be a file, a directory, or another tree
|
||||
attribute set. Those paths will be written to a directory tree
|
||||
corresponding to the structure of the attribute set.
|
||||
Each value in `tree` should either be a file, a directory, or another tree
|
||||
attribute set. Those paths will be written to a directory tree
|
||||
corresponding to the structure of the attribute set.
|
||||
|
||||
Type: string -> attrSet -> derivation
|
||||
Type: string -> attrSet -> derivation
|
||||
*/
|
||||
writeTree = name: tree:
|
||||
pkgs.runCommandLocal name { } (writeTreeAtPath "" tree);
|
||||
writeTree = name: tree: pkgs.runCommandLocal name { } (writeTreeAtPath "" tree);
|
||||
in
|
||||
|
||||
# __functor trick so readTree can add the tests attribute
|
||||
|
|
|
|||
|
|
@ -1,93 +1,102 @@
|
|||
{ depot, pkgs, lib, ... }:
|
||||
{
|
||||
depot,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (pkgs) runCommand writeText writeTextFile;
|
||||
inherit (depot.nix) writeTree;
|
||||
|
||||
checkTree = name: tree: expected:
|
||||
checkTree =
|
||||
name: tree: expected:
|
||||
runCommand "writeTree-test-${name}"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.buildPackages.lr ];
|
||||
passAsFile = [ "expected" ];
|
||||
inherit expected;
|
||||
} ''
|
||||
actualPath="$NIX_BUILD_TOP/actual"
|
||||
cd ${lib.escapeShellArg (writeTree name tree)}
|
||||
lr . > "$actualPath"
|
||||
diff -u "$expectedPath" "$actualPath" | tee "$out"
|
||||
'';
|
||||
}
|
||||
''
|
||||
actualPath="$NIX_BUILD_TOP/actual"
|
||||
cd ${lib.escapeShellArg (writeTree name tree)}
|
||||
lr . > "$actualPath"
|
||||
diff -u "$expectedPath" "$actualPath" | tee "$out"
|
||||
'';
|
||||
in
|
||||
|
||||
depot.nix.readTree.drvTargets {
|
||||
empty = checkTree "empty" { }
|
||||
''
|
||||
.
|
||||
'';
|
||||
empty = checkTree "empty" { } ''
|
||||
.
|
||||
'';
|
||||
|
||||
simple-paths = checkTree "simple"
|
||||
{
|
||||
writeTree = {
|
||||
meta = {
|
||||
"owners.txt" = ../OWNERS;
|
||||
simple-paths =
|
||||
checkTree "simple"
|
||||
{
|
||||
writeTree = {
|
||||
meta = {
|
||||
"owners.txt" = ../OWNERS;
|
||||
};
|
||||
"code.nix" = ../default.nix;
|
||||
all-tests = ./.;
|
||||
nested.dirs.eval-time = builtins.toFile "owothia" ''
|
||||
hold me owo
|
||||
'';
|
||||
};
|
||||
"code.nix" = ../default.nix;
|
||||
all-tests = ./.;
|
||||
nested.dirs.eval-time = builtins.toFile "owothia" ''
|
||||
hold me owo
|
||||
'';
|
||||
};
|
||||
}
|
||||
''
|
||||
.
|
||||
./writeTree
|
||||
./writeTree/all-tests
|
||||
./writeTree/all-tests/default.nix
|
||||
./writeTree/code.nix
|
||||
./writeTree/meta
|
||||
./writeTree/meta/owners.txt
|
||||
./writeTree/nested
|
||||
./writeTree/nested/dirs
|
||||
./writeTree/nested/dirs/eval-time
|
||||
'';
|
||||
|
||||
empty-dirs = checkTree "empty-dirs"
|
||||
{
|
||||
this.dir.is.empty = { };
|
||||
so.is.this.one = { };
|
||||
}
|
||||
''
|
||||
.
|
||||
./so
|
||||
./so/is
|
||||
./so/is/this
|
||||
./so/is/this/one
|
||||
./this
|
||||
./this/dir
|
||||
./this/dir/is
|
||||
./this/dir/is/empty
|
||||
'';
|
||||
|
||||
drvs = checkTree "drvs"
|
||||
{
|
||||
file-drv = writeText "road.txt" ''
|
||||
Any road followed precisely to its end leads precisely nowhere.
|
||||
}
|
||||
''
|
||||
.
|
||||
./writeTree
|
||||
./writeTree/all-tests
|
||||
./writeTree/all-tests/default.nix
|
||||
./writeTree/code.nix
|
||||
./writeTree/meta
|
||||
./writeTree/meta/owners.txt
|
||||
./writeTree/nested
|
||||
./writeTree/nested/dirs
|
||||
./writeTree/nested/dirs/eval-time
|
||||
'';
|
||||
dir-drv = writeTextFile {
|
||||
name = "dir-of-text";
|
||||
destination = "/text/in/more/dirs.txt";
|
||||
text = ''
|
||||
Climb the mountain just a little bit to test that it’s a mountain.
|
||||
From the top of the mountain, you cannot see the mountain.
|
||||
|
||||
empty-dirs =
|
||||
checkTree "empty-dirs"
|
||||
{
|
||||
this.dir.is.empty = { };
|
||||
so.is.this.one = { };
|
||||
}
|
||||
''
|
||||
.
|
||||
./so
|
||||
./so/is
|
||||
./so/is/this
|
||||
./so/is/this/one
|
||||
./this
|
||||
./this/dir
|
||||
./this/dir/is
|
||||
./this/dir/is/empty
|
||||
'';
|
||||
|
||||
drvs =
|
||||
checkTree "drvs"
|
||||
{
|
||||
file-drv = writeText "road.txt" ''
|
||||
Any road followed precisely to its end leads precisely nowhere.
|
||||
'';
|
||||
};
|
||||
}
|
||||
''
|
||||
.
|
||||
./dir-drv
|
||||
./dir-drv/text
|
||||
./dir-drv/text/in
|
||||
./dir-drv/text/in/more
|
||||
./dir-drv/text/in/more/dirs.txt
|
||||
./file-drv
|
||||
'';
|
||||
dir-drv = writeTextFile {
|
||||
name = "dir-of-text";
|
||||
destination = "/text/in/more/dirs.txt";
|
||||
text = ''
|
||||
Climb the mountain just a little bit to test that it’s a mountain.
|
||||
From the top of the mountain, you cannot see the mountain.
|
||||
'';
|
||||
};
|
||||
}
|
||||
''
|
||||
.
|
||||
./dir-drv
|
||||
./dir-drv/text
|
||||
./dir-drv/text/in
|
||||
./dir-drv/text/in/more
|
||||
./dir-drv/text/in/more/dirs.txt
|
||||
./file-drv
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue