Skip to content

Commit

Permalink
check: set HOME to a tmp dir to avoid polluting the working dir
Browse files Browse the repository at this point in the history
pre-commit creates cache files in $HOME/.cache/pre-commit.
If $HOME is set to $PWD, we will pollute the working directory, causing
hook failures.

Previously, we would copy the source files into a nested `src` directory.
Now that Nix already provides the source files in the working directory
for us, to avoid another copy, we set $HOME to a temporary directory.
  • Loading branch information
sandydoo committed Jan 19, 2025
1 parent 4c09990 commit b24ef71
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions modules/pre-commit.nix
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,15 @@ let
run =
mkDerivation {
name = "pre-commit-run";

src = cfg.rootSrc;
buildInputs = [ cfg.gitPackage ];
nativeBuildInputs = enabledExtraPackages
++ lib.optional (config.settings.rust.check.cargoDeps != null) cargoSetupHook;
cargoDeps = config.settings.rust.check.cargoDeps;
buildPhase = ''
set +e
HOME=$PWD
# Set HOME to a temporary directory for pre-commit to create its cache files in.
HOME=$(mktemp -d)
ln -fs ${configFile} .pre-commit-config.yaml
git init -q
git add .
Expand All @@ -111,6 +111,7 @@ let
fi
exitcode=$?
git --no-pager diff --color
# Derivations must produce an output
mkdir $out
[ $? -eq 0 ] && exit $exitcode
'';
Expand Down

0 comments on commit b24ef71

Please sign in to comment.