diff --git a/overlays/chromium-wayland.nix b/overlays/chromium-wayland.nix new file mode 100644 index 0000000..ae9105e --- /dev/null +++ b/overlays/chromium-wayland.nix @@ -0,0 +1,53 @@ +_: prev: +let + pkgs = prev; + lib = pkgs.lib; + chromiumWayland = + let + flags = [ + "--enable-vulkan" + "--flag-switches-begin" + "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer,IgnoreGPUBlocklist,Vulkan" + "--flag-switches-end" + "--ozone-platform=wayland" + "--enable-webrtc-pipewire-capturer" + "--ignore-gpu-blocklist" + "--enable-gpu-rasterization" + "--enable-zero-copy" + "--disable-gpu-driver-bug-workarounds" + ]; + in + pkgs.writeScriptBin "chromium-wayland" '' + #!${pkgs.stdenv.shell} + ${pkgs.chromium}/bin/chromium ${lib.concatStringsSep " " flags} + ''; +in +{ + chromiumWayland = + let + pname = "chromium"; + desktop = pkgs.makeDesktopItem { + name = pname; + exec = pname; + icon = "chromium-browser"; + desktopName = "Chromium Wayland"; + genericName = "Web Browser"; + }; + in + lib.hiPrio (pkgs.stdenv.mkDerivation { + inherit pname; + version = pkgs.chromium.version; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + phases = [ "installPhase" "fixupPhase" ]; + installPhase = '' + mkdir -p $out/bin + install -m755 ${chromiumWayland}/bin/${pname}-wayland $out/bin/${pname} + cp -r ${desktop}/share $out/share + ''; + /*fixupPhase = '' + wrapProgram $out/bin/${name} \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ vulkan-loader libGL ])} + '';*/ + }); +} diff --git a/overlays/discord-canary-system.nix b/overlays/discord-canary-system.nix index 94f7d44..5392f61 100644 --- a/overlays/discord-canary-system.nix +++ b/overlays/discord-canary-system.nix @@ -9,6 +9,7 @@ final: prev: rec { sha256 = "sha256-EraTDRKd6t0c9U68tSRdGkeB1hfqNS4KUewEXwkL8io="; }; isWayland = true; + enableVulkan = true; extraOptions = [ "--enable-vulkan" "--ignore-gpu-blocklist" @@ -24,6 +25,7 @@ final: prev: rec { , binaryName , desktopName , isWayland ? false + , enableVulkan ? false , extraOptions ? [ ] , autoPatchelfHook , makeDesktopItem @@ -140,7 +142,7 @@ final: prev: rec { flags = (lib.optionals isWayland [ "--flag-switches-begin" - "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer" + "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer${lib.optionalString enableVulkan ",Vulkan"}" "--flag-switches-end" "--ozone-platform=wayland" "--enable-webrtc-pipewire-capturer" diff --git a/overlays/vscode-wayland.nix b/overlays/vscode-wayland.nix new file mode 100644 index 0000000..2ddbb53 --- /dev/null +++ b/overlays/vscode-wayland.nix @@ -0,0 +1,51 @@ +_: prev: +let + pkgs = prev; + lib = pkgs.lib; + vscodeWayland = + let + flags = [ + "--flag-switches-begin" + "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer,IgnoreGPUBlocklist,Vulkan" + "--flag-switches-end" + "--ozone-platform=wayland" + "--enable-webrtc-pipewire-capturer" + "--ignore-gpu-blocklist" + "--enable-gpu-rasterization" + "--enable-zero-copy" + "--disable-gpu-driver-bug-workarounds" + ]; + in + pkgs.writeScriptBin "vscode-wayland" '' + #!${pkgs.stdenv.shell} + ${pkgs.vscode}/bin/code ${lib.concatStringsSep " " flags} + ''; +in +{ + vscodeWayland = + let + pname = "vscode"; + desktop = pkgs.makeDesktopItem { + name = pname; + exec = pname; + icon = "vscode"; + desktopName = "VSCode Wayland"; + }; + in + lib.hiPrio (pkgs.stdenv.mkDerivation { + inherit pname; + version = pkgs.vscode.version; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + phases = [ "installPhase" "fixupPhase" ]; + installPhase = '' + mkdir -p $out/bin + install -m755 ${vscodeWayland}/bin/${pname}-wayland $out/bin/${pname} + cp -r ${desktop}/share $out/share + ''; + fixupPhase = '' + wrapProgram $out/bin/${pname} \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ vulkan-loader vulkan-extension-layer libGL ])} + ''; + }); +} diff --git a/users/patriot/default.nix b/users/patriot/default.nix index 5c82146..8c25ff7 100644 --- a/users/patriot/default.nix +++ b/users/patriot/default.nix @@ -94,92 +94,6 @@ in fontComb = "${font} ${toString fontSize}"; fontPackage = pkgs.iosevka; - chromiumWayland = - let - flags = [ - "--enable-vulkan" - "--flag-switches-begin" - "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer,IgnoreGPUBlocklis" - "--flag-switches-end" - "--ozone-platform=wayland" - "--enable-webrtc-pipewire-capturer" - "--ignore-gpu-blocklist" - "--enable-gpu-rasterization" - "--enable-zero-copy" - "--disable-gpu-driver-bug-workarounds" - ]; - in - pkgs.writeScriptBin "chromium-wayland" '' - #!${pkgs.stdenv.shell} - VK_ICD_FILENAMES="${pkgs.amdvlk}/share/vulkan/icd.d/amd_icd64.json:${pkgs.driversi686Linux.amdvlk}/share/vulkan/icd.d/amd_icd32.json" chromium ${lib.concatStringsSep " " flags} - ''; - vscodiumWayland = - let - flags = [ - "--enable-vulkan" - "--flag-switches-begin" - "--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer,IgnoreGPUBlocklist" - "--flag-switches-end" - "--ozone-platform=wayland" - "--enable-webrtc-pipewire-capturer" - "--ignore-gpu-blocklist" - "--enable-gpu-rasterization" - "--enable-zero-copy" - "--disable-gpu-driver-bug-workarounds" - ]; - in - pkgs.writeScriptBin "vscodium-wayland" '' - #!${pkgs.stdenv.shell} - code ${lib.concatStringsSep " " flags} - ''; - vscodiumWaylandPkg = - let - name = "vscodium-wayland"; - desktop = pkgs.makeDesktopItem { - inherit name; - exec = name; - icon = "vscodium"; - desktopName = "VSCodium Wayland"; - }; - in - pkgs.stdenv.mkDerivation { - name = name; - - nativeBuildInputs = [ pkgs.makeWrapper ]; - phases = [ "installPhase" "fixupPhase" ]; - installPhase = '' - mkdir -p $out/bin - ln -s ${vscodiumWayland}/bin/${name} $out/bin - ln -s ${desktop}/share $out/share - ''; - fixupPhase = '' - wrapProgram $out/bin/${name} \ - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ vulkan-loader vulkan-extension-layer libGL ])} - ''; - }; - chromiumWaylandPkg = - let - name = "chromium-wayland"; - desktop = pkgs.makeDesktopItem { - inherit name; - exec = name; - icon = "chromium-browser"; - desktopName = "Chromium Wayland"; - genericName = "Web Browser"; - }; - in - pkgs.stdenv.mkDerivation { - name = name; - - nativeBuildInputs = [ pkgs.makeWrapper ]; - phases = [ "installPhase" "fixupPhase" ]; - installPhase = '' - mkdir -p $out/bin - ln -s ${chromiumWayland}/bin/${name} $out/bin - ln -s ${desktop}/share $out/share - ''; - }; - colorSchemeLight = { primary = { normal = { @@ -348,7 +262,6 @@ in homeDirectory = nixosConfig.users.users.patriot.home; packages = with pkgs; [ - libnotify-latest # Font stuff fontPackage noto-fonts-cjk @@ -356,9 +269,9 @@ in dejavu_fonts (nerdfonts.override { fonts = [ "Iosevka" ]; }) # Programs - discord-canary-system + # discord-canary-system # element-desktop - gh + # gh vulkan-tools audacity krita @@ -368,8 +281,6 @@ in gnome3.gnome-boxes wine-staging cachix - chromiumWaylandPkg - vscodiumWaylandPkg appimage-run bitwarden pfetch @@ -511,6 +422,7 @@ in }; chromium = { enable = true; + package = pkgs.chromiumWayland; extensions = [ "gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock @@ -667,6 +579,7 @@ in }; vscode = { enable = true; + package = pkgs.vscodeWayland; extensions = let mkExt = n: v: p: s: { name = n; version = v; publisher = p; sha256 = s; };