mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
Co-authored-by: Wolfgang Walther <walther@technowledgy.de> Co-authored-by: piegames <git@piegames.de>
46 lines
1.1 KiB
Nix
46 lines
1.1 KiB
Nix
{
|
|
lib,
|
|
nix,
|
|
runCommand,
|
|
}:
|
|
let
|
|
home-manager =
|
|
with lib.fileset;
|
|
toSource {
|
|
root = ../.;
|
|
fileset = (fileFilter (file: file.hasExt "nix") ../.);
|
|
};
|
|
parseLog = "$TMPDIR/nix-parse.log";
|
|
in
|
|
runCommand "nix-parse-${nix.name}"
|
|
{
|
|
nativeBuildInputs = [
|
|
nix
|
|
];
|
|
}
|
|
''
|
|
export NIX_STORE_DIR=$TMPDIR/store
|
|
export NIX_STATE_DIR=$TMPDIR/state
|
|
nix-store --init
|
|
|
|
cd "${home-manager}"
|
|
|
|
# This will only show the first parse error, not all of them. That's fine, because
|
|
# the other CI jobs will report in more detail. This job is about checking parsing
|
|
# across different implementations / versions, not about providing the best DX.
|
|
# Returning all parse errors requires significantly more resources.
|
|
if ! find . -type f -iname '*.nix' | xargs -P $(nproc) nix-instantiate --parse 2> "${parseLog}" > /dev/null; then
|
|
cat "${parseLog}" >&2
|
|
echo "Parse failed in nix-instantiate." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if grep "warning" "${parseLog}"; then
|
|
cat "${parseLog}" >&2
|
|
echo "Failing due to warnings in stderr" >&2
|
|
exit 1
|
|
fi
|
|
|
|
touch $out
|
|
''
|