diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 59ff758bde82..f94b1368ac69 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -363,6 +363,7 @@ ./security/systemd-confinement.nix ./security/tpm2.nix ./security/wrappers/default.nix + ./services/accessibility/orca.nix ./services/accessibility/speechd.nix ./services/admin/docuum.nix ./services/admin/meshcentral.nix diff --git a/nixos/modules/services/accessibility/orca.nix b/nixos/modules/services/accessibility/orca.nix new file mode 100644 index 000000000000..4487afba103c --- /dev/null +++ b/nixos/modules/services/accessibility/orca.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.services.orca; + inherit (lib) + mkEnableOption + mkIf + mkPackageOption + ; +in +{ + options.services.orca = { + enable = mkEnableOption "Orca screen reader"; + package = mkPackageOption pkgs "orca" { }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + services.speechd.enable = true; + }; +} diff --git a/nixos/modules/services/desktop-managers/plasma6.nix b/nixos/modules/services/desktop-managers/plasma6.nix index 3b36d3a905d0..c165c0b47eed 100644 --- a/nixos/modules/services/desktop-managers/plasma6.nix +++ b/nixos/modules/services/desktop-managers/plasma6.nix @@ -245,6 +245,9 @@ in { xdg.portal.configPackages = mkDefault [kdePackages.xdg-desktop-portal-kde]; services.pipewire.enable = mkDefault true; + # Enable screen reader by default + services.orca.enable = mkDefault true; + services.displayManager = { sessionPackages = [kdePackages.plasma-workspace]; defaultSession = mkDefault "plasma"; diff --git a/nixos/modules/services/x11/desktop-managers/cinnamon.nix b/nixos/modules/services/x11/desktop-managers/cinnamon.nix index 33373c18a4e9..cd5c9e1c948f 100644 --- a/nixos/modules/services/x11/desktop-managers/cinnamon.nix +++ b/nixos/modules/services/x11/desktop-managers/cinnamon.nix @@ -172,7 +172,6 @@ in ] ++ utils.removePackagesByName [ # accessibility onboard - orca # theme sound-theme-freedesktop @@ -199,6 +198,8 @@ in }) ]; + services.orca.enable = mkDefault (notExcluded pkgs.orca); + xdg.portal.configPackages = mkDefault [ pkgs.cinnamon-common ]; # Override GSettings schemas diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix index bbd47a382e18..bb2ce03e73a3 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome.nix @@ -357,6 +357,8 @@ in isSystem = true; }; + services.orca.enable = notExcluded pkgs.orca; + fonts.packages = with pkgs; [ cantarell-fonts dejavu_fonts @@ -380,7 +382,6 @@ in pkgs.gnome-shell-extensions pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in. pkgs.gnome-user-docs - pkgs.orca pkgs.glib # for gsettings program pkgs.gnome-menus pkgs.gtk3.out # for gtk-launch program diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix index fc5fb4d0b53d..1ab898d35bc2 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.nix +++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix @@ -175,6 +175,7 @@ in # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443 pkgs.pantheon.mutter ]; + services.orca.enable = mkDefault (notExcluded pkgs.orca); systemd.packages = with pkgs; [ gnome-session pantheon.gala @@ -211,7 +212,6 @@ in adwaita-icon-theme gtk3.out # for gtk-launch program onboard - orca # elementary/greeter#668 sound-theme-freedesktop xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ ]) ++ (with pkgs.pantheon; [ diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index 1893eb5d7f9a..90a1596d57e6 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -357,6 +357,9 @@ in pkgs.media-player-info ]; + # Enable screen reader by default + services.orca.enable = mkDefault true; + services.displayManager.sddm = { theme = mkDefault "breeze"; };