feat(klipper): deploy printer configs

This commit is contained in:
arcnmx 2024-09-03 11:53:17 -07:00
parent e04d59016b
commit 8925b00445
10 changed files with 125 additions and 69 deletions

View file

@ -1,31 +0,0 @@
[include fluidd.cfg]
[include ender3v3se.cfg]
[include macros.cfg]
[display_status]
[pause_resume]
[print_stats]
[virtual_sdcard]
path:/var/lib/moonraker/gcodes
[bed_mesh default]
version = 1
points =
-0.007500, 0.075000, 0.205000, 0.325000, 0.472500
-0.177500, -0.050000, 0.090000, 0.205000, 0.327500
-0.287500, -0.157500, -0.027500, 0.077500, 0.225000
-0.375000, -0.237500, -0.105000, 0.015000, 0.142500
-0.345000, -0.227500, -0.090000, 0.022500, 0.202500
x_count = 5
y_count = 5
mesh_x_pps = 2
mesh_y_pps = 2
algo = bicubic
tension = 0.2
min_x = 30.0
max_x = 207.0
min_y = 30.0
max_y = 215.48000000000002

53
modules/nixos/klipper.nix Normal file
View file

@ -0,0 +1,53 @@
{
pkgs,
config,
gensokyo-zone,
lib,
...
}: let
inherit (gensokyo-zone.lib) mapListToAttrs;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.modules) mkIf mkMerge mkAfter mkOptionDefault;
inherit (lib.attrsets) nameValuePair;
inherit (lib.strings) concatMapStrings escapeShellArg;
cfg = config.services.klipper;
includeFileName = "00-includes.cfg";
includeFile = pkgs.writeText "klipper-includes.cfg" (concatMapStrings (
path: "[include ${path}]\n"
)
cfg.configFiles);
mkIncludeSetting = path: nameValuePair "include ${path}" (mkOptionDefault {});
includeSettings = mapListToAttrs mkIncludeSetting (
if cfg.mutableConfig
then [includeFileName]
else cfg.configFiles
);
in {
options.services.klipper = with lib.types; {
quiet = mkEnableOption "more silent logs";
configFiles = mkOption {
type = listOf path;
default = [];
};
};
config.services.klipper = {
settings = mkMerge [
(mkIf (cfg.configFiles != []) includeSettings)
{
virtual_sdcard = mkIf cfg.mutableConfig {
path = mkOptionDefault "${cfg.mutableConfigFolder}/gcodes";
};
}
];
};
config.systemd.services.klipper = mkIf cfg.enable {
serviceConfig = mkIf cfg.quiet {
LogFilterPatterns = [
''~INFO:root:Stats''
];
};
preStart = mkIf (cfg.configFiles != [] && cfg.mutableConfig) (mkAfter ''
ln -sfT ${includeFile} ${escapeShellArg "${cfg.mutableConfigFolder}/${includeFileName}"}
'');
};
}

View file

@ -1,31 +0,0 @@
{
config,
gensokyo-zone,
lib,
...
}: let
inherit (gensokyo-zone.lib) mkAlmostOptionDefault;
inherit (lib.modules) mkIf mkDefault;
inherit (config.services) moonraker octoprint;
cfg = config.services.klipper;
in {
services = {
klipper = {
enable = mkDefault true;
octoprintIntegration = mkIf octoprint.enable (mkDefault true);
user = mkIf moonraker.enable (mkAlmostOptionDefault "moonraker");
group = mkIf moonraker.enable (mkAlmostOptionDefault "moonraker");
mutableConfig = true;
mutableConfigFolder = mkIf moonraker.enable (mkDefault "${moonraker.stateDir}/config");
settings = {};
};
};
systemd = mkIf cfg.enable {
services.klipper = {
restartIfChanged = false;
serviceConfig.LogFilterPatterns = [
''~INFO:root:Stats''
];
};
};
}

25
nixos/klipper/default.nix Normal file
View file

