mirror of
https://github.com/nix-community/home-manager
synced 2024-11-10 07:04:17 +00:00
home-manager: change default configuration home
This changes the default configuration location for Home Manager configurations from $XDG_CONFIG_HOME/nixpkgs to $XDG_CONFIG_HOME/home-manager The old location is still supported but using it will trigger a warning message. Fixes #3640
This commit is contained in:
parent
da15dd1f27
commit
cae54dc45c
10 changed files with 132 additions and 72 deletions
|
@ -72,7 +72,10 @@ For example, if you have two machines, called "kronos" and "rhea" on which you w
|
|||
- `rhea-jane.nix`, and
|
||||
- `common.nix`
|
||||
|
||||
in your repository. On the kronos and rhea machines you can then make `~jane/.config/nixpkgs/home.nix` be a symbolic link to the corresponding file in your configuration repository.
|
||||
in your repository.
|
||||
On the kronos and rhea machines you can then make
|
||||
`~jane/.config/home-manager/home.nix`
|
||||
be a symbolic link to the corresponding file in your configuration repository.
|
||||
|
||||
The `kronos-jane.nix` and `rhea-jane.nix` files follow the format
|
||||
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
</refnamediv>
|
||||
<refsection>
|
||||
<title>Description</title>
|
||||
<para>
|
||||
The file <filename>~/.config/nixpkgs/home.nix</filename> contains the
|
||||
<simpara>
|
||||
The file <filename>~/.config/home-manager/home.nix</filename> contains the
|
||||
declarative specification of your Home Manager configuration. The command
|
||||
<command>home-manager</command> takes this file and realises the user
|
||||
environment configuration specified therein.
|
||||
</para>
|
||||
</simpara>
|
||||
</refsection>
|
||||
<refsection>
|
||||
<title>Options</title>
|
||||
|
|
|
@ -200,7 +200,9 @@
|
|||
<title>Description</title>
|
||||
<para>
|
||||
This command updates the user environment so that it corresponds to the
|
||||
configuration specified in <filename>~/.config/nixpkgs/home.nix</filename> or <filename>~/.config/nixpkgs/flake.nix</filename>.
|
||||
configuration specified in
|
||||
<filename>$XDG_CONFIG_HOME/home-manager/home.nix</filename> or
|
||||
<filename>$XDG_CONFIG_HOME/home-manager/flake.nix</filename>.
|
||||
</para>
|
||||
<para>
|
||||
All operations using this tool expects a sub-command that indicates the
|
||||
|
@ -434,7 +436,7 @@
|
|||
<listitem>
|
||||
<para>
|
||||
Indicates the path to the Home Manager configuration file. If not given,
|
||||
<filename>$XDG_CONFIG_HOME/nixpkgs/home.nix</filename> is used.
|
||||
<filename>$XDG_CONFIG_HOME/home-manager/home.nix</filename> is used.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
|
|
@ -118,9 +118,9 @@ and `nixpkgs` url to `github:NixOS/nixpkgs/nixos-22.11`.
|
|||
* The Home Manager library is exported by the flake under
|
||||
`lib.hm`.
|
||||
|
||||
* You can use the above `flake.nix` as a template in `~/.config/nixpkgs` by
|
||||
* You can use the above `flake.nix` as a template in `~/.config/home-manager` by
|
||||
[source,console]
|
||||
$ nix flake new ~/.config/nixpkgs -t github:nix-community/home-manager
|
||||
$ nix flake new ~/.config/home-manager -t github:nix-community/home-manager
|
||||
====
|
||||
|
||||
2. Install Home Manager and apply the configuration by
|
||||
|
@ -129,9 +129,9 @@ $ nix flake new ~/.config/nixpkgs -t github:nix-community/home-manager
|
|||
$ nix run <flake-uri>#homeConfigurations.jdoe.activationPackage
|
||||
+
|
||||
Substitute `<flake-uri>` with the flake URI of the configuration flake.
|
||||
If `flake.nix` resides in `~/.config/nixpkgs`,
|
||||
`<flake-uri>` may be `~/.config/nixpkgs`
|
||||
as a Git tree or `path:~/.config/nixpkgs` if not.
|
||||
If `flake.nix` resides in `~/.config/home-manager`,
|
||||
`<flake-uri>` may be `~/.config/home-manager`
|
||||
as a Git tree or `path:~/.config/home-manager` if not.
|
||||
|
||||
3. Since the release `21.05`,
|
||||
building a flake-based configuration is as simple as
|
||||
|
|
|
@ -19,6 +19,17 @@ in your configuration then you must change it to
|
|||
[source,nix]
|
||||
programs.firefox.profiles.myprofile.extensions = [ foo bar ];
|
||||
|
||||
* The default configuration location has been changed from
|
||||
`~/.config/nixpkgs/home.nix` to `~/.config/home-manager/home.nix`.
|
||||
+
|
||||
Similarly, if you are using a Nix flake based setup
|
||||
then the default flake file location has changed from
|
||||
`~/.config/nixpkgs/flake.nix` to `~/.config/home-manager/flake.nix`.
|
||||
+
|
||||
The old location will continue to work but using it will trigger a warning message.
|
||||
We changed the default configuration location to avoid confusion about
|
||||
which files belong to Home Manager and which belong to Nixpkgs.
|
||||
|
||||
[[sec-release-23.05-state-version-changes]]
|
||||
=== State Version Changes
|
||||
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
[[ch-usage]]
|
||||
== Using Home Manager
|
||||
|
||||
Your use of Home Manager is centered around the configuration file, which is typically found at `~/.config/nixpkgs/home.nix`.
|
||||
Your use of Home Manager is centered around the configuration file,
|
||||
which is typically found at `~/.config/home-manager/home.nix` in the standard installation
|
||||
or `~/.config/home-manager/flake.nix` in a Nix flake based installation.
|
||||
|
||||
[NOTE]
|
||||
The default configuration used to be placed in `~/.config/nixpkgs`¸
|
||||
so you may see references to that elsewhere.
|
||||
The old directory still works but Home Manager will print a warning message when used.
|
||||
|
||||
This configuration file can be _built_ and _activated_.
|
||||
|
||||
|
@ -18,7 +25,7 @@ then building it, for example using `home-manager build`, will result in an erro
|
|||
----
|
||||
$ home-manager build
|
||||
error: A definition for option `programs.emacs.enable' is not of type `boolean'. Definition values:
|
||||
- In `/home/jdoe/.config/nixpkgs/home.nix': "yes"
|
||||
- In `/home/jdoe/.config/home-manager/home.nix': "yes"
|
||||
(use '--show-trace' to show detailed location information)
|
||||
----
|
||||
|
||||
|
@ -32,7 +39,7 @@ Once a configuration is successfully built, it can be activated. The activation
|
|||
[[sec-usage-configuration]]
|
||||
=== Configuration Example
|
||||
|
||||
A fresh install of Home Manager will generate a minimal `~/.config/nixpkgs/home.nix` file containing something like
|
||||
A fresh install of Home Manager will generate a minimal `~/.config/home-manager/home.nix` file containing something like
|
||||
|
||||
[source,nix]
|
||||
----
|
||||
|
|
|
@ -56,29 +56,42 @@ function setWorkDir() {
|
|||
# an error message and exit with an error code.
|
||||
function setConfigFile() {
|
||||
if [[ -v HOME_MANAGER_CONFIG ]] ; then
|
||||
if [[ ! -e "$HOME_MANAGER_CONFIG" ]] ; then
|
||||
_i "No configuration file found at %s" \
|
||||
if [[ -e "$HOME_MANAGER_CONFIG" ]] ; then
|
||||
HOME_MANAGER_CONFIG="$(realpath "$HOME_MANAGER_CONFIG")"
|
||||
else
|
||||
_i 'No configuration file found at %s' \
|
||||
"$HOME_MANAGER_CONFIG" >&2
|
||||
exit 1
|
||||
fi
|
||||
elif [[ ! -v HOME_MANAGER_CONFIG ]]; then
|
||||
local configHome="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
local hmConfigHome="$configHome/home-manager"
|
||||
local nixpkgsConfigHome="$configHome/nixpkgs"
|
||||
local defaultConfFile="$hmConfigHome/home.nix"
|
||||
local configFlake
|
||||
|
||||
HOME_MANAGER_CONFIG="$(realpath "$HOME_MANAGER_CONFIG")"
|
||||
return
|
||||
fi
|
||||
|
||||
local defaultConfFile="${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix"
|
||||
local confFile
|
||||
for confFile in "$defaultConfFile" \
|
||||
"$HOME/.nixpkgs/home.nix" ; do
|
||||
if [[ -e "$confFile" ]] ; then
|
||||
HOME_MANAGER_CONFIG="$(realpath "$confFile")"
|
||||
return
|
||||
if [[ -e "$defaultConfFile" ]]; then
|
||||
configFile="$defaultConfFile"
|
||||
elif [[ -e "$nixpkgsConfigHome/home.nix" ]]; then
|
||||
configFile="$nixpkgsConfigHome/home.nix"
|
||||
# translators: The first '%s' specifier will be replaced by either
|
||||
# 'home.nix' or 'flake.nix'.
|
||||
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
|
||||
'home.nix' "$nixpkgsConfigHome" "$hmConfigHome" >&2
|
||||
elif [[ -e "$HOME/.nixpkgs/home.nix" ]]; then
|
||||
configFile="$HOME/.nixpkgs/home.nix"
|
||||
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
|
||||
'home.nix' "$HOME/.nixpkgs" "$hmConfigHome" >&2
|
||||
fi
|
||||
done
|
||||
|
||||
_i "No configuration file found. Please create one at %s" \
|
||||
"$defaultConfFile" >&2
|
||||
exit 1
|
||||
if [[ $configFile ]]; then
|
||||
HOME_MANAGER_CONFIG="$(realpath "$configFile")"
|
||||
else
|
||||
_i 'No configuration file found. Please create one at %s' \
|
||||
"$defaultConfFile" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function setHomeManagerNixPath() {
|
||||
|
@ -111,9 +124,24 @@ function setHomeManagerPathVariables() {
|
|||
}
|
||||
|
||||
function setFlakeAttribute() {
|
||||
local configFlake="${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/flake.nix"
|
||||
if [[ -z $FLAKE_ARG && ! -v HOME_MANAGER_CONFIG && -e "$configFlake" ]]; then
|
||||
FLAKE_ARG="$(dirname "$(readlink -f "$configFlake")")"
|
||||
if [[ -z $FLAKE_ARG && ! -v HOME_MANAGER_CONFIG ]]; then
|
||||
local configHome="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
local hmConfigHome="$configHome/home-manager"
|
||||
local nixpkgsConfigHome="$configHome/nixpkgs"
|
||||
|
||||
local configFlake
|
||||
|
||||
if [[ -e "$hmConfigHome/flake.nix" ]]; then
|
||||
configFlake="$hmConfigHome/flake.nix"
|
||||
elif [[ -e "$nixpkgsConfigHome/flake.nix" ]]; then
|
||||
configFlake="$nixpkgsConfigHome/flake.nix"
|
||||
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
|
||||
'flake.nix' "$nixpkgsConfigHome" "$hmConfigHome" >&2
|
||||
fi
|
||||
|
||||
if [[ -v configFlake ]]; then
|
||||
FLAKE_ARG="$(dirname "$(readlink -f "$configFlake")")"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "$FLAKE_ARG" ]]; then
|
||||
|
@ -121,7 +149,7 @@ function setFlakeAttribute() {
|
|||
case $FLAKE_ARG in
|
||||
*#*)
|
||||
local name="${FLAKE_ARG#*#}"
|
||||
;;
|
||||
;;
|
||||
*)
|
||||
local name="$USER"
|
||||
# Check both long and short hostnames; long first to preserve
|
||||
|
@ -134,7 +162,7 @@ function setFlakeAttribute() {
|
|||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
;;
|
||||
esac
|
||||
export FLAKE_CONFIG_URI="$flake#homeConfigurations.\"$name\""
|
||||
fi
|
||||
|
|
|
@ -15,7 +15,7 @@ in runCommand "home-manager-install" {
|
|||
shellHook = ''
|
||||
${hmBashLibInit}
|
||||
|
||||
confFile="''${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix"
|
||||
confFile="''${XDG_CONFIG_HOME:-$HOME/.config}/home-manager/home.nix"
|
||||
|
||||
if [[ ! -e $confFile ]]; then
|
||||
echo
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Home Manager\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
|
||||
"POT-Creation-Date: 2023-03-07 23:36+0100\n"
|
||||
"POT-Creation-Date: 2023-03-14 23:10+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -18,23 +18,32 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||
|
||||
#: home-manager/home-manager:60
|
||||
#: home-manager/home-manager:62
|
||||
msgid "No configuration file found at %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:79
|
||||
#. translators: The first '%s' specifier will be replaced by either
|
||||
#. 'home.nix' or 'flake.nix'.
|
||||
#: home-manager/home-manager:79 home-manager/home-manager:83
|
||||
#: home-manager/home-manager:138
|
||||
msgid ""
|
||||
"Keeping your Home Manager %s in %s is deprecated,\n"
|
||||
"please move it to %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:90
|
||||
msgid "No configuration file found. Please create one at %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:146
|
||||
#: home-manager/home-manager:174
|
||||
msgid "Can't inspect options of a flake configuration"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:185
|
||||
#: home-manager/home-manager:213
|
||||
msgid "Can't instantiate a flake configuration"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:258
|
||||
#: home-manager/home-manager:286
|
||||
msgid ""
|
||||
"There is %d unread and relevant news item.\n"
|
||||
"Read it by running the command \"%s news\"."
|
||||
|
@ -44,80 +53,80 @@ msgid_plural ""
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: home-manager/home-manager:272
|
||||
#: home-manager/home-manager:300
|
||||
msgid "Unknown \"news.display\" setting \"%s\"."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:279
|
||||
#: home-manager/home-manager:307
|
||||
#, sh-format
|
||||
msgid "Please set the $EDITOR environment variable"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:294
|
||||
#: home-manager/home-manager:322
|
||||
msgid "Cannot run build in read-only directory"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:378
|
||||
#: home-manager/home-manager:406
|
||||
msgid "No generation with ID %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:380
|
||||
#: home-manager/home-manager:408
|
||||
msgid "Cannot remove the current generation %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:382
|
||||
#: home-manager/home-manager:410
|
||||
msgid "Removing generation %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:401
|
||||
#: home-manager/home-manager:429
|
||||
msgid "No generations to expire"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:412
|
||||
#: home-manager/home-manager:440
|
||||
msgid "No home-manager packages seem to be installed."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:469
|
||||
#: home-manager/home-manager:497
|
||||
msgid "Unknown argument %s"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:485
|
||||
#: home-manager/home-manager:513
|
||||
msgid "This will remove Home Manager from your system."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:488
|
||||
#: home-manager/home-manager:516
|
||||
msgid "This is a dry run, nothing will actually be uninstalled."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:492
|
||||
#: home-manager/home-manager:520
|
||||
msgid "Really uninstall Home Manager?"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:498
|
||||
#: home-manager/home-manager:526
|
||||
msgid "Switching to empty Home Manager configuration..."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:525
|
||||
#: home-manager/home-manager:553
|
||||
msgid "Yay!"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:530
|
||||
#: home-manager/home-manager:558
|
||||
msgid "Home Manager is uninstalled but your home.nix is left untouched."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:695
|
||||
#: home-manager/home-manager:723
|
||||
msgid "%s: unknown option '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:696
|
||||
#: home-manager/home-manager:724
|
||||
msgid "Run '%s --help' for usage help"
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:730
|
||||
#: home-manager/home-manager:758
|
||||
msgid "expire-generations expects one argument, got %d."
|
||||
msgstr ""
|
||||
|
||||
#: home-manager/home-manager:752
|
||||
#: home-manager/home-manager:780
|
||||
msgid "Unknown command: %s"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Home Manager Modules\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
|
||||
"POT-Creation-Date: 2023-03-07 23:36+0100\n"
|
||||
"POT-Creation-Date: 2023-03-14 23:10+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -53,15 +53,15 @@ msgstr ""
|
|||
msgid "Activating %s"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:18
|
||||
#: modules/lib-bash/activation-init.sh:16
|
||||
msgid "Migrating profiles from %s to %s"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:77
|
||||
#: modules/lib-bash/activation-init.sh:75
|
||||
msgid "Sanity checking oldGenNum and oldGenPath"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:80
|
||||
#: modules/lib-bash/activation-init.sh:78
|
||||
msgid ""
|
||||
"The previous generation number and path are in conflict! These\n"
|
||||
"must be either both empty or both set but are now set to\n"
|
||||
|
@ -77,26 +77,26 @@ msgid ""
|
|||
"and trying home-manager switch again. Good luck!"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:97
|
||||
#: modules/lib-bash/activation-init.sh:95
|
||||
msgid "Starting Home Manager activation"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:101
|
||||
#: modules/lib-bash/activation-init.sh:99
|
||||
msgid "Sanity checking Nix"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:107
|
||||
#: modules/lib-bash/activation-init.sh:105
|
||||
msgid "This is a dry run"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:111
|
||||
#: modules/lib-bash/activation-init.sh:109
|
||||
msgid "This is a live run"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:118
|
||||
#: modules/lib-bash/activation-init.sh:116
|
||||
msgid "Using Nix version: %s"
|
||||
msgstr ""
|
||||
|
||||
#: modules/lib-bash/activation-init.sh:121
|
||||
#: modules/lib-bash/activation-init.sh:119
|
||||
msgid "Activation variables:"
|
||||
msgstr ""
|
||||
|
|
Loading…
Reference in a new issue