{ den, modules, inputs, lib, stdenv, ... }: { flake-file.inputs = { heliumFlake = { url = "github:vikingnope/helium-browser-nix-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; }; modules.helium = settings: { homeManager = { pkgs, ... }: let heliumPkg = inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium; # The upstream `helium` launcher is a plain Nix wrapper that ignores any # *-flags.conf file (that convention is Arch-specific, not NixOS). So to # actually pass command-line flags we re-wrap the launcher here. # # Flag names verified against this Helium build's binary strings. # - AcceleratedVideoDecodeLinuxGL / ...ZeroCopyGL: the VA-API GL decode # path (renamed from the old Vaapi* names, which are no-ops here). # - VaapiOnNvidiaGPUs: required. Chromium disables VA-API on NVIDIA by # default and hard-skips the nvidia-drm device ("Should skip nVidia # device named: nvidia-drm" in the logs); this re-enables it, routing # decode to NVDEC through the nvidia-vaapi-driver bridge. # - VaapiIgnoreDriverChecks: bypass the driver allowlist. # HEVC decode itself needs no runtime flag in this build (enable_platform_hevc # is compiled in and on by default). Wayland-only: the NVIDIA VA-API path # is broken under X11. Upstream considers nvidia-vaapi-driver unsupported, # so confirm via chrome://media-internals (decoder should read VaapiVideoDecoder). helium = pkgs.symlinkJoin { name = "helium-wrapped"; paths = [ heliumPkg ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/helium \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ pkgs.vulkan-loader ]}" \ --add-flags "--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks" \ --add-flags "--ignore-gpu-blocklist" \ --add-flags "--disable-gpu-sandbox" ''; }; in { home.packages = [ helium ]; nixpkgs.config.allowUnfree = true; # Gives me widevine support. yay xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = { text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}''; }; wayland.windowManager.hyprland.settings = lib.mkIf settings.default { binds = [ "$mainMod, E, exec, helium" ]; }; }; }; }