fix: mise 配置归属 dev 模块,更新 AGENTS.md 匹配当前结构

- 将 mise config.toml 从 base 移至 dev(包与配置同模块)
- AGENTS.md 仓库结构图更新为 modules/ 目录
- 验证命令改为遍历 modules/*.py
- 模块示例代码同步为当前写法
This commit is contained in:
2026-04-02 20:37:51 +08:00
parent 339a27d736
commit 5d081f87d1
3 changed files with 46 additions and 12 deletions
+15 -10
View File
@@ -13,8 +13,13 @@
``` ```
. .
├── source.py # decman 主配置入口 ├── source.py # decman 主配置入口
├── locale_module.py # locale 模块(files + on_change hook ├── modules/
├── docker_module.py # Docker 模块(packages + systemd units │ ├── base.py # 基础模块(系统包 + 现代 CLI 工具 + 配置文件
│ ├── dev.py # 开发模块(语言运行时 + 编辑器 + 工具链)
│ ├── docker.py # Docker 模块(packages + systemd units
│ ├── locale.py # locale 模块(files + on_change hook
│ ├── wsl.py # WSL 模块(WSL 特定适配)
│ └── zsh.py # Zsh 模块(shell + oh-my-zsh + 插件)
├── system/etc/ # 系统配置文件源 → 部署到 /etc/ ├── system/etc/ # 系统配置文件源 → 部署到 /etc/
├── home/ # 用户配置文件源 → 部署到 ~/ ├── home/ # 用户配置文件源 → 部署到 ~/
├── scripts/ ├── scripts/
@@ -46,10 +51,9 @@ sudo decman --debug
### 验证 ### 验证
```bash ```bash
# Python 语法检查(所有 .py 文件 # Python 语法检查(所有模块
python -c "import py_compile; py_compile.compile('source.py', doraise=True)" python -c "import py_compile; py_compile.compile('source.py', doraise=True)"
python -c "import py_compile; py_compile.compile('docker_module.py', doraise=True)" for f in modules/*.py; do python -c "import py_compile; py_compile.compile('$f', doraise=True)"; done
python -c "import py_compile; py_compile.compile('locale_module.py', doraise=True)"
# Shell 语法检查 # Shell 语法检查
bash -n scripts/install.sh bash -n scripts/install.sh
@@ -82,20 +86,21 @@ files → pacman → aur → systemd
**模块模式**(适用于需要 hook 或跨步骤声明的场景): **模块模式**(适用于需要 hook 或跨步骤声明的场景):
```python ```python
from decman import Module from decman import Module
from decman.plugins.pacman import packages from decman.plugins.pacman import packages as pacman_packages
from decman.plugins.systemd import units from decman.plugins.systemd import units
class DockerModule(Module): class DockerModule(Module):
def __init__(self): def __init__(self, user: str):
super().__init__("docker") super().__init__("docker")
self.user = user
@packages @pacman_packages
def packages(self) -> set[str]: def pacman_packages(self) -> set[str]:
return {"docker", "docker-compose"} return {"docker", "docker-compose"}
@units @units
def units(self) -> set[str]: def units(self) -> set[str]:
return {"docker.service"} return {"docker.socket"}
``` ```
**何时用模块 vs 直接声明** **何时用模块 vs 直接声明**
+22 -1
View File
@@ -4,8 +4,9 @@ from decman.plugins.pacman import packages as pacman_packages
class BaseModule(Module): class BaseModule(Module):
def __init__(self): def __init__(self, user: str):
super().__init__("base") super().__init__("base")
self.user = user
def files(self): def files(self):
return { return {
@@ -16,6 +17,10 @@ class BaseModule(Module):
source_file="./system/etc/sudoers.d/10-wheel", source_file="./system/etc/sudoers.d/10-wheel",
permissions=0o440, permissions=0o440,
), ),
f"/home/{self.user}/.config/git/config": File(
source_file="./home/.config/git/config",
owner=self.user,
),
} }
@pacman_packages @pacman_packages
@@ -23,11 +28,27 @@ class BaseModule(Module):
return { return {
"base-devel", "base-devel",
"base", "base",
"bat",
"btop",
"curl", "curl",
"duf",
"dust",
"eza",
"fastfetch",
"fd",
"git-delta",
"git", "git",
"jq",
"micro",
"procs",
"ripgrep",
"sudo", "sudo",
"tealdeer",
"trash-cli",
"vim", "vim",
"wget", "wget",
"yazi",
"zoxide",
} }
@aur_packages @aur_packages
+9 -1
View File
@@ -1,5 +1,5 @@
import decman import decman
from decman import Module from decman import File, Module
from decman.plugins.pacman import packages as pacman_packages from decman.plugins.pacman import packages as pacman_packages
BUN_GLOBAL_PACKAGES = [ BUN_GLOBAL_PACKAGES = [
@@ -17,6 +17,14 @@ class DevModule(Module):
super().__init__("dev") super().__init__("dev")
self.user = user self.user = user
def files(self):
return {
f"/home/{self.user}/.config/mise/config.toml": File(
source_file="./home/.config/mise/config.toml",
owner=self.user,
),
}
@pacman_packages @pacman_packages
def pacman_packages(self) -> set[str]: def pacman_packages(self) -> set[str]:
return { return {