summary refs log tree commit diff
path: root/modules/klipperscreen.nix
blob: 9235360cc1d9e05215201b12ee8b07dda0146116 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{ 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";
  };

  # auto-restart cage.
  systemd.services."cage-tty1" = {
    startLimitBurst = 5;
    startLimitIntervalSec = 500;

    serviceConfig = {
      RestartSec = 5;
      Restart = "on-failure";
    };
  };
}