1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-27 13:39:46 +01:00
home-manager/docs/manual/introduction.md
Shahar "Dawn" Or 1a4f12ae0b
docs: introduction chapter
Adds an introduction chapter to the manual.
2024-06-26 23:48:52 +02:00

1.7 KiB

Introduction to Home Manager

Home Manager is a Nix-powered tool for reproducible management of the contents of users' home directories. This includes programs, configuration files, environment variables and, well… arbitrary files. The following example snippet of Nix code:

programs.git = {
  enable = true;
  userEmail = "joe@example.org";
  userName = "joe";
};

would make available to a user the git executable and man pages and a configuration file ~/.config/git/config:

[user]
	email = "joe@example.org"
	name = "joe"

Since Home Manager is implemented in Nix, it provides several benefits:

  • Contents are reproducible — a home will be the exact same every time it is built, unless of course, an intentional change is made. This also means you can have the exact same home on different hosts.
  • Significantly faster and more powerful than various backup strategies.
  • Unlike "dotfiles" repositories, Home Manager supports specifying programs, as well as their configurations.
  • Supported by http://cache.nixos.org/, so that you don't have to build from source.
  • If you do want to build some programs from source, there is hardly a tool more useful than Nix for that, and the build instructions can be neatly integrated in your Home Manager usage.
  • Infinitely composable, so that values in different configuration files and build instructions can share a source of truth.
  • Connects you with the most extensive and most up-to-date software package repository on earth, Nixpkgs.