diff --git a/nixarr/sabnzbd/config.nix b/nixarr/sabnzbd/config.nix index d8a67ae..a2f6cba 100644 --- a/nixarr/sabnzbd/config.nix +++ b/nixarr/sabnzbd/config.nix @@ -30,33 +30,11 @@ }; }; - api-key-configs = { - misc = { - api_key = ""; - nzb_key = ""; - }; - }; - - compiled-configs = {misc = user-configs.misc // api-key-configs.misc;}; - ini-base-config-file = pkgs.writeTextFile { name = "base-config.ini"; - text = lib.generators.toINI {} compiled-configs; + text = lib.generators.toINI {} user-configs; }; - mkSedEditValue = name: value: ''sed -E 's%(\b${name} ?= ?).*%\1${builtins.toString value}%g' ''; - - user-config-set-cmds = with lib.attrsets; - mapAttrsToList ( - group-n: group-v: ( - mapAttrsToList ( - n: v: "${mkSedEditValue n v} \\\n" - ) - group-v - ) - ) - user-configs; - fix-config-permissions-script = pkgs.writeShellApplication { name = "sabnzbd-fix-config-permissions"; runtimeInputs = with pkgs; [util-linux]; @@ -71,7 +49,7 @@ ''; }; - user-configs-to-python = with lib; + user-configs-to-python-list = with lib; attrsets.collect (f: !builtins.isAttrs f) ( attrsets.mapAttrsRecursive ( path: value: @@ -94,40 +72,14 @@ sab_config_map = ConfigObj(str(sab_config_path)) - ${lib.strings.concatStringsSep "\n" user-configs-to-python} + ${lib.strings.concatStringsSep "\n" user-configs-to-python-list} sab_config_map.write() ''); - - bashCheckIfEmptyStr = v: "[[ -z \$${v} || \$${v} == '\"\"' ]]"; - gen-uuids-script = pkgs.writeShellApplication { - name = "sabnzbd-set-random-api-uuids"; - runtimeInputs = with pkgs; [initool gnused util-linux]; - text = '' - if [ ! -f ${ini-file-target} ]; then - echo "FAILURE: ${ini-file-target} does not exist. Cannot generate crypto strings." - exit 1 - fi - - api_key_value=$(initool get ${ini-file-target} misc api_key -v) - nzb_key_value=$(initool get ${ini-file-target} misc nzb_key -v) - - if ${bashCheckIfEmptyStr "api_key_value"} || ${bashCheckIfEmptyStr "nzb_key_value"}; then - cp --preserve ${ini-file-target}{,.tmp} - api_uuid=$(uuidgen --random | tr -d '-') - nzb_uuid=$(uuidgen --random | tr -d '-') - < ${ini-file-target} \ - ${mkSedEditValue "api_key" "'\"$api_uuid\"'"} \ - | ${mkSedEditValue "nzb_key" "'\"$nzb_uuid\"'"} \ - > ${ini-file-target}.tmp && mv -f ${ini-file-target}{.tmp,} - fi - ''; - }; in { systemd.tmpfiles.rules = ["C ${cfg.stateDir}/sabnzbd.ini - - - - ${ini-base-config-file}"]; systemd.services.sabnzbd.serviceConfig.ExecStartPre = lib.mkBefore [ ("+" + fix-config-permissions-script + "/bin/sabnzbd-fix-config-permissions") - (gen-uuids-script + "/bin/sabnzbd-set-random-api-uuids") (apply-user-configs-script + "/bin/sabnzbd-set-user-values") ]; }