2026-05-02 09:53:27 +02:00
|
|
|
# hosts/m3-kratos/home.nix — Host-specific home-manager overrides.
|
2026-05-02 10:41:12 +02:00
|
|
|
# AMD desktop: dual 2560x1440@144 via DisplayPort.
|
|
|
|
|
# Everything else (shell, editors, gaming, media, theme, etc.) comes from
|
|
|
|
|
# m3ta-home via the profile mapping in hosts/common/users/m3tam3re.nix.
|
|
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
...
|
|
|
|
|
}:
|
2026-05-02 09:53:27 +02:00
|
|
|
with lib; {
|
2026-05-02 10:41:12 +02:00
|
|
|
config = mkMerge [
|
|
|
|
|
# ── XDG / MIME defaults ──
|
|
|
|
|
{
|
|
|
|
|
xdg = {
|
|
|
|
|
enable = true;
|
|
|
|
|
configFile."mimeapps.list".force = true;
|
|
|
|
|
mimeApps = {
|
|
|
|
|
enable = true;
|
|
|
|
|
associations.added = {
|
|
|
|
|
"application/zip" = ["org.gnome.FileRoller.desktop"];
|
|
|
|
|
"application/csv" = ["calc.desktop"];
|
|
|
|
|
"application/pdf" = ["vivaldi-stable.desktop"];
|
|
|
|
|
"x-scheme-handler/http" = ["vivaldi-stable.desktop"];
|
|
|
|
|
"x-scheme-handler/https" = ["vivaldi-stable.desktop"];
|
|
|
|
|
};
|
|
|
|
|
defaultApplications = {
|
|
|
|
|
"application/zip" = ["org.gnome.FileRoller.desktop"];
|
|
|
|
|
"application/csv" = ["calc.desktop"];
|
|
|
|
|
"application/pdf" = ["vivaldi-stable.desktop"];
|
|
|
|
|
"application/md" = ["dev.zed.Zed.desktop"];
|
|
|
|
|
"application/text" = ["dev.zed.Zed.desktop"];
|
|
|
|
|
"x-scheme-handler/http" = ["vivaldi-stable.desktop"];
|
|
|
|
|
"x-scheme-handler/https" = ["vivaldi-stable.desktop"];
|
|
|
|
|
};
|
|
|
|
|
};
|
2026-05-02 09:53:27 +02:00
|
|
|
};
|
2026-05-02 10:41:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# ── Hyprland monitor layout ──
|
2026-05-18 18:47:22 +02:00
|
|
|
(mkIf config.wayland.windowManager.hyprland.enable {
|
2026-05-02 10:41:12 +02:00
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
|
enable = true;
|
2026-05-18 18:47:22 +02:00
|
|
|
configType = "lua";
|
|
|
|
|
|
2026-05-02 10:41:12 +02:00
|
|
|
settings = {
|
2026-05-18 19:00:26 +02:00
|
|
|
# Monitor configuration — use Lua table syntax hl.monitor({...})
|
|
|
|
|
# Each list entry generates one hl.monitor(...) call.
|
2026-05-02 10:41:12 +02:00
|
|
|
monitor = [
|
2026-05-18 19:00:26 +02:00
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
{
|
|
|
|
|
output = "DP-1";
|
|
|
|
|
mode = "2560x1440@144";
|
|
|
|
|
position = "0x0";
|
|
|
|
|
scale = 1;
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
{
|
|
|
|
|
output = "DP-2";
|
|
|
|
|
mode = "2560x1440@144";
|
|
|
|
|
position = "2560x0";
|
|
|
|
|
scale = 1;
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|
2026-05-02 10:41:12 +02:00
|
|
|
];
|
2026-05-18 18:47:22 +02:00
|
|
|
|
2026-05-18 19:00:26 +02:00
|
|
|
# Simple workspace→monitor bindings (legacy string format OK for hl.workspace)
|
2026-05-02 10:41:12 +02:00
|
|
|
workspace = [
|
|
|
|
|
"1, monitor:DP-1, default:true"
|
|
|
|
|
"2, monitor:DP-1"
|
|
|
|
|
"3, monitor:DP-1"
|
|
|
|
|
"4, monitor:DP-2"
|
|
|
|
|
"5, monitor:DP-2"
|
|
|
|
|
"6, monitor:DP-2"
|
|
|
|
|
"7, monitor:DP-2"
|
|
|
|
|
];
|
2026-05-18 18:47:22 +02:00
|
|
|
|
2026-05-18 19:00:26 +02:00
|
|
|
# Window rules — match + effect fields as Lua table
|
|
|
|
|
# Per Hyprland Lua docs: match fields (class, title, etc.) and
|
|
|
|
|
# effect fields (workspace, fullscreen, opacity, etc.) together
|
|
|
|
|
# in one table passed to hl.window_rule({...}).
|
2026-05-18 18:47:22 +02:00
|
|
|
window_rule = [
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "dev.zed.Zed" })'')
|
2026-05-18 19:00:26 +02:00
|
|
|
{workspace = "1";}
|
2026-05-18 18:47:22 +02:00
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "Msty" })'')
|
2026-05-18 19:00:26 +02:00
|
|
|
{workspace = "1";}
|
2026-05-18 18:47:22 +02:00
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "com\\.obsproject\\.Studio" })'')
|
2026-05-18 19:00:26 +02:00
|
|
|
{workspace = "2";}
|
2026-05-18 18:47:22 +02:00
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "brave-browser" })'')
|
|
|
|
|
{
|
2026-05-18 19:00:26 +02:00
|
|
|
workspace = "4";
|
|
|
|
|
opacity = "1.0";
|
2026-05-18 18:47:22 +02:00
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "vivaldi-stable" })'')
|
|
|
|
|
{
|
2026-05-18 19:00:26 +02:00
|
|
|
workspace = "4";
|
|
|
|
|
opacity = "1.0";
|
2026-05-18 18:47:22 +02:00
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
_args = [
|
|
|
|
|
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'')
|
|
|
|
|
{idle_inhibit = "focus";}
|
|
|
|
|
];
|
|
|
|
|
}
|
2026-05-02 10:41:12 +02:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
})
|
|
|
|
|
];
|
2026-05-02 09:53:27 +02:00
|
|
|
}
|