{ 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; }; }; }; }