mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
44 lines
896 B
Nix
44 lines
896 B
Nix
![]() |
{
|
||
|
lib,
|
||
|
nix,
|
||
|
runCommand,
|
||
|
}:
|
||
|
let
|
||
|
nixpkgs =
|
||
|
with lib.fileset;
|
||
|
toSource {
|
||
|
root = ../.;
|
||
|
fileset = (fileFilter (file: file.hasExt "nix") ../.);
|
||
|
};
|
||
|
in
|
||
|
runCommand "nix-parse-${nix.name}"
|
||
|
{
|
||
|
nativeBuildInputs = [
|
||
|
nix
|
||
|
];
|
||
|
}
|
||
|
''
|
||
|
export NIX_STORE_DIR=$TMPDIR/store
|
||
|
export NIX_STATE_DIR=$TMPDIR/state
|
||
|
|
||
|
cd "${nixpkgs}"
|
||
|
|
||
|
# Passes all files to nix-instantiate at once.
|
||
|
# Much faster, but will only show first error.
|
||
|
parse-all() {
|
||
|
find . -type f -iname '*.nix' | xargs -P $(nproc) nix-instantiate --parse >/dev/null 2>/dev/null
|
||
|
}
|
||
|
|
||
|
# Passes each file separately to nix-instantiate with -n1.
|
||
|
# Much slower, but will show all errors.
|
||
|
parse-each() {
|
||
|
find . -type f -iname '*.nix' | xargs -n1 -P $(nproc) nix-instantiate --parse >/dev/null
|
||
|
}
|
||
|
|
||
|
if ! parse-all; then
|
||
|
parse-each
|
||
|
fi
|
||
|
|
||
|
touch $out
|
||
|
''
|