Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / by-name / xs / xscreensaver / package.nix
blob2f4af30ff304dd10da5ff8658682a42760e5fe6d
1 { lib
2 , stdenv
3 , fetchurl
4 , coreutils
5 , gdk-pixbuf
6 , gdk-pixbuf-xlib
7 , gettext
8 , gle
9 , gtk3
10 , intltool
11 , libGL
12 , libGLU
13 , libX11
14 , libXext
15 , libXft
16 , libXi
17 , libXinerama
18 , libXrandr
19 , libXt
20 , libXxf86vm
21 , libxml2
22 , makeWrapper
23 , pam
24 , perlPackages
25 , pkg-config
26 , systemd
27 , forceInstallAllHacks ? true
28 , withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
31 stdenv.mkDerivation (finalAttrs: {
32   pname = "xscreensaver";
33   version = "6.08";
35   src = fetchurl {
36     url = "https://www.jwz.org/xscreensaver/xscreensaver-${finalAttrs.version}.tar.gz";
37     hash = "sha256-XPUrpSXO7PlLLyvWNIXr3zGOEvzA8q2tfUwQbYVedqM=";
38   };
40   outputs = [ "out" "man" ];
42   nativeBuildInputs = [
43     intltool
44     makeWrapper
45     pkg-config
46   ];
48   buildInputs = [
49     gdk-pixbuf
50     gdk-pixbuf-xlib
51     gettext
52     gle
53     gtk3
54     libGL
55     libGLU
56     libX11
57     libXext
58     libXft
59     libXi
60     libXinerama
61     libXrandr
62     libXt
63     libXxf86vm
64     libxml2
65     pam
66     perlPackages.LWPProtocolHttps
67     perlPackages.MozillaCA
68     perlPackages.perl
69   ]
70   ++ lib.optionals withSystemd [ systemd ];
72   postPatch = ''
73     pushd hacks
74     patchShebangs check-configs.pl munge-ad.pl xml2man.pl
75     popd
76   '';
78   preConfigure = ''
79     # Fix installation paths for GTK resources.
80     sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \
81       -i driver/Makefile.in po/Makefile.in.in
82   '';
84   configureFlags = [
85     "--with-app-defaults=${placeholder "out"}/share/xscreensaver/app-defaults"
86   ];
88   # "marbling" has NEON code that mixes signed and unsigned vector types
89   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isAarch "-flax-vector-conversions";
91   postInstall = ''
92     for bin in $out/bin/*; do
93       wrapProgram "$bin" \
94         --prefix PATH : "$out/libexec/xscreensaver" \
95         --prefix PATH : "${lib.makeBinPath [ coreutils perlPackages.perl ]}" \
96         --prefix PERL5LIB ':' $PERL5LIB
97     done
98   ''
99   + lib.optionalString forceInstallAllHacks ''
100     make -j$NIX_BUILD_CORES -C hacks/glx dnalogo
101     cat hacks/Makefile.in \
102       | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks
103     cat hacks/glx/Makefile.in \
104       | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks/glx
105     cp -f $(find hacks -type f -perm -111 "!" -name "*.*" ) "$out/libexec/xscreensaver"
106   '';
108   meta = {
109     homepage = "https://www.jwz.org/xscreensaver/";
110     description = "A set of screensavers";
111     downloadPage = "https://www.jwz.org/xscreensaver/download.html";
112     license = lib.licenses.mit;
113     maintainers = with lib.maintainers; [ raskin AndersonTorres ];
114     platforms = lib.platforms.unix;
115   };