This adds a new temp-dir setting for controlling the temporary directory without having to change the TMPDIR env var. This can be used to e.g. use a path on a case-sensitive store on macOS for temporary files without changing the TMPDIR var used by interactive shells or commands invoked with `nix run`. This also stops unsetting `TMPDIR` on darwin when the env var value starts with `/var/folders/`, preferring instead to just do the check when reading `TMPDIR`. This way the inherited `TMPDIR` env var is preserved for child processes (such as interactive shells). As a side effect this changes the behavior of `nix-build -o ''` to act like `nix-build --no-out-link` instead of failing with an error caused by trying to create a symlink at the cwd. Fixes: https://git.lix.systems/lix-project/lix/issues/253 Fixes: https://git.lix.systems/lix-project/lix/issues/112 Change-Id: I9ee826323f2deca62854715a77ca7a373a948a29
16 lines
638 B
Markdown
16 lines
638 B
Markdown
---
|
|
synopsis: Add a `temp-dir` setting to set the temporary directory location
|
|
issues: [7731, 8995, fj#112, fj#253]
|
|
cls: [2103]
|
|
category: Improvements
|
|
credits: lilyball
|
|
---
|
|
|
|
[`temp-dir`](@docroot@/command-ref/conf-file.md#conf-temp-dir) can now be set in the Nix
|
|
configuration to change the temporary directory. This can be used to relocate all temporary files
|
|
to another filesystem without affecting the `TMPDIR` env var inherited by interactive
|
|
`nix-shell`/`nix shell` shells or `nix run` commands.
|
|
|
|
Also on macOS, the `TMPDIR` env var is no longer unset for interactive shells when pointing
|
|
to a per-session `/var/folders/` directory.
|