summary refs log tree commit diff
path: root/pkgs/misc/screensavers/xscreensaver/default.nix
blob: 1937874a49cbdf93388217b8d71fb1747e87670d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{ stdenv, fetchurl, pkgconfig, bc, perl, perlPackages, pam, libXext, libXScrnSaver, libX11
, libXrandr, libXmu, libXxf86vm, libXrender, libXxf86misc, libjpeg, libGLU, libGL, gtk2
, libxml2, libglade, intltool, xorg, makeWrapper, gle
, forceInstallAllHacks ? false
}:

stdenv.mkDerivation rec {
  version = "5.43";
  pname = "xscreensaver";

  src = fetchurl {
    url = "https://www.jwz.org/${pname}/${pname}-${version}.tar.gz";
    sha256 = "1571pj1a9998sq14y9366s2rw9wd2kq3l3dvvsk610vyd0fki3qm";
  };

  buildInputs =
    [ pkgconfig bc perl libjpeg libGLU libGL gtk2 libxml2 libglade pam
      libXext libXScrnSaver libX11 libXrandr libXmu libXxf86vm libXrender
      libXxf86misc intltool xorg.appres makeWrapper gle
    ];

  preConfigure =
    ''
      # Fix installation paths for GTK resources.
      sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \
          -i driver/Makefile.in po/Makefile.in.in
    '';

  configureFlags =
    [ "--with-gl" "--with-pam" "--with-pixbuf" "--with-proc-interrupts"
      "--with-dpms-ext" "--with-randr-ext" "--with-xinerama-ext"
      "--with-xf86vmode-ext" "--with-xf86gamma-ext" "--with-randr-ext"
      "--with-xshm-ext" "--with-xdbe-ext"
      "--with-x-app-defaults=\${out}/share/xscreensaver/app-defaults"
    ];

  postInstall = ''
      wrapProgram $out/bin/xscreensaver-text \
        --prefix PATH : ${stdenv.lib.makeBinPath [xorg.appres]}
      wrapProgram $out/bin/xscreensaver-getimage-file \
        --set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${with perlPackages; makePerlPath [
              EncodeLocale HTTPDate HTTPMessage IOSocketSSL LWP LWPProtocolHttps
              MozillaCA NetHTTP NetSSLeay TryTiny URI
              ]}"
  ''
  + stdenv.lib.optionalString forceInstallAllHacks ''
    make -C hacks/glx dnalogo
    cat hacks/Makefile.in | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1  | xargs make -C hacks
    cat hacks/glx/Makefile.in | grep -E '([a-z0-9]+):[[:space:]]*\1[.]o' | cut -d : -f 1  | xargs make -C hacks/glx
    cp -f $(find hacks -type f -perm -111 "!" -name "*.*" )  "$out/libexec/xscreensaver"
  ''
  ;

  meta = {
    homepage = https://www.jwz.org/xscreensaver/;
    description = "A set of screensavers";
    maintainers = with stdenv.lib.maintainers; [ raskin ];
    platforms = stdenv.lib.platforms.unix; # Once had cygwin problems
    inherit version;
    downloadPage = "https://www.jwz.org/xscreensaver/download.html";
    updateWalker = true;
  };
}