diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index d227f4112d3a..b15c72ac64db 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -11374,6 +11374,12 @@ githubId = 346094; name = "Michael Alyn Miller"; }; + mandos = { + email = "marek.maksimczyk@mandos.net.pl"; + github = "mandos"; + githubId = 115060; + name = "Marek Maksimczyk"; + }; mangoiv = { email = "contact@mangoiv.com"; github = "mangoiv"; @@ -15818,6 +15824,11 @@ githubId = 811827; name = "Gabriel Lievano"; }; + rgri = { + name = "shortcut"; + github = "rgri"; + githubId = 45253749; + }; rgrinberg = { name = "Rudi Grinberg"; email = "me@rgrinberg.com"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c2bcb2f78080..8d0233065560 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -214,6 +214,7 @@ ./programs/minipro.nix ./programs/miriway.nix ./programs/mosh.nix + ./programs/mouse-actions.nix ./programs/msmtp.nix ./programs/mtr.nix ./programs/nano.nix diff --git a/nixos/modules/programs/mouse-actions.nix b/nixos/modules/programs/mouse-actions.nix new file mode 100644 index 000000000000..fdf39d56d383 --- /dev/null +++ b/nixos/modules/programs/mouse-actions.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.programs.mouse-actions; +in + { + options.programs.mouse-actions = { + enable = lib.mkEnableOption '' + mouse-actions udev rules. This is a prerequisite for using mouse-actions without being root. + ''; + }; + config = lib.mkIf cfg.enable { + services.udev.packages = [ pkgs.mouse-actions ]; + }; + } diff --git a/pkgs/by-name/mo/mouse-actions/package.nix b/pkgs/by-name/mo/mouse-actions/package.nix new file mode 100644 index 000000000000..652c5ed4243f --- /dev/null +++ b/pkgs/by-name/mo/mouse-actions/package.nix @@ -0,0 +1,49 @@ +{ lib +, fetchFromGitHub +, rustPlatform +, pkg-config +, libX11 +, libXi +, libXtst +, libevdev +}: + +rustPlatform.buildRustPackage rec { + pname = "mouse-actions"; + version = "0.4.4"; + + src = fetchFromGitHub { + owner = "jersou"; + repo = "mouse-actions"; + rev = "v${version}"; + hash = "sha256-02E4HrKIoBV3qZPVH6Tjz9Bv/mh5C8amO1Ilmd+YO5g="; + }; + + cargoHash = "sha256-5SUVZlrXIPtlu9KBzucZDCp5t5t8Z4/Nfht2Pw5agVI="; + + buildInputs = [ + libX11 + libXi + libXtst + libevdev + ]; + + nativeBuildInputs = [ + pkg-config + ]; + + postInstall = '' + mkdir -p $out/etc/udev/rules.d/ + echo 'KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"' >> $out/etc/udev/rules.d/80-mouse-actions.rules + echo 'KERNEL=="/dev/input/event*", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"' >> $out/etc/udev/rules.d/80-mouse-actions.rules + ''; + + meta = with lib; { + description = "Execute commands from mouse events such as clicks/wheel on the side/corners of the screen, or drawing shapes"; + homepage = "https://github.com/jersou/mouse-actions"; + license = licenses.mit; + maintainers = with maintainers; [ rgri ]; + mainProgram = "mouse-actions"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/misc/tmux-plugins/default.nix b/pkgs/misc/tmux-plugins/default.nix index 8a5d74b12aa5..d01499af2647 100644 --- a/pkgs/misc/tmux-plugins/default.nix +++ b/pkgs/misc/tmux-plugins/default.nix @@ -548,6 +548,39 @@ in rec { ''; }; + session-wizard = mkTmuxPlugin rec { + pluginName = "session-wizard"; + rtpFilePath = "session-wizard.tmux"; + version = "1.2.0"; + src = pkgs.fetchFromGitHub { + owner = "27medkamal"; + repo = "tmux-session-wizard"; + rev = "V${version}"; + sha256 = "sha256-IfSgX02vXdpzyu1GRF1EvzVCqqOEiTjeXtl1EvNr7EI="; + }; + meta = with lib; { + homepage = "https://github.com/27medkamal/tmux-session-wizard"; + description = "Tmux plugin for creating and switching between sessions based on recently accessed directories"; + longDescription = '' + Session Wizard is using fzf and zoxide to do all the magic. Features: + * Creating a new session from a list of recently accessed directories + * Naming a session after a folder/project + * Switching sessions + * Viewing current or creating new sessions in one popup + ''; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ mandos ]; + }; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postInstall = '' + substituteInPlace $target/session-wizard.tmux \ + --replace \$CURRENT_DIR/session-wizard.sh $target/session-wizard.sh + wrapProgram $target/session-wizard.sh \ + --prefix PATH : ${with pkgs; lib.makeBinPath ([ fzf zoxide coreutils gnugrep gnused ])} + ''; + }; + sessionist = mkTmuxPlugin { pluginName = "sessionist"; version = "unstable-2017-12-03";