OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 036

Home Manager 文件与符号链接

用 home.file 和 XDG 文件选项管理只读配置及目录链接。

所在专题Home Manager:用户配置管理 ↗
约 3 分钟阅读开始阅读

什么是 home.file?#

有时候你会遇到一些冷门的软件,Home Manager 的 programs 并没有为它提供专门的选项。此时,你可以利用 home.file 属性,声明一个文件链接到家目录的特定位置。

1. 基础用法

{
  home.file.".config/my-app/config.txt".text = ''
    setting1=true
    setting2=false
  '';
}
  • 效果:Home Manager 会在你的 ~/.config/my-app/ 下生成一个软链接,指向 /nix/store 里的只读文件。

2. 引用项目中的本地文件

如果你已经有一堆写好的 .conf 文件,不想在 Nix 里重写:

{
  home.file.".bashrc".source = ./dotfiles/bashrc;
}

XDG Base Directory (现代方案)#

对于现代 Linux 应用,建议使用 xdg.configFile 而非直接操作家目录根。

{
  xdg.configFile."kitty/kitty.conf".text = "font_size 12.0";
}

这会自动把文件放到 ~/.config/kitty/kitty.conf。


executable 与 recursive 选项#

  • executable = true;:如果你链接的是一个脚本文件,这个选项能确保它有执行权限。
  • recursive = true;:逐个链接目录中的文件;默认 false 则把目标目录整体链接到源码目录。两种方式都可以管理目录。

为什么我的配置文件变“只读”了?#

这是 Home Manager 的默认行为。

  • 原因:链接指向的 Store 文件通常不可直接编辑;如果把链接替换成普通文件,下一次激活可能因文件冲突而拒绝覆盖。应在声明式源中修改。
  • 教训:永远去修改你的 .nix 配置,而不是 /nix/store 链接出来的镜像。

实战技巧:过渡方案#

如果你还没准备好把几百行 Nvim 配置全部 Nix 化:

  1. 把你的 .config/nvim 文件夹放到 Nix 配置目录下。
  2. 用 home.file.".config/nvim".source = ./nvim; 整个链过去。
  3. 等以后有空了,再慢慢拆解成独立的 Nix 模块。

参考与延伸

  1. Home Manager 手册 ↗
  2. Home Manager 命令源码 ↗
  3. Home Manager 文件选项源码 ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

Home Manager:用户配置管理

  1. 01Home Manager 集成与模块化
  2. 02Home Manager 终端环境配置
  3. 03Home Manager 桌面与主题配置
  4. 04Home Manager 文件与符号链接
  5. 05Home Manager 与 NixOS 密钥管理
  6. 06Home Manager 用户级配置管理教程
CONTINUE READING / 下一篇Home Manager 与 NixOS 密钥管理

以加密文件和运行时路径分离公开配置与私密数据。