我想获得一条路径,该路径会导致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
答案 0 :(得分:1)
如果我理解你的问题,你只需要将target
属性的字符串值传递给huawei.text connect
指令。根据{{3}}的说明,该值是相对于/etc
的路径,因此您应该能够:
connect /etc/ppp/peers/huawei
或将etc.huawei
属性设置为target attribute,以便属性可以相互引用然后执行
environment.etc.huawei = rec {
target = "ppp/peers/huawei";
text = ''...
# Below here what I've struggled
connect ${target}
'';
};
答案 1 :(得分:1)
您可以像/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
答案 2 :(得分:0)
抱歉,我忽略了一个事实,即NixOS实际上将/nix/store/...etc../
中的任何文件映射到/etc
本身。
因此,要引用文件,最好直接使用/etc
。
connect /etc/${environment.etc."huawei-script".target}