| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  | {pkgs, options, config, ...}: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   alias = from: to: { | 
					
						
							|  |  |  |     name = "Alias"; | 
					
						
							|  |  |  |     msg.use = x: x; | 
					
						
							|  |  |  |     msg.define = x: x; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   obsolete = from: to: { | 
					
						
							|  |  |  |     name = "Obsolete name"; | 
					
						
							|  |  |  |     msg.use = x: | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |       builtins.trace "Obsolete option `${from}' is used instead of `${to}'." x; | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |     msg.define = x: | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |       builtins.trace "Obsolete option `${from}' is defined instead of `${to}'." x; | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   deprecated = from: to: { | 
					
						
							|  |  |  |     name = "Deprecated name"; | 
					
						
							|  |  |  |     msg.use = x: | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |       abort "Deprecated option `${from}' is used instead of `${to}'."; | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |     msg.define = x: | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |       abort "Deprecated option `${from}' is defined instead of `${to}'."; | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   zipModules = list: with pkgs.lib; | 
					
						
							|  |  |  |     zip (n: v: | 
					
						
							| 
									
										
										
										
											2010-10-14 18:18:38 +00:00
										 |  |  |       if tail v != [] then | 
					
						
							| 
									
										
										
										
											2013-02-21 14:43:02 -05:00
										 |  |  |         if n == "_type" then (head v) | 
					
						
							|  |  |  |         else if n == "extraConfigs" then (concatLists v) | 
					
						
							| 
									
										
										
										
											2010-10-14 18:18:38 +00:00
										 |  |  |         else if n == "description" || n == "apply" then | 
					
						
							|  |  |  |           abort "Cannot rename an option to multiple options." | 
					
						
							|  |  |  |         else zipModules v | 
					
						
							|  |  |  |       else head v | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |     ) list; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  |   rename = statusTemplate: from: to: with pkgs.lib; | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |     let | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |       status = statusTemplate from to; | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |       setTo = setAttrByPath (splitString "." to); | 
					
						
							|  |  |  |       setFrom = setAttrByPath (splitString "." from); | 
					
						
							| 
									
										
										
										
											2009-09-29 13:44:07 +00:00
										 |  |  |       toOf = attrByPath (splitString "." to) | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |         (abort "Renaming error: option `${to}' does not exists."); | 
					
						
							| 
									
										
										
										
											2009-09-29 13:44:07 +00:00
										 |  |  |       fromOf = attrByPath (splitString "." from) | 
					
						
							| 
									
										
										
										
											2010-05-07 15:14:50 +00:00
										 |  |  |         (abort "Internal error: option `${from}' should be declared."); | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |     in | 
					
						
							|  |  |  |       [{ | 
					
						
							|  |  |  |         options = setFrom (mkOption { | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |           description = "${status.name} of <option>${to}</option>."; | 
					
						
							|  |  |  |           apply = x: status.msg.use (toOf config); | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |         }); | 
					
						
							|  |  |  |       }] ++ | 
					
						
							|  |  |  |       [{ | 
					
						
							|  |  |  |         options = setTo (mkOption { | 
					
						
							| 
									
										
										
										
											2009-09-29 15:21:36 +00:00
										 |  |  |           extraConfigs = | 
					
						
							|  |  |  |             let externalDefs = (fromOf options).definitions; in | 
					
						
							|  |  |  |             if externalDefs == [] then [] | 
					
						
							|  |  |  |             else map (def: def.value) (status.msg.define externalDefs); | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  |         }); | 
					
						
							|  |  |  |       }]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in zipModules ([] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # usage example: | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | # ++ rename alias "services.xserver.slim.theme" "services.xserver.displayManager.slim.theme" | 
					
						
							|  |  |  | ++ rename obsolete "environment.extraPackages" "environment.systemPackages" | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-01 20:10:46 +00:00
										 |  |  | ++ rename obsolete "security.extraSetuidPrograms" "security.setuidPrograms" | 
					
						
							| 
									
										
										
										
											2012-03-04 17:21:14 +00:00
										 |  |  | ++ rename obsolete "networking.enableWLAN" "networking.wireless.enable" | 
					
						
							| 
									
										
										
										
											2012-08-11 14:54:43 +02:00
										 |  |  | ++ rename obsolete "networking.enableRT73Firmware" "networking.enableRalinkFirmware" | 
					
						
							| 
									
										
										
										
											2012-03-01 20:10:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-16 12:33:18 +01:00
										 |  |  | # FIXME: Remove these eventually. | 
					
						
							|  |  |  | ++ rename obsolete "boot.systemd.sockets" "systemd.sockets" | 
					
						
							|  |  |  | ++ rename obsolete "boot.systemd.targets" "systemd.targets" | 
					
						
							|  |  |  | ++ rename obsolete "boot.systemd.services" "systemd.services" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-29 09:50:38 +00:00
										 |  |  | # Old Grub-related options. | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | ++ rename obsolete "boot.copyKernels" "boot.loader.grub.copyKernels" | 
					
						
							|  |  |  | ++ rename obsolete "boot.extraGrubEntries" "boot.loader.grub.extraEntries" | 
					
						
							|  |  |  | ++ rename obsolete "boot.extraGrubEntriesBeforeNixos" "boot.loader.grub.extraEntriesBeforeNixOS" | 
					
						
							|  |  |  | ++ rename obsolete "boot.grubDevice" "boot.loader.grub.device" | 
					
						
							|  |  |  | ++ rename obsolete "boot.bootMount" "boot.loader.grub.bootDevice" | 
					
						
							|  |  |  | ++ rename obsolete "boot.grubSplashImage" "boot.loader.grub.splashImage" | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | ++ rename obsolete "boot.initrd.extraKernelModules" "boot.initrd.kernelModules" | 
					
						
							| 
									
										
										
										
											2009-12-15 14:05:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-11 17:02:49 +00:00
										 |  |  | # OpenSSH | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | ++ rename obsolete "services.sshd.ports" "services.openssh.ports" | 
					
						
							| 
									
										
										
										
											2010-12-14 11:48:07 +00:00
										 |  |  | ++ rename alias "services.sshd.enable" "services.openssh.enable" | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | ++ rename obsolete "services.sshd.allowSFTP" "services.openssh.allowSFTP" | 
					
						
							|  |  |  | ++ rename obsolete "services.sshd.forwardX11" "services.openssh.forwardX11" | 
					
						
							|  |  |  | ++ rename obsolete "services.sshd.gatewayPorts" "services.openssh.gatewayPorts" | 
					
						
							|  |  |  | ++ rename obsolete "services.sshd.permitRootLogin" "services.openssh.permitRootLogin" | 
					
						
							|  |  |  | ++ rename obsolete "services.xserver.startSSHAgent" "services.xserver.startOpenSSHAgent" | 
					
						
							| 
									
										
										
										
											2009-11-22 00:40:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-12 17:09:38 +00:00
										 |  |  | # KDE | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:15 +00:00
										 |  |  | ++ rename deprecated "kde.extraPackages" "environment.kdePackages" | 
					
						
							| 
									
										
										
										
											2010-10-14 14:57:38 +00:00
										 |  |  | # ++ rename obsolete "environment.kdePackages" "environment.systemPackages" # !!! doesn't work! | 
					
						
							| 
									
										
										
										
											2009-10-06 19:25:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-02 00:03:45 -05:00
										 |  |  | # Multiple efi bootloaders now | 
					
						
							|  |  |  | ++ rename obsolete "boot.loader.efiBootStub.efiSysMountPoint" "boot.loader.efi.efiSysMountPoint" | 
					
						
							|  |  |  | ++ rename obsolete "boot.loader.efiBootStub.efiDisk" "boot.loader.efi.efibootmgr.efiDisk" | 
					
						
							|  |  |  | ++ rename obsolete "boot.loader.efiBootStub.efiPartition" "boot.loader.efi.efibootmgr.efiPartition" | 
					
						
							|  |  |  | ++ rename obsolete "boot.loader.efiBootStub.postEfiBootMgrCommands" "boot.loader.efi.efibootmgr.postEfiBootMgrCommands" | 
					
						
							| 
									
										
										
										
											2013-02-21 12:33:54 -05:00
										 |  |  | ++ rename obsolete "boot.loader.efiBootStub.runEfibootmgr" "boot.loader.efi.canTouchEfiVariables" | 
					
						
							|  |  |  | ++ rename obsolete "boot.loader.efi.efibootmgr.enable" "boot.loader.efi.canTouchEfiVariables" | 
					
						
							| 
									
										
										
										
											2013-02-02 00:03:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-28 18:26:13 +00:00
										 |  |  | ) # do not add renaming after this. |