nix-files/hosts/common/programs/xdg-desktop-portal-wlr.nix

38 lines
1.5 KiB
Nix

{ config, pkgs, ... }:
let
cfg = config.sane.programs.xdg-desktop-portal-wlr;
in
{
sane.programs.xdg-desktop-portal-wlr = {
# rmDbusServices: because we care about ordering with the rest of the desktop, and don't want something else to auto-start this.
packageUnwrapped = pkgs.rmDbusServicesInPlace pkgs.xdg-desktop-portal-wlr;
sandbox.method = "bwrap"; # TODO:sandbox: untested
sandbox.whitelistAudio = true;
sandbox.whitelistDbus = [ "user" ]; # speak to main xdg-desktop-portal
sandbox.whitelistDri = true;
sandbox.whitelistWayland = true;
sandbox.extraPaths = [
# not sure why it needs these
"/sys/dev/char"
"/sys/devices"
];
fs.".config/xdg-desktop-portal/portals/wlr.portal".symlink.target =
"${cfg.package}/share/xdg-desktop-portal/portals/wlr.portal";
# XXX: overcome bug when manually setting `$XDG_DESKTOP_PORTAL_DIR`
# which causes *.portal files to be looked for in the toplevel instead of under `portals/`
fs.".config/xdg-desktop-portal/wlr.portal".symlink.target = "portals/wlr.portal";
services.xdg-desktop-portal-wlr = {
description = "xdg-desktop-portal-wlr backend (provides screenshot functionality for xdg-desktop-portal)";
depends = [ "pipewire" ]; # refuses to start without it
dependencyOf = [ "xdg-desktop-portal" ];
# partOf = [ "graphical-session" ];
command = "${cfg.package}/libexec/xdg-desktop-portal-wlr";
readiness.waitDbus = "org.freedesktop.impl.portal.desktop.wlr";
};
};
}