summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/inputmethods/fcitx/default.nix3
-rw-r--r--pkgs/tools/inputmethods/fcitx/wrapper.nix35
-rw-r--r--pkgs/top-level/all-packages.nix4
3 files changed, 41 insertions, 1 deletions
diff --git a/pkgs/tools/inputmethods/fcitx/default.nix b/pkgs/tools/inputmethods/fcitx/default.nix
index 28f6c97949b5..a8b3089c58ac 100644
--- a/pkgs/tools/inputmethods/fcitx/default.nix
+++ b/pkgs/tools/inputmethods/fcitx/default.nix
@@ -5,7 +5,8 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "fcitx-4.2.8.5";
+  name = "fcitx-${version}";
+  version = "4.2.8.5";
 
   src = fetchurl {
     url = "http://download.fcitx-im.org/fcitx/${name}_dict.tar.xz";
diff --git a/pkgs/tools/inputmethods/fcitx/wrapper.nix b/pkgs/tools/inputmethods/fcitx/wrapper.nix
new file mode 100644
index 000000000000..d4efb3326969
--- /dev/null
+++ b/pkgs/tools/inputmethods/fcitx/wrapper.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildEnv, fcitx, makeWrapper, plugins }:
+
+# This is based on the pidgin-with-plugins package.
+# Users should be able to configure what plugins are used
+# by putting the following in their /etc/nixos/configuration.nix:
+# environment.systemPackages = with pkgs; [
+#     (fcitx-with-plugins.override { plugins = [ fcitx-anthy ]; })
+# ]
+# Or, a normal user could use it by putting the following in his
+# ~/.nixpkgs/config.nix:
+# packageOverrides = pkgs: with pkgs; rec {
+#     (fcitx-with-plugins.override { plugins = [ fcitx-anthy ]; })
+# }
+
+let
+drv = buildEnv {
+  name = "fcitx-with-plugins-" + (builtins.parseDrvName fcitx.name).version;
+
+  paths = [ fcitx ] ++ plugins;
+
+  postBuild = ''
+    # TODO: This could be avoided if buildEnv could be forced to create all directories
+    if [ -L $out/bin ]; then
+      rm $out/bin
+      mkdir $out/bin
+      for i in ${fcitx}/bin/*; do
+        ln -s $i $out/bin
+      done
+    fi
+    wrapProgram $out/bin/fcitx \
+      --set FCITXDIR "$out/"
+  '';
+  };
+in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })
+
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d4515b8694e7..85ea0f652287 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1117,6 +1117,10 @@ let
 
   fcitx-configtool = callPackage ../tools/inputmethods/fcitx/fcitx-configtool.nix { };
 
+  fcitx-with-plugins = callPackage ../tools/inputmethods/fcitx/wrapper.nix {
+    plugins = [ ];
+  };
+
   fcron = callPackage ../tools/system/fcron { };
 
   fdm = callPackage ../tools/networking/fdm {};