fix(aquamarine): persist the user's unit directories (#464)

Assisted-by: DeepSeek Harness (deepseek-flash)
This commit is contained in:
ryan4yin | 二花 authored and GitHub committed 2026-10-16 21:08:41 +08:00
1 parent a0ff9f7fd7
commit afa7a4c72e
3 files changed
+26 -1

No files matched your search

+15 -1
View File
@@ -72,19 +72,33 @@ in
# not listed is gone on the next boot; weights are re-downloadable, but # not listed is gone on the next boot; weights are re-downloadable, but
# re-downloading tens of GB is not a boot step. # re-downloading tens of GB is not a boot step.
"models" "models"
".config/systemd/user"
".config/containers/systemd"
]; ];
}; };
}; };
# `.config`/`.local` are not immediate parents of any persisted path here, so # `.config`/`.local` are not immediate parents of any persisted path here, so
# tmpfiles would create them root:root 0755 and the user could not write # tmpfiles would create them root:root 0755 and the user could not write
# under them. Same fix as hosts/idols-ai/preservation.nix. # under them. Same fix as hosts/idols-ai/preservation.nix, plus the `.config`
# subdirectories that hold a mount point.
systemd.tmpfiles.settings.preservation = { systemd.tmpfiles.settings.preservation = {
"/home/${username}/.config".d = { "/home/${username}/.config".d = {
user = username; user = username;
group = lib.mkForce username; group = lib.mkForce username;
mode = lib.mkForce "0750"; mode = lib.mkForce "0750";
}; };
"/home/${username}/.config/systemd".d = {
user = username;
group = lib.mkForce username;
mode = lib.mkForce "0750";
};
"/home/${username}/.config/containers".d = {
user = username;
group = lib.mkForce username;
mode = lib.mkForce "0750";
};
"/home/${username}/.local".d = { "/home/${username}/.local".d = {
user = username; user = username;
group = lib.mkForce username; group = lib.mkForce username;
@@ -8,6 +8,7 @@
cStatesCapped = true; cStatesCapped = true;
nativeIpv6Preference = true; nativeIpv6Preference = true;
sourceCheckoutsPersistent = true; sourceCheckoutsPersistent = true;
userUnitDirsPersistent = true;
rootlessPodmanEnabled = true; rootlessPodmanEnabled = true;
stableKernel = true; stableKernel = true;
btopShowsRadeon = true; btopShowsRadeon = true;
@@ -36,6 +36,16 @@ in
sourceCheckoutsPersistent = builtins.any ( sourceCheckoutsPersistent = builtins.any (
d: d.directory == "/home/${myvars.username}/src" d: d.directory == "/home/${myvars.username}/src"
) cfg.preservation.preserveAt."/persistent".users.${myvars.username}.directories; ) cfg.preservation.preserveAt."/persistent".users.${myvars.username}.directories;
# Directories the tmpfs root would otherwise drop.
userUnitDirsPersistent =
let
dirs = cfg.preservation.preserveAt."/persistent".users.${myvars.username}.directories;
in
builtins.all (path: builtins.any (d: d.directory == "/home/${myvars.username}/${path}") dirs) [
".config/systemd/user"
".config/containers/systemd"
];
rootlessPodmanEnabled = cfg.virtualisation.podman.enable; rootlessPodmanEnabled = cfg.virtualisation.podman.enable;
# A server tracks the nixpkgs default (stable/LTS) kernel, not `-latest`. # A server tracks the nixpkgs default (stable/LTS) kernel, not `-latest`.