Created
October 22, 2023 03:44
-
-
Save xlfe/d83c7f7028f604e12f8177ad300a1eaf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ config, pkgs, lib, ... }: | |
let | |
# bash script to let dbus know about important env variables and | |
# propagate them to relevent services run at the end of sway config | |
# see | |
# https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist | |
# note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts | |
# some user services to make sure they have the correct environment variables | |
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 | |
''; | |
}; | |
# currently, there is some friction between sway and gtk: | |
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland | |
# the suggested way to set gtk settings is with gsettings | |
# for gsettings to work, we need to tell it where the schemas are | |
# using the XDG_DATA_DIR environment variable | |
# run at the end of sway config | |
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; [ | |
alacritty # gpu accelerated terminal | |
dbus-sway-environment | |
configure-gtk | |
wayland | |
xdg-utils # for opening default programs when clicking links | |
glib # gsettings | |
dracula-theme # gtk theme | |
gnome3.adwaita-icon-theme # default gnome cursors | |
swaylock | |
swayidle | |
grim # screenshot functionality | |
slurp # screenshot functionality | |
wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout | |
bemenu # wayland clone of dmenu | |
mako # notification system developed by swaywm maintainer | |
wdisplays # tool to configure displays | |
]; | |
services.pipewire = { | |
enable = true; | |
alsa.enable = true; | |
pulse.enable = true; | |
}; | |
# xdg-desktop-portal works by exposing a series of D-Bus interfaces | |
# known as portals under a well-known name | |
# (org.freedesktop.portal.Desktop) and object path | |
# (/org/freedesktop/portal/desktop). | |
# The portal interfaces include APIs for file access, opening URIs, | |
# printing and others. | |
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 ]; | |
}; | |
# enable sway window manager | |
programs.sway = { | |
enable = true; | |
wrapperFeatures.gtk = true; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment