at v192 7.7 kB view raw
1{ config, lib, options, ... }: 2 3with lib; 4 5let 6 7 alias = from: to: rename { 8 inherit from to; 9 name = "Alias"; 10 use = id; 11 define = id; 12 visible = true; 13 }; 14 15 # warn option was renamed 16 obsolete = from: to: rename { 17 inherit from to; 18 name = "Obsolete name"; 19 use = x: builtins.trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'." x; 20 define = x: builtins.trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'." x; 21 }; 22 23 # abort if deprecated option is used 24 deprecated = from: to: rename { 25 inherit from to; 26 name = "Deprecated name"; 27 use = x: abort "Deprecated option `${showOption from}' is used. It was renamed to `${showOption to}'."; 28 define = x: abort "Deprecated option `${showOption from}' is used. It was renamed to `${showOption to}'."; 29 }; 30 31 showOption = concatStringsSep "."; 32 33 zipModules = list: 34 zipAttrsWith (n: v: 35 if tail v != [] then 36 if all (o: isAttrs o && o ? _type) v then mkMerge v 37 else if n == "_type" then head v 38 else if n == "warnings" then concatLists v 39 else if n == "description" || n == "apply" then 40 abort "Cannot rename an option to multiple options." 41 else zipModules v 42 else head v 43 ) list; 44 45 rename = { from, to, name, use, define, visible ? false }: 46 let 47 setTo = setAttrByPath to; 48 setFrom = setAttrByPath from; 49 toOf = attrByPath to 50 (abort "Renaming error: option `${showOption to}' does not exists."); 51 fromOf = attrByPath from 52 (abort "Internal error: option `${showOption from}' should be declared."); 53 in 54 [ { options = setFrom (mkOption { 55 description = "${name} of <option>${showOption to}</option>."; 56 apply = x: use (toOf config); 57 inherit visible; 58 }); 59 60 config = setTo (mkAliasAndWrapDefinitions define (fromOf options)); 61 } 62 ]; 63 64 obsolete' = option: singleton 65 { options = setAttrByPath option (mkOption { 66 default = null; 67 visible = false; 68 }); 69 config.warnings = optional (getAttrFromPath option config != null) 70 "The option `${showOption option}' defined in your configuration no longer has any effect; please remove it."; 71 }; 72 73in zipModules ([] 74 75++ obsolete [ "environment" "x11Packages" ] [ "environment" "systemPackages" ] 76++ obsolete [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ] 77++ obsolete [ "environment" "nix" ] [ "nix" "package" ] 78++ obsolete [ "fonts" "enableFontConfig" ] [ "fonts" "fontconfig" "enable" ] 79++ obsolete [ "fonts" "extraFonts" ] [ "fonts" "fonts" ] 80++ alias [ "users" "extraUsers" ] [ "users" "users" ] 81++ alias [ "users" "extraGroups" ] [ "users" "groups" ] 82 83++ obsolete [ "security" "extraSetuidPrograms" ] [ "security" "setuidPrograms" ] 84++ obsolete [ "networking" "enableWLAN" ] [ "networking" "wireless" "enable" ] 85++ obsolete [ "networking" "enableRT73Firmware" ] [ "networking" "enableRalinkFirmware" ] 86 87# FIXME: Remove these eventually. 88++ obsolete [ "boot" "systemd" "sockets" ] [ "systemd" "sockets" ] 89++ obsolete [ "boot" "systemd" "targets" ] [ "systemd" "targets" ] 90++ obsolete [ "boot" "systemd" "services" ] [ "systemd" "services" ] 91 92# Old Grub-related options. 93++ obsolete [ "boot" "copyKernels" ] [ "boot" "loader" "grub" "copyKernels" ] 94++ obsolete [ "boot" "extraGrubEntries" ] [ "boot" "loader" "grub" "extraEntries" ] 95++ obsolete [ "boot" "extraGrubEntriesBeforeNixos" ] [ "boot" "loader" "grub" "extraEntriesBeforeNixOS" ] 96++ obsolete [ "boot" "grubDevice" ] [ "boot" "loader" "grub" "device" ] 97++ obsolete [ "boot" "bootMount" ] [ "boot" "loader" "grub" "bootDevice" ] 98++ obsolete [ "boot" "grubSplashImage" ] [ "boot" "loader" "grub" "splashImage" ] 99 100++ obsolete [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ] 101++ obsolete [ "boot" "extraKernelParams" ] [ "boot" "kernelParams" ] 102 103# smartd 104++ obsolete [ "services" "smartd" "deviceOpts" ] [ "services" "smartd" "defaults" "monitored" ] 105 106# OpenSSH 107++ obsolete [ "services" "sshd" "ports" ] [ "services" "openssh" "ports" ] 108++ alias [ "services" "sshd" "enable" ] [ "services" "openssh" "enable" ] 109++ obsolete [ "services" "sshd" "allowSFTP" ] [ "services" "openssh" "allowSFTP" ] 110++ obsolete [ "services" "sshd" "forwardX11" ] [ "services" "openssh" "forwardX11" ] 111++ obsolete [ "services" "sshd" "gatewayPorts" ] [ "services" "openssh" "gatewayPorts" ] 112++ obsolete [ "services" "sshd" "permitRootLogin" ] [ "services" "openssh" "permitRootLogin" ] 113++ obsolete [ "services" "xserver" "startSSHAgent" ] [ "services" "xserver" "startOpenSSHAgent" ] 114++ obsolete [ "services" "xserver" "startOpenSSHAgent" ] [ "programs" "ssh" "startAgent" ] 115++ alias [ "services" "openssh" "knownHosts" ] [ "programs" "ssh" "knownHosts" ] 116 117# VirtualBox 118++ obsolete [ "services" "virtualbox" "enable" ] [ "virtualisation" "virtualbox" "guest" "enable" ] 119++ obsolete [ "services" "virtualboxGuest" "enable" ] [ "virtualisation" "virtualbox" "guest" "enable" ] 120++ obsolete [ "programs" "virtualbox" "enable" ] [ "virtualisation" "virtualbox" "host" "enable" ] 121++ obsolete [ "programs" "virtualbox" "addNetworkInterface" ] [ "virtualisation" "virtualbox" "host" "addNetworkInterface" ] 122++ obsolete [ "programs" "virtualbox" "enableHardening" ] [ "virtualisation" "virtualbox" "host" "enableHardening" ] 123++ obsolete [ "services" "virtualboxHost" "enable" ] [ "virtualisation" "virtualbox" "host" "enable" ] 124++ obsolete [ "services" "virtualboxHost" "addNetworkInterface" ] [ "virtualisation" "virtualbox" "host" "addNetworkInterface" ] 125++ obsolete [ "services" "virtualboxHost" "enableHardening" ] [ "virtualisation" "virtualbox" "host" "enableHardening" ] 126 127# Tarsnap 128++ obsolete [ "services" "tarsnap" "config" ] [ "services" "tarsnap" "archives" ] 129 130# proxy 131++ obsolete [ "nix" "proxy" ] [ "networking" "proxy" "default" ] 132 133# KDE 134++ deprecated [ "kde" "extraPackages" ] [ "environment" "systemPackages" ] 135++ obsolete [ "environment" "kdePackages" ] [ "environment" "systemPackages" ] 136 137# Multiple efi bootloaders now 138++ obsolete [ "boot" "loader" "efi" "efibootmgr" "enable" ] [ "boot" "loader" "efi" "canTouchEfiVariables" ] 139 140# NixOS environment changes 141# !!! this hardcodes bash, could we detect from config which shell is actually used? 142++ obsolete [ "environment" "promptInit" ] [ "programs" "bash" "promptInit" ] 143 144++ obsolete [ "services" "xserver" "driSupport" ] [ "hardware" "opengl" "driSupport" ] 145++ obsolete [ "services" "xserver" "driSupport32Bit" ] [ "hardware" "opengl" "driSupport32Bit" ] 146++ obsolete [ "services" "xserver" "s3tcSupport" ] [ "hardware" "opengl" "s3tcSupport" ] 147++ obsolete [ "hardware" "opengl" "videoDrivers" ] [ "services" "xserver" "videoDrivers" ] 148 149++ obsolete [ "services" "mysql55" ] [ "services" "mysql" ] 150 151++ alias [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ] 152 153# XBMC 154++ obsolete [ "services" "xserver" "windowManager" "xbmc" ] [ "services" "xserver" "desktopManager" "kodi" ] 155++ obsolete [ "services" "xserver" "desktopManager" "xbmc" ] [ "services" "xserver" "desktopManager" "kodi" ] 156 157# DNSCrypt-proxy 158++ obsolete [ "services" "dnscrypt-proxy" "port" ] [ "services" "dnscrypt-proxy" "localPort" ] 159 160# Options that are obsolete and have no replacement. 161++ obsolete' [ "boot" "loader" "grub" "bootDevice" ] 162++ obsolete' [ "boot" "initrd" "luks" "enable" ] 163++ obsolete' [ "programs" "bash" "enable" ] 164++ obsolete' [ "services" "samba" "defaultShare" ] 165++ obsolete' [ "services" "syslog-ng" "serviceName" ] 166++ obsolete' [ "services" "syslog-ng" "listenToJournal" ] 167++ obsolete' [ "ec2" "metadata" ] 168++ obsolete' [ "services" "openvpn" "enable" ] 169 170)