Inštalácia grafickej plochy s CuroUI na NixOS

curl -sL "linux.curo.sk/inst-curoui" | sudo sh

Na konci inštalácie budeš vyzvaný, aby si reštartoval počítač, čo aktivuje grafický plochu.

Parametre

Parameter Hodnoty Vysvetlenie
hostname localhost:3000 prednastavý server, kam sa bude CuroUI pripájať
render sh alebo html Určuje, či sa má stránka vytvoriť pre Internetový prehliadač alebo príkazový riadok.
debug-render-script 1 alebo 0 Používa sa pri zlepšovaní a testovaní scriptov.

Čo sa vykoná?

echo "kontrola prostredia..." 
assertIsNixOS
assertIsNotNixInstaller
assertIsRoot

Môžeme stiahňuť configuráciu pre grafické prostredie a script pre konfiguráciu desktopu používateľov

_download nixos-curo-ui.nix /etc/nixos/curo-ui.nix

aplikujme zmeny v NixOS, výsledkom bude možnosť prihlásiť sa cez grafickú obrazovku

nixos-rebuild switch

Najlepšie je reštartovať celý počítač

cat <<EOF

██╗  ██╗ ██████╗ ████████╗ ██████╗ ██╗   ██╗ ██████╗          
██║  ██║██╔═══██╗╚══██╔══╝██╔═══██╗██║   ██║██╔═══██╗         
███████║██║   ██║   ██║   ██║   ██║██║   ██║██║   ██║         
██╔══██║██║   ██║   ██║   ██║   ██║╚██╗ ██╔╝██║   ██║         
██║  ██║╚██████╔╝   ██║   ╚██████╔╝ ╚████╔╝ ╚██████╔╝██╗██╗██╗
╚═╝  ╚═╝ ╚═════╝    ╚═╝    ╚═════╝   ╚═══╝   ╚═════╝ ╚═╝╚═╝╚═╝
                                                              
EOF
_log "INFO: Reštartuj počítač (príkaz 'sudo reboot') a môžeš sa prihlásiť do grafického prostredia."

Jednotlivé časti scriptu

Začneme hlavičkou scriptu, ktorá zabezpečí, aby sme nepokračovali, ak nastane nepredvídaná chyba:

#!/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

Skontrolujeme, či sme v NixOS distribúcii

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
}

Skontrolujeme, či máme oprávnenia používateľa root, lebo inak by všetky detekcie nemuseli byť správne

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
}

Budeme sa chcieť uistiť, že NixOS nie je spustený z inštalačného média

isNixInstaller() {
  if grep -q "imports = \[ <nixpkgs/nixos/modules/installer" /etc/nixos/configuration.nix; then
    echo 1
  else
    echo 0
  fi
}

assertIsNixInstaller() {
  MESSAGE="${1:-Program vyžaduje prostredie Linux distribúcie NixOS spustenej z inštalačného média.}"
  if [ "x$(isNixInstaller)" == "x0" ]; then
    echo "ERROR: $MESSAGE" >/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
}

Budeme potrebovať stiahnuť niektoré konfiguračné súbory

_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}?&${add}" -o "${dstName}"
}

https://github.com/NixOS/nixpkgs/compare/master...sotommi:nixpkgs:curo-ui

{ lib, appimageTools, fetchurl }:

let pname = "curo-ui";
version = "6.3.23";
src = fetchurl {
  url = "https://dl.curo.sk/curoapp/${pname}-x86_64.AppImage";
   sha256 = "1wkxck4ssblx4dp3hningrr4gkzn947321w2m8wx3173n5vmdhmg";
};

appimageContents = appimageTools.extractType2 {
  inherit pname version src;
};

in appimageTools.wrapType2 {
  inherit pname version src;
  extraInstallCommands = '' mv $out/bin/${pname}-${version} $out/bin/${pname} install -m 444 -D ${appimageContents}/curo.desktop $out/share/applications/curo.desktop install -m 444 -D ${appimageContents}/curo.png $out/share/icons/hicolor/512x512/apps/curo.png substituteInPlace $out/share/applications/curo.desktop
--replace 'Exec=AppRun' 'Exec=${pname}' '';
  meta = with lib; {
    description = "Healthcare information system Curo.";
    longDescription = '' Curo UI is a healthcare information system designed for the needs of healthcare facilities. Obtain an additional assistant at your clinic. Less administration when managing your clinic. Curo is appreciated by doctors and nurses alike. Curo helps you focus on patients and their treatment. '';
    homepage = "https://www.curo.sk/";
    downloadPage = "https://www.curo.sk/l/ui";
    maintainers = with maintainers; [ sotommi ];
    license = licenses.unfree;
    platforms = [ "x86_64-linux" ];
  };
}

Verzia: 0.1.0 © Curo s.r.o. | Táto stránka nepoužíva keksíky a nepotrebuje JavaScript.
Komunikujeme cez  Matrix