37 lines
947 B
Nix
37 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];
|
|
}
|