<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title>AppendixE.Release Notes</title><linkrel="stylesheet"type="text/css"href="style.css"/><linkrel="stylesheet"type="text/css"href="overrides.css"/><linkrel="stylesheet"type="text/css"href="mono-blue.css"/><scriptsrc="highlight.pack.js"type="text/javascript"></script><scriptsrc="highlight.load.js"type="text/javascript"></script><metaname="generator"content="DocBook XSL Stylesheets V1.79.2"/><linkrel="home"href="index.html"title="Home Manager Manual"/><linkrel="up"href="index.html"title="Home Manager Manual"/><linkrel="prev"href="tools.html"title="AppendixD.Tools"/></head><body><divclass="navheader"><tablewidth="100%"summary="Navigation header"><tr><thcolspan="3"align="center">AppendixE.Release Notes</th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="tools.html">Prev</a></td><thwidth="60%"align="center"></th><tdwidth="20%"align="right"></td></tr></table><hr/></div><divclass="appendix"><divclass="titlepage"><div><div><h1class="title"><aid="ch-release-notes"></a>Release Notes</h1></div></div></div><divclass="toc"><dlclass="toc"><dt><spanclass="section"><ahref="release-notes.html#sec-release-21.05">E.1. Release 21.05</a></span></dt><dd><dl><dt><spanclass="section"><ahref="release-notes.html#sec-release-21.05-highlights">E.1.1. Highlights</a></span></dt><dt><spanclass="section"><ahref="release-notes.html#sec-release-21.05-state-version-changes">E.1.2. State Version Changes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.09">E.2. Release 20.09</a></span></dt><dd><dl><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.09-highlights">E.2.1. Highlights</a></span></dt><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.09-state-version-changes">E.2.2. State Version Changes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.03">E.3. Release 20.03</a></span></dt><dd><dl><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.03-highlights">E.3.1. Highlights</a></span></dt><dt><spanclass="section"><ahref="release-notes.html#sec-release-20.03-state-version-changes">E.3.2. State Version Changes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.09">E.4. Release 19.09</a></span></dt><dd><dl><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.09-highlights">E.4.1. Highlights</a></span></dt><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.09-state-version-changes">E.4.2. State Version Changes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.03">E.5. Release 19.03</a></span></dt><dd><dl><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.03-highlights">E.5.1. Highlights</a></span></dt><dt><spanclass="section"><ahref="release-notes.html#sec-release-19.03-state-version-changes">E.5.2. State Version Changes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="release-notes.html#sec-release-18.09">E.6. Release 18.09</a></span></dt></dl></div><p>This section lists the release notes for stable versions of Home Manager and the current unstable version.</p><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-21.05"></a>E.1.Release 21.05</h2></div></div></div><p>This is the current unstable branch and the information in this
section is therefore not final.</p><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-21.05-highlights"></a>E.1.1.Highlights</h3></div></div></div><p>This release has the following notable changes:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><pclass="simpara">
The <aclass="xref"href="options.html#opt-programs.mpv.package"><codeclass="option">programs.mpv.package</code></a> option has been changed to allow custom
derivations. The following configuration is now possible:
});</pre><pclass="simpara">As a result of this change, <aclass="xref"href="options.html#opt-programs.mpv.package"><codeclass="option">programs.mpv.package</code></a> is no longer the
resulting derivation. Use the newly introduced <codeclass="literal">programs.mpv.finalPackage</code>
The <aclass="xref"href="options.html#opt-programs.rofi.extraConfig"><codeclass="option">programs.rofi.extraConfig</code></a> option is now an attrset rather
than a string. To migrate, move the each line into the attrset,
removing the <codeclass="literal">rofi.</code> prefix from the keys. For example,
The <codeclass="literal">services.redshift.extraOptions</code> and <codeclass="literal">services.gammastep.extraOptions</code>
options were removed in favor of <aclass="xref"href="options.html#opt-services.redshift.settings"><codeclass="option">services.redshift.settings</code></a> and
<codeclass="literal">services.gammastep.settings</code>, that are now an attribute set rather
than a string. They also support new features not available before, for
</li></ul></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-21.05-state-version-changes"></a>E.1.2.State Version Changes</h3></div></div></div><p>The state version in this release includes the changes below. These
</li></ul></div></div></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-20.09"></a>E.2.Release 20.09</h2></div></div></div><p>The 20.09 release branch became the stable branch in late September, 2020.</p><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-20.09-highlights"></a>E.2.1.Highlights</h3></div></div></div><p>This release has the following notable changes:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem">
</li></ul></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-20.09-state-version-changes"></a>E.2.2.State Version Changes</h3></div></div></div><p>The state version in this release includes the changes below. These
changes are only active if the <codeclass="literal">home.stateVersion</code> option is set to
"20.09" or later.</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><pclass="simpara">
The options <aclass="xref"href="options.html#opt-home.homeDirectory"><codeclass="option">home.homeDirectory</code></a> and <aclass="xref"href="options.html#opt-home.username"><codeclass="option">home.username</code></a> no
longer have default values and must therefore be provided in your
configuration. Previously their values would default to the content of
the environment variables <codeclass="literal">HOME</code> and <codeclass="literal">USER</code>, respectively.
</p><pclass="simpara">Further, the options <aclass="xref"href="options.html#opt-xdg.cacheHome"><codeclass="option">xdg.cacheHome</code></a>, <aclass="xref"href="options.html#opt-xdg.configHome"><codeclass="option">xdg.configHome</code></a>,
and <aclass="xref"href="options.html#opt-xdg.dataHome"><codeclass="option">xdg.dataHome</code></a> will no longer be affected by the
<codeclass="literal">XDG_CACHE_HOME</code>, <codeclass="literal">XDG_CONFIG_HOME</code>, and <codeclass="literal">XDG_DATA_HOME</code> environment
variables. They now unconditionally default to</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: circle; "><liclass="listitem">
</li></ul></div><pclass="simpara">If you choose to switch to state version 20.09 then you must set these
options if you use non-default XDG base directory paths.</p><pclass="simpara">The initial configuration generated by</p><preclass="programlisting console">$ nix-shell '<home-manager>' -A install</pre><pclass="simpara">will automatically include these options, when necessary.</p></li><liclass="listitem">
Git’s <codeclass="literal">smtpEncryption</code> option is now set to <codeclass="literal">tls</code> only if both <aclass="xref"href="options.html#opt-accounts.email.accounts._name_.smtp.tls.enable"><codeclass="option">accounts.email.accounts.<name>.smtp.tls.enable</code></a> and <aclass="xref"href="options.html#opt-accounts.email.accounts._name_.smtp.tls.useStartTls"><codeclass="option">accounts.email.accounts.<name>.smtp.tls.useStartTls</code></a> are <codeclass="literal">true</code>. If only <aclass="xref"href="options.html#opt-accounts.email.accounts._name_.smtp.tls.enable"><codeclass="option">accounts.email.accounts.<name>.smtp.tls.enable</code></a> is <codeclass="literal">true</code>, <codeclass="literal">ssl</code> is used instead.
</li><liclass="listitem"><pclass="simpara">
The <codeclass="literal">nixpkgs</code> module no longer references <codeclass="literal"><nixpkgs></code>. Before it would do so when building the <codeclass="literal">pkgs</code> module argument. Starting with state version 20.09, the <codeclass="literal">pkgs</code> argument is instead built from the same Nixpkgs that was used to initialize the Home Manager modules. This is useful, for example, when using Home Manager within a Nix Flake. If you want to keep using <codeclass="literal"><nixpkgs></code> with state version ≥ 20.09 then add
</p><preclass="programlisting nix">_module.args.pkgsPath = <nixpkgs>;</pre><pclass="simpara">to your Home Manager configuration.</p></li><liclass="listitem"><pclass="simpara">
The options <codeclass="literal">wayland.windowManager.sway.config.bars</code> and <codeclass="literal">opt-xsession.windowManager.i3.config.bars</code> have been changed so that most of the suboptions are now nullable and default to <codeclass="literal">null</code>. The default for these two options has been changed to manually set the old defaults for each suboption. The overall effect is that if the <codeclass="literal">bars</code> options is not set, then the default remains the same. On the other hand, something like:
</p><preclass="programlisting nix">bars = [ {
command = "waybar";
} ];</pre><pclass="simpara">will now create the config:</p><preclass="literallayout">bar {
}</pre></li></ul></div></div></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-20.03"></a>E.3.Release 20.03</h2></div></div></div><p>The 20.03 release branch became the stable branch in April, 2020.</p><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-20.03-highlights"></a>E.3.1.Highlights</h3></div></div></div><p>This release has the following notable changes:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><pclass="simpara">
Assigning a list to the <aclass="xref"href="options.html#opt-home.file"><codeclass="option">home.file</code></a>, <aclass="xref"href="options.html#opt-xdg.configFile"><codeclass="option">xdg.configFile</code></a>,
and <aclass="xref"href="options.html#opt-xdg.dataFile"><codeclass="option">xdg.dataFile</code></a> options is now deprecated and will produce a
warning message if used. Specifically, if your configuration currently
contains something like
</p><preclass="programlisting nix">home.file = [
{
target = ".config/foo.txt";
text = "bar";
}
]</pre><pclass="simpara">then it should be updated to instead use the equivalent attribute set form</p><preclass="programlisting nix">home.file = {
".config/foo.txt".text = "bar";
}</pre><pclass="simpara">Support for the list form will be removed in Home Manager version
The <codeclass="literal">lib</code> function attribute given to modules is now enriched with
an attribute <codeclass="literal">hm</code> containing extra library functions specific for Home
Manager. More specifically, <codeclass="literal">lib.hm</code> is now the same as <codeclass="literal">config.lib</code>
and should be the preferred choice since it is more robust.
</p><pclass="simpara">Therefore, if your configuration makes use of, for example,
<codeclass="literal">config.lib.dag</code> to create activation script blocks, it is recommended
to change to <codeclass="literal">lib.hm.dag</code>.</p><pclass="simpara">Note, in the unlikely case that you are</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: circle; "><liclass="listitem">
using Home Manager’s NixOS or nix-darwin module,
</li><liclass="listitem">
have made your own Home Manager module containing an top-level
option named <codeclass="literal">config</code> or <codeclass="literal">options</code>, and
</li><liclass="listitem">
assign to this option in your system configuration inside a plain
attribute set, i.e., without a function argument,
</li></ul></div><pclass="simpara">then you must update your configuration to perform the option
assignment inside a <codeclass="literal">config</code> attribute. For example, instead of</p><preclass="programlisting nix">home-manager.users.jane = { config = "foo"; };</pre><pclass="simpara">use</p><preclass="programlisting nix">home-manager.users.jane = { config.config = "foo"; };</pre></li><liclass="listitem">
The <codeclass="literal">services.compton</code> module has been deprecated and instead the
new module <codeclass="literal">services.picom</code> should be used. This is because Nixpkgs no
longer packages compton, and instead packages the (mostly) compatible
fork called picom.
</li><liclass="listitem"><pclass="simpara">
The list form of the <aclass="xref"href="options.html#opt-programs.ssh.matchBlocks"><codeclass="option">programs.ssh.matchBlocks</code></a> option has
been deprecated and configurations requiring match blocks in a defined
order should switch to using DAG entries instead. For example, a
20.09.</p></li></ul></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-20.03-state-version-changes"></a>E.3.2.State Version Changes</h3></div></div></div><p>The state version in this release includes the changes below. These
changes are only active if the <codeclass="literal">home.stateVersion</code> option is set to
"20.03" or later.</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem">
The <aclass="xref"href="options.html#opt-programs.zsh.history.path"><codeclass="option">programs.zsh.history.path</code></a> option is no longer prepended
by <codeclass="literal">$HOME</code>, which allows specifying absolute paths, for example,
using the xdg module. Also, the default value is fixed to
<codeclass="literal">$HOME/.zsh_history</code> and <codeclass="literal">dotDir</code> path is not prepended to it
anymore.
</li><liclass="listitem">
The newsboat module will now default in displaying <codeclass="literal">queries</code> before <codeclass="literal">urls</code> in
its main window. This makes sense in the case when one has a lot of URLs and
</li></ul></div></div></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-19.09"></a>E.4.Release 19.09</h2></div></div></div><p>The 19.09 release branch became the stable branch in October, 2019.</p><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-19.09-highlights"></a>E.4.1.Highlights</h3></div></div></div><p>This release has the following notable changes:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem">
</li></ul></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-19.09-state-version-changes"></a>E.4.2.State Version Changes</h3></div></div></div><p>The state version in this release includes the changes below. These
changes are only active if the <codeclass="literal">home.stateVersion</code> option is set to
"19.09" or later.</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem">
The <aclass="xref"href="options.html#opt-programs.firefox.package"><codeclass="option">programs.firefox.package</code></a> option now expects a wrapped
Firefox package and defaults to <codeclass="literal">pkgs.firefox</code>.
</li><liclass="listitem">
The options <aclass="xref"href="options.html#opt-home.keyboard.layout"><codeclass="option">home.keyboard.layout</code></a> and
<aclass="xref"href="options.html#opt-home.keyboard.variant"><codeclass="option">home.keyboard.variant</code></a> now default to <codeclass="literal">null</code>, which indicates
</li></ul></div></div></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-19.03"></a>E.5.Release 19.03</h2></div></div></div><p>The 19.03 release branch became the stable branch in April, 2019.</p><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-19.03-highlights"></a>E.5.1.Highlights</h3></div></div></div><p>This release has the following notable changes:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><pclass="simpara">
The <aclass="xref"href="options.html#opt-home.file._name_.source"><codeclass="option">home.file.<name>.source</code></a> option now allows source files to be
hidden, that is, having a name starting with the <codeclass="literal">.</code> character. It
also allows the source file name to contain characters not typically
allowed for Nix store paths. For example, your configuration can now
contain things such as
</p><preclass="programlisting nix">home.file."my file".source = ./. + "/file with spaces!";</pre></li><liclass="listitem"><pclass="simpara">
The type used for the systemd unit options under
<aclass="xref"href="options.html#opt-systemd.user.services"><codeclass="option">systemd.user.services</code></a>, <aclass="xref"href="options.html#opt-systemd.user.sockets"><codeclass="option">systemd.user.sockets</code></a>, etc. has
been changed to offer more robust merging of configurations. If you
don’t override values within systemd units then you are not affected
by this change. Unfortunately, if you do override unit values you may
encounter errors.
</p><pclass="simpara">In particular, if you get an error saying that a “unique option” is
function. For example,</p><preclass="programlisting nix">systemd.user.services.foo.Service.ExecStart = "/foo/bar";</pre><pclass="simpara">becomes</p><preclass="programlisting nix">systemd.user.services.foo.Service.ExecStart = lib.mkForce "/foo/bar";</pre><pclass="simpara">We had to make this change because the old merging was causing too
many confusing situations for people.</p></li></ul></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="sec-release-19.03-state-version-changes"></a>E.5.2.State Version Changes</h3></div></div></div><p>The state version in this release includes the changes below. These
</li></ul></div></div></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="sec-release-18.09"></a>E.6.Release 18.09</h2></div></div></div><p>The 18.09 release branch became the stable branch in September, 2018.</p></div></div><divclass="navfooter"><hr/><tablewidth="100%"summary="Navigation footer"><tr><tdwidth="40%"align="left"><aaccesskey="p"href="tools.html">Prev</a></td><tdwidth="20%"align="center"></td><tdwidth="40%"align="right"></td></tr><tr><tdwidth="40%"align="left"valign="top">AppendixD.Tools</td><tdwidth="20%"align="center"><aaccesskey="h"href="index.html">Home</a></td><tdwidth="40%"align="right"valign="top"></td></tr></table></div></body></html>