1

/etcnixosの場所 ( または のいずれ/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ディレクティブに渡すだけでよいということです。target 属性の説明によると、値は相対パスである/etcため、次のいずれかを実行できるはずです。

  1. connect ディレクティブの値を文字列リテラルにする 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 に答える