diff --git a/common/pc/chromium.nix b/common/pc/chromium.nix index 08fbf37..6ba8844 100644 --- a/common/pc/chromium.nix +++ b/common/pc/chromium.nix @@ -2,6 +2,53 @@ let cfg = config.de; + + nv-codec-headers-11-1-5-1 = pkgs.stdenv.mkDerivation rec { + pname = "nv-codec-headers"; + version = "11.1.5.1"; + + src = pkgs.fetchgit { + url = "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git"; + rev = "n${version}"; + sha256 = "yTOKLjyYLxT/nI1FBOMwHpkDhfuua3+6Z5Mpb7ZrRhU="; + }; + + makeFlags = [ + "PREFIX=$(out)" + ]; + }; + + nvidia-vaapi-driver = pkgs.stdenv.mkDerivation rec { + pname = "nvidia-vaapi-driver"; + version = "0.0.5"; + + src = pkgs.fetchFromGitHub { + owner = "elFarto"; + repo = pname; + rev = "v${version}"; + sha256 = "2bycqKolVoaHK64XYcReteuaON9TjzrFhaG5kty28YY="; + }; + + patches = [ + ./use-meson-v57.patch + ]; + + nativeBuildInputs = with pkgs; [ + meson + cmake + ninja + pkg-config + ]; + + buildInputs = with pkgs; [ + nv-codec-headers-11-1-5-1 + libva + gst_all_1.gstreamer + gst_all_1.gst-plugins-bad + libglvnd + ]; + }; + in { config = lib.mkIf cfg.enable { # chromium with specific extensions + settings @@ -31,16 +78,20 @@ in { chromium = pkgs.chromium.override { gnomeKeyringSupport = true; enableWideVine = true; + # ungoogled = true; commandLineArgs = "--use-vulkan --use-gl=desktop --enable-zero-copy --enable-hardware-overlays --enable-features=VaapiVideoDecoder,CanvasOopRasterization --ignore-gpu-blocklist --enable-accelerated-mjpeg-decode --enable-accelerated-video --enable-native-gpu-memory-buffers --enable-gpu-rasterization"; }; }; + # todo vulkan in chrome + # todo video encoding in chrome hardware.opengl = { enable = true; extraPackages = with pkgs; [ intel-media-driver # LIBVA_DRIVER_NAME=iHD vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) - vaapiVdpau + # vaapiVdpau libvdpau-va-gl + nvidia-vaapi-driver ]; extraPackages32 = with pkgs.pkgsi686Linux; [ vaapiIntel ]; }; diff --git a/common/pc/use-meson-v57.patch b/common/pc/use-meson-v57.patch new file mode 100644 index 0000000..3a7808f --- /dev/null +++ b/common/pc/use-meson-v57.patch @@ -0,0 +1,22 @@ +diff --git a/meson.build b/meson.build +index dace367..8c0e290 100644 +--- a/meson.build ++++ b/meson.build +@@ -8,7 +8,7 @@ project( + 'warning_level=0', + ], + license: 'MIT', +- meson_version: '>= 0.58.0', ++ meson_version: '>= 0.57.0', + ) + + cc = meson.get_compiler('c') +@@ -47,8 +47,3 @@ shared_library( + gnu_symbol_visibility: 'hidden', + ) + +-meson.add_devenv(environment({ +- 'NVD_LOG': '1', +- 'LIBVA_DRIVER_NAME': 'nvidia', +- 'LIBVA_DRIVERS_PATH': meson.project_build_root(), +-})) diff --git a/machines/ray/configuration.nix b/machines/ray/configuration.nix index 03e54b1..19142a2 100644 --- a/machines/ray/configuration.nix +++ b/machines/ray/configuration.nix @@ -38,6 +38,7 @@ in # gpu services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.logFile = "/var/log/Xorg.0.log"; + hardware.nvidia.modesetting.enable = true; # for nvidia-vaapi-driver hardware.nvidia.prime = { # reverse_sync.enable = true; # offload.enable = true;