From 5969551a5cc52f9470b5ff5ca01327bf4bda82c1 Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Wed, 18 Mar 2020 00:02:38 +0100 Subject: home-manager: add instantiate subcommand It can be useful to simply instantiate a Home Manager configuration without actually building it, for example for the purpose of pre-building it with some custom command. PR #1099 --- home-manager/home-manager | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'home-manager/home-manager') 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 \ + "" \ + "${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 ;; -- cgit v1.2.3