Add disko support #2
							
								
								
									
										34
									
								
								modules/home/utilities/impermanence.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								modules/home/utilities/impermanence.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | { lib, config, ... }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.impermanence; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.impermanence = { | ||||||
|  |     enable = mkEnableOption "Impermanence"; | ||||||
|  |     directories = mkOption { | ||||||
|  |       type = types.listOf types.str; | ||||||
|  |       default = [ ]; | ||||||
|  |       description = '' | ||||||
|  |         Directories that should be stored in persistent storage. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |     files = mkOption { | ||||||
|  |       type = types.listOf types.str; | ||||||
|  |       default = [ ]; | ||||||
|  |       description = '' | ||||||
|  |         Files that should be stored in persistent storage. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     home.persistence."/persist/home" = { | ||||||
|  |       enable = true; | ||||||
|  |       hideMounts = true; | ||||||
|  |       directories = cfg.directories; | ||||||
|  |       files = cfg.files; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										42
									
								
								modules/nixos/impermanence.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/nixos/impermanence.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | { lib, config, ... }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.impermanence; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.impermanence = { | ||||||
|  |     enable = mkEnableOption "Impermanence"; | ||||||
|  |     directories = mkOption { | ||||||
|  |       type = types.listOf types.str; | ||||||
|  |       default = [ ]; | ||||||
|  |       description = '' | ||||||
|  |         Directories that should be stored in persistent storage. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |     files = mkOption { | ||||||
|  |       type = types.listOf types.str; | ||||||
|  |       default = [ ]; | ||||||
|  |       description = '' | ||||||
|  |         Files that should be stored in persistent storage. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |     resetScript = mkOption { | ||||||
|  |       type = types.lines; | ||||||
|  |       description = '' | ||||||
|  |         Script to run on boot that resets the root partition. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     boot.initrd.postResumeCommands = mkAfter cfg.resetScript; | ||||||
|  | 
 | ||||||
|  |     environment.persistence."/persist/system" = { | ||||||
|  |       enable = true; | ||||||
|  |       hideMounts = true; | ||||||
|  |       directories = cfg.directories; | ||||||
|  |       files = cfg.files; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -23,6 +23,14 @@ in | |||||||
|         enable = true; |         enable = true; | ||||||
|         profile = "vm"; |         profile = "vm"; | ||||||
|       }; |       }; | ||||||
|  |       impermanence = { | ||||||
|  |         enable = true; | ||||||
|  |         directories = [ "/var/lib/nixos" ]; | ||||||
|  |         resetScript = '' | ||||||
|  |           # Revert to the blank state for the root directory | ||||||
|  |           zfs rollback -r tank/root@blank | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|       ssh.enable = true; |       ssh.enable = true; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user