Nix daemon runs in a service context, usually with systemd. If the Nix daemon unit adds `[Service] CacheDirectory=nix-daemon`, it should successfully use `/var/cache/nix-daemon` automatically. Instead, it uses `/root/.cache` right now, which is really bad. By default, we add `[Service] CacheDirectory=nix` now which means that caches are moved into `/var/cache/nix`. Fixes #634. Change-Id: I854b1045bfdce8f60110aea70bda1bf6657dfd7b Signed-off-by: Raito Bezarius <raito@lix.systems>
32 lines
1.2 KiB
Markdown
32 lines
1.2 KiB
Markdown
---
|
|
synopsis: "Move /root/.cache/nix to /var/cache/nix by default"
|
|
cls: [4671]
|
|
issues: [fj#634]
|
|
category: "Breaking Changes"
|
|
credits: [raito]
|
|
---
|
|
|
|
By default, Lix attempts to locate a cache directory for its operations (such
|
|
as the narinfo cache) by checking the value of `$XDG_CACHE_DIR`.
|
|
|
|
However, since the Nix daemon is a system service, using `$XDG_CACHE_DIR` is
|
|
not typical in this context.
|
|
|
|
To address this, systemd provides a better solution. Specifically, when
|
|
`CacheDirectory=` is set in the `[Service]` section of a systemd unit, it
|
|
automatically sets the `$CACHE_DIRECTORY` environment variable and systemd will
|
|
manage that cache directory for us.
|
|
|
|
Now, our systemd unit includes `CacheDirectory=nix`, which sets the
|
|
`$CACHE_DIRECTORY` and takes precedence over `$XDG_CACHE_DIR`.
|
|
|
|
If the daemon is run under user units, systemd will automatically set
|
|
`$XDG_CACHE_DIR`.
|
|
|
|
If neither of these variables is set, Lix falls back to its default behavior.
|
|
By default, Lix will try to find a cache directory for its various operations
|
|
(e.g. narinfo cache) by looking into `$XDG_CACHE_DIR`.
|
|
|
|
In summary, what was stored in `/root/.cache/nix` is now moved to
|
|
`/var/cache/nix/nix`.
|