blob: ae51a86fcfe1ca24545b4531c55103dc669c6a53 [file] [log] [blame]
Skyler Greyc711df62022-05-21 01:06:15 +01001{ pkgs, lib, ... }: let
2 wlogoutConfig = [
3 {
4 label = "lock";
5 action = "swaylock -c 000000 -i ${./sway/lockscreen.png}";
6 text = "Lock";
7 keybind = "l";
8 }
9 {
10 label = "hibernate";
11 action = "swaylock -c 000000 -i ${./sway/lockscreen.png} -f && systemctl hibernate";
12 text = "Hibernate";
13 keybind = "h";
14 }
15 {
16 label = "logout";
17 action = "loginctl terminate-user $USER";
18 text = "Logout";
19 keybind = "e";
20 }
21 {
22 label = "shutdown";
23 action = "systemctl poweroff";
24 text = "Shutdown";
25 keybind = "s";
26 }
27 {
28 label = "suspend";
29 action = "swaylock -c 000000 -i ${./sway/lockscreen.png} -f && systemctl suspend";
30 text = "Suspend";
31 keybind = "u";
32 }
33 {
34 label = "reboot";
35 action = "systemctl reboot";
36 text = "Reboot";
37 keybind = "r";
38 }
39 ];
40 wlogoutConfigFile = writeText "wlogout-layout.layout" (builtins.toJSON wlogoutConfig);
41in {
Skyler Turnerdb486c92022-03-06 10:48:24 +000042 wayland.windowManager.sway = {
43 enable = true;
44 wrapperFeatures.gtk = true;
Skyler Turnerf2a88392022-03-06 21:08:15 +000045
Skyler Turnerbb530ed2022-03-15 14:04:39 +000046 config = rec {
Skyler Turnerf2a88392022-03-06 21:08:15 +000047 assigns = {};
48 bars = [];
49 colors = {};
Skyler Turnerfe471d32022-03-07 13:16:17 +000050 defaultWorkspace = null;
51 down = "j";
52 floating = {};
53 focus = {};
54 fonts = {};
55 gaps = {
Skyler Turner801a9a82022-03-07 13:40:41 +000056 inner = 10;
Skyler Turner89be0062022-03-07 21:37:09 +000057 top = -10;
Skyler Turner1bd708a2022-03-07 13:44:27 +000058 outer = 0;
Skyler Turnera076a832022-03-09 09:42:54 +000059 smartGaps = false;
Skyler Turnerfe471d32022-03-07 13:16:17 +000060 };
Skyler Turnerb1fef9e2022-03-07 13:39:14 +000061 input = {
Skyler Turnera9227fd2022-03-07 13:48:39 +000062 "type:touchpad" = {
Skyler Turnerf277cf62022-03-07 13:49:14 +000063 dwt = "enabled";
64 tap = "enabled";
65 natural_scroll = "enabled";
Skyler Turner42bc3662022-03-09 13:33:14 +000066 middle_emulation = "enabled";
Skyler Turnera9227fd2022-03-07 13:48:39 +000067 events = "disabled_on_external_mouse";
68 };
69 "type:keyboard" = {
70 xkb_layout = "gb";
71 };
Skyler Turner6dceae22022-03-16 08:59:08 +000072 "type:tablet_tool" = {
Skyler Turner85299c42022-03-16 08:55:33 +000073 map_to_output = "eDP-1";
74 };
Skyler Turnerb1fef9e2022-03-07 13:39:14 +000075 };
Skyler Turnerb8a61992022-03-15 10:32:51 +000076 keybindings = lib.mkOptionDefault {
Skyler Greyc711df62022-05-21 01:06:15 +010077 "${modifier}+l" = "exec /usr/bin/env wlogout -c 5 -r 5 -p layer-shell -l ${wlogoutConfigFile}"; # "exec /usr/bin/env swaylock -c 000000";
Skyler Turnerbb530ed2022-03-15 14:04:39 +000078 "XF86AudioRaiseVolume" = "exec volumectl -u up";
79 "XF86AudioLowerVolume" = "exec volumectl -u down";
80 "XF86AudioMute" = "exec volumectl toggle-mute";
81 "XF86AudioMicMute" = "exec volumectl -m toggle-mute";
82 "XF86MonBrightnessUp" = "exec lightctl up";
83 "XF86MonBrightnessDown" = "exec lightctl down";
Skyler Grey2826c142022-05-20 14:18:06 +010084 "${modifier}+Shift+s" = "exec grim -g \"$(slurp)\" - | tee ~/Screenshots/\"$(date --rfc-3339=seconds)\".png | wl-copy";
Skyler Turnerb8a61992022-03-15 10:32:51 +000085 };
Skyler Turnerb1fef9e2022-03-07 13:39:14 +000086 keycodebindings = {};
87 left = "h";
88 menu = "/usr/bin/env rofi -show combi";
89 modes = {
90 resize = {
91 Down = "resize grow height 10 px";
92 Escape = "mode default";
93 Left = "resize shrink width 10 px";
94 Return = "mode default";
95 Right = "resize grow width 10 px";
96 Up = "resize shrink height 10 px";
97 h = "resize shrink width 10 px";
98 j = "resize grow height 10 px";
99 k = "resize shrink height 10 px";
100 l = "resize grow width 10 px";
101 };
102 };
103 modifier = "Mod4";
104 output = {
105 HDMI-A-2 = {
106 resolution = "3840x2160";
Skyler Turnerc3ab3c22022-04-20 09:15:08 +0100107 #position = "1920,0";
108 position = "0,0";
Skyler Turnerb1fef9e2022-03-07 13:39:14 +0000109 };
110 eDP-1 = {
111 resolution = "1920x1080";
Skyler Turnerc3ab3c22022-04-20 09:15:08 +0100112 #position = "0,1522";
113 position = "0,2160";
Skyler Turnerb1fef9e2022-03-07 13:39:14 +0000114 };
Skyler Turnerc6af35b2022-03-09 00:16:45 +0000115 "*" = {
Skyler Turner202e73d2022-03-09 00:23:39 +0000116 bg = "${./sway/background.png} fill";
Skyler Turnerc6af35b2022-03-09 00:16:45 +0000117 };
Skyler Turnerb1fef9e2022-03-07 13:39:14 +0000118 };
119 right = "l";
120 seat = {
121 "*" = {
122 hide_cursor = "when-typing enable";
123 };
124 };
Skyler Turnerb254c9d2022-05-14 00:24:37 +0100125 startup = [
126 { command = "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK"; }
127 ];
Skyler Grey63786912022-05-20 11:31:40 +0100128 terminal = "kitty";
Skyler Turnerb1fef9e2022-03-07 13:39:14 +0000129 up = "k";
130 window = {};
131 workspaceAutoBackAndForth = true;
132 workspaceLayout = "default";
133 workspaceOutputAssign = [];
134 };
135
136 extraSessionCommands = ''
137 export SDL_VIDEODRIVER=wayland
138 # needs qt5.qtwayland in systemPackages
139 export QT_QPA_PLATFORM=wayland
140 export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
141 # Fix for some Java AWT applications (e.g. Android Studio),
142 # use this if they aren't displayed properly:
143 export _JAVA_AWT_WM_NONREPARENTING=1
144 '';
145
146 swaynag = {
Skyler Turner36510212022-03-07 23:13:14 +0000147 enable = true;
148 settings = {
Skyler Turnerd0a8f5c2022-03-07 23:16:01 +0000149 "<config>" = {
150 background = "#ffffff99";
151 border-bottom = "#00000000";
152 button-background = "#ffffffcc";
Skyler Turner4ea60622022-03-07 23:24:22 +0000153 button-padding = 10;
Skyler Turnerd0a8f5c2022-03-07 23:16:01 +0000154 button-border-size = 0;
155 };
Skyler Turner7b341db2022-03-07 23:17:23 +0000156
157 warning = {
Skyler Turnere957a372022-03-07 23:18:27 +0000158 background = "#ffffff99";
Skyler Turner6222f752022-03-07 23:21:23 +0000159 border-bottom = "#00000000";
Skyler Turnerf24ef5e2022-03-07 23:26:30 +0000160 button-background = "#ffff00";
161 };
162
163 error = {
164 background = "#ffffff99";
165 border-bottom = "#00000000";
Skyler Turnere609f0a2022-03-07 23:25:17 +0000166 button-background = "#ff0000";
Skyler Turner7b341db2022-03-07 23:17:23 +0000167 };
Skyler Turnerf24ef5e2022-03-07 23:26:30 +0000168
169 green = {
170 background = "#ffffff99";
171 border-bottom = "#00000000";
Skyler Turnerc4d1c0b2022-03-07 23:28:58 +0000172 button-background = "#00b300";
Skyler Turnerf24ef5e2022-03-07 23:26:30 +0000173 };
174
175 blue = {
176 background = "#ffffff99";
177 border-bottom = "#00000000";
Skyler Turnerc4d1c0b2022-03-07 23:28:58 +0000178 button-background = "#0000ff";
Skyler Turnerf24ef5e2022-03-07 23:26:30 +0000179 };
Skyler Turner36510212022-03-07 23:13:14 +0000180 };
Skyler Turner07eb3d12022-03-06 21:08:29 +0000181 };
Skyler Turnereda726a2022-03-07 00:23:17 +0000182
183 systemdIntegration = true;
Skyler Turnerdb486c92022-03-06 10:48:24 +0000184 };
185
186 home.packages = with pkgs; [
187 swaylock
188 swayidle
189 wl-clipboard
Skyler Turnerbb530ed2022-03-15 14:04:39 +0000190 avizo
191 pamixer
192 brightnessctl
Skyler Turner9dfac612022-03-06 10:48:57 +0000193 ];
Skyler Turnerdb486c92022-03-06 10:48:24 +0000194
Skyler Turnerd3b70682022-03-06 23:19:45 +0000195 programs.zsh.profileExtra = ''
196 if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
197 exec systemd-cat -t sway sway
198 fi
199 '';
Skyler Turnerbb530ed2022-03-15 14:04:39 +0000200
201 systemd.user.services.avizo = {
Skyler Turner7b7b73d2022-03-15 14:05:20 +0000202 Install.WantedBy = [ "graphical-session.target" ];
Skyler Turnerbb530ed2022-03-15 14:04:39 +0000203 Service = {
204 ExecReload = "kill -SIGUSR2 \$MAINPID";
205 ExecStart = "${pkgs.avizo}/bin/avizo-service";
206 KillMode = "mixed";
207 Restart = "on-failure";
208 };
209 Unit = {
210 After = "graphical-session.target";
211 Description = "Notification daemon to show volume & brightness changes";
212 Documentation = "N/A (src/apps/personal/sway.nix)";
213 PartOf= "graphical-session.target";
214 };
215 };
Skyler Turnerc6af35b2022-03-09 00:16:45 +0000216}
Skyler Turnerbb530ed2022-03-15 14:04:39 +0000217