aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/man-home-manager.xml14
-rw-r--r--home-manager/completion.bash2
-rw-r--r--home-manager/home-manager29
3 files changed, 43 insertions, 2 deletions
diff --git a/doc/man-home-manager.xml b/doc/man-home-manager.xml
index 117bc494687..90f58063ea9 100644
--- a/doc/man-home-manager.xml
+++ b/doc/man-home-manager.xml
@@ -18,6 +18,10 @@
</arg>
<arg choice="plain">
+ instantiate
+ </arg>
+
+ <arg choice="plain">
edit
</arg>
@@ -165,6 +169,16 @@
</varlistentry>
<varlistentry>
<term>
+ <option>instantiate</option>
+ </term>
+ <listitem>
+ <para>
+ Instantiate the configuration and print the resulting derivation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
<option>edit</option>
</term>
<listitem>
diff --git a/home-manager/completion.bash b/home-manager/completion.bash
index 501b87279fa..e9f04578916 100644
--- a/home-manager/completion.bash
+++ b/home-manager/completion.bash
@@ -278,7 +278,7 @@ _home-manager_completions ()
#--------------------------#
local Subcommands
- Subcommands=( "help" "edit" "build" "switch" "generations" "remove-generations" "expire-generations" "packages" "news" "uninstall" )
+ Subcommands=( "help" "edit" "build" "instantiate" "switch" "generations" "remove-generations" "expire-generations" "packages" "news" "uninstall" )
# ^ ยซ home-manager ยป's subcommands.
diff --git a/home-manager/home-manager b/home-manager/home-manager
index 7fa5c35c300..f7436e3e290 100644
--- a/home-manager/home-manager
+++ b/home-manager/home-manager
@@ -74,6 +74,28 @@ function setHomeManagerNixPath() {
done
}
+function doInstantiate() {
+ setConfigFile
+ setHomeManagerNixPath
+
+ local extraArgs=("$@")
+
+ for p in "${EXTRA_NIX_PATH[@]}"; do
+ extraArgs=("${extraArgs[@]}" "-I" "$p")
+ done
+
+ if [[ -v VERBOSE ]]; then
+ extraArgs=("${extraArgs[@]}" "--show-trace")
+ fi
+
+ nix-instantiate \
+ "<home-manager/home-manager/home-manager.nix>" \
+ "${extraArgs[@]}" \
+ "${PASSTHROUGH_OPTS[@]}" \
+ --argstr confPath "$HOME_MANAGER_CONFIG" \
+ --argstr confAttr "$HOME_MANAGER_CONFIG_ATTRIBUTE"
+}
+
function doBuildAttr() {
setConfigFile
setHomeManagerNixPath
@@ -441,6 +463,8 @@ function doHelp() {
echo
echo " build Build configuration into result directory"
echo
+ echo " instantiate Instantiate the configuration and print the resulting derivation"
+ echo
echo " switch Build and activate configuration"
echo
echo " generations List all home environment generations"
@@ -471,7 +495,7 @@ while [[ $# -gt 0 ]]; do
opt="$1"
shift
case $opt in
- build|edit|expire-generations|generations|help|news|packages|remove-generations|switch|uninstall)
+ build|instantiate|edit|expire-generations|generations|help|news|packages|remove-generations|switch|uninstall)
COMMAND="$opt"
;;
-2)
@@ -542,6 +566,9 @@ case $COMMAND in
build)
doBuild
;;
+ instantiate)
+ doInstantiate
+ ;;
switch)
doSwitch
;;