nixos/plotinus: add module to enable plotinus

Changed files
+90
nixos
+1
nixos/modules/module-list.nix
···
./programs/nano.nix
./programs/npm.nix
./programs/oblogout.nix
+
./programs/plotinus.nix
./programs/qt5ct.nix
./programs/rootston.nix
./programs/screen.nix
+36
nixos/modules/programs/plotinus.nix
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
+
let
+
cfg = config.programs.plotinus;
+
in
+
{
+
meta = {
+
maintainers = pkgs.plotinus.meta.maintainers;
+
doc = ./plotinus.xml;
+
};
+
+
###### interface
+
+
options = {
+
programs.plotinus = {
+
enable = mkOption {
+
default = false;
+
description = ''
+
Whether to enable the Plotinus GTK+3 plugin. Plotinus provides a
+
popup (triggered by Ctrl-Shift-P) to search the menus of a
+
compatible application.
+
'';
+
type = types.bool;
+
};
+
};
+
};
+
+
###### implementation
+
+
config = mkIf cfg.enable {
+
environment.variables.XDG_DATA_DIRS = [ "${pkgs.plotinus}/share/gsettings-schemas/${pkgs.plotinus.name}" ];
+
environment.variables.GTK3_MODULES = [ "${pkgs.plotinus}/lib/libplotinus.so" ];
+
};
+
}
+25
nixos/modules/programs/plotinus.xml
···
+
<chapter xmlns="http://docbook.org/ns/docbook"
+
xmlns:xlink="http://www.w3.org/1999/xlink"
+
xmlns:xi="http://www.w3.org/2001/XInclude"
+
version="5.0"
+
xml:id="module-program-plotinus">
+
+
<title>Plotinus</title>
+
+
<para><emphasis>Source:</emphasis> <filename>modules/programs/plotinus.nix</filename></para>
+
+
<para><emphasis>Upstream documentation:</emphasis> <link xlink:href="https://github.com/p-e-w/plotinus"/></para>
+
+
<para>Plotinus is a searchable command palette in every modern GTK+ application.</para>
+
+
<para>When in a GTK+3 application and Plotinus is enabled, you can press <literal>Ctrl+Shift+P</literal> to open the command palette. The command palette provides a searchable list of of all menu items in the application.</para>
+
+
<para>To enable Plotinus, add the following to your <filename>configuration.nix</filename>:
+
+
<programlisting>
+
programs.plotinus.enable = true;
+
</programlisting>
+
+
</para>
+
+
</chapter>
+1
nixos/release.nix
···
tests.ipv6 = callTest tests/ipv6.nix {};
tests.jenkins = callTest tests/jenkins.nix {};
tests.plasma5 = callTest tests/plasma5.nix {};
+
tests.plotinus = callTest tests/plotinus.nix {};
tests.keymap = callSubTests tests/keymap.nix {};
tests.initrdNetwork = callTest tests/initrd-network.nix {};
tests.kafka_0_9 = callTest tests/kafka_0_9.nix {};
+27
nixos/tests/plotinus.nix
···
+
import ./make-test.nix ({ pkgs, ... }: {
+
name = "plotinus";
+
meta = {
+
maintainers = pkgs.plotinus.meta.maintainers;
+
};
+
+
machine =
+
{ config, pkgs, ... }:
+
+
{ imports = [ ./common/x11.nix ];
+
programs.plotinus.enable = true;
+
environment.systemPackages = [ pkgs.gnome3.gnome-calculator pkgs.xdotool ];
+
};
+
+
testScript =
+
''
+
$machine->waitForX;
+
$machine->execute("xterm -e 'gnome-calculator' &");
+
$machine->waitForWindow(qr/Calculator/);
+
$machine->execute("xdotool key ctrl+shift+p");
+
$machine->sleep(1); # wait for the popup
+
$machine->execute("xdotool key p r e f e r e n c e s Return");
+
$machine->waitForWindow(qr/Preferences/);
+
$machine->screenshot("screen");
+
'';
+
+
})