{ config, lib, pkgs, ... }: with lib; let cfg = config.machine; ifelse = a: b: c: if a then b else c; in mkIf (elem "desktop" cfg.services) { programs.sway = mkIf (elem "sway" cfg.desktop.wms) # (import ./desktop/sway.nix { inherit pkgs; }); { enable = true; extraPackages = with pkgs; [ file i3status dmenu qt5.qtwayland grim slurp swaylock swayidle light mako wl-clipboard wf-recorder ]; extraSessionCommands = '' export GDK_BACKEND=wayland export CLUTTER_BACKEND=wayland export SDL_VIDEODRIVER=wayland # needs qt5.qtwayland in systemPackages export QT_QPA_PLATFORM=wayland-egl export QT_WAYLAND_FORCE_DPI=physical 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 ''; }; services.gvfs.enable = true; environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.gvfs}/lib/gio/modules" ]; services.xserver = { enable = !(elem "sway" cfg.desktop.wms); layout = "de"; videoDrivers = [ "intel" ]; windowManager = mkIf (cfg.desktop.wms != []) { i3 = mkIf (elem "i3" cfg.desktop.wms) (import ./desktop/i3.nix { inherit pkgs; }); default = elemAt cfg.desktop.wms 0; }; # add switch for Lilim multitouch = { enable = true; invertScroll = true; }; libinput = { enable = true; tapping = true; disableWhileTyping = false; naturalScrolling = false; horizontalScrolling = true; }; # Still waiting for streamlined dpi settings... will write a propper solution once it's done >.< # see https://github.com/NixOS/nixpkgs/pull/25892 dpi = ifelse (cfg.hostName == "Lilim") 192 null; }; }