From 94fd39c41c755f787d925bbdaa8f8ac5c7154e75 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Wed, 11 Jan 2017 22:55:31 +0100 Subject: [PATCH] home-manager: add `build` command This will build a configuration into an `result` output directory. Does not create a new generation. --- home-manager/home-manager | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/home-manager/home-manager b/home-manager/home-manager index 47c9ebd1b..8f8b2dc61 100644 --- a/home-manager/home-manager +++ b/home-manager/home-manager @@ -1,23 +1,33 @@ #!@bash@/bin/bash -function doRebuild() { - if [[ -z "$1" ]] ; then +function doBuild() { + if [[ -z "$1" ]]; then echo "Need to provide path to configuration file." exit 1 fi - local confFile - confFile="$(realpath "$1")" + if [[ -z "$2" ]]; then + echo "Need to provide generation output path." + exit 1 + fi + local confFile output + confFile="$(realpath "$1")" + output="$(realpath "$2")" + + nix-build --show-trace \ + "@HOME_MANAGER_EXPR_PATH@" \ + --argstr modulesPath "@MODULES_PATH@" \ + --argstr confPath "$confFile" \ + -A activation-script \ + -o "$output" +} + +function doRebuild() { local wrkdir wrkdir="$(mktemp -d)" - if nix-build --show-trace \ - "@HOME_MANAGER_EXPR_PATH@" \ - --argstr modulesPath "@MODULES_PATH@" \ - --argstr confPath "$confFile" \ - -A activation-script \ - -o "$wrkdir/generation" ; then + if doBuild "$1" "$wrkdir/generation" ; then "$wrkdir/generation/activate" fi @@ -42,16 +52,21 @@ function doListPackages() { } function doHelp() { - echo "Usage: $0 {help | rebuild CONF | generations | packages}" + echo "Usage: $0 {help | build CONF | rebuild CONF" + echo " | generations | packages}" echo echo "Commands" echo " help Print this help" - echo " rebuild Rebuild the current environment" + echo " build Build configuration into result directory" + echo " rebuild Build and activate environment" echo " generations List all home environment generations" echo " packages List all packages installed in home-manager-path" } case "$1" in + build) + doBuild "$2" "result" + ;; rebuild) doRebuild "$2" ;;