시스템 전체에 설치된 모든 패키지 목록이 포함된 파일을 만들어야 합니다.
나는 repl에서 볼 수 pname
있으며 meta
각 패키지에 대해 사용 가능합니다.
nix-repl> emacs.pname
"emacs"
nix-repl> emacs.meta.description
"The extensible, customizable GNU text editor"
configuration.nix
에서 다음을 수행하려고 하면 p
is 유형에 and etc 속성이 path
없습니다 .set
pname
meta
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)));
}