Nix式の利用可能なすべての属性を印刷する方法

Nix式の利用可能なすべての属性を印刷する方法

理由を調べるRepoを作成できません。ソースで利用可能なすべての属性を列挙したいと思います。つまり、ATTR正しいものをすべてリストしてくださいnix-build --attr ATTR https://github.com/USER/REPO/tarball/X.Y.Z

ベストアンサー1

ユースケースとフォーマットに応じて、さまざまなツールを使用できます。

フレークストアでパッケージを探している場合は、次のことができます。

$ nix search github:kamadorueda/alejandra/3.0.0
* packages.x86_64-linux.alejandra-aarch64-unknown-linux-musl (3.0.0+20220814.ef03f7e)
  The Uncompromising Nix Code Formatter.

次のように、すべてのファイルのプロパティを一覧表示することもできます。

$ cat demo.nix
{
  myAttr = 42;
  myOtherAttr = "hello";
}

以下を呼び出して、インポートしたattrNamesファイルの属性名を抽出します。

$ nix eval --impure --expr "let pkgs = import <nixpkgs> {}; in pkgs.lib.attrNames (import ./demo.nix)"
[ "myAttr" "myOtherAttr" ]

tarball をローカルにコピー/抽出し、次のコマンドを実行する場合:

$ nix eval --impure --expr "let pkgs = import <nixpkgs> {}; in pkgs.lib.attrNames (import ./default.nix {})"
[ "PKG_CONFIG_ALLOW_CROSS" "__ignoreNulls" "all" "args" "buildAndTestSubdir" "buildInputs" "builder" "cargoBuildFeatures" "cargoBuildNoDefaultFeatures" "cargoBuildType" "cargoCheckFeatures" "cargoCheckNoDefaultFeatures" "cargoCheckType" "cargoDeps" "configureFlags" "configurePhase" "depsBuildBuild" "depsBuildBuildPropagated" "depsBuildTarget" "depsBuildTargetPropagated" "depsHostHost" "depsHostHostPropagated" "depsTargetTarget" "depsTargetTargetPropagated" "doCheck" "doInstallCheck" "drvAttrs" "drvPath" "inputDerivation" "meta" "name" "nativeBuildInputs" "out" "outPath" "outputName" "outputs" "overrideAttrs" "passthru" "patchRegistryDeps" "patches" "pname" "postUnpack" "propagatedBuildInputs" "propagatedNativeBuildInputs" "src" "stdenv" "strictDeps" "system" "tests" "type" "userHook" "version" ]

あなたの場合、派生セットではなく単一の派生が直接出力されることがわかりますdefault.nix(表示されるゴミは派生の内容にすぎません)。実際にそのファイルのソースコードを読み取ると、出力が行われていることがわかりますflake.defaultNix.defaultPackage.${system}。これにより、nix-buildプロパティなしで呼び出すnix-build https://github.com/kamadorueda/alejandra/tarball/3.0.0必要があります。

つまり、このソフトウェアをどのように実行/インストールするかはわかりませんが、私の場合は(フレークがアクティブな状態で)次のことを実行できます。

$ nix run github:kamadorueda/alejandra/3.0.0
Formatting stdin.
Use --help to see all command line options.
use --quiet to suppress this and other messages.

うまくいきます...だから問題はライブラリではなくインストール方法にあるようです。

おすすめ記事