diff options
| -rw-r--r-- | home/packages.nix | 1 | ||||
| -rw-r--r-- | pkgs/default.nix | 2 | ||||
| -rw-r--r-- | pkgs/overlay.nix | 21 | ||||
| -rw-r--r-- | pkgs/plover/default.nix | 5 | ||||
| -rw-r--r-- | pkgs/plover/plover-dev.nix | 73 | ||||
| -rw-r--r-- | pkgs/plover/plover-stroke.nix | 39 | ||||
| -rw-r--r-- | pkgs/plover/plover.nix | 96 | ||||
| -rw-r--r-- | pkgs/plover/rtf_tokenize.nix | 33 |
8 files changed, 269 insertions, 1 deletions
diff --git a/home/packages.nix b/home/packages.nix index c4e918b..532dfc6 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -8,6 +8,7 @@ in emacs-pgtk emacs-all-the-icons-fonts julia-mono + plover-dev # internet apps & clients firefox keepassxc mumble lynx offpunk openconnect telegram-desktop monolith magic-wormhole-rs diff --git a/pkgs/default.nix b/pkgs/default.nix index 9e4b3b4..ce35fc2 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,7 +7,7 @@ travelynx crs-tracker crs-php bahnhof-name matrix-to hikari_unstable heartwood radicle-interface radicle-tui inweb nomsring bookwyrm mollysocket git-annex-remote-remarkable2 - ntfy-matrix-bot transport_validator mergiraf git-who; + ntfy-matrix-bot transport_validator mergiraf git-who plover plover-dev; pkgs = nixpkgs; } diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index e02fdef..f76496e 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -26,6 +26,27 @@ in cargoLock.lockFile = "${src.outPath}/Cargo.lock"; }) { }; + + #### taken from nixpkgs PRs + + + plover = self.python3Packages.callPackage ./plover/plover.nix { + inherit (self.libsForQt5) wrapQtAppsHook; + pyqt = self.python3Packages.pyqt5; + }; + + plover-dev = self.python3Packages.callPackage ./plover/plover-dev.nix { + inherit (self.qt6) wrapQtAppsHook qtbase; + pyqt = self.python3Packages.pyside6; + }; + + plover-stroke = self.python3Packages.callPackage ./plover/plover-stroke.nix { }; + + + rtf-tokenize = self.python3Packages.callPackage ./plover/rtf_tokenize.nix { }; + + + #### packages which are actually in use somewhere #### galmon-core = self.callPackage ./galmon.nix {}; diff --git a/pkgs/plover/default.nix b/pkgs/plover/default.nix new file mode 100644 index 0000000..865d469 --- /dev/null +++ b/pkgs/plover/default.nix @@ -0,0 +1,5 @@ +{ config, lib, pkgs, ... }: + +{ + +} diff --git a/pkgs/plover/plover-dev.nix b/pkgs/plover/plover-dev.nix new file mode 100644 index 0000000..c39ee14 --- /dev/null +++ b/pkgs/plover/plover-dev.nix @@ -0,0 +1,73 @@ +{ + lib, + fetchFromGitHub, + writeShellScriptBin, + plover, + python3Packages, + pkginfo, + packaging, + psutil, + pygments, + readme-renderer, + requests-cache, + requests-futures, + # Qt + pyqt, + qtbase, + wrapQtAppsHook, +}: + +(plover.override { + inherit wrapQtAppsHook pyqt; +}).overridePythonAttrs + (oldAttrs: rec { + version = "5.0.0.dev2"; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "plover"; + tag = "v${version}"; + hash = "sha256-PZwxVrdQPhgbj+YmWZIUETngeJGs6IQty0hY43tLQO0="; + }; + + pyproject = true; + + # pythonRelaxDeps seemingly doesn't work here + postPatch = oldAttrs.postPatch + '' + sed -i /PySide6-Essentials/d pyproject.toml + + substituteInPlace pyproject.toml \ + --replace-fail "setuptools>=79.0.0" "setuptools" + ''; + + build-system = oldAttrs.build-system ++ [ + # Replacement for missing pyside6-essentials tools, + # workaround for https://github.com/NixOS/nixpkgs/issues/277849. + # Ideally this would be solved in pyside6 itself but I spent four + # hours trying to untangle its build system before giving up. If + # anyone wants to spend the time fixing it feel free to request + # me (@Pandapip1) as a reviewer. + (writeShellScriptBin "pyside6-uic" '' + exec ${qtbase}/libexec/uic -g python "$@" + '') + (writeShellScriptBin "pyside6-rcc" '' + exec ${qtbase}/libexec/rcc -g python "$@" + '') + ]; + + dependencies = + oldAttrs.dependencies + ++ [ + packaging + pkginfo + psutil + pygments + qtbase + readme-renderer + requests-cache + requests-futures + ] + ++ readme-renderer.optional-dependencies.md; + + meta.description = oldAttrs.meta.description + " (Development version)"; + }) diff --git a/pkgs/plover/plover-stroke.nix b/pkgs/plover/plover-stroke.nix new file mode 100644 index 0000000..62da352 --- /dev/null +++ b/pkgs/plover/plover-stroke.nix @@ -0,0 +1,39 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + pytestCheckHook, + pytest-qt, + pyside6, +}: + +buildPythonPackage rec { + pname = "plover-stroke"; + version = "1.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "plover_stroke"; + tag = version; + hash = "sha256-A75OMzmEn0VmDAvmQCp6/7uptxzwWJTwsih3kWlYioA="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-qt + pyside6 + ]; + + pythonImportsCheck = [ "plover_stroke" ]; + + meta = { + description = "Helper class for working with steno strokes"; + homepage = "https://github.com/openstenoproject/plover_stroke"; + license = lib.licenses.gpl2Plus; # https://github.com/openstenoproject/plover_stroke/issues/4 + maintainers = with lib.maintainers; [ pandapip1 ]; + }; +} diff --git a/pkgs/plover/plover.nix b/pkgs/plover/plover.nix new file mode 100644 index 0000000..17c106c --- /dev/null +++ b/pkgs/plover/plover.nix @@ -0,0 +1,96 @@ +{ + lib, + config, + stdenv, + plover, + buildPythonPackage, + fetchFromGitHub, + fetchpatch, + versionCheckHook, + appdirs, + babel, + evdev, + mock, + pyserial, + pytestCheckHook, + pytest-qt, + plover-stroke, + rtf-tokenize, + setuptools, + wcwidth, + wheel, + xlib, + # Qt dependencies + pyqt, + wrapQtAppsHook, +}: + +buildPythonPackage rec { + pname = "plover"; + version = "4.0.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "plover"; + tag = "v${version}"; + hash = "sha256-VpQT25bl8yPG4J9IwLkhSkBt31Y8BgPJdwa88WlreA8="; + }; + + postPatch = '' + sed -i 's/,<77//g' pyproject.toml # pythonRelaxDepsHook doesn't work for this for some reason + ''; + + build-system = [ + babel + setuptools + pyqt + wheel + ]; + dependencies = [ + appdirs + evdev + pyqt + pyserial + plover-stroke + rtf-tokenize + setuptools + wcwidth + xlib + ]; + nativeBuildInputs = [ + wrapQtAppsHook + ]; + + nativeCheckInputs = [ + pytestCheckHook + versionCheckHook + pytest-qt + mock + ]; + + # Segfaults?! + disabledTestPaths = [ "test/gui_qt/test_dictionaries_widget.py" ]; + + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + dontWrapQtApps = true; + + pythonImportsCheck = [ "plover" ]; + + meta = { + description = "OpenSteno Plover stenography software"; + homepage = "https://www.openstenoproject.org/plover/"; + mainProgram = "plover"; + maintainers = with lib.maintainers; [ + twey + kovirobi + pandapip1 + ]; + license = lib.licenses.gpl2Plus; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isDarwin; + }; +} diff --git a/pkgs/plover/rtf_tokenize.nix b/pkgs/plover/rtf_tokenize.nix new file mode 100644 index 0000000..805845f --- /dev/null +++ b/pkgs/plover/rtf_tokenize.nix @@ -0,0 +1,33 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "rtf-tokenize"; + version = "1.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "rtf_tokenize"; + tag = version; + hash = "sha256-zwD2sRYTY1Kmm/Ag2hps9VRdUyQoi4zKtDPR+F52t9A="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "rtf_tokenize" ]; + + meta = { + description = "Simple RTF tokenizer package for Python"; + homepage = "https://github.com/openstenoproject/rtf_tokenize"; + license = lib.licenses.gpl2Plus; # https://github.com/openstenoproject/rtf_tokenize/issues/1 + maintainers = with lib.maintainers; [ pandapip1 ]; + }; +} |
