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"
|
requires-python = ">=3.13"
|
||||||
|
|
||||||
[dependency-groups]
|
[dependency-groups]
|
||||||
dev = ["decman", "decman-pacman"]
|
dev = ["decman", "decman-pacman", "decman-systemd"]
|
||||||
|
|
||||||
[tool.uv.sources]
|
[tool.uv.sources]
|
||||||
decman = { git = "https://github.com/kiviktnm/decman.git" }
|
decman = { git = "https://github.com/kiviktnm/decman.git" }
|
||||||
decman-pacman = { git = "https://github.com/kiviktnm/decman.git", subdirectory = "plugins/decman-pacman" }
|
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]
|
[tool.ty.environment]
|
||||||
python = ".venv"
|
python = ".venv"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
Arch Linux 声明式系统配置 — decman
|
Arch Linux 声明式系统配置 — decman
|
||||||
|
|
||||||
|
执行顺序:files → pacman → aur → systemd
|
||||||
用法:
|
用法:
|
||||||
首次:sudo decman --source /path/to/source.py
|
首次:sudo decman --source /path/to/source.py
|
||||||
后续:sudo decman
|
后续:sudo decman
|
||||||
@@ -11,16 +12,40 @@ import os
|
|||||||
import decman
|
import decman
|
||||||
from decman import File
|
from decman import File
|
||||||
|
|
||||||
|
import docker_module
|
||||||
import locale_module
|
import locale_module
|
||||||
|
|
||||||
assert decman.pacman is not None
|
assert decman.pacman is not None
|
||||||
assert decman.aur is not None
|
assert decman.aur is not None
|
||||||
|
assert decman.systemd is not None
|
||||||
|
|
||||||
# ── 用户 ──────────────────────────────────────────────────────
|
# ── 用户 ──────────────────────────────────────────────────────
|
||||||
# sudo decman 时 SUDO_USER 为调用 sudo 的原始用户
|
# sudo decman 时 SUDO_USER 为调用 sudo 的原始用户
|
||||||
USERNAME = os.environ.get("SUDO_USER", "imbytecat")
|
USERNAME = os.environ.get("SUDO_USER", "imbytecat")
|
||||||
HOME = f"/home/{USERNAME}"
|
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 包(官方仓库)──────────────────────────────────────
|
# ── Pacman 包(官方仓库)──────────────────────────────────────
|
||||||
decman.pacman.packages |= {
|
decman.pacman.packages |= {
|
||||||
"base-devel",
|
"base-devel",
|
||||||
@@ -37,10 +62,10 @@ decman.pacman.packages |= {
|
|||||||
"vim",
|
"vim",
|
||||||
"wget",
|
"wget",
|
||||||
"zoxide",
|
"zoxide",
|
||||||
|
"zsh",
|
||||||
"zsh-autosuggestions",
|
"zsh-autosuggestions",
|
||||||
"zsh-completions",
|
"zsh-completions",
|
||||||
"zsh-syntax-highlighting",
|
"zsh-syntax-highlighting",
|
||||||
"zsh",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ── AUR 包 ────────────────────────────────────────────────────
|
# ── AUR 包 ────────────────────────────────────────────────────
|
||||||
@@ -52,21 +77,3 @@ decman.aur.packages |= {
|
|||||||
"oh-my-zsh-git",
|
"oh-my-zsh-git",
|
||||||
"yay",
|
"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 = [
|
dev = [
|
||||||
{ name = "decman" },
|
{ name = "decman" },
|
||||||
{ name = "decman-pacman" },
|
{ name = "decman-pacman" },
|
||||||
|
{ name = "decman-systemd" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
@@ -19,6 +20,7 @@ dev = [
|
|||||||
dev = [
|
dev = [
|
||||||
{ name = "decman", git = "https://github.com/kiviktnm/decman.git" },
|
{ 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-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]]
|
[[package]]
|
||||||
@@ -102,6 +104,14 @@ dependencies = [
|
|||||||
{ name = "requests" },
|
{ 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]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.11"
|
version = "3.11"
|
||||||
|
|||||||
Reference in New Issue
Block a user