moved disko needed configuration to disko.nix
This commit is contained in:
		
							parent
							
								
									7979b4ed17
								
							
						
					
					
						commit
						a68f81cf3b
					
				
					 2 changed files with 39 additions and 29 deletions
				
			
		|  | @ -20,6 +20,8 @@ | ||||||
|       disk: lib.attrsets.nameValuePair (hashDisk disk) disk |       disk: lib.attrsets.nameValuePair (hashDisk disk) disk | ||||||
|     ) |     ) | ||||||
|     config.host.storage.pool.cache; |     config.host.storage.pool.cache; | ||||||
|  | 
 | ||||||
|  |   datasets = config.host.storage.pool.datasets // config.host.storage.pool.extraDatasets; | ||||||
| in { | in { | ||||||
|   options.host.storage = { |   options.host.storage = { | ||||||
|     enable = lib.mkEnableOption "are we going create zfs disks with disko on this device"; |     enable = lib.mkEnableOption "are we going create zfs disks with disko on this device"; | ||||||
|  | @ -63,6 +65,39 @@ in { | ||||||
|         description = "list of drives that are going to be used as cache"; |         description = "list of drives that are going to be used as cache"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  |       # Default datasets that are needed to make a functioning system | ||||||
|  |       datasets = lib.mkOption { | ||||||
|  |         type = lib.types.attrsOf (inputs.disko.lib.subType { | ||||||
|  |           types = {inherit (inputs.disko.lib.types) zfs_fs zfs_volume;}; | ||||||
|  |         }); | ||||||
|  |         default = { | ||||||
|  |           "local" = { | ||||||
|  |             type = "zfs_fs"; | ||||||
|  |             options.canmount = "off"; | ||||||
|  |           }; | ||||||
|  |           # nix directory needs to be available pre persist and doesn't need to be snapshotted or backed up | ||||||
|  |           "local/system/nix" = { | ||||||
|  |             type = "zfs_fs"; | ||||||
|  |             mountpoint = "/nix"; | ||||||
|  |             options = { | ||||||
|  |               atime = "off"; | ||||||
|  |               relatime = "off"; | ||||||
|  |               canmount = "on"; | ||||||
|  |             }; | ||||||
|  |           }; | ||||||
|  |           # dataset for root that gets rolled back on every boot | ||||||
|  |           "local/system/root" = { | ||||||
|  |             type = "zfs_fs"; | ||||||
|  |             mountpoint = "/"; | ||||||
|  |             options = { | ||||||
|  |               canmount = "on"; | ||||||
|  |             }; | ||||||
|  |             postCreateHook = '' | ||||||
|  |               zfs snapshot rpool/local/system/root@blank | ||||||
|  |             ''; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|       extraDatasets = lib.mkOption { |       extraDatasets = lib.mkOption { | ||||||
|         type = lib.types.attrsOf (inputs.disko.lib.subType { |         type = lib.types.attrsOf (inputs.disko.lib.subType { | ||||||
|           types = {inherit (inputs.disko.lib.types) zfs_fs zfs_volume;}; |           types = {inherit (inputs.disko.lib.types) zfs_fs zfs_volume;}; | ||||||
|  | @ -222,13 +257,15 @@ in { | ||||||
|             ); |             ); | ||||||
| 
 | 
 | ||||||
|           datasets = lib.mkMerge [ |           datasets = lib.mkMerge [ | ||||||
|             (lib.attrsets.mapAttrs (name: value: { |             ( | ||||||
|  |               lib.attrsets.mapAttrs (name: value: { | ||||||
|                 type = value.type; |                 type = value.type; | ||||||
|                 options = value.options; |                 options = value.options; | ||||||
|                 mountpoint = value.mountpoint; |                 mountpoint = value.mountpoint; | ||||||
|                 postCreateHook = value.postCreateHook; |                 postCreateHook = value.postCreateHook; | ||||||
|               }) |               }) | ||||||
|               config.host.storage.pool.extraDatasets) |               datasets | ||||||
|  |             ) | ||||||
|           ]; |           ]; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
|  | @ -38,33 +38,6 @@ | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         host.storage.pool.extraDatasets = { |         host.storage.pool.extraDatasets = { | ||||||
|           # local datasets are for data that should be considered ephemeral |  | ||||||
|           "local" = { |  | ||||||
|             type = "zfs_fs"; |  | ||||||
|             options.canmount = "off"; |  | ||||||
|           }; |  | ||||||
|           # nix directory needs to be available pre persist and doesn't need to be snapshotted or backed up |  | ||||||
|           "local/system/nix" = { |  | ||||||
|             type = "zfs_fs"; |  | ||||||
|             mountpoint = "/nix"; |  | ||||||
|             options = { |  | ||||||
|               atime = "off"; |  | ||||||
|               relatime = "off"; |  | ||||||
|               canmount = "on"; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|           # dataset for root that gets rolled back on every boot |  | ||||||
|           "local/system/root" = { |  | ||||||
|             type = "zfs_fs"; |  | ||||||
|             mountpoint = "/"; |  | ||||||
|             options = { |  | ||||||
|               canmount = "on"; |  | ||||||
|             }; |  | ||||||
|             postCreateHook = '' |  | ||||||
|               zfs snapshot rpool/local/system/root@blank |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           # persist datasets are datasets that contain information that we would like to keep around |           # persist datasets are datasets that contain information that we would like to keep around | ||||||
|           "persist" = { |           "persist" = { | ||||||
|             type = "zfs_fs"; |             type = "zfs_fs"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue