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