status-im/status-go

View on GitHub
nix/scripts/upgrade.sh

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash
# This script upgrades Nix to specific version.
# https://nixos.org/manual/nix/stable/installation/upgrading.html
set -eo pipefail

GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
source "${GIT_ROOT}/scripts/colors.sh"
source "${GIT_ROOT}/nix/scripts/lib.sh"
source "${GIT_ROOT}/nix/scripts/source.sh"
source "${GIT_ROOT}/nix/scripts/version.sh"

nix_upgrade() {
    echo -e "Upgrading Nix interpreter to: ${GRN}${NIX_VERSION}${RST}" >&2
    nix-channel --update
    nix-env --install --attr "nixpkgs.${NIX_PACKAGE}" "nixpkgs.cacert"
    nix_daemon_restart
}

# Allow for sourcing the script
if [[ "${BASH_SOURCE[0]}" != "$0" ]]; then
    return
fi

if [[ "$(nix_current_version)" == "${NIX_VERSION}" ]]; then
    echo -e "Nix interpreter already on version: ${GRN}${NIX_VERSION}${RST}"
    exit 0
fi

NIX_INSTALL_TYPE=$(nix_install_type)
if [[ "${NIX_INSTALL_TYPE}" == "nixos" ]]; then
    echo -e "${YLW}WARNING:${RST} Upgrade Nix in your NixOS configuration!" >&2
    exit 0
elif [[ "${NIX_INSTALL_TYPE}" == "single" ]]; then
    nix_upgrade
elif [[ "${NIX_INSTALL_TYPE}" == "multi" ]]; then
    sudo -i bash -c "source ${PWD}/${0}; nix_upgrade"
fi