76 lines
1.9 KiB
Nix
76 lines
1.9 KiB
Nix
{ config
|
|
, lib
|
|
, pkgs
|
|
, ...
|
|
}:
|
|
|
|
with lib;
|
|
let
|
|
cfg = config.my.programs.rofi;
|
|
|
|
rofi-bluetooth = with pkgs; stdenv.mkDerivation rec {
|
|
pname = "rofi-bluetooth";
|
|
version = "unstable-2021-03-05";
|
|
|
|
src = fetchFromGitHub {
|
|
repo = pname;
|
|
owner = "nickclyde";
|
|
# https://github.com/nickclyde/rofi-bluetooth/issues/19
|
|
rev = "893db1f2b549e7bc0e9c62e7670314349a29cdf2";
|
|
sha256 = "sha256-3oROJKEQCuSnLfbJ+JSSc9hcmJTPrLHRQJsrUcaOMss=";
|
|
};
|
|
|
|
nativeBuildInputs = [ makeWrapper ];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
install -D --target-directory=$out/bin/ ./rofi-bluetooth
|
|
|
|
wrapProgram $out/bin/rofi-bluetooth \
|
|
--prefix PATH ":" ${lib.makeBinPath [ rofi-unwrapped bluez ] }
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Rofi-based interface to connect to bluetooth devices and display status info";
|
|
homepage = "https://github.com/nickclyde/rofi-bluetooth";
|
|
license = licenses.gpl3Only;
|
|
maintainers = with maintainers; [ MoritzBoehme ];
|
|
platforms = platforms.linux;
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options.my.programs.rofi = {
|
|
enable = mkOption {
|
|
default = false;
|
|
type = types.bool;
|
|
example = true;
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
environment.systemPackages = with pkgs; [
|
|
(lib.mkIf config.networking.networkmanager.enable networkmanager_dmenu)
|
|
(lib.mkIf config.hardware.bluetooth.enable rofi-bluetooth)
|
|
rofi-power-menu
|
|
];
|
|
home-manager.users.moritz = {
|
|
programs.rofi = {
|
|
enable = true;
|
|
package =
|
|
pkgs.rofi.override { plugins = with pkgs; [ rofi-calc rofi-emoji ]; };
|
|
extraConfig = { combi-modi = "drun,window,emoji"; };
|
|
};
|
|
xdg = {
|
|
enable = true;
|
|
configFile."networkmanager-dmenu/config.ini".text = ''
|
|
[dmenu]
|
|
dmenu_command = rofi
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|