{ config, pkgs, lib, ... }: { home.sessionVariables = { XDG_CURRENT_DESKTOP = "sway"; XDG_SESSION_TYPE = "wayland"; WLR_DRM_DEVICES = "/dev/dri/card0"; }; home.packages = with pkgs; [ grim slurp wl-clipboard jq wofi wmctrl ]; programs.zsh.profileExtra = '' # If running from tty1 start sway if [ "$(tty)" = "/dev/tty1" ]; then systemctl --user unset-environment \ SWAYSOCK \ I3SOCK \ WAYLAND_DISPLAY \ DISPLAY \ IN_NIX_SHELL \ __HM_SESS_VARS_SOURCED \ GPG_TTY \ NIX_PATH \ SHLVL exec env --unset=SHLVL systemd-cat -t sway -- sway fi ''; programs.mako = { enable = true; defaultTimeout = 3000; }; wayland.windowManager.sway = { enable = true; config = let terminal = "${pkgs.kitty}/bin/kitty"; menu = "${pkgs.wofi}/bin/wofi -idbt ${pkgs.kitty}/bin/kitty -p '' -W 25%"; cfg = config.wayland.windowManager.sway.config; in { bars = [{ command = "${pkgs.waybar}/bin/waybar"; }]; input = { "*" = { xkb_layout = "gb"; }; }; fonts = { names = [ "Comic Code" ]; size = 18.0; }; modifier = "Mod1"; terminal = "${pkgs.kitty}/bin/kitty"; startup = [ { command = "systemctl --user restart mako"; always = true; } ]; window = { border = 1; titlebar = true; }; keybindings = { "${cfg.modifier}+Return" = "exec ${cfg.terminal}"; "${cfg.modifier}+Left" = "focus left"; "${cfg.modifier}+Down" = "focus down"; "${cfg.modifier}+Up" = "focus up"; "${cfg.modifier}+Right" = "focus right"; "${cfg.modifier}+Shift+Left" = "move left"; "${cfg.modifier}+Shift+Down" = "move down"; "${cfg.modifier}+Shift+Up" = "move up"; "${cfg.modifier}+Shift+Right" = "move right"; "${cfg.modifier}+Shift+space" = "floating toggle"; "${cfg.modifier}+space" = "focus mode_toggle"; "XF86AudioRaiseVolume" = "exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5%"; "XF86AudioLowerVolume" = "exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5%"; "XF86AudioMute" = "exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle"; "XF86AudioMicMute" = "exec pactl set-source-mute $(pacmd list-sources |awk '/* index:/{print $3}') toggle"; "XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 5"; "XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 5"; "Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy"; "Shift+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy"; "${cfg.modifier}+d" = "exec ${cfg.menu}"; "${cfg.modifier}+f" = "fullscreen"; "${cfg.modifier}+Shift+q" = "kill"; "${cfg.modifier}+Shift+c" = "reload"; "${cfg.modifier}+r" = "mode resize"; } // (lib.foldl lib.recursiveUpdate {} (map (workspace: { "${cfg.modifier}+${workspace}" = "workspace ${workspace}"; "${cfg.modifier}+Shift+${workspace}" = "move container to workspace ${workspace}"; }) [ "1" "2" "3" "4" "5" "6" "7" "8" "9" ])); }; wrapperFeatures.gtk = true; extraConfig = '' seat seat0 xcursor_theme breeze_cursors 20 bindswitch --reload --locked lid:on output eDP-1 disable bindswitch --reload --locked lid:off output eDP-1 enable ''; }; programs.waybar = { enable = true; style = '' * { font-family: "Comic Code"; font-size: 20px; } ''; settings = [{ modules-left = [ "sway/workspaces" "sway/mode" ]; modules-center = [ "sway/window" ]; modules-right = [ "pulseaudio" "battery" "clock" "tray" ]; }]; }; }