Home Manager: Difference between revisions

From NixOS Wiki
imported>Luis-Hebendanz
mNo edit summary
imported>Luis-Hebendanz
mNo edit summary
Line 5: Line 5:
Home Manager can be configured in <code>~/.config/nixpkgs/home.nix</code> or inside configuration.nix.
Home Manager can be configured in <code>~/.config/nixpkgs/home.nix</code> or inside configuration.nix.


For the latter, add the following to your config. Note: fetchTarball does not check the integrity of the downloaded Package.  
For the latter, add the following to your config. Note: fetchTarball does not check the integrity of the downloaded package.  
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
   imports = [
   imports = [

Revision as of 10:28, 13 March 2019

Home Manager is a basic system for managing a user environment using the Nix package manager together with the Nix libraries found in Nixpkgs. Before attempting to use Home Manager please read the warning.

Configuration

Home Manager can be configured in ~/.config/nixpkgs/home.nix or inside configuration.nix.

For the latter, add the following to your config. Note: fetchTarball does not check the integrity of the downloaded package.

  imports = [
    ...
    "${builtins.fetchTarball https://github.com/rycee/home-manager/archive/master.tar.gz}/nixos"
  ];
  home-manager.users.my_username = { ... }

For a more secure version:

let
  home-manager = builtins.fetchGit {
    url = "https://github.com/rycee/home-manager.git";
    rev = "dd94a849df69fe62fe2cb23a74c2b9330f1189ed"; # CHANGEME 
    ref = "release-18.09";
  };
in
{
    imports = [
      "${home-manager}/nixos"
   ];

    home-manager.users.my_username = { ... }
}

Managing your dotfiles

Home Manager has options to configure many common tools. As an example, adding the following

  programs.git = {
    enable = true;
    userName  = "my_git_username";
    userEmail = "my_git_username@gmail.com";
  };

will make Home Manager generate a .config/git/config file for you.

Even for programs for which Home Manager doesn't have configuration options, you can use it to manage your dotfiles, e.g.

  home.file.".config/i3blocks/config".source = "${my-dotfile-dir}/i3blocks.conf"

This will create a symlink .config/i3blocks/config.

Examples

Alternatives

  • Wrappers vs. Dotfiles shows how (per-user) wrapper scripts can be used in place of dotfiles in the user's home directory