nix-dotfiles/modules/desktop/rofi.nix

43 lines
982 B
Nix

{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.rofi;
in {
options.modules.desktop.rofi = {
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
dmenu = mkEnableOption "Use as a replacement for dmenu";
package = mkOption {
type = types.package;
default = pkgs.rofi-unwrapped;
example = "pkgs.rofi";
};
};
config = mkIf cfg.enable {
hm.programs.rofi = {
enable = true;
package = cfg.package;
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}px";
extraConfig = {
show-icons = true;
};
};
user.packages = mkIf cfg.dmenu [ (pkgs.writeShellScriptBin "dmenu" ''
set -euo pipefail
prompt="select option"
while [ $# -gt 0 ]; do
case "$1" in
-p) shift; prompt="$1" ;;
esac
shift
done
rofi -dmenu -i -p "$prompt"
'') ];
};
}