From 384c08bed2a5ab3120e528cdd37e054202c28ceb Mon Sep 17 00:00:00 2001 From: Joshua Yuen Date: Tue, 29 Jul 2025 13:29:47 -0400 Subject: [PATCH] Add firefox and pipewire modules --- modules/core/default.nix | 1 + modules/core/firefox.nix | 21 +++++++++++++++++++++ modules/core/pipewire.nix | 25 +++++++++++++++++++++++++ modules/home/xdg.nix | 7 +++++++ modules/options/default.nix | 1 + modules/options/pipewire.nix | 17 +++++++++++++++++ 6 files changed, 72 insertions(+) create mode 100644 modules/core/firefox.nix create mode 100644 modules/core/pipewire.nix create mode 100644 modules/options/pipewire.nix diff --git a/modules/core/default.nix b/modules/core/default.nix index 966f187..45d75eb 100644 --- a/modules/core/default.nix +++ b/modules/core/default.nix @@ -8,6 +8,7 @@ ./gdm.nix ./hyprland.nix ./packages.nix + ./pipewire.nix ./plasma.nix ./sddm.nix ./stylix.nix diff --git a/modules/core/firefox.nix b/modules/core/firefox.nix new file mode 100644 index 0000000..a2f8666 --- /dev/null +++ b/modules/core/firefox.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; +let + pipewireCfg = config.modules.pipewire; +in +{ + programs = { + firefox.enable = true; + }; + + # Add wayland screensharing support if PipeWire is enabled + environment.systemPackages = with pkgs; [] + ++ (if pipewireCfg.enable + then [ (wrapFirefox (firefox-unwrapped.override { pipewireSupport = true; }) {}) ] + else [ firefox ]); +} \ No newline at end of file diff --git a/modules/core/pipewire.nix b/modules/core/pipewire.nix new file mode 100644 index 0000000..686d99d --- /dev/null +++ b/modules/core/pipewire.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.modules.pipewire; +in +{ + config = mkIf cfg.enable { + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + jack.enable = true; + }; + + # Allows Pipewire to use the realtime scheduler for increased performance + security.rtkit.enable = true; + }; +} \ No newline at end of file diff --git a/modules/home/xdg.nix b/modules/home/xdg.nix index 614e039..ebdbd67 100644 --- a/modules/home/xdg.nix +++ b/modules/home/xdg.nix @@ -7,6 +7,7 @@ with lib; let hyprlandCfg = osConfig.modules.hyprland; + pipewireCfg = osConfig.modules.pipewire; plasmaCfg = osConfig.modules.plasma; in { @@ -20,6 +21,12 @@ in ++ (if hyprlandCfg.enable then [ pkgs.xdg-desktop-portal-hyprland ] else []) + ++ (if pipewireCfg.enable + then [ + pkgs.xdg-desktop-portal-wlr + pkgs.xdg-desktop-portal-gtk + ] + else []) ++ (if plasmaCfg.enable then [ pkgs.kdePackages.xdg-desktop-portal-kde ] else []); diff --git a/modules/options/default.nix b/modules/options/default.nix index 838fa35..e97fac1 100644 --- a/modules/options/default.nix +++ b/modules/options/default.nix @@ -5,6 +5,7 @@ imports = [ ./displayManager.nix ./hyprland.nix + ./pipewire.nix ./plasma.nix ./shell.nix ./system.nix diff --git a/modules/options/pipewire.nix b/modules/options/pipewire.nix new file mode 100644 index 0000000..7d7bfe1 --- /dev/null +++ b/modules/options/pipewire.nix @@ -0,0 +1,17 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.modules.pipewire; +in +{ + options.modules.pipewire = { + enable = mkEnableOption { + default = true; + description = "Enable PipeWire"; + }; + }; +} \ No newline at end of file