[[sec-release-20.09]]
== Release 20.09

The 20.09 release branch became the stable branch in late September, 2020.

[[sec-release-20.09-highlights]]
=== Highlights

This release has the following notable changes:

* Nothing has happened.

[[sec-release-20.09-state-version-changes]]
=== 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.09" or later.

* The options <<opt-home.homeDirectory>> and <<opt-home.username>> 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 `HOME` and `USER`, respectively.
+
--
Further, the options <<opt-xdg.cacheHome>>, <<opt-xdg.configHome>>,
and <<opt-xdg.dataHome>> will no longer be affected by the
`XDG_CACHE_HOME`, `XDG_CONFIG_HOME`, and `XDG_DATA_HOME` environment
variables. They now unconditionally default to

- `"${config.home.homeDirectory}/.cache"`,
- `"${config.home.homeDirectory}/.config"`, and
- `"${config.home.homeDirectory}/.local/share"`.

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.

The initial configuration generated by

[source,console]
$ nix-shell '<home-manager>' -A install

will automatically include these options, when necessary.
--

* Git's `smtpEncryption` option is now set to `tls` only if both <<opt-accounts.email.accounts.\_name_.smtp.tls.enable>> and <<opt-accounts.email.accounts.\_name_.smtp.tls.useStartTls>> are `true`. If only <<opt-accounts.email.accounts.\_name_.smtp.tls.enable>> is `true`, `ssl` is used instead.

* The `nixpkgs` module no longer references `<nixpkgs>`. Before it would do so when building the `pkgs` module argument. Starting with state version 20.09, the `pkgs` 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 `<nixpkgs>` with state version ≥ 20.09 then add
+
[source,nix]
_module.args.pkgsPath = <nixpkgs>;
+
to your Home Manager configuration.

* The options `wayland.windowManager.sway.config.bars` and `opt-xsession.windowManager.i3.config.bars` have been changed so that most of the suboptions are now nullable and default to `null`. 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 `bars` options is not set, then the default remains the same. On the other hand, something like:
+
--
[source,nix]
----
bars = [ {
  command = "waybar";
} ];
----
will now create the config:
....
bar {
  swaybar_command waybar
}
....
instead of
....
bar {

  font pango:monospace 8
  mode dock
  hidden_state hide
  position bottom
  status_command /nix/store/h7s6i9q1z5fxrlyyw5ls8vqxhf5bcs5a-i3status-2.13/bin/i3status
  swaybar_command waybar
  workspace_buttons yes
  strip_workspace_numbers no
  tray_output primary
  colors {
    background #000000
    statusline #ffffff
    separator #666666
    focused_workspace #4c7899 #285577 #ffffff
    active_workspace #333333 #5f676a #ffffff
    inactive_workspace #333333 #222222 #888888
    urgent_workspace #2f343a #900000 #ffffff
    binding_mode #2f343a #900000 #ffffff
  }

}
....
--
