2 Commits
Author SHA1 Message Date
m3ta-chiron ef421306dd chore: flake update 2026-08-01 11:06:19 +02:00
m3ta-chiron 58fecf72df feat: migrate host Hyprland overrides to Lua 2026-08-01 10:53:09 +02:00
3 changed files with 200 additions and 72 deletions
Generated
+22 -22
View File
@@ -534,11 +534,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785306346, "lastModified": 1785531816,
"narHash": "sha256-DScBkW0fOgpGPK2trNoX3ryLTlaC14+gglFo/BhGJ4g=", "narHash": "sha256-vkMnV0JIyw+g/NmcfoajlGaAO+9a0ezia+FZohQJrik=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e705714e918c3b11affcdd15db2cbe3a070420a0", "rev": "bf9ce9fec78f95f374e8dd3b503863a3ec128ebe",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -621,11 +621,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1785380302, "lastModified": 1785566656,
"narHash": "sha256-U7x7jYEBE3kFpmZI3CGP7fLC/uz/KxS3uTtg36AoEok=", "narHash": "sha256-mwIyMLuxUzYDYLk09QL0uKtkNvjQJ0LKOWErMeqNSz4=",
"owner": "numtide", "owner": "numtide",
"repo": "llm-agents.nix", "repo": "llm-agents.nix",
"rev": "e23b9c324dd5a79189d97e5603067517ac629c0d", "rev": "e222bd1e402f711646012624665af754d00bfa62",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -651,11 +651,11 @@
"nur": "nur" "nur": "nur"
}, },
"locked": { "locked": {
"lastModified": 1785414133, "lastModified": 1785574389,
"narHash": "sha256-dsHTEE3un56y9i9hXD54pZ5e8qzAUmySbXYQOj8VSQg=", "narHash": "sha256-APU8O7r0pc741pMoy8a0/TWiAZOKw4LFR6JU5MLLPc4=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "4dec87ebc786b387c930c64115bd3790d46545d1", "rev": "79264914662e8d7823c2fc8537038b77b3c6b9ab",
"revCount": 101, "revCount": 103,
"type": "git", "type": "git",
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home" "url": "ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home"
}, },
@@ -865,11 +865,11 @@
}, },
"nixpkgs-master_3": { "nixpkgs-master_3": {
"locked": { "locked": {
"lastModified": 1785392119, "lastModified": 1785574108,
"narHash": "sha256-ZsCNayQNeYU9Ej3+5eWEQPVPuO/tqzhJZplhFvUqqG8=", "narHash": "sha256-42rCJTtjakPutQcyJ8ru33XiWOY5lwoGAYb/eGlo1ug=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "38225e394d6332f77ba809996c81f5e31d59ee24", "rev": "c5d13b19fd9ad379d7adec5820903448e4ea9443",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -913,11 +913,11 @@
}, },
"nixpkgs_11": { "nixpkgs_11": {
"locked": { "locked": {
"lastModified": 1785301185, "lastModified": 1785483748,
"narHash": "sha256-eoS3KQTO0aPWXZvIaRbRAzSSHW3l5wdMFXtT1ISfoKA=", "narHash": "sha256-M4HXpLsR7iFTNQfD/q+zK8/QeRYztYVDVIdIgCVGGZ0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9bc02893134c733dd85de46ee4fb2fac696b5529", "rev": "59ea0b1c043c463e39fcb3cfb9a5c8bcf0777c72",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -961,11 +961,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1785301185, "lastModified": 1785452004,
"narHash": "sha256-eoS3KQTO0aPWXZvIaRbRAzSSHW3l5wdMFXtT1ISfoKA=", "narHash": "sha256-k94ksv7XmaLeK5sE1ST/TTdu2aDEO9sfbcgEaNJPTXA=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9bc02893134c733dd85de46ee4fb2fac696b5529", "rev": "a5e9f2fd9ef6011c6886d6935f3ef678c81385fa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1141,11 +1141,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785391787, "lastModified": 1785574468,
"narHash": "sha256-h+eDCc7/ipd399jvupDPSFBIl7958CJ5n9XfvpW41IE=", "narHash": "sha256-vCcf9ERdAwolKzV77eTc/FoClawvNElD3u25I7YErT8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "baf5d9e909898e47688c43cec760b8dbcc9f1fa5", "rev": "cd37a144ec121ea1f68bb4291944cc9fa9ec08d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
+92 -20
View File
@@ -7,7 +7,20 @@
lib, lib,
... ...
}: }:
with lib; { with lib; let
lua = lib.generators.mkLuaInline;
startupCommand = command: {
_args = [
"hyprland.start"
(lua ''
function()
hl.exec_cmd(${builtins.toJSON command})
end
'')
];
};
in {
config = mkMerge [ config = mkMerge [
# ── XDG / MIME defaults ── # ── XDG / MIME defaults ──
{ {
@@ -41,28 +54,87 @@ with lib; {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
settings = { settings = {
exec-once = ["tuxedo-backlight"]; on = [
(startupCommand "tuxedo-backlight")
];
monitor = [ monitor = [
"eDP-1,preferred,0x0,1.25" {
"HDMI-A-1,1920x1080@120,2560x0,1" output = "eDP-1";
mode = "preferred";
position = "0x0";
scale = 1.25;
}
{
output = "HDMI-A-1";
mode = "1920x1080@120";
position = "2560x0";
scale = 1;
}
]; ];
workspace = [ workspace_rule = [
"1, monitor:eDP-1, default:true" {
"2, monitor:eDP-1" workspace = "1";
"3, monitor:eDP-1" monitor = "eDP-1";
"4, monitor:HDMI-A-1" default = true;
"5, monitor:HDMI-A-1,border:false,rounding:false" }
"6, monitor:HDMI-A-1" {
workspace = "2";
monitor = "eDP-1";
}
{
workspace = "3";
monitor = "eDP-1";
}
{
workspace = "4";
monitor = "HDMI-A-1";
}
{
workspace = "5";
monitor = "HDMI-A-1";
no_border = true;
no_rounding = true;
}
{
workspace = "6";
monitor = "HDMI-A-1";
}
]; ];
windowrule = [ window_rule = [
"match:class dev.zed.Zed, workspace 1" {
"match:class Msty, workspace 1" match.class = "dev.zed.Zed";
"match:class ^(com.obsproject.Studio)$, workspace 2" workspace = "1";
"match:class ^(brave-browser)$, workspace 4, opacity 1.0" }
"match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" {
"match:class ^steam_app_\\d+$, fullscreen on" match.class = "Msty";
"match:class ^steam_app_\\d+$, workspace 5" workspace = "1";
"match:class ^steam_app_\\d+$, idle_inhibit focus" }
{
match.class = "^(com.obsproject.Studio)$";
workspace = "2";
}
{
match.class = "^(brave-browser)$";
workspace = "4";
opacity = "1.0";
}
{
match.class = "^(vivaldi-stable)$";
workspace = "4";
opacity = "1.0";
}
{
match.class = "^steam_app_\\d+$";
fullscreen = true;
}
{
match.class = "^steam_app_\\d+$";
workspace = "5";
}
{
match.class = "^steam_app_\\d+$";
idle_inhibit = "focus";
}
]; ];
}; };
}; };
+86 -30
View File
@@ -7,7 +7,14 @@
lib, lib,
... ...
}: }:
with lib; { with lib; let
mkEnvVar = name: value: {
_args = [
name
value
];
};
in {
imports = [ imports = [
]; ];
@@ -47,40 +54,89 @@ with lib; {
enable = true; enable = true;
settings = { settings = {
monitor = [ monitor = [
"DP-1,2560x1440@144,0x0,1" {
"DP-2,2560x1440@144,2560x0,1" output = "DP-1";
mode = "2560x1440@144";
position = "0x0";
scale = 1;
}
{
output = "DP-2";
mode = "2560x1440@144";
position = "2560x0";
scale = 1;
}
]; ];
workspace = [ workspace_rule = [
"1, monitor:DP-1, default:true" {
"2, monitor:DP-1" workspace = "1";
"3, monitor:DP-1" monitor = "DP-1";
"4, monitor:DP-2" default = true;
"5, monitor:DP-2" }
"6, monitor:DP-2" {
"7, monitor:DP-2" workspace = "2";
monitor = "DP-1";
}
{
workspace = "3";
monitor = "DP-1";
}
{
workspace = "4";
monitor = "DP-2";
}
{
workspace = "5";
monitor = "DP-2";
}
{
workspace = "6";
monitor = "DP-2";
}
{
workspace = "7";
monitor = "DP-2";
}
]; ];
# m3ta-home sets QT_QPA_PLATFORMTHEME=gtk3 globally for Hyprland. # m3ta-home sets QT_QPA_PLATFORMTHEME to gtk3 globally for Hyprland.
# ksnip crashes with duplicate GDK type registration under that Qt GTK # ksnip crashes with duplicate GDK type registration under that Qt GTK
# platform theme, so use qtct for Qt apps on this host instead. # platform theme, so use qtct for Qt apps on this host instead.
env = mkForce [ "env" = mkForce [
"XCURSOR_SIZE,32" (mkEnvVar "XCURSOR_SIZE" "32")
"HYPRCURSOR_THEME,Bibata-Modern-Ice" (mkEnvVar "HYPRCURSOR_THEME" "Bibata-Modern-Ice")
"WLR_NO_HARDWARE_CURSORS,1" (mkEnvVar "WLR_NO_HARDWARE_CURSORS" "1")
"XDG_CURRENT_DESKTOP,Hyprland" (mkEnvVar "XDG_CURRENT_DESKTOP" "Hyprland")
"XDG_SESSION_TYPE,wayland" (mkEnvVar "XDG_SESSION_TYPE" "wayland")
"XDG_SESSION_DESKTOP,Hyprland" (mkEnvVar "XDG_SESSION_DESKTOP" "Hyprland")
"XKB_DEFAULT_LAYOUT,de" (mkEnvVar "XKB_DEFAULT_LAYOUT" "de")
"NIXOS_OZONE_WL,1" (mkEnvVar "NIXOS_OZONE_WL" "1")
"QT_QPA_PLATFORM,wayland;xcb" (mkEnvVar "QT_QPA_PLATFORM" "wayland;xcb")
"QT_QPA_PLATFORMTHEME,qt5ct" (mkEnvVar "QT_QPA_PLATFORMTHEME" "qt5ct")
"QT_QPA_PLATFORMTHEME_QT6,qt6ct" (mkEnvVar "QT_QPA_PLATFORMTHEME_QT6" "qt6ct")
]; ];
windowrule = [ window_rule = [
"match:class dev.zed.Zed, workspace 1" {
"match:class ^(com.obsproject.Studio)$, workspace 2" match.class = "dev.zed.Zed";
"match:class ^(brave-browser)$, workspace 4, opacity 1.0" workspace = "1";
"match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" }
"match:class ^steam_app_\\d+$, idle_inhibit focus" {
match.class = "^(com.obsproject.Studio)$";
workspace = "2";
}
{
match.class = "^(brave-browser)$";
workspace = "4";
opacity = "1.0";
}
{
match.class = "^(vivaldi-stable)$";
workspace = "4";
opacity = "1.0";
}
{
match.class = "^steam_app_\\d+$";
idle_inhibit = "focus";
}
]; ];
}; };
}; };