{ config, lib, ... }: with lib; { imports = [ ../common ./home.nix ../features/cli ../features/coding ../features/desktop ]; config = mkMerge [ { xdg = { # TODO: better structure 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"]; }; }; }; features = { cli = { nushell.enable = true; fzf.enable = true; nitch.enable = true; secrets.enable = true; starship.enable = true; }; desktop = { crypto.enable = true; coding.enable = true; gaming.enable = true; hyprland.enable = true; media.enable = true; office.enable = true; rofi.enable = true; fonts.enable = true; wayland.enable = true; }; }; } (mkIf config.features.desktop.hyprland.enable { wayland.windowManager.hyprland = { enable = true; settings = { monitor = [ "DP-1,2560x1440@144,0x0,1" "DP-2,2560x1440@144,2560x0,1" ]; 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" ]; windowrule = [ "match:class dev.zed.Zed, workspace 1" "match:class Msty, workspace 1" "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" ]; }; }; }) ]; }