add zoom screen cast fix

This commit is contained in:
Nate Anderson 2026-02-27 16:43:12 -07:00
parent acbdd1b366
commit 2817cb727d
10 changed files with 59 additions and 41 deletions

6
flake.lock generated
View File

@ -200,11 +200,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1771903837, "lastModified": 1772047000,
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=", "narHash": "sha256-7DaQVv4R97cii/Qdfy4tmDZMB2xxtyIvNGSwXBBhSmo=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951", "rev": "1267bb4920d0fc06ea916734c11b0bf004bbe17e",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -37,7 +37,16 @@ in
nixpkgs.config.allowUnfree = config.niriwm.useNonFree; nixpkgs.config.allowUnfree = config.niriwm.useNonFree;
# Portal setup is handled by programs.niri.enable (niri-portals.conf) # Portal config: programs.niri.enable adds xdg-desktop-portal-gnome
# and niri-portals.conf via configPackages, but the portal daemon
# doesn't reliably pick up configPackages files. Setting config
# explicitly ensures ScreenCast routes to the GNOME portal.
xdg.portal.config.niri = {
default = [ "gnome" "gtk" ];
"org.freedesktop.impl.portal.Access" = [ "gtk" ];
"org.freedesktop.impl.portal.Notification" = [ "gtk" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
xdg.sounds.enable = true; xdg.sounds.enable = true;
### ###
@ -76,8 +85,7 @@ in
environment.sessionVariables = { environment.sessionVariables = {
# use wayland # use wayland
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
T_QPA_PLATFORM = "wayland"; # QT_QPA_PLATFORM and GDK_BACKEND must NOT be set - they break the screencast portal
# GDK_BACKEND must NOT be set globally - it breaks the screencast portal
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View File

@ -17,11 +17,9 @@
# because we manage the niri config through dotfiles. # because we manage the niri config through dotfiles.
# The system-level module enables niri via programs.niri.enable # The system-level module enables niri via programs.niri.enable
# Import systemd variables for niri # Niri sets WAYLAND_DISPLAY and XDG_CURRENT_DESKTOP automatically.
systemd.user.sessionVariables = { # Manually overriding session vars conflicts with xdg-desktop-portal-gnome
WAYLAND_DISPLAY = "wayland-1"; # screencasting (breaks Zoom screen sharing).
XDG_CURRENT_DESKTOP = "niri";
};
# Cursor is managed by Stylix (stylix.cursor in frame12/default.nix) # Cursor is managed by Stylix (stylix.cursor in frame12/default.nix)

View File

@ -40,7 +40,16 @@ in
nixpkgs.config.allowUnfree = config.niriwm.useNonFree; nixpkgs.config.allowUnfree = config.niriwm.useNonFree;
# Portal setup is handled by programs.niri.enable (niri-portals.conf) # Portal config: programs.niri.enable adds xdg-desktop-portal-gnome
# and niri-portals.conf via configPackages, but the portal daemon
# doesn't reliably pick up configPackages files. Setting config
# explicitly ensures ScreenCast routes to the GNOME portal.
xdg.portal.config.niri = {
default = [ "gnome" "gtk" ];
"org.freedesktop.impl.portal.Access" = [ "gtk" ];
"org.freedesktop.impl.portal.Notification" = [ "gtk" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
xdg.sounds.enable = true; xdg.sounds.enable = true;
### ###
@ -75,8 +84,7 @@ in
environment.sessionVariables = { environment.sessionVariables = {
# use wayland # use wayland
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
T_QPA_PLATFORM = "wayland"; # QT_QPA_PLATFORM and GDK_BACKEND must NOT be set - they break the screencast portal
# GDK_BACKEND must NOT be set globally - it breaks the screencast portal
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View File

@ -17,11 +17,9 @@
# because we manage the niri config through dotfiles. # because we manage the niri config through dotfiles.
# The system-level module enables niri via programs.niri.enable # The system-level module enables niri via programs.niri.enable
# Import systemd variables for niri # Niri sets WAYLAND_DISPLAY and XDG_CURRENT_DESKTOP automatically.
systemd.user.sessionVariables = { # Manually overriding session vars conflicts with xdg-desktop-portal-gnome
WAYLAND_DISPLAY = "wayland-1"; # screencasting (breaks Zoom screen sharing).
XDG_CURRENT_DESKTOP = "niri";
};
# Cursor is managed by Stylix (stylix.cursor in jaci/default.nix) # Cursor is managed by Stylix (stylix.cursor in jaci/default.nix)

View File

@ -28,7 +28,16 @@
nixpkgs.config.allowUnfree = config.niriwm.useNonFree; nixpkgs.config.allowUnfree = config.niriwm.useNonFree;
# Portal setup is handled by programs.niri.enable (niri-portals.conf) # Portal config: programs.niri.enable adds xdg-desktop-portal-gnome
# and niri-portals.conf via configPackages, but the portal daemon
# doesn't reliably pick up configPackages files. Setting config
# explicitly ensures ScreenCast routes to the GNOME portal.
xdg.portal.config.niri = {
default = [ "gnome" "gtk" ];
"org.freedesktop.impl.portal.Access" = [ "gtk" ];
"org.freedesktop.impl.portal.Notification" = [ "gtk" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
xdg.sounds.enable = true; xdg.sounds.enable = true;
### ###
@ -71,8 +80,7 @@
# use wayland # use wayland
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
FIREFOX_USE_SYSTEM_THEME = "true"; FIREFOX_USE_SYSTEM_THEME = "true";
T_QPA_PLATFORM = "wayland"; # QT_QPA_PLATFORM and GDK_BACKEND must NOT be set - they break the screencast portal
# GDK_BACKEND must NOT be set globally - it breaks the screencast portal
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View File

@ -17,11 +17,9 @@
# because we manage the niri config through dotfiles. # because we manage the niri config through dotfiles.
# The system-level module enables niri via programs.niri.enable # The system-level module enables niri via programs.niri.enable
# Import systemd variables for niri # Niri sets WAYLAND_DISPLAY and XDG_CURRENT_DESKTOP automatically.
systemd.user.sessionVariables = { # Manually overriding session vars conflicts with xdg-desktop-portal-gnome
WAYLAND_DISPLAY = "wayland-1"; # screencasting (breaks Zoom screen sharing).
XDG_CURRENT_DESKTOP = "niri";
};
# Cursor is managed by Stylix (stylix.cursor in nate-work/default.nix) # Cursor is managed by Stylix (stylix.cursor in nate-work/default.nix)

View File

@ -41,7 +41,16 @@ in
nixpkgs.config.allowUnfree = config.niriwm.useNonFree; nixpkgs.config.allowUnfree = config.niriwm.useNonFree;
# Portal setup is handled by programs.niri.enable (niri-portals.conf) # Portal config: programs.niri.enable adds xdg-desktop-portal-gnome
# and niri-portals.conf via configPackages, but the portal daemon
# doesn't reliably pick up configPackages files. Setting config
# explicitly ensures ScreenCast routes to the GNOME portal.
xdg.portal.config.niri = {
default = [ "gnome" "gtk" ];
"org.freedesktop.impl.portal.Access" = [ "gtk" ];
"org.freedesktop.impl.portal.Notification" = [ "gtk" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
xdg.sounds.enable = true; xdg.sounds.enable = true;
### ###
@ -82,8 +91,7 @@ in
# use wayland # use wayland
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
FIREFOX_USE_SYSTEM_THEME = "true"; FIREFOX_USE_SYSTEM_THEME = "true";
T_QPA_PLATFORM = "wayland"; # QT_QPA_PLATFORM and GDK_BACKEND must NOT be set - they break the screencast portal
# GDK_BACKEND must NOT be set globally - it breaks the screencast portal
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View File

@ -17,11 +17,9 @@
# because we manage the niri config through dotfiles. # because we manage the niri config through dotfiles.
# The system-level module enables niri via programs.niri.enable # The system-level module enables niri via programs.niri.enable
# Import systemd variables for niri # Niri sets WAYLAND_DISPLAY and XDG_CURRENT_DESKTOP automatically.
systemd.user.sessionVariables = { # Manually overriding session vars conflicts with xdg-desktop-portal-gnome
WAYLAND_DISPLAY = "wayland-1"; # screencasting (breaks Zoom screen sharing).
XDG_CURRENT_DESKTOP = "niri";
};
# Cursor is managed by Stylix (stylix.cursor in nate/default.nix) # Cursor is managed by Stylix (stylix.cursor in nate/default.nix)

View File

@ -31,7 +31,6 @@ in
wofi.enable = lib.mkEnableOption "enable wofi (application launcher)"; wofi.enable = lib.mkEnableOption "enable wofi (application launcher)";
keepassxc.enable = lib.mkEnableOption "enable keepassxc (password manager)"; keepassxc.enable = lib.mkEnableOption "enable keepassxc (password manager)";
opencode.enable = lib.mkEnableOption "enable opencode (AI coding assistant)"; opencode.enable = lib.mkEnableOption "enable opencode (AI coding assistant)";
adb.enable = lib.mkEnableOption "enable adb";
# Apps (pass-through to underlying modules) # Apps (pass-through to underlying modules)
firefox.enable = lib.mkEnableOption "enable firefox (web browser)"; firefox.enable = lib.mkEnableOption "enable firefox (web browser)";
@ -79,7 +78,6 @@ in
helix.enable = lib.mkDefault true; helix.enable = lib.mkDefault true;
stylePreview.enable = lib.mkDefault true; stylePreview.enable = lib.mkDefault true;
json2nix.enable = lib.mkDefault true; json2nix.enable = lib.mkDefault true;
adb.enable = lib.mkDefault true;
}; };
}) })
@ -107,10 +105,6 @@ in
programs.wofi.enable = true; programs.wofi.enable = true;
}) })
(lib.mkIf cfg.adb.enable {
programs.adb.enable = true;
})
(lib.mkIf cfg.opencode.enable { (lib.mkIf cfg.opencode.enable {
programs.opencode = { programs.opencode = {
enable = true; enable = true;