Set the system path to a fixed location.

This commit is contained in:
r-vdp 2023-06-12 01:23:58 +02:00
parent d5f138f939
commit ce4b4bcf8b
No known key found for this signature in database
2 changed files with 64 additions and 11 deletions

View file

@ -8,10 +8,52 @@
};
};
config = {
environment.etc."profile.d/system-manager-path.sh".source =
pkgs.writeShellScript "system-manager-path.sh" ''
export PATH=${lib.makeBinPath config.environment.systemPackages}:''${PATH}
'';
};
config =
let
pathDir = "/run/system-manager/sw";
in
{
environment.etc = {
"profile.d/system-manager-path.sh".source =
pkgs.writeText "system-manager-path.sh" ''
export PATH=${pathDir}/bin/:''${PATH}
'';
# TODO: figure out how to properly add fish support. We could start by
# looking at what NixOS and HM do to set up the fish env.
#"fish/conf.d/system-manager-path.fish".source =
# pkgs.writeTextFile {
# name = "system-manager-path.fish";
# executable = true;
# text = ''
# set -gx PATH "${pathDir}/bin/" $PATH
# '';
# };
};
systemd.services.system-manager-path = {
enable = true;
description = "";
wantedBy = [ "system-manager.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script =
let
pathDrv = pkgs.buildEnv {
name = "system-manager-path";
paths = config.environment.systemPackages;
pathsToLink = [ "/bin" ];
};
in
''
mkdir --parents $(dirname "${pathDir}")
if [ -L "${pathDir}" ]; then
unlink "${pathDir}"
fi
ln --symbolic --force "${pathDrv}" "${pathDir}"
'';
};
};
}