home-manager: remove manually installed home-manager

If the `home-manager` module is enabled then check if the
`home-manager` package is installed using `nix-env -i` and if so then
it is automatically uninstalled before the new package environment,
which includes home-manager, is installed.

(cherry picked from commit 2e257f40e6)
This commit is contained in:
Robert Helgesson 2017-07-19 00:12:34 +02:00
parent e9cc225cbb
commit 0ef0be8ffb
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86

View file

@ -1,6 +1,7 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; with lib;
with import ../lib/dag.nix;
let let
@ -35,5 +36,17 @@ in
inherit (cfg) modulesPath; inherit (cfg) modulesPath;
}) })
]; ];
# Uninstall manually installed home-manager, if such exists.
# Without this a file collision error will be printed.
home.activation.uninstallHomeManager =
dagEntryBetween [ "installPackages" ] [ "writeBoundary" ] ''
if nix-env -q | grep -q '^home-manager$' ; then
$DRY_RUN_CMD nix-env -e home-manager
echo "You can now remove the 'home-manager' entry in"
echo "'~/.config/nixpkgs/config.nix', if you want."
fi
'';
}; };
} }