#配置管理 #dotfiles #yaml配置 #git配置 #git仓库 #dots #管理

程序+库 nedots

管理配置文件/(ne)dots的工具

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 配置

MIT/Apache

43KB
889

nedots

builds.sr.ht status

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仓库地址。 httpsssh (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