forked from jan-leila/nix-config
		
	feat: refactored impermanence to be enableable for users on a system
This commit is contained in:
		
							parent
							
								
									337f03b4e7
								
							
						
					
					
						commit
						6d5a07e08f
					
				
					 31 changed files with 61 additions and 56 deletions
				
			
		
							
								
								
									
										31
									
								
								modules/home-manager-modules/impermanence.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								modules/home-manager-modules/impermanence.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   osConfig, | ||||
|   ... | ||||
| }: let | ||||
|   cfg = config.impermanence; | ||||
| in { | ||||
|   options.impermanence = { | ||||
|     enable = lib.mkEnableOption "impermanence for home directory"; | ||||
|   }; | ||||
| 
 | ||||
|   config = lib.mkMerge [ | ||||
|     (lib.mkIf config.impermanence.enable { | ||||
|       assertions = [ | ||||
|         { | ||||
|           assertion = osConfig.impermanence.enable; | ||||
|           message = "impermanence can not be enabled for a user when it is not enabled for a configuration"; | ||||
|         } | ||||
|       ]; | ||||
|     }) | ||||
|     (lib.mkIf osConfig.host.impermanence.enable { | ||||
|       # If impermanence is not enabled for this user but system impermanence is enabled, | ||||
|       # persist the entire home directory as fallback | ||||
|       home.persistence."/persist/home/${config.home.username}" = lib.mkIf (!cfg.enable) { | ||||
|         directories = ["."]; | ||||
|         allowOther = true; | ||||
|       }; | ||||
|     }) | ||||
|   ]; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue