configured uptime-kuma

This commit is contained in:
Rouven Seifert 2023-07-15 11:54:30 +02:00
parent 6577b08dab
commit 48e94316c0
Signed by: rouven.seifert
GPG key ID: B95E8FE6B11C4D09
5 changed files with 98 additions and 74 deletions

View file

@ -10,6 +10,7 @@
./modules/backup
./modules/hydra
./modules/nextcloud
./modules/uptime-kuma
./modules/vaultwarden
./modules/nginx
];

View file

@ -0,0 +1,18 @@
{ ... }:
let
domain = "monitoring.rfive.de";
in
{
services.uptime-kuma = {
enable = true;
};
services.nginx.virtualHosts."${domain}" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:3001";
proxyWebsockets = true;
};
};
}

View file

@ -22,6 +22,11 @@
pkiBundle = "/etc/secureboot";
configurationLimit = 10;
};
extraModulePackages = [
config.boot.kernelPackages.v4l2loopback.out
];
loader.systemd-boot.editor = false;
loader.efi.canTouchEfiVariables = true;
kernelPackages = pkgs.linuxPackages_latest;

View file

@ -1,57 +1,57 @@
{ config, lib, pkgs, ... }:
# Virtualisation with gpu passthrough
# Following https://astrid.tech/2022/09/22/0/nixos-gpu-vfio/
let
gpuHook = pkgs.writeShellScript "gpuhook.sh" ''
export PATH=$PATH:${lib.makeBinPath [pkgs.pciutils pkgs.kmod pkgs.psmisc pkgs.systemd pkgs.coreutils]}
gpu_domains=(
win11
)
function gpu_begin {
set -x
device=$(lspci -nnD | grep "VGA compatible controller" | grep Intel)
# Stop display manager
systemctl stop greetd.service
# Unbind vtconsole
for i in /sys/class/vtconsole/*/bind; do
echo 0 > "$i"
done
# Kill pulseaudio
killall pipewire
killall pipewire-pulse
# Unbind GPU
echo "$device" | cut -d' ' -f1 > /sys/module/i915/drivers/pci:i915/unbind
# Unload modules
rmmod snd_hda_intel
rmmod i915
# Load vfio
modprobe vfio-pci ids="$(echo "$device" | grep -o 8086:....)"
}
function gpu_end {
set -x
# Unload vfio
rmmod vfio_pci
# Load modules
modprobe snd_hda_intel
modprobe i915
# Rebind vtconsole
for i in /sys/class/vtconsole/*/bind; do
echo 1 > "$i"
done
# Start display manager
systemctl start greetd.service
}
# Run only for gpu_domains
for d in "''${gpu_domains[@]}"; do
[ "$d" = "$1" ] && gpu_domain=true
done
if [ "$gpu_domain" = true ]; then
[ "$2" = prepare ] && [ "$3" = begin ] && gpu_begin
[ "$2" = release ] && [ "$3" = end ] && gpu_end
fi
true
'';
in
# let
# gpuHook = pkgs.writeShellScript "gpuhook.sh" ''
# export PATH=$PATH:${lib.makeBinPath [pkgs.pciutils pkgs.kmod pkgs.psmisc pkgs.systemd pkgs.coreutils]}
# gpu_domains=(
# win11
# )
# function gpu_begin {
# set -x
# device=$(lspci -nnD | grep "VGA compatible controller" | grep Intel)
# # Stop display manager
# systemctl stop greetd.service
# # Unbind vtconsole
# for i in /sys/class/vtconsole/*/bind; do
# echo 0 > "$i"
# done
# # Kill pulseaudio
# killall pipewire
# killall pipewire-pulse
# # Unbind GPU
# echo "$device" | cut -d' ' -f1 > /sys/module/i915/drivers/pci:i915/unbind
# # Unload modules
# rmmod snd_hda_intel
# rmmod i915
# # Load vfio
# modprobe vfio-pci ids="$(echo "$device" | grep -o 8086:....)"
# }
# function gpu_end {
# set -x
# # Unload vfio
# rmmod vfio_pci
# # Load modules
# modprobe snd_hda_intel
# modprobe i915
# # Rebind vtconsole
# for i in /sys/class/vtconsole/*/bind; do
# echo 1 > "$i"
# done
# # Start display manager
# systemctl start greetd.service
# }
# # Run only for gpu_domains
# for d in "''${gpu_domains[@]}"; do
# [ "$d" = "$1" ] && gpu_domain=true
# done
# if [ "$gpu_domain" = true ]; then
# [ "$2" = prepare ] && [ "$3" = begin ] && gpu_begin
# [ "$2" = release ] && [ "$3" = end ] && gpu_end
# fi
# true
# '';
# in
{
boot.kernelParams = [ "intel_iommu=on" ];
@ -74,16 +74,16 @@ in
environment.systemPackages = with pkgs; [
virt-viewer
];
systemd.services.libvirtd.preStart =
''
mkdir -p /var/lib/libvirt/hooks
chmod 755 /var/lib/libvirt/hooks
# systemd.services.libvirtd.preStart =
# ''
# mkdir -p /var/lib/libvirt/hooks
# chmod 755 /var/lib/libvirt/hooks
# Copy hook files
cp -f ${gpuHook} /var/lib/libvirt/hooks/qemu
# # Copy hook files
# cp -f ${gpuHook} /var/lib/libvirt/hooks/qemu
# Make them executable
chmod +x /var/lib/libvirt/hooks/qemu
'';
# # Make them executable
# chmod +x /var/lib/libvirt/hooks/qemu
# '';
}