Add programs.ssh.settings as a freeform DAG for OpenSSH client configuration blocks. Render Host and Match blocks directly from the new settings option while preserving ordering support. Render known ssh_config comma-list directives from Nix lists as single comma-separated lines and known space-list directives as single whitespace-separated lines. This keeps directives like KexAlgorithms, Ciphers, MACs, HostKeyAlgorithms, ProxyJump, SendEnv, GlobalKnownHostsFile, and PermitRemoteOpen from being emitted as duplicate directives where OpenSSH may only use the first value. Migrate legacy matchBlocks into settings, keep root SSH option redirects pointed at the new option names, and hide the deprecated matchBlocks option from generated docs. Update SSH tests, docs references, and news coverage for the new option.
3.6 KiB
Release 20.03
The 20.03 release branch became the stable branch in April, 2020.
Highlights
This release has the following notable changes:
-
Assigning a list to the home.file, xdg.dataFile options is now deprecated and will produce a warning message if used. Specifically, if your configuration currently contains something like
home.file = [ { target = ".config/foo.txt"; text = "bar"; } ]then it should be updated to instead use the equivalent attribute set form
home.file = { ".config/foo.txt".text = "bar"; }Support for the list form will be removed in Home Manager version 20.09.
-
The
libfunction attribute given to modules is now enriched with an attributehmcontaining extra library functions specific for Home Manager. More specifically,lib.hmis now the same asconfig.liband should be the preferred choice since it is more robust.Therefore, if your configuration makes use of, for example,
config.lib.dagto create activation script blocks, it is recommended to change tolib.hm.dag.Note, in the unlikely case that you are
-
using Home Manager's NixOS or nix-darwin module,
-
have made your own Home Manager module containing an top-level option named
configoroptions, and -
assign to this option in your system configuration inside a plain attribute set, i.e., without a function argument,
then you must update your configuration to perform the option assignment inside a
configattribute. For example, instead ofhome-manager.users.jane = { config = "foo"; };use
home-manager.users.jane = { config.config = "foo"; }; -
-
The
services.comptonmodule has been deprecated and instead the new moduleservices.picomshould be used. This is because Nixpkgs no longer packages compton, and instead packages the (mostly) compatible fork called picom. -
The list form of the
programs.ssh.matchBlocksoption has been deprecated and configurations requiring match blocks in a defined order should switch to using DAG entries instead. For example, a configurationprograms.ssh.matchBlocks = [ { host = "alpha.foo.com"; user = "jd"; } { host = "*.foo.com"; user = "john.doe"; } ];can be expressed along the lines of
programs.ssh.matchBlocks = { "*.example.com" = { user = "john.doe"; } "alpha.example.com" = lib.hm.dag.entryBefore ["*.example.com"] { user = "jd"; } };Support for the list form will be removed in Home Manager version 20.09.
State Version Changes
The state version in this release includes the changes below. These
changes are only active if the home.stateVersion option is set to
"20.03" or later.
-
The programs.zsh.history.path option is no longer prepended by
$HOME, which allows specifying absolute paths, for example, using the xdg module. Also, the default value is fixed to$HOME/.zsh_historyanddotDirpath is not prepended to it anymore. -
The newsboat module will now default in displaying
queriesbeforeurlsin its main window. This makes sense in the case when one has a lot of URLs and few queries.