Skip to content

opensteno/plover-flake

Repository files navigation

A flake for Plover with support for plugins

This is an experimental flake which packages Plover for Nix, along with support for plugins from the Plover Plugins Registry.

Quick start

For a quick try, use nix run:

# start Plover with no plugin (default):
nix run github:openstenoproject/plover-flake

# start Plover with plugins:
nix run github:openstenoproject/plover-flake#plover-full

Usage

Add this flake to your flake inputs:

{
  inputs = {
    plover-flake.url = "github:openstenoproject/plover-flake";
  };
  # ..
}

Note

We upgraded Qt 5 to Qt 6 in April 2025 (old version of README). If you wish to keep using the old version of Plover, pin the input URL to github:openstenoproject/plover-flake/6807afead2fb9e402dddb038d45b38e6226e94d1.

Then a Plover derivation containing the plugins you want can be built with the following expression:

# ${system} is your platform (e.g., `x86_64-linux`)
inputs.plover-flake.packages.${system}.plover.withPlugins (ps: with ps; [
  plover-lapwing-aio
  plover-console-ui
])

ps is an attribute set containing every plugin from the registry.

Alternatively, use the plover-full package, which bundles every non-broken plugin:

inputs.plover-flake.packages.${system}.plover-full

home-manager module

If you use home-manager, there is a module available. Here is an example of a configuration:

# any file imported by home-manager, e.g. home.nix

{ inputs, ... }: {
  imports = [
    inputs.plover-flake.homeManagerModules.plover
  ];

  programs.plover = {
    enable = true;
    package = inputs.plover-flake.packages.${pkgs.stdenv.hostPlatform.system}.plover.withPlugins (
      ps: with ps; [
        plover-lapwing-aio
      ]
    );

    # Or, use `plover-full` if you want Plover with all the plugins installed:
    # package = inputs.plover-flake.packages.${pkgs.stdenv.hostPlatform.system}.plover-full;

    # (optional) Generate `plover.cfg`:
    settings = {
      "Machine Configuration" = {
        machine_type = "Gemini PR";
        auto_start = true;
      };
      "Output Configuration".undo_levels = 100;
    };
  };
}

If you don't want Nix to manage the configuration of Plover, you can omit the settings value.

NixOS configuration

To let Plover find serial ports, add your user to the dialout group:

users.users."YOUR USER".extraGroups = [ "dialout" ];

If you use Wayland, also add a udev rule for uinput and put your user in the input group so Plover can emit characters:

services.udev.extraRules = ''
    KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"
'';

users.users."YOUR USER".extraGroups = [ "input" ];

Troubleshooting

If a specific plugin fails to build it is most likely because of a missing dependency. In that case that dependency can be added to overrides.nix, any pull requests doing so are welcome.

Q&A

The fonts are too small

You may want to set QT_SCALE_FACTOR for DPI scaling:

QT_SCALE_FACTOR="1.5" nix run github:openstenoproject/plover-flake

You could set it via home-manager session variables, or you may want to wrap plover with a shell script. If you want builtin support, feel free to request!

About

Nix Flake for Plover

Resources

Stars

25 stars

Watchers

3 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages