Nvmをインストールする.nixファイルを作成しようとしています
まず、configuration.nix内に追加しようとしました:
system.activationScripts = {
dotfiles = pkgs.lib.stringAfters [ "users" ]
''
curl NVM_URL | bash
''
}
}
しかし、bashとcurlが定義されていないと文句を言いました。
そこで、小さな.nixパッケージを作成しようとしました。
{ stdenv, fileurl };
stdenv.mkDerivation {
name="nvm-0.33.0"
builder = ./install.sh;
fileurl{
url: NVM_GIT_MASTER.Zip;
};
}
しかし、「デフォルト値なしで引数を持つ関数を自動呼び出すことはできません{'stdenv'}」と文句を言います。
Nix-build --dry-run ./text,nixを実行した後
どうしたの?私はnixページを読んでいて、壁に頭をぶつけています。
not defined
エラーは、PATH
派生が構築されたときにsystem
にcurlもbashも存在しないためだと思います。 system.activationScripts
の手動エントリは次のように述べています。
NixOSシステム構成がアクティブ化されたときに実行されるシェルスクリプトフラグメントのセット。例としては、/ etcの更新、アカウントの作成などがあります。これらは、システムを起動するか、nixos-rebuildを実行するたびに実行されるため、べき等で高速であることが重要です。
そのため、とにかくsystem.activationScripts
に最小限のコードを含める必要があると思います。
cannot autocall
エラーは、作成したパッケージが引数を指定せずに呼び出されていることを示しています。これを処理する通常の方法は、pkgs.lib
セットのcallPackage関数を使用することです。 nixpkgs全体での使用例を見つけることができます。
私はあなたがあなたの目的が何であれ解決するためにnixを正しい方法で使っていないと思います。ノードパッケージを使用する既存のconfig.nixを見つけて、それがどのように行われるかを確認できるかどうかを確認する価値があります。また、 nixのnodePackages がすでにサポートされているので、おそらくそれが役立つかもしれません。 IRCには、より便利なnixosチャネルもあります。
お役に立てば幸いです。