from typing import Literal import decman from decman.plugins import pacman, systemd class LoginManager(decman.Module): def __init__(self, platform: Literal["desktop", "laptop"]): """Base packages that should never be uninstalled""" self._platform: Literal["desktop", "laptop"] = platform super().__init__("login") @pacman.packages def pkgs(self) -> set[str]: if self._platform == "desktop": return { "greetd", "greetd-tuigreet", } else: return {"gdm"} @systemd.units def units(self) -> set[str]: if self._platform == "desktop": return {"greetd.service"} else: return {"gdm.service"} def files(self) -> dict[str, decman.File]: if self._platform == "desktop": return { "/etc/greetd/config.toml": decman.File("./system/greetd/config.toml"), "/etc/pam.d/greetd": decman.File("./system/greetd/pam"), } else: # TODO: GDM config files return {}