@ -0,0 +1,25 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkIf mkAfter mkDefault;
inherit (config.services) octoprint;
cfg = config.services.klipper;
in {
services = {
klipper = {
enable = mkDefault true;
quiet = mkDefault true;
octoprintIntegration = mkIf octoprint.enable (mkDefault true);
configFiles = [
./printer.cfg
./ender3v3se.cfg
./macros.cfg
];
};
};
systemd.services.klipper = mkIf cfg.enable {
restartIfChanged = false;
};
}

View file

@ -165,3 +165,22 @@ mesh_max:207,215.5
mesh_min:30,30 mesh_min:30,30
probe_count:5,5 probe_count:5,5
speed:120 speed:120
[bed_mesh fallback]
version = 1
points =
-0.007500, 0.075000, 0.205000, 0.325000, 0.472500
-0.177500, -0.050000, 0.090000, 0.205000, 0.327500
-0.287500, -0.157500, -0.027500, 0.077500, 0.225000
-0.375000, -0.237500, -0.105000, 0.015000, 0.142500
-0.345000, -0.227500, -0.090000, 0.022500, 0.202500
x_count = 5
y_count = 5
mesh_x_pps = 2
mesh_y_pps = 2
algo = bicubic
tension = 0.2
min_x = 30.0
max_x = 207.0
min_y = 30.0
max_y = 215.48000000000002

View file

@ -48,7 +48,6 @@
#gcode: #gcode:
[virtual_sdcard] [virtual_sdcard]
path: ~/printer_data/gcodes
on_error_gcode: CANCEL_PRINT on_error_gcode: CANCEL_PRINT
[pause_resume] [pause_resume]

View file

@ -5,14 +5,14 @@
lib, lib,
... ...
}: let }: let
inherit (lib.modules) mkIf mkDefault; inherit (lib.modules) mkIf mkBefore mkDefault;
inherit (gensokyo-zone.lib) domain; inherit (gensokyo-zone.lib) mkAlmostOptionDefault domain;
inherit (config.services) klipper; inherit (config.services) klipper;
cfg = config.services.moonraker; cfg = config.services.moonraker;
in { in {
sops.secrets = { sops.secrets = {
moonraker_cfg = { moonraker_cfg = {
sopsFile = ./secrets/moonraker.yaml; sopsFile = mkDefault ../secrets/moonraker.yaml;
path = "${cfg.stateDir}/config/secrets.conf"; path = "${cfg.stateDir}/config/secrets.conf";
owner = cfg.user; owner = cfg.user;
}; };
@ -60,10 +60,28 @@ in {
}; };
}; };
}; };
klipper = mkIf cfg.enable {
user = mkAlmostOptionDefault "moonraker";
group = mkAlmostOptionDefault "moonraker";
mutableConfig = true;
mutableConfigFolder = mkDefault "${cfg.stateDir}/config";
configFiles = mkBefore [./fluidd.cfg];
settings = {
print_stats = {};
pause_resume = {};
display_status = {};
virtual_sdcard = {
path = "${cfg.stateDir}/gcodes";
on_error_gcode = mkAlmostOptionDefault "CANCEL_PRINT";
}; };
systemd.services.moonraker = mkIf cfg.enable { };
};
};
systemd.services = mkIf cfg.enable {
moonraker = {
restartIfChanged = false; restartIfChanged = false;
}; };
};
networking.firewall = mkIf cfg.enable { networking.firewall = mkIf cfg.enable {
interfaces.lan.allowedTCPPorts = [ interfaces.lan.allowedTCPPorts = [
cfg.port cfg.port

View file

@ -0,0 +1,5 @@
[display_status]
[pause_resume]
[print_stats]

View file

@ -19,7 +19,6 @@ in {
nixos.cameras.printer nixos.cameras.printer
nixos.cameras.logistics-webcam nixos.cameras.logistics-webcam
nixos.klipper nixos.klipper
nixos.moonraker
./hardware-configuration.nix ./hardware-configuration.nix
]; ];