From 7b664c15c1f750f41e13ff93e8f0319b88ab79bf Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 1/6] moonraker: unstable-2022-04-23 -> unstable-2022-11-18 --- pkgs/servers/moonraker/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/moonraker/default.nix b/pkgs/servers/moonraker/default.nix index c46568d24da1..73595e6909ce 100644 --- a/pkgs/servers/moonraker/default.nix +++ b/pkgs/servers/moonraker/default.nix @@ -20,13 +20,13 @@ let ]); in stdenvNoCC.mkDerivation rec { pname = "moonraker"; - version = "unstable-2022-04-23"; + version = "unstable-2022-11-18"; src = fetchFromGitHub { owner = "Arksine"; repo = "moonraker"; - rev = "cd520ba91728abb5a3d959269fbd8e4f40d1eb0b"; - sha256 = "sha256-sopX9t+LjYldx+syKwU3I0x/VYy4hLyXfitG0uumayE="; + rev = "362bc1a3d3ad397416f7fc48b8efe33837428b90"; + sha256 = "sha256-cebRHOx2hg470jM1CoQAk13Whv+KN2qx97BTlpjxSZg="; }; nativeBuildInputs = [ makeWrapper ]; From ce86df4a2164c568e73f866eca0174f4ac121d0e Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 2/6] nixos/moonraker: Add zhaofengli as maintainer --- nixos/modules/services/misc/moonraker.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/modules/services/misc/moonraker.nix b/nixos/modules/services/misc/moonraker.nix index 62064b5d90fb..574df6d09ab0 100644 --- a/nixos/modules/services/misc/moonraker.nix +++ b/nixos/modules/services/misc/moonraker.nix @@ -184,5 +184,6 @@ in { meta.maintainers = with maintainers; [ cab404 vtuan10 + zhaofengli ]; } From 76583721855538f906f451d5711fa65729975299 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 3/6] nixos/moonraker: Pass -d (data-path) to moonraker Moonraker now stores a few more paths under data-path which defaults to $HOME. --- nixos/modules/services/misc/moonraker.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/misc/moonraker.nix b/nixos/modules/services/misc/moonraker.nix index 574df6d09ab0..5e29c1052381 100644 --- a/nixos/modules/services/misc/moonraker.nix +++ b/nixos/modules/services/misc/moonraker.nix @@ -149,7 +149,7 @@ in { script = '' cp /etc/moonraker.cfg ${cfg.configDir}/moonraker-temp.cfg chmod u+w ${cfg.configDir}/moonraker-temp.cfg - exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg + exec ${pkg}/bin/moonraker -d ${cfg.stateDir} -c ${cfg.configDir}/moonraker-temp.cfg ''; # Needs `ip` command From 7856ac79ac9edc10078986aba25e2271076f3645 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 4/6] nixos/moonraker: Deprecate configDir The config_path setting has been deprecated upstream. Mutable config files are now supposed to live under the unified data path. --- nixos/modules/services/misc/moonraker.nix | 48 ++++++++++++++++------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/nixos/modules/services/misc/moonraker.nix b/nixos/modules/services/misc/moonraker.nix index 5e29c1052381..ba964734f281 100644 --- a/nixos/modules/services/misc/moonraker.nix +++ b/nixos/modules/services/misc/moonraker.nix @@ -11,6 +11,8 @@ let else lib.concatMapStrings (s: "\n ${generators.mkValueStringDefault {} s}") l; mkKeyValue = generators.mkKeyValueDefault {} ":"; }; + + unifiedConfigDir = cfg.stateDir + "/config"; in { options = { services.moonraker = { @@ -30,11 +32,10 @@ in { }; configDir = mkOption { - type = types.path; - default = cfg.stateDir + "/config"; - defaultText = literalExpression ''config.${opt.stateDir} + "/config"''; + type = types.nullOr types.path; + default = null; description = lib.mdDoc '' - The directory containing client-writable configuration files. + Deprecated directory containing client-writable configuration files. Clients will be able to edit files in this directory via the API. This directory must be writable. ''; @@ -96,8 +97,18 @@ in { }; config = mkIf cfg.enable { - warnings = optional (cfg.settings ? update_manager) - ''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.''; + warnings = [] + ++ optional (cfg.settings ? update_manager) + ''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.'' + ++ optional (cfg.configDir != null) + '' + services.moonraker.configDir has been deprecated upstream and will be removed. + + Action: ${ + if cfg.configDir == unifiedConfigDir then "Simply remove services.moonraker.configDir from your config." + else "Move files from `${cfg.configDir}` to `${unifiedConfigDir}` then remove services.moonraker.configDir from your config." + } + ''; assertions = [ { @@ -124,20 +135,20 @@ in { port = cfg.port; klippy_uds_address = cfg.klipperSocket; }; - file_manager = { - config_path = cfg.configDir; - }; database = { database_path = "${cfg.stateDir}/database"; }; - }; + } // (lib.optionalAttrs (cfg.configDir != null) { + file_manager = { + config_path = cfg.configDir; + }; + }); fullConfig = recursiveUpdate cfg.settings forcedConfig; in format.generate "moonraker.cfg" fullConfig; systemd.tmpfiles.rules = [ "d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -" - "d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -" - ]; + ] ++ lib.optional (cfg.configDir != null) "d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -"; systemd.services.moonraker = { description = "Moonraker, an API web server for Klipper"; @@ -147,9 +158,16 @@ in { # Moonraker really wants its own config to be writable... script = '' - cp /etc/moonraker.cfg ${cfg.configDir}/moonraker-temp.cfg - chmod u+w ${cfg.configDir}/moonraker-temp.cfg - exec ${pkg}/bin/moonraker -d ${cfg.stateDir} -c ${cfg.configDir}/moonraker-temp.cfg + config_path=${ + # Deprecated separate config dir + if cfg.configDir != null then "${cfg.configDir}/moonraker-temp.cfg" + # Config in unified data path + else "${unifiedConfigDir}/moonraker-temp.cfg" + } + mkdir -p $(dirname "$config_path") + cp /etc/moonraker.cfg "$config_path" + chmod u+w "$config_path" + exec ${pkg}/bin/moonraker -d ${cfg.stateDir} -c "$config_path" ''; # Needs `ip` command From 9411ea9214a23fda8ad17fbe2386dbdec4545457 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 5/6] nixos/moonraker: Remove database_path The database_path setting has been deprecated upstream. The database now lives in `database` under the unified data path. It's same as the path we've been forcing: --- nixos/modules/services/misc/moonraker.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/nixos/modules/services/misc/moonraker.nix b/nixos/modules/services/misc/moonraker.nix index ba964734f281..a1e4d0ad17d8 100644 --- a/nixos/modules/services/misc/moonraker.nix +++ b/nixos/modules/services/misc/moonraker.nix @@ -135,9 +135,6 @@ in { port = cfg.port; klippy_uds_address = cfg.klipperSocket; }; - database = { - database_path = "${cfg.stateDir}/database"; - }; } // (lib.optionalAttrs (cfg.configDir != null) { file_manager = { config_path = cfg.configDir; From 385081693ecd71bed8d4352cd45457819abbcad9 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 19 Nov 2022 13:37:01 -0700 Subject: [PATCH 6/6] nixos/moonraker: Don't allow Moonraker to validate its systemd service Our service files are managed by NixOS and different from the upstream setup. If this is not disabled, Moonraker will want sudo access to modify the service files directly. --- nixos/modules/services/misc/moonraker.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nixos/modules/services/misc/moonraker.nix b/nixos/modules/services/misc/moonraker.nix index a1e4d0ad17d8..53638ded2963 100644 --- a/nixos/modules/services/misc/moonraker.nix +++ b/nixos/modules/services/misc/moonraker.nix @@ -135,6 +135,9 @@ in { port = cfg.port; klippy_uds_address = cfg.klipperSocket; }; + machine = { + validate_service = false; + }; } // (lib.optionalAttrs (cfg.configDir != null) { file_manager = { config_path = cfg.configDir;