这个仓库使用 GNU Stow 管理,按软件拆分为独立模块。新机器上可以只启用需要的软件,避免一次性部署所有配置。
packages/ home 配置包(stow 目标为 $HOME)
system/ 系统配置包(stow 目标为 /)
misc/ 不适合 stow 的手动配置(JetBrains、VS Code、Windows Terminal 等)
scripts/ 仓库脚本
private/ 本地私有文件(已被 .gitignore 忽略)
install.sh 安装入口
Makefile 常用命令封装
每个 packages/<name> 或 system/<name> 都是一个 stow package,内部路径会相对于目标目录展开。
-
安装 Git 并克隆仓库。
kitty主题是 git submodule,需要递归克隆:git clone --recurse-submodules git@github.com:<you>/dotfiles.git ~/dotfiles cd ~/dotfiles
如果已经普通克隆,可以补拉子模块:
git submodule update --init --recursive
install.sh 首次运行时会自动检测并安装 GNU Stow。目前支持 pacman、apt-get、dnf、yum、zypper、apk、brew 和 emerge;使用系统包管理器时会通过 sudo 获取权限。
./install.sh -l # home 配置
./install.sh -s -l # system 配置./install.sh zsh git tmux nvim
./install.sh i3 polybar picom rofi安装全部 home 配置:
./install.sh -a如果目标位置已有普通文件或符号链接,可以用 -f / --force 覆盖(例如 ./install.sh -f python)。此操作会删除冲突文件,不会修改仓库中的配置;不会递归删除目录,建议先备份重要配置。系统配置同样支持 ./install.sh -s -f <module>。
系统配置会写入 /,需要 root 权限。脚本会自动通过 sudo 重跑:
./install.sh -s pacman network docker
./install.sh -s caddy samba v2ray安装全部系统配置:
./install.sh -s -a也可以用 Makefile:
make list
make home PACKAGES="zsh git nvim"
make system SYSTEM_PACKAGES="pacman docker"| 包名 | 内容 |
|---|---|
alacritty |
~/.config/alacritty |
applications |
~/.local/share/applications |
autostart |
~/.config/autostart |
bash |
~/.bashrc |
bat |
~/.config/bat |
cargo |
~/.config/cargo |
cgdb |
~/.cgdb/cgdbrc |
cheat |
~/.config/cheat |
docs |
~/.config/docs |
dunst |
~/.config/dunst |
fcitx5 |
Fcitx5/Rime 配置及输入法环境变量 |
fontconfig |
~/.config/fontconfig |
fonts |
~/.local/share/fonts |
gdb |
~/.gdbinit |
git |
~/.config/git |
goldendict |
~/.config/goldendict |
gradle |
~/.gradle/gradle.properties |
htop |
~/.config/htop |
i3 |
~/.config/i3 |
ideavim |
~/.ideavimrc |
k9s |
~/.config/k9s |
kde |
KDE baloo 配置 |
kitty |
~/.config/kitty(含 kitty-themes 子模块) |
libinput-gestures |
~/.config/libinput-gestures |
litecli |
~/.config/litecli |
maven |
~/.m2/settings.xml |
mycli |
~/.myclirc |
npm |
~/.npmrc |
nvim |
~/.config/nvim |
picom |
~/.config/picom |
polybar |
~/.config/polybar |
python |
~/.config/pip |
ranger |
~/.config/ranger |
readline |
~/.inputrc |
rofi |
~/.config/rofi |
terminator |
~/.config/terminator |
tmux |
~/.tmux.conf |
vim |
~/.vimrc |
x11 |
.Xresources、.Xmodmap、.xinitrc 等 |
yay |
~/.config/yay |
zathura |
~/.config/zathura |
zinit |
~/.local/share/zinit |
zsh |
~/.zshrc、~/.config/zsh 等 |
| 包名 | 内容 |
|---|---|
apt |
/etc/apt/sources.list |
buildkit |
/etc/buildkit/buildkitd.toml |
caddy |
/etc/caddy |
docker |
/etc/docker/daemon.json、systemd proxy 配置 |
network |
NetworkManager、resolv 配置 |
nfs |
/etc/exports |
pacman |
/etc/pacman.conf、pacman hooks/mirrorlist |
proxychains |
/etc/proxychains.conf |
samba |
/etc/samba/smb.conf |
sddm |
/etc/sddm.conf.d |
v2ray |
/etc/v2ray |
x11 |
/etc/X11/xorg.conf.d |
misc/ 下是按应用分类的手动配置,不会自动 stow,请按需手动复制或导入:
clink:Windows Clinkjetbrains:JetBrains IDE 配色/设置kde:KDE 快捷键导出方案(.kksrc)mathematica:Wolfram Mathematicaobs-studio:OBS Studiopacman:Arch 包列表qtcreator:Qt Creatorshadowsocks:Shadowsocks 客户端switchy-omega:SwitchyOmegavimium:Vimiumvscode:VS Codewindows-terminal:Windows Terminal
- 在
packages/下创建模块目录,目录名即模块名。 - 把要部署到
$HOME的文件按目标相对路径放进去。
例如新增 lazygit:
mkdir -p packages/lazygit/.config/lazygit
cp ~/.config/lazygit/config.yml packages/lazygit/.config/lazygit/config.yml
./install.sh lazygit系统配置同理,放在 system/<module>/etc/...,用 ./install.sh -s <module> 安装。