Merge pull request #201963 from zhaofengli/moonraker-2022-11-18

moonraker: unstable-2022-04-23 -> unstable-2022-11-18, nixos/moonraker: fixes

authored by

K900 and committed by
GitHub
34f30851 a9c9d192

+37 -18
+34 -15
nixos/modules/services/misc/moonraker.nix
··· 11 else lib.concatMapStrings (s: "\n ${generators.mkValueStringDefault {} s}") l; 12 mkKeyValue = generators.mkKeyValueDefault {} ":"; 13 }; 14 in { 15 options = { 16 services.moonraker = { ··· 30 }; 31 32 configDir = mkOption { 33 - type = types.path; 34 - default = cfg.stateDir + "/config"; 35 - defaultText = literalExpression ''config.${opt.stateDir} + "/config"''; 36 description = lib.mdDoc '' 37 - The directory containing client-writable configuration files. 38 39 Clients will be able to edit files in this directory via the API. This directory must be writable. 40 ''; ··· 96 }; 97 98 config = mkIf cfg.enable { 99 - warnings = optional (cfg.settings ? update_manager) 100 - ''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.''; 101 102 assertions = [ 103 { ··· 124 port = cfg.port; 125 klippy_uds_address = cfg.klipperSocket; 126 }; 127 file_manager = { 128 config_path = cfg.configDir; 129 }; 130 - database = { 131 - database_path = "${cfg.stateDir}/database"; 132 - }; 133 - }; 134 fullConfig = recursiveUpdate cfg.settings forcedConfig; 135 in format.generate "moonraker.cfg" fullConfig; 136 137 systemd.tmpfiles.rules = [ 138 "d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -" 139 - "d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -" 140 - ]; 141 142 systemd.services.moonraker = { 143 description = "Moonraker, an API web server for Klipper"; ··· 147 148 # Moonraker really wants its own config to be writable... 149 script = '' 150 - cp /etc/moonraker.cfg ${cfg.configDir}/moonraker-temp.cfg 151 - chmod u+w ${cfg.configDir}/moonraker-temp.cfg 152 - exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg 153 ''; 154 155 # Needs `ip` command ··· 184 meta.maintainers = with maintainers; [ 185 cab404 186 vtuan10 187 ]; 188 }
··· 11 else lib.concatMapStrings (s: "\n ${generators.mkValueStringDefault {} s}") l; 12 mkKeyValue = generators.mkKeyValueDefault {} ":"; 13 }; 14 + 15 + unifiedConfigDir = cfg.stateDir + "/config"; 16 in { 17 options = { 18 services.moonraker = { ··· 32 }; 33 34 configDir = mkOption { 35 + type = types.nullOr types.path; 36 + default = null; 37 description = lib.mdDoc '' 38 + Deprecated directory containing client-writable configuration files. 39 40 Clients will be able to edit files in this directory via the API. This directory must be writable. 41 ''; ··· 97 }; 98 99 config = mkIf cfg.enable { 100 + warnings = [] 101 + ++ optional (cfg.settings ? update_manager) 102 + ''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.'' 103 + ++ optional (cfg.configDir != null) 104 + '' 105 + services.moonraker.configDir has been deprecated upstream and will be removed. 106 + 107 + Action: ${ 108 + if cfg.configDir == unifiedConfigDir then "Simply remove services.moonraker.configDir from your config." 109 + else "Move files from `${cfg.configDir}` to `${unifiedConfigDir}` then remove services.moonraker.configDir from your config." 110 + } 111 + ''; 112 113 assertions = [ 114 { ··· 135 port = cfg.port; 136 klippy_uds_address = cfg.klipperSocket; 137 }; 138 + machine = { 139 + validate_service = false; 140 + }; 141 + } // (lib.optionalAttrs (cfg.configDir != null) { 142 file_manager = { 143 config_path = cfg.configDir; 144 }; 145 + }); 146 fullConfig = recursiveUpdate cfg.settings forcedConfig; 147 in format.generate "moonraker.cfg" fullConfig; 148 149 systemd.tmpfiles.rules = [ 150 "d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -" 151 + ] ++ lib.optional (cfg.configDir != null) "d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -"; 152 153 systemd.services.moonraker = { 154 description = "Moonraker, an API web server for Klipper"; ··· 158 159 # Moonraker really wants its own config to be writable... 160 script = '' 161 + config_path=${ 162 + # Deprecated separate config dir 163 + if cfg.configDir != null then "${cfg.configDir}/moonraker-temp.cfg" 164 + # Config in unified data path 165 + else "${unifiedConfigDir}/moonraker-temp.cfg" 166 + } 167 + mkdir -p $(dirname "$config_path") 168 + cp /etc/moonraker.cfg "$config_path" 169 + chmod u+w "$config_path" 170 + exec ${pkg}/bin/moonraker -d ${cfg.stateDir} -c "$config_path" 171 ''; 172 173 # Needs `ip` command ··· 202 meta.maintainers = with maintainers; [ 203 cab404 204 vtuan10 205 + zhaofengli 206 ]; 207 }
+3 -3
pkgs/servers/moonraker/default.nix
··· 20 ]); 21 in stdenvNoCC.mkDerivation rec { 22 pname = "moonraker"; 23 - version = "unstable-2022-04-23"; 24 25 src = fetchFromGitHub { 26 owner = "Arksine"; 27 repo = "moonraker"; 28 - rev = "cd520ba91728abb5a3d959269fbd8e4f40d1eb0b"; 29 - sha256 = "sha256-sopX9t+LjYldx+syKwU3I0x/VYy4hLyXfitG0uumayE="; 30 }; 31 32 nativeBuildInputs = [ makeWrapper ];
··· 20 ]); 21 in stdenvNoCC.mkDerivation rec { 22 pname = "moonraker"; 23 + version = "unstable-2022-11-18"; 24 25 src = fetchFromGitHub { 26 owner = "Arksine"; 27 repo = "moonraker"; 28 + rev = "362bc1a3d3ad397416f7fc48b8efe33837428b90"; 29 + sha256 = "sha256-cebRHOx2hg470jM1CoQAk13Whv+KN2qx97BTlpjxSZg="; 30 }; 31 32 nativeBuildInputs = [ makeWrapper ];