{ config, pkgs, lib, ... }: let launch_emacs = pkgs.writeScript "emacsclient-or-start" '' #!${pkgs.bash}/bin/bash emacsclient --create-frame --alternate-editor="" ''; in { imports = [ ./wayland.nix ]; services.displayManager.sessionPackages = [ pkgs.dwl ]; #services.gnome.gnome-keyring.enable = lib.mkDefault true; systemd.packages = [ pkgs.dwl ]; nixpkgs.overlays = [ (final: prev: { wlroots_0_19 = prev.wlroots_0_18.overrideAttrs (old: { src = final.fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "wlroots"; repo = "wlroots"; rev = "fa97f7f1f0b27b6dbcf4636b892a6bb52a93d1e4"; # 0.19-prev # 25-01-25 hash = "sha256-zUAELpyYEOtPaVMu9LMxTER4jLzQEnE3FNhYFOsOyp4="; }; }); dwl = (prev.dwl.override { wlroots = final.wlroots_0_19; }).overrideAttrs (old: let dwl-patches = pkgs.fetchgit { url = "https://codeberg.org/dwl/dwl-patches.git"; rev = "4a869141fa643d9be792a9aa44a42cf7f7f882ad"; hash = "sha256-xlaK9xMrc+KDNecsyByRIxXmPEZ2dmP4FQ0bMojsyws="; }; patches = let dwl-patch = p: "${dwl-patches}/patches/${p}/${p}.patch"; in [ (dwl-patch "ipc") (dwl-patch "restore-monitor") (dwl-patch "regexrules") (dwl-patch "autostart") ]; in { version = "21-09-2024"; src = final.fetchFromGitea { domain = "codeberg.org"; owner = "dwl"; repo = "dwl"; rev = "d1c2f434983562bd7d2ace15ab0c05155be603bc"; hash = "sha256-SpfjQfzvbpDiihziyKGPoBwvp3evgCQQhhjldAE/MwY="; }; patches = (old.patches or []) ++ patches; postPatch = (old.postPatch or "") + '' export termcmd=${pkgs.foot}/bin/foot export editcmd=${launch_emacs} export menucmd=${pkgs.fuzzel}/bin/fuzzel export barcmd=${pkgs.waybar}/bin/waybar export playcmd=${pkgs.writeScript "playerctl-play-pause" '' #!${pkgs.bash}/bin/bash ${pkgs.playerctl}/bin/playerctl play-pause ''} export scrncmd=${pkgs.writeScript "screenshot-region" '' #!${pkgs.bash}/bin/bash ${pkgs.slurp}/bin/slurp | ${pkgs.grim}/bin/grim -g - - | ${pkgs.wl-clipboard}/bin/wl-copy ''} substituteAll ${./dwl/config.def.h} ./config.def.h ''; postInstall = '' chmod ugo+x $out/share/wayland-sessions/dwl.desktop ''; passthru.providedSessions = ["dwl"]; }); }) ]; environment.sessionVariables = { # Breaks WebCord # NIXOS_OZONE_WL=1; WLR_NO_HARDWARE_CURSORS=1; SDL_VIDEODRIVER="wayland"; QT_QPA_PLATFORM="wayland-egl"; QT_WAYLAND_DISABLE_WINDOW_DECORATIONS="1"; __JAVA_AWT_WM_NONREPARENTING=1; GTK_THEME="Adwaita-dark"; }; xdg.portal = { enable = lib.mkDefault true; configPackages = [ pkgs.dwl ]; # Recommended by upstream, required for screencast support # https://github.com/YaLTeR/niri/wiki/Important-Software#portals extraPortals = [ #pkgs.xdg-desktop-portal-gnome #pkgs.xdg-desktop-portal-gtk ]; wlr.enable = true; }; security = { polkit.enable = true; pam.services.swaylock = { }; }; services.graphical-desktop.enable = true; services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true; environment.systemPackages = with pkgs; [ dwl waybar foot pwvucontrol ]; }