ooknet/home/modules/console/utility/transientServices/default.nix

33 lines
951 B
Nix

# taken from github:NotAShelf/fufexan
{ pkgs, config, lib, ... }:
let
cfg = config.homeModules.console.utility.transientServices;
apply-hm-env = pkgs.writeShellScript "apply-hm-env" ''
${lib.optionalString (config.home.sessionPath != []) ''
export PATH=${builtins.concatStringsSep ":" config.home.sessionPath}:$PATH
''}
${builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: ''
export ${k}=${toString v}
'')
config.home.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
{
config = lib.mkIf cfg.enable {
home = {
packages = [run-as-service];
};
};
}