spectre_nixcfg/sway/sway.nix
2025-09-07 20:28:12 -04:00

100 lines
2.2 KiB
Nix

{ lib, pkgs, config, ... }:
let
mod = "Mod4";
chvol = pkgs.writeShellScript "chvol"
(builtins.readFile ./chvol.sh);
chbright = pkgs.writeShellScript "chbrights"
(builtins.readFile ./chbright.sh);
in {
home.packages = with pkgs;
[ grim slurp wl-clipboard brightnessctl ];
wayland.windowManager.sway = {
enable = true;
config = {
modifier = mod;
terminal = "alacritty";
# Waybar
bars = [{
command = "${pkgs.lib.getExe config.programs.waybar.package}";
position = "top";
fonts = config.wayland.windowManager.sway.config.fonts;
}];
menu = "${pkgs.lib.getExe config.programs.rofi.package} -modes \"drun,run\" -show-icons -show drun";
keybindings = let
screenshotPath ="pictures/Screenshots/screenshot`date +%Y%m%d%H%M%S`.png";
in lib.mkOptionDefault ({
# volume
XF86AudioRaiseVolume = "exec bash ${chvol} sink 5";
XF86AudioLowerVolume = "exec bash ${chvol} sink -5";
XF86AudioMute = "exec bash ${chvol} sink mute";
XF86AudioMicMute = "exec bash ${chvol} source mute";
# brightness
XF86MonBrightnessUp = "exec bash ${chbright} 1";
XF86MonBrightnessDown = "exec bash ${chbright} -1";
# media
XF86AudioPlay = "exec playerctl play-pause";
XF86AudioPrev = "exec playerctl previous";
XF86AudioNext = "exec playerctl next";
# Lock
"${mod}+Shift+l" = "exec swaylock -f";
# Screenshots
"${mod}+Shift+s" = "exec grim -g \"`slurp`\" - | wl-copy && wl-paste > ${screenshotPath}";
});
};
# GODOT IS A PAIN
# extraConfig = "for_window [app_id=\"godot\"] border none";
};
# Waybar
programs.waybar = {
enable = true;
};
# App menu
programs.rofi = {
enable = true;
};
# Lock screen
programs.swaylock = {
enable = true;
settings = {
font-size = 14;
};
};
# Autolock
services.swayidle = {
enable = true;
events = [{
event = "before-sleep";
command = "${pkgs.lib.getExe pkgs.swaylock} -f";
}];
};
qt = {
enable = true;
# style = {};
};
gtk = {
enable = true;
# theme = {};
};
}