feat(docker): 添加 Docker 支持并重排 source.py 声明顺序
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
from decman import Module
|
||||
from decman.plugins.pacman import packages
|
||||
from decman.plugins.systemd import units
|
||||
|
||||
|
||||
class DockerModule(Module):
|
||||
def __init__(self):
|
||||
super().__init__("docker")
|
||||
|
||||
@packages
|
||||
def packages(self) -> set[str]:
|
||||
return {"docker", "docker-compose"}
|
||||
|
||||
@units
|
||||
def units(self) -> set[str]:
|
||||
return {"docker.service"}
|
||||
+2
-1
@@ -4,11 +4,12 @@ version = "0.0.0"
|
||||
requires-python = ">=3.13"
|
||||
|
||||
[dependency-groups]
|
||||
dev = ["decman", "decman-pacman"]
|
||||
dev = ["decman", "decman-pacman", "decman-systemd"]
|
||||
|
||||
[tool.uv.sources]
|
||||
decman = { git = "https://github.com/kiviktnm/decman.git" }
|
||||
decman-pacman = { git = "https://github.com/kiviktnm/decman.git", subdirectory = "plugins/decman-pacman" }
|
||||
decman-systemd = { git = "https://github.com/kiviktnm/decman.git", subdirectory = "plugins/decman-systemd" }
|
||||
|
||||
[tool.ty.environment]
|
||||
python = ".venv"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""
|
||||
Arch Linux 声明式系统配置 — decman
|
||||
|
||||
执行顺序:files → pacman → aur → systemd
|
||||
用法:
|
||||
首次:sudo decman --source /path/to/source.py
|
||||
后续:sudo decman
|
||||
@@ -11,16 +12,40 @@ import os
|
||||
import decman
|
||||
from decman import File
|
||||
|
||||
import docker_module
|
||||
import locale_module
|
||||
|
||||
assert decman.pacman is not None
|
||||
assert decman.aur is not None
|
||||
assert decman.systemd is not None
|
||||
|
||||
# ── 用户 ──────────────────────────────────────────────────────
|
||||
# sudo decman 时 SUDO_USER 为调用 sudo 的原始用户
|
||||
USERNAME = os.environ.get("SUDO_USER", "imbytecat")
|
||||
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,
|
||||
)
|
||||
|
||||
# ── 用户配置 ─────────────────────────────────────────────────
|
||||
decman.files[f"{HOME}/.zshrc"] = File(
|
||||
source_file="./home/.zshrc",
|
||||
owner=USERNAME,
|
||||
)
|
||||
|
||||
# ── Modules ──────────────────────────────────────────────────
|
||||
decman.modules += [
|
||||
locale_module.LocaleModule(),
|
||||
docker_module.DockerModule(),
|
||||
]
|
||||
|
||||
# ── Pacman 包(官方仓库)──────────────────────────────────────
|
||||
decman.pacman.packages |= {
|
||||
"base-devel",
|
||||
@@ -37,10 +62,10 @@ decman.pacman.packages |= {
|
||||
"vim",
|
||||
"wget",
|
||||
"zoxide",
|
||||
"zsh",
|
||||
"zsh-autosuggestions",
|
||||
"zsh-completions",
|
||||
"zsh-syntax-highlighting",
|
||||
"zsh",
|
||||
}
|
||||
|
||||
# ── AUR 包 ────────────────────────────────────────────────────
|
||||
@@ -52,21 +77,3 @@ decman.aur.packages |= {
|
||||
"oh-my-zsh-git",
|
||||
"yay",
|
||||
}
|
||||
|
||||
# ── 系统文件(/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,
|
||||
)
|
||||
|
||||
decman.modules += [locale_module.LocaleModule()]
|
||||
|
||||
# ── 用户配置 ─────────────────────────────────────────────────
|
||||
decman.files[f"{HOME}/.zshrc"] = File(
|
||||
source_file="./home/.zshrc",
|
||||
owner=USERNAME,
|
||||
)
|
||||
|
||||
@@ -11,6 +11,7 @@ source = { virtual = "." }
|
||||
dev = [
|
||||
{ name = "decman" },
|
||||
{ name = "decman-pacman" },
|
||||
{ name = "decman-systemd" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
@@ -19,6 +20,7 @@ dev = [
|
||||
dev = [
|
||||
{ name = "decman", git = "https://github.com/kiviktnm/decman.git" },
|
||||
{ name = "decman-pacman", git = "https://github.com/kiviktnm/decman.git?subdirectory=plugins%2Fdecman-pacman" },
|
||||
{ name = "decman-systemd", git = "https://github.com/kiviktnm/decman.git?subdirectory=plugins%2Fdecman-systemd" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -102,6 +104,14 @@ dependencies = [
|
||||
{ name = "requests" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "decman-systemd"
|
||||
version = "1.1.0"
|
||||
source = { git = "https://github.com/kiviktnm/decman.git?subdirectory=plugins%2Fdecman-systemd#8c54220dbcb793836e99c567c43718aaed08acd2" }
|
||||
dependencies = [
|
||||
{ name = "decman" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.11"
|
||||
|
||||
Reference in New Issue
Block a user