ieda: init at 0-unstable-2024-10-11 (#338769)
[NixPkgs.git] / pkgs / by-name / pa / pacman / package.nix
blobc81e409a94d4d985295b9dd2c7dc8599305962f4
2   lib,
3   stdenv,
4   fetchFromGitLab,
5   asciidoc,
6   binutils,
7   coreutils,
8   curl,
9   gpgme,
10   installShellFiles,
11   libarchive,
12   makeWrapper,
13   meson,
14   ninja,
15   openssl,
16   perl,
17   pkg-config,
18   zlib,
20   # Compression tools in scripts/libmakepkg/util/compress.sh.in
21   gzip,
22   bzip2,
23   xz,
24   zstd,
25   lrzip,
26   lzop,
27   ncompress,
28   lz4,
29   lzip,
31   # pacman-key runtime dependencies
32   gawk,
33   gettext,
34   gnugrep,
35   gnupg,
37   # Tells pacman where to find ALPM hooks provided by packages.
38   # This path is very likely to be used in an Arch-like root.
39   sysHookDir ? "/usr/share/libalpm/hooks/",
42 stdenv.mkDerivation (final: {
43   pname = "pacman";
44   version = "7.0.0";
46   src = fetchFromGitLab {
47     domain = "gitlab.archlinux.org";
48     owner = "pacman";
49     repo = "pacman";
50     rev = "v${final.version}";
51     hash = "sha256-ejOBxN2HjV4dZwFA7zvPz3JUJa0xiJ/jZ+evEQYG1Mc=";
52   };
54   strictDeps = true;
56   nativeBuildInputs = [
57     asciidoc
58     gettext
59     installShellFiles
60     libarchive
61     makeWrapper
62     meson
63     ninja
64     pkg-config
65   ];
67   buildInputs = [
68     curl
69     gpgme
70     libarchive
71     openssl
72     perl
73     zlib
74   ];
76   patches = [
77     ./dont-create-empty-dirs.patch
78   ];
80   postPatch =
81     let
82       compressionTools = [
83         gzip
84         bzip2
85         xz
86         zstd
87         lrzip
88         lzop
89         ncompress
90         lz4
91         lzip
92       ];
93     in
94     ''
95       echo 'export PATH=${lib.makeBinPath compressionTools}:$PATH' >> scripts/libmakepkg/util/compress.sh.in
96       substituteInPlace meson.build \
97         --replace-fail "install_dir : SYSCONFDIR" "install_dir : '$out/etc'" \
98         --replace-fail "join_paths(DATAROOTDIR, 'libalpm/hooks/')" "'${sysHookDir}'" \
99         --replace-fail "join_paths(SYSCONFDIR, 'makepkg.conf.d/')" "'$out/etc/makepkg.conf.d/'"
100       substituteInPlace doc/meson.build \
101         --replace-fail "/bin/true" "${coreutils}/bin/true"
102       substituteInPlace scripts/repo-add.sh.in \
103         --replace-fail bsdtar "${libarchive}/bin/bsdtar"
105       # Fix https://gitlab.archlinux.org/pacman/pacman/-/issues/171
106       substituteInPlace scripts/libmakepkg/source/git.sh.in \
107         --replace-warn "---mirror" "--mirror"
108     '';
110   mesonFlags = [
111     "--sysconfdir=/etc"
112     "--localstatedir=/var"
113   ];
115   postInstall = ''
116     installShellCompletion --bash scripts/pacman --zsh scripts/_pacman
117     wrapProgram $out/bin/makepkg \
118       --prefix PATH : ${lib.makeBinPath [ binutils ]}
119     wrapProgram $out/bin/pacman-key \
120       --prefix PATH : ${
121         lib.makeBinPath [
122           "${placeholder "out"}"
123           coreutils
124           gawk
125           gettext
126           gnugrep
127           gnupg
128         ]
129       }
130   '';
132   meta = with lib; {
133     description = "Simple library-based package manager";
134     homepage = "https://archlinux.org/pacman/";
135     changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${final.version}/NEWS";
136     license = licenses.gpl2Plus;
137     platforms = platforms.linux;
138     mainProgram = "pacman";
139     maintainers = with maintainers; [ samlukeyes123 ];
140   };