From afeaddca129e6d7863049daaae703f13bad62dc5 Mon Sep 17 00:00:00 2001 From: imbytecat Date: Thu, 26 Mar 2026 14:39:24 +0800 Subject: [PATCH] =?UTF-8?q?refactor(modules):=20=E6=8F=90=E5=8F=96=20BaseM?= =?UTF-8?q?odule=EF=BC=8C=E5=B0=86=E5=9F=BA=E7=A1=80=E5=8C=85=E5=92=8C?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=96=87=E4=BB=B6=E7=A7=BB=E5=85=A5=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/base.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ source.py | 39 ++------------------------------------- 2 files changed, 48 insertions(+), 37 deletions(-) create mode 100644 modules/base.py 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", -}