{ pkgs, ... }: let dbus-sway-environment = pkgs.writeTextFile { name = "dbus-sway-environment"; destination = "/bin/dbus-sway-environment"; executable = true; text = '' dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr ''; }; configure-gtk = pkgs.writeTextFile { name = "configure-gtk"; destination = "/bin/configure-gtk"; executable = true; text = let schema = pkgs.gsettings-desktop-schemas; datadir = "${schema}/share/gsettings-schemas/${schema.name}"; in '' export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS gnome_schema=org.gnome.desktop.interface gsettings set $gnome_schema gtk-theme 'Dracula' ''; }; in { environment.systemPackages = with pkgs; [ alsaUtils dracula-theme dbus-sway-environment configure-gtk firefox foot git glib gnome.seahorse grim htop lisgd mako networkmanagerapplet pavucontrol pcmanfm pinentry squeekboard sway-launcher-desktop swayidle swaylock unzip waybar wayland wl-clipboard wofi wtype ]; virtualisation.waydroid.enable = true; services.dbus.enable = true; xdg.portal = { enable = true; wlr.enable = true; # gtk portal needed to make gtk apps happy extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; programs.sway = { enable = true; wrapperFeatures.gtk = true; }; environment.etc = { "sway/config".text = builtins.readFile ./sway.conf; # "wofi/style.css".text = builtins.readFile ./wofi.css; # "xdg/waybar/config".text = builtins.readFile ./waybar.conf; # "xdg/waybar/style.css".text = builtins.readFile ./waybar.css; "xdg/foot/foot.ini".text = builtins.readFile ./foot.ini; }; }