8

Nix 経由で自分のソフトウェアの rc ファイルを定義したいと思います。config.nixしたがって、構成ファイルを含む新しいパッケージを定義します。

{ pkgs, ... }:
{
packageOverrides = pkgs : with pkgs; {
  custom-config = import ./custom-config {
    inherit (pkgs) stdenv;
  };
};
}

次に、custom-config/default.nix で、ファイルがインラインで定義されます。

{ stdenv }:

stdenv.mkDerivation rec {
  name = "custom-config";
  stdenv.mkDerivation {
    name = "CustomConfig";
    src = builtins.toFile "customrc" ''
      # content
      '';
  };
}

不足している最後の部分は次のとおりです。特定の環境変数をユーザーのデフォルト シェルに追加しますCUSTOM_CONFIG_RC

誰でもヒントを教えてもらえますか?私は言語を理解し始めたばかりです。

4

1 に答える 1

9

典型的な Nix の方法は、ユーザーのシェルを変更せずにこれを行い、代わりに を使用makeWrapperして RC ファイルを使用するプログラムをラップすることです。そうすれば、1 つのプログラムだけが必要とする変数で環境を汚染する必要がなくなります。

buildInputs = [ makeWrapper ];

postInstall = ''
  wrapProgram "$out/bin/my-program" --set CUSTOM_CONFIG_RC "$rcFile"
'';

残念ながら、 makeWrapper はまだ文書化されていませんが、広く使用されています。nixpkgs repo の例をgrep することをお勧めします。

(現在はここに文書化されています)


その変数を自分の環境で本当に利用できるようにしたい場合は、派生で次のようにすることができます

postInstall = ''
  mkdir -p $out/share
  echo "export CUSTOM_CONFIG_RC=$rcFile" > $out/share/your-rc-setup-script.sh
'';

パッケージがインストールされると、これは からシンボリックリンクされ~/.nix-profile/share/your-rc-setup-script.sh、次に で.bashrcロードできます

source $HOME/.nix-profile/share/your-rc-setup-script.sh
于 2016-09-26T22:29:15.763 に答える