infrastructure/nixos/klipper/default.nix
2025-09-06 23:05:37 -07:00

66 lines
1.7 KiB
Nix

{
pkgs,
config,
lib,
...
}: let
inherit (lib.modules) mkIf mkDefault;
inherit (config.services) octoprint;
cfg = config.services.klipper;
in {
services = {
klipper = {
enable = mkDefault true;
package = mkDefault pkgs.klipper-ender3v3se;
quiet = mkDefault true;
logFile = mkDefault "/var/log/klipper/klippy.log";
logRotate = mkDefault true;
octoprintIntegration = mkIf octoprint.enable (mkDefault true);
configFiles = [
./printer.cfg
./ender3v3se.cfg
./macros.cfg
];
settings = {
# allow settings to be saved by moonraker
bltouch.z_offset = mkDefault 1.85;
extruder = {
control = "pid";
#stock defaults provided by someone
#pid_Kp = 27.142000;
#pid_Ki = 1.371000;
#pid_Kd = 134.351000;
#recent PID_CALIBRATE results
pid_Kp = 30.573;
pid_Ki = 1.742;
pid_Kd = 134.141;
};
heater_bed = {
control = "pid";
#stock defaults provided by someone
#pid_Kp = 66.371000;
#pid_Ki = 0.846000;
#pid_Kd = 1301.702000;
#recent PID_CALIBRATE results
pid_Kp = 64.742;
pid_Ki = 0.684;
pid_Kd = 1531.969;
};
};
};
};
systemd = mkIf cfg.enable {
services.klipper = {
restartIfChanged = false;
serviceConfig = {
Nice = mkDefault (-5);
};
};
tmpfiles.rules = mkIf (cfg.logFile != null) [
"d ${dirOf cfg.logFile} 0755 ${cfg.user} ${cfg.group} 8w -"
];
};
services.udev.extraRules = mkIf cfg.enable ''
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyEnder3v3se"
'';
}