This commit is contained in:
2026-07-25 16:10:00 +01:00
parent 1f4f716de1
commit b8c6862880
8 changed files with 333 additions and 250 deletions
+10 -16
View File
@@ -76,22 +76,16 @@
...
}:
{
wayland.windowManager.hyprland.settings = {
monitor = [
"HDMI-A-1, 1920x1080@60, 0x0, 1"
"DP-2, 1920x1080@120, 1920x0, 1"
];
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 = ''
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
}
'';
};
home.packages = with pkgs; [
equibop
+13 -17
View File
@@ -37,23 +37,19 @@
homeManager =
{ pkgs, ... }:
{
wayland.windowManager.hyprland.settings = {
# monitor = [
# "eDP-1, 2880x1800@120, 0x0, 2"
# ];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = 0;
};
decoration = {
blur = lib.mkForce {
enabled = false;
passes = 1;
new_optimizations = true;
ignore_opacity = false;
};
};
xdg.configFile."hypr/hyprland-local.lua" = {
text = ''
decoration {
blur {
enabled = false
}
}
input {
kb_layout = "gb"
follow_mouse = 2
sensitivity = 0
}
'';
};
home.packages = with pkgs; [
telegram-desktop
+4 -3
View File
@@ -26,9 +26,10 @@
};
programs.fish = {
shellInit = ''
if test -f "$HOME/.secrets/scug_io_api_key"
set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key")
end
if test -f "$HOME/.secrets/scug_io_api_key"
set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key")
end
set -x PI_LENS_STARTUP_MODE quick
'';
};
programs.opencode = {
+96 -29
View File
@@ -57,46 +57,59 @@
}
);
settings = {
"openrouter" = {
"compat" = {
"sendSessionAffinityHeaders" = true;
};
};
"litellm" = {
"providers" = {
"litellm" = {
"providers" = {
"litellm" = {
"displayName" = "scuggo";
"baseUrl" = "https://9f5db439.fwds.scug.io";
"apiKey" = "$SCUG_IO_API_KEY";
"compat" = {
"sendSessionAffinityHeaders" = true;
};
};
};
"skills" = {
"enabled" = true;
};
"displayName" = "scuggo";
"baseUrl" = "https://9f5db439.fwds.scug.io";
"apiKey" = "$SCUG_IO_API_KEY";
"compat" = {
"sendSessionAffinityHeaders" = true;
};
"mcp" = {
"enabled" = true;
};
"showCacheMissNotices" = true;
"qol" = {
"permissionGate" = {
"enabled" = true;
"commands" = "rm -Rf,rm -rf,sudo,chmod,chown,mkfs,dd,shutdown,reboot,poweroff";
"previewLines" = 12;
"previewChars" = 1200;
};
};
};
"skills" = {
"enabled" = true;
};
"compat" = {
"sendSessionAffinityHeaders" = true;
};
};
"mcp" = {
"enabled" = true;
};
"showCacheMissNotices" = true;
"vstack" = {
"extensionManager" = {
"config" = {
"@vanillagreen/pi-qol" = {
"statusline.enabled" = false;
"showSessionNameTitle" = false;
"permissionGate" = {
"enabled" = true;
"commands" = "rm -Rf,rm -rf,sudo,chmod,chown,mkfs,dd,shutdown,reboot,poweroff";
"previewLines" = 12;
"previewChars" = 1200;
};
"thinkingLabel" = {
"text" = "🧠";
"showTimer" = true;
};
};
};
};
};
packages = [
# "npm:@odinlayer/pi-provider-litellm"
# "npm:pi-provider-litellm"
"npm:@juanibiapina/pi-extension-settings"
"git:github.com/balcsida/pi-provider-litellm"
"npm:pi-provider-litellm"
# "npm:pi-web-access"
# "npm:@gotgenes/pi-permission-system"
"npm:@vanillagreen/pi-extension-manager"
"npm:@vanillagreen/pi-qol"
"npm:pi-vitals"
"npm:pi-spark"
@@ -110,7 +123,61 @@
"npm:pi-cache-optimizer"
];
};
context = "Heavily prefer to use any appropriate tools instead of raw cmd";
context = ''
[CORE TOOLING DOCTRINE OBEY WITHOUT EXCEPTION]
[FILE OPERATIONS]
- `read` (supports .nix, .ts, .js, .json, .yaml, .yml, .md, .html, .css, .sh, .bash, .c, .h, .rs, .go, .py, .rb, .lua, .toml, .cfg, .ini, .xml, .wasm, .wat, .wat, .webp, .bmp, .jpg, .png, .gif, .svg, .png, .ttf, .woff, .woff2): reads file content, truncates at 2000 lines / 50KB. Use offset/limit for large files. For images returns attachment. For text returns content.
- `write` (supports any path): creates file if missing, overwrites if exists. Auto-creates parent dirs. Use for new files or full rewrites.
- `edit` (supports any path): precise text replacement. Every edits[].oldText must match a unique, non-overlapping region. Merge nearby changes into single edit. Do NOT include large unchanged regions just to connect distant edits. Prefer smallest possible oldText for uniqueness.
- NEVER use `cat`, `echo`, `tee`, `sed -i`, `head`, `tail` for file content. These bypass the dispatch pipeline and lose context.
- NEVER use `find` on the nix store. It is DANGEROUS AND EVIL walks /nix/store with no pruning. Use `ls` on known store paths, `grep`, `symbol_search`, or `module_report` instead.
[TEXT SEARCH]
- `rg` (ripgrep) for pattern matching in files. Flags: `-n` (line numbers), `-u` (respect .gitignore, default), `-i` (case-insensitive), `--no-heading` (suppress filename prefix).
- NEVER combine `find` + `xargs grep` or `find` + `ls` + `grep`. `rg` is always available and respects .gitignore.
- For glob-based file discovery: use `find` (the tool) with patterns like `*.ts`, `**/*.json`. This is fine `find` is the file-system tool, not the nix-store walker.
- For content search across files: `grep` with optional glob filter (e.g. `grep -rn "pattern" --glob="*.rs"`).
[CODE NAVIGATION]
- `symbol_search`: ranked BM25 identifier search over persisted word index. Answers "which files are relevant to <query>". Pair with `module_report` for file outline and `read_symbol` for symbol body.
- `module_report`: structured file outline returns each symbol's name/kind/signature/line-range, who-uses-this, risk flags, recommendedReads. Pass `blastRadius: true` for transitive dependents.
- `read_enclosing`: smallest enclosing symbol/callback for a given line. Use after `ast_grep_search`, diagnostics, or LSP locations when you need exact body without reading whole file.
- `lsp_diagnostics`: LSP-level errors/warnings/hints. Use BEFORE building. Supports paths (file or directory), severity filter, concurrency control.
- NEVER use `find` + manual parsing for code navigation. Always use symbol_search/module_report/read_symbol first.
[DIAGNOSTICS]
- `lens_diagnostics` (default: mode=delta, current turn's fixable warnings): fast, current-turn only. Use for "what needs fixing right now?"
- `lens_diagnostics` (mode=all): session diagnostics for ALL files edited this session. Shows blocking errors with messages, not just counts. Unedited files with pre-existing errors DO NOT appear.
- `lens_diagnostics` (mode=full): expensive project-wide LSP scan + cached runner diagnostics. Use before declaring work done. Bounded by slowest analyzer (~180s ceiling for trivy).
- `lsp_diagnostics`: LSP-only diagnostics. Use before builds to proactively catch type errors.
- NEVER use `grep` + manual diagnostic interpretation. Always route through lens_diagnostics/lsp_diagnostics.
[SHARED TOOLS]
- `recall_context(id)`: recall original content compressed by context engineering. Use when full content of expired/truncated/condensed tool result is needed.
- `bash`: execute shell commands. For text search: `rg -n`. For text extraction: `rg --output-format json`. For file operations: prefer `read`/`write`/`edit`. For system commands: git, nix, builds, scripts, network.
- `bash` with `timeout`: set timeout for long-running operations. Use for builds, nix operations, network requests.
[BEHAVIORAL CONSTRAINTS]
- Always prefer `read`/`write`/`edit` over any raw shell equivalent for file operations.
- Always prefer `rg` over `find` + `grep` for text search.
- Always prefer `symbol_search`/`module_report` over `find` + manual parsing for code navigation.
- Always prefer `lens_diagnostics`/`lsp_diagnostics` over `grep` + manual diagnostic interpretation.
- Use `bash` ONLY for commands that genuinely need a shell (git, nix, builds, scripts, network, system management).
- When editing files, always use `edit` (not `write` with partial content). `edit` is precise and tracks what changed.
- When creating new files or doing full rewrites, use `write`.
- When searching file contents, always use `grep`.
- When running builds, always check `lsp_diagnostics`/`lens_diagnostics` first.
- When declaring work done, always run `lens_diagnostics mode=full` to verify no blocking errors remain.
- When context is expired/truncated/condensed, use `recall_context(id)` to recover full content.
- When reading large files, use offset/limit to navigate never read entire 10000+ line files.
[CRITICAL RULES]
- NEVER use `find` on the nix store (/nix/store/*). It is DANGEROUS AND EVIL extremely expensive, slow, locks up execution.
- Use `ls` on known store paths. Use `grep`, `symbol_search`, or `module_report` for discovery.
- If you need to discover something, ask the user for the path rather than guessing.
- This rule is ABSOLUTE. No exceptions. No edge cases.
'';
};
# pi-vitals config
@@ -195,7 +262,7 @@
presets = {
"scuggo" = {
provider = "litellm";
model = "meow";
model = "Ornith-1.0-9B";
thinkingLevel = "medium";
};
"claude" = {
+186 -171
View File
@@ -12,6 +12,190 @@
home,
...
}:
let
tofiCfg = pkgs.writeTextFile {
name = "hyprland-tofi-config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
meowScript = pkgs.writeShellScript "meow" ''
fish -c 'grim -g $(slurp) -t png - &| wl-copy -t image/png; killall wayfreeze'
'';
mreowScript = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${tofiCfg})
'';
mainMod = "SUPER";
hlBind = key: dispatcher: "hl.bind(\"${key}\", ${dispatcher})";
workspaceLines = pkgs.lib.concatLists (
builtins.genList (
i:
let
ws = toString (i + 1);
in
[
(hlBind "${mainMod} + ${ws}" "hl.dsp.focus({ workspace = ${ws} })")
(hlBind "${mainMod} + SHIFT + ${ws}" "hl.dsp.window.move({ workspace = ${ws} })")
]
) 9
);
hlBindCode = pkgs.lib.concatStringsSep "\n" (
[
"-- Hyprland configuration"
""
"local mainMod = \"${mainMod}\""
""
"-- Config"
"hl.config({"
" general = {"
" gaps_in = 1,"
" gaps_out = 1,"
" border_size = 1,"
" resize_on_border = false,"
" allow_tearing = true,"
" layout = \"dwindle\","
" },"
" input = {"
" follow_mouse = 2,"
" kb_layout = \"gb\","
" },"
" decoration = {"
" rounding = 4,"
" rounding_power = 1,"
" active_opacity = 1.0,"
" inactive_opacity = 1.0,"
" shadow = {"
" enabled = false,"
" },"
" blur = {"
" enabled = true,"
" passes = 1,"
" new_optimizations = true,"
" ignore_opacity = false,"
" },"
" },"
" cursor = {"
" no_hardware_cursors = false,"
" },"
" dwindle = {"
" preserve_split = true,"
" },"
" misc = {"
" force_default_wallpaper = -1,"
" disable_hyprland_logo = false,"
" enable_anr_dialog = false,"
" },"
"})"
""
"-- Monitors"
"hl.monitor({ output = \"HDMI-A-1\", mode = \"1920x1080@60\", position = \"0x0\", scale = \"1\" })"
"hl.monitor({ output = \"DP-2\", mode = \"1920x1080@120\", position = \"1920x0\", scale = \"1\" })"
""
"-- Input"
"hl.device({ name = \"default\", kb_layout = \"gb\", sensitivity = -0.5 })"
""
"-- Curves"
"hl.curve(\"easeOutQuint\", { type = \"bezier\", points = { {0.23, 1}, {0.32, 1} } })"
"hl.curve(\"easeInOutCubic\", { type = \"bezier\", points = { {0.65, 0.05}, {0.36, 1} } })"
"hl.curve(\"linear\", { type = \"bezier\", points = { {0, 0}, {1, 1} } })"
"hl.curve(\"almostLinear\", { type = \"bezier\", points = { {0.5, 0.5}, {0.75, 1} } })"
"hl.curve(\"quick\", { type = \"bezier\", points = { {0.15, 0}, {0.1, 1} } })"
""
"-- Animations"
"hl.animation({ leaf = \"global\", enabled = true, speed = 10, bezier = \"default\" })"
"hl.animation({ leaf = \"border\", enabled = true, speed = 5.39, bezier = \"easeOutQuint\" })"
"hl.animation({ leaf = \"windows\", enabled = true, speed = 2.79, bezier = \"easeOutQuint\" })"
"hl.animation({ leaf = \"windowsIn\", enabled = true, speed = 1, bezier = \"easeOutQuint\", style = \"popin 87%\" })"
"hl.animation({ leaf = \"windowsOut\", enabled = true, speed = 1, bezier = \"linear\", style = \"popin 87%\" })"
"hl.animation({ leaf = \"windowsMove\", enabled = true, speed = 1, bezier = \"easeInOutCubic\" })"
"hl.animation({ leaf = \"fadeIn\", enabled = true, speed = 0.5, bezier = \"almostLinear\" })"
"hl.animation({ leaf = \"fadeOut\", enabled = true, speed = 0.5, bezier = \"almostLinear\" })"
"hl.animation({ leaf = \"fade\", enabled = true, speed = 1, bezier = \"quick\" })"
"hl.animation({ leaf = \"layers\", enabled = true, speed = 3.81, bezier = \"easeOutQuint\" })"
"hl.animation({ leaf = \"layersIn\", enabled = true, speed = 4, bezier = \"easeOutQuint\", style = \"fade\" })"
"hl.animation({ leaf = \"layersOut\", enabled = true, speed = 1.5, bezier = \"linear\", style = \"fade\" })"
"hl.animation({ leaf = \"fadeLayersIn\", enabled = true, speed = 1.79, bezier = \"almostLinear\" })"
"hl.animation({ leaf = \"fadeLayersOut\", enabled = true, speed = 1.39, bezier = \"almostLinear\" })"
"hl.animation({ leaf = \"workspaces\", enabled = true, speed = 1, bezier = \"almostLinear\", style = \"slide\" })"
"hl.animation({ leaf = \"workspacesIn\", enabled = true, speed = 1, bezier = \"easeInOutCubic\", style = \"slide\" })"
"hl.animation({ leaf = \"workspacesOut\", enabled = true, speed = 1, bezier = \"easeInOutCubic\", style = \"slide\" })"
"hl.animation({ leaf = \"zoomFactor\", enabled = true, speed = 7, bezier = \"quick\" })"
""
"-- Binds"
(hlBind "${mainMod} + R" "hl.dsp.exec_cmd(\"${mreowScript}\")")
(hlBind "${mainMod} + C" "hl.dsp.window.close()")
(hlBind "${mainMod} + M" "hl.dsp.exec_cmd(\"uwsm stop\")")
(hlBind "${mainMod} + Q" "hl.dsp.exec_cmd(\"kitty\")")
(hlBind "${mainMod} + V" "hl.dsp.window.float({ action = \"toggle\" })")
(hlBind "${mainMod} + left" "hl.dsp.focus({ direction = \"left\" })")
(hlBind "${mainMod} + right" "hl.dsp.focus({ direction = \"right\" })")
(hlBind "${mainMod} + up" "hl.dsp.focus({ direction = \"up\" })")
(hlBind "${mainMod} + down" "hl.dsp.focus({ direction = \"down\" })")
(hlBind "${mainMod} + L" "hl.dsp.exec_cmd(\"wlogout\")")
(hlBind "${mainMod} + S" "hl.dsp.exec_cmd(\"wayfreeze --after-freeze-cmd '${meowScript}'\")")
(hlBind "${mainMod} + F" "hl.dsp.window.fullscreen({ action = \"toggle\" })")
(hlBind "${mainMod} + SHIFT + Q" "hl.dsp.window.close()")
(hlBind "${mainMod} + mouse_down" "hl.dsp.focus({ workspace = \"e+1\" })")
(hlBind "${mainMod} + mouse_up" "hl.dsp.focus({ workspace = \"e-1\" })")
""
"-- Mouse binds"
(hlBind "${mainMod} + mouse:272" "hl.dsp.window.drag()")
(hlBind "${mainMod} + mouse:273" "hl.dsp.window.resize()")
""
"-- Media keys"
(hlBind "XF86AudioLowerVolume" "hl.dsp.exec_cmd(\"wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-\")")
(hlBind "XF86AudioRaiseVolume" "hl.dsp.exec_cmd(\"wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+\")")
(hlBind "XF86AudioMute" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\")")
(hlBind "XF86AudioPlay" "hl.dsp.exec_cmd(\"playerctl play-pause\")")
(hlBind "XF86AudioNext" "hl.dsp.exec_cmd(\"playerctl next\")")
(hlBind "XF86AudioPrev" "hl.dsp.exec_cmd(\"playerctl previous\")")
(hlBind "XF86AudioMicMute" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\")")
(hlBind "home" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\")")
(hlBind "end" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\")")
(hlBind "F8" "hl.dsp.pass({ window = [[match:class:^(com.obsproject.Studio)$]] })")
""
"-- Workspaces"
(hlBind "${mainMod} + 0" "hl.dsp.focus({ workspace = 10 })")
(hlBind "${mainMod} + SHIFT + 0" "hl.dsp.window.move({ workspace = 10 })")
]
++ workspaceLines
++ [
""
"-- 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"
"local home = os.getenv(\"HOME\")"
"if home then"
" local f = io.open(home .. '/.config/hypr/hyprland-local.lua', 'r')"
" if f then"
" _ = f:close()"
" local config = loadfile(home .. '/.config/hypr/hyprland-local.lua')"
" if config then config() end"
" end"
"end"
]
);
in
{
home.packages = [
pkgs.hyprcursor
@@ -44,177 +228,8 @@
];
};
};
wayland.windowManager.hyprland.settings = {
env = [
"XCURSOR_THEME,BreezeX-RosePine-Linux"
"XCURSOR_SIZE,24"
"HYPRCURSOR_SIZE,24"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"WEBKIT_DISABLE_DMABUF_RENDERER,1" # maybe disable if nixos fixes alcom
];
general = {
gaps_in = 1;
gaps_out = 1;
border_size = 1;
# "col.active_border" =
# "rgb(${toString base16.rgb."base06".r},${toString base16.rgb."base06".g},${toString base16.rgb."base06".b})";
# "col.inactive_border" =
# "rgb(${toString base16.rgb."base03".r},${toString base16.rgb."base03".g},${toString base16.rgb."base03".b})";
resize_on_border = false;
allow_tearing = true;
layout = "dwindle";
};
decoration = {
rounding = 4;
rounding_power = 1;
active_opacity = 1.0;
inactive_opacity = 1.0;
shadow = {
enabled = false;
};
blur = {
enabled = true;
passes = 1;
new_optimizations = true;
ignore_opacity = false;
};
};
cursor = {
no_hardware_cursors = false;
};
animations = {
enabled = true;
bezier = [
"easeOutQuint,0.23,1,0.32,1"
"easeInOutCubic,0.65,0.05,0.36,1"
"linear,0,0,1,1"
"almostLinear,0.5,0.5,0.75,1.0"
"quick,0.15,0,0.1,1"
];
animation = [
"global, 1, 10, default"
"border, 1, 5.39, easeOutQuint"
"windows, 1, 2.79, easeOutQuint"
"windowsIn, 1, 1, easeOutQuint, popin 87%"
"windowsOut, 1, 1, linear, popin 87%"
"windowsMove, 1, 1, easeInOutCubic"
"fadeIn, 1, 0.5, almostLinear"
"fadeOut, 1, 0.5, almostLinear"
"fade, 1, 1, quick"
"layers, 1, 3.81, easeOutQuint"
"layersIn, 1, 4, easeOutQuint, fade"
"layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 1, 1, almostLinear, slide"
"workspacesIn, 1, 1, easeInOutCubic, slide"
"workspacesOut, 1, 1, easeInOutCubic, slide"
"zoomFactor, 1, 7, quick"
];
};
dwindle = {
# pseudotile = true;
preserve_split = true;
};
# master = {
# new_status = master;
# };
misc = {
force_default_wallpaper = -1;
disable_hyprland_logo = false;
enable_anr_dialog = false;
# vfr = true;
};
"$mainMod" = "SUPER";
bind = [
(
let
config = pkgs.writeTextFile {
name = "config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
script = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${config})
'';
in
"$mainMod, R, exec, ${script}"
)
"$mainMod, C, killactive"
"$mainMod, M, exec, uwsm stop"
"$mainMod, Q, exec, kitty"
"$mainMod, V, togglefloating,"
# "$mainMod, P, pseudo, # dwindle"
# "$mainMod, J, togglesplit, # dwindle"
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
"$mainMod, L, exec, wlogout"
(
let
script = pkgs.writeShellScript "meow" ''
fish -c 'grim -g $(slurp) -t png - &| wl-copy -t image/png; killall wayfreeze'
'';
in
"$mainMod, S, exec, " + "wayfreeze --after-freeze-cmd '${script}'"
)
"$mainMod, F, fullscreen"
"$mainMod, mouse_down, workspace, e+1"
"$mainMod, mouse_up, workspace, e-1"
", home, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", end, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
", F8, pass, class:^(com\.obsproject\.Studio)$"
"$mainMod, 0, workspace, 10"
"$mainMod SHIFT, 0, movetoworkspace, 10"
]
++ (builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mainMod, ${toString ws}, workspace, ${toString ws}"
"$mainMod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
]
) 9
));
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
windowrule = [
"match:class .*, suppress_event maximize"
"match:class ^(gamescope)$, workspace 5"
"match:class ^(gamescope)$, immediate true"
"match:class ^(gamescope)$, confine_pointer true"
"match:class ^(steam)$, workspace 6 silent"
"match:class ^(vesktop)$, workspace 8 silent"
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
"match:class ^(com.obsproject.Studio)$, workspace 10 silent"
"match:initial_title ^(OBS Studio Crash Detected)$, pin true"
"match:initial_title ^(Discord Popout)$, workspace 1 silent"
];
layerrule = [
"match:namespace ^(notifications)$, no_screen_share true"
# "match:namespace ^(quickshell)$, blur true"
];
# exec-once = [
# ];
# we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs
xdg.configFile."hypr/hyprland.lua" = {
source = pkgs.writeText "hyprland.lua" hlBindCode;
};
};
};
+1 -2
View File
@@ -10,7 +10,6 @@
flake-file.inputs = {
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
};
modules = {
@@ -44,7 +43,7 @@
config = {
allowUnfree = true;
};
# source = inputs.nixpkgs;
source = inputs.nixpkgs;
};
colorschemes.gruvbox-material.enable = true;
# colorschemes.melange = {