refactor: 拆分 cli 模块,分离现代终端工具与开发工具链

- 新增 cli 模块:bat, btop, duf, dust, eza, fastfetch, fd,
  git-delta, jq, micro, procs, ripgrep, tealdeer, trash-cli,
  yazi, zoxide + git/mise 用户配置
- dev 瘦身为纯开发工具:语言运行时、LSP、编辑器
- base 还原为无参构造,移除用户配置文件职责
- git config 添加 delta pager 配置
This commit is contained in:
2026-04-02 20:24:23 +08:00
parent c58276b18b
commit 339a27d736
5 changed files with 55 additions and 25 deletions
+9
View File
@@ -1,2 +1,11 @@
[http] [http]
sslVerify = false sslVerify = false
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
[merge]
conflictstyle = zdiff3
+1 -6
View File
@@ -4,9 +4,8 @@ from decman.plugins.pacman import packages as pacman_packages
class BaseModule(Module): class BaseModule(Module):
def __init__(self, user: str): def __init__(self):
super().__init__("base") super().__init__("base")
self.user = user
def files(self): def files(self):
return { return {
@@ -17,10 +16,6 @@ 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
+41
View File
@@ -0,0 +1,41 @@
from decman import File, Module
from decman.plugins.pacman import packages as pacman_packages
class CliModule(Module):
def __init__(self, user: str):
super().__init__("cli")
self.user = user
def files(self):
return {
f"/home/{self.user}/.config/git/config": File(
source_file="./home/.config/git/config",
owner=self.user,
),
f"/home/{self.user}/.config/mise/config.toml": File(
source_file="./home/.config/mise/config.toml",
owner=self.user,
),
}
@pacman_packages
def pacman_packages(self) -> set[str]:
return {
"bat",
"btop",
"duf",
"dust",
"eza",
"fastfetch",
"fd",
"git-delta",
"jq",
"micro",
"procs",
"ripgrep",
"tealdeer",
"trash-cli",
"yazi",
"zoxide",
}
+1 -18
View File
@@ -1,5 +1,5 @@
import decman import decman
from decman import File, Module from decman import 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,35 +17,18 @@ 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 {
"bat",
"biome", "biome",
"btop",
"bun", "bun",
"eza",
"fastfetch",
"fd",
"go", "go",
"lazygit", "lazygit",
"micro",
"mise", "mise",
"neovim", "neovim",
"nodejs", "nodejs",
"ripgrep",
"trash-cli",
"uv", "uv",
"yaml-language-server", "yaml-language-server",
"zoxide",
} }
def after_update(self, store): def after_update(self, store):
+3 -1
View File
@@ -3,6 +3,7 @@ import os
import decman import decman
import modules.base import modules.base
import modules.cli
import modules.dev import modules.dev
import modules.docker import modules.docker
import modules.locale import modules.locale
@@ -20,7 +21,8 @@ if not USERNAME:
IS_WSL = os.path.exists("/proc/sys/fs/binfmt_misc/WSLInterop") IS_WSL = os.path.exists("/proc/sys/fs/binfmt_misc/WSLInterop")
decman.modules += [ decman.modules += [
modules.base.BaseModule(USERNAME), modules.base.BaseModule(),
modules.cli.CliModule(USERNAME),
modules.dev.DevModule(USERNAME), modules.dev.DevModule(USERNAME),
modules.docker.DockerModule(USERNAME), modules.docker.DockerModule(USERNAME),
modules.locale.LocaleModule(), modules.locale.LocaleModule(),