#!/usr/bin/env bash set -e -o errexit set -o pipefail if [[ "${DEBUG}" == 'true' ]]; then set -o xtrace else export DEBUG= fi set -o nounset isNixOS() { if [ -f /etc/NIXOS ]; then echo 1 else echo 0 fi } assertIsNixOS() { MESSAGE="${1:-Program vyžaduje prostedie Linux distribúcie NixOS.}" if [ "x$(isNixOS)" == "x0" ]; then echo "ERROR: $MESSAGE" >/dev/stderr exit 1 fi } assertIsSupportedNixOS() { REQUIRED_VER="${1:-22.05}" assertIsNixOS source /etc/os-release if [ "${VERSION_ID}" != "${REQUIRED_VER}" ]; then echo "ERROR: Vyžaduje sa verzia NixOS ${REQUIRED_VER}. Aktuálne máš spustenú verziu ${VERSION_ID}." >/dev/stderr exit 1 fi } isRoot() { if [ $UID != 0 ]; then echo 0 else echo 1 fi } assertIsRoot() { MESSAGE="${1:-Program vyžaduje práva super používateľa. Použite príkaz 'sudo -i'.}" if [ "x$(isRoot)" == "x0" ]; then echo "ERROR: $MESSAGE" >/dev/stderr exit 1 fi } isNixInstaller() { if grep -q "imports = \[ /dev/stderr exit 1 fi } assertIsNotNixInstaller() { MESSAGE="${1:-Program nie je možné spustiť v prostredí NixOS inštalačného média.}" if [ "x$(isNixInstaller)" != "x0" ]; then echo "ERROR: $MESSAGE" >/dev/stderr exit 1 fi } _log() { local text=$1 echo ": ${text}" # >&2 } export _ADD_PARAMS=() _join() { (($#)) || return 1 # At least delimiter required local -- delim="$1" str IFS= shift str="${*/#/$delim}" # Expand arguments with prefixed delimiter (Empty IFS) echo "${str:${#delim}}" # Echo without first delimiter } _download() { if [[ $# -ne 2 ]]; then echo 'missing parameters source and target' exit 1 fi local srcName=$1 local dstName=$2 local add="" if [ ${#_ADD_PARAMS[@]} -gt 0 ]; then add=$(_join '&' "${_ADD_PARAMS[@]}") fi # TODO test that local files work # TODO should dstName contain the /mnt prefix or should we test if we are in installation mode? _log "INFO kopirujem ${srcName} do $dstName" curl -sL "linux.curo.sk/d/${srcName}?render=sh&${add}" -o "${dstName}" } diffNixConfig () { mkdir -p ${TMP_DIR} _download nixos-curo-md.nix ${TMP_DIR}/curo-md.nix _download nixos-curo-base.nix ${TMP_DIR}/curo-base.nix diff --color ${TMP_DIR}/ /etc/nixos/ } echo "kontrola prostredia..." assertIsNixOS assertIsRoot export TMP_DIR=/tmp/curo-newest diffNixConfig