33 lines
		
	
	
	
		
			951 B
		
	
	
	
		
			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];
 | |
|     };
 | |
|   };
 | |
| }
 |