summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--home/packages.nix1
-rw-r--r--pkgs/default.nix2
-rw-r--r--pkgs/overlay.nix21
-rw-r--r--pkgs/plover/default.nix5
-rw-r--r--pkgs/plover/plover-dev.nix73
-rw-r--r--pkgs/plover/plover-stroke.nix39
-rw-r--r--pkgs/plover/plover.nix96
-rw-r--r--pkgs/plover/rtf_tokenize.nix33
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 ];
+ };
+}