From 906b72b3c05c3a2046c1e47170f921c071260c62 Mon Sep 17 00:00:00 2001 From: cnst Date: Wed, 23 Jul 2025 17:32:19 +0200 Subject: [PATCH] hyprland workspace rules and flock update --- flake.lock | 96 +++++------ hosts/kima/modules.nix | 1 + modules/nixos/programs/hyprland/layout.nix | 180 +++++++++++---------- 3 files changed, 147 insertions(+), 130 deletions(-) diff --git a/flake.lock b/flake.lock index 8625c84c..6dc376fb 100644 --- a/flake.lock +++ b/flake.lock @@ -124,11 +124,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1753035671, - "narHash": "sha256-F1EAebqC+De5rog6rK/jVTetEGrCKHR7q8wQHx3VqAM=", + "lastModified": 1753146705, + "narHash": "sha256-WzmXODUzg8jeEsAhpmp55zk5I2fmv3kv+RofZ/+FYlg=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "57509273a21933c184eb1985efc06381879c09f1", + "rev": "02b3c2a45f6ddbd704f797c5730bc2d161f10ce0", "type": "github" }, "original": { @@ -183,11 +183,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1753080170, - "narHash": "sha256-VyfFYce2UviccSmYZM7C4SkmWdbhnO9eeQZ9yQmjHRk=", + "lastModified": 1753252982, + "narHash": "sha256-brrpvP+4GRXLHjvnDr1j1/yA4117hzs6t9IT60JuSI8=", "owner": "nix-community", "repo": "fenix", - "rev": "7c1a950d094671efefb007a8ab03859e2ce6c38e", + "rev": "8546562a84feb5370ce57493277b6f2c3cbdc432", "type": "github" }, "original": { @@ -272,11 +272,11 @@ ] }, "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "lastModified": 1753121425, + "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "type": "github" }, "original": { @@ -314,11 +314,11 @@ ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1753121425, + "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "type": "github" }, "original": { @@ -445,11 +445,11 @@ }, "hardware": { "locked": { - "lastModified": 1752666637, - "narHash": "sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw=", + "lastModified": 1753122741, + "narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153", + "rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22", "type": "github" }, "original": { @@ -464,11 +464,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1752964427, - "narHash": "sha256-57CXYsG+2SDJ65j4F525oS4DAT2id/KXCH9Op/xlloA=", + "lastModified": 1753121406, + "narHash": "sha256-i2LRxGzDjcRzxnna69G/WZWLoX7M0Us9xueLdcHdhY0=", "owner": "helix-editor", "repo": "helix", - "rev": "22b184b570fea73090a20702e01b9ac80d6eb31c", + "rev": "b01fbb4a22f24602006b05117597e54bd54c61de", "type": "github" }, "original": { @@ -484,11 +484,11 @@ ] }, "locked": { - "lastModified": 1753056897, - "narHash": "sha256-AVVMBFcuOXqIgmShvRv9TED3fkiZhQ0ZvlhsPoFfkNE=", + "lastModified": 1753282444, + "narHash": "sha256-QGeWgozKiGBTJrLYnXd9xwOY9HKsm4cFHsU8fopGVnU=", "owner": "nix-community", "repo": "home-manager", - "rev": "13a83d1b6545b7f0e8f7689bad62e7a3b1d63771", + "rev": "62975b8e23c4e39599b3303f6e76faa280a02c63", "type": "github" }, "original": { @@ -526,11 +526,11 @@ ] }, "locked": { - "lastModified": 1752783339, - "narHash": "sha256-RXxejsGIWtJ5rJKLAm8Kh159euZHPMi7CtbOoHLsm2c=", + "lastModified": 1753132348, + "narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=", "owner": "nix-community", "repo": "home-manager", - "rev": "7c78e592a895f2f1921f0024848fe193e2f8518e", + "rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732", "type": "github" }, "original": { @@ -677,11 +677,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1753033360, - "narHash": "sha256-OwTaEBF/ZXl5RyVPmsCoomunVJdDzpOSFwfvwtzdNxY=", + "lastModified": 1753265439, + "narHash": "sha256-/qryx+ZBO1g5kdeuPsrfyrmwfAFluaWHUALf18QTf0c=", "owner": "hyprwm", "repo": "hyprland", - "rev": "462729d8655a3a37ba19fe254d8ecb6677963563", + "rev": "2d2a5bebff72c73cd27db3b9e954b8fa2a7623e8", "type": "github" }, "original": { @@ -698,11 +698,11 @@ ] }, "locked": { - "lastModified": 1752857088, - "narHash": "sha256-usBNOT/uzFdsKDe5Ik+C36zqL+BfT7Lp2rqKWrpQuqk=", + "lastModified": 1753252360, + "narHash": "sha256-PFAJoEqQWMlo1J+yZb+4HixmhbRVmmNl58e/AkLYDDI=", "owner": "hyprwm", "repo": "contrib", - "rev": "481175e17e155f19a3b31416530b6edf725e7034", + "rev": "6839b23345b71db17cd408373de4f5605bf589b8", "type": "github" }, "original": { @@ -880,11 +880,11 @@ ] }, "locked": { - "lastModified": 1752997609, - "narHash": "sha256-/5xsXRMLYsKa6cg3198dDD6yrf7XtY+UChTYUlZZtfc=", + "lastModified": 1753200725, + "narHash": "sha256-RO2h4H9KeFo1DUA6/J8WUTbaTRg7XBzkFJorwVdGMU4=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "1553dd78fc309e6d03f926c76c8e854d9d4a7e79", + "rev": "d993bdc1056735a084960f4ee8f946a1167f0e13", "type": "github" }, "original": { @@ -1144,11 +1144,11 @@ ] }, "locked": { - "lastModified": 1752977425, - "narHash": "sha256-Ae7I3Q5Odds6hvWY0+ZCnlvngq7MVWJD4TV/NUGyiZw=", + "lastModified": 1753259579, + "narHash": "sha256-la/nOVejczda0kbOyGFxlvIqQqd5gL+0J21CQF7GDCc=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "b8fad5f070ed53a72dbcc6c60bce04be943887fe", + "rev": "173967ec613de095c73a077f9f9d3099746499e8", "type": "github" }, "original": { @@ -1198,11 +1198,11 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1750215678, - "narHash": "sha256-Rc/ytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M+ok=", + "lastModified": 1752997324, + "narHash": "sha256-vtTM4oDke3SeDj+1ey6DjmzXdq8ZZSCLWSaApADDvIE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5395fb3ab3f97b9b7abca147249fa2e8ed27b192", + "rev": "7c688a0875df5a8c28a53fb55ae45e94eae0dddb", "type": "github" }, "original": { @@ -1349,11 +1349,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1753013169, - "narHash": "sha256-ZhhHGYEuBiHgWjAvFcvjiNyWDz2b3WsYoW+xw92LiYs=", + "lastModified": 1753181140, + "narHash": "sha256-daKfPQnipcRnKnXknDzv+fzNKeEY3r/10y8YMVQ10vU=", "owner": "notashelf", "repo": "nvf", - "rev": "da1fed218b2dda294190e004da4d5bec7d43ec34", + "rev": "8fbecab446afe3454ecce6a4b817ec4f123a4a34", "type": "github" }, "original": { @@ -1440,11 +1440,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1753008875, - "narHash": "sha256-KYavlyBR385om3AOEF+ABCjslJF7vi/Eufo2L56Hhfg=", + "lastModified": 1753204114, + "narHash": "sha256-xH8EIod+Hwog4P9OwX9hdtk6Nqr54M0tzMI71yGNOYI=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "58e507d80728f6f32c93117668dc4510ba80bac9", + "rev": "b40fce3ccdc5f94453c6aca4da8b64174a03a5ad", "type": "github" }, "original": { @@ -1462,11 +1462,11 @@ ] }, "locked": { - "lastModified": 1752720268, - "narHash": "sha256-XCiJdtXIN09Iv0i1gs5ajJ9CVHk537Gy1iG/4nIdpVI=", + "lastModified": 1753066249, + "narHash": "sha256-j2UBrfDRIePGx3532Bbb9UeosNX2F73hfOAHtmACfnM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "dc221f842e9ddc8c0416beae8d77f2ea356b91ae", + "rev": "0751b65633a1785743ca44fd7c14a633c54c1f91", "type": "github" }, "original": { diff --git a/hosts/kima/modules.nix b/hosts/kima/modules.nix index cc457b46..948688da 100644 --- a/hosts/kima/modules.nix +++ b/hosts/kima/modules.nix @@ -35,6 +35,7 @@ 192.168.88.14 radarr.cnst.dev 192.168.88.14 sonarr.cnst.dev 192.168.88.14 prowlarr.cnst.dev + 192.168.88.14 bazarr.cnst.dev 192.168.88.14 qbt.cnst.dev 192.168.88.14 jellyseerr.cnst.dev 192.168.88.14 jellyfin.cnst.dev diff --git a/modules/nixos/programs/hyprland/layout.nix b/modules/nixos/programs/hyprland/layout.nix index bf42a4b0..13a5eef1 100644 --- a/modules/nixos/programs/hyprland/layout.nix +++ b/modules/nixos/programs/hyprland/layout.nix @@ -11,102 +11,118 @@ in { nixos.programs.hyprland.rules.enable = mkEnableOption "Enables window rule settings in Hyprland"; }; - config = mkIf cfg.enable { - programs.hyprland.settings = { - monitor = - map ( - m: let - resolution = - if m.width != null && m.height != null - then "${toString m.width}x${toString m.height}@${toString m.refreshRate}" - else "preferred"; + config = mkIf cfg.enable (mkMerge [ + { + programs.hyprland.settings = { + monitor = + map ( + m: let + resolution = + if m.width != null && m.height != null + then "${toString m.width}x${toString m.height}@${toString m.refreshRate}" + else "preferred"; - position = m.position or "auto"; - scale = m.scale; + position = m.position or "auto"; + scale = m.scale; - transformStr = - if m.transform != 0 - then ",transform,${toString m.transform}" - else ""; + transformStr = + if m.transform != 0 + then ",transform,${toString m.transform}" + else ""; - bitdepthStr = - if m.bitDepth != null - then ",bitdepth,${toString m.bitDepth}" - else ""; - in "${m.name},${ - if m.enabled - then "${resolution},${position},${scale}${transformStr}${bitdepthStr}" - else "disable" - }" - ) - config.settings.monitors; + bitdepthStr = + if m.bitDepth != null + then ",bitdepth,${toString m.bitDepth}" + else ""; + in "${m.name},${ + if m.enabled + then "${resolution},${position},${scale}${transformStr}${bitdepthStr}" + else "disable" + }" + ) + config.settings.monitors; - workspace = map ( - m: "${m.workspace},monitor:${m.name}" - ) (lib.filter (m: m.enabled && m.workspace != null) config.settings.monitors); + workspace = map ( + m: "${m.workspace},monitor:${m.name}" + ) (lib.filter (m: m.enabled && m.workspace != null) config.settings.monitors); - windowrule = [ - "size 843 650, initialTitle:^(floatcal)$" - "move 100%-w-20 40, initialTitle:^(floatcal)$" - "float, initialTitle:^(floatcal)$" + windowrule = [ + "size 843 650, initialTitle:^(floatcal)$" + "move 100%-w-20 40, initialTitle:^(floatcal)$" + "float, initialTitle:^(floatcal)$" - "size 600 300, title:^(tuirun)$" - "center, title:^(tuirun)$" - "noborder, title:^(tuirun)$" - "float, title:^(tuirun)$" + "size 600 300, title:^(tuirun)$" + "center, title:^(tuirun)$" + "noborder, title:^(tuirun)$" + "float, title:^(tuirun)$" - "size 843 530, class:^(org.keepassxc.KeePassXC)$" - "move 100%-w-20 40, class:^(org.keepassxc.KeePassXC)$" - "float, class:^(org.keepassxc.KeePassXC)$" + "size 843 530, class:^(org.keepassxc.KeePassXC)$" + "move 100%-w-20 40, class:^(org.keepassxc.KeePassXC)$" + "float, class:^(org.keepassxc.KeePassXC)$" - "size 50% 70%, class:^(net.nokyan.Resources)$" - "center, class:^(net.nokyan.Resources)$" - "float, class:^(net.nokyan.Resources)$" + "size 50% 70%, class:^(net.nokyan.Resources)$" + "center, class:^(net.nokyan.Resources)$" + "float, class:^(net.nokyan.Resources)$" - "suppressevent maximize, class:.*" + "suppressevent maximize, class:.*" - "center, class:^(nwg-look)$" - "float, class:^(nwg-look)$" + "center, class:^(nwg-look)$" + "float, class:^(nwg-look)$" - "center, class:^(oculante)$" - "float, class:^(oculante)$" + "center, class:^(oculante)$" + "float, class:^(oculante)$" - "move 100%-w-20 40, class:^(pavucontrol)$" - "size 741 585, class:^(pavucontrol)$" - "float, class:^(pavucontrol)$" + "move 100%-w-20 40, class:^(pavucontrol)$" + "size 741 585, class:^(pavucontrol)$" + "float, class:^(pavucontrol)$" - "center, class:^(xarchiver)$" - "float, class:^(xarchiver)$" + "center, class:^(xarchiver)$" + "float, class:^(xarchiver)$" - "float, class:^(org.gnome.FileRoller)$" - "float, class:^(org.freedesktop.impl.portal.desktop.kde)$" - "float, class:^(org.corectrl.CoreCtrl)$" - "float, class:^(feh)$" - "float, class:^(polkit-gnome-authentication-agent-1)$" - "float, class:^(org.gnome.Calculator)$" - "float, class:^(com.github.hluk.copyq)$" - "float, class:^(blueman-manager)$" + "float, class:^(org.gnome.FileRoller)$" + "float, class:^(org.freedesktop.impl.portal.desktop.kde)$" + "float, class:^(org.corectrl.CoreCtrl)$" + "float, class:^(feh)$" + "float, class:^(polkit-gnome-authentication-agent-1)$" + "float, class:^(org.gnome.Calculator)$" + "float, class:^(com.github.hluk.copyq)$" + "float, class:^(blueman-manager)$" - # "workspace 5 silent, class:^(discord)$" - # "workspace 5 silent, class:^(vesktop)$" - "workspace 4 silent, class:^(steam_app_0)$" - "workspace 4 silent, title:^(World of Warcraft)$" + "workspace 5 silent, class:^(discord)$" + "workspace 5 silent, class:^(vesktop)$" + "workspace 4 silent, class:^(steam_app_0)$" + "workspace 4 silent, title:^(World of Warcraft)$" + ]; + layerrule = [ + "animation fade,hyprpicker" + "animation fade,selection" + + "animation fade,waybar" + "ignorezero,waybar" + "ignorealpha 0.0,waybar" + "blur,waybar" + + "blur,notifications" + "ignorezero,notifications" + + "noanim,wallpaper" + "noanim,launcher" + ]; + }; + } + (mkIf (host == "kima") { + programs.hyprland.settings.workspace = [ + "name:1,monitor:DP-3" + "name:2,monitor:DP-3" + "name:3,monitor:DP-3" + "name:4,monitor:DP-3" + "name:5,monitor:HDMI-A-1" + "name:6,monitor:DP-3" + "name:7,monitor:DP-3" + "name:8,monitor:DP-3" + "name:9,monitor:DP-3" + "name:10,monitor:DP-3" ]; - layerrule = [ - "animation fade,hyprpicker" - "animation fade,selection" - - "animation fade,waybar" - "ignorezero,waybar" - "ignorealpha 0.0,waybar" - "blur,waybar" - - "blur,notifications" - "ignorezero,notifications" - - "noanim,wallpaper" - "noanim,launcher" - ]; - }; - }; + }) + ]); }