diff --git a/index.xhtml b/index.xhtml index 591e7319..4cf5bcd6 100644 --- a/index.xhtml +++ b/index.xhtml @@ -34,7 +34,7 @@

Table of Contents

Preface
Installing Home Manager
Standalone installation
NixOS module
nix-darwin module
Using Home Manager
Configuration Example
Rollbacks
Keeping your ~ safe from harm
Graphical services
Updating
Nix Flakes
Prerequisites
Standalone setup
NixOS module
nix-darwin module
Writing Home Manager Modules
Option Types
Contributing
Getting started
Guidelines
News
Tests
Third-Party Tools and Extensions
Module Collections
Frequently Asked Questions (FAQ)
Why is there a collision error when switching generation?
Why are the session variables not set?
How to set up a configuration for multiple users/machines?
Why do I get an error message about ca.desrt.dconf or dconf.service?
How do I install packages from Nixpkgs unstable?
How do I change the package used by a module?
A. Home Manager Configuration Options
B. NixOS Configuration Options
C. nix-darwin Configuration Options
D. Release Notes
-

Preface

This manual will eventually describe how to install, use, and extend Home +

Preface

This manual will eventually describe how to install, use, and extend Home Manager.

If you encounter problems then please reach out on the IRC channel #home-manager hosted by OFTC. @@ -45,7 +45,7 @@ be reported on the Home Manager issue tracker.

Note

Commands prefixed with $ sudo have to be run as root, either requiring to login as root user or temporarily switching to it using sudo for example.

-

Installing Home Manager

Home Manager can be used in three primary ways:

  1. Using the standalone home-manager tool. For platforms other than +

Installing Home Manager

Home Manager can be used in three primary ways:

  1. Using the standalone home-manager tool. For platforms other than NixOS and Darwin, this is the only available choice. It is also recommended for people on NixOS or Darwin that want to manage their home directory independently of the system as a whole. See @@ -61,7 +61,7 @@ module for a description of this setup.

Note

In this chapter we describe how to install Home Manager in the standard way using channels. If you prefer to use Nix Flakes then please see the instructions -in nix flakes.

Standalone installation

  1. Make sure you have a working Nix installation. Specifically, make +in nix flakes.

Standalone installation

  1. Make sure you have a working Nix installation. Specifically, make sure that your user is able to build and install Nix packages. For example, you should be able to successfully run a command like nix-instantiate '<nixpkgs>' -A hello without having to switch to @@ -92,7 +92,7 @@ checkout of the repository then you can use the home-manager.path option to specify the absolute path to the repository.

    Once installed you can see Using Home Manager for a more detailed description of Home Manager and how to use it.

    -

NixOS module

Home Manager provides a NixOS module that allows you to prepare user +

NixOS module

Home Manager provides a NixOS module that allows you to prepare user environments directly from the system configuration file, which often is more convenient than using the home-manager tool. It also opens up additional possibilities, for example, to automatically configure user @@ -145,7 +145,7 @@ Nixpkgs.

Note

Home Manager w you create. This contains the system’s NixOS configuration.

{ lib, pkgs, osConfig, ... }:
 

Once installed you can see Using Home Manager for a more detailed description of Home Manager and how to use it.

-

nix-darwin module

Home Manager provides a module that allows you to prepare user +

nix-darwin module

Home Manager provides a module that allows you to prepare user environments directly from the nix-darwin configuration file, which often is more convenient than using the home-manager tool.

To make the NixOS module available for use you must import it into @@ -196,7 +196,7 @@ you create. This contains the system’s nix-darwin configuration.

Once installed you can see Using Home Manager for a more detailed description of Home Manager and how to use it.

-

Using Home Manager

Your use of Home Manager is centered around the configuration file, +

Using Home Manager

Your use of Home Manager is centered around the configuration file, which is typically found at ~/.config/home-manager/home.nix in the standard installation or ~/.config/home-manager/flake.nix in a Nix flake based installation.

Note

The default configuration used to be placed in ~/.config/nixpkgs¸ so @@ -223,7 +223,7 @@ the option. You can find the complete option documentation in

Once a configuration is successfully built, it can be activated. The activation performs the steps necessary to make the files, programs, and services available in your user environment. The home-manager switch -command performs a combined build and activation.

Configuration Example

A fresh install of Home Manager will generate a minimal +command performs a combined build and activation.

Configuration Example

A fresh install of Home Manager will generate a minimal ~/.config/home-manager/home.nix file containing something like

{ config, pkgs, ... }:
 
 {
@@ -299,7 +299,7 @@ programs and service options – Emacs is
 

or if you are not feeling so lucky,

home-manager build
 

which will create a result link to a directory containing an activation script and the generated home directory files.

-

Rollbacks

While the home-manager tool does not explicitly support rollbacks at +

Rollbacks

While the home-manager tool does not explicitly support rollbacks at the moment it is relatively easy to perform one manually. The steps to do so are

  1. Run home-manager generations to determine which generation you wish to rollback to:

    $ home-manager generations
    @@ -314,7 +314,7 @@ wish to rollback to:

    $ home-manager
     Starting home manager activation
     …
     
-

Keeping your ~ safe from harm

To configure programs and services Home Manager must write various +

Keeping your ~ safe from harm

To configure programs and services Home Manager must write various things to your home directory. To prevent overwriting any existing files when switching to a new generation, Home Manager will attempt to detect collisions between existing files and generated files. If any such @@ -338,7 +338,7 @@ Activating checkLinkTargets Existing file '/home/jdoe/.config/git/config' is in the way Please move the above files and try again -

Graphical services

Home Manager includes a number of services intended to run in a +

Graphical services

Home Manager includes a number of services intended to run in a graphical session, for example xscreensaver and dunst. Unfortunately, such services will not be started automatically unless you let Home Manager start your X session. That is, you have something @@ -358,7 +358,7 @@ like

{
   # …
 }
 

in your Home Manager configuration.

-

Updating

If you have installed Home Manager using the Nix channel method then +

Updating

If you have installed Home Manager using the Nix channel method then updating Home Manager is done by first updating the channel. You can then switch to the updated Home Manager environment.

$ nix-channel --update
 …
@@ -366,7 +366,7 @@ unpacking channels...
 $ home-manager switch
 
-

Nix Flakes

Home Manager is compatible with Nix +

Nix Flakes

Home Manager is compatible with Nix Flakes. But please be aware that this support is still experimental and may change in backwards incompatible ways.

Just like in the standard installation you can use the Home Manager @@ -381,7 +381,7 @@ user profiles to be built together with the system when running description of this setup.

  • This allows the user profiles to be built together with the system when running darwin-rebuild. See nix-darwin module for a description of this -setup.

  • Prerequisites

    Prerequisites

    • Install Nix 2.4 or later, or have it in nix-shell.

    • Enable experimental features nix-command and flakes.

      • When using NixOS, add the following to your configuration.nix and rebuild your system.

        nix = {
           package = pkgs.nixFlakes;
           extraOptions = ''
        @@ -398,7 +398,7 @@ $ home-manager --extra-experimental-features "nix-command flakes" <
         the flake is built, so it must be present before bootstrap of Home
         Manager from the flake. See Configuration Example for
         introduction about writing a Home Manager configuration.

      -

    Standalone setup

    To prepare an initial Home Manager configuration for your logged in +

    Standalone setup

    To prepare an initial Home Manager configuration for your logged in user, you can run the Home Manager init command directly from its flake.

    For example, if you are using the unstable version of Nixpkgs or NixOS, then to generate and activate a basic configuration run the command

    $ nix run home-manager/master -- init --switch
    @@ -421,7 +421,7 @@ to use the standard nix flake update command for th
     or --update-input <input> to home-manager when building or
     switching, and these options will be forwarded to nix build. See the
     NixOS Wiki page for details.

    -

    NixOS module

    To use Home Manager as a NixOS module, a bare-minimum flake.nix would +

    NixOS module

    To use Home Manager as a NixOS module, a bare-minimum flake.nix would be as follows:

    {
       description = "NixOS configuration";
     
    @@ -456,7 +456,7 @@ and is automatically rebuilt with the system when using the appropriate
     command for the system, such as
     nixos-rebuild switch --flake <flake-uri>.

    You can use the above flake.nix as a template in /etc/nixos by

    $ nix flake new /etc/nixos -t github:nix-community/home-manager#nixos
     
    -

    nix-darwin module

    The flake-based setup of the Home Manager nix-darwin module is similar +

    nix-darwin module

    The flake-based setup of the Home Manager nix-darwin module is similar to that of NixOS. The flake.nix would be:

    {
       description = "Darwin configuration";
     
    @@ -492,12 +492,12 @@ to that of NixOS. The flake.nix would be:

    <
     command here may be darwin-rebuild switch --flake <flake-uri>.

    You can use the above flake.nix as a template in ~/.config/darwin by

    $ nix flake new ~/.config/darwin -t github:nix-community/home-manager#nix-darwin
     
    -

    Writing Home Manager Modules

    The module system in Home Manager is based entirely on the NixOS module +

    Writing Home Manager Modules

    The module system in Home Manager is based entirely on the NixOS module system so we will here only highlight aspects that are specific for Home Manager. For information about the module system as such please refer to the Writing NixOS Modules -chapter of the NixOS manual.

    Table of Contents

    Option Types

    Option Types

    Overall the basic option types are the same in Home Manager as NixOS. A +chapter of the NixOS manual.

    Table of Contents

    Option Types

    Option Types

    Overall the basic option types are the same in Home Manager as NixOS. A few Home Manager options, however, make use of custom types that are worth describing in more detail. These are the option types dagOf and gvariant that are used, for example, by @@ -625,7 +625,7 @@ contains the value of a GVariant element.

    {${key.type}${value.type}}), where each element is a GVariant value.

    -

    Contributing

    Contributions to Home Manager are very welcome. To make the process as +

    Contributing

    Contributions to Home Manager are very welcome. To make the process as smooth as possible for both you and the Home Manager maintainers we provide some guidelines that we ask you to follow. See Getting started for information on how to set up @@ -640,7 +640,7 @@ to the

    Table of Contents

    Getting started
    Guidelines
    News
    Tests

    Getting started

    If you have not previously forked Home Manager then you need to do that +configuration.

    Table of Contents

    Getting started
    Guidelines
    News
    Tests

    Getting started

    If you have not previously forked Home Manager then you need to do that first. Have a look at GitHub’s Fork a repo for instructions on how to do this.

    Once you have a fork of Home Manager you should create a branch starting @@ -656,13 +656,13 @@ programs.home-manager.path = "$HOME/devel/home-manager";

    and running home-manager switch to activate the change. Afterwards, home-manager build and home-manager switch will use your cloned repository.

    The first option is good if you only temporarily want to use your clone.

    -

    Guidelines

    If your contribution satisfy the following rules then there is a good chance it will be merged without too much trouble. The rules are enforced by the Home Manager maintainers and to a lesser extent the Home Manager CI system.

    If you are uncertain how these rules affect the change you would like to make then feel free to start a discussion in the #home-manager IRC -channel, ideally before you start developing.

    Maintain backward compatibility

    Your contribution should not cause another user’s existing configuration +channel, ideally before you start developing.

    Maintain backward compatibility

    Your contribution should not cause another user’s existing configuration to break unless there is a very good reason and the change should be announced to the user through an assertion @@ -670,12 +670,12 @@ or similar.

    Remember that Home Manager is used in many different environme you should consider how your change may effect others. For example,

    • Does your change work for people that do not use NixOS? Consider other GNU/Linux distributions and macOS.

    • Does your change work for people whose configuration is built on one system and deployed on another system?

    -

    Keep forward compatibility in mind

    The master branch of Home Manager tracks the unstable channel of +

    Keep forward compatibility in mind

    The master branch of Home Manager tracks the unstable channel of Nixpkgs, which may update package versions at any time. It is therefore important to consider how a package update may affect your code and try to reduce the risk of breakage.

    The most effective way to reduce this risk is to follow the advice in Add only valuable options.

    -

    Add only valuable options

    When creating a new module it is tempting to include every option +

    Add only valuable options

    When creating a new module it is tempting to include every option supported by the software. This is strongly discouraged. Providing many options increases maintenance burden and risk of breakage considerably. This is why only the most important software @@ -689,11 +689,11 @@ require no explicit options at all.

    If the software uses a structured conf YAML, INI, TOML, or even a plain list of key/value pairs then consider using a settings option as described in Nix RFC 42.

    -

    Add relevant tests

    If at all possible, make sure to add new tests and expand existing tests +

    Add relevant tests

    If at all possible, make sure to add new tests and expand existing tests so that your change will keep working in the future. See Tests for more information about the Home Manager test suite.

    All contributed code must pass the test suite.

    -

    Add relevant documentation

    Many code changes require changing the documentation as well. The +

    Add relevant documentation

    Many code changes require changing the documentation as well. The documentation is written in Nixpkgs-flavoured Markdown. All text is hosted in Home Manager’s Git repository.

    The HTML version of the manual containing both the module option @@ -705,26 +705,26 @@ $ xdg-open ./result/share/doc/home-manager/index.html the man page version of the module options looks good:

    $ nix-build -A docs.manPages
     $ man ./result/share/man/man5/home-configuration.nix.5.gz
     
    -

    Add yourself as a module maintainer

    Every new module must include a named maintainer using the +

    Add yourself as a module maintainer

    Every new module must include a named maintainer using the meta.maintainers attribute. If you are a user of a module that currently lacks a maintainer then please consider adopting it.

    If you are present in the nixpkgs maintainer list then you can use that entry. If you are not then you can add yourself to modules/lib/maintainers.nix in the Home Manager project.

    As a maintainer you are expected to respond to issues and pull-requests associated with your module.

    Maintainers are encouraged to join the IRC or Matrix channel and participate when they have opportunity.

    -

    Format your code

    Make sure your code is formatted as described in Code +

    Format your code

    Make sure your code is formatted as described in Code Style. To maintain consistency throughout the project you are encouraged to browse through existing code and adopt its style also in new code.

    -

    Format your commit messages

    Similar to Format your code we encourage a +

    Format your commit messages

    Similar to Format your code we encourage a consistent commit message format as described in Commits.

    -

    Format your news entries

    If your contribution includes a change that should be communicated to +

    Format your news entries

    If your contribution includes a change that should be communicated to users of Home Manager then you can add a news entry. The entry must be formatted as described in News.

    When new modules are added a news entry should be included but you do not need to create this entry manually. The merging maintainer will create the entry for you. This is to reduce the risk of merge conflicts.

    -

    Use conditional modules and news

    Home Manager includes a number of modules that are only usable on some +

    Use conditional modules and news

    Home Manager includes a number of modules that are only usable on some of the supported platforms. The most common example of platform specific modules are those that define systemd user services, which only works on Linux systems.

    If you add a module that is platform specific then make sure to include @@ -732,7 +732,7 @@ a condition in the loadModule function call. This w accessible only on systems where the condition evaluates to true.

    Similarly, if you are adding a news entry then it should be shown only to users that may find it relevant, see News for a description of conditional news.

    -

    Mind the license

    The Home Manager project is covered by the MIT license and we can only +

    Mind the license

    The Home Manager project is covered by the MIT license and we can only accept contributions that fall under this license, or are licensed in a compatible way. When you contribute self written code and documentation it is assumed that you are doing so under the MIT license.

    A potential gotcha with respect to licensing are option descriptions. @@ -740,7 +740,7 @@ Often it is convenient to copy from the upstream software documentation. When this is done it is important to verify that the license of the upstream documentation allows redistribution under the terms of the MIT license.

    -

    Commits

    The commits in your pull request should be reasonably self-contained, +

    Commits

    The commits in your pull request should be reasonably self-contained, that is, each commit should make sense in isolation. In particular, you will be asked to amend any commit that introduces syntax errors or similar problems even if they are fixed in a later commit.

    The commit messages should follow the seven @@ -757,7 +757,7 @@ exception, if there is no clear component, or your change affects many components, then the {component} part is optional. See example_title for a commit message that fulfills these requirements.

    -

    Example commit

    The commit +

    Example commit

    The commit 69f8e47e9e74c8d3d060ca22e18246b7f7d988ef contains the commit message

    
         starship: allow running in Emacs if vterm is used
    @@ -767,7 +767,7 @@ contains the commit message

    
     

    which ticks all the boxes necessary to be accepted in Home Manager.

    Finally, when adding a new module, say programs/foo.nix, we use the fixed commit format foo: add module. You can, of course, still include a long description if you wish.

    -

    Code Style

    The code in Home Manager is formatted by the +

    Code Style

    The code in Home Manager is formatted by the nixfmt tool and the formatting is checked in the pull request tests. Run the format tool inside the project repository before submitting your pull request.

    Keep lines at a reasonable width, ideally 80 characters or less. This @@ -778,7 +778,7 @@ which use a hyphenated style. For example, the Home Manager option in Nixpkgs.

    -

    News

    Home Manager includes a system for presenting news to the user. When +

    News

    Home Manager includes a system for presenting news to the user. When making a change you, therefore, have the option to also include an associated news entry. In general, a news entry should only be added for truly noteworthy news. For example, a bug fix or new option does @@ -804,7 +804,7 @@ has a message along the lines of

    A new modu
     systemd, then a condition like

    condition = hostPlatform.isLinux;
     

    should be added. If you contribute a module then you don’t need to add this entry, the merger will create an entry for you.

    -

    Tests

    Home Manager includes a basic test suite and it is highly recommended to +

    Tests

    Home Manager includes a basic test suite and it is highly recommended to include at least one test when adding a module. Tests are typically in the form of "golden tests" where, for example, a generated configuration file is compared to a known correct file.

    It is relatively easy to create tests by modeling the existing tests, @@ -819,16 +819,16 @@ and may cause failures. To run against the nixpkgs from the flake.lock, use instead e.g.

    $ nix develop --ignore-environment .#all
     
    -

    Third-Party Tools and Extensions

    Here is a collection of tools and extensions that relate to Home +

    Third-Party Tools and Extensions

    Here is a collection of tools and extensions that relate to Home Manager. Note, these are maintained outside the regular Home Manager flow so quality and support may vary wildly. If you encounter problems then please raise them in the corresponding project, not as issues in the Home Manager tracker.

    If you have made something interesting related to Home Manager then you -are encouraged to create a PR that expands this chapter.

    Table of Contents

    Module Collections

    Module Collections

    Module Collections

    -

    Frequently Asked Questions (FAQ)

    Why is there a collision error when switching generation?

    Home Manager currently installs packages into the user environment, +

    Frequently Asked Questions (FAQ)

    Why is there a collision error when switching generation?

    Home Manager currently installs packages into the user environment, precisely as if the packages were installed through nix-env --install. This means that you will get a collision error if your Home Manager configuration attempts to install a package that you already have @@ -854,7 +854,7 @@ error: build of ‘/nix/store/b37x3s7pzxbasfqhaca5dqbf3pjjw0ip-user-environment. using nix-env --uninstall and reattempt the Home Manager generation switch.

    You could also opt to unistall all of the packages from your profile with nix-env --uninstall '*'.

    -

    Why are the session variables not set?

    Home Manager is only able to set session variables automatically if it +

    Why are the session variables not set?

    Home Manager is only able to set session variables automatically if it manages your Bash, Z shell, or fish shell configuration. To enable such management you use programs.bash.enable, programs.zsh.enable, or programs.fish.enable.

    If you don’t want to let Home Manager manage your shell then you will @@ -866,7 +866,7 @@ way. In Bash and Z shell this can be done by adding

    the foreign-env
     plugin

    fenv source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh" > /dev/null
     
    -

    How to set up a configuration for multiple users/machines?

    A typical way to prepare a repository of configurations for multiple +

    How to set up a configuration for multiple users/machines?

    A typical way to prepare a repository of configurations for multiple logins and machines is to prepare one "top-level" file for each unique combination.

    For example, if you have two machines, called "kronos" and "rhea" on which you want to configure your user "jane" then you could create the @@ -884,13 +884,13 @@ logins. Of course, instead of just a single common.nix

    You can get some inspiration from the Post your home-manager home.nix file! Reddit thread.

    -

    Why do I get an error message about ca.desrt.dconf or dconf.service?

    You are most likely trying to configure something that uses dconf but +

    Why do I get an error message about ca.desrt.dconf or dconf.service?

    You are most likely trying to configure something that uses dconf but the DBus session is not aware of the dconf service. The full error you might get is

    error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files
     

    or

    error: GDBus.Error:org.freedesktop.systemd1.NoSuchUnit: Unit dconf.service not found.
     

    The solution on NixOS is to add

    programs.dconf.enable = true;
     

    to your system configuration.

    -

    How do I install packages from Nixpkgs unstable?

    If you are using a stable version of Nixpkgs but would like to install +

    How do I install packages from Nixpkgs unstable?

    If you are using a stable version of Nixpkgs but would like to install some particular packages from Nixpkgs unstable – or some other channel – then you can import the unstable Nixpkgs and refer to its packages within your configuration. Something like

    { pkgs, config, ... }:
    @@ -912,7 +912,7 @@ in
     $ nix-channel --update
     

    Note, the package will not be affected by any package overrides, overlays, etc.

    -

    How do I change the package used by a module?

    By default Home Manager will install the package provided by your chosen +

    How do I change the package used by a module?

    By default Home Manager will install the package provided by your chosen nixpkgs channel but occasionally you might end up needing to change this package. This can typically be done in two ways.

    1. If the module provides a package option, such as programs.beets.package, then this is the recommended way to diff --git a/nix-darwin-options.xhtml b/nix-darwin-options.xhtml index ac3aa9f8..09f26f29 100644 --- a/nix-darwin-options.xhtml +++ b/nix-darwin-options.xhtml @@ -24,7 +24,7 @@


      -

    Appendix C. nix-darwin Configuration Options

    +

    Appendix C. nix-darwin Configuration Options

    diff --git a/nixos-options.xhtml b/nixos-options.xhtml index e258471f..c89e0741 100644 --- a/nixos-options.xhtml +++ b/nixos-options.xhtml @@ -24,7 +24,7 @@
    -

    Appendix B. NixOS Configuration Options

    +

    Appendix B. NixOS Configuration Options

    diff --git a/options.xhtml b/options.xhtml index 2e938571..606aedc7 100644 --- a/options.xhtml +++ b/options.xhtml @@ -24,7 +24,7 @@
    -

    Appendix A. Home Manager Configuration Options

    +

    Appendix A. Home Manager Configuration Options

    @@ -56095,6 +56095,9 @@ attribute set of (path or strings concatenated with “\n”)

    Type: YAML value

    +

    Default: +{ }

    +

    Example:

    {
       lat = 52.3;
       lng = 4.8;
    diff --git a/release-notes.xhtml b/release-notes.xhtml
    index 3c2052d4..3e2e8f80 100644
    --- a/release-notes.xhtml
    +++ b/release-notes.xhtml
    @@ -24,9 +24,9 @@
         
        
        
    -

    Appendix D. Release Notes

    This section lists the release notes for stable versions of Home Manager -and the current unstable version.

    Release 24.05

    Table of Contents

    Highlights
    State Version Changes

    This is the current unstable branch and the information in this section -is therefore not final.

    Highlights

    This release has the following notable changes:

    • The .release file in the Home Manager project root has been +

    Appendix D. Release Notes

    This section lists the release notes for stable versions of Home Manager +and the current unstable version.

    Release 24.05

    Table of Contents

    Highlights
    State Version Changes

    This is the current unstable branch and the information in this section +is therefore not final.

    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.

    • The home-manager uninstall command has been reworked to, hopefully, be more robust. The new implementation makes use of a new Boolean configuration option uninstall that can @@ -66,12 +66,12 @@ deprecated. Instead use the new shell function more. The deprecated variable will continue to work for now but its use may in the future trigger a warning message and eventually it may be removed entirely.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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.

    -

    Release 23.11

    Table of Contents

    Highlights
    State Version Changes

    The 23.11 release branch became stable in November, 2023.

    Highlights

    This release has the following notable changes:

    Release 23.11

    Table of Contents

    Highlights
    State Version Changes

    The 23.11 release branch became stable in November, 2023.

    Highlights

    This release has the following notable changes:

    • When using programs.fish.enable, the setup code for home.sessionVariables is now translated with babelfish. This should result in significantly faster shell startup times but could theoretically @@ -86,12 +86,12 @@ have any external Home Manager modules, their option descriptions and literal examples should be translated to Nixpkgs-flavoured Markdown.

    • The services.password-store-sync module has been removed. Use services.git-sync instead.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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.

    -

    Release 23.05

    Table of Contents

    Highlights
    State Version Changes

    The 23.05 release branch became the stable branch in May, 2023.

    Highlights

    This release has the following notable changes:

    • Firefox add-ons are now managed per-profile. That is, if you are +

    Release 23.05

    Table of Contents

    Highlights
    State Version Changes

    The 23.05 release branch became the stable branch in May, 2023.

    Highlights

    This release has the following notable changes:

    • Firefox add-ons are now managed per-profile. That is, if you are currently having

      programs.firefox.extensions = [ foo bar ];
       

      in your configuration then you must change it to

      programs.firefox.profiles.myprofile.extensions = [ foo bar ];
       
    • The default configuration location has been changed from @@ -107,13 +107,13 @@ 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 for more.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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.

    -

    Release 22.11

    Table of Contents

    Highlights
    State Version Changes

    The 22.11 release branch became the stable branch in November, 2022.

    Highlights

    This release has the following notable changes:

    Release 22.11

    Table of Contents

    Highlights
    State Version Changes

    The 22.11 release branch became the stable branch in November, 2022.

    Highlights

    This release has the following notable changes:

    • The 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

      home.stateVersion = "18.09";
      @@ -152,7 +152,7 @@ were removed since upstream changed the blur settings to be more
       flexible. You can migrate the blur settings to use
       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

    The state version in this release includes the changes below. These +

    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.

    -

    Release 22.05

    Table of Contents

    Highlights
    State Version Changes

    The 22.05 release branch became the stable branch in May, 2022.

    Highlights

    This release has the following notable changes:

    • The programs.waybar.settings.modules option was removed. Waybar +

    Release 22.05

    Table of Contents

    Highlights
    State Version Changes

    The 22.05 release branch became the stable branch in May, 2022.

    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 @@ -178,7 +178,7 @@ and the activation script.

      If you would like to contribute to the translat can do so through the Home Manager Weblate project.

    • A new module, launchd.agents was added. Use this to enable services based on macOS LaunchAgents.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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.

    -

    Release 21.11

    Table of Contents

    Highlights
    State Version Changes

    The 21.11 release branch became the stable branch in November, 2021.

    Highlights

    This release has the following notable changes:

    • All Home Manager modules are now loaded on all platforms. With this +

    Release 21.11

    Table of Contents

    Highlights
    State Version Changes

    The 21.11 release branch became the stable branch in November, 2021.

    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 @@ -212,7 +212,7 @@ different so you may need to do some changes.

    • Ta file now. Option programs.taskwarrior.config and friends now generate the config file at $XDG_CONFIG_HOME/task/taskrc instead of ~/.taskrc.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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 home.keyboard option now defaults to null, meaning that Home Manager won’t do any keyboard layout management. For @@ -226,7 +226,7 @@ example,

      programs.waybar.settings.modu
       
    -

    Release 21.05

    Table of Contents

    Highlights
    State Version Changes

    The 21.05 release branch became the stable branch in May, 2021.

    Highlights

    This release has the following notable changes:

    • The ‘opt-programs.broot.verbs` option is now a list rather than an +

    Release 21.05

    Table of Contents

    Highlights
    State Version Changes

    The 21.05 release branch became the stable branch in May, 2021.

    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,

      programs.broot.verbs = {
         "p" = { execution = ":parent"; };
      @@ -342,15 +342,15 @@ example:

      programs.htop = {
         };
       };
       
    -

    State Version Changes

    The state version in this release includes the changes below. These +

    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.

    -

    Release 20.09

    Table of Contents

    Highlights
    State Version Changes

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

    Highlights

    This release has the following notable changes:

    • Nothing has happened.

    -

    State Version Changes

    The state version in this release includes the changes below. These +

    Release 20.09

    Table of Contents

    Highlights
    State Version Changes

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

    Highlights

    This release has the following notable changes:

    • Nothing has happened.

    +

    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.

    -

    Release 20.03

    Table of Contents

    Highlights
    State Version Changes

    The 20.03 release branch became the stable branch in April, 2020.

    Highlights

    This release has the following notable changes:

    Release 20.03

    Table of Contents

    Highlights
    State Version Changes

    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 @@ -464,7 +464,7 @@ example, a configuration

      programs.ssh.
       };
       

      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 +

    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 @@ -475,12 +475,12 @@ anymore.

    • The newsboat module will now default in a lot of URLs and few queries.

    -

    Release 19.09

    Table of Contents

    Highlights
    State Version Changes

    The 19.09 release branch became the stable branch in October, 2019.

    Highlights

    This release has the following notable changes:

    • The programs.firefox.enableGoogleTalk and +

    Release 19.09

    Table of Contents

    Highlights
    State Version Changes

    The 19.09 release branch became the stable branch in October, 2019.

    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

    The state version in this release includes the changes below. These +

    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.

    -

    Release 19.03

    Table of Contents

    Highlights
    State Version Changes

    The 19.03 release branch became the stable branch in April, 2019.

    Highlights

    This release has the following notable changes:

    Release 19.03

    Table of Contents

    Highlights
    State Version Changes

    The 19.03 release branch became the stable branch in April, 2019.

    Highlights

    This release has the following notable changes:

    • The 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 @@ -505,14 +505,14 @@ function. For example,

      systemd.user.se
       

      becomes

      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

    The state version in this release includes the changes below. These +

    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.03” or later.

    -

    Release 18.09

    The 18.09 release branch became the stable branch in September, 2018.

    +

    Release 18.09

    The 18.09 release branch became the stable branch in September, 2018.