{ lib, pkgs, roc-lang, yemou-scripts, ... }: { nixpkgs.overlays = [ yemou-scripts.overlays.default (final: prev: { nautilus = prev.nautilus.overrideAttrs ( finalAttrs: prevAttrs: { postInstall = (prevAttrs.postInstall or "") + '' mkdir -p $out/share/xdg-desktop-portal/portals cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <> contrib/river.desktop ${prev.postInstall} ''; } ); # TODO: Move organize these some how extraPackages = with pkgs; [ bemenu chayang ffmpegthumbnailer kanshi lswt mako nautilus roc roc-lang-server scr slurp swaybg swayidle swaylock wlopm wlsunset xrandr # Needed to set xwayland primary output ]; }; # TODO: make a script that will start river using these targets properly # Will need a Desktop Entry, the script will first call call `river-session-pre` and then once river is started, # `river-session` will be called from inside river. When river terminates, both `river-session` and # `river-session-pre` will be un called systemd.user.targets = { "river-session-pre" = { description = "River compositor session"; bindsTo = [ "graphical-session-pre.target" ]; }; "river-session" = { description = "River compositor session"; bindsTo = [ "graphical-session.target" ]; wants = [ "graphical-session-pre.target" ]; after = [ "graphical-session-pre.target" ]; }; }; xdg.portal = { wlr = { enable = true; settings.screencast.max_fps = 60; }; extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; config.river = { default = lib.mkForce "gtk"; "org.freedesktop.impl.portal.FileChooser" = "nautilus"; "org.freedesktop.impl.portal.Inhibit" = "none"; "org.freedesktop.impl.portal.ScreenCast" = "wlr"; "org.freedesktop.impl.portal.Screenshot" = "wlr"; }; }; }