{ config, pkgs, ... }: let inherit (pkgs) writeText klipperscreen; ksConfig = let inherit (config.services.moonraker) address port; in writeText "KlipperScreen.conf" '' [printer fourmi] moonraker_host: ${address} moonraker_port: ${toString port} ''; in { # avoid conflict between console and cage. console.enable = false; # without this the kiosk doesn't even want to get loaded :) systemd.defaultUnit = "graphical.target"; services.cage = { enable = true; program = "${klipperscreen}/bin/KlipperScreen -c ${ksConfig}"; extraArguments = [ "-d" ]; environment = { # don't fail with no devices found. "WLR_LIBINPUT_NO_DEVICES" = "1"; }; user = "klipper"; }; }