diff --git a/pkgs/applications/networking/instant-messengers/discord/darwin.nix b/pkgs/applications/networking/instant-messengers/discord/darwin.nix index c440becd5da4..68f5bcfb690d 100644 --- a/pkgs/applications/networking/instant-messengers/discord/darwin.nix +++ b/pkgs/applications/networking/instant-messengers/discord/darwin.nix @@ -64,10 +64,12 @@ let stageModules = writeShellScript "discord-stage-modules" '' store_modules="$1" - modules_dir="$HOME/Library/Application Support/${configDirName}/${version}/modules" + user_data_dir="''${DISCORD_USER_DATA_DIR-$HOME/Library/Application Support}" + modules_dir="$user_data_dir''${user_data_dir:+/}${configDirName}/${version}/modules" mkdir -p "$modules_dir" for m in ${lib.concatStringsSep " " (lib.attrNames moduleSrcs)}; do - ln -sfn "$store_modules/$m" "$modules_dir/$m" + rm -rf "$modules_dir/$m" + ln -s "$store_modules/$m" "$modules_dir/$m" done echo '${builtins.toJSON (lib.mapAttrs (_: mod: { installedVersion = mod; }) moduleVersions)}' \ > "$modules_dir/installed.json" diff --git a/pkgs/applications/networking/instant-messengers/discord/disable-breaking-updates.py b/pkgs/applications/networking/instant-messengers/discord/disable-breaking-updates.py index aa441f1dcc4f..dba9a493e912 100644 --- a/pkgs/applications/networking/instant-messengers/discord/disable-breaking-updates.py +++ b/pkgs/applications/networking/instant-messengers/discord/disable-breaking-updates.py @@ -17,10 +17,13 @@ import os import sys from pathlib import Path -config_home = { - "darwin": os.path.join(os.path.expanduser("~"), "Library", "Application Support"), - "linux": os.environ.get("XDG_CONFIG_HOME") or os.path.join(os.path.expanduser("~"), ".config") -}.get(sys.platform, None) +config_home = os.environ.get("DISCORD_USER_DATA_DIR") +if config_home is None: + config_home = { + "darwin": os.path.join(os.path.expanduser("~"), "Library", "Application Support"), + "linux": os.environ.get("XDG_CONFIG_HOME") + or os.path.join(os.path.expanduser("~"), ".config"), + }.get(sys.platform, None) if config_home is None: print("[Nix] Unsupported operating system.") @@ -28,8 +31,8 @@ if config_home is None: config_dir_name = "@configDirName@".replace(" ", "") if sys.platform == "darwin" else "@configDirName@" -settings_path = Path(f"{config_home}/{config_dir_name}/settings.json") -settings_path_temp = Path(f"{config_home}/{config_dir_name}/settings.json.tmp") +settings_path = Path(config_home) / config_dir_name / "settings.json" +settings_path_temp = settings_path.with_suffix(".json.tmp") if os.path.exists(settings_path): with settings_path.open(encoding="utf-8") as settings_file: diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix index cd61cd501e48..5400bb2e5ace 100644 --- a/pkgs/applications/networking/instant-messengers/discord/linux.nix +++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix @@ -152,7 +152,8 @@ let # where Discord's JS moduleUpdater expects them. stageModules = writeShellScript "discord-stage-modules" '' store_modules="$1" - modules_dir="''${XDG_CONFIG_HOME:-$HOME/.config}/${lib.toLower binaryName}/${version}/modules" + user_data_dir="''${DISCORD_USER_DATA_DIR-''${XDG_CONFIG_HOME:-$HOME/.config}}" + modules_dir="$user_data_dir''${user_data_dir:+/}${lib.toLower binaryName}/${version}/modules" rm -rf "$modules_dir" mkdir -p "$modules_dir" for m in ${lib.concatStringsSep " " (lib.attrNames moduleSrcs)}; do