mirror of
https://github.com/nix-community/home-manager.git
synced 2024-12-14 11:57:55 +00:00
Add basic README file
This commit is contained in:
parent
e0a37be515
commit
853e28647d
1 changed files with 127 additions and 0 deletions
127
README.md
Normal file
127
README.md
Normal file
|
@ -0,0 +1,127 @@
|
|||
Home Manager using Nix
|
||||
======================
|
||||
|
||||
This project provides 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 below.
|
||||
|
||||
Words of warning
|
||||
----------------
|
||||
|
||||
This project is in early development! I personally use it to manage
|
||||
several user configurations but it may fail catastrophically for you.
|
||||
So beware!
|
||||
|
||||
To configure programs and services the Home Manager must write various
|
||||
things to your home directory and possibly overwrite files you have
|
||||
previously created. For example, if you use Home Manager to install
|
||||
and configure Git then your `~/.gitconfig` will be replaced by a link
|
||||
to a configuration generated by Home Manager:
|
||||
|
||||
```
|
||||
$ ls -gG ~/.gitconfig
|
||||
lrwxrwxrwx 1 73 Jan 8 21:59 /home/rycee/.gitconfig -> /nix/store/pk7g12816avnxyhnkbdhqhnlzrw7fsga-home-manager-files/.gitconfig
|
||||
```
|
||||
|
||||
So, if you already have a wonderful, painstakingly created
|
||||
`~/.gitconfig` it will be gone. Home Manager will _not_ attempt to
|
||||
backup the previous `~/.gitconfig` file.
|
||||
|
||||
Further, Home Manager has only ever been used on [NixOS][] version
|
||||
16.09 (the stable version), it may or may not work on other Linux
|
||||
distributions and NixOS versions.
|
||||
|
||||
Finally, the `home-manager` tool does not support rollbacks at the
|
||||
moment so if your home directory gets messed up you'll have to fix it
|
||||
yourself.
|
||||
|
||||
Now when your expectations have been built up and you are eager to try
|
||||
all this out you can go ahead and read the rest of this text.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Currently the easiest way to install Home Manager is as follows:
|
||||
|
||||
1. Make sure you have a working Nix installation.
|
||||
|
||||
2. Clone the Home Manager repository into the `~/.nixpkgs` directory:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/rycee/home-manager ~/.nixpkgs/home-manager
|
||||
```
|
||||
|
||||
3. Add Home Manager to your user's Nixpkgs, for example by adding it
|
||||
to the `packageOverrides` section in your `~/.nixpkgs/config.nix`
|
||||
file:
|
||||
|
||||
```nix
|
||||
{
|
||||
packageOverrides = pkgs: rec {
|
||||
home-manager = import ./home-manager { inherit pkgs; };
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
4. Install the `home-manager` package:
|
||||
|
||||
```
|
||||
$ nix-env -f '<nixpkgs>' -iA home-manager
|
||||
installing ‘home-manager’
|
||||
```
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
The `home-manager` package installs a tool that is conveniently called
|
||||
`home-manager`. This tool can apply configurations to your home
|
||||
directory, list user packages installed by the tool, and list the
|
||||
configuration generations.
|
||||
|
||||
As an example, let us set up a very simple configuration that installs
|
||||
the htop and fortune packages, installs Emacs with a few extra
|
||||
packages enabled, installs Firefox with Adobe Flash enabled, and
|
||||
enables the user gpg-agent service.
|
||||
|
||||
First create a file `~/.nixpkgs/home.nix` containing
|
||||
|
||||
```nix
|
||||
{ pkgs }:
|
||||
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.htop
|
||||
pkgs.fortune
|
||||
];
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
extraPackages = epkgs: [
|
||||
epkgs.nix-mode
|
||||
epkgs.magit
|
||||
];
|
||||
};
|
||||
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
enableAdobeFlash = true;
|
||||
};
|
||||
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
defaultCacheTtl = 1800;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
To activate this configuration you can then run
|
||||
|
||||
```
|
||||
$ home-manager switch ~/.nixpkgs/home.nix
|
||||
```
|
||||
|
||||
[Nix]: https://nixos.org/nix/
|
||||
[NixOS]: https://nixos.org/
|
||||
[Nixpkgs]: https://nixos.org/nixpkgs/
|
Loading…
Reference in a new issue