rename.nix: Don't use splitString
It's very slow.
This commit is contained in:
parent
8f4c5b05d5
commit
b218c02a3c
1 changed files with 57 additions and 58 deletions
|
@ -4,28 +4,29 @@ with pkgs.lib;
|
|||
|
||||
let
|
||||
|
||||
alias = from: to: {
|
||||
alias = from: to: rename {
|
||||
inherit from to;
|
||||
name = "Alias";
|
||||
msg.use = x: x;
|
||||
msg.define = x: x;
|
||||
use = id;
|
||||
define = id;
|
||||
};
|
||||
|
||||
obsolete = from: to: {
|
||||
obsolete = from: to: rename {
|
||||
inherit from to;
|
||||
name = "Obsolete name";
|
||||
msg.use = x:
|
||||
builtins.trace "Obsolete option `${from}' is used instead of `${to}'." x;
|
||||
msg.define = x:
|
||||
builtins.trace "Obsolete option `${from}' is defined instead of `${to}'." x;
|
||||
use = x: builtins.trace "Obsolete option ${showOption from} is used instead of ${showOption to}." x;
|
||||
define = x: builtins.trace "Obsolete option ${showOption from} is defined instead of ${showOption to}." x;
|
||||
};
|
||||
|
||||
deprecated = from: to: {
|
||||
deprecated = from: to: rename {
|
||||
inherit from to;
|
||||
name = "Deprecated name";
|
||||
msg.use = x:
|
||||
abort "Deprecated option `${from}' is used instead of `${to}'.";
|
||||
msg.define = x:
|
||||
abort "Deprecated option `${from}' is defined instead of `${to}'.";
|
||||
use = x: abort "Deprecated option ${showOption from} is used instead of ${showOption to}.";
|
||||
define = x: abort "Deprecated option ${showOption from} is defined instead of ${showOption to}.";
|
||||
};
|
||||
|
||||
showOption = name: "`${concatStringsSep "." name}'";
|
||||
|
||||
zipModules = list:
|
||||
zipAttrsWith (n: v:
|
||||
if tail v != [] then
|
||||
|
@ -38,19 +39,17 @@ let
|
|||
else head v
|
||||
) list;
|
||||
|
||||
rename = statusTemplate: from: to:
|
||||
rename = { from, to, name, use, define }:
|
||||
let
|
||||
status = statusTemplate from to;
|
||||
setTo = setAttrByPath (splitString "." to);
|
||||
setFrom = setAttrByPath (splitString "." from);
|
||||
toOf = attrByPath (splitString "." to)
|
||||
(abort "Renaming error: option `${to}' does not exists.");
|
||||
fromOf = attrByPath (splitString "." from)
|
||||
(abort "Internal error: option `${from}' should be declared.");
|
||||
setTo = setAttrByPath to;
|
||||
setFrom = setAttrByPath from;
|
||||
toOf = attrByPath to
|
||||
(abort "Renaming error: option ${showOption to} does not exists.");
|
||||
fromOf = attrByPath from
|
||||
(abort "Internal error: option ${showOption from} should be declared.");
|
||||
in
|
||||
[ { options = setFrom (mkOption {
|
||||
description = "${status.name} of <option>${to}</option>.";
|
||||
apply = x: status.msg.use (toOf config);
|
||||
apply = x: use (toOf config);
|
||||
visible = false;
|
||||
});
|
||||
}
|
||||
|
@ -58,68 +57,68 @@ let
|
|||
extraConfigs =
|
||||
let externalDefs = (fromOf options).definitions; in
|
||||
if externalDefs == [] then []
|
||||
else map (def: def.value) (status.msg.define externalDefs);
|
||||
else map (def: def.value) (define externalDefs);
|
||||
});
|
||||
}
|
||||
];
|
||||
|
||||
obsolete' = option: let option' = splitString "." option; in singleton
|
||||
{ options = setAttrByPath option' (mkOption {
|
||||
obsolete' = option: singleton
|
||||
{ options = setAttrByPath option (mkOption {
|
||||
default = null;
|
||||
visible = false;
|
||||
});
|
||||
config.warnings = optional (getAttrFromPath option' config != null)
|
||||
"The option `${option}' set in your configuration no longer has any effect; please remove it.";
|
||||
config.warnings = optional (getAttrFromPath option config != null)
|
||||
"The option ${showOption option} defined in your configuration no longer has any effect; please remove it.";
|
||||
};
|
||||
|
||||
in zipModules ([]
|
||||
|
||||
# usage example:
|
||||
# ++ rename alias "services.xserver.slim.theme" "services.xserver.displayManager.slim.theme"
|
||||
++ rename obsolete "environment.extraPackages" "environment.systemPackages"
|
||||
++ rename obsolete "environment.enableBashCompletion" "programs.bash.enableCompletion"
|
||||
# ++ alias [ "services" "xserver" "slim" "theme" ] [ "services" "xserver" "displayManager" "slim" "theme" ]
|
||||
++ obsolete [ "environment" "extraPackages" ] [ "environment" "systemPackages" ]
|
||||
++ obsolete [ "environment" "enableBashCompletion" ] [ "programs" "bash" "enableCompletion" ]
|
||||
|
||||
++ rename obsolete "security.extraSetuidPrograms" "security.setuidPrograms"
|
||||
++ rename obsolete "networking.enableWLAN" "networking.wireless.enable"
|
||||
++ rename obsolete "networking.enableRT73Firmware" "networking.enableRalinkFirmware"
|
||||
++ obsolete [ "security" "extraSetuidPrograms" ] [ "security" "setuidPrograms" ]
|
||||
++ obsolete [ "networking" "enableWLAN" ] [ "networking" "wireless" "enable" ]
|
||||
++ obsolete [ "networking" "enableRT73Firmware" ] [ "networking" "enableRalinkFirmware" ]
|
||||
|
||||
# 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"
|
||||
++ obsolete [ "boot" "systemd" "sockets" ] [ "systemd" "sockets" ]
|
||||
++ obsolete [ "boot" "systemd" "targets" ] [ "systemd" "targets" ]
|
||||
++ obsolete [ "boot" "systemd" "services" ] [ "systemd" "services" ]
|
||||
|
||||
# Old Grub-related options.
|
||||
++ 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"
|
||||
++ obsolete [ "boot" "copyKernels" ] [ "boot" "loader" "grub" "copyKernels" ]
|
||||
++ obsolete [ "boot" "extraGrubEntries" ] [ "boot" "loader" "grub" "extraEntries" ]
|
||||
++ obsolete [ "boot" "extraGrubEntriesBeforeNixos" ] [ "boot" "loader" "grub" "extraEntriesBeforeNixOS" ]
|
||||
++ obsolete [ "boot" "grubDevice" ] [ "boot" "loader" "grub" "device" ]
|
||||
++ obsolete [ "boot" "bootMount" ] [ "boot" "loader" "grub" "bootDevice" ]
|
||||
++ obsolete [ "boot" "grubSplashImage" ] [ "boot" "loader" "grub" "splashImage" ]
|
||||
|
||||
++ rename obsolete "boot.initrd.extraKernelModules" "boot.initrd.kernelModules"
|
||||
++ obsolete [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ]
|
||||
|
||||
# OpenSSH
|
||||
++ rename obsolete "services.sshd.ports" "services.openssh.ports"
|
||||
++ rename alias "services.sshd.enable" "services.openssh.enable"
|
||||
++ 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"
|
||||
++ obsolete [ "services" "sshd" "ports" ] [ "services" "openssh" "ports" ]
|
||||
++ alias [ "services" "sshd" "enable" ] [ "services" "openssh" "enable" ]
|
||||
++ obsolete [ "services" "sshd" "allowSFTP" ] [ "services" "openssh" "allowSFTP" ]
|
||||
++ obsolete [ "services" "sshd" "forwardX11" ] [ "services" "openssh" "forwardX11" ]
|
||||
++ obsolete [ "services" "sshd" "gatewayPorts" ] [ "services" "openssh" "gatewayPorts" ]
|
||||
++ obsolete [ "services" "sshd" "permitRootLogin" ] [ "services" "openssh" "permitRootLogin" ]
|
||||
++ obsolete [ "services" "xserver" "startSSHAgent" ] [ "services" "xserver" "startOpenSSHAgent" ]
|
||||
|
||||
# KDE
|
||||
++ rename deprecated "kde.extraPackages" "environment.kdePackages"
|
||||
# ++ rename obsolete "environment.kdePackages" "environment.systemPackages" # !!! doesn't work!
|
||||
++ deprecated [ "kde" "extraPackages" ] [ "environment" "kdePackages" ]
|
||||
# ++ obsolete [ "environment" "kdePackages" ] [ "environment" "systemPackages" ] # !!! doesn't work!
|
||||
|
||||
# Multiple efi bootloaders now
|
||||
++ rename obsolete "boot.loader.efi.efibootmgr.enable" "boot.loader.efi.canTouchEfiVariables"
|
||||
++ obsolete [ "boot" "loader" "efi" "efibootmgr" "enable" ] [ "boot" "loader" "efi" "canTouchEfiVariables" ]
|
||||
|
||||
# NixOS environment changes
|
||||
# !!! this hardcodes bash, could we detect from config which shell is actually used?
|
||||
++ rename obsolete "environment.promptInit" "programs.bash.promptInit"
|
||||
++ obsolete [ "environment" "promptInit" ] [ "programs" "bash" "promptInit" ]
|
||||
|
||||
# Options that are obsolete and have no replacement.
|
||||
++ obsolete' "boot.loader.grub.bootDevice"
|
||||
++ obsolete' "boot.initrd.luks.enable"
|
||||
++ obsolete' [ "boot" "loader" "grub" "bootDevice" ]
|
||||
++ obsolete' [ "boot" "initrd" "luks" "enable" ]
|
||||
|
||||
) # do not add renaming after this.
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue