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.
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. |
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."
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" ];
};
}