# Release 20.03 {#sec-release-20.03} The 20.03 release branch became the stable branch in April, 2020. ## Highlights {#sec-release-20.03-highlights} This release has the following notable changes: - Assigning a list to the [home.file](#opt-home.file), [xdg.dataFile](#opt-xdg.dataFile) options is now deprecated and will produce a warning message if used. Specifically, if your configuration currently contains something like ``` nix home.file = [ { target = ".config/foo.txt"; text = "bar"; } ] ``` then it should be updated to instead use the equivalent attribute set form ``` nix home.file = { ".config/foo.txt".text = "bar"; } ``` Support for the list form will be removed in Home Manager version 20.09. - The `lib` function attribute given to modules is now enriched with an attribute `hm` containing extra library functions specific for Home Manager. More specifically, `lib.hm` is now the same as `config.lib` and should be the preferred choice since it is more robust. Therefore, if your configuration makes use of, for example, `config.lib.dag` to create activation script blocks, it is recommended to change to `lib.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 `config` or `options`, 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 `config` attribute. For example, instead of ``` nix home-manager.users.jane = { config = "foo"; }; ``` use ``` nix home-manager.users.jane = { config.config = "foo"; }; ``` - The `services.compton` module has been deprecated and instead the new module `services.picom` should 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.matchBlocks](#opt-programs.ssh.matchBlocks) option has been deprecated and configurations requiring match blocks in a defined order should switch to using DAG entries instead. For example, a configuration ``` nix programs.ssh.matchBlocks = [ { host = "alpha.foo.com"; user = "jd"; } { host = "*.foo.com"; user = "john.doe"; } ]; ``` can be expressed along the lines of ``` nix 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 {#sec-release-20.03-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](#opt-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_history` and `dotDir` path is not prepended to it anymore. - The newsboat module will now default in displaying `queries` before `urls` in its main window. This makes sense in the case when one has a lot of URLs and few queries.