diff --git a/README.md b/README.md index 13beef4..aa63b18 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,25 @@ inputs = { } ``` -Then in the `configuration.nix` in the `environment.systemPackages` add +## Packages + +This flake exposes two packages, corresponding to the `specific` and `generic` zen versions. +The generic version maximizes compatibility with old CPUs and kernels by compiling it with some +lower common denominator CFLAGS, the `specific` one targets newer CPUs and kernels but it may not +work in your case. + +The `default` package is the `specific` one for backwards compatibility with older versions of the flake. + +Then in the `configuration.nix` in the `environment.systemPackages` add one of: ```nix inputs.zen-browser.packages."${system}".default +inputs.zen-browser.packages."${system}".specific +inputs.zen-browser.packages."${system}".generic ``` +Depending on which version you want + ```shell $ sudo nixos-rebuild switch $ zen diff --git a/flake.nix b/flake.nix index 551812d..62010f0 100644 --- a/flake.nix +++ b/flake.nix @@ -9,7 +9,17 @@ let system = "x86_64-linux"; version = "1.0.0-a.27"; - downloadUrl = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-specific.tar.bz2"; + downloadUrl = { + "specific" = { + url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-specific.tar.bz2"; + sha256 = "sha256:1z81dg3xgfpkyj501gflx8lw7d8124iqwm27zqfja2b47zf4ai2x"; + }; + "generic" = { + url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-generic.tar.bz2"; + sha256 = "sha256:1801pcvvmmdz5drqvxs95yzij099mhq7cnw663dna4kcn2nqwvni"; + }; + }; + pkgs = import nixpkgs { inherit system; }; @@ -20,41 +30,51 @@ ] ++ (with pkgs.xorg; [ libxcb libX11 libXcursor libXrandr libXi libXext libXcomposite libXdamage libXfixes ]); + + mkZen = { variant }: + let + downloadData = downloadUrl."${variant}"; + in + pkgs.stdenv.mkDerivation { + name = "zen-browser"; + + src = builtins.fetchTarball { + url = downloadData.url; + sha256 = downloadData.sha256; + }; + + desktopSrc = ./.; + + phases = [ "installPhase" "fixupPhase" ]; + + nativeBuildInputs = [ pkgs.makeWrapper pkgs.copyDesktopItems pkgs.wrapGAppsHook ] ; + + installPhase = '' + mkdir -p $out/bin && cp -r $src/* $out/bin + install -D $desktopSrc/zen.desktop $out/share/applications/dev.zen.Zen.desktop + install -D $src/browser/chrome/icons/default/default128.png $out/share/icons/hicolor/128x128/apps/zen.png + ''; + + fixupPhase = '' + chmod 755 $out/bin/* + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen + wrapProgram $out/bin/zen --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen-bin + wrapProgram $out/bin/zen-bin --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/glxtest + wrapProgram $out/bin/glxtest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/updater + wrapProgram $out/bin/updater --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/vaapitest + wrapProgram $out/bin/vaapitest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" + ''; + }; in { - packages.${system}.default = pkgs.stdenv.mkDerivation { - name = "zen-browser"; - - src = builtins.fetchTarball { - url = downloadUrl; - sha256 = "sha256:1z81dg3xgfpkyj501gflx8lw7d8124iqwm27zqfja2b47zf4ai2x"; - }; - - desktopSrc = ./.; - - phases = [ "installPhase" "fixupPhase" ]; - - nativeBuildInputs = [ pkgs.makeWrapper pkgs.copyDesktopItems pkgs.wrapGAppsHook ] ; - - installPhase = '' - mkdir -p $out/bin && cp -r $src/* $out/bin - install -D $desktopSrc/zen.desktop $out/share/applications/dev.zen.Zen.desktop - install -D $src/browser/chrome/icons/default/default128.png $out/share/icons/hicolor/128x128/apps/zen.png - ''; - - fixupPhase = '' - chmod 755 $out/bin/* - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen - wrapProgram $out/bin/zen --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen-bin - wrapProgram $out/bin/zen-bin --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/glxtest - wrapProgram $out/bin/glxtest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/updater - wrapProgram $out/bin/updater --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/vaapitest - wrapProgram $out/bin/vaapitest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - ''; + packages."${system}" = { + generic = mkZen { variant = "generic"; }; + specific = mkZen { variant = "specific"; }; + default = self.packages."${system}".specific; }; }; }