You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在configuration.nix中正确引用用户主目录配置值?

解决方案

出现这个报错是因为你混淆了 Nix 作用域变量和 NixOS 配置选项的引用方式,users 不是 Nix 顶层作用域的变量,而是 NixOS 配置选项树的一个分支,需要通过全局 config 对象访问。
按以下步骤修改即可:

  • 第一步:确认你的子配置文件作为 NixOS 模块,在头部参数列表中声明接收 config 参数
  • 第二步:引用配置项时加上 config. 前缀

错误写法示例

# 子配置文件头部漏了 config 参数
{ pkgs, ... }:
{
  # 你的用户定义
  users.users.username = {
    isNormalUser = true;
    # 其他用户配置
  };
  # 错误的引用方式,直接插值不存在的 users 变量
  environment.variables.MY_HOME = "${users.users.username.home}";
}

正确写法示例

# 头部参数列表加上 config
{ config, pkgs, ... }:
{
  # 你的用户定义不变
  users.users.username = {
    isNormalUser = true;
    # 其他用户配置
  };
  # 加上 config. 前缀引用选项值
  environment.variables.MY_HOME = "${config.users.users.username.home}";
}

补充说明

哪怕用户定义和引用语句在同一个子配置文件中,也需要通过 config 前缀访问。这是因为 NixOS 模块的求值逻辑是先收集所有模块的选项声明,再统一求值所有选项的最终值,同一模块内定义的选项也必须通过 config 才能拿到求值后的结果。

内容的提问来源于stack exchange,提问作者l0b0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:45:05