#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: reconfigure [-U] reconfigure -h EOF } help() { cat <<-'EOF' Options: -U run update(1) before acting -h, --help show this message Switches the system: - reconfigure the Guix "home" environment; - Guix "system" if it exists; - NixOS if it exists. Examples: Just use it: $ reconfigure Update before reconfiguring: $ reconfigure -U EOF } for flag in "$@"; do case "$flag" in (--) break ;; (--help) usage help exit ;; (*) ;; esac done UPDATE=false while getopts 'Uh' flag; do case "$flag" in U) UPDATE=true ;; (h) usage help exit ;; (*) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) if [ "$(id -un)" = 'root' ]; then printf 'This script must *not* be run as root.\n\n' >&2 usage >&2 exit 2 fi set -x if [ "$UPDATE" = true ]; then update fi trap 'bins > /dev/null' EXIT HOSTNAME="$(hostname)" pass show "$(hostname)"/andreh | head -n1 | sudo -ES guix system -v3 reconfigure "$XDG_CONFIG_HOME"/guix/system.scm if [ -e /etc/nixos/configuration.nix ]; then pass show "$HOSTNAME"/andreh | head -n1 | sudo -S nixos-rebuild switch fi bins > /dev/null guix home -v3 reconfigure "$XDG_CONFIG_HOME"/guix/home.scm