feat(pcloud): fake home

This commit is contained in:
js0ny 2026-03-22 08:28:36 +00:00
parent 1d5c363220
commit b714297442
11 changed files with 176 additions and 73 deletions

View file

@ -8,61 +8,6 @@
mergetools = import ../../../modules/lib/mergetools.nix {inherit pkgs lib config;}; mergetools = import ../../../modules/lib/mergetools.nix {inherit pkgs lib config;};
mkMergedJson = mergetools.mkMergedJson; mkMergedJson = mergetools.mkMergedJson;
mkMergedIni = mergetools.mkMergedIni; 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 { prismLauncherCfg = mkMergedIni {
name = "prism-launcher-config"; name = "prism-launcher-config";
target = "${config.home.homeDirectory}/.local/share/PrismLauncher/prismlauncher.cfg"; target = "${config.home.homeDirectory}/.local/share/PrismLauncher/prismlauncher.cfg";
@ -120,20 +65,10 @@ in {
steamcmd steamcmd
]; ];
imports = [ imports = [
../programs/retroarch.nix ../programs/gaming/retroarch.nix
../programs/celeste ../programs/gaming/celeste
paradoxLauncherUserSettings ../programs/gaming/PDS
victoria3Settings
pdxSdkSettingsEU5
pdxSdkSettingsV3
pdxSdkTelemetryEU5
pdxSdkTelemetryV3
prismLauncherCfg prismLauncherCfg
ryujinxConfig ryujinxConfig
]; ];
xdg.dataFile = {
"Paradox Interactive/launcherpath".text = ''
${config.home.homeDirectory}/.local/share/paradoxlauncher
'';
};
} }

View file

@ -66,7 +66,6 @@ in {
# Terminal Emulator # Terminal Emulator
kitty kitty
alacritty alacritty
warp-terminal
# PDF Viewer # PDF Viewer
kdePackages.okular kdePackages.okular
@ -83,7 +82,6 @@ in {
# Theming # Theming
papirus-icon-theme papirus-icon-theme
pcloud
nixpaks.qq nixpaks.qq
nixpaks.termius nixpaks.termius
signal-desktop signal-desktop
@ -106,7 +104,6 @@ in {
onlyoffice-desktopeditors onlyoffice-desktopeditors
# wayland-bongocat # wayland-bongocat
kdePackages.qttools kdePackages.qttools
nur.repos.forkprince.helium-nightly
obsidian obsidian
file-roller file-roller
dex dex

View file

@ -29,6 +29,7 @@ in {
W3M_DIR = "${xdg-state}/w3m"; W3M_DIR = "${xdg-state}/w3m";
WAKATIME_HOME = "${xdg-config}/wakatime"; # ~/.wakatime WAKATIME_HOME = "${xdg-config}/wakatime"; # ~/.wakatime
WGETRC = "${xdg-config}/wget/wgetrc"; WGETRC = "${xdg-config}/wget/wgetrc";
WINEPREFIX = "${xdg-data}/wineprefixes/default";
}; };
xdg.configFile."npm/npmrc".text = '' xdg.configFile."npm/npmrc".text = ''
prefix=${xdg-data}/npm prefix=${xdg-data}/npm
@ -41,5 +42,6 @@ in {
''; '';
systemd.user.tmpfiles.rules = [ systemd.user.tmpfiles.rules = [
"d ${xdg-config}/wakatime 0700 ${user} users -" "d ${xdg-config}/wakatime 0700 ${user} users -"
"d ${xdg-data}/wineprefixes 0700 ${user} users -"
]; ];
} }

View file

@ -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 = [ imports = [
./lib-cleaner.nix ./lib-cleaner.nix
]; ];
@ -10,5 +26,9 @@
recursive = false; recursive = false;
onCalendar = "weekly"; 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;
}; };
} }

View file

@ -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;
};
}

View file

@ -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
];
}

View file

@ -25,6 +25,7 @@ in {
./programs/antidots.nix ./programs/antidots.nix
./programs/sandboxed.nix ./programs/sandboxed.nix
./programs/pcloud.nix
# Shell # Shell
./programs/shell/bash.nix ./programs/shell/bash.nix
@ -90,7 +91,6 @@ in {
./programs/dolphin.nix ./programs/dolphin.nix
./programs/magick.nix ./programs/magick.nix
./programs/miniserve.nix ./programs/miniserve.nix
./programs/retroarch.nix
./programs/edit-clipboard.nix ./programs/edit-clipboard.nix
./programs/aichat.nix ./programs/aichat.nix
./programs/wine.nix ./programs/wine.nix