home-manager: use `shellHook` to install

This changes the installation command from

    nix-shell $HM_PATH -A install --run 'home-manager switch'

to

    nix-shell $HM_PATH -A install

The added shell hook will print some useful information and run
`home-manager switch`.
This commit is contained in:
Robert Helgesson 2017-11-24 12:31:08 +01:00
parent a1e36a9a37
commit 06d4f39e7b
No known key found for this signature in database
GPG Key ID: C3DB11069E65DC86
3 changed files with 42 additions and 7 deletions

View File

@ -80,10 +80,10 @@ Currently the easiest way to install Home Manager is as follows:
EOF
```
4. Create the first Home Manager generation:
4. Install Home Manager and create the first Home Manager generation:
```console
$ nix-shell $HM_PATH -A install --run 'home-manager switch'
$ nix-shell $HM_PATH -A install
```
Home Manager should now be active and available in your user

View File

@ -6,9 +6,7 @@ rec {
path = toString ./.;
};
install =
pkgs.runCommand
"home-manager-install"
{ propagatedBuildInputs = [ home-manager ]; }
"";
install = import ./home-manager/install.nix {
inherit home-manager pkgs;
};
}

37
home-manager/install.nix Normal file
View File

@ -0,0 +1,37 @@
{ home-manager, pkgs }:
pkgs.runCommand
"home-manager-install"
{
propagatedBuildInputs = [ home-manager ];
shellHook = ''
echo
echo "Creating initial Home Manager generation..."
echo
if home-manager switch; then
cat <<EOF
All done! The home-manager tool should now be installed and you
can edit
''${XDG_CONFIG_HOME:-~/.config}/nixpkgs/home.nix
to configure Home Manager. Run 'man home-configuration.nix' to
see all available options.
EOF
exit 0
else
cat <<EOF
Uh oh, the installation failed! Please create an issue at
https://github.com/rycee/home-manager/issues
if the error seems to be the fault of Home Manager.
EOF
exit 1
fi
'';
}
""