2026-02-05 12:00:46 -08:00
|
|
|
{ config, pkgs, makeEnable, inputs, ... }:
|
2026-02-17 17:38:17 -08:00
|
|
|
let
|
|
|
|
|
system = pkgs.stdenv.hostPlatform.system;
|
|
|
|
|
hyprexpoPatched = inputs.hyprland-plugins.packages.${system}.hyprexpo.overrideAttrs (old: {
|
|
|
|
|
patches = (old.patches or [ ]) ++ [
|
|
|
|
|
./patches/hyprexpo-pr-612-workspace-numbers.patch
|
|
|
|
|
./patches/hyprexpo-pr-616-bring-mode.patch
|
|
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
in
|
2026-01-20 13:21:00 -05:00
|
|
|
makeEnable config "myModules.hyprland" true {
|
2026-02-10 20:17:46 -08:00
|
|
|
myModules.taffybar.enable = true;
|
|
|
|
|
|
2026-03-03 11:51:37 -08:00
|
|
|
# Needed for hyprlock authentication without PAM fallback warnings.
|
|
|
|
|
security.pam.services.hyprlock = {};
|
|
|
|
|
|
2026-01-20 13:21:00 -05:00
|
|
|
programs.hyprland = {
|
|
|
|
|
enable = true;
|
2026-01-20 13:34:45 -05:00
|
|
|
# Use Hyprland from the flake for proper plugin compatibility
|
2026-01-31 00:15:33 -08:00
|
|
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
2026-02-04 12:13:15 -08:00
|
|
|
# Let UWSM manage the Hyprland session targets
|
|
|
|
|
withUWSM = true;
|
2026-01-20 13:21:00 -05:00
|
|
|
};
|
|
|
|
|
|
feat: add hyprscratch scratchpad management with rule reapply fork
- Add hyprscratch from colonelpanic8/reapply-rules-on-toggle fork that
reapplies size/position/float rules on every toggle (not just spawn)
- Configure 9 scratchpads: htop, volume, spotify, element, slack,
transmission, dropdown, gmail, messages
- Use clean mode (hide on workspace change) and auto-dismiss (only
dropdown persists)
- Fix pavucontrol class (org.pulseaudio.pavucontrol) and dropdown
position (offset by taffybar height)
- Add kanshi-sni, dbus-menu, dbus-hslogger flake inputs and follows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 22:25:58 -08:00
|
|
|
home-manager.sharedModules = [
|
|
|
|
|
inputs.hyprscratch.homeModules.default
|
|
|
|
|
{
|
|
|
|
|
services.kanshi = {
|
|
|
|
|
enable = true;
|
2026-04-10 13:58:45 -07:00
|
|
|
systemdTarget = "graphical-session.target";
|
|
|
|
|
settings = [
|
|
|
|
|
{
|
2026-04-15 11:01:16 -07:00
|
|
|
# USB-C connector names can move between DP-* ports across docks/reboots.
|
|
|
|
|
profile.name = "ultrawide-usbc-desk";
|
2026-04-10 13:58:45 -07:00
|
|
|
profile.outputs = [
|
|
|
|
|
{
|
2026-04-15 11:01:16 -07:00
|
|
|
criteria = "eDP-1";
|
2026-04-10 13:58:45 -07:00
|
|
|
status = "enable";
|
2026-04-15 11:01:16 -07:00
|
|
|
mode = "2560x1600@240Hz";
|
2026-04-10 13:58:45 -07:00
|
|
|
position = "0,0";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
}
|
2026-04-15 11:01:16 -07:00
|
|
|
{
|
|
|
|
|
criteria = "Microstep MPG341CX OLED Unknown";
|
|
|
|
|
status = "enable";
|
|
|
|
|
mode = "3440x1440@240Hz";
|
|
|
|
|
position = "2560,0";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
}
|
2026-04-10 13:58:45 -07:00
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
];
|
feat: add hyprscratch scratchpad management with rule reapply fork
- Add hyprscratch from colonelpanic8/reapply-rules-on-toggle fork that
reapplies size/position/float rules on every toggle (not just spawn)
- Configure 9 scratchpads: htop, volume, spotify, element, slack,
transmission, dropdown, gmail, messages
- Use clean mode (hide on workspace change) and auto-dismiss (only
dropdown persists)
- Fix pavucontrol class (org.pulseaudio.pavucontrol) and dropdown
position (offset by taffybar height)
- Add kanshi-sni, dbus-menu, dbus-hslogger flake inputs and follows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 22:25:58 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
programs.hyprscratch = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
daemon_options = "clean";
|
|
|
|
|
global_options = "";
|
|
|
|
|
global_rules = "float;size monitor_w*0.95 monitor_h*0.95;center";
|
|
|
|
|
|
|
|
|
|
htop = {
|
|
|
|
|
command = "alacritty --class htop-scratch --title htop -e htop";
|
|
|
|
|
class = "htop-scratch";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
volume = {
|
|
|
|
|
command = "pavucontrol";
|
|
|
|
|
class = "org.pulseaudio.pavucontrol";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
spotify = {
|
|
|
|
|
command = "spotify";
|
|
|
|
|
class = "spotify";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
element = {
|
|
|
|
|
command = "element-desktop";
|
|
|
|
|
class = "Element";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
slack = {
|
|
|
|
|
command = "slack";
|
|
|
|
|
class = "Slack";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
transmission = {
|
|
|
|
|
command = "transmission-gtk";
|
|
|
|
|
class = "transmission-gtk";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
dropdown = {
|
|
|
|
|
command = "ghostty --config-file=/home/imalison/.config/ghostty/dropdown";
|
|
|
|
|
class = "com.mitchellh.ghostty.dropdown";
|
|
|
|
|
options = "persist";
|
|
|
|
|
rules = "float;size monitor_w monitor_h*0.5;move 0 60;noborder;noshadow;animation slide";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
gmail = {
|
|
|
|
|
command = "google-chrome-stable --new-window https://mail.google.com/mail/u/0/#inbox";
|
|
|
|
|
class = "google-chrome";
|
|
|
|
|
title = "Gmail";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
messages = {
|
|
|
|
|
command = "google-chrome-stable --new-window https://messages.google.com/web/conversations";
|
|
|
|
|
class = "google-chrome";
|
|
|
|
|
title = "Messages";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
|
2026-01-20 13:21:00 -05:00
|
|
|
# Hyprland-specific packages
|
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
|
# Hyprland utilities
|
|
|
|
|
hyprpaper # Wallpaper
|
|
|
|
|
hypridle # Idle daemon
|
|
|
|
|
hyprlock # Screen locker
|
|
|
|
|
hyprcursor # Cursor themes
|
|
|
|
|
wl-clipboard # Clipboard for Wayland
|
2026-02-04 12:13:15 -08:00
|
|
|
wtype # Wayland input typing
|
2026-01-20 13:21:00 -05:00
|
|
|
cliphist # Clipboard history
|
|
|
|
|
grim # Screenshot utility
|
|
|
|
|
slurp # Region selection
|
|
|
|
|
swappy # Screenshot annotation
|
2026-02-09 13:49:03 -08:00
|
|
|
nwg-displays # GUI monitor arrangement
|
2026-04-15 10:32:48 -07:00
|
|
|
mpv # Graphical screensaver payload
|
2026-01-20 13:21:00 -05:00
|
|
|
|
2026-01-20 13:34:45 -05:00
|
|
|
# hy3 plugin from flake (properly built against matching Hyprland)
|
2026-01-31 00:15:33 -08:00
|
|
|
inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3
|
2026-01-20 13:34:45 -05:00
|
|
|
|
2026-02-03 23:32:47 -08:00
|
|
|
# Hyprexpo plugin from hyprland-plugins (workspace overview)
|
2026-02-17 17:38:17 -08:00
|
|
|
hyprexpoPatched
|
2026-02-03 22:01:14 -08:00
|
|
|
|
2026-01-20 13:34:45 -05:00
|
|
|
# For scripts
|
|
|
|
|
jq
|
2026-01-20 13:21:00 -05:00
|
|
|
];
|
|
|
|
|
}
|