nix-v0/src/home/wm/sway.nix

52 lines
1.9 KiB
Nix

{ pkgs, lib, config, ... }:
let
swayosd = lib.getExe' config.services.swayosd.package "swayosd-client";
pactl = lib.getExe' pkgs.pulseaudio "pactl";
grim = lib.getExe' pkgs.grim "grim";
slurp = lib.getExe' pkgs.slurp "slurp";
clipboard-copy = lib.getExe' pkgs.wl-clipboard "wl-copy";
commonOptions = import ./common-i3.nix rec {
inherit config lib pkgs;
menu = lib.getExe' pkgs.bemenu "bemenu-run";
terminal =
if config.programs.kitty.enable then
lib.getExe' config.programs.kitty.package "kitty"
else
lib.getExe' pkgs.foot "foot";
};
in
{
options.custom = with lib; {
wm = {
sway = {
enable = mkEnableOption "Sway WM";
};
};
};
config = lib.mkIf config.custom.wm.sway.enable {
services.swayosd = {
enable = true;
};
wayland.windowManager.sway = {
enable = true;
extraConfig = commonOptions.extraConfig;
config = lib.mkMerge ([
commonOptions.config
{
keybindings = {
"XF86AudioRaiseVolume" = "exec --no-startup-id '${swayosd} --output-volume=raise'";
"XF86AudioLowerVolume" = "exec --no-startup-id '${swayosd} --output-volume=lower'";
"XF86AudioMute" = "exec --no-startup-id '${swayosd} --output-volume=mute-toggle";
"XF86AudioMicMute" = "exec --no-startup-id '${pactl} set-source-mute @DEFAULT_SOURCE@ toggle'";
"${commonOptions.modifier}+o" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" ~/pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png";
"${commonOptions.modifier}+Shift+o" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" -t png - | ${clipboard-copy}";
"PRINT" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" -t png - | ${clipboard-copy}";
};
}
]);
};
stylix.targets.sway.enable = true;
};
}