1

我想获得一条通往 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 
4

3 回答 3

3

您可以像这样引用文件的路径/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
于 2016-12-10T11:32:26.710 回答
2

如果我理解正确,您的问题是您只需将target属性的字符串值传递给huawei.text connect指令。根据目标属性的描述,该值是相对于的路径,/etc因此您应该能够:

  1. 将连接指令的值设为字符串文字 connect /etc/ppp/peers/huawei
  2. 使etc.huawei属性设置为递归属性,以便属性可以相互引用然后执行

    environment.etc.huawei = rec {
        target = "ppp/peers/huawei";
        text = ''...
                 # Below here what I've struggled
                 connect ${target}
        '';
    };
    
于 2016-12-07T12:22:02.220 回答
0

抱歉,我忽略了一个事实,即 NixOS 实际上将任何文件映射/nix/store/...etc..//etc自身中。

所以,要引用一个文件,最好/etc直接使用。

connect /etc/${environment.etc."huawei-script".target}
于 2016-12-11T04:07:06.853 回答