From 942d662d1e2a2b22a25a135a069c43bdda042f37 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Thu, 15 Dec 2016 21:52:53 +0100 Subject: [PATCH] add basic darwin-option command --- pkgs/nix-tools/darwin-option.sh | 52 ++++++++++++++++++++++++++-- pkgs/nix-tools/darwin-rebuild.sh | 58 ++++++++++++++++---------------- 2 files changed, 78 insertions(+), 32 deletions(-) diff --git a/pkgs/nix-tools/darwin-option.sh b/pkgs/nix-tools/darwin-option.sh index 798317b..24c21f6 100755 --- a/pkgs/nix-tools/darwin-option.sh +++ b/pkgs/nix-tools/darwin-option.sh @@ -5,8 +5,54 @@ export PATH=@path@:$PATH showSyntax() { - echo "$0: not implemented" >&2 - exit 1 + echo "$0: not implemented" >&2 + exit 1 } -showSyntax +evalNix() { + nix-instantiate --eval --strict -E "with import {}; $@" +} + +evalAttrs() { + evalNix "builtins.concatStringsSep \"\n\" (builtins.attrNames $@)" +} + +evalOpt() { + evalNix "options.$option.$@" || true +} + +# Parse the command line. +origArgs=("$@") +option= + +while [ "$#" -gt 0 ]; do + i="$1"; shift 1 + case "$i" in + --help) + showSyntax + ;; + *) + option="$i" + ;; + esac +done + +if [ -z "$option" ]; then showSyntax; fi + +if [ "$(evalOpt "_type" 2> /dev/null)" = '"option"' ]; then + echo "Value:" + evalOpt "value" + echo + echo "Default:" + evalOpt "default" + echo + echo "Example:" + evalOpt "example" + echo + echo "Description:" + eval printf $(evalOpt "description") + echo +else + eval printf $(evalAttrs "options.$option") + echo +fi diff --git a/pkgs/nix-tools/darwin-rebuild.sh b/pkgs/nix-tools/darwin-rebuild.sh index 672c65a..3dce729 100644 --- a/pkgs/nix-tools/darwin-rebuild.sh +++ b/pkgs/nix-tools/darwin-rebuild.sh @@ -5,8 +5,8 @@ export PATH=@path@:$PATH showSyntax() { - exec man darwin-rebuild - exit 1 + exec man darwin-rebuild + exit 1 } # Parse the command line. @@ -14,47 +14,47 @@ origArgs=("$@") action= while [ "$#" -gt 0 ]; do - i="$1"; shift 1 - case "$i" in - --help) - showSyntax - ;; - switch|build) - action="$i" - ;; - *) - echo "$0: unknown option \`$i'" - exit 1 - ;; - esac + i="$1"; shift 1 + case "$i" in + --help) + showSyntax + ;; + switch|build) + action="$i" + ;; + *) + echo "$0: unknown option \`$i'" + exit 1 + ;; + esac done if [ -z "$action" ]; then showSyntax; fi echo "building the system configuration..." >&2 if [ "$action" = switch -o "$action" = build ]; then - systemConfig="$(nix-build '' --no-out-link -A system)" + systemConfig="$(nix-build '' --no-out-link -A system)" fi if [ "$action" = build ]; then - echo $systemConfig + echo $systemConfig fi if [ "$action" = switch ]; then - profileDir=$(dirname @profile@) + profileDir=$(dirname @profile@) - if [ "$USER" != root -a ! -w $profileDir ]; then - sudo nix-env -p @profile@ --set $systemConfig - else - nix-env -p @profile@ --set $systemConfig - fi + if [ "$USER" != root -a ! -w $profileDir ]; then + sudo nix-env -p @profile@ --set $systemConfig + else + nix-env -p @profile@ --set $systemConfig + fi - if [ "$USER" != root ]; then - sudo $systemConfig/activate - else - $systemConfig/activate - fi + if [ "$USER" != root ]; then + sudo $systemConfig/activate + else + $systemConfig/activate + fi - $systemConfig/activate-user + $systemConfig/activate-user fi