nixos/modules/X11.nix
2023-02-22 19:41:05 -05:00

124 lines
3.4 KiB
Nix

_: {
config,
pkgs,
options,
lib,
...
}:
with lib; let
cfg = config.localModules.X11Programs;
in {
options.localModules.X11Programs = {
picom.enable = mkEnableOption "";
sxhkd.enable = mkEnableOption "";
};
config = mkMerge [
{
services.xserver = {
exportConfiguration = true;
layout = "us";
libinput.enable = true;
xautolock.enable = false;
excludePackages = [pkgs.xterm];
};
}
(
mkIf cfg.picom.enable {
services.picom = {
enable = true;
backend = "glx";
shadow = false;
shadowOpacity = 0.5;
vSync = false;
settings = {
blur = false;
shadow-radius = 12;
frame-opacity = 1.0;
inactive-opacity-override = false;
corner-radius = 12;
rounded-corners-exclude = [
"window_type = 'desktop'"
"window_type = 'tooltip'"
];
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-rounded-corners = true;
detect-client-opacity = true;
detect-transient = true;
use-damage = true;
log-level = "warn";
wintypes = {
tooltip = {
fade = true;
shadow = false;
opacity = 1.0;
focus = true;
full-shadow = false;
};
dock = {shadow = true;};
dnd = {shadow = true;};
popup_menu = {opacity = 1.0;};
dropdown_menu = {opacity = 1.0;};
};
};
};
}
)
(
let
configFile = pkgs.writeText "sxhkdrc" ''
XF86AudioPlay
playerctl play-pause
XF86AudioPause
playerctl play-pause
XF86AudioStop
playerctl stop
XF86AudioNext
playerctl next
XF86AudioPrev
playerctl previous
XF86AudioRaiseVolume
amixer sset Master 40+
XF86AudioLowerVolume
amixer sset Master 40-
XF86AudioMute
amixer sset Master toggle
XF86MonBrightnessUp
brightnessctl s 20+
XF86MonBrightnessDown
brightnessctl s 20-
Print
maim $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
Print + shift
maim | xclip -selection clipboard -t image/png
super + Print
maim -s $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
super + Print + shift
maim -s | xclip -selection clipboard -t image/png
'';
in
mkIf cfg.sxhkd.enable
{
environment.systemPackages = [
pkgs.maim #screenshooter
pkgs.brightnessctl #brightness control for laptop
pkgs.playerctl #music control
pkgs.xclip
pkgs.coreutils
];
systemd.user.services.sxhkd = {
description = "sxhkd hotkey daemon";
wantedBy = ["graphical-session.target"];
partOf = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${pkgs.sxhkd}/bin/sxhkd -c ${configFile}";
RestartSec = 3;
Restart = "always";
};
};
}
)
];
}