nix-shell 用の 2 つの単純なドット nix ファイルをマージする際に問題が発生する

nix-shell 用の 2 つの単純なドット nix ファイルをマージする際に問題が発生する

私は nix 式を初めて使用します。nix-shell で使用したい 2 つの構成ファイルを見つけました。

残念ながら、nix 式の知識が不足していたため、マージできませんでした。常に構文エラーが発生します。

.nix の場合はカスタム設定用ですshellHook。ここでは設定のみを簡略化しています$PS1

{ pkgs ? import <nixpkgs> {}  }:

with pkgs;

stdenv.mkDerivation {
  name = "python3-shell";
  buildInputs = [ ];

  shellHook = ''
    export PS1="\[\033[1;32m\][nix-shell:\w]\n$ \[\033[0m\]"
  '';
}

b.nixPythonのオーバーライド用です。ジェダイ・ヴィム仕事。

with import <nixpkgs> {};

( pkgs.python3.buildEnv.override  {
  extraLibs = with pkgs.python3Packages; [ jedi pyyaml ];
}).env

構造は理解していますa.nixが、構文がb.nix異なります。

どうすればいいでしょうか?

nixos以外にもっと簡単に勉強できるリソースはありますか?マニュアル?

答え1

解決済み以下の構成で。

{ pkgs ? import <nixpkgs> {} }:

with pkgs;

let py3s = pkgs.python3.buildEnv.override {
  extraLibs = with pkgs.python3Packages; [ jedi pyyaml ];
};
in stdenv.mkDerivation {
  name = "python3-shell";
  buildInputs = [ py3s ];

  shellHook = ''
    export PS1="\[\033[1;32m\][nix-shell:\w]\n$ \[\033[0m\]"
  '';
}

まだコードを完全に理解していないが、どういうわけか希望のプロンプトが表示され、jedi-vim今は見ることができるyaml

ここに画像の説明を入力してください

関連情報