feat(desktop): consolidate declarative workstation profile
Capture desktop-specific system, session, Noctalia, and Pi integration alongside shared laptop support. Retire obsolete X11 configuration and make package ownership explicit for repeatable Decman deployments.
This commit is contained in:
@@ -28,7 +28,7 @@ class UserConfigConcern(decman.Module):
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
files: dict[str, str] | None = None,
|
||||
files: dict[str, str | tuple[str, int]] | None = None,
|
||||
directories: dict[str, str] | None = None,
|
||||
user: str = "alex",
|
||||
) -> None:
|
||||
@@ -40,7 +40,11 @@ class UserConfigConcern(decman.Module):
|
||||
def files(self) -> dict[str, decman.File]:
|
||||
return {
|
||||
target: decman.File(
|
||||
source_file=str(ROOT / source), owner=self.user, permissions=0o644
|
||||
source_file=str(
|
||||
ROOT / (source[0] if isinstance(source, tuple) else source)
|
||||
),
|
||||
owner=self.user,
|
||||
permissions=source[1] if isinstance(source, tuple) else 0o644,
|
||||
)
|
||||
for target, source in self._files.items()
|
||||
}
|
||||
@@ -113,6 +117,7 @@ def common_user_config() -> list[UserConfigConcern]:
|
||||
"/home/alex/.config/hypr/hyprland.lua": "config/user/common/hypr/hyprland.lua",
|
||||
"/home/alex/.config/hypr/hyprlock.conf": "config/user/common/hypr/hyprlock.conf",
|
||||
"/home/alex/.config/kitty/kitty.conf": "config/user/common/kitty/kitty.conf",
|
||||
"/home/alex/.config/mimeapps.list": "config/user/common/mime/mimeapps.list",
|
||||
"/home/alex/.config/noctalia/10-base.toml": "config/user/common/noctalia/10-base.toml",
|
||||
"/home/alex/.config/noctalia/palettes/Ember OLED.json": (
|
||||
"config/user/common/noctalia/palettes/Ember OLED.json"
|
||||
@@ -126,8 +131,33 @@ def common_user_config() -> list[UserConfigConcern]:
|
||||
"/home/alex/.config/systemd/user/ssh-agent.service": (
|
||||
"config/user/common/systemd/user/ssh-agent.service"
|
||||
),
|
||||
"/home/alex/.config/user-dirs.dirs": "config/user/common/user-dirs/user-dirs.dirs",
|
||||
"/home/alex/.local/bin/idle-inhibitor-monitor": (
|
||||
"config/user/common/bin/idle-inhibitor-monitor",
|
||||
0o755,
|
||||
),
|
||||
"/home/alex/.local/bin/pi-status-ui": (
|
||||
"config/user/common/bin/pi-status-ui",
|
||||
0o755,
|
||||
),
|
||||
"/home/alex/.local/bin/wayshell-blanker": (
|
||||
"config/user/common/bin/wayshell-blanker",
|
||||
0o755,
|
||||
),
|
||||
},
|
||||
{
|
||||
"/home/alex/.config/alacritty": "config/user/common/alacritty",
|
||||
"/home/alex/.config/yazi": "config/user/common/yazi",
|
||||
"/home/alex/.local/share/noctalia/plugins/knowledge-lookup": (
|
||||
"config/user/common/noctalia/plugins/knowledge-lookup"
|
||||
),
|
||||
"/home/alex/.local/share/noctalia/plugins/pi-status-bridge": (
|
||||
"config/user/common/noctalia/plugins/pi-status-bridge"
|
||||
),
|
||||
"/home/alex/.local/share/noctalia/plugins/system-status": (
|
||||
"config/user/common/noctalia/plugins/system-status"
|
||||
),
|
||||
},
|
||||
{"/home/alex/.config/yazi": "config/user/common/yazi"},
|
||||
)
|
||||
]
|
||||
|
||||
@@ -234,5 +264,31 @@ def laptop_system() -> list[SystemConcern | UserConfigConcern]:
|
||||
|
||||
|
||||
def desktop_system() -> list[SystemConcern | UserConfigConcern]:
|
||||
"""Desktop: shared policy plus desktop-specific home configuration."""
|
||||
return [*common_system(), *desktop_user_config()]
|
||||
"""Desktop: shared policy plus this host's boot, GPU, input, and session state."""
|
||||
return [
|
||||
*common_system(),
|
||||
SystemConcern(
|
||||
"desktop-host",
|
||||
{
|
||||
"/etc/fstab": "config/system/desktop/storage/fstab",
|
||||
"/etc/hostname": "config/system/desktop/identity/hostname",
|
||||
"/etc/keyd/default.conf": "config/system/desktop/input/keyd.conf",
|
||||
"/etc/modprobe.d/nvidia-pm.conf": "config/system/desktop/nvidia/nvidia-pm.conf",
|
||||
"/etc/NetworkManager/NetworkManager.conf": (
|
||||
"config/system/desktop/network/NetworkManager.conf"
|
||||
),
|
||||
"/etc/sddm.conf.d/10-theme.conf": "config/system/desktop/sddm/10-theme.conf",
|
||||
"/etc/udev/rules.d/50-zsa.rules": "config/system/desktop/input/50-zsa.rules",
|
||||
},
|
||||
system_manifests=("desktop/hardware-system.txt",),
|
||||
),
|
||||
SystemConcern(
|
||||
"boot",
|
||||
{
|
||||
"/boot/EFI/refind/refind.conf": "config/system/desktop/boot/refind.conf",
|
||||
"/boot/refind_linux.conf": "config/system/desktop/boot/refind_linux.conf",
|
||||
"/etc/mkinitcpio.conf": "config/system/desktop/boot/mkinitcpio.conf",
|
||||
},
|
||||
),
|
||||
*desktop_user_config(),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user