diff --git a/modules/base.py b/modules/base.py new file mode 100644 index 0000000..d9b4631 --- /dev/null +++ b/modules/base.py @@ -0,0 +1,46 @@ +from decman import File, Module +from decman.plugins.aur import packages as aur_packages +from decman.plugins.pacman import packages as pacman_packages + + +class BaseModule(Module): + def __init__(self): + super().__init__("base") + + def files(self): + return { + "/etc/pacman.d/mirrorlist": File( + source_file="./system/etc/pacman.d/mirrorlist", + ), + "/etc/sudoers.d/10-wheel": File( + source_file="./system/etc/sudoers.d/10-wheel", + permissions=0o440, + ), + } + + @pacman_packages + def pacman_packages(self) -> set[str]: + return { + "base-devel", + "bat", + "bun", + "curl", + "fd", + "git", + "mise", + "neovim", + "nodejs", + "ripgrep", + "sudo", + "trash-cli", + "vim", + "wget", + "zoxide", + } + + @aur_packages + def aur_packages(self) -> set[str]: + return { + "decman", + "yay", + } diff --git a/source.py b/source.py index 2843be2..26afb8c 100644 --- a/source.py +++ b/source.py @@ -10,8 +10,8 @@ Arch Linux 声明式系统配置 — decman import os import decman -from decman import File +import modules.base import modules.docker import modules.locale import modules.zsh @@ -24,46 +24,11 @@ assert decman.systemd is not None USERNAME = os.environ.get("SUDO_USER") if not USERNAME: raise decman.SourceError("请使用 sudo decman 运行") -HOME = f"/home/{USERNAME}" - -# ── 系统文件(/etc/)────────────────────────────────────────── -decman.files["/etc/pacman.d/mirrorlist"] = File( - source_file="./system/etc/pacman.d/mirrorlist", -) - -decman.files["/etc/sudoers.d/10-wheel"] = File( - source_file="./system/etc/sudoers.d/10-wheel", - permissions=0o440, -) # ── Modules ────────────────────────────────────────────────── decman.modules += [ + modules.base.BaseModule(), modules.locale.LocaleModule(), modules.docker.DockerModule(), modules.zsh.ZshModule(USERNAME), ] - -# ── Pacman 包(官方仓库)────────────────────────────────────── -decman.pacman.packages |= { - "base-devel", - "bat", - "bun", - "curl", - "fd", - "git", - "mise", - "neovim", - "nodejs", - "ripgrep", - "sudo", - "trash-cli", - "vim", - "wget", - "zoxide", -} - -# ── AUR 包 ──────────────────────────────────────────────────── -decman.aur.packages |= { - "decman", - "yay", -}