Home Manager: Difference between revisions
imported>B4dM4n import module to avoid "string is not allowed to refer to a store path" error on unstable |
imported>Jtojnar fix dconf option |
||
Line 58: | Line 58: | ||
== FAQ == | == FAQ == | ||
=== I cannot set | === I cannot set GNOME themes via home-manager === | ||
You will have to add | You will have to add | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
programs.dconf.enable = true; | |||
</syntaxHighlight> | </syntaxHighlight> | ||
to your system configuration. ( [https://old.reddit.com/r/NixOS/comments/b255k5/home_manager_cannot_set_gnome_themes/ Source] ) | to your system configuration. ( [https://old.reddit.com/r/NixOS/comments/b255k5/home_manager_cannot_set_gnome_themes/ Source] ) | ||
== Alternatives == | == Alternatives == | ||
* [[Wrappers vs. Dotfiles]] shows how (per-user) wrapper scripts can be used in place of dotfiles in the user's home directory | * [[Wrappers vs. Dotfiles]] shows how (per-user) wrapper scripts can be used in place of dotfiles in the user's home directory |
Revision as of 02:36, 18 January 2020
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 = [
...
(import "${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 = [
(import "${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.
xdg.configFile."i3blocks/config".source = "${my-dotfile-dir}/i3blocks.conf"
This will create a symlink $XDG_CONFIG_HOME/i3blocks/config
.
Examples
FAQ
I cannot set GNOME themes via home-manager
You will have to add
programs.dconf.enable = true;
to your system configuration. ( Source )
Alternatives
- Wrappers vs. Dotfiles shows how (per-user) wrapper scripts can be used in place of dotfiles in the user's home directory