2016-12-07 12 views
1

パスを取得したい場合、nixos /etcの場所(/run/current-system/etcまたは/nix/store/hashhere-etc-1.0のいずれか)につながります。私は${pkgs.etc}または${system.build.etc}あるいは${environment.etc}結果の書き込みエラーをしようとしていNixOS設定からetcパッケージを参照するにはどうすればいいですか?

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"; }; 

pppd connectスクリプトは、次のいくつかの種類を、設定するには、このパスを使用します。

実際にはディレクトリ構造は相対的ですが、絶対パスを使用する方が安全だと思います。

/nix/store/...etc.../ppp/peers 
    |- huawei 
    |- huawei.d 
     |- huawei.sh 
     |- huawei.chat 
+0

btwの場合、 'target'を指定する必要はありません。これを次のように名前に埋め込むことができます: 'environment.etc。" ppp/peers/huawei ".text =" ... ";'。実装 - https://github.com/NixOS/nixpkgs/blob/release-16.09/nixos/modules/system/etc/etc.nix#L114 – danbst

答えて

1

私が正しく理解していれば、あなたの問題は、あなたは、単にhuawei.text connectディレクティブにtarget属性の文字列値を渡す必要があります。 target attributeの説明に従って値をので、あなたがどちらかにできるはずです/etcへの相対パスです:

  1. 接続指令、文字列リテラルconnect /etc/ppp/peers/huaweiまたは
  2. の値がetc.huawei属性セットを作成してくださいrecursive 1属性が相互に参照できるように、次に行う

    environment.etc.huawei = rec { 
        target = "ppp/peers/huawei"; 
        text = ''... 
          # Below here what I've struggled 
          connect ${target} 
        ''; 
    }; 
    
+0

主な問題は実際には 'etc'の正しいパスです( NixOS、 'etc'フォルダはルートの下にありません)。どのように私のスクリプト(絶対に 'etc'にある)を見つけるためにそれらのパスを取得するのですか? – Abdillah

+0

@Abdillahなぜ 'etc'は根底にないのですか?私は 'ls -la /'と 'etc'を試しました。シンボリックリンクでもありません。 – danbst

+0

@ダンブッとああ...はいそうです! – Abdillah

1
あなたがパスを参照することができます

{ config, pkgs, lib, ... }: 

{ 
    environment.etc."test".text = "helo"; 
    environment.etc."test2".text = "${config.environment.etc."test".source.outPath}"; 
} 

今私は/etc/test2を持っている:このよう/nix/store/...etc...に提出する

$ cat /etc/test2 
/nix/store/1igc2rf011jmrr3cprsgbdp3hhm5d4l0-etc-test 
+0

残念ながら、私の場合、ソースはありません。ありがとう! – Abdillah

+0

あなたはそれを試しましたか? 'source'属性が作成されています暗黙のうちに 'text'を設定すると(https://github.com/NixOS/nixpkgs/blob/release-16.09/nixos/modules/system/etc/etc.nix#L115) – danbst

+0

はい、間違っています、source undefined :( – Abdillah

0

申し訳ありませんが、私はNixOSが実際に/etc自体に/nix/store/...etc../内のすべてのファイルをマップ事実を見落としていました。

ファイルを参照するには、/etcを直接使用することをお勧めします。

connect /etc/${environment.etc."huawei-script".target} 
関連する問題