diff options
author | Roman Melnikov | 2023-09-06 14:54:22 +0200 |
---|---|---|
committer | Roman Melnikov | 2023-09-12 12:00:17 +0200 |
commit | f26e888c41d28107de9dbc5b4e1553c1dfcf83db (patch) | |
tree | e3a76bfd3b13bcd2888cabfc7cd6cada32129139 /README.md | |
parent | 724463b5a94daa810abfc64a4f87faef4e00f984 (diff) |
[#201] Deduce profile directory during activation
Problem: Since https://github.com/NixOS/nix/pull/5226 nix profiles for
users are stored in 'XDG_STATE_HOME' or 'HOME' directory. However,
'deploy-rs' still expects profiles to be present in
'/nix/var/nix/profiles/per-user'. As a result, an attempt to deploy a
profile with newer nix may fail with an error about non-existing files.
Solution: Instead of deducing the profile path prior to ssh'ing and
actual activation, deduce the path to the profile during as a part of
'activate-rs' invocation.
Now if the profile path is not specified explicitly as an attribute in
profile within the deploy flake, the path to the profile is determined
based on the user to which the profile belongs and on the values of
'XDG_STATE_HOME' and 'HOME' variables.
Additionally, if the old profile directory (in
'/nix/var/nix/profiles/per-user') for a given user already exists, it is
used instead for the sake of backward compatibility.
Diffstat (limited to '')
-rw-r--r-- | README.md | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -125,8 +125,11 @@ This is the core of how `deploy-rs` was designed, any number of these can run on path = deploy-rs.lib.x86_64-linux.activate.custom pkgs.hello "./bin/hello"; # An optional path to where your profile should be installed to, this is useful if you want to use a common profile name across multiple users, but would have conflicts in your node's profile list. - # This will default to `"/nix/var/nix/profiles/$PROFILE_NAME` if `user` is root (see: generic options), and `/nix/var/nix/profiles/per-user/$USER/$PROFILE_NAME` if it is not. - profilePath = "/nix/var/nix/profiles/per-user/someuser/someprofile"; + # This will default to `"/nix/var/nix/profiles/system` if `user` is `root` and profile name is `system`, + # `/nix/var/nix/profiles/per-user/root/$PROFILE_NAME` if profile name is different. + # For non-root profiles will default to /nix/var/nix/profiles/per-user/$USER/$PROFILE_NAME if `/nix/var/nix/profiles/per-user/$USER` already exists, + # and `${XDG_STATE_HOME:-$HOME/.local/state}/nix/profiles/$PROFILE_NAME` otherwise. + profilePath = "/home/someuser/.local/state/nix/profiles/someprofile"; # ...generic options... (see lower section) } |