38 lines
947 B
Nix
38 lines
947 B
Nix
|
{
|
||
|
config,
|
||
|
pkgs,
|
||
|
lib,
|
||
|
...
|
||
|
}: let
|
||
|
inherit (lib.strings) optionalString concatStringsSep;
|
||
|
inherit (lib.attrsets) mapAttrsToList;
|
||
|
|
||
|
sessionPath = optionalString (config.home.sessionPath != []) ''
|
||
|
export PATH=${concatStringsSep ":" config.home.sessionPath}:$PATH
|
||
|
'';
|
||
|
|
||
|
sessionVariables = concatStringsSep "\n" (mapAttrsToList (key: value: ''
|
||
|
export ${key}="${toString value}"
|
||
|
'')
|
||
|
config.home.sessionVariables);
|
||
|
|
||
|
apply-hm-env = pkgs.writeShellScript "apply-hm-env" ''
|
||
|
${sessionPath}
|
||
|
${sessionVariables}
|
||
|
${config.home.sessionVariablesExtra}
|
||
|
exec "$@"
|
||
|
'';
|
||
|
|
||
|
# runs processes as systemd transient services
|
||
|
run-as-service = pkgs.writeShellScriptBin "run-as-service" ''
|
||
|
exec ${pkgs.systemd}/bin/systemd-run \
|
||
|
--slice=app-manual.slice \
|
||
|
--property=ExitType=cgroup \
|
||
|
--user \
|
||
|
--wait \
|
||
|
bash -lc "exec ${apply-hm-env} $@"
|
||
|
'';
|
||
|
in {
|
||
|
home.packages = [run-as-service];
|
||
|
}
|