dotfiles/nixos/xmonad.nix

185 lines
4.6 KiB
Nix

{ config, pkgs, options, inputs, forEachUser, makeEnable, ... }:
makeEnable config "modules.xmonad" true {
nixpkgs.overlays = with inputs; [
xmonad.overlay
xmonad-contrib.overlay
notifications-tray-icon.overlay
(import ../dotfiles/config/xmonad/overlay.nix)
] ++ taffybar.overlays;
services.xserver = {
windowManager = {
session = [
{
name = "xmonad";
start = ''
/usr/bin/env imalison-xmonad &
waitPID=$!
'';
}
];
};
};
environment.systemPackages = with pkgs; [
# Haskell Desktop
haskellPackages.xmonad
haskellPackages.imalison-xmonad
haskellPackages.notifications-tray-icon
haskellPackages.gtk-sni-tray
haskellPackages.status-notifier-item
haskellPackages.dbus-hslogger
inputs.imalison-taffybar.defaultPackage."${pkgs.system}"
];
home-manager.users = forEachUser {
services.blueman-applet = {
enable = true;
};
services.taffybar = {
enable = true;
package = inputs.imalison-taffybar.defaultPackage."${pkgs.system}";
};
services.notify-osd = {
enable = true;
package = pkgs.notify-osd-customizable;
};
services.kdeconnect = {
enable = true;
indicator = true;
};
services.network-manager-applet.enable = true;
services.udiskie = {
enable = true;
tray = "always";
};
services.status-notifier-watcher.enable = true;
services.autorandr.enable = true;
services.random-background = {
enable = true;
display = "fill";
interval = "1h";
imageDirectory = "%h/Pictures/wallpaper/use";
};
services.xsettingsd.enable = true;
services.volnoti.enable = true;
services.pasystray.enable = true;
services.parcellite = {
enable = true;
package = pkgs.clipit;
};
services.picom = {
enable = true;
vSync = false;
backend = "glx";
extraArgs = ["--experimental-backends"];
settings = {
animations = true;
animation-window-mass = 1;
animation-dampening = 20;
animation-stiffness = 250;
animation-clamping = false;
animation-for-open-window = "zoom";
animation-for-unmap-window = "zoom";
animation-for-transient-window = "slide-down";
fade-in-step = 0.028;
fade-out-step = 0.028;
fading = true;
};
wintypes = {
dock = {animation = "slide-down";};
toolbar = {animation = "slide-down";};
};
settings = {
inactive-dim = 0.2;
focus-exclude = ["class_g ?= 'rofi'" "class_g ?= 'Steam'"];
rounded-corners-exclude = [
"! name~=''" # Qtile == empty wm_class..
"window_type = 'dock'"
"window_type = 'desktop'"
];
corner-radius = 10;
round-borders = 0;
round-borders-exclude = [
"! name~=''" # Qtile == empty wm_class..
];
blur = {
method = "dual_kawase";
strength = 10.0;
background = true;
background-frame = false;
background-fixed = false;
};
blur-background-exclude = ["window_type != 'dock'"];
daemon = false;
dbus = false;
mark-wmwin-focused = false;
mark-ovredir-focused = false;
detect-rounded-corners = true;
detect-client-opacity = true;
unredir-if-possible = false;
unredir-if-possible-exclude = [];
detect-transient = true;
detect-client-leader = true;
invert-color-include = [];
glx-no-stencil = true;
use-damage = false;
transparent-clipping = false;
};
};
systemd.user.services.notifications-tray-icon = {
Unit = {
Description = "Notifications tray icon";
After = [ "graphical-session-pre.target" "tray.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = {
ExecStart = "${pkgs.haskellPackages.notifications-tray-icon}/bin/notifications-tray-icon --github-token-pass dfinity-github-api-token";
Restart = "always";
RestartSec = 3;
};
};
systemd.user.services.shutter = {
Unit = {
Description = "Shutter";
After = [ "graphical-session-pre.target" "tray.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = {
ExecStart = "${pkgs.shutter}/bin/shutter --min_at_startup";
Restart = "always";
RestartSec = 3;
};
};
};
}