about summary refs log tree commit diff
path: root/overrides
diff options
context:
space:
mode:
Diffstat (limited to 'overrides')
-rw-r--r--overrides/default.nix61
-rw-r--r--overrides/gajim/config.patch80
2 files changed, 122 insertions, 19 deletions
diff --git a/overrides/default.nix b/overrides/default.nix
index 529629c2..cf6be1b3 100644
--- a/overrides/default.nix
+++ b/overrides/default.nix
@@ -21,26 +21,49 @@ let
     uqm.use3DOVideos = true;
   };
 
-  # derivation overrides
-  drvOverrides = let
-    tkabberRev = 2010;
-  in mapOverride overrideDerivation argOverrides {
-    tkabber = o: {
-      name = "tkabber-1.0pre";
-      src = everything.fetchsvn {
-        url = "http://svn.xmpp.ru/repos/tkabber/trunk/tkabber";
-        rev = tkabberRev;
-        sha256 = "0ixvp3frpx7zhb7jyi0w463n78kafdzgmspkm2jhh6x28rimj0lz";
-      };
-    };
+  gajimGtkTheme = everything.writeText "gajim.gtkrc" ''
+    style "default" {
+      fg[NORMAL] = "#d5faff"
+      fg[ACTIVE] = "#fffeff"
+      fg[SELECTED] = "#fffeff"
+      fg[INSENSITIVE] = "#85aaaf"
+      fg[PRELIGHT] = "#d7f2ff"
 
-    tkabber_plugins = o: {
-      name = "tkabber-plugins-1.0pre";
-      src = everything.fetchsvn {
-        url = "http://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins";
-        rev = tkabberRev;
-        sha256 = "181jxd7iwpcl7wllwciqshzznahdw69fy7r604gj4m2kq6qmynqf";
-      };
+      text[NORMAL] = "#fffefe"
+      text[ACTIVE] = "#fffeff"
+      text[SELECTED] = "#fffeff"
+      text[INSENSITIVE] = "#85aaaf"
+      text[PRELIGHT] = "#d7f2ff"
+
+      bg[NORMAL] = "#0f4866"
+      bg[ACTIVE] = "#0c232e"
+      bg[SELECTED] = "#005a56"
+      bg[INSENSITIVE] = "#103040"
+      bg[PRELIGHT] = "#1d5875"
+
+      base[NORMAL] = "#0c232e"
+      base[ACTIVE] = "#0f4864"
+      base[SELECTED] = "#005a56"
+      base[INSENSITIVE] = "#103040"
+      base[PRELIGHT] = "#1d5875"
+    }
+
+    class "GtkWidget" style "default"
+  '';
+
+  gajimPatch = everything.substituteAll {
+    src = ./gajim/config.patch;
+    nix_config = ../cfgfiles/gajim.config;
+  };
+
+  # derivation overrides
+  drvOverrides = mapOverride overrideDerivation argOverrides {
+    gajim = o: {
+      patches = o.patches ++ singleton gajimPatch;
+      postPatch = o.postPatch + ''
+        sed -i -e '/^export/i export GTK2_RC_FILES="${gajimGtkTheme}"' \
+          scripts/gajim.in
+      '';
     };
   };
 
diff --git a/overrides/gajim/config.patch b/overrides/gajim/config.patch
new file mode 100644
index 00000000..ef40284f
--- /dev/null
+++ b/overrides/gajim/config.patch
@@ -0,0 +1,80 @@
+diff --git a/src/common/optparser.py b/src/common/optparser.py
+index f84b18a..0078317 100644
+--- a/src/common/optparser.py
++++ b/src/common/optparser.py
+@@ -30,6 +30,7 @@ import os
+ import sys
+ import locale
+ import re
++from itertools import chain
+ from time import time
+ from common import gajim
+ from common import helpers
+@@ -46,19 +47,25 @@ class OptionsParser:
+ 
+     def read(self):
+         try:
+-            fd = open(self.__filename)
++            cfg = nixfd = open("@nix_config@", 'r')
+         except Exception:
+             if os.path.exists(self.__filename):
+                 #we talk about a file
+                 print _('Error: cannot open %s for reading') % self.__filename
+             return False
+ 
++        try:
++            fd = open(self.__filename)
++            cfg = chain(cfg, fd)
++        except Exception:
++            fd = None
++
+         new_version = gajim.config.get('version')
+         new_version = new_version.split('-', 1)[0]
+         seen = set()
+         regex = re.compile(r"(?P<optname>[^.]+)(?:(?:\.(?P<key>.+))?\.(?P<subname>[^.]+))?\s=\s(?P<value>.*)")
+ 
+-        for line in fd:
++        for line in cfg:
+             try:
+                 line = line.decode('utf-8')
+             except UnicodeDecodeError:
+@@ -79,10 +86,13 @@ class OptionsParser:
+         self.update_config(old_version, new_version)
+         self.old_values = {} # clean mem
+ 
+-        fd.close()
++        if fd is not None:
++            fd.close()
++
++        nixfd.close()
+         return True
+ 
+-    def write_line(self, fd, opt, parents, value):
++    def write_line(self, (fd, nixcfg), opt, parents, value):
+         if value is None:
+             return
+         value = value[1]
+@@ -102,17 +112,21 @@ class OptionsParser:
+                     p = p.encode('utf-8')
+                 s += p + '.'
+         s += opt
+-        fd.write(s + ' = ' + value + '\n')
++        line = s + ' = ' + value + '\n'
++        if not nixcfg.startswith(line) and not ('\n' + line) in nixcfg:
++            fd.write(line)
+ 
+     def write(self):
+         (base_dir, filename) = os.path.split(self.__filename)
+         self.__tempfile = os.path.join(base_dir, '.' + filename)
++
+         try:
++            nixcfg = open("@nix_config@", 'r').read()
+             f = open(self.__tempfile, 'w')
+         except IOError, e:
+             return str(e)
+         try:
+-            gajim.config.foreach(self.write_line, f)
++            gajim.config.foreach(self.write_line, (f, nixcfg))
+         except IOError, e:
+             return str(e)
+         f.flush()