summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMel <mel@rnrd.eu>2025-04-16 19:25:17 +0200
committerMel <mel@rnrd.eu>2025-04-17 02:01:41 +0200
commit2c077263e033aaaa602d1eead55804325a492116 (patch)
treec8afc315390210504796cb8b22875e0be32795ef /modules
parent22eb149ed7e337fb49eca779e9f7b8fc1600d823 (diff)
downloadnetwork-2c077263e033aaaa602d1eead55804325a492116.tar.zst
network-2c077263e033aaaa602d1eead55804325a492116.zip
Initial Klipper+Moonraker service configuration
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'modules')
-rw-r--r--modules/klipper.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/klipper.nix b/modules/klipper.nix
new file mode 100644
index 0000000..f23e66c
--- /dev/null
+++ b/modules/klipper.nix
@@ -0,0 +1,73 @@
+{ me, pkgs, ... }:
+
+let
+ moonrakerPort = 7125;
+ klipperDir = "/srv/klipper";
+
+ serial = "/dev/ttyUSB0";
+
+ user = "klipper";
+ group = "klipper";
+
+ klipper-config = pkgs.runCommand "klipper-printer.cfg" {} ''
+ cat \
+ ${../assets/printer/printer.cfg} \
+ ${../assets/printer/mainsail.cfg} \
+ > $out
+ '';
+in
+{
+ users.users.klipper = {
+ isSystemUser = true;
+ description = "Klipper user";
+ home = "/srv/klipper";
+ inherit group;
+ extraGroups = [ "dialout" ]; # for serial access
+ };
+ users.groups.klipper = {};
+
+ services = {
+ klipper = {
+ enable = true;
+ inherit user group;
+
+ firmwares.mcu = {
+ enable = true;
+ enableKlipperFlash = true;
+ inherit serial;
+ configFile = ../assets/printer/firmware.cfg;
+ };
+
+ configFile = klipper-config;
+ # will change to just `configDir` in 25.05,
+ # update it then.
+ mutableConfig = true;
+ mutableConfigFolder = "${klipperDir}/config";
+ };
+
+ moonraker = {
+ enable = true;
+ inherit user group;
+
+ address = me.tailscale.ip;
+ port = moonrakerPort;
+
+ stateDir = "${klipperDir}/moonraker";
+ settings = {
+ authorization = {
+ cors_domains = [
+ "https://app.fluidd.xyz"
+ "https://my.mainsail.xyz"
+ "https://*.rnrd.fyi"
+ ];
+
+ trusted_clients = [
+ "10.0.0.0/8"
+ "127.0.0.1/24"
+ "192.168.178.0/24"
+ ];
+ };
+ };
+ };
+ };
+}