如何管理自己的dotfiles

我想知道各位大佬都是如何管理自己的.emacs.d和dotfiles的,我现在都是将自己写的el上传上github就算了,用的时候再拉下来重新下载插件。 我觉得这个应该是一个比较愚蠢的方法,想请问各位大佬都有什么高招

我现在都是将自己写的el上传上github就算了,用的时候再拉下来重新下载插件。我觉得这个应该是一个比较愚蠢的方法

大家的 emacs 配置基本上应该都是用 git 管理吧。有什么蠢的?

用的时候再拉下来重新下载插件

没懂你是什么意思。不管你是用 git submoudle, straight 还是自带的 packages.el 都可以 bootstrap (第一次启动的时候自动安装插件)的呀。

你可以使用这个包将自己已经安装得插件备份成本地

1 个赞

如果你的dotfiles改动并不频繁,可以用borg对目录创建增量式快照。

1 个赞

最开始尝试过用 chezmoi 这类工具,也是基于 git 仓库存储的,不过后来换了几次系统,每次都要重新安装和配置,嫌太麻烦,就直接手动 cp 文件到仓库,然后手动提交、拉取和还原,也是比较蠢的方法,不过蠢一点控制度更高,也不是经常有东西要同步,一年估计也就用那么几次

1 个赞

我用坚果云同步,因为平常不用Linux当PC

我之前是git bare repo,后来发现本来也没几个文件,不如直接symlink(windows更简单,直接把HOME设置成仓库目录。

    rm ~/.bashrc
    ln -sf "${PWD}/.bashrc" ~/

    mv ~/.config ~/dotconfig_bak
    ln -sf "${PWD}/.config" ~/

    rm ~/.emacs
    cp .custom.el ~/
    ln -sf "${PWD}/.emacs.d" ~/

你这不就是标准做法吗,想lock版本就用submodule或者自带的package-vc.

1 个赞

nas多端同步

home-manager

1 个赞

所有 emacs 配置就一个 org 文件,链接后 auto-tangle 就不用管了,再也不用打开 .emacs.d 目录

2 个赞

.emacs.d用的是git仓库,每次新部署去拉取插件。 其他配置文件用nix。nix用来做配置管理真好用。

git+坚果云 :rofl:

dotter + org-babel-tangle + git,目前四五台设备共用一个配置库,包含 win, linux, android 三个平台,感觉暂时还在这个方案的能力之内。(忽略图中的 vim 元素,这俩货感觉还是用 vim 系编辑比较方便)

核心思想就是小型配置放在 org 文件里,既方便管理也方便备注(有些小配置是没有注释语法的),到了新机器上按下面步骤走:

  1. git 拉取配置文档
  2. emacs tangle org 文件生成原始配置文件
  3. 根据设备需求编写 local.toml 文件,然后运行 dotter 将配置文件软链接到对应位置
1 个赞

用 dotter 的优点在于起本身是无依赖的单二进制文件,不用安装,下载之后随便一放就能用;且他对配置文件的原始位置没啥要求,也是随便放,相应的配置文件也比较自由

我也是用的chezmoi , 好处是依赖少,支持多平台

大多数简单的办法都看起来笨笨的,但请不要忽视简单带来的价值。

2 个赞

github + stow

2 个赞

我觉得问题主要不是 git 上传管理麻烦,而是每次布署麻烦。 如果能拉下来 git 仓库后,一键把环境全部整好,那么 git 本身还能帮你管理你配置的修改历史,方便你回溯。

最简单的想法就是自己写个脚本来完成布署,比如文件的复制、链接,下载安装软件。但自己的脚本很难面面具到,且已经有人帮你做了。

对于这种问题,楼上提到的 stow 这类就是专门处理 dotfiles 的。简单来说就是帮你自动做一些文件的 link,不用手动去链接了。但每个软件的初始化还要自己来。比如 emacs 下包。

像 home-manager 这类则是还附带了你所希望管理的用户层的服务(配合 nixpkgs,你甚至可以不使用 packages.el 来管理你的包,而是让 nix 来管理),部分应用甚至会帮你做初始化,直接生成出一个最终可用的配置文件。

在 hm 的基础上,结合 nix,你可以编程式的针对不同的环境来形成不同的用户配置,而不需要每次自己去手动处理。

更进一步,你可以使用 nixos,将整个系统都变成声名式,通过配置来自动布署的。当然,相对的,你就不应该去随便直接修改你系统里的文件,而是通过修改配置来每次生成系统。

所以大家都来用 nixos 吧。

除了emacs,其它的都扔到 nix home-manager/nix-darwin 管理,声明式管理还是适合我这种懒人。

2 个赞

我一直用这个工具,mac和linux都可以用,也可以指定一些目录只在linux或者mac里复制。 就是一开始配置的时候稍微麻烦一点点,需要把所有配置汇聚到该repo下,然后写一个 install.conf.yaml 记录每个文件实际应该在哪个位置,最后把整个 repo 提交到 github 上就行。 要用的时候很简单,直接 git pull 然后 ./install 就行,如果有什么目录没成功 link 的,会有提示告诉你为什么。