fix(steam): Impermanence + Steam

This commit is contained in:
Madeleine Sydney
2025-04-10 07:42:10 -06:00
parent 3600f56d92
commit 240bdfb6da
5 changed files with 28 additions and 5 deletions

3
flake.lock generated
View File

@@ -883,9 +883,8 @@
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"stylix": "stylix", "stylix": "stylix",
"sydnix-cli": "sydnix-cli", "sydnix-cli": "sydnix-cli",
"tf2-nix": "tf2-nix",
"vpn-confinement": "vpn-confinement" "vpn-confinement": "vpn-confinement"
"sydnix-cli": "sydnix-cli",
"tf2-nix": "tf2-nix"
} }
}, },
"sops-nix": { "sops-nix": {

View File

@@ -13,7 +13,11 @@
sydnix = { sydnix = {
filesystemType = "btrfs"; filesystemType = "btrfs";
steam.enable = true; steam = {
enable = true;
impermanenceUsers = ["crumb"];
};
niri.enable = true; niri.enable = true;
stylix.enable = true; stylix.enable = true;
qemu.enable = true; qemu.enable = true;

View File

@@ -19,7 +19,7 @@ in {
# #
# https://github.com/ValveSoftware/steam-for-linux/issues/10552 # https://github.com/ValveSoftware/steam-for-linux/issues/10552
# https://github.com/nix-community/impermanence/issues/165 # https://github.com/nix-community/impermanence/issues/165
{ directory = ".local/share/Steam"; method = "symlink"; } # { directory = ".local/share/Steam"; method = "symlink"; }
{ directory = ".steam"; method = "symlink"; } { directory = ".steam"; method = "symlink"; }
]; ];

View File

@@ -25,8 +25,9 @@ in {
./tf2/quake-hitsounds ./tf2/quake-hitsounds
]; ];
}; };
game-dir = ".local/share/Steam/steamapps/common/Team Fortress 2/tf";
in { in {
home.file."tf" = { home.file.${game-dir} = {
recursive = true; recursive = true;
source = my-config; source = my-config;
}; };

View File

@@ -4,6 +4,16 @@ let cfg = config.sydnix.steam;
in { in {
options.sydnix.steam = { options.sydnix.steam = {
enable = lib.mkEnableOption "Steam"; enable = lib.mkEnableOption "Steam";
impermanenceUsers = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = ''
A list of users for which ~/.local/share/Steam shall be persisted. This
is a disgusting hack to get around an issue with Impermanence's
home-manager module.
https://github.com/nix-community/impermanence/issues/165#issuecomment-2537723929
'';
};
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
@@ -28,5 +38,14 @@ in {
enable = true; enable = true;
enable32Bit = true; enable32Bit = true;
}; };
environment.persistence.${config.sydnix.impermanence.persistDirectory}.users =
builtins.listToAttrs
(builtins.map
(user: {
name = user;
value.directories = [".local/share/Steam"];
})
cfg.impermanenceUsers);
}; };
} }