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