about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/onboard/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/onboard/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/misc/onboard/default.nix181
1 files changed, 181 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/onboard/default.nix b/nixpkgs/pkgs/applications/misc/onboard/default.nix
new file mode 100644
index 000000000000..e427519d4d6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/onboard/default.nix
@@ -0,0 +1,181 @@
+{ fetchurl
+, stdenv
+, substituteAll
+, aspellWithDicts
+, at-spi2-core ? null
+, atspiSupport ? true
+, bash
+, glib
+, glibcLocales
+, dconf
+, gobject-introspection
+, gsettings-desktop-schemas
+, gtk3
+, hunspell
+, hunspellDicts
+, hunspellWithDicts
+, intltool
+, isocodes
+, libcanberra-gtk3
+, mousetweaks
+, udev
+, libxkbcommon
+, pkgconfig
+, procps
+, python3
+, wrapGAppsHook
+, xorg
+, yelp
+}:
+
+let
+
+  customHunspell = hunspellWithDicts [
+    hunspellDicts.en-us
+  ];
+
+  majorVersion = "1.4";
+
+in
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "onboard";
+  version = "${majorVersion}.1";
+
+  src = fetchurl {
+    url = "https://launchpad.net/onboard/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "0r9q38ikmr4in4dwqd8m9gh9xjbgxnfxglnjbfcapw8ybfnf3jh1";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit mousetweaks;
+    })
+    # Allow loading hunspell dictionaries installed in NixOS system path
+    ./hunspell-use-xdg-datadirs.patch
+  ];
+
+  nativeBuildInputs = [
+    gobject-introspection
+    intltool
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    bash
+    glib
+    dconf
+    gsettings-desktop-schemas
+    gtk3
+    hunspell
+    isocodes
+    libcanberra-gtk3
+    libxkbcommon
+    mousetweaks
+    udev
+    xorg.libXtst
+    xorg.libxkbfile
+  ] ++ stdenv.lib.optional atspiSupport at-spi2-core;
+
+  propagatedBuildInputs = with python3.pkgs; [
+    dbus-python
+    distutils_extra
+    pyatspi
+    pycairo
+    pygobject3
+    systemd
+  ];
+
+  propagatedUserEnvPkgs = [
+    dconf
+  ];
+
+  checkInputs = [
+    # for Onboard.SpellChecker.aspell_cmd doctests
+    (aspellWithDicts (dicts: with dicts; [ en ]))
+
+    # for Onboard.SpellChecker.hunspell_cmd doctests
+    customHunspell
+
+    # for Onboard.SpellChecker.hunspell doctests
+    hunspellDicts.en-us
+    hunspellDicts.es-es
+    hunspellDicts.it-it
+
+    python3.pkgs.nose
+  ];
+
+  # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  doCheck = false;
+
+  preBuild = ''
+    # Unnecessary file, has been removed upstream
+    # https://github.com/NixOS/nixpkgs/pull/24986#issuecomment-296114062
+    rm -r Onboard/pypredict/attic
+
+    substituteInPlace  ./scripts/sokSettings.py \
+      --replace "#!/usr/bin/python3" "" \
+      --replace "PYTHON_EXECUTABLE," "\"$out/bin/onboard-settings\"" \
+      --replace '"-cfrom Onboard.settings import Settings\ns = Settings(False)"' ""
+
+    chmod -x ./scripts/sokSettings.py
+
+    patchShebangs .
+
+    substituteInPlace setup.py \
+      --replace "/etc" "$out/etc"
+
+    substituteInPlace  ./Onboard/LanguageSupport.py \
+      --replace "/usr/share/xml/iso-codes" "${isocodes}/share/xml/iso-codes" \
+      --replace "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./Onboard/Indicator.py \
+      --replace   "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./gnome/Onboard_Indicator@onboard.org/extension.js \
+      --replace "/usr/bin/yelp" "${yelp}/bin/yelp"
+
+    substituteInPlace  ./Onboard/SpellChecker.py \
+      --replace "/usr/lib" "$out/lib"
+
+    substituteInPlace  ./data/org.onboard.Onboard.service  \
+      --replace "/usr/bin" "$out/bin"
+
+    substituteInPlace  ./Onboard/utils.py \
+      --replace "/usr/share" "$out/share"
+    substituteInPlace  ./onboard-defaults.conf.example \
+      --replace "/usr/share" "$out/share"
+    substituteInPlace  ./Onboard/Config.py \
+      --replace "/usr/share/onboard" "$out/share/onboard"
+
+    substituteInPlace  ./Onboard/WordSuggestions.py \
+      --replace "/usr/bin" "$out/bin"
+
+    # killall is dangerous on non-gnu platforms. Use pkill instead.
+    substituteInPlace  ./setup.py \
+      --replace '"killall",' '"${procps}/bin/pkill", "-x",'
+  '';
+
+  installPhase = ''
+    ${python3.interpreter} setup.py install --prefix="$out"
+
+    cp onboard-default-settings.gschema.override.example $out/share/glib-2.0/schemas/10_onboard-default-settings.gschema.override
+    glib-compile-schemas $out/share/glib-2.0/schemas/
+  '';
+
+  # Remove ubuntu icons.
+  postFixup = ''
+    rm -rf  $out/share/icons/ubuntu-mono-*
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://launchpad.net/onboard";
+    description = "Onscreen keyboard useful for tablet PC users and for mobility impaired users";
+    maintainers = with maintainers; [ johnramsden ];
+    license = licenses.gpl3;
+  };
+}