From 3603c9b403333304be83769edb0c3f51d71c38de Mon Sep 17 00:00:00 2001 From: Gavin John Date: Tue, 24 Jun 2025 10:03:26 -0400 Subject: [PATCH 01/18] python3Packages.rtf-tokenize: init at 1.0.0 Co-authored-by: Yueh-Shun Li --- .../python-modules/rtf-tokenize/default.nix | 51 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 53 insertions(+) create mode 100644 pkgs/development/python-modules/rtf-tokenize/default.nix diff --git a/pkgs/development/python-modules/rtf-tokenize/default.nix b/pkgs/development/python-modules/rtf-tokenize/default.nix new file mode 100644 index 000000000000..f6701180dabc --- /dev/null +++ b/pkgs/development/python-modules/rtf-tokenize/default.nix @@ -0,0 +1,51 @@ +{ + lib, + python, + buildPythonPackage, + fetchFromGitHub, + setuptools, + pytestCheckHook, + versionCheckHook, + which, +}: + +buildPythonPackage (finalAttrs: { + __structuredAttrs = true; + + pname = "rtf-tokenize"; + version = "1.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "rtf_tokenize"; + tag = finalAttrs.version; + hash = "sha256-zwD2sRYTY1Kmm/Ag2hps9VRdUyQoi4zKtDPR+F52t9A="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + doInstallCheck = true; + + nativeInstallCheckInputs = [ + versionCheckHook + which + ]; + + versionCheckProgramArg = "${placeholder "out"}/${python.sitePackages}"; + + preInstallCheck = '' + versionCheckProgram="$(which ls)" + ''; + + 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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d66783552dc8..bf439af16afe 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17157,6 +17157,8 @@ self: super: with self; { rtb-data = callPackage ../development/python-modules/rtb-data { }; + rtf-tokenize = callPackage ../development/python-modules/rtf-tokenize { }; + rtfde = callPackage ../development/python-modules/rtfde { }; rtfunicode = callPackage ../development/python-modules/rtfunicode { }; From 4d05dc3e571388c5314ccc07e747a6097dab13c1 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Tue, 24 Jun 2025 10:31:05 -0400 Subject: [PATCH 02/18] python3Packages.plover-stroke: init at 1.1.0 Co-authored-by: Yueh-Shun Li --- .../python-modules/plover-stroke/default.nix | 57 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 59 insertions(+) create mode 100644 pkgs/development/python-modules/plover-stroke/default.nix diff --git a/pkgs/development/python-modules/plover-stroke/default.nix b/pkgs/development/python-modules/plover-stroke/default.nix new file mode 100644 index 000000000000..a97dfa33f5bd --- /dev/null +++ b/pkgs/development/python-modules/plover-stroke/default.nix @@ -0,0 +1,57 @@ +{ + lib, + python, + buildPythonPackage, + fetchFromGitHub, + setuptools, + pytestCheckHook, + pytest-qt, + pyside6, + versionCheckHook, + which, +}: + +buildPythonPackage (finalAttrs: { + __structuredAttrs = true; + + pname = "plover-stroke"; + version = "1.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "plover_stroke"; + tag = finalAttrs.version; + hash = "sha256-A75OMzmEn0VmDAvmQCp6/7uptxzwWJTwsih3kWlYioA="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-qt + pyside6 + ]; + + doInstallCheck = true; + + nativeInstallCheckInputs = [ + versionCheckHook + which + ]; + + versionCheckProgramArg = "${placeholder "out"}/${python.sitePackages}"; + + preInstallCheck = '' + versionCheckProgram="$(which ls)" + ''; + + 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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index bf439af16afe..455b6d84bcf2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12664,6 +12664,8 @@ self: super: with self; { plotpy = callPackage ../development/python-modules/plotpy { }; + plover-stroke = callPackage ../development/python-modules/plover-stroke { }; + pluggy = callPackage ../development/python-modules/pluggy { }; pluginbase = callPackage ../development/python-modules/pluginbase { }; From 02ee7668c7d6ca1e4387a10779f88dda64b13d1f Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:40:20 -0400 Subject: [PATCH 03/18] plover.dev: unbork --- pkgs/applications/misc/plover/default.nix | 98 ++++++++++++++--------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 60 insertions(+), 40 deletions(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index fc0ff2a6b9f9..92c2a95d8f3a 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -1,20 +1,70 @@ { lib, config, + stdenv, + buildPythonPackage ? python3Packages.buildPythonPackage, fetchFromGitHub, + versionCheckHook, python3Packages, - wmctrl, - qtbase, - mkDerivationWith, + libsForQt5, }: { - dev = - with python3Packages; - mkDerivationWith buildPythonPackage rec { + dev = ( + buildPythonPackage rec { pname = "plover"; version = "4.0.2"; - format = "setuptools"; + 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 = with python3Packages; [ + babel + setuptools + pyqt5 + wheel + ]; + dependencies = with python3Packages; [ + appdirs + evdev + pyqt5 + pyserial + plover-stroke + rtf-tokenize + setuptools + wcwidth + xlib + ]; + nativeBuildInputs = with libsForQt5; [ + wrapQtAppsHook + ]; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + versionCheckHook + pytest-qt + mock + ]; + + # Segfaults?! + disabledTestPaths = [ "test/gui_qt/test_dictionaries_widget.py" ]; + + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + dontWrapQtApps = true; + + pythonImportsCheck = [ "plover" ]; meta = { broken = stdenv.hostPlatform.isDarwin; @@ -25,38 +75,8 @@ ]; license = lib.licenses.gpl2; }; - - src = fetchFromGitHub { - owner = "openstenoproject"; - repo = "plover"; - tag = "v${version}"; - sha256 = "sha256-VpQT25bl8yPG4J9IwLkhSkBt31Y8BgPJdwa88WlreA8="; - }; - - # I'm not sure why we don't find PyQt5 here but there's a similar - # sed on many of the platforms Plover builds for - postPatch = "sed -i /PyQt5/d setup.cfg"; - - nativeCheckInputs = [ - pytest - mock - ]; - propagatedBuildInputs = [ - babel - pyqt5 - xlib - pyserial - appdirs - wcwidth - setuptools - ]; - - dontWrapQtApps = true; - - preFixup = '' - makeWrapperArgs+=("''${qtWrapperArgs[@]}") - ''; - }; + } + ); } // lib.optionalAttrs config.allowAliases { stable = throw "plover.stable was removed because it used Python 2. Use plover.dev instead."; # added 2022-06-05 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ca575294d8bc..04f00495197a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10132,7 +10132,7 @@ with pkgs; plex-mpv-shim = python3Packages.callPackage ../applications/video/plex-mpv-shim { }; - plover = recurseIntoAttrs (libsForQt5.callPackage ../applications/misc/plover { }); + plover = callPackage ../applications/misc/plover { }; # perhaps there are better apps for this task? It's how I had configured my previous system. # And I don't want to rewrite all rules From 1e116a46a71a21c02869159992aeaf927ac42492 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:43:11 -0400 Subject: [PATCH 04/18] plover.dev: fix license --- pkgs/applications/misc/plover/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index 92c2a95d8f3a..372ff9e51e13 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -73,7 +73,7 @@ twey kovirobi ]; - license = lib.licenses.gpl2; + license = licenses.gpl2Plus; }; } ); From 3113377e4bfb732630cbfcf425a41daf82ffedb1 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:44:02 -0400 Subject: [PATCH 05/18] plover.dev: get rid of with lib in meta --- pkgs/applications/misc/plover/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index 372ff9e51e13..5a1cea4226a7 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -73,7 +73,7 @@ twey kovirobi ]; - license = licenses.gpl2Plus; + license = lib.licenses.gpl2Plus; }; } ); From e27c0ae0d5128e835caa212da367ea9f427cce19 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:44:28 -0400 Subject: [PATCH 06/18] plover.dev: add additional meta information --- pkgs/applications/misc/plover/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index 5a1cea4226a7..dcdf08f8814b 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -67,13 +67,16 @@ pythonImportsCheck = [ "plover" ]; meta = { - broken = stdenv.hostPlatform.isDarwin; description = "OpenSteno Plover stenography software"; + homepage = "https://www.openstenoproject.org/plover/"; + mainProgram = "plover"; maintainers = with lib.maintainers; [ twey kovirobi ]; license = lib.licenses.gpl2Plus; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isDarwin; }; } ); From f8b3c814a19c9dbd1284262270a6012d0f64333d Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:44:42 -0400 Subject: [PATCH 07/18] plover.dev: add pandapip1 to maintainers --- pkgs/applications/misc/plover/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index dcdf08f8814b..a26ffa27ea8a 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -73,6 +73,7 @@ maintainers = with lib.maintainers; [ twey kovirobi + pandapip1 ]; license = lib.licenses.gpl2Plus; platforms = lib.platforms.unix; From 907c48e3ca7606f0357982b5960fc3abcedd2316 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 09:49:06 -0400 Subject: [PATCH 08/18] plover.dev: add better parameterization --- pkgs/applications/misc/plover/default.nix | 33 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index a26ffa27ea8a..ec14f6f94d48 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -2,13 +2,36 @@ lib, config, stdenv, - buildPythonPackage ? python3Packages.buildPythonPackage, + plover, fetchFromGitHub, + fetchpatch, versionCheckHook, python3Packages, libsForQt5, }: +let + inherit (python3Packages) + buildPythonPackage + appdirs + babel + evdev + mock + pyqt5 + pyserial + pytestCheckHook + pytest-qt + plover-stroke + rtf-tokenize + setuptools + wcwidth + wheel + xlib + ; + inherit (libsForQt5) + wrapQtAppsHook + ; +in { dev = ( buildPythonPackage rec { @@ -27,13 +50,13 @@ sed -i 's/,<77//g' pyproject.toml # pythonRelaxDepsHook doesn't work for this for some reason ''; - build-system = with python3Packages; [ + build-system = [ babel setuptools pyqt5 wheel ]; - dependencies = with python3Packages; [ + dependencies = [ appdirs evdev pyqt5 @@ -44,11 +67,11 @@ wcwidth xlib ]; - nativeBuildInputs = with libsForQt5; [ + nativeBuildInputs = [ wrapQtAppsHook ]; - nativeCheckInputs = with python3Packages; [ + nativeCheckInputs = [ pytestCheckHook versionCheckHook pytest-qt From c6f8d43c60b48924870fe07f495af5669f63789c Mon Sep 17 00:00:00 2001 From: Gavin John Date: Fri, 27 Jun 2025 10:16:37 -0400 Subject: [PATCH 09/18] plover.dev: rename to plover --- pkgs/applications/misc/plover/default.nix | 131 +++++++++++----------- 1 file changed, 67 insertions(+), 64 deletions(-) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/applications/misc/plover/default.nix index ec14f6f94d48..af6620404e52 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/applications/misc/plover/default.nix @@ -3,6 +3,7 @@ config, stdenv, plover, + buildPythonPackage ? python3Packages.buildPythonPackage, fetchFromGitHub, fetchpatch, versionCheckHook, @@ -32,79 +33,81 @@ let wrapQtAppsHook ; in -{ - dev = ( - buildPythonPackage rec { - pname = "plover"; - version = "4.0.2"; - pyproject = true; +buildPythonPackage rec { + pname = "plover"; + version = "4.0.2"; + pyproject = true; - src = fetchFromGitHub { - owner = "openstenoproject"; - repo = "plover"; - tag = "v${version}"; - hash = "sha256-VpQT25bl8yPG4J9IwLkhSkBt31Y8BgPJdwa88WlreA8="; - }; + 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 - ''; + postPatch = '' + sed -i 's/,<77//g' pyproject.toml # pythonRelaxDepsHook doesn't work for this for some reason + ''; - build-system = [ - babel - setuptools - pyqt5 - wheel - ]; - dependencies = [ - appdirs - evdev - pyqt5 - pyserial - plover-stroke - rtf-tokenize - setuptools - wcwidth - xlib - ]; - nativeBuildInputs = [ - wrapQtAppsHook - ]; + build-system = [ + babel + setuptools + pyqt5 + wheel + ]; + dependencies = [ + appdirs + evdev + pyqt5 + pyserial + plover-stroke + rtf-tokenize + setuptools + wcwidth + xlib + ]; + nativeBuildInputs = [ + wrapQtAppsHook + ]; - nativeCheckInputs = [ - pytestCheckHook - versionCheckHook - pytest-qt - mock - ]; + nativeCheckInputs = [ + pytestCheckHook + versionCheckHook + pytest-qt + mock + ]; - # Segfaults?! - disabledTestPaths = [ "test/gui_qt/test_dictionaries_widget.py" ]; + # Segfaults?! + disabledTestPaths = [ "test/gui_qt/test_dictionaries_widget.py" ]; - preFixup = '' - makeWrapperArgs+=("''${qtWrapperArgs[@]}") - ''; + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; - dontWrapQtApps = true; + dontWrapQtApps = true; - pythonImportsCheck = [ "plover" ]; + 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; - }; - } - ); + 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; + }; } // lib.optionalAttrs config.allowAliases { - stable = throw "plover.stable was removed because it used Python 2. Use plover.dev instead."; # added 2022-06-05 + # TODO: After 26.05 branch-off, remove these aliases + dev = + if lib.versionOlder "25.05" lib.version then + throw "plover.dev was renamed. Use plover-dev instead." # added 2025-06-05` + else + plover; + stable = throw "plover.stable was renamed. Use plover instead."; # added 2022-06-05; updated 2025-06-27 } From 0954aa206e197559dc7982212ed2ce1319949cd2 Mon Sep 17 00:00:00 2001 From: Gavin John Date: Sun, 28 Sep 2025 19:13:04 -0700 Subject: [PATCH 10/18] python3Packages.plover_4: move from plover.dev Co-authored-by: Yueh-Shun Li --- .../python-modules/plover/4.nix} | 41 ++++++++----------- pkgs/top-level/all-packages.nix | 2 - pkgs/top-level/python-packages.nix | 4 ++ 3 files changed, 20 insertions(+), 27 deletions(-) rename pkgs/{applications/misc/plover/default.nix => development/python-modules/plover/4.nix} (82%) diff --git a/pkgs/applications/misc/plover/default.nix b/pkgs/development/python-modules/plover/4.nix similarity index 82% rename from pkgs/applications/misc/plover/default.nix rename to pkgs/development/python-modules/plover/4.nix index af6620404e52..9c3cd4926213 100644 --- a/pkgs/applications/misc/plover/default.nix +++ b/pkgs/development/python-modules/plover/4.nix @@ -3,36 +3,27 @@ config, stdenv, plover, - buildPythonPackage ? python3Packages.buildPythonPackage, + buildPythonPackage, fetchFromGitHub, fetchpatch, versionCheckHook, - python3Packages, - libsForQt5, + appdirs, + babel, + evdev, + mock, + pyqt5, + pyserial, + pytestCheckHook, + pytest-qt, + plover-stroke, + rtf-tokenize, + setuptools, + wcwidth, + wheel, + xlib, + wrapQtAppsHook, }: -let - inherit (python3Packages) - buildPythonPackage - appdirs - babel - evdev - mock - pyqt5 - pyserial - pytestCheckHook - pytest-qt - plover-stroke - rtf-tokenize - setuptools - wcwidth - wheel - xlib - ; - inherit (libsForQt5) - wrapQtAppsHook - ; -in buildPythonPackage rec { pname = "plover"; version = "4.0.2"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 04f00495197a..7eb9ca19ac99 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10132,8 +10132,6 @@ with pkgs; plex-mpv-shim = python3Packages.callPackage ../applications/video/plex-mpv-shim { }; - plover = callPackage ../applications/misc/plover { }; - # perhaps there are better apps for this task? It's how I had configured my previous system. # And I don't want to rewrite all rules profanity = callPackage ../applications/networking/instant-messengers/profanity ( diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 455b6d84bcf2..50ad5bc32506 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12666,6 +12666,10 @@ self: super: with self; { plover-stroke = callPackage ../development/python-modules/plover-stroke { }; + plover_4 = callPackage ../development/python-modules/plover/4.nix { + inherit (pkgs.libsForQt5) wrapQtAppsHook; + }; + pluggy = callPackage ../development/python-modules/pluggy { }; pluginbase = callPackage ../development/python-modules/pluginbase { }; From 188701672b4babf83cbae557a211e2fb209dba2e Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 01:19:10 +0800 Subject: [PATCH 11/18] python3Packages.plover: init referencing python3Packages.plover_4 --- pkgs/top-level/python-packages.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 50ad5bc32506..a93996c4edad 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12664,6 +12664,14 @@ self: super: with self; { plotpy = callPackage ../development/python-modules/plotpy { }; + # Plover 5 moves from PyQt5 to PySide6, + # which is a backward-incompatible change to praphical plugins. + # Use Plover 4 for now (2026-04-26), + # as the upstream still warns about this in every Plover 5 release, + # List of unsupported plugins: + # https://github.com/opensteno/plover_plugins_registry/blob/master/unsupported.json + plover = plover_4; + plover-stroke = callPackage ../development/python-modules/plover-stroke { }; plover_4 = callPackage ../development/python-modules/plover/4.nix { From 14b4884f7adb0b89bac98c34bc9e1606ebdc60f1 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 01:36:07 +0800 Subject: [PATCH 12/18] plover: init referencing python3Packages.plover with aliases Co-authored-by: Gavin John --- pkgs/by-name/pl/plover/package.nix | 17 +++++++++++++++++ pkgs/development/python-modules/plover/4.nix | 11 ----------- 2 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 pkgs/by-name/pl/plover/package.nix diff --git a/pkgs/by-name/pl/plover/package.nix b/pkgs/by-name/pl/plover/package.nix new file mode 100644 index 000000000000..8753ebb0316c --- /dev/null +++ b/pkgs/by-name/pl/plover/package.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + python3Packages, + # For aliases + plover, +}: +python3Packages.toPythonApplication python3Packages.plover +# Aliases to now-dropped plover.stable and plover.dev +# Added 2026-04-22 +# TODO(@ShamrockLee): remove after Nixpkgs 25.11 EOL +// lib.optionalAttrs (config.allowAliases && !(lib.oldestSupportedReleaseIsAtLeast 2605)) { + dev = + lib.throwIf (lib.oldestSupportedReleaseIsAtLeast 2511) "plover.dev was renamed. Use plover instead." + plover; # Added 2026-04-26 + stable = throw "plover.stable was renamed. Use plover instead."; # Added 2022-06-05; updated 2026-04-26 +} diff --git a/pkgs/development/python-modules/plover/4.nix b/pkgs/development/python-modules/plover/4.nix index 9c3cd4926213..4d65eb0875eb 100644 --- a/pkgs/development/python-modules/plover/4.nix +++ b/pkgs/development/python-modules/plover/4.nix @@ -1,8 +1,6 @@ { lib, - config, stdenv, - plover, buildPythonPackage, fetchFromGitHub, fetchpatch, @@ -93,12 +91,3 @@ buildPythonPackage rec { broken = stdenv.hostPlatform.isDarwin; }; } -// lib.optionalAttrs config.allowAliases { - # TODO: After 26.05 branch-off, remove these aliases - dev = - if lib.versionOlder "25.05" lib.version then - throw "plover.dev was renamed. Use plover-dev instead." # added 2025-06-05` - else - plover; - stable = throw "plover.stable was renamed. Use plover instead."; # added 2022-06-05; updated 2025-06-27 -} From 12e0d3a21cd44ec08f5561e86c7defff4ce4e83e Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 01:39:57 +0800 Subject: [PATCH 13/18] python3Packages.plover_4: modernise Remove unused set pattern from override interface. Use fixed-point arguments when calling buildPythonPackage. Use structured attributes. --- pkgs/development/python-modules/plover/4.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/plover/4.nix b/pkgs/development/python-modules/plover/4.nix index 4d65eb0875eb..ee32e2f50da1 100644 --- a/pkgs/development/python-modules/plover/4.nix +++ b/pkgs/development/python-modules/plover/4.nix @@ -3,7 +3,6 @@ stdenv, buildPythonPackage, fetchFromGitHub, - fetchpatch, versionCheckHook, appdirs, babel, @@ -22,7 +21,9 @@ wrapQtAppsHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { + __structuredAttrs = true; + pname = "plover"; version = "4.0.2"; pyproject = true; @@ -30,7 +31,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "openstenoproject"; repo = "plover"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-VpQT25bl8yPG4J9IwLkhSkBt31Y8BgPJdwa88WlreA8="; }; @@ -90,4 +91,4 @@ buildPythonPackage rec { platforms = lib.platforms.unix; broken = stdenv.hostPlatform.isDarwin; }; -} +}) From 15655c9b0d97245be3a8dbcc3863ea584830f783 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 02:06:35 +0800 Subject: [PATCH 14/18] python3Packages.plover_4: add ShamrockLee to maintainers --- pkgs/development/python-modules/plover/4.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/python-modules/plover/4.nix b/pkgs/development/python-modules/plover/4.nix index ee32e2f50da1..bda985cb0122 100644 --- a/pkgs/development/python-modules/plover/4.nix +++ b/pkgs/development/python-modules/plover/4.nix @@ -86,6 +86,7 @@ buildPythonPackage (finalAttrs: { twey kovirobi pandapip1 + ShamrockLee ]; license = lib.licenses.gpl2Plus; platforms = lib.platforms.unix; From 5f6315fba0e92733fb9da6e0f185a628d267a013 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 01:44:27 +0800 Subject: [PATCH 15/18] python3Packages.plover_5: copy from python3Packages.plover_4 --- pkgs/development/python-modules/plover/5.nix | 95 ++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 pkgs/development/python-modules/plover/5.nix diff --git a/pkgs/development/python-modules/plover/5.nix b/pkgs/development/python-modules/plover/5.nix new file mode 100644 index 000000000000..bda985cb0122 --- /dev/null +++ b/pkgs/development/python-modules/plover/5.nix @@ -0,0 +1,95 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + versionCheckHook, + appdirs, + babel, + evdev, + mock, + pyqt5, + pyserial, + pytestCheckHook, + pytest-qt, + plover-stroke, + rtf-tokenize, + setuptools, + wcwidth, + wheel, + xlib, + wrapQtAppsHook, +}: + +buildPythonPackage (finalAttrs: { + __structuredAttrs = true; + + pname = "plover"; + version = "4.0.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "openstenoproject"; + repo = "plover"; + tag = "v${finalAttrs.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 + pyqt5 + wheel + ]; + dependencies = [ + appdirs + evdev + pyqt5 + 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 + ShamrockLee + ]; + license = lib.licenses.gpl2Plus; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isDarwin; + }; +}) From a005a75d69c663a75bd3b209d2fa5de40624b34c Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 02:01:12 +0800 Subject: [PATCH 16/18] python3Packages.plover_5: init Co-authored-by: Gavin John --- pkgs/development/python-modules/plover/5.nix | 47 +++++++++++++++++--- pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/plover/5.nix b/pkgs/development/python-modules/plover/5.nix index bda985cb0122..45899b201b7a 100644 --- a/pkgs/development/python-modules/plover/5.nix +++ b/pkgs/development/python-modules/plover/5.nix @@ -1,6 +1,7 @@ { lib, stdenv, + buildPackages, buildPythonPackage, fetchFromGitHub, versionCheckHook, @@ -8,16 +9,24 @@ babel, evdev, mock, - pyqt5, + packaging, + pkginfo, + psutil, + pygments, pyserial, + pyside6, pytestCheckHook, pytest-qt, plover-stroke, + readme-renderer, + requests-cache, + requests-futures, rtf-tokenize, setuptools, wcwidth, wheel, xlib, + qtbase, wrapQtAppsHook, }: @@ -25,37 +34,61 @@ buildPythonPackage (finalAttrs: { __structuredAttrs = true; pname = "plover"; - version = "4.0.2"; + version = "5.0.0.dev2"; pyproject = true; src = fetchFromGitHub { owner = "openstenoproject"; repo = "plover"; tag = "v${finalAttrs.version}"; - hash = "sha256-VpQT25bl8yPG4J9IwLkhSkBt31Y8BgPJdwa88WlreA8="; + hash = "sha256-PZwxVrdQPhgbj+YmWZIUETngeJGs6IQty0hY43tLQO0="; }; + # pythonRelaxDeps seemingly doesn't work here postPatch = '' - sed -i 's/,<77//g' pyproject.toml # pythonRelaxDepsHook doesn't work for this for some reason + sed -i 's/,<77//g' pyproject.toml + sed -i /PySide6-Essentials/d pyproject.toml ''; build-system = [ babel setuptools - pyqt5 + pyside6 wheel + + # 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. + (buildPackages.writeShellScriptBin "pyside6-uic" '' + exec ${qtbase}/libexec/uic -g python "$@" + '') + (buildPackages.writeShellScriptBin "pyside6-rcc" '' + exec ${qtbase}/libexec/rcc -g python "$@" + '') ]; dependencies = [ appdirs evdev - pyqt5 + packaging + pkginfo + psutil + pygments pyserial + pyside6 plover-stroke + qtbase + readme-renderer + requests-cache + requests-futures rtf-tokenize setuptools wcwidth xlib - ]; + ] + ++ readme-renderer.optional-dependencies.md; nativeBuildInputs = [ wrapQtAppsHook ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a93996c4edad..debe4b242966 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12678,6 +12678,10 @@ self: super: with self; { inherit (pkgs.libsForQt5) wrapQtAppsHook; }; + plover_5 = callPackage ../development/python-modules/plover/5.nix { + inherit (pkgs.qt6) qtbase wrapQtAppsHook; + }; + pluggy = callPackage ../development/python-modules/pluggy { }; pluginbase = callPackage ../development/python-modules/pluginbase { }; From 318747e3c22fa4af72a9dba4804db36b71814022 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 02:09:54 +0800 Subject: [PATCH 17/18] plover_4: init referencing python3Packages.plover_4 --- pkgs/by-name/pl/plover_4/package.nix | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 pkgs/by-name/pl/plover_4/package.nix diff --git a/pkgs/by-name/pl/plover_4/package.nix b/pkgs/by-name/pl/plover_4/package.nix new file mode 100644 index 000000000000..eed2b2361775 --- /dev/null +++ b/pkgs/by-name/pl/plover_4/package.nix @@ -0,0 +1,3 @@ +{ python3Packages }: + +python3Packages.toPythonApplication python3Packages.plover_4 From e2acb5061abf30cd6f0358f07bb0d6da632af4ae Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 26 Apr 2026 02:11:44 +0800 Subject: [PATCH 18/18] plover_5: init referencing python3Packages.plover_5 --- pkgs/by-name/pl/plover_5/package.nix | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 pkgs/by-name/pl/plover_5/package.nix diff --git a/pkgs/by-name/pl/plover_5/package.nix b/pkgs/by-name/pl/plover_5/package.nix new file mode 100644 index 000000000000..20ecfa171780 --- /dev/null +++ b/pkgs/by-name/pl/plover_5/package.nix @@ -0,0 +1,3 @@ +{ python3Packages }: + +python3Packages.toPythonApplication python3Packages.plover_5