Install sway as our desktop environment
- Sway is a wayland tiling window manager
- We used it on our last setup, and I liked using it
- I'm using a slimmed-down version of last time's config, excluding anything we
don't have on this system but keeping everything else
diff --git a/modules/sway.nix b/modules/sway.nix
new file mode 100644
index 0000000..a5415df
--- /dev/null
+++ b/modules/sway.nix
@@ -0,0 +1,155 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ home = {
+ wayland.windowManager.sway = {
+ enable = true;
+ wrapperFeatures.gtk = true;
+
+ config = rec {
+ assigns = {};
+ bars = [];
+ colors = {};
+ defaultWorkspace = null;
+ down = "j";
+ floating = {};
+ focus = {};
+ fonts = {};
+ gaps = {
+ inner = 10;
+ top = -10;
+ outer = 0;
+ smartGaps = false;
+ };
+ input = {
+ "type:touchpad" = {
+ dwt = "enabled";
+ tap = "enabled";
+ natural_scroll = "enabled";
+ middle_emulation = "enabled";
+ events = "disabled_on_external_mouse";
+ };
+ "type:keyboard" = {
+ xkb_layout = "gb";
+ };
+ "type:tablet_tool" = {
+ map_to_output = "eDP-1";
+ };
+ };
+ keybindings = lib.mkOptionDefault {
+ "${modifier}+g" = "sticky toggle";
+ "${modifier}+k" = "exec wl-copy -c";
+ "${modifier}+f" = "maximize toggle";
+ };
+ keycodebindings = {};
+ left = "h";
+ modes = {
+ resize = {
+ Down = "resize grow height 10 px";
+ Escape = "mode default";
+ Left = "resize shrink width 10 px";
+ Return = "mode default";
+ Right = "resize grow width 10 px";
+ Up = "resize shrink height 10 px";
+ h = "resize shrink width 10 px";
+ j = "resize grow height 10 px";
+ k = "resize shrink height 10 px";
+ l = "resize grow width 10 px";
+ };
+ };
+ modifier = "Mod4";
+ output = {
+ HDMI-A-2 = {
+ resolution = "3840x2160";
+ bg = "#FFD0F9 solid_color";
+ position = "0,0";
+ };
+ eDP-1 = {
+ resolution = "1920x1080";
+ position = "0,2160";
+ };
+ "*" = {
+ };
+ };
+ right = "l";
+ seat = {
+ "*" = {
+ hide_cursor = "when-typing enable";
+ };
+ };
+ startup = [
+ {command = "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK";}
+ ];
+ terminal = "${pkgs.kitty}/bin/kitty";
+ up = "k";
+ window = {};
+ workspaceAutoBackAndForth = true;
+ workspaceLayout = "default";
+ workspaceOutputAssign = [];
+ };
+
+ extraSessionCommands = ''
+ export WLR_NO_HARDWARE_CURSORS=1
+ # TODO: Check if above is still needed w/ nvidia card enabled
+ export SDL_VIDEODRIVER=wayland
+ # needs qt5.qtwayland in systemPackages
+ export QT_QPA_PLATFORM=wayland
+ export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
+ # Fix for some Java AWT applications (e.g. Android Studio),
+ # use this if they aren't displayed properly:
+ export _JAVA_AWT_WM_NONREPARENTING=1
+ '';
+
+ swaynag = {
+ enable = false;
+ settings = {
+ "<config>" = {
+ background = "#ffffff99";
+ border-bottom = "#00000000";
+ button-background = "#ffffffcc";
+ button-padding = 10;
+ button-border-size = 0;
+ };
+
+ warning = {
+ background = "#ffffff99";
+ border-bottom = "#00000000";
+ button-background = "#ffff00";
+ };
+
+ error = {
+ background = "#ffffff99";
+ border-bottom = "#00000000";
+ button-background = "#ff0000";
+ };
+
+ green = {
+ background = "#ffffff99";
+ border-bottom = "#00000000";
+ button-background = "#00b300";
+ };
+
+ blue = {
+ background = "#ffffff99";
+ border-bottom = "#00000000";
+ button-background = "#0000ff";
+ };
+ };
+ };
+
+ systemdIntegration = true;
+ };
+
+ home.packages = with pkgs; [
+ wl-clipboard
+ ];
+
+ programs.zsh.profileExtra = ''
+ if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
+ exec systemd-cat -t sway sway --unsupported-gpu
+ fi
+ '';
+ };
+}