mirror of
https://github.com/nix-community/home-manager
synced 2024-11-19 17:49:45 +01:00
426830a174
It's a bit nicer to put the home options at the top, I think.
86 lines
2.5 KiB
Nix
86 lines
2.5 KiB
Nix
{ home-manager, runCommand }:
|
|
|
|
runCommand "home-manager-install" {
|
|
propagatedBuildInputs = [ home-manager ];
|
|
preferLocalBuild = true;
|
|
shellHookOnly = true;
|
|
shellHook = ''
|
|
confFile="''${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix"
|
|
|
|
if [[ ! -e $confFile ]]; then
|
|
echo
|
|
echo "Creating initial Home Manager configuration..."
|
|
|
|
nl=$'\n'
|
|
xdgVars=""
|
|
if [[ -v XDG_CACHE_HOME && $XDG_CACHE_HOME != "$HOME/.cache" ]]; then
|
|
xdgVars="$xdgVars xdg.cacheHome = \"$XDG_CACHE_HOME\";$nl"
|
|
fi
|
|
if [[ -v XDG_CONFIG_HOME && $XDG_CONFIG_HOME != "$HOME/.config" ]]; then
|
|
xdgVars="$xdgVars xdg.configHome = \"$XDG_CONFIG_HOME\";$nl"
|
|
fi
|
|
if [[ -v XDG_DATA_HOME && $XDG_DATA_HOME != "$HOME/.local/share" ]]; then
|
|
xdgVars="$xdgVars xdg.dataHome = \"$XDG_DATA_HOME\";$nl"
|
|
fi
|
|
if [[ -v XDG_STATE_HOME && $XDG_STATE_HOME != "$HOME/.local/state" ]]; then
|
|
xdgVars="$xdgVars xdg.stateHome = \"$XDG_STATE_HOME\";$nl"
|
|
fi
|
|
|
|
mkdir -p "$(dirname "$confFile")"
|
|
cat > $confFile <<EOF
|
|
{ config, pkgs, ... }:
|
|
|
|
{
|
|
# Home Manager needs a bit of information about you and the
|
|
# paths it should manage.
|
|
home.username = "$USER";
|
|
home.homeDirectory = "$HOME";
|
|
$xdgVars
|
|
# This value determines the Home Manager release that your
|
|
# configuration is compatible with. This helps avoid breakage
|
|
# when a new Home Manager release introduces backwards
|
|
# incompatible changes.
|
|
#
|
|
# You can update Home Manager without changing this value. See
|
|
# the Home Manager release notes for a list of state version
|
|
# changes in each release.
|
|
home.stateVersion = "21.11";
|
|
|
|
# Let Home Manager install and manage itself.
|
|
programs.home-manager.enable = true;
|
|
}
|
|
EOF
|
|
fi
|
|
|
|
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
|
|
|
|
$confFile
|
|
|
|
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/nix-community/home-manager/issues
|
|
|
|
if the error seems to be the fault of Home Manager.
|
|
EOF
|
|
exit 1
|
|
fi
|
|
'';
|
|
} ''
|
|
echo This derivation is not buildable, instead run it using nix-shell.
|
|
exit 1
|
|
''
|