我们如何从 NixOS 配置中引用 etc 包?
How do we refer to etc package from NixOS configuration?
我想要一条通往 nixos /etc
位置(/run/current-system/etc
或 /nix/store/hashhere-etc-1.0
中的任何一个)的路径。我使用此路径配置 pppd connect
脚本,如下所示,
environment.etc."huawei" =
{ text = ''
/dev/ttyUSB0
38400
lock
crtscts
nodetach
noipdefault
# Below here what I've struggled
connect ${pkgs.etc}/${environment.etc."huawei-script".target}
'';
mode = "0777";
target = "ppp/peers/huawei"; };
我曾尝试编写 ${pkgs.etc}
或 ${system.build.etc}
甚至 ${environment.etc}
结果错误。
目录结构其实是相对的,不过我觉得还是用绝对路径比较安全
/nix/store/...etc.../ppp/peers
|- huawei
|- huawei.d
|- huawei.sh
|- huawei.chat
如果我理解正确,你的问题是你只需要将 target
属性的字符串值传递给 huawei.text connect
指令。根据 target attribute 的描述,该值是相对于 /etc
的路径,因此您应该能够:
- 将连接指令的值设为字符串文字
connect /etc/ppp/peers/huawei
或
将etc.huawei
属性设置为recursive,这样属性就可以相互引用,然后
environment.etc.huawei = rec {
target = "ppp/peers/huawei";
text = ''...
# Below here what I've struggled
connect ${target}
'';
};
您可以像这样引用 /nix/store/...etc...
中的文件路径:
{ config, pkgs, lib, ... }:
{
environment.etc."test".text = "helo";
environment.etc."test2".text = "${config.environment.etc."test".source.outPath}";
}
现在我在 /etc/test2
:
$ cat /etc/test2
/nix/store/1igc2rf011jmrr3cprsgbdp3hhm5d4l0-etc-test
抱歉,我忽略了一个事实,即 NixOS 实际上将 /nix/store/...etc../
中的任何文件映射到 /etc
本身。
所以,要引用一个文件,最好直接使用/etc
。
connect /etc/${environment.etc."huawei-script".target}
我想要一条通往 nixos /etc
位置(/run/current-system/etc
或 /nix/store/hashhere-etc-1.0
中的任何一个)的路径。我使用此路径配置 pppd connect
脚本,如下所示,
environment.etc."huawei" =
{ text = ''
/dev/ttyUSB0
38400
lock
crtscts
nodetach
noipdefault
# Below here what I've struggled
connect ${pkgs.etc}/${environment.etc."huawei-script".target}
'';
mode = "0777";
target = "ppp/peers/huawei"; };
我曾尝试编写 ${pkgs.etc}
或 ${system.build.etc}
甚至 ${environment.etc}
结果错误。
目录结构其实是相对的,不过我觉得还是用绝对路径比较安全
/nix/store/...etc.../ppp/peers
|- huawei
|- huawei.d
|- huawei.sh
|- huawei.chat
如果我理解正确,你的问题是你只需要将 target
属性的字符串值传递给 huawei.text connect
指令。根据 target attribute 的描述,该值是相对于 /etc
的路径,因此您应该能够:
- 将连接指令的值设为字符串文字
connect /etc/ppp/peers/huawei
或 将
etc.huawei
属性设置为recursive,这样属性就可以相互引用,然后environment.etc.huawei = rec { target = "ppp/peers/huawei"; text = ''... # Below here what I've struggled connect ${target} ''; };
您可以像这样引用 /nix/store/...etc...
中的文件路径:
{ config, pkgs, lib, ... }:
{
environment.etc."test".text = "helo";
environment.etc."test2".text = "${config.environment.etc."test".source.outPath}";
}
现在我在 /etc/test2
:
$ cat /etc/test2
/nix/store/1igc2rf011jmrr3cprsgbdp3hhm5d4l0-etc-test
抱歉,我忽略了一个事实,即 NixOS 实际上将 /nix/store/...etc../
中的任何文件映射到 /etc
本身。
所以,要引用一个文件,最好直接使用/etc
。
connect /etc/${environment.etc."huawei-script".target}