我想声明变量dotfiles_dir
,以便所有其他文件都可以查看和使用它。
例如(不工作)
在/etc/nixos/configuration.nix
(它是根文件,对吧?)
dotfiles_dir="/home/bjorn/.config/dotfiles";
import "${dotfiles_dir}/nixos/root/default.nix"
并在~/.config/nixpkgs/home.nix
(https://github.com/rycee/home-manager)
import "${dotfiles_dir}/nixos/home/default.nix"
答案 0 :(得分:3)
我想声明变量dotfiles_dir,以便所有其他文件都能看到并使用它。
抱歉,但那是不可能的。在Nix中,没有全局变量这样的东西。如果存在,则会破坏它提供可重复构建的能力,因为Nix表达式可以访问未声明的输入。
/etc/nixos/configuration.nix
不是存储全局信息,它在技术上是NixOS模块。但更重要的是,它是一种功能。
然而......有一种方法可以在一个地方定义一个值,并在需要的地方使用它。像这样:
<强> /etc/nixos/dotfiles-dir.nix 强>
"/home/bjorn/.config/dotfiles"
<强>〜/的.config / nixpkgs / home.nix 强>
let
dotfiles_dir = import /etc/nixos/dotfiles-dir.nix;
dotfiles = import (builtins.toPath "${dotfiles_dir}/nixos/home/default.nix");
in
...
你也可以得到更多的幻想...
<强> /etc/nixos/my-settings.nix 强>
{ dotfiles_dir = "/home/bjorn/.config/dotfiles";
, some_other_value = "whatever";
}
<强>〜/的.config / nixpkgs / home.nix 强>
let
dotfiles_dir = (import /etc/nixos/my-settings.nix).dirfiles_dir;
dotfiles = import (builtins.toPath "${dotfiles_dir}/nixos/home/default.nix");
in
...