Robert Helgesson <robert@rycee.net>
A declarative system to manage your $HOME
Based on the Nix package manager
Somewhat resembles NixOS
Standalone
System module
Install user-level packages
Configure programs & manage dotfiles
Configure user services
Reproducible
(Inconvenient) rollbacks
Configure email accounts once, generate setups for
Calendars & contacts in progress
A purely functional package manager
Can interact with it as a regular user
A pure, lazy, functional language
Dynamically typed
Not general purpose
$ sudo nix-channel --add https://…/master.tar.gz home-manager
$ # or https://…/release-19.03.tar.gz
$ # depending on whether you use Nixpkgs unstable or 19.03
$ sudo nix-channel --update
$ nix-shell '<home-manager>' -A install
⋮
All done! The home-manager tool should now be installed
and you can edit
/home/rycee/.config/nixpkgs/home.nix
to configure Home Manager. Run 'man home-configuration.nix'
to see all available options.
home.nix
home-manager switch
$ cat .config/git/config
[user]
name=Robert Helgesson
email=robert@rycee.net
$ readlink .config/git/config
/nix/store/xbm98…9cw3c-home-manager-files/.config/git/config
Note, files are world readable!
programs.msmtp.enable = true;
programs.mbsync.enable = true;
accounts.email.accounts.test-account = {
primary = true;
address = "home.manager@zoho.eu";
userName = "home.manager";
realName = "Home Manager Test Account";
passwordCommand = "cat ${config.home.homeDirectory}/pass";
imap.host = "imap.zoho.eu";
smtp.host = "smtp.zoho.eu";
msmtp.enable = true;
mbsync.enable = true;
};
Born Christmas 2016
79 contributors since
692 commits
Source code
Documentation