1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2025-03-28 02:37:09 +00:00

add basic darwin-option command

This commit is contained in:
Daiderd Jordan 2016-12-15 21:52:53 +01:00
parent d54484505f
commit 942d662d1e
No known key found for this signature in database
GPG key ID: D02435D05B810C96
2 changed files with 78 additions and 32 deletions

View file

@ -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 <darwin> {}; $@"
}
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

View file

@ -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 '<darwin>' --no-out-link -A system)"
systemConfig="$(nix-build '<darwin>' --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