ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / xs / xscreensaver / package.nix
blob3820409511e10b36423f69e5654bf16f5867dade
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 , xorg
26 , pkg-config
27 , systemd
28 , forceInstallAllHacks ? true
29 , withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
30 , nixosTests
31 , substituteAll
32 , wrapperPrefix ? "/run/wrappers/bin"
35 stdenv.mkDerivation (finalAttrs: {
36   pname = "xscreensaver";
37   version = "6.09";
39   src = fetchurl {
40     url = "https://www.jwz.org/xscreensaver/xscreensaver-${finalAttrs.version}.tar.gz";
41     hash = "sha256-9GZ3Ba24zEP9LzlzqIobVLFvIBkK/pOyHiIfL1cyCwU=";
42   };
44   outputs = [ "out" "man" ];
46   nativeBuildInputs = [
47     intltool
48     makeWrapper
49     pkg-config
50   ];
52   buildInputs = [
53     gdk-pixbuf
54     gdk-pixbuf-xlib
55     gettext
56     gle
57     gtk3
58     libGL
59     libGLU
60     libX11
61     libXext
62     libXft
63     libXi
64     libXinerama
65     libXrandr
66     libXt
67     libXxf86vm
68     libxml2
69     pam
70     perlPackages.LWPProtocolHttps
71     perlPackages.MozillaCA
72     perlPackages.perl
73   ]
74   ++ lib.optionals withSystemd [ systemd ];
76   postPatch = ''
77     pushd hacks
78     patchShebangs check-configs.pl munge-ad.pl xml2man.pl
79     popd
80   '';
82   patches = [
83     (substituteAll {
84       src = ./xscreensaver-wrapper-prefix.patch;
85       inherit wrapperPrefix;
86     })
87   ];
89   preConfigure = ''
90     # Fix installation paths for GTK resources.
91     sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \
92       -i driver/Makefile.in po/Makefile.in.in
93   '';
95   configureFlags = [
96     "--with-app-defaults=${placeholder "out"}/share/xscreensaver/app-defaults"
97   ];
99   # "marbling" has NEON code that mixes signed and unsigned vector types
100   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isAarch "-flax-vector-conversions";
102   postInstall = ''
103     for bin in $out/bin/*; do
104       wrapProgram "$bin" \
105         --prefix PATH : "$out/libexec/xscreensaver" \
106         --prefix PATH : "${lib.makeBinPath [ coreutils perlPackages.perl xorg.appres ]}" \
107         --prefix PERL5LIB ':' $PERL5LIB
108     done
109   ''
110   + lib.optionalString forceInstallAllHacks ''
111     make -j$NIX_BUILD_CORES -C hacks/glx dnalogo
112     cat hacks/Makefile.in \
113       | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks
114     cat hacks/glx/Makefile.in \
115       | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1 | xargs make -j$NIX_BUILD_CORES -C hacks/glx
116     cp -f $(find hacks -type f -perm -111 "!" -name "*.*" ) "$out/libexec/xscreensaver"
117   '';
119   passthru.tests = {
120     xscreensaver = nixosTests.xscreensaver;
121   };
123   meta = {
124     homepage = "https://www.jwz.org/xscreensaver/";
125     description = "Set of screensavers";
126     downloadPage = "https://www.jwz.org/xscreensaver/download.html";
127     license = lib.licenses.mit;
128     maintainers = with lib.maintainers; [ raskin AndersonTorres ];
129     platforms = lib.platforms.unix;
130   };