From b714297442fcec0a22533655e577214c3b847e07 Mon Sep 17 00:00:00 2001 From: js0ny Date: Sun, 22 Mar 2026 08:28:36 +0000 Subject: [PATCH] feat(pcloud): fake home --- nixcfgs/users/js0ny/packages/gaming.nix | 71 +----------- nixcfgs/users/js0ny/packages/gui.nix | 3 - nixcfgs/users/js0ny/programs/antidots.nix | 2 + nixcfgs/users/js0ny/programs/cleaner.nix | 22 +++- .../js0ny/programs/gaming/PDS/default.nix | 108 ++++++++++++++++++ .../programs/{ => gaming}/celeste/default.nix | 0 .../programs/{ => gaming}/celeste/lib.nix | 0 .../{ => gaming}/celeste/settings.celeste | 0 .../js0ny/programs/{ => gaming}/retroarch.nix | 0 nixcfgs/users/js0ny/programs/pcloud.nix | 41 +++++++ nixcfgs/users/js0ny/zephyrus.nix | 2 +- 11 files changed, 176 insertions(+), 73 deletions(-) create mode 100644 nixcfgs/users/js0ny/programs/gaming/PDS/default.nix rename nixcfgs/users/js0ny/programs/{ => gaming}/celeste/default.nix (100%) rename nixcfgs/users/js0ny/programs/{ => gaming}/celeste/lib.nix (100%) rename nixcfgs/users/js0ny/programs/{ => gaming}/celeste/settings.celeste (100%) rename nixcfgs/users/js0ny/programs/{ => gaming}/retroarch.nix (100%) create mode 100644 nixcfgs/users/js0ny/programs/pcloud.nix diff --git a/nixcfgs/users/js0ny/packages/gaming.nix b/nixcfgs/users/js0ny/packages/gaming.nix index a9701a3..857eeec 100644 --- a/nixcfgs/users/js0ny/packages/gaming.nix +++ b/nixcfgs/users/js0ny/packages/gaming.nix @@ -8,61 +8,6 @@ mergetools = import ../../../modules/lib/mergetools.nix {inherit pkgs lib config;}; mkMergedJson = mergetools.mkMergedJson; mkMergedIni = mergetools.mkMergedIni; - pdxrel = "${config.home.homeDirectory}/.local/share/Paradox Interactive"; - # pdxbase = "${config.home.homeDirectory}/${pdxrel}"; - euvbase = "${config.home.homeDirectory}/.local/share/Steam/steamapps/compatdata/3450310/pfx/drive_c/users/steamuser/Documents/Paradox Interactive/Europa Universalis V"; - paradoxLauncherUserSettings = mkMergedJson { - name = "paradox-launcher-usersettings"; - target = "${pdxrel}/launcher-v2/userSettings.json"; - settings = { - "optionalTelemetryDisabled" = true; - "language" = "zh-hans"; - }; - }; - pdxSdkSettingsEU5 = mkMergedJson { - name = "pdxSdkaccountJsonEU5"; - target = "${euvbase}/PDX/SDK/eu5/account.json"; - settings = { - telemetryEnabled = false; - }; - }; - # 经典 $HOME 下拉屎 - pdxSdkSettingsV3 = mkMergedJson { - name = "pdxSdkaccountJsonV3"; - target = "${config.home.homeDirectory}/PDX/SDK/victoria3/account.json"; - settings = { - telemetryEnabled = false; - }; - }; - pdxSdkTelemetryEU5 = mkMergedJson { - name = "pdxSdktelemetryConsentEU5"; - target = "${euvbase}/PDX/SDK/eu5/telemetry_consent.json"; - settings = { - telemetry_consent_choice = "denied"; - }; - }; - pdxSdkTelemetryV3 = mkMergedJson { - name = "pdxSdktelemetryConsentV3"; - target = "${config.home.homeDirectory}/PDX/SDK/victoria3/telemetry_consent.json"; - settings = { - telemetry_consent_choice = "denied"; - }; - }; - victoria3Settings = mkMergedJson { - name = "victoria3-settings"; - target = "${pdxrel}/Victoria 3/pdx_settings.json"; - settings = { - Account = { - telemetry_consent = false; - }; - game = { - save_on_exit = true; - }; - Theme = { - daynight_cycle = false; - }; - }; - }; prismLauncherCfg = mkMergedIni { name = "prism-launcher-config"; target = "${config.home.homeDirectory}/.local/share/PrismLauncher/prismlauncher.cfg"; @@ -120,20 +65,10 @@ in { steamcmd ]; imports = [ - ../programs/retroarch.nix - ../programs/celeste - paradoxLauncherUserSettings - victoria3Settings - pdxSdkSettingsEU5 - pdxSdkSettingsV3 - pdxSdkTelemetryEU5 - pdxSdkTelemetryV3 + ../programs/gaming/retroarch.nix + ../programs/gaming/celeste + ../programs/gaming/PDS prismLauncherCfg ryujinxConfig ]; - xdg.dataFile = { - "Paradox Interactive/launcherpath".text = '' - ${config.home.homeDirectory}/.local/share/paradoxlauncher - ''; - }; } diff --git a/nixcfgs/users/js0ny/packages/gui.nix b/nixcfgs/users/js0ny/packages/gui.nix index ce27afb..836502d 100644 --- a/nixcfgs/users/js0ny/packages/gui.nix +++ b/nixcfgs/users/js0ny/packages/gui.nix @@ -66,7 +66,6 @@ in { # Terminal Emulator kitty alacritty - warp-terminal # PDF Viewer kdePackages.okular @@ -83,7 +82,6 @@ in { # Theming papirus-icon-theme - pcloud nixpaks.qq nixpaks.termius signal-desktop @@ -106,7 +104,6 @@ in { onlyoffice-desktopeditors # wayland-bongocat kdePackages.qttools - nur.repos.forkprince.helium-nightly obsidian file-roller dex diff --git a/nixcfgs/users/js0ny/programs/antidots.nix b/nixcfgs/users/js0ny/programs/antidots.nix index c8b0a5a..a809d81 100644 --- a/nixcfgs/users/js0ny/programs/antidots.nix +++ b/nixcfgs/users/js0ny/programs/antidots.nix @@ -29,6 +29,7 @@ in { W3M_DIR = "${xdg-state}/w3m"; WAKATIME_HOME = "${xdg-config}/wakatime"; # ~/.wakatime WGETRC = "${xdg-config}/wget/wgetrc"; + WINEPREFIX = "${xdg-data}/wineprefixes/default"; }; xdg.configFile."npm/npmrc".text = '' prefix=${xdg-data}/npm @@ -41,5 +42,6 @@ in { ''; systemd.user.tmpfiles.rules = [ "d ${xdg-config}/wakatime 0700 ${user} users -" + "d ${xdg-data}/wineprefixes 0700 ${user} users -" ]; } diff --git a/nixcfgs/users/js0ny/programs/cleaner.nix b/nixcfgs/users/js0ny/programs/cleaner.nix index b209e8b..7bc60bd 100644 --- a/nixcfgs/users/js0ny/programs/cleaner.nix +++ b/nixcfgs/users/js0ny/programs/cleaner.nix @@ -1,4 +1,20 @@ -{config, ...}: { +{config, ...}: let + cleanerPdxSaveData = name: path: { + inherit path; + olderThan = 30; + filesOnly = false; + recursive = false; + onCalendar = "weekly"; + }; + pdxrel = "${config.xdg.dataHome}/Paradox Interactive"; + pdxSaveDataPaths = { + ck3 = "${pdxrel}/Crusader Kings III/save games/"; + eu4 = "${pdxrel}/Europa Universalis IV/save games/"; + hoi4 = "${pdxrel}/Hearts of Iron IV/save games/"; + vicky3 = "${pdxrel}/Victoria 3/save games/"; + eu5 = "${pdxrel}/Europa Universalis V/save games/"; + }; +in { imports = [ ./lib-cleaner.nix ]; @@ -10,5 +26,9 @@ recursive = false; onCalendar = "weekly"; }; + ck3-save-data = cleanerPdxSaveData "ck3" pdxSaveDataPaths.ck3; + eu4-save-data = cleanerPdxSaveData "eu4" pdxSaveDataPaths.eu4; + hoi4-save-data = cleanerPdxSaveData "hoi4" pdxSaveDataPaths.hoi4; + vicky3-save-data = cleanerPdxSaveData "vicky3" pdxSaveDataPaths.vicky3; }; } diff --git a/nixcfgs/users/js0ny/programs/gaming/PDS/default.nix b/nixcfgs/users/js0ny/programs/gaming/PDS/default.nix new file mode 100644 index 0000000..6ede93a --- /dev/null +++ b/nixcfgs/users/js0ny/programs/gaming/PDS/default.nix @@ -0,0 +1,108 @@ +{ + pkgs, + lib, + config, + ... +}: let + mergetools = import ../../../../../modules/lib/mergetools.nix {inherit pkgs lib config;}; + mkMergedJson = mergetools.mkMergedJson; + mkMergedIni = mergetools.mkMergedIni; + pdxrel = "${config.home.homeDirectory}/.local/share/Paradox Interactive"; + # pdxbase = "${config.home.homeDirectory}/${pdxrel}"; + euvbase = "${config.home.homeDirectory}/.local/share/Steam/steamapps/compatdata/3450310/pfx/drive_c/users/steamuser/Documents/Paradox Interactive/Europa Universalis V"; + paradoxLauncherUserSettings = mkMergedJson { + name = "paradox-launcher-usersettings"; + target = "${pdxrel}/launcher-v2/userSettings.json"; + settings = { + "optionalTelemetryDisabled" = true; + "language" = "zh-hans"; + }; + }; + pdxSdkSettingsEU5 = mkMergedJson { + name = "pdxSdkaccountJsonEU5"; + target = "${euvbase}/PDX/SDK/eu5/account.json"; + settings = { + telemetryEnabled = false; + }; + }; + # 经典 $HOME 下拉屎 + pdxSdkSettingsV3 = mkMergedJson { + name = "pdxSdkaccountJsonV3"; + target = "${config.home.homeDirectory}/PDX/SDK/victoria3/account.json"; + settings = { + telemetryEnabled = false; + }; + }; + pdxSdkTelemetryEU5 = mkMergedJson { + name = "pdxSdktelemetryConsentEU5"; + target = "${euvbase}/PDX/SDK/eu5/telemetry_consent.json"; + settings = { + telemetry_consent_choice = "denied"; + }; + }; + pdxSdkTelemetryV3 = mkMergedJson { + name = "pdxSdktelemetryConsentV3"; + target = "${config.home.homeDirectory}/PDX/SDK/victoria3/telemetry_consent.json"; + settings = { + telemetry_consent_choice = "denied"; + }; + }; + victoria3Settings = mkMergedJson { + name = "victoria3-settings"; + target = "${pdxrel}/Victoria 3/pdx_settings.json"; + settings = { + Account = { + telemetry_consent = false; + }; + game = { + save_on_exit = true; + }; + Theme = { + daynight_cycle = false; + }; + }; + }; + cleanerPdxSaveData = name: path: { + inherit path; + olderThan = 30; + filesOnly = false; + recursive = false; + onCalendar = "weekly"; + }; + pdxSaveDataPaths = { + ck3 = "${pdxrel}/Crusader Kings III/save games/"; + eu4 = "${pdxrel}/Europa Universalis IV/save games/"; + hoi4 = "${pdxrel}/Hearts of Iron IV/save games/"; + vicky3 = "${pdxrel}/Victoria 3/save games/"; + eu5 = "${euvbase}/save games/"; + }; +in { + imports = [ + ../../lib-cleaner.nix + paradoxLauncherUserSettings + victoria3Settings + pdxSdkSettingsEU5 + pdxSdkSettingsV3 + pdxSdkTelemetryEU5 + pdxSdkTelemetryV3 + ]; + xdg.dataFile = { + "Paradox Interactive/launcherpath".text = '' + ${config.home.homeDirectory}/.local/share/paradoxlauncher + ''; + }; + my.cleanup.jobs = { + vicky3-crash-reports = { + path = "${config.home.homeDirectory}/.local/share/Paradox Interactive/Victoria 3/crashes/"; + olderThan = 7; + filesOnly = false; + recursive = false; + onCalendar = "weekly"; + }; + ck3-save-data = cleanerPdxSaveData "ck3" pdxSaveDataPaths.ck3; + eu4-save-data = cleanerPdxSaveData "eu4" pdxSaveDataPaths.eu4; + hoi4-save-data = cleanerPdxSaveData "hoi4" pdxSaveDataPaths.hoi4; + vicky3-save-data = cleanerPdxSaveData "vicky3" pdxSaveDataPaths.vicky3; + eu5-save-data = cleanerPdxSaveData "eu5" pdxSaveDataPaths.eu5; + }; +} diff --git a/nixcfgs/users/js0ny/programs/celeste/default.nix b/nixcfgs/users/js0ny/programs/gaming/celeste/default.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/celeste/default.nix rename to nixcfgs/users/js0ny/programs/gaming/celeste/default.nix diff --git a/nixcfgs/users/js0ny/programs/celeste/lib.nix b/nixcfgs/users/js0ny/programs/gaming/celeste/lib.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/celeste/lib.nix rename to nixcfgs/users/js0ny/programs/gaming/celeste/lib.nix diff --git a/nixcfgs/users/js0ny/programs/celeste/settings.celeste b/nixcfgs/users/js0ny/programs/gaming/celeste/settings.celeste similarity index 100% rename from nixcfgs/users/js0ny/programs/celeste/settings.celeste rename to nixcfgs/users/js0ny/programs/gaming/celeste/settings.celeste diff --git a/nixcfgs/users/js0ny/programs/retroarch.nix b/nixcfgs/users/js0ny/programs/gaming/retroarch.nix similarity index 100% rename from nixcfgs/users/js0ny/programs/retroarch.nix rename to nixcfgs/users/js0ny/programs/gaming/retroarch.nix diff --git a/nixcfgs/users/js0ny/programs/pcloud.nix b/nixcfgs/users/js0ny/programs/pcloud.nix new file mode 100644 index 0000000..d5f3be3 --- /dev/null +++ b/nixcfgs/users/js0ny/programs/pcloud.nix @@ -0,0 +1,41 @@ +{ + pkgs, + lib, + ... +}: let + pcloudAntidots = pkgs.writeShellScriptBin "pcloud-antidots" '' + set -euo pipefail + + real_home="$HOME" + fake_home="$real_home/.sandbox/.per-app/pcloud" + + mkdir -p \ + "$fake_home" \ + "$fake_home/.config" \ + "$fake_home/.cache" \ + "$fake_home/.local/share" \ + "$fake_home/.local/state" + + export HOME="$fake_home" + export XDG_CONFIG_HOME="$HOME/.config" + export XDG_CACHE_HOME="$HOME/.cache" + export XDG_DATA_HOME="$HOME/.local/share" + export XDG_STATE_HOME="$HOME/.local/state" + + exec ${lib.getExe pkgs.pcloud} "$@" + ''; + + pcloudAntidotsDesktop = pkgs.makeDesktopItem { + name = "pcloud-antidots"; + desktopName = "pCloud (Antidots)"; + exec = "${lib.getExe pcloudAntidots}"; + terminal = false; + categories = ["Network" "FileTransfer"]; + }; +in { + home.packages = [ + pkgs.pcloud + pcloudAntidots + pcloudAntidotsDesktop + ]; +} diff --git a/nixcfgs/users/js0ny/zephyrus.nix b/nixcfgs/users/js0ny/zephyrus.nix index 86b7e4e..8fb46ab 100644 --- a/nixcfgs/users/js0ny/zephyrus.nix +++ b/nixcfgs/users/js0ny/zephyrus.nix @@ -25,6 +25,7 @@ in { ./programs/antidots.nix ./programs/sandboxed.nix + ./programs/pcloud.nix # Shell ./programs/shell/bash.nix @@ -90,7 +91,6 @@ in { ./programs/dolphin.nix ./programs/magick.nix ./programs/miniserve.nix - ./programs/retroarch.nix ./programs/edit-clipboard.nix ./programs/aichat.nix ./programs/wine.nix