From 6fc71dc563c78f999386a55b1892c05039199e8f Mon Sep 17 00:00:00 2001 From: Viktor Kronvall Date: Sat, 16 Dec 2023 14:49:25 +0900 Subject: [PATCH] docs: add release-notes as appendix The release notes used to be an appendix in the manual. After converting to markdown that appendix got lost. This commit reintroduces the release notes into the manual. --- docs/home-manager-manual.nix | 2 + docs/manual/manual.md | 3 + docs/release-notes/release-notes.adoc | 33 --- docs/release-notes/release-notes.md | 19 ++ .../{rl-1809.adoc => rl-1809.md} | 3 +- docs/release-notes/rl-1903.adoc | 59 ------ docs/release-notes/rl-1903.md | 52 +++++ docs/release-notes/rl-1909.adoc | 31 --- docs/release-notes/rl-1909.md | 28 +++ docs/release-notes/rl-2003.adoc | 126 ----------- docs/release-notes/rl-2003.md | 122 +++++++++++ docs/release-notes/rl-2009.adoc | 96 --------- docs/release-notes/rl-2009.md | 112 ++++++++++ docs/release-notes/rl-2105.adoc | 200 ------------------ docs/release-notes/rl-2105.md | 194 +++++++++++++++++ docs/release-notes/rl-2111.adoc | 73 ------- docs/release-notes/rl-2111.md | 81 +++++++ docs/release-notes/rl-2205.adoc | 44 ---- docs/release-notes/rl-2205.md | 45 ++++ docs/release-notes/rl-2211.adoc | 113 ---------- docs/release-notes/rl-2211.md | 113 ++++++++++ docs/release-notes/rl-2305.adoc | 57 ----- docs/release-notes/rl-2305.md | 59 ++++++ docs/release-notes/rl-2311.adoc | 44 ---- docs/release-notes/rl-2311.md | 37 ++++ docs/release-notes/rl-2405.adoc | 20 -- docs/release-notes/rl-2405.md | 19 ++ tests/modules/misc/manual/manual.nix | 1 + 28 files changed, 888 insertions(+), 898 deletions(-) delete mode 100644 docs/release-notes/release-notes.adoc create mode 100644 docs/release-notes/release-notes.md rename docs/release-notes/{rl-1809.adoc => rl-1809.md} (64%) delete mode 100644 docs/release-notes/rl-1903.adoc create mode 100644 docs/release-notes/rl-1903.md delete mode 100644 docs/release-notes/rl-1909.adoc create mode 100644 docs/release-notes/rl-1909.md delete mode 100644 docs/release-notes/rl-2003.adoc create mode 100644 docs/release-notes/rl-2003.md delete mode 100644 docs/release-notes/rl-2009.adoc create mode 100644 docs/release-notes/rl-2009.md delete mode 100644 docs/release-notes/rl-2105.adoc create mode 100644 docs/release-notes/rl-2105.md delete mode 100644 docs/release-notes/rl-2111.adoc create mode 100644 docs/release-notes/rl-2111.md delete mode 100644 docs/release-notes/rl-2205.adoc create mode 100644 docs/release-notes/rl-2205.md delete mode 100644 docs/release-notes/rl-2211.adoc create mode 100644 docs/release-notes/rl-2211.md delete mode 100644 docs/release-notes/rl-2305.adoc create mode 100644 docs/release-notes/rl-2305.md delete mode 100644 docs/release-notes/rl-2311.adoc create mode 100644 docs/release-notes/rl-2311.md delete mode 100644 docs/release-notes/rl-2405.adoc create mode 100644 docs/release-notes/rl-2405.md diff --git a/docs/home-manager-manual.nix b/docs/home-manager-manual.nix index 171c0a55..927c3209 100644 --- a/docs/home-manager-manual.nix +++ b/docs/home-manager-manual.nix @@ -37,6 +37,8 @@ in stdenv.mkDerivation { cp -t out/highlightjs ${nmd}/static/highlightjs/tomorrow-night.min.css cp ${./highlight-style.css} out/highlightjs/highlight-style.css + cp -r ${./release-notes} release-notes + nixos-render-docs manual html \ --manpage-urls ./manpage-urls.json \ --revision ${lib.trivial.revisionWithDefault revision} \ diff --git a/docs/manual/manual.md b/docs/manual/manual.md index affd40c2..6cd67210 100644 --- a/docs/manual/manual.md +++ b/docs/manual/manual.md @@ -28,3 +28,6 @@ nixos-options.md ```{=include=} appendix html:into-file=//nix-darwin-options.html nix-darwin-options.md ``` +```{=include=} appendix html:into-file=//release-notes.xhtml +release-notes/release-notes.md +``` diff --git a/docs/release-notes/release-notes.adoc b/docs/release-notes/release-notes.adoc deleted file mode 100644 index 34dbae05..00000000 --- a/docs/release-notes/release-notes.adoc +++ /dev/null @@ -1,33 +0,0 @@ -[[ch-release-notes]] -[appendix] -== Release Notes - -This section lists the release notes for stable versions of Home Manager and the current unstable version. - -:leveloffset: 1 - -include::rl-2405.adoc[] - -include::rl-2311.adoc[] - -include::rl-2305.adoc[] - -include::rl-2211.adoc[] - -include::rl-2205.adoc[] - -include::rl-2111.adoc[] - -include::rl-2105.adoc[] - -include::rl-2009.adoc[] - -include::rl-2003.adoc[] - -include::rl-1909.adoc[] - -include::rl-1903.adoc[] - -include::rl-1809.adoc[] - -:leveloffset: 0 diff --git a/docs/release-notes/release-notes.md b/docs/release-notes/release-notes.md new file mode 100644 index 00000000..91fc2ed5 --- /dev/null +++ b/docs/release-notes/release-notes.md @@ -0,0 +1,19 @@ +# Release Notes {#ch-release-notes} + +This section lists the release notes for stable versions of Home Manager +and the current unstable version. + +```{=include=} chapters +rl-2405.md +rl-2311.md +rl-2305.md +rl-2211.md +rl-2205.md +rl-2111.md +rl-2105.md +rl-2009.md +rl-2003.md +rl-1909.md +rl-1903.md +rl-1809.md +``` diff --git a/docs/release-notes/rl-1809.adoc b/docs/release-notes/rl-1809.md similarity index 64% rename from docs/release-notes/rl-1809.adoc rename to docs/release-notes/rl-1809.md index b363704e..7a13b014 100644 --- a/docs/release-notes/rl-1809.adoc +++ b/docs/release-notes/rl-1809.md @@ -1,4 +1,3 @@ -[[sec-release-18.09]] -== Release 18.09 +# Release 18.09 {#sec-release-18.09} The 18.09 release branch became the stable branch in September, 2018. diff --git a/docs/release-notes/rl-1903.adoc b/docs/release-notes/rl-1903.adoc deleted file mode 100644 index 1cba4235..00000000 --- a/docs/release-notes/rl-1903.adoc +++ /dev/null @@ -1,59 +0,0 @@ -[[sec-release-19.03]] -== Release 19.03 - -The 19.03 release branch became the stable branch in April, 2019. - -[[sec-release-19.03-highlights]] -=== Highlights -:opt-home-file-source: opt-home.file._name_.source - -This release has the following notable changes: - -* The <<{opt-home-file-source}>> option now allows source files to be -hidden, that is, having a name starting with the `.` 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 -+ -[source,nix] ----- -home.file."my file".source = ./. + "/file with spaces!"; ----- - -* The type used for the systemd unit options under -<>, <>, 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. -+ -In particular, if you get an error saying that a ``unique option'' is -``defined multiple times'' then you need to use the -https://nixos.org/nixos/manual/#sec-option-definitions-setting-priorities[`mkForce`] -function. For example, -+ -[source,nix] ----- -systemd.user.services.foo.Service.ExecStart = "/foo/bar"; ----- -+ -becomes -+ -[source,nix] ----- -systemd.user.services.foo.Service.ExecStart = lib.mkForce "/foo/bar"; ----- -+ -We had to make this change because the old merging was causing too -many confusing situations for people. - -[[sec-release-19.03-state-version-changes]] -=== State Version Changes - -The state version in this release includes the changes below. These -changes are only active if the <> option is set -to ``19.03'' or later. - -* There is now an option <> that defaults -to `false`. Before the module would be active if the -<> option was non-empty. diff --git a/docs/release-notes/rl-1903.md b/docs/release-notes/rl-1903.md new file mode 100644 index 00000000..172cee23 --- /dev/null +++ b/docs/release-notes/rl-1903.md @@ -0,0 +1,52 @@ +# Release 19.03 {#sec-release-19.03} + +The 19.03 release branch became the stable branch in April, 2019. + +## Highlights {#sec-release-19.03-highlights} + +This release has the following notable changes: + +- The [opt-home.file._name_.source](#opt-home.file._name_.source) option now allows source + files to be hidden, that is, having a name starting with the `.` + 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 + + ``` nix + home.file."my file".source = ./. + "/file with spaces!"; + ``` + +- The type used for the systemd unit options under + [opt-systemd.user.sockets](#opt-systemd.user.sockets), + 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. + + In particular, if you get an error saying that a "unique option" is + "defined multiple times" then you need to use the + [`mkForce`](https://nixos.org/nixos/manual/#sec-option-definitions-setting-priorities) + function. For example, + + ``` nix + systemd.user.services.foo.Service.ExecStart = "/foo/bar"; + ``` + + becomes + + ``` nix + systemd.user.services.foo.Service.ExecStart = lib.mkForce "/foo/bar"; + ``` + + We had to make this change because the old merging was causing too + many confusing situations for people. + +## State Version Changes {#sec-release-19.03-state-version-changes} + +The state version in this release includes the changes below. These +changes are only active if the [opt-home.stateVersion](#opt-home.stateVersion) option is +set to "19.03" or later. + +- There is now an option [opt-programs.beets.enable](#opt-programs.beets.enable) that + defaults to `false`. Before the module would be active if the + [opt-programs.beets.settings](#opt-programs.beets.settings) option was non-empty. diff --git a/docs/release-notes/rl-1909.adoc b/docs/release-notes/rl-1909.adoc deleted file mode 100644 index 89bbbdc2..00000000 --- a/docs/release-notes/rl-1909.adoc +++ /dev/null @@ -1,31 +0,0 @@ -[[sec-release-19.09]] -== Release 19.09 - -The 19.09 release branch became the stable branch in October, 2019. - -[[sec-release-19.09-highlights]] -=== Highlights - -This release has the following notable changes: - -* The `programs.firefox.enableGoogleTalk` and - `programs.firefox.enableIcedTea` options are now deprecated - and will only work if Firefox ESR 52.x is used. - -* The `home-manager` tool now provides an `uninstall` sub-command that - can be used to uninstall Home Manager, if used in the standalone - mode. That is, not as a NixOS module. - -[[sec-release-19.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 -"19.09" or later. - -* The <> option now expects a wrapped - Firefox package and defaults to `pkgs.firefox`. - -* The options <> and - <> now default to `null`, which indicates - that the system value should be used. diff --git a/docs/release-notes/rl-1909.md b/docs/release-notes/rl-1909.md new file mode 100644 index 00000000..404acefa --- /dev/null +++ b/docs/release-notes/rl-1909.md @@ -0,0 +1,28 @@ +# Release 19.09 {#sec-release-19.09} + +The 19.09 release branch became the stable branch in October, 2019. + +## Highlights {#sec-release-19.09-highlights} + +This release has the following notable changes: + +- The `programs.firefox.enableGoogleTalk` and + `programs.firefox.enableIcedTea` options are now deprecated and will + only work if Firefox ESR 52.x is used. + +- The `home-manager` tool now provides an `uninstall` sub-command that + can be used to uninstall Home Manager, if used in the standalone + mode. That is, not as a NixOS module. + +## State Version Changes {#sec-release-19.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 +\"19.09\" or later. + +- The [opt-programs.firefox.package](#opt-programs.firefox.package) option now expects a + wrapped Firefox package and defaults to `pkgs.firefox`. + +- The options [opt-home.keyboard.layout](#opt-home.keyboard.layout) and + [opt-home.keyboard.variant](#opt-home.keyboard.variant) now default to `null`, which + indicates that the system value should be used. diff --git a/docs/release-notes/rl-2003.adoc b/docs/release-notes/rl-2003.adoc deleted file mode 100644 index 5832e2e5..00000000 --- a/docs/release-notes/rl-2003.adoc +++ /dev/null @@ -1,126 +0,0 @@ -[[sec-release-20.03]] -== Release 20.03 - -The 20.03 release branch became the stable branch in April, 2020. - -[[sec-release-20.03-highlights]] -=== Highlights - -This release has the following notable changes: - -* Assigning a list to the <>, <>, -and <> options is now deprecated and will produce a -warning message if used. Specifically, if your configuration currently -contains something like -+ -[source,nix] ----- -home.file = [ - { - target = ".config/foo.txt"; - text = "bar"; - } -] ----- -+ -then it should be updated to instead use the equivalent attribute set form -+ -[source,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 -+ -[source,nix] ----- -home-manager.users.jane = { config = "foo"; }; ----- -+ -use -+ -[source,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 <> option has -been deprecated and configurations requiring match blocks in a defined -order should switch to using DAG entries instead. For example, a -configuration -+ -[source,nix] ----- -programs.ssh.matchBlocks = [ - { - host = "alpha.foo.com"; - user = "jd"; - } - { - host = "*.foo.com"; - user = "john.doe"; - } -]; ----- -+ -can be expressed along the lines of -+ -[source,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. - -[[sec-release-20.03-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.03" or later. - -* The <> 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. diff --git a/docs/release-notes/rl-2003.md b/docs/release-notes/rl-2003.md new file mode 100644 index 00000000..c87f919e --- /dev/null +++ b/docs/release-notes/rl-2003.md @@ -0,0 +1,122 @@ +# 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 [opt-home.file](#opt-home.file), + [opt-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 [opt-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 [opt-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. diff --git a/docs/release-notes/rl-2009.adoc b/docs/release-notes/rl-2009.adoc deleted file mode 100644 index a3de0260..00000000 --- a/docs/release-notes/rl-2009.adoc +++ /dev/null @@ -1,96 +0,0 @@ -[[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 <> and <> 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 <>, <>, -and <> 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 '' -A install - -will automatically include these options, when necessary. --- - -* Git's `smtpEncryption` option is now set to `tls` only if both <> and <> are `true`. If only <> is `true`, `ssl` is used instead. - -* The `nixpkgs` module no longer references ``. 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 `` with state version ≥ 20.09 then add -+ -[source,nix] -_module.args.pkgsPath = ; -+ -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 - } - -} -.... --- diff --git a/docs/release-notes/rl-2009.md b/docs/release-notes/rl-2009.md new file mode 100644 index 00000000..91a7add4 --- /dev/null +++ b/docs/release-notes/rl-2009.md @@ -0,0 +1,112 @@ +# Release 20.09 {#sec-release-20.09} + +The 20.09 release branch became the stable branch in late September, +2020. + +## Highlights {#sec-release-20.09-highlights} + +This release has the following notable changes: + +- Nothing has happened. + +## State Version Changes {#sec-release-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.09\" or later. + +- The options [opt-home.homeDirectory](#opt-home.homeDirectory) and + [opt-home.username](#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.cacheHome), + [opt-xdg.dataHome](#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 + + ``` console + $ nix-shell '' -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](#opt-accounts.email.accounts._name_.smtp.tls.enable) and + [opt-accounts.email.accounts._name_.smtp.tls.useStartTls](#opt-accounts.email.accounts._name_.smtp.tls.useStartTls) are + `true`. If only + [opt-accounts.email.accounts._name_.smtp.tls.enable](#opt-accounts.email.accounts._name_.smtp.tls.enable) is + `true`, `ssl` is used instead. + +- The `nixpkgs` module no longer references ``. 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 `` with state version ≥ + 20.09 then add + + ``` nix + _module.args.pkgsPath = ; + ``` + + 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: + + ``` 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 + } + + } diff --git a/docs/release-notes/rl-2105.adoc b/docs/release-notes/rl-2105.adoc deleted file mode 100644 index ed94f888..00000000 --- a/docs/release-notes/rl-2105.adoc +++ /dev/null @@ -1,200 +0,0 @@ -[[sec-release-21.05]] -== Release 21.05 - -The 21.05 release branch became the stable branch in May, 2021. - -[[sec-release-21.05-highlights]] -=== Highlights - -This release has the following notable changes: - -* The `opt-programs.broot.verbs` option is now a list rather than an -attribute set. To migrate, move the keys of the attrset into the list -items' `invocation` keys. For example, -+ -[source,nix] ----- -programs.broot.verbs = { - "p" = { execution = ":parent"; }; -}; ----- -+ -becomes -+ -[source,nix] ----- -programs.broot.verbs = [ - { - invocation = "p"; - execution = ":parent"; - } -]; ----- - -* The <> option has been changed to allow custom -derivations. The following configuration is now possible: -+ -[source,nix] ----- -programs.mpv.package = (pkgs.wrapMpv (pkgs.mpv-unwrapped.override { - vapoursynthSupport = true; -}) { - extraMakeWrapperArgs = [ - "--prefix" "LD_LIBRARY_PATH" ":" "${pkgs.vapoursynth-mvtools}/lib/vapoursynth" - ]; -}); ----- -+ -As a result of this change, <> is no longer the -resulting derivation. Use the newly introduced `programs.mpv.finalPackage` -instead. - -* The <> option is now an attribute set rather -than a string. To migrate, move each line into the attribute set, -removing the `rofi.` prefix from the keys. For example, -+ -[source,nix] ----- -programs.rofi.extraConfig = '' - rofi.show-icons: true - rofi.modi: drun,emoji,ssh -''; ----- -+ -becomes -+ -[source,nix] ----- -programs.rofi.extraConfig = { - show-icons = true; - modi = "drun,emoji,ssh"; -}; ----- -+ -* The <> option now supports defining a theme -using an attribute set, the following configuration is now possible: -+ -[source,nix] ----- -programs.rofi.theme = let - # Necessary to avoid quoting non-string values - inherit (config.lib.formats.rasi) mkLiteral; -in { - "@import" = "~/.config/rofi/theme.rasi"; - - "*" = { - background-color = mkLiteral "#000000"; - foreground-color = mkLiteral "rgba ( 250, 251, 252, 100 % )"; - border-color = mkLiteral "#FFFFFF"; - width = 512; - }; - - "#textbox-prompt-colon" = { - expand = false; - str = ":"; - margin = mkLiteral "0px 0.3em 0em 0em"; - text-color = mkLiteral "@foreground-color"; - }; -}; ----- - - -* The `services.redshift.extraOptions` and `services.gammastep.extraOptions` -options were removed in favor of <> and -`services.gammastep.settings`, that are now an attribute set rather -than a string. They also support new features not available before, for -example: -+ -[source,nix] ----- -services.redshift = { - dawnTime = "6:00-7:45"; - duskTime = "18:35-20:15"; - settings = { - redshift = { - gamma = 0.8; - adjustment-method = "randr"; - }; - - randr = { - screen = 0; - }; - }; -}; ----- -+ -It is recommended to check either -https://github.com/jonls/redshift/blob/master/redshift.conf.sample[redshift.conf.sample] or -https://gitlab.com/chinstrap/gammastep/-/blob/master/gammastep.conf.sample[gammastep.conf.sample] -for the available additional options in each program. - -* Specifying `programs.neomutt.binds.map` or `programs.neomutt.macros.map` as a - single string is now deprecated in favor of specfiying it as a list of - strings. - -* The `programs.neovim.configure` is deprecated in favor of other `programs.neovim` options; -please use the other options at your disposal: -+ -[source,nix] ----- -configure.packages.*.opt -> programs.neovim.plugins = [ { plugin = ...; optional = true; }] -configure.packages.*.start -> programs.neovim.plugins = [ { plugin = ...; }] -configure.customRC -> programs.neovim.extraConfig ----- - -* Home Manager now respects the `NO_COLOR` environment variable as per -https://no-color.org/[]. - -* Qt module now supports <> to specify a theme name and -<> to specify a theme package. If you have set -<> to `gnome`, a <> compatible -with both Qt and Gtk is now required to be set. For instance: -+ -[source,nix] ----- -qt = { - platformTheme = "gnome"; - style = { - name = "adwaita-dark"; - package = pkgs.adwaita-qt; - }; -}; ----- - -* The library type `fontType` now has a `size` attribute in addition to `name`. For example: -+ -[source,nix] ----- -font = { - name = "DejaVu Sans"; - size = 8; -}; ----- - -* The <> option is introduced to replace individual -options in `programs.htop`. To migrate, set the htop options directly in -<>. For example: -+ -[source,nix] ----- -programs.htop = { - enabled = true; - settings = { - color_scheme = 5; - delay = 15; - highlight_base_name = 1; - highlight_megabytes = 1; - highlight_threads = 1; - }; -}; ----- - -[[sec-release-21.05-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 -"21.05" or later. - -* The `newsboat` module now stores generated configuration in - `$XDG_CONFIG_HOME/newsboat`. diff --git a/docs/release-notes/rl-2105.md b/docs/release-notes/rl-2105.md new file mode 100644 index 00000000..da6d468d --- /dev/null +++ b/docs/release-notes/rl-2105.md @@ -0,0 +1,194 @@ +# Release 21.05 {#sec-release-21.05} + +The 21.05 release branch became the stable branch in May, 2021. + +## Highlights {#sec-release-21.05-highlights} + +This release has the following notable changes: + +- The 'opt-programs.broot.verbs\` option is now a list rather than an + attribute set. To migrate, move the keys of the attrset into the + list items' `invocation` keys. For example, + + ``` nix + programs.broot.verbs = { + "p" = { execution = ":parent"; }; + }; + ``` + + becomes + + ``` nix + programs.broot.verbs = [ + { + invocation = "p"; + execution = ":parent"; + } + ]; + ``` + +- The [opt-programs.mpv.package](#opt-programs.mpv.package) option has been changed to + allow custom derivations. The following configuration is now + possible: + + ``` nix + programs.mpv.package = (pkgs.wrapMpv (pkgs.mpv-unwrapped.override { + vapoursynthSupport = true; + }) { + extraMakeWrapperArgs = [ + "--prefix" "LD_LIBRARY_PATH" ":" "${pkgs.vapoursynth-mvtools}/lib/vapoursynth" + ]; + }); + ``` + + As a result of this change, [opt-programs.mpv.package](#opt-programs.mpv.package) is no + longer the resulting derivation. Use the newly introduced + `programs.mpv.finalPackage` instead. + +- The [opt-programs.rofi.extraConfig](#opt-programs.rofi.extraConfig) option is now an attribute + set rather than a string. To migrate, move each line into the + attribute set, removing the `rofi.` prefix from the keys. For + example, + + ``` nix + programs.rofi.extraConfig = '' + rofi.show-icons: true + rofi.modi: drun,emoji,ssh + ''; + ``` + + becomes + + ``` nix + programs.rofi.extraConfig = { + show-icons = true; + modi = "drun,emoji,ssh"; + }; + ``` + +- The [opt-programs.rofi.theme](#opt-programs.rofi.theme) option now supports defining a + theme using an attribute set, the following configuration is now + possible: + + ``` nix + programs.rofi.theme = let + # Necessary to avoid quoting non-string values + inherit (config.lib.formats.rasi) mkLiteral; + in { + "@import" = "~/.config/rofi/theme.rasi"; + + "*" = { + background-color = mkLiteral "#000000"; + foreground-color = mkLiteral "rgba ( 250, 251, 252, 100 % )"; + border-color = mkLiteral "#FFFFFF"; + width = 512; + }; + + "#textbox-prompt-colon" = { + expand = false; + str = ":"; + margin = mkLiteral "0px 0.3em 0em 0em"; + text-color = mkLiteral "@foreground-color"; + }; + }; + ``` + +- The `services.redshift.extraOptions` and + `services.gammastep.extraOptions` options were removed in favor of + [opt-services.redshift.settings](#opt-services.redshift.settings) and + `services.gammastep.settings`, that are now an attribute set rather + than a string. They also support new features not available before, + for example: + + ``` nix + services.redshift = { + dawnTime = "6:00-7:45"; + duskTime = "18:35-20:15"; + settings = { + redshift = { + gamma = 0.8; + adjustment-method = "randr"; + }; + + randr = { + screen = 0; + }; + }; + }; + ``` + + It is recommended to check either + [redshift.conf.sample](https://github.com/jonls/redshift/blob/master/redshift.conf.sample) + or + [gammastep.conf.sample](https://gitlab.com/chinstrap/gammastep/-/blob/master/gammastep.conf.sample) + for the available additional options in each program. + +- Specifying `programs.neomutt.binds.map` or + `programs.neomutt.macros.map` as a single string is now deprecated + in favor of specfiying it as a list of strings. + +- The `programs.neovim.configure` is deprecated in favor of other + `programs.neovim` options; please use the other options at your + disposal: + + ``` nix + configure.packages.*.opt -> programs.neovim.plugins = [ { plugin = ...; optional = true; }] + configure.packages.*.start -> programs.neovim.plugins = [ { plugin = ...; }] + configure.customRC -> programs.neovim.extraConfig + ``` + +- Home Manager now respects the `NO_COLOR` environment variable as per + . + +- Qt module now supports [opt-qt.style.name](#opt-qt.style.name) to specify a theme + name and [opt-qt.style.package](#opt-qt.style.package) to specify a theme package. If + you have set [opt-qt.platformTheme](#opt-qt.platformTheme) to `gnome`, a + [opt-qt.style.package](#opt-qt.style.package) compatible with both Qt and Gtk is now + required to be set. For instance: + + ``` nix + qt = { + platformTheme = "gnome"; + style = { + name = "adwaita-dark"; + package = pkgs.adwaita-qt; + }; + }; + ``` + +- The library type `fontType` now has a `size` attribute in addition + to `name`. For example: + + ``` nix + font = { + name = "DejaVu Sans"; + size = 8; + }; + ``` + +- The [opt-programs.htop.settings](#opt-programs.htop.settings) option is introduced to + replace individual options in `programs.htop`. To migrate, set the + htop options directly in [opt-programs.htop.settings](#opt-programs.htop.settings). For + example: + + ``` nix + programs.htop = { + enabled = true; + settings = { + color_scheme = 5; + delay = 15; + highlight_base_name = 1; + highlight_megabytes = 1; + highlight_threads = 1; + }; + }; + ``` + +## State Version Changes {#sec-release-21.05-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 +\"21.05\" or later. + +- The `newsboat` module now stores generated configuration in + `$XDG_CONFIG_HOME/newsboat`. diff --git a/docs/release-notes/rl-2111.adoc b/docs/release-notes/rl-2111.adoc deleted file mode 100644 index 0ac83a32..00000000 --- a/docs/release-notes/rl-2111.adoc +++ /dev/null @@ -1,73 +0,0 @@ -[[sec-release-21.11]] -== Release 21.11 - -The 21.11 release branch became the stable branch in November, 2021. - -[[sec-release-21.11-highlights]] -=== Highlights - -This release has the following notable changes: - -* All Home Manager modules are now loaded on all platforms. With this -change you will get a more descriptive error message if you attempt to -enable a module that is incompatible with the host platform. -+ -Previously, modules that were platform specific would only be loaded -on that particular platform. For example, a module defining a -https://systemd.io/[systemd] service would only be loaded when the -host platform was Linux. This reduced evaluation times, simplified the -generated documentation, and made it impossible to accidentally use -modules that do not support the host platform. -+ -While the above benefits are quite nice, avoiding module loads also -brings a few problems. For example, the -https://nix-community.github.io/home-manager/[public documentation] -will only show the options available for Linux hosts and the -documentation cannot make references to options within modules that -are unavailable on some hosts. Finally, users who wish to use the same -configuration file for different platforms cannot do so, even if the -platform incompatible options are unused. -+ -Ultimately, the benefits of loading all modules won and the behavior -has now changed. For associated discussion see -https://github.com/nix-community/home-manager/issues/1906[issue #1906]. - -* Rofi version 1.7.0 removed many options that were used by the module and replaced them with custom themes, which are more flexible and powerful. -+ -You can replicate your old configuration by moving those options to <>. Keep in mind that the syntax is different so you may need to do some changes. - -* Taskwarrior version 2.6.0 respects XDG Specification for the config file now. -Option <> and friends now generate the config file at -`$XDG_CONFIG_HOME/task/taskrc` instead of `~/.taskrc`. - -[[sec-release-21.11-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 -"21.11" or later. - -* The <> option now defaults to `null`, meaning that Home Manager won't do any keyboard layout management. For example, `setxkbmap` won't be run in X sessions. - -* The <> option no longer place its value inside a `General` attribute. -For example, -+ -[source,nix] -programs.pet.settings.editor = "nvim"; -+ -becomes -+ -[source,nix] -programs.pet.settings.General.editor = "nvim"; - -* The <> option now allows defining modules directly under <>. -For example, -+ -[source,nix] -programs.waybar.settings.modules."custom/my-module" = { }; -+ -becomes -+ -[source,nix] -programs.waybar.settings."custom/my-module" = { }; - diff --git a/docs/release-notes/rl-2111.md b/docs/release-notes/rl-2111.md new file mode 100644 index 00000000..4c122a8c --- /dev/null +++ b/docs/release-notes/rl-2111.md @@ -0,0 +1,81 @@ +# Release 21.11 {#sec-release-21.11} + +The 21.11 release branch became the stable branch in November, 2021. + +## Highlights {#sec-release-21.11-highlights} + +This release has the following notable changes: + +- All Home Manager modules are now loaded on all platforms. With this + change you will get a more descriptive error message if you attempt + to enable a module that is incompatible with the host platform. + + Previously, modules that were platform specific would only be loaded + on that particular platform. For example, a module defining a + [systemd](https://systemd.io/) service would only be loaded when the + host platform was Linux. This reduced evaluation times, simplified + the generated documentation, and made it impossible to accidentally + use modules that do not support the host platform. + + While the above benefits are quite nice, avoiding module loads also + brings a few problems. For example, the [public + documentation](https://nix-community.github.io/home-manager/) will + only show the options available for Linux hosts and the + documentation cannot make references to options within modules that + are unavailable on some hosts. Finally, users who wish to use the + same configuration file for different platforms cannot do so, even + if the platform incompatible options are unused. + + Ultimately, the benefits of loading all modules won and the behavior + has now changed. For associated discussion see + [issue #1906](https://github.com/nix-community/home-manager/issues/1906). + +- Rofi version 1.7.0 removed many options that were used by the module + and replaced them with custom themes, which are more flexible and + powerful. + + You can replicate your old configuration by moving those options to + [opt-programs.rofi.theme](#opt-programs.rofi.theme). Keep in mind that the syntax is + different so you may need to do some changes. + +- Taskwarrior version 2.6.0 respects XDG Specification for the config + file now. Option [opt-programs.taskwarrior.config](#opt-programs.taskwarrior.config) and friends + now generate the config file at `$XDG_CONFIG_HOME/task/taskrc` + instead of `~/.taskrc`. + +## State Version Changes {#sec-release-21.11-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 +\"21.11\" or later. + +- The [opt-home.keyboard](#opt-home.keyboard) option now defaults to `null`, meaning + that Home Manager won't do any keyboard layout management. For + example, `setxkbmap` won't be run in X sessions. + +- The [opt-programs.pet.settings](#opt-programs.pet.settings) option no longer place its + value inside a `General` attribute. For example, + + ``` nix + programs.pet.settings.editor = "nvim"; + ``` + + becomes + + ``` nix + programs.pet.settings.General.editor = "nvim"; + ``` + +- The [opt-programs.waybar.settings](#opt-programs.waybar.settings) option now allows defining + modules directly under [opt-programs.waybar.settings](#opt-programs.waybar.settings). For + example, + + ``` nix + programs.waybar.settings.modules."custom/my-module" = { }; + ``` + + becomes + + ``` nix + programs.waybar.settings."custom/my-module" = { }; + ``` diff --git a/docs/release-notes/rl-2205.adoc b/docs/release-notes/rl-2205.adoc deleted file mode 100644 index f600640e..00000000 --- a/docs/release-notes/rl-2205.adoc +++ /dev/null @@ -1,44 +0,0 @@ -[[sec-release-22.05]] -== Release 22.05 - -The 22.05 release branch became the stable branch in May, 2022. - -[[sec-release-22.05-highlights]] -=== Highlights - -:hm-weblate: https://hosted.weblate.org/projects/home-manager/ - -This release has the following notable changes: - -* The `programs.waybar.settings.modules` option was removed. -Waybar modules should now be declared directly under `programs.waybar.settings`. - -* Home Manager now partially support translation of texts into different languages. -Note, the support is quite limited at the moment. -Specifically, it only applies to parts of the system written in the Bash language, -such as the `home-manager` command line tool and the activation script. -+ -If you would like to contribute to the translation effort -then you can do so through the {hm-weblate}[Home Manager Weblate project]. - -* A new module, `launchd.agents` was added. -Use this to enable services based on macOS LaunchAgents. - -[[sec-release-22.05-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 "22.05" or later. - -* The <> option now allows defining modules directly under <>. -Defining modules under `programs.waybar.settings.modules` will now be an error. -For example, -+ -[source,nix] -programs.waybar.settings.modules."custom/my-module" = { }; -+ -becomes -+ -[source,nix] -programs.waybar.settings."custom/my-module" = { }; - diff --git a/docs/release-notes/rl-2205.md b/docs/release-notes/rl-2205.md new file mode 100644 index 00000000..fb70c33c --- /dev/null +++ b/docs/release-notes/rl-2205.md @@ -0,0 +1,45 @@ +# Release 22.05 {#sec-release-22.05} + +The 22.05 release branch became the stable branch in May, 2022. + +## Highlights {#sec-release-22.05-highlights} + +This release has the following notable changes: + +- The `programs.waybar.settings.modules` option was removed. Waybar + modules should now be declared directly under + `programs.waybar.settings`. + +- Home Manager now partially support translation of texts into + different languages. Note, the support is quite limited at the + moment. Specifically, it only applies to parts of the system written + in the Bash language, such as the `home-manager` command line tool + and the activation script. + + If you would like to contribute to the translation effort then you + can do so through the [Home Manager Weblate + project](https://hosted.weblate.org/projects/home-manager/). + +- A new module, `launchd.agents` was added. Use this to enable + services based on macOS LaunchAgents. + +## State Version Changes {#sec-release-22.05-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 +\"22.05\" or later. + +- The [opt-programs.waybar.settings](#opt-programs.waybar.settings) option now allows defining + modules directly under [opt-programs.waybar.settings](#opt-programs.waybar.settings). + Defining modules under `programs.waybar.settings.modules` will now + be an error. For example, + + ``` nix + programs.waybar.settings.modules."custom/my-module" = { }; + ``` + + becomes + + ``` nix + programs.waybar.settings."custom/my-module" = { }; + ``` diff --git a/docs/release-notes/rl-2211.adoc b/docs/release-notes/rl-2211.adoc deleted file mode 100644 index e19f1577..00000000 --- a/docs/release-notes/rl-2211.adoc +++ /dev/null @@ -1,113 +0,0 @@ -[[sec-release-22.11]] -== Release 22.11 - -The 22.11 release branch became the stable branch in November, 2022. - -[[sec-release-22.11-highlights]] -=== Highlights - -This release has the following notable changes: - -* The <> option no longer has a default value. -It used to default to ``18.09'', which was the Home Manager version -that introduced the option. If your configuration does not explicitly -set this option then you need to add -+ -[source,nix] -home.stateVersion = "18.09"; -+ -to your configuration. - -* The Flake function `homeManagerConfiguration` has been simplified. -Specifically, the arguments -+ --- - - `configuration`, - - `username`, - - `homeDirectory`, - - `stateVersion`, - - `extraModules`, and - - `system` --- -+ -have been removed. Instead use the new `modules` argument, which -accepts a list of NixOS modules. -+ -Further, the `pkgs` argument is now mandatory and should be set to -`nixpkgs.legacyPackages.${system}` where `nixpkgs` is the Nixpkgs -input of your choice. -+ -For example, if your Flake currently contains -+ -[source,nix] ----- -homeManagerConfiguration { - configuration = import ./home.nix; - system = "x86_64-linux"; - username = "jdoe"; - homeDirectory = "/home/jdoe"; - stateVersion = "22.05"; - extraModules = [ ./some-extra-module.nix ]; -} ----- -+ -then you can change it to -+ -[source,nix] ----- -homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.${system}; - modules = [ - ./home.nix - ./some-extra-module.nix - { - home = { - username = "jdoe"; - homeDirectory = "/home/jdoe"; - stateVersion = "22.05"; - }; - } - ]; -} ----- -+ -Of course, you can move the assignment of <>, -<>, and <> to some -other file or simply place them in your `home.nix`. - -* The `services.picom` module has been refactored to use structural -settings. -+ -As a result `services.picom.extraOptions` has been removed in favor of -<>. Also, `services.picom.blur*` were -removed since upstream changed the blur settings to be more flexible. -You can migrate the blur settings to use -<> instead. - -* The `services.compton` module has been removed. It was deprecated in -release 20.03. Use `services.picom` instead. - -[[sec-release-22.11-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 "22.11" or later. - -* The <> option now defaults to the -value of <> if <> is -enabled. Otherwise it is undefined and must be specified in the user -configuration. - -* The activation script now resets `PATH` before running. Before, the -user's `PATH` environment variable would be used in the script and -this made it possible for commands in the activation script to run -arbitrary commands accessible to the user. We now restrict the -activation script to commands that are explicitly specified. -+ -There is no official way to restore the old behavior. We attempt to -make the activation script as reproducible as possible and honoring -the user's `PATH` reduces reproducibility. -+ -If you need to run a command in an activation script block then refer -to the command by its absolute command path, such as -`${pkgs.hello}/bin/hello`. diff --git a/docs/release-notes/rl-2211.md b/docs/release-notes/rl-2211.md new file mode 100644 index 00000000..c70310e8 --- /dev/null +++ b/docs/release-notes/rl-2211.md @@ -0,0 +1,113 @@ +# Release 22.11 {#sec-release-22.11} + +The 22.11 release branch became the stable branch in November, 2022. + +## Highlights {#sec-release-22.11-highlights} + +This release has the following notable changes: + +- The [opt-home.stateVersion](#opt-home.stateVersion) option no longer has a default + value. It used to default to "18.09", which was the Home Manager + version that introduced the option. If your configuration does not + explicitly set this option then you need to add + + ``` nix + home.stateVersion = "18.09"; + ``` + + to your configuration. + +- The Flake function `homeManagerConfiguration` has been simplified. + Specifically, the arguments + + - `configuration`, + + - `username`, + + - `homeDirectory`, + + - `stateVersion`, + + - `extraModules`, and + + - `system` + + have been removed. Instead use the new `modules` argument, which + accepts a list of NixOS modules. + + Further, the `pkgs` argument is now mandatory and should be set to + `nixpkgs.legacyPackages.${system}` where `nixpkgs` is the Nixpkgs + input of your choice. + + For example, if your Flake currently contains + + ``` nix + homeManagerConfiguration { + configuration = import ./home.nix; + system = "x86_64-linux"; + username = "jdoe"; + homeDirectory = "/home/jdoe"; + stateVersion = "22.05"; + extraModules = [ ./some-extra-module.nix ]; + } + ``` + + then you can change it to + + ``` nix + homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ + ./home.nix + ./some-extra-module.nix + { + home = { + username = "jdoe"; + homeDirectory = "/home/jdoe"; + stateVersion = "22.05"; + }; + } + ]; + } + ``` + + Of course, you can move the assignment of [opt-home.username](#opt-home.username), + [opt-home.stateVersion](#opt-home.stateVersion) to + some other file or simply place them in your `home.nix`. + +- The `services.picom` module has been refactored to use structural + settings. + + As a result `services.picom.extraOptions` has been removed in favor + of [opt-services.picom.settings](#opt-services.picom.settings). Also, `services.picom.blur*` + were removed since upstream changed the blur settings to be more + flexible. You can migrate the blur settings to use + [opt-services.picom.settings](#opt-services.picom.settings) instead. + +- The `services.compton` module has been removed. It was deprecated in + release 20.03. Use `services.picom` instead. + +## State Version Changes {#sec-release-22.11-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 +\"22.11\" or later. + +- The [opt-services.mpd.musicDirectory](#opt-services.mpd.musicDirectory) option now defaults to + the value of [opt-xdg.userDirs.music](#opt-xdg.userDirs.music) if + [opt-xdg.userDirs.enable](#opt-xdg.userDirs.enable) is enabled. Otherwise it is + undefined and must be specified in the user configuration. + +- The activation script now resets `PATH` before running. Before, the + user's `PATH` environment variable would be used in the script and + this made it possible for commands in the activation script to run + arbitrary commands accessible to the user. We now restrict the + activation script to commands that are explicitly specified. + + There is no official way to restore the old behavior. We attempt to + make the activation script as reproducible as possible and honoring + the user's `PATH` reduces reproducibility. + + If you need to run a command in an activation script block then + refer to the command by its absolute command path, such as + `${pkgs.hello}/bin/hello`. diff --git a/docs/release-notes/rl-2305.adoc b/docs/release-notes/rl-2305.adoc deleted file mode 100644 index b4491bb6..00000000 --- a/docs/release-notes/rl-2305.adoc +++ /dev/null @@ -1,57 +0,0 @@ -[[sec-release-23.05]] -== Release 23.05 - -The 23.05 release branch became the stable branch in May, 2023. - -[[sec-release-23.05-highlights]] -=== Highlights - -This release has the following notable changes: - -* Firefox add-ons are now managed per-profile. -That is, if you are currently having -+ -[source,nix] -programs.firefox.extensions = [ foo bar ]; -+ -in your configuration then you must change it to -+ -[source,nix] -programs.firefox.profiles.myprofile.extensions = [ foo bar ]; - -* The default configuration location has been changed from -`~/.config/nixpkgs/home.nix` to `~/.config/home-manager/home.nix`. -+ -Similarly, if you are using a Nix flake based setup -then the default flake file location has changed from -`~/.config/nixpkgs/flake.nix` to `~/.config/home-manager/flake.nix`. -+ -The old location will continue to work but using it will trigger a warning message. -We changed the default configuration location to avoid confusion about -which files belong to Home Manager and which belong to Nixpkgs. - -* The `home-manager` tool now offers an `init` command. -This command can be used to generate an initial Home Manager configuration, -and optionally also activate it. -The recommended installation method for a standalone Home Manager setup -with Nix flakes uses this new command. -The standard installation method remains the same but uses the new command internally. -See <> for more. - -[[sec-release-23.05-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 "23.05" or later. - -* The options -+ --- -- <> -- <> -- <> -- <> --- -+ -now default to `true` which is consistent with the default values for -those options used by `i3` and `sway`. diff --git a/docs/release-notes/rl-2305.md b/docs/release-notes/rl-2305.md new file mode 100644 index 00000000..cf9b39db --- /dev/null +++ b/docs/release-notes/rl-2305.md @@ -0,0 +1,59 @@ +# Release 23.05 {#sec-release-23.05} + +The 23.05 release branch became the stable branch in May, 2023. + +## Highlights {#sec-release-23.05-highlights} + +This release has the following notable changes: + +- Firefox add-ons are now managed per-profile. That is, if you are + currently having + + ``` nix + programs.firefox.extensions = [ foo bar ]; + ``` + + in your configuration then you must change it to + + ``` nix + programs.firefox.profiles.myprofile.extensions = [ foo bar ]; + ``` + +- The default configuration location has been changed from + `~/.config/nixpkgs/home.nix` to `~/.config/home-manager/home.nix`. + + Similarly, if you are using a Nix flake based setup then the default + flake file location has changed from `~/.config/nixpkgs/flake.nix` + to `~/.config/home-manager/flake.nix`. + + The old location will continue to work but using it will trigger a + warning message. We changed the default configuration location to + avoid confusion about which files belong to Home Manager and which + belong to Nixpkgs. + +- The `home-manager` tool now offers an `init` command. This command + can be used to generate an initial Home Manager configuration, and + optionally also activate it. The recommended installation method for + a standalone Home Manager setup with Nix flakes uses this new + command. The standard installation method remains the same but uses + the new command internally. See [sec-flakes-standalone](#sec-flakes-standalone) for + more. + +## State Version Changes {#sec-release-23.05-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 +\"23.05\" or later. + +- The options + + - [opt-xsession.windowManager.i3.config.window.titlebar](#opt-xsession.windowManager.i3.config.window.titlebar) + + - [opt-xsession.windowManager.i3.config.floating.titlebar](#opt-xsession.windowManager.i3.config.floating.titlebar) + + - [opt-wayland.windowManager.sway.config.window.titlebar](#opt-wayland.windowManager.sway.config.window.titlebar) + + - [opt-wayland.windowManager.sway.config.floating.titlebar](#opt-wayland.windowManager.sway.config.floating.titlebar) + + now default to `true` which is consistent with the default values + for those options used by `i3` and `sway`. diff --git a/docs/release-notes/rl-2311.adoc b/docs/release-notes/rl-2311.adoc deleted file mode 100644 index a7bb56a1..00000000 --- a/docs/release-notes/rl-2311.adoc +++ /dev/null @@ -1,44 +0,0 @@ -[[sec-release-23.11]] -== Release 23.11 - -The 23.11 release branch became stable in November, 2023. - -[[sec-release-23.11-highlights]] -=== Highlights -:babelfish: https://github.com/bouk/babelfish -:nixpkgs-markdown: https://nixos.org/manual/nixpkgs/unstable/#sec-contributing-markup - -This release has the following notable changes: - -* When using <>, the setup code -for <> is now translated -with {babelfish}[babelfish]. -This should result in significantly faster shell startup times -but could theoretically break -if you have very complex bash expressions in a session variable. -Please report any issues you experience. - -* The `.release` file in the Home Manager source tree -has been supplanted by `release.json`, -which contains more information about the branch. -If you have any external code reading this file, -please switch to consuming `release.json` instead. -The `.release` file will be removed in 24.05. - -* Home Manager has migrated to using -the upstream Nixpkgs `lib.nixosOptionsDoc` processor -for option documentation. -If you have any external Home Manager modules, -their option descriptions and literal examples should be translated -to {nixpkgs-markdown}[Nixpkgs-flavoured Markdown]. - -* The `services.password-store-sync` module has been removed. -Use `services.git-sync` instead. - -[[sec-release-23.11-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 "23.11" or later. - -* Nothing, yet. diff --git a/docs/release-notes/rl-2311.md b/docs/release-notes/rl-2311.md new file mode 100644 index 00000000..a6a1ce10 --- /dev/null +++ b/docs/release-notes/rl-2311.md @@ -0,0 +1,37 @@ +# Release 23.11 {#sec-release-23.11} + +The 23.11 release branch became stable in November, 2023. + +## Highlights {#sec-release-23.11-highlights} + +This release has the following notable changes: + +- When using [opt-programs.fish.enable](#opt-programs.fish.enable), the setup code for + [opt-home.sessionVariables](#opt-home.sessionVariables) is now translated with + [babelfish](https://github.com/bouk/babelfish). This should result + in significantly faster shell startup times but could theoretically + break if you have very complex bash expressions in a session + variable. Please report any issues you experience. + +- The `.release` file in the Home Manager source tree has been + supplanted by `release.json`, which contains more information about + the branch. If you have any external code reading this file, please + switch to consuming `release.json` instead. The `.release` file will + be removed in 24.05. + +- Home Manager has migrated to using the upstream Nixpkgs + `lib.nixosOptionsDoc` processor for option documentation. If you + have any external Home Manager modules, their option descriptions + and literal examples should be translated to [Nixpkgs-flavoured + Markdown](https://nixos.org/manual/nixpkgs/unstable/#sec-contributing-markup). + +- The `services.password-store-sync` module has been removed. Use + `services.git-sync` instead. + +## State Version Changes {#sec-release-23.11-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 +\"23.11\" or later. + +- Nothing, yet. diff --git a/docs/release-notes/rl-2405.adoc b/docs/release-notes/rl-2405.adoc deleted file mode 100644 index fac27c96..00000000 --- a/docs/release-notes/rl-2405.adoc +++ /dev/null @@ -1,20 +0,0 @@ -[[sec-release-24.05]] -== Release 24.05 - -This is the current unstable branch and the information in this section is therefore not final. - -[[sec-release-24.05-highlights]] -=== Highlights - -This release has the following notable changes: - -* The `.release` file in the Home Manager project root has been removed. - Please use the `release.json` file instead. - -[[sec-release-24.05-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 "24.05" or later. - -* Nothing, yet. diff --git a/docs/release-notes/rl-2405.md b/docs/release-notes/rl-2405.md new file mode 100644 index 00000000..6cf2c957 --- /dev/null +++ b/docs/release-notes/rl-2405.md @@ -0,0 +1,19 @@ +# Release 24.05 {#sec-release-24.05} + +This is the current unstable branch and the information in this section +is therefore not final. + +## Highlights {#sec-release-24.05-highlights} + +This release has the following notable changes: + +- The `.release` file in the Home Manager project root has been + removed. Please use the `release.json` file instead. + +## State Version Changes {#sec-release-24.05-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 +\"24.05\" or later. + +- Nothing, yet. diff --git a/tests/modules/misc/manual/manual.nix b/tests/modules/misc/manual/manual.nix index a6bd58be..3bffc6a3 100644 --- a/tests/modules/misc/manual/manual.nix +++ b/tests/modules/misc/manual/manual.nix @@ -12,6 +12,7 @@ assertFileExists home-path/share/doc/home-manager/index.xhtml assertFileExists home-path/share/doc/home-manager/options.html assertFileExists home-path/share/doc/home-manager/options.json + assertFileExists home-path/share/doc/home-manager/release-notes.xhtml assertFileExists home-path/share/man/man1/home-manager.1 assertFileExists home-path/share/man/man5/home-configuration.nix.5 '';