Files
archlinux-config/source.py
T

70 lines
2.0 KiB
Python

"""
Arch Linux 声明式系统配置 — decman
执行顺序:files → pacman → aur → systemd
用法:
首次:sudo decman --source /path/to/source.py
后续:sudo decman
"""
import os
import decman
from decman import File
import modules.docker
import modules.locale
import modules.zsh
assert decman.pacman is not None
assert decman.aur is not None
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.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",
}