diff --git a/modules/nixos/klipper.nix b/modules/nixos/klipper.nix index 13500d60..18ed4cf6 100644 --- a/modules/nixos/klipper.nix +++ b/modules/nixos/klipper.nix @@ -5,7 +5,7 @@ lib, ... }: let - inherit (gensokyo-zone.lib) mapListToAttrs; + inherit (gensokyo-zone.lib) mapListToAttrs mkAlmostOptionDefault; inherit (lib.options) mkOption mkEnableOption; inherit (lib.modules) mkIf mkMerge mkAfter mkOptionDefault; inherit (lib.attrsets) nameValuePair; @@ -25,6 +25,7 @@ in { options.services.klipper = with lib.types; { quiet = mkEnableOption "more silent logs"; + logRotate = mkEnableOption "logrotate"; configFiles = mkOption { type = listOf path; default = []; @@ -54,4 +55,7 @@ in { ln -sfT ${includeFile} ${escapeShellArg "${cfg.mutableConfigFolder}/${includeFileName}"} ''); }; + config.services.logrotate.settings.klipper = mkIf (cfg.enable && cfg.logRotate && cfg.logFile != null) { + files = mkAlmostOptionDefault cfg.logFile; + }; } diff --git a/nixos/klipper/default.nix b/nixos/klipper/default.nix index 98c0a8d4..a8f28d84 100644 --- a/nixos/klipper/default.nix +++ b/nixos/klipper/default.nix @@ -11,8 +11,10 @@ in { services = { klipper = { enable = mkDefault true; - package = pkgs.klipper-ender3v3se; + 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 @@ -25,8 +27,13 @@ in { }; }; }; - systemd.services.klipper = mkIf cfg.enable { - restartIfChanged = false; + systemd = mkIf cfg.enable { + services.klipper = { + restartIfChanged = false; + }; + 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"