summary refs log tree commit diff
path: root/pkgs/applications/misc/guake/default.nix
blob: 4f6733e7d8de7c8428cda6fd2f40b152601b2acd (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* Beware!
After starting Guake it will give the error message "Guake can not init! Gconf Error. Have you installed guake.schemas properly?",
which will have to be resolved manually, because I have not found a way to automate this, without being impure.

If you have Guake installed, you can use `nix-build -A gnome3.guake` to get the path to the build directory in the nix store,
which then can be used in the following command to install the schemas file of Guake:
gconftool-2 --install-schema-file /path/returned/by/nix-build/share/gconf/schemas/guake.schemas

It can be removed again by the following command:
gconftool-2 --recursive-unset /apps/guake
*/
{ stdenv, fetchurl, lib
, pkgconfig, libtool, intltool, makeWrapper
, dbus, gtk2, gconf, python2, python2Packages, libutempter, vte, keybinder, gnome2, gnome3 }:

with lib;

let inputs = [ dbus gtk2 gconf python2 libutempter vte keybinder gnome3.gnome_common ];
    pySubDir = "lib/${python2.libPrefix}/site-packages";
    pyPath = makeSearchPath pySubDir (attrVals [ "dbus" "notify" "pyGtkGlade" "pyxdg" ] python2Packages ++ [ gnome2.gnome_python ]);
 in stdenv.mkDerivation rec {
  name = "guake-${version}";
  version = "0.8.3";

  src = fetchurl {
    url = "https://github.com/Guake/guake/archive/${version}.tar.gz";
    sha256 = "1lbmdz3i9a97840h8239s360hd37nmhy3hs6kancxbzl1512ak1y";
  };

  nativeBuildInputs = [ pkgconfig libtool intltool makeWrapper ];

  buildInputs = inputs ++ (with python2Packages; [ pyGtkGlade pyxdg ]);

  patchPhase = ''
    patchShebangs .
  '';

  configureScript = "./autogen.sh";

  configureFlags = [
    "--sysconfdir=/etc"
    "--localstatedir=/var"
    "--disable-schemas-install"
  ];

  installFlags = [
    # Configuring the installation to not install gconf schemas is not always supported,
    # therefore gconftool-2 has this variable, which will make gconftool-2 not update any of the databases.
    "GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1"
    "sysconfdir=\${out}/etc"
    "localstatedir=\${TMPDIR}"
  ];

  postInstall = ''
    mkdir -p $out/share/gconf/schemas
    cp data/guake.schemas $out/share/gconf/schemas
  '';

  postFixup = ''
    for bin in $out/bin/{guake,guake-prefs}; do
      substituteInPlace $bin \
        --replace '/usr/bin/env python2' ${python2}/bin/python2
      wrapProgram $bin \
        --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
        --prefix LD_LIBRARY_PATH : ${makeLibraryPath inputs} \
        --prefix PYTHONPATH : "$out/${pySubDir}:${pyPath}:$PYTHONPATH"
    done
  '';

  meta = {
    description = "Drop-down terminal for GNOME";
    homepage = http://guake-project.org;
    license = licenses.gpl2;
    platforms = platforms.linux;
    maintainers = [ maintainers.msteen ];
  };
}