mirror of
https://github.com/nix-community/home-manager
synced 2024-11-23 11:39:46 +01:00
51 lines
1.4 KiB
Nix
51 lines
1.4 KiB
Nix
|
{ config, lib, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
|
||
|
inherit (lib) mkIf mkOption types;
|
||
|
|
||
|
in {
|
||
|
options.uninstall = mkOption {
|
||
|
type = types.bool;
|
||
|
default = false;
|
||
|
description = ''
|
||
|
Whether to set up a minimal configuration that will remove all managed
|
||
|
files and packages.
|
||
|
|
||
|
Use this with extreme care since running the generated activation script
|
||
|
will remove all Home Manager state from your user environment. This
|
||
|
includes removing all your historic Home Manager generations.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
config = mkIf config.uninstall {
|
||
|
home.packages = lib.mkForce [ ];
|
||
|
home.file = lib.mkForce { };
|
||
|
home.stateVersion = lib.mkForce "23.11";
|
||
|
home.enableNixpkgsReleaseCheck = lib.mkForce false;
|
||
|
manual.manpages.enable = lib.mkForce false;
|
||
|
news.display = lib.mkForce "silent";
|
||
|
|
||
|
home.activation.uninstall =
|
||
|
lib.hm.dag.entryAfter [ "installPackages" "linkGeneration" ] ''
|
||
|
nixProfileRemove home-manager-path
|
||
|
|
||
|
if [[ -e $hmDataPath ]]; then
|
||
|
$DRY_RUN_CMD rm $VERBOSE_ARG -r "$hmDataPath"
|
||
|
fi
|
||
|
|
||
|
if [[ -e $hmStatePath ]]; then
|
||
|
$DRY_RUN_CMD rm $VERBOSE_ARG -r "$hmStatePath"
|
||
|
fi
|
||
|
|
||
|
if [[ -e $genProfilePath ]]; then
|
||
|
$DRY_RUN_CMD rm $VERBOSE_ARG "$genProfilePath"*
|
||
|
fi
|
||
|
|
||
|
if [[ -e $legacyGenGcPath ]]; then
|
||
|
$DRY_RUN_CMD rm $VERBOSE_ARG "$legacyGenGcPath"
|
||
|
fi
|
||
|
'';
|
||
|
};
|
||
|
}
|