8个版本
0.1.7 | 2023年1月12日 |
---|---|
0.1.6 | 2023年1月7日 |
0.1.3 | 2022年12月23日 |
0.1.2 | 2022年11月28日 |
0.1.1 | 2022年4月26日 |
#268 in 配置
43KB
889 行
nedots
sourcehut | github | crates.io
一个智能、安全且直观的dotfiles管理工具。
运行 nedots help
/ nedots -h
/ nedots
查看文档。
如果您想看到它的实际应用,可以查看一个 构建。构建以最大详细程度运行,因此所有操作都会记录到 stdout
。这些构建展示了所有功能 - 它不是一个最直观的“演示”,但它确实让您看到了它能做什么。
待办事项
- 我会避免以
root
运行此工具。我需要确保文件操作由正确的用户执行。
nedots.yml
配置文件位于 $XDG_CONFIG_HOME/nedots/nedots.yml
。如果 $XDG_CONFIG_HOME
没有设置,那么 $HOME/.config/nedots/nedots.yml
。
当您使用 nedots
时,您维护一个包含远程git仓库地址、目录或文件列表以及git子模块列表的小文件。
字段 | 类型 | 描述 |
---|---|---|
remote | 字符串 |
远程git仓库地址。 https 或 ssh (git@ ) 均可工作,但应优先考虑 ssh (读写)。 |
sources | 列表<字符串> |
nedots 将管理的目录或文件列表。 |
git_repos | 列表<GitRepo> |
GitRepo 列表,见下文 GitRepo 模型。 |
GitRepo
字段 | 类型 | 描述 |
---|---|---|
remote | 字符串 |
远程git仓库。 |
路径 | 字符串 |
GitRepo 的本地路径,相对于$HOME 。 |
以下是一个小示例
remote: [email protected]:~nedia/nedots
sources:
- .config/bspwm
- .profile
- /etc/hostname
- Wallpapers
git_repos:
- repo:
remote: [email protected]:~nedia/config.nvim
path: .config/nvim
sources
例如,install
操作将从$XDG_DATA_HOME/nedots/{source}
复制这些文件到$HOME/{source}
。如果未设置$XDG_DATA_HOME
,则使用$HOME/.local/share/nedots
。
相反,gather
将从$HOME/{source}
复制文件到$XDG_DATA_HOME/nedots/{source}
。
目录将递归复制。路径可以属于您或其他人,但在运行时对不属于您的路径执行操作需要正确的权限 - 例如,您需要运行sudo nedots
来安装或收集/etc/
中的文件。
用法
虽然您可能刚开始使用这种存储dotfiles的方式,但您很可能已经有一个用于存储dotfiles的git仓库。这是已经完成的一些工作。
# To set `nedots` up in its default location `$XDG_DATA_HOME/nedots` or `$HOME/.local/share/nedots`.
nedots init <remote>
接下来,您需要编辑nedots.yml
- 特别是sources
,以便nedots sync
可以收集您的文件。然后,它将它们复制到$XDG_DATA_HOME/nedots/dots
。
# Recommend adding `--nopush` so `nedots` won't push these changes to remote.
# You can review them first. Gather is responsible for collecting your files.
nedots sync --gather --nopush
文件结构可能如下所示
tree .local/share/nedots/dots -a
.local/share/nedots/dots
├── etc
│ └── hostname
└── home
└── aiden
├── .config
│ └── bspwm
│ ├── bspwmrc
│ ├── external_rules
│ └── floating_desktop
├── .profile
└── Wallpapers
├── wallhaven-9dxo58.jpg
├── wallhaven-dp118j.png
├── wallhaven-l35myl.jpg
├── wallhaven-q2mgqd.jpg
├── wallhaven-v9dez8.jpg
├── wallhaven-vqxgql.png
├── wallhaven-wqpgw6.png
├── wallhaven-y89del.png
└── wallhaven-zm9kpy.jpg
7 directories, 14 files
就是这样!现在,每次您修改在sources
中定义的文件或文件夹时,运行nedots sync -g/--gather
将收集文件并将它们推送到远程。
安装
操作系统/方法 | 命令 |
---|---|
Cargo | cargo安装nedots |
GitHub/发行版 | 在此处下载二进制文件[链接] |
Arch (AUR) | yay-S nedots |
从源代码构建
请参阅rustup.
# rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# stable channel
rustup toolchain install stable
rustup default stable
# clone & build
git clone https://git.sr.ht/~nedia/nedots.rs
cd nedots.rs
cargo build --release
# symlink to .local/bin
ln -s target/release/nedots ~/.local/bin/nedots
依赖关系
~9–38MB
~569K SLoC