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.

작동합니다...그래서 문제는 라이브러리가 아니라 설치 방식에 있는 것 같습니다.

관련 정보