diff --git a/hosts/bomberman/default.nix b/hosts/bomberman/default.nix index fbe62ad..7dd9177 100644 --- a/hosts/bomberman/default.nix +++ b/hosts/bomberman/default.nix @@ -24,5 +24,5 @@ ]; networking.hostName = "bomberman"; - networking.wireguard.interfaces."${config.ips.wgInt}".ips = [ "${config.ips.wgSpan}.19/24" ]; + networking.wireguard.interfaces.wgc.ips = [ "10.100.0.19/24" ]; } diff --git a/modules/home/sway/autostart/default.nix b/modules/home/sway/autostart/default.nix index 976e807..92c1f3c 100644 --- a/modules/home/sway/autostart/default.nix +++ b/modules/home/sway/autostart/default.nix @@ -1,31 +1,29 @@ { pkgs, ... }: { - wayland.windowManager.sway = { - config = { - bars = [ {command = "waybar";} ]; + wayland.windowManager.sway.config = { + bars = [ {command = "waybar";} ]; - startup = [ - # Scratchpads - {command = "foot -a gotop -T Gotop gotop";} - {command = "foot -a music -T Music ncmpcpp";} - {command = "foot -a sound -T Sound pulsemixer";} - {command = "easyeffects";} + startup = [ + # Scratchpads + {command = "foot -a gotop -T Gotop gotop";} + {command = "foot -a music -T Music ncmpcpp";} + {command = "foot -a sound -T Sound pulsemixer";} + {command = "easyeffects";} - # Daemons and tray apps - {command = "wl-paste -t text --watch clipman store -P";} - {command = "wl-copy";} - {command = "mako";} - {command = "sunshine";} + # Daemons and tray apps + {command = "wl-paste -t text --watch clipman store -P";} + {command = "wl-copy";} + {command = "mako";} + {command = "sunshine";} - # Polkit agent - {command = "${pkgs.mate.mate-polkit}/libexec/polkit-mate-authentication-agent-1";} + # Polkit agent + {command = "${pkgs.mate.mate-polkit}/libexec/polkit-mate-authentication-agent-1";} - # Foreground apps - {command = "librewolf -P Misc --name=MiscBrowser";} - {command = "vesktop";} - {command = "fractal";} - {command = "thunderbird";} - ]; - }; + # Foreground apps + {command = "librewolf -P Misc --name=MiscBrowser";} + {command = "vesktop";} + {command = "fractal";} + {command = "thunderbird";} + ]; }; } diff --git a/modules/home/sway/hardware/default.nix b/modules/home/sway/hardware/default.nix index bed8f28..f1c36ad 100644 --- a/modules/home/sway/hardware/default.nix +++ b/modules/home/sway/hardware/default.nix @@ -1,50 +1,53 @@ { config, ... }: { - wayland.windowManager.sway = { - config = { - # Define monitors - output = { - ${config.displays.d1} = { - pos = "1920 405"; - mode = "1920x1080@143.980Hz"; - max_render_time = "3"; - bg = "~/.assets/wallpapers/1.png fill"; - adaptive_sync = "on"; - }; - ${config.displays.d2} = { - pos = "0 405"; - mode = "1920x1080@60Hz"; - max_render_time = "3"; - bg = "~/.assets/wallpapers/2.png fill"; - }; - ${config.displays.d3} = { - pos = "3840 0"; - mode = "1680x1050@59.883Hz"; - transform = "270"; - max_render_time = "3"; - bg = "~/.assets/wallpapers/3.png fill"; - }; - "*" = { - bg = "~/.assets/wallpapers/1.png fill"; - }; + wayland.windowManager.sway.config = { + # Define monitors + output = { + ${config.displays.d1} = { + pos = "3840 405"; + mode = "1920x1080@143.980Hz"; + max_render_time = "3"; + bg = "~/.assets/wallpapers/1.png fill"; + adaptive_sync = "on"; }; + ${config.displays.d2} = { + pos = "1920 405"; + mode = "1920x1080@60Hz"; + max_render_time = "3"; + bg = "~/.assets/wallpapers/2.png fill"; + }; + ${config.displays.d3} = { + pos = "5760 0"; + mode = "1680x1050@59.883Hz"; + transform = "270"; + max_render_time = "3"; + bg = "~/.assets/wallpapers/3.png fill"; + }; + ${config.displays.d4} = { + pos = "0 405"; + mode = "1920x1080@60Hz"; + max_render_time = "3"; + }; + "*" = { + bg = "~/.assets/wallpapers/1.png fill"; + }; + }; - # HID device config - input = { - "9610:4103:SINOWEALTH_Game_Mouse" = { - pointer_accel = "-0.9"; - }; - "9639:64097:Compx_2.4G_Receiver_Mouse" = { - pointer_accel = "-0.82"; - }; - "1452:627:bcm5974" = { - scroll_factor = "0.3"; - }; - "*" = { - accel_profile = "flat"; - dwt = "disabled"; - natural_scroll = "disabled"; - }; + # HID device config + input = { + "9610:4103:SINOWEALTH_Game_Mouse" = { + pointer_accel = "-0.9"; + }; + "9639:64097:Compx_2.4G_Receiver_Mouse" = { + pointer_accel = "-0.82"; + }; + "1452:627:bcm5974" = { + scroll_factor = "0.3"; + }; + "*" = { + accel_profile = "flat"; + dwt = "disabled"; + natural_scroll = "disabled"; }; }; }; diff --git a/modules/home/sway/hotkeys/default.nix b/modules/home/sway/hotkeys/default.nix index 70f4797..8949749 100644 --- a/modules/home/sway/hotkeys/default.nix +++ b/modules/home/sway/hotkeys/default.nix @@ -1,228 +1,226 @@ { pkgs, config, ... }: { - wayland.windowManager.sway = { - config = let - # Set default modifier and variables - primeMod = "Mod4"; - secMod = "Mod1"; - resizeAmount = "55"; - sendNotif = "notify-send --expire-time=1500"; + wayland.windowManager.sway.config = let + # Set default modifier and variables + primeMod = "Mod4"; + secMod = "Mod1"; + resizeAmount = "55"; + sendNotif = "notify-send --expire-time=1500"; + in { + # Hotkeys + modifier = "${primeMod}"; + keybindings = let + # Define scripts specific to Sway + pinWindow = pkgs.writeScript "pin-window" '' + # Get the current border style of the focused window + current_style=$(swaymsg -t get_tree | jq -r '.. | select(.focused?).border') + + # Toggle between "normal" (default) and "pixel ${config.look.border.string}" border styles + if [ "$current_style" == "none" ]; then + swaymsg "sticky disable, border pixel ${config.look.border.string}" + else + swaymsg "sticky enable, border none" + fi + ''; + + # Kill a window or probe it for info + swayTools = pkgs.writeScript "swaytools" '' + # List the app name and whether or not it uses wayland + swayprop() { + selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${config.look.colors.prime} -B 00000066 -b 00000000) + if [ -n "$selected_window" ]; then + app_id=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .app_id') + system=$(sed 's/xdg_shell/Wayland/g; s/xwayland/Xorg/g' < <(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .shell')) + notify-send "$(echo -e "Window's app_id: $app_id\nWindow System: $system")" + fi + } + + # Kill a selected window + swaykill() { + selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${config.look.colors.prime} -B 00000066 -b 00000000) + if [ -n "$selected_window" ]; then + pid=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .pid') + kill -9 "$pid" + fi + } + + # Handle which tool we use + if [ "$1" == "--prop" ]; then + swayprop + elif [ "$1" == "--kill" ]; then + swaykill + fi + ''; in { - # Hotkeys - modifier = "${primeMod}"; - keybindings = let - # Define scripts specific to Sway - pinWindow = pkgs.writeScript "pin-window" '' - # Get the current border style of the focused window - current_style=$(swaymsg -t get_tree | jq -r '.. | select(.focused?).border') + ## Launcher keys - # Toggle between "normal" (default) and "pixel ${config.look.border.string}" border styles - if [ "$current_style" == "none" ]; then - swaymsg "sticky disable, border pixel ${config.look.border.string}" - else - swaymsg "sticky enable, border none" - fi - ''; + # LibreWolf profiles + "${primeMod}+F1" = ''exec librewolf -P Main --name=MainBrowser | ${sendNotif} "Main Browser"''; + "${primeMod}+F2" = ''exec librewolf -P Alt --name=AltBrowser | ${sendNotif} "Alternate Browser"''; + "${primeMod}+F3" = ''exec librewolf -P Misc --name=MiscBrowser | ${sendNotif} "Miscellaneous Browser"''; - # Kill a window or probe it for info - swayTools = pkgs.writeScript "swaytools" '' - # List the app name and whether or not it uses wayland - swayprop() { - selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${config.look.colors.prime} -B 00000066 -b 00000000) - if [ -n "$selected_window" ]; then - app_id=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .app_id') - system=$(sed 's/xdg_shell/Wayland/g; s/xwayland/Xorg/g' < <(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .shell')) - notify-send "$(echo -e "Window's app_id: $app_id\nWindow System: $system")" - fi - } + # Virtual Machines + "${primeMod}+F4" = ''exec virt-manager | ${sendNotif} "Virtual Machines"''; + "${primeMod}+F5" = ''exec looking-glass-client input:rawMouse=yes | ${sendNotif} "Looking Glass"''; - # Kill a selected window - swaykill() { - selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${config.look.colors.prime} -B 00000066 -b 00000000) - if [ -n "$selected_window" ]; then - pid=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .pid') - kill -9 "$pid" - fi - } + # BeMenu scripts + "${primeMod}+${secMod}+s" = ''exec rofiscripts --scratchpads''; + "${primeMod}+${secMod}+r" = ''exec rofiscripts --resolutions''; - # Handle which tool we use - if [ "$1" == "--prop" ]; then - swayprop - elif [ "$1" == "--kill" ]; then - swaykill - fi - ''; - in { - ## Launcher keys + # Mod + Key + "${primeMod}+s" = ''exec rofi -show run -p Command''; + "${primeMod}+c" = ''exec clipman pick -t rofi''; + "${primeMod}+x" = ''exec rofiscripts --power''; + "${primeMod}+b" = ''exec pkill -USR1 waybar''; + "${primeMod}+Return" = ''exec foot''; + "${primeMod}+Escape" = ''exec ${swayTools} --kill''; + "${primeMod}+Delete" = ''exec foot ranger /etc/nixos | ${sendNotif} "Nix Config"''; - # LibreWolf profiles - "${primeMod}+F1" = ''exec librewolf -P Main --name=MainBrowser | ${sendNotif} "Main Browser"''; - "${primeMod}+F2" = ''exec librewolf -P Alt --name=AltBrowser | ${sendNotif} "Alternate Browser"''; - "${primeMod}+F3" = ''exec librewolf -P Misc --name=MiscBrowser | ${sendNotif} "Miscellaneous Browser"''; + # Mod + shift + key + "${primeMod}+Shift+t" = ''exec pcmanfm-qt''; + "${primeMod}+Shift+e" = ''exec BEMOJI_PICKER_CMD="rofi -dmenu -i -p Emoji" bemoji -n -P 0''; + "${primeMod}+Shift+s" = ''exec rofi -show drun -modi drun -drun-display-format {name} -show-icons -disable-history''; + "${primeMod}+Shift+b" = ''exec rofi-bluetooth''; + "${primeMod}+Shift+Return" = ''exec foot ranger''; - # Virtual Machines - "${primeMod}+F4" = ''exec virt-manager | ${sendNotif} "Virtual Machines"''; - "${primeMod}+F5" = ''exec looking-glass-client input:rawMouse=yes | ${sendNotif} "Looking Glass"''; + # Mod + ctrl + key + "${primeMod}+Ctrl+x" = ''exec ${swayTools} --prop''; + "${primeMod}+Ctrl+c" = ''exec ${pkgs.hyprpicker}/bin/hyprpicker -an && ${sendNotif} "Color copied to clipboard"''; + "${primeMod}+Ctrl+Prior" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Main"''; + "${primeMod}+Ctrl+Next" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Guest"''; - # BeMenu scripts - "${primeMod}+${secMod}+s" = ''exec rofiscripts --scratchpads''; - "${primeMod}+${secMod}+r" = ''exec rofiscripts --resolutions''; + ## Media keys - # Mod + Key - "${primeMod}+s" = ''exec rofi -show run -p Command''; - "${primeMod}+c" = ''exec clipman pick -t rofi''; - "${primeMod}+x" = ''exec rofiscripts --power''; - "${primeMod}+b" = ''exec pkill -USR1 waybar''; - "${primeMod}+Return" = ''exec foot''; - "${primeMod}+Escape" = ''exec ${swayTools} --kill''; - "${primeMod}+Delete" = ''exec foot ranger /etc/nixos | ${sendNotif} "Nix Config"''; + # Volume control + "${secMod}+j" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-''; + "${secMod}+k" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+''; - # Mod + shift + key - "${primeMod}+Shift+t" = ''exec pcmanfm-qt''; - "${primeMod}+Shift+e" = ''exec BEMOJI_PICKER_CMD="rofi -dmenu -i -p Emoji" bemoji -n -P 0''; - "${primeMod}+Shift+s" = ''exec rofi -show drun -modi drun -drun-display-format {name} -show-icons -disable-history''; - "${primeMod}+Shift+b" = ''exec rofi-bluetooth''; - "${primeMod}+Shift+Return" = ''exec foot ranger''; + # MPD Controls + "${primeMod}+Backslash" = ''exec mpc toggle''; + "${secMod}+Shift+h" = ''exec mpc prev''; + "${secMod}+Shift+j" = ''exec mpc volume -3''; + "${secMod}+Shift+k" = ''exec mpc volume +3''; + "${secMod}+Shift+l" = ''exec mpc next''; - # Mod + ctrl + key - "${primeMod}+Ctrl+x" = ''exec ${swayTools} --prop''; - "${primeMod}+Ctrl+c" = ''exec ${pkgs.hyprpicker}/bin/hyprpicker -an && ${sendNotif} "Color copied to clipboard"''; - "${primeMod}+Ctrl+Prior" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Main"''; - "${primeMod}+Ctrl+Next" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Guest"''; + ## Notification keys - ## Media keys + # Toggle mako + "${primeMod}+n" = ''exec makotoggle''; + "${primeMod}+Shift+n" = ''exec makoctl restore''; + "${primeMod}+Ctrl+n" = ''exec makoctl dismiss -a''; - # Volume control - "${secMod}+j" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-''; - "${secMod}+k" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+''; + ## Miscellaneous keys - # MPD Controls - "${primeMod}+Backslash" = ''exec mpc toggle''; - "${secMod}+Shift+h" = ''exec mpc prev''; - "${secMod}+Shift+j" = ''exec mpc volume -3''; - "${secMod}+Shift+k" = ''exec mpc volume +3''; - "${secMod}+Shift+l" = ''exec mpc next''; + # Screenshots + "${secMod}+f" = ''exec swayshot --swappy''; + "${secMod}+Shift+f" = ''exec swayshot --screen''; - ## Notification keys + # SSH + "${primeMod}+${secMod}+Return" = ''exec foot ssh ${config.ips.server}''; - # Toggle mako - "${primeMod}+n" = ''exec makotoggle''; - "${primeMod}+Shift+n" = ''exec makoctl restore''; - "${primeMod}+Ctrl+n" = ''exec makoctl dismiss -a''; + # Display Brightness and Keyboard Brightness + "${primeMod}+equal" = ''exec light -A 5''; + "${primeMod}+minus" = ''exec light -U 5''; + "${primeMod}+Shift+equal" = ''exec light -A 1''; + "${primeMod}+Shift+minus" = ''exec light -U 1''; + "XF86KbdBrightnessUp" = ''exec light -s sysfs/leds/smc::kbd_backlight -A 5''; + "XF86KbdBrightnessDown" = ''exec light -s sysfs/leds/smc::kbd_backlight -U 5''; - ## Miscellaneous keys + ## Window manager keys + "${primeMod}+q" = ''kill''; + "${primeMod}+Shift+r" = ''reload''; - # Screenshots - "${secMod}+f" = ''exec swayshot --swappy''; - "${secMod}+Shift+f" = ''exec swayshot --screen''; + # Switch to workspaces + "${primeMod}+grave" = ''workspace ${config.ws.w0}''; + "${primeMod}+1" = ''workspace ${config.ws.w1}''; + "${primeMod}+2" = ''workspace ${config.ws.w2}''; + "${primeMod}+3" = ''workspace ${config.ws.w3}''; + "${primeMod}+4" = ''workspace ${config.ws.w4}''; + "${primeMod}+5" = ''workspace ${config.ws.w5}''; + "${primeMod}+6" = ''workspace ${config.ws.w6}''; + "${primeMod}+7" = ''workspace ${config.ws.w7}''; + "${primeMod}+8" = ''workspace ${config.ws.w8}''; + "${primeMod}+9" = ''workspace ${config.ws.w9}''; - # SSH - "${primeMod}+${secMod}+Return" = ''exec foot ssh ${config.ips.server}''; + # Switch to alternate workspaces + "${secMod}+F1" = ''workspace ${config.ws.w1a}''; + "${secMod}+F2" = ''workspace ${config.ws.w2a}''; + "${secMod}+F3" = ''workspace ${config.ws.w3a}''; + "${secMod}+F4" = ''workspace ${config.ws.w4a}''; + "${secMod}+F5" = ''workspace ${config.ws.w5a}''; + "${secMod}+F6" = ''workspace ${config.ws.w6a}''; + "${secMod}+F7" = ''workspace ${config.ws.w7a}''; + "${secMod}+F8" = ''workspace ${config.ws.w8a}''; + "${secMod}+F9" = ''workspace ${config.ws.w9a}''; - # Display Brightness and Keyboard Brightness - "${primeMod}+equal" = ''exec light -A 5''; - "${primeMod}+minus" = ''exec light -U 5''; - "${primeMod}+Shift+equal" = ''exec light -A 1''; - "${primeMod}+Shift+minus" = ''exec light -U 1''; - "XF86KbdBrightnessUp" = ''exec light -s sysfs/leds/smc::kbd_backlight -A 5''; - "XF86KbdBrightnessDown" = ''exec light -s sysfs/leds/smc::kbd_backlight -U 5''; + # Move window to and focus new workspace + "${primeMod}+Shift+grave" = ''move container to workspace ${config.ws.w0}; workspace ${config.ws.w0}''; + "${primeMod}+Shift+1" = ''move container to workspace ${config.ws.w1}; workspace ${config.ws.w1}''; + "${primeMod}+Shift+2" = ''move container to workspace ${config.ws.w2}; workspace ${config.ws.w2}''; + "${primeMod}+Shift+3" = ''move container to workspace ${config.ws.w3}; workspace ${config.ws.w3}''; + "${primeMod}+Shift+4" = ''move container to workspace ${config.ws.w4}; workspace ${config.ws.w4}''; + "${primeMod}+Shift+5" = ''move container to workspace ${config.ws.w5}; workspace ${config.ws.w5}''; + "${primeMod}+Shift+6" = ''move container to workspace ${config.ws.w6}; workspace ${config.ws.w6}''; + "${primeMod}+Shift+7" = ''move container to workspace ${config.ws.w7}; workspace ${config.ws.w7}''; + "${primeMod}+Shift+8" = ''move container to workspace ${config.ws.w8}; workspace ${config.ws.w8}''; + "${primeMod}+Shift+9" = ''move container to workspace ${config.ws.w9}; workspace ${config.ws.w9}''; - ## Window manager keys - "${primeMod}+q" = ''kill''; - "${primeMod}+Shift+r" = ''reload''; + # Move window to and focus new alternate workspace + "${secMod}+Shift+F1" = ''move container to workspace ${config.ws.w1a}; workspace ${config.ws.w1a}''; + "${secMod}+Shift+F2" = ''move container to workspace ${config.ws.w2a}; workspace ${config.ws.w2a}''; + "${secMod}+Shift+F3" = ''move container to workspace ${config.ws.w3a}; workspace ${config.ws.w3a}''; + "${secMod}+Shift+F4" = ''move container to workspace ${config.ws.w4a}; workspace ${config.ws.w4a}''; + "${secMod}+Shift+F5" = ''move container to workspace ${config.ws.w5a}; workspace ${config.ws.w5a}''; + "${secMod}+Shift+F6" = ''move container to workspace ${config.ws.w6a}; workspace ${config.ws.w6a}''; + "${secMod}+Shift+F7" = ''move container to workspace ${config.ws.w7a}; workspace ${config.ws.w7a}''; + "${secMod}+Shift+F8" = ''move container to workspace ${config.ws.w8a}; workspace ${config.ws.w8a}''; + "${secMod}+Shift+F9" = ''move container to workspace ${config.ws.w9a}; workspace ${config.ws.w9a}''; - # Switch to workspaces - "${primeMod}+grave" = ''workspace ${config.ws.w0}''; - "${primeMod}+1" = ''workspace ${config.ws.w1}''; - "${primeMod}+2" = ''workspace ${config.ws.w2}''; - "${primeMod}+3" = ''workspace ${config.ws.w3}''; - "${primeMod}+4" = ''workspace ${config.ws.w4}''; - "${primeMod}+5" = ''workspace ${config.ws.w5}''; - "${primeMod}+6" = ''workspace ${config.ws.w6}''; - "${primeMod}+7" = ''workspace ${config.ws.w7}''; - "${primeMod}+8" = ''workspace ${config.ws.w8}''; - "${primeMod}+9" = ''workspace ${config.ws.w9}''; + # Change focus across windows + "${primeMod}+h" = ''focus left''; + "${primeMod}+j" = ''focus down''; + "${primeMod}+k" = ''focus up''; + "${primeMod}+l" = ''focus right''; - # Switch to alternate workspaces - "${secMod}+F1" = ''workspace ${config.ws.w1a}''; - "${secMod}+F2" = ''workspace ${config.ws.w2a}''; - "${secMod}+F3" = ''workspace ${config.ws.w3a}''; - "${secMod}+F4" = ''workspace ${config.ws.w4a}''; - "${secMod}+F5" = ''workspace ${config.ws.w5a}''; - "${secMod}+F6" = ''workspace ${config.ws.w6a}''; - "${secMod}+F7" = ''workspace ${config.ws.w7a}''; - "${secMod}+F8" = ''workspace ${config.ws.w8a}''; - "${secMod}+F9" = ''workspace ${config.ws.w9a}''; + # Resize windows + "${primeMod}+${secMod}+h" = ''resize shrink width ${resizeAmount} px or 5 ppt''; + "${primeMod}+${secMod}+j" = ''resize shrink height ${resizeAmount} px or 5 ppt''; + "${primeMod}+${secMod}+k" = ''resize grow height ${resizeAmount} px or 5 ppt''; + "${primeMod}+${secMod}+l" = ''resize grow width ${resizeAmount} px or 5 ppt''; - # Move window to and focus new workspace - "${primeMod}+Shift+grave" = ''move container to workspace ${config.ws.w0}; workspace ${config.ws.w0}''; - "${primeMod}+Shift+1" = ''move container to workspace ${config.ws.w1}; workspace ${config.ws.w1}''; - "${primeMod}+Shift+2" = ''move container to workspace ${config.ws.w2}; workspace ${config.ws.w2}''; - "${primeMod}+Shift+3" = ''move container to workspace ${config.ws.w3}; workspace ${config.ws.w3}''; - "${primeMod}+Shift+4" = ''move container to workspace ${config.ws.w4}; workspace ${config.ws.w4}''; - "${primeMod}+Shift+5" = ''move container to workspace ${config.ws.w5}; workspace ${config.ws.w5}''; - "${primeMod}+Shift+6" = ''move container to workspace ${config.ws.w6}; workspace ${config.ws.w6}''; - "${primeMod}+Shift+7" = ''move container to workspace ${config.ws.w7}; workspace ${config.ws.w7}''; - "${primeMod}+Shift+8" = ''move container to workspace ${config.ws.w8}; workspace ${config.ws.w8}''; - "${primeMod}+Shift+9" = ''move container to workspace ${config.ws.w9}; workspace ${config.ws.w9}''; + # Move focused window + "${primeMod}+Shift+h" = ''move left ${resizeAmount} px''; + "${primeMod}+Shift+j" = ''move down ${resizeAmount} px''; + "${primeMod}+Shift+k" = ''move up ${resizeAmount} px''; + "${primeMod}+Shift+l" = ''move right ${resizeAmount} px''; - # Move window to and focus new alternate workspace - "${secMod}+Shift+F1" = ''move container to workspace ${config.ws.w1a}; workspace ${config.ws.w1a}''; - "${secMod}+Shift+F2" = ''move container to workspace ${config.ws.w2a}; workspace ${config.ws.w2a}''; - "${secMod}+Shift+F3" = ''move container to workspace ${config.ws.w3a}; workspace ${config.ws.w3a}''; - "${secMod}+Shift+F4" = ''move container to workspace ${config.ws.w4a}; workspace ${config.ws.w4a}''; - "${secMod}+Shift+F5" = ''move container to workspace ${config.ws.w5a}; workspace ${config.ws.w5a}''; - "${secMod}+Shift+F6" = ''move container to workspace ${config.ws.w6a}; workspace ${config.ws.w6a}''; - "${secMod}+Shift+F7" = ''move container to workspace ${config.ws.w7a}; workspace ${config.ws.w7a}''; - "${secMod}+Shift+F8" = ''move container to workspace ${config.ws.w8a}; workspace ${config.ws.w8a}''; - "${secMod}+Shift+F9" = ''move container to workspace ${config.ws.w9a}; workspace ${config.ws.w9a}''; + # Change focus between floating/tiled, toggle floating + "${primeMod}+space" = ''focus mode_toggle''; + "${primeMod}+Shift+space" = ''floating toggle''; - # Change focus across windows - "${primeMod}+h" = ''focus left''; - "${primeMod}+j" = ''focus down''; - "${primeMod}+k" = ''focus up''; - "${primeMod}+l" = ''focus right''; + # Allow a window to be visible on all workspaces, toggle border + "${primeMod}+0" = ''exec ${pinWindow}''; - # Resize windows - "${primeMod}+${secMod}+h" = ''resize shrink width ${resizeAmount} px or 5 ppt''; - "${primeMod}+${secMod}+j" = ''resize shrink height ${resizeAmount} px or 5 ppt''; - "${primeMod}+${secMod}+k" = ''resize grow height ${resizeAmount} px or 5 ppt''; - "${primeMod}+${secMod}+l" = ''resize grow width ${resizeAmount} px or 5 ppt''; + # Toggle fullscreen + "${primeMod}+f" = ''fullscreen toggle''; + "${primeMod}+${secMod}+Ctrl+f" = ''fullscreen toggle global''; - # Move focused window - "${primeMod}+Shift+h" = ''move left ${resizeAmount} px''; - "${primeMod}+Shift+j" = ''move down ${resizeAmount} px''; - "${primeMod}+Shift+k" = ''move up ${resizeAmount} px''; - "${primeMod}+Shift+l" = ''move right ${resizeAmount} px''; + # Change container layout + "${primeMod}+w" = ''layout toggle split''; + "${primeMod}+e" = ''layout toggle tabbed stacking''; - # Change focus between floating/tiled, toggle floating - "${primeMod}+space" = ''focus mode_toggle''; - "${primeMod}+Shift+space" = ''floating toggle''; + # Change split direction + "${primeMod}+v" = ''split v''; - # Allow a window to be visible on all workspaces, toggle border - "${primeMod}+0" = ''exec ${pinWindow}''; + # Focus parent / child + "${primeMod}+a" = ''focus parent''; + "${primeMod}+shift+a" = ''focus child''; - # Toggle fullscreen - "${primeMod}+f" = ''fullscreen toggle''; - "${primeMod}+${secMod}+Ctrl+f" = ''fullscreen toggle global''; - - # Change container layout - "${primeMod}+w" = ''layout toggle split''; - "${primeMod}+e" = ''layout toggle tabbed stacking''; - - # Change split direction - "${primeMod}+v" = ''split v''; - - # Focus parent / child - "${primeMod}+a" = ''focus parent''; - "${primeMod}+shift+a" = ''focus child''; - - # Scratchpads - "Shift+Ctrl+Backslash" = ''[app_id="gotop"] scratchpad show, move position center, resize set 1216 888''; - "${primeMod}+Shift+m" = ''[app_id="music"] scratchpad show, move position center, resize set 1006 657''; - "${primeMod}+Shift+v" = ''[app_id="sound"] scratchpad show, move position center, resize set 1000 800''; - "${primeMod}+Shift+Backslash" = ''[app_id="com.github.wwmm.easyeffects"] scratchpad show, move position center, resize set 1000 800''; - }; + # Scratchpads + "Shift+Ctrl+Backslash" = ''[app_id="gotop"] scratchpad show, move position center, resize set 1216 888''; + "${primeMod}+Shift+m" = ''[app_id="music"] scratchpad show, move position center, resize set 1006 657''; + "${primeMod}+Shift+v" = ''[app_id="sound"] scratchpad show, move position center, resize set 1000 800''; + "${primeMod}+Shift+Backslash" = ''[app_id="com.github.wwmm.easyeffects"] scratchpad show, move position center, resize set 1000 800''; }; }; } diff --git a/modules/home/sway/rules/default.nix b/modules/home/sway/rules/default.nix index 92f5eac..97019b3 100644 --- a/modules/home/sway/rules/default.nix +++ b/modules/home/sway/rules/default.nix @@ -1,141 +1,139 @@ { config, ... }: { - wayland.windowManager.sway = { - config = { - # Assign workspaces to config - workspaceOutputAssign = let - workspaces1 = [ - "${config.ws.w0}" - "${config.ws.w1}" - "${config.ws.w2}" - "${config.ws.w3}" - "${config.ws.w1a}" - "${config.ws.w2a}" - "${config.ws.w3a}" - ]; - workspaces2 = [ - "${config.ws.w4}" - "${config.ws.w5}" - "${config.ws.w6}" - "${config.ws.w4a}" - "${config.ws.w5a}" - "${config.ws.w6a}" - ]; - workspaces3 = [ - "${config.ws.w7}" - "${config.ws.w8}" - "${config.ws.w9}" - "${config.ws.w7a}" - "${config.ws.w8a}" - "${config.ws.w9a}" - ]; - assign = output: workspaces: - map (workspace: { - inherit workspace; - inherit output; - }) - workspaces; - in - (assign "${config.displays.d1}" workspaces1) ++ - (assign "${config.displays.d2}" workspaces2) ++ - (assign "${config.displays.d3}" workspaces3); + wayland.windowManager.sway.config = { + # Assign workspaces to config + workspaceOutputAssign = let + workspaces1 = [ + "${config.ws.w0}" + "${config.ws.w1}" + "${config.ws.w2}" + "${config.ws.w3}" + "${config.ws.w1a}" + "${config.ws.w2a}" + "${config.ws.w3a}" + ]; + workspaces2 = [ + "${config.ws.w4}" + "${config.ws.w5}" + "${config.ws.w6}" + "${config.ws.w4a}" + "${config.ws.w5a}" + "${config.ws.w6a}" + ]; + workspaces3 = [ + "${config.ws.w7}" + "${config.ws.w8}" + "${config.ws.w9}" + "${config.ws.w7a}" + "${config.ws.w8a}" + "${config.ws.w9a}" + ]; + assign = output: workspaces: + map (workspace: { + inherit workspace; + inherit output; + }) + workspaces; + in + (assign "${config.displays.d1}" workspaces1) ++ + (assign "${config.displays.d2}" workspaces2) ++ + (assign "${config.displays.d3}" workspaces3); - # Rules - defaultWorkspace = config.ws.w1; + # Rules + defaultWorkspace = config.ws.w1; - window = { - border = config.look.border.int; - titlebar = false; - commands = [ - # Scratchpads - { - criteria = { con_mark = "scratchpad"; }; - command = ''floating enable, sticky enable, move scratchpad, mark borderless''; - } - { - criteria = { app_id = "gotop"; }; - command = ''mark scratchpad''; - } - { - criteria = { app_id = "music"; }; - command = ''mark scratchpad''; - } - { - criteria = { app_id = "sound"; }; - command = ''mark scratchpad''; - } - { - criteria = { app_id = "com.github.wwmm.easyeffects"; }; - command = ''mark scratchpad, opacity 0.9''; - } + window = { + border = config.look.border.int; + titlebar = false; + commands = [ + # Scratchpads + { + criteria = { con_mark = "scratchpad"; }; + command = ''floating enable, sticky enable, move scratchpad, mark borderless''; + } + { + criteria = { app_id = "gotop"; }; + command = ''mark scratchpad''; + } + { + criteria = { app_id = "music"; }; + command = ''mark scratchpad''; + } + { + criteria = { app_id = "sound"; }; + command = ''mark scratchpad''; + } + { + criteria = { app_id = "com.github.wwmm.easyeffects"; }; + command = ''mark scratchpad, opacity 0.9''; + } - # Create a "Scratchpad" for apps I don't want to be seen when launched - { - criteria = { con_mark = "hiddenaway"; }; - command = ''move scratchpad''; - } + # Create a "Scratchpad" for apps I don't want to be seen when launched + { + criteria = { con_mark = "hiddenaway"; }; + command = ''move scratchpad''; + } - # Give apps that don't have them borders - { - criteria = { con_mark = "borderless"; }; - command = ''border pixel ${config.look.border.string}''; - } - { - criteria = { app_id = "com.github.wwmm.easyeffects"; }; - command = ''mark borderless''; - } - { - criteria = { class = "steam"; }; - command = ''mark borderless''; - } - { - criteria = { app_id = "swappy"; }; - command = ''mark borderless''; - } - { - criteria = { app_id = "virt-manager"; }; - command = ''mark borderless''; - } - { - criteria = { window_role = "pop-up"; }; - command = ''mark borderless''; - } + # Give apps that don't have them borders + { + criteria = { con_mark = "borderless"; }; + command = ''border pixel ${config.look.border.string}''; + } + { + criteria = { app_id = "com.github.wwmm.easyeffects"; }; + command = ''mark borderless''; + } + { + criteria = { class = "steam"; }; + command = ''mark borderless''; + } + { + criteria = { app_id = "swappy"; }; + command = ''mark borderless''; + } + { + criteria = { app_id = "virt-manager"; }; + command = ''mark borderless''; + } + { + criteria = { window_role = "pop-up"; }; + command = ''mark borderless''; + } - # Floating or fullscreen rules - { - criteria = { app_id = "float"; }; - command = ''floating enable''; - } - { - criteria = { title = "^GlobalShot"; }; - command = ''floating enable, fullscreen enable global''; - } - ]; - }; - assigns = { - # Broconfig.wsers - "${config.ws.w1}" = [{ app_id = "MainBrowser"; }]; - "${config.ws.w1a}" = [{ app_id = "AltBrowser"; }]; - - # Communication - "${config.ws.w3a}" = [{ class = "zoom"; }]; - "${config.ws.w7}" = [ - { app_id = "MiscBrowser"; } - { app_id = "vesktop"; } - { class = "vesktop"; } - ]; - "${config.ws.w8}" = [{ app_id = "org.gnome.Fractal"; }]; - "${config.ws.w9}" = [{ app_id = "thunderbird"; }]; - - # Etc - "${config.ws.w2}" = [ - { class = "steam"; } - {app_id = "heroic";} - ]; - "${config.ws.w2a}" = [{ app_id = "looking-glass-client"; }]; - "${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }]; - }; - focus.newWindow = "focus"; + # Floating or fullscreen rules + { + criteria = { app_id = "float"; }; + command = ''floating enable''; + } + { + criteria = { title = "^GlobalShot"; }; + command = ''floating enable, fullscreen enable global''; + } + ]; }; + assigns = { + # Broconfig.wsers + "${config.ws.w1}" = [{ app_id = "MainBrowser"; }]; + "${config.ws.w1a}" = [{ app_id = "AltBrowser"; }]; + + # Communication + "${config.ws.w3a}" = [{ class = "zoom"; }]; + "${config.ws.w7}" = [ + { app_id = "MiscBrowser"; } + { app_id = "vesktop"; } + { class = "vesktop"; } + ]; + "${config.ws.w8}" = [{ app_id = "org.gnome.Fractal"; }]; + "${config.ws.w9}" = [{ app_id = "thunderbird"; }]; + + # Etc + "${config.ws.w2}" = [ + { class = "steam"; } + {app_id = "heroic";} + ]; + "${config.ws.w2a}" = [{ app_id = "looking-glass-client"; }]; + "${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }]; + }; + focus.newWindow = "focus"; }; } diff --git a/modules/home/sway/theme/default.nix b/modules/home/sway/theme/default.nix index a62d77e..b49af85 100644 --- a/modules/home/sway/theme/default.nix +++ b/modules/home/sway/theme/default.nix @@ -1,45 +1,43 @@ { config, ... }: { - wayland.windowManager.sway = { - config = { - colors = { - focused = { - border = "#${config.look.colors.prime}"; - background = "#${config.look.colors.prime}"; - text = "#FFFFFF"; - indicator = "#${config.look.colors.actSplit}"; - childBorder = "#${config.look.colors.prime}"; - }; - focusedInactive = { - border = "#${config.look.colors.accent}"; - background = "#${config.look.colors.accent}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.split}"; - childBorder = "#${config.look.colors.accent}"; - }; - unfocused = { - border = "#${config.look.colors.dark}"; - background = "#${config.look.colors.dark}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.split}"; - childBorder = "#${config.look.colors.split}"; - }; - urgent = { - border = "#${config.look.colors.urgent}"; - background = "#${config.look.colors.urgent}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.urgent}"; - childBorder = "#${config.look.colors.urgent}"; - }; + wayland.windowManager.sway.config = { + colors = { + focused = { + border = "#${config.look.colors.prime}"; + background = "#${config.look.colors.prime}"; + text = "#FFFFFF"; + indicator = "#${config.look.colors.actSplit}"; + childBorder = "#${config.look.colors.prime}"; }; - fonts = { - names = ["${config.look.fonts.main}"]; - size = 10.5; + focusedInactive = { + border = "#${config.look.colors.accent}"; + background = "#${config.look.colors.accent}"; + text = "#${config.look.colors.text}"; + indicator = "#${config.look.colors.split}"; + childBorder = "#${config.look.colors.accent}"; }; - gaps = { - inner = 5; - smartGaps = true; + unfocused = { + border = "#${config.look.colors.dark}"; + background = "#${config.look.colors.dark}"; + text = "#${config.look.colors.text}"; + indicator = "#${config.look.colors.split}"; + childBorder = "#${config.look.colors.split}"; }; + urgent = { + border = "#${config.look.colors.urgent}"; + background = "#${config.look.colors.urgent}"; + text = "#${config.look.colors.text}"; + indicator = "#${config.look.colors.urgent}"; + childBorder = "#${config.look.colors.urgent}"; + }; + }; + fonts = { + names = ["${config.look.fonts.main}"]; + size = 10.5; + }; + gaps = { + inner = 5; + smartGaps = true; }; }; } diff --git a/modules/system/devices/networking/firewall/default.nix b/modules/system/devices/networking/firewall/default.nix index 567c539..3fb5214 100644 --- a/modules/system/devices/networking/firewall/default.nix +++ b/modules/system/devices/networking/firewall/default.nix @@ -16,10 +16,10 @@ allowPing = false; extraInputRules = '' ${lib.optionalString (!config.system.firewall.server.enable) '' - ip saddr { ${config.ips.server}, ${config.ips.wgSpan}.1 } accept comment "Accept Server" + ip saddr { ${config.ips.server}, 10.100.0.1 } accept comment "Accept Server" ''} ${lib.optionalString config.system.firewall.server.enable '' - ip saddr { ${config.ips.localSpan}.0/24, ${config.ips.wgSpan}.0/24 } tcp dport 2049 accept comment "Accept NFS" + ip saddr { ${config.ips.localSpan}.0/24, 10.100.0.0/24 } tcp dport 2049 accept comment "Accept NFS" ip saddr { ${config.ips.pc}, ${config.secrets.lunaIP}, ${config.secrets.cornIP} } tcp dport { 1935, 1945 } accept comment "Accept RTMP" ''} ''; @@ -34,7 +34,7 @@ chain PREROUTING { type nat hook prerouting priority dstnat; policy accept; tcp dport 2211 dnat to ${config.ips.pc}:22 comment "SSH to PC" - tcp dport 2222 dnat to ${config.ips.wgSpan}.19:22 comment "SSH to Oracle VM" + tcp dport 2222 dnat to 10.100.0.19:22 comment "SSH to Oracle VM" udp dport { 27005, 27015, 7777 } dnat to ${config.ips.pc} comment "PC Hosted Games" diff --git a/modules/system/devices/networking/wireguard/default.nix b/modules/system/devices/networking/wireguard/default.nix index 95d4be2..84ccf78 100644 --- a/modules/system/devices/networking/wireguard/default.nix +++ b/modules/system/devices/networking/wireguard/default.nix @@ -24,36 +24,36 @@ nat = { enable = config.system.wireguard.server.enable; externalInterface = "${config.ips.netInt}"; - internalInterfaces = [ "${config.ips.wgInt}" ]; + internalInterfaces = [ "wgs" ]; }; wireguard.interfaces = { - "wgc" = lib.mkIf config.system.wireguard.client.enable { + wgc = lib.mkIf config.system.wireguard.client.enable { # Define IP of client in per device config listenPort = 51820; privateKey = config.secrets.wgClientPriv; peers = [ { # NixOS Server publicKey = "qnOT/lXOJMaQgDUdXpyfGZB2IEyUouRje2m/bCe9ux8="; - allowedIPs = [ "${config.ips.wgSpan}.0/24" ]; + allowedIPs = [ "10.100.0.0/24" ]; endpoint = "sv.${config.domains.jim1}:51820"; persistentKeepalive = 25; } ]; }; - "wgs" = lib.mkIf config.system.wireguard.server.enable { - ips = [ "${config.ips.wgSpan}.1/24" ]; + wgs = lib.mkIf config.system.wireguard.server.enable { + ips = [ "10.100.0.1/24" ]; listenPort = 51820; privateKey = config.secrets.wgServerPriv; peers = [ { # NixOS publicKey = "OKUH/h6YSURI4vgeTZKQD15QsqaygdbTn1mAWzQp9S0="; - allowedIPs = [ "${config.ips.wgSpan}.16/28" ]; + allowedIPs = [ "10.100.0.16/28" ]; } { # Pixel 9 publicKey = "dPCtjm67adMZCnyL1O2L+uUOk0RbjA9T/tht1r+qcE4="; - allowedIPs = [ "${config.ips.wgSpan}.2/32" ]; + allowedIPs = [ "10.100.0.2/32" ]; } ]; }; diff --git a/variables/displays/default.nix b/variables/displays/default.nix index 1fe447a..2e8dda5 100644 --- a/variables/displays/default.nix +++ b/variables/displays/default.nix @@ -6,9 +6,10 @@ }; config.displays = { - d1 = "DP-3"; - d2 = "DP-1"; - d3 = "DP-2"; + d1 = "DP-2"; + d2 = "DP-3"; + d3 = "DP-1"; + d4 = "HDMI-A-1"; dI = "eDP-1"; }; } diff --git a/variables/ips/default.nix b/variables/ips/default.nix index 61f32e4..5efaa65 100644 --- a/variables/ips/default.nix +++ b/variables/ips/default.nix @@ -12,8 +12,5 @@ pc = "${localSpan}.3"; vm = "${localSpan}.4"; hx = "${localSpan}.70"; - - wgInt = "wg0"; - wgSpan = "10.100.0"; }; }