diff --git a/config/hosts/aspects/doloro-desktop/home.nix b/config/hosts/aspects/doloro-desktop/home.nix index 5106c34..a0a1dbc 100644 --- a/config/hosts/aspects/doloro-desktop/home.nix +++ b/config/hosts/aspects/doloro-desktop/home.nix @@ -78,17 +78,23 @@ ... }: { - xdg.configFile."hypr/hyprland-local.lua" = { - text = '' - exec-once = hyprctl dispatch workspace 2 # shit solution to get quickshell on the right monitor - workspace = name:2, monitor:DP-2 - input { - kb_layout = "gb" - follow_mouse = 2 - sensitivity = -0.5 - } - ''; - }; + xdg.configFile."hypr/hyprland-local.lua" = { + text = '' + -- Host overrides (desktop): pin workspaces to monitors. + -- HDMI-A-1 (left) shows workspace 1, DP-2 (right) shows workspace 2. + hl.workspace_rule({ workspace = "name:1", monitor = "HDMI-A-1" }) + hl.workspace_rule({ workspace = "name:2", monitor = "DP-2" }) + + -- Autostart (workspace placement applies only to these spawned windows) + hl.on("hyprland.start", function() + hl.exec_cmd("steam", { workspace = "6 silent" }) + hl.exec_cmd("telegram-desktop", { workspace = "8 silent" }) + hl.exec_cmd("equibop", { workspace = "8 silent" }) + hl.exec_cmd("spotify", { workspace = "9 silent" }) + hl.exec_cmd("obs", { workspace = "10 silent" }) + end) + ''; + }; home.packages = with pkgs; [ equibop telegram-desktop diff --git a/config/hosts/aspects/doloro-laptop/home.nix b/config/hosts/aspects/doloro-laptop/home.nix index 39b0b29..788676d 100644 --- a/config/hosts/aspects/doloro-laptop/home.nix +++ b/config/hosts/aspects/doloro-laptop/home.nix @@ -39,16 +39,10 @@ { xdg.configFile."hypr/hyprland-local.lua" = { text = '' - decoration { - blur { - enabled = false - } - } - input { - kb_layout = "gb" - follow_mouse = 2 - sensitivity = 0 - } + -- Host overrides (laptop) + hl.config({ ["decoration.blur.enabled"] = false }) + hl.config({ ["input.sensitivity"] = 0 }) + hl.device({ name = "default", sensitivity = 0 }) ''; }; home.packages = with pkgs; [ diff --git a/config/modules/ai/pi.nix b/config/modules/ai/pi.nix index 650fbf0..8d896bd 100644 --- a/config/modules/ai/pi.nix +++ b/config/modules/ai/pi.nix @@ -56,7 +56,7 @@ # "npm:@vanillagreen/pi-qol" "npm:pi-vitals" "npm:pi-spark" - "npm:pi-caveman" + # "npm:pi-caveman" "npm:@tmustier/pi-usage-extension" "npm:@heyhuynhgiabuu/pi-pretty" "npm:pi-lens" @@ -64,6 +64,8 @@ # "npm:@rohaquinlop/pi-deepseek-cache" "npm:pi-cache-optimizer" "npm:pi-opencode-go-cache" + "npm:@pi-vault/pi-dcp" + "git:github.com/DietrichGebert/ponytail" ]; }; context = '' @@ -108,6 +110,7 @@ rightSegments = [ "separator" "cost" + "model_cost" "context_pct" ]; icons = { @@ -124,6 +127,7 @@ cacheWrite = "↗"; contextPct = "◫"; cost = "$"; + modelCost = "(in/out)"; separator = "│"; }; colors = { @@ -138,6 +142,7 @@ contextWarn = "warning"; contextError = "error"; cost = "text"; + modelCost = "text"; tokens = "muted"; separator = "dim"; }; @@ -188,12 +193,12 @@ home.file.".pi/agent/extensions/model-filter.ts" = { source = ./model-filter.ts; }; - + # Show model cost in status bar home.file.".pi/agent/extensions/model-cost.ts" = { source = ./model-cost.ts; }; - + # Model filter config: per-provider filters applied by model-filter.ts home.file.".pi/agent/model-filters.json" = { text = builtins.toJSON { diff --git a/config/modules/helium.nix b/config/modules/helium.nix index 70e1c20..275f668 100644 --- a/config/modules/helium.nix +++ b/config/modules/helium.nix @@ -54,11 +54,15 @@ xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = { text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}''; }; - wayland.windowManager.hyprland.settings = lib.mkIf settings.default { - binds = [ - "$mainMod, E, exec, helium" - ]; - }; + wayland.windowManager.hyprland.extraLuaFiles = lib.mkIf settings.default { + "helium-bind.lua" = { + autoLoad = true; + content = '' + -- Helium launcher bind (lua config: settings.bind cannot express dispatchers) + hl.bind("SUPER + E", hl.dsp.exec_cmd("helium")) + ''; + }; + }; }; }; } diff --git a/config/modules/hyprland/doloro-settings.nix b/config/modules/hyprland/doloro-settings.nix index f181c84..57ea0b4 100644 --- a/config/modules/hyprland/doloro-settings.nix +++ b/config/modules/hyprland/doloro-settings.nix @@ -173,24 +173,21 @@ "-- Window rules" "hl.window_rule({ suppress_event = \"maximize\" })" "hl.window_rule({ match = { class = \"gamescope\" }, workspace = \"5\", immediate = true, confine_pointer = true })" - "hl.window_rule({ match = { class = \"steam\" }, workspace = \"6 silent\" })" - "hl.window_rule({ match = { class = \"vesktop\" }, workspace = \"8 silent\" })" - "hl.window_rule({ match = { class = \"org.telegram.desktop\" }, workspace = \"8 silent\" })" - "hl.window_rule({ match = { class = \"com.obsproject.Studio\" }, workspace = \"10 silent\" })" "hl.window_rule({ match = { initial_title = \"OBS Studio Crash Detected\" }, pin = true })" "hl.window_rule({ match = { initial_title = \"Discord Popout\" }, workspace = \"1 silent\" })" "" "-- Layer rules" "hl.layer_rule({ match = { namespace = \"notifications\" }, no_screen_share = true })" "" - "-- Host-specific overrides" + "-- Host-specific overrides: load ~/.config/hypr/hyprland-local.lua if present (must be valid Lua)" "local home = os.getenv(\"HOME\")" "if home then" - " local f = io.open(home .. '/.config/hypr/hyprland-local.lua', 'r')" + " local localPath = home .. '/.config/hypr/hyprland-local.lua'" + " local f = io.open(localPath, 'r')" " if f then" - " _ = f:close()" - " local config = loadfile(home .. '/.config/hypr/hyprland-local.lua')" - " if config then config() end" + " f:close()" + " local chunk, err = loadfile(localPath)" + " if chunk then chunk() else io.stderr:write('hyprland-local.lua error: ' .. err .. '\\n') end" " end" "end" ] @@ -232,8 +229,13 @@ # partOf = [ "hyprland-session.target" ]; # after = [ "hyprland-session.target" ]; # }; - xdg.configFile."hypr/hyprland.lua" = { - source = pkgs.writeText "hyprland.lua" hlBindCode; + # Hand-written config as extraLuaFile so Home Manager still + # generates hypr/hyprland.lua itself, including the systemd + # session activation hooks (hyprland-session.target start/stop + # + dbus-update-activation-environment --systemd --all). + wayland.windowManager.hyprland.extraLuaFiles."hl-main.lua" = { + autoLoad = true; + content = hlBindCode; }; }; }; diff --git a/config/modules/zen-browser.nix b/config/modules/zen-browser.nix index 5f047fd..e551c49 100644 --- a/config/modules/zen-browser.nix +++ b/config/modules/zen-browser.nix @@ -42,11 +42,15 @@ ]; in { - wayland.windowManager.hyprland.settings = lib.mkIf settings.default { - bind = [ - "$mainMod, E, exec, zen" - ]; - }; + wayland.windowManager.hyprland.extraLuaFiles = lib.mkIf settings.default { + "zen-browser-bind.lua" = { + autoLoad = true; + content = '' + -- Zen launcher bind (lua config: settings.bind cannot express dispatchers) + hl.bind("SUPER + E", hl.dsp.exec_cmd("zen")) + ''; + }; + }; home.packages = [ (pkgs.wrapFirefox inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped