home-manager: add config file attribute

This commit is contained in:
Cornelius Mika 2017-08-17 10:16:27 +02:00 committed by Robert Helgesson
parent 3ef56576d3
commit ffbc7e723d
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86
2 changed files with 14 additions and 3 deletions

View file

@ -9,11 +9,15 @@
let let
homeManagerExpr = pkgs.writeText "home-manager.nix" '' homeManagerExpr = pkgs.writeText "home-manager.nix" ''
{ pkgs ? import <nixpkgs> {}, confPath }: { pkgs ? import <nixpkgs> {}, confPath, confAttr }:
let let
env = import <home-manager> { env = import <home-manager> {
configuration = import confPath; configuration =
let
conf = import confPath;
in
if confAttr == "" then conf else conf.''${confAttr};
pkgs = pkgs; pkgs = pkgs;
}; };
in in

View file

@ -82,6 +82,7 @@ function doBuild() {
nix-build $extraArgs \ nix-build $extraArgs \
"@HOME_MANAGER_EXPR_PATH@" \ "@HOME_MANAGER_EXPR_PATH@" \
--argstr confPath "$HOME_MANAGER_CONFIG" \ --argstr confPath "$HOME_MANAGER_CONFIG" \
--argstr confAttr "$HOME_MANAGER_CONFIG_ATTRIBUTE" \
-A activation-script \ -A activation-script \
-o "$output" -o "$output"
} }
@ -121,6 +122,8 @@ function doHelp() {
echo echo
echo " -f FILE The home configuration file." echo " -f FILE The home configuration file."
echo " Default is '~/.config/nixpkgs/home.nix'." echo " Default is '~/.config/nixpkgs/home.nix'."
echo " -A ATTRIBUTE Optional attribute that selects a configuration"
echo " expression in the configuration file."
echo " -I PATH Add a path to the Nix expression search path." echo " -I PATH Add a path to the Nix expression search path."
echo " -v Verbose output" echo " -v Verbose output"
echo " -n Do a dry run, only prints what actions would be taken" echo " -n Do a dry run, only prints what actions would be taken"
@ -135,8 +138,9 @@ function doHelp() {
} }
EXTRA_NIX_PATH=() EXTRA_NIX_PATH=()
HOME_MANAGER_CONFIG_ATTRIBUTE=""
while getopts f:I:vnh opt; do while getopts f:I:A:vnh opt; do
case $opt in case $opt in
f) f)
HOME_MANAGER_CONFIG="$OPTARG" HOME_MANAGER_CONFIG="$OPTARG"
@ -144,6 +148,9 @@ while getopts f:I:vnh opt; do
I) I)
EXTRA_NIX_PATH+=("$OPTARG") EXTRA_NIX_PATH+=("$OPTARG")
;; ;;
A)
HOME_MANAGER_CONFIG_ATTRIBUTE="$OPTARG"
;;
v) v)
export VERBOSE=1 export VERBOSE=1
;; ;;