시스템 패키지 목록과 해당 설명을 만드는 방법은 무엇입니까?

시스템 패키지 목록과 해당 설명을 만드는 방법은 무엇입니까?

시스템 전체에 설치된 모든 패키지 목록이 포함된 파일을 만들어야 합니다.

나는 repl에서 볼 수 pname있으며 meta각 패키지에 대해 사용 가능합니다.

nix-repl> emacs.pname
"emacs"

nix-repl> emacs.meta.description
"The extensible, customizable GNU text editor"

configuration.nix에서 다음을 수행하려고 하면 pis 유형에 and etc 속성이 path없습니다 .setpnamemeta

  environment.etc."packages".text = with lib;
    builtins.concatStringsSep "\n" (builtins.sort builtins.lessThan (lib.unique
      (builtins.map (
            p: "${p.pname} ${p.meta.description}"
      ) config.environment.systemPackages)));

패키지 이름과 설명을 얻는 방법은 무엇입니까 /etc/packages?

답변1

를 사용하여 파생된 이름을 얻을 수 있습니다 lib.getName.

모든 패키지에는 속성이 있어야 합니다 meta. description일부 패키지가 누락된 것을 발견할 수 있습니다 . 이러한 상황을 처리하는 데 사용할 수 있습니다 p.meta.description or "(none)".

그것들을 합치면 다음을 얻을 수 있습니다:

{
  environment.etc."packages".text = with lib;
    builtins.concatStringsSep "\n" (builtins.sort builtins.lessThan (lib.unique
      (builtins.map (
            p: "${getName p} ${p.meta.description or "(none)"}"
      ) config.environment.systemPackages)));
}

관련 정보