diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/browsers')
89 files changed, 9897 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/amfora/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/amfora/default.nix new file mode 100644 index 000000000000..925cc1a4f912 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/amfora/default.nix @@ -0,0 +1,29 @@ +{ lib, fetchFromGitHub, buildGoModule }: + +buildGoModule rec { + pname = "amfora"; + version = "1.6.0"; + + src = fetchFromGitHub { + owner = "makeworld-the-better-one"; + repo = "amfora"; + rev = "v${version}"; + sha256 = "1f5r12hmdgj26p4ss5pcpfcvqlcn19fr9xvvvk2izckcr48p4fy7"; + }; + + vendorSha256 = "0mkk7xxfxxp1w9890mkmag11mzxhy2zmh8v1macpyp1zmzgs21f8"; + + postInstall = '' + sed -i "s:amfora:$out/bin/amfora:" amfora.desktop + install -Dm644 amfora.desktop -t $out/share/applications + ''; + + doCheck = false; + + meta = with lib; { + description = "A fancy terminal browser for the Gemini protocol"; + homepage = "https://github.com/makeworld-the-better-one/amfora"; + license = with licenses; [ gpl3 ]; + maintainers = with maintainers; [ deifactor ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/asuka/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/asuka/default.nix new file mode 100644 index 000000000000..89f4fda88a18 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/asuka/default.nix @@ -0,0 +1,26 @@ +{ stdenv, rustPlatform, fetchurl, pkgconfig, ncurses, openssl, Security }: + +rustPlatform.buildRustPackage rec { + pname = "asuka"; + version = "0.8.1"; + + src = fetchurl { + url = "https://git.sr.ht/~julienxx/${pname}/archive/${version}.tar.gz"; + sha256 = "07i80qmdpwfdgwrk1gzs10wln91v23qjrsk0x134xf5mjnakxc06"; + }; + + cargoSha256 = "0p0x4ch04kydg76bfal5zqzr9hvn5268wf3k2v9h7g8r4y8xqlhw"; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ ncurses openssl ] + ++ stdenv.lib.optional stdenv.isDarwin Security; + + meta = with stdenv.lib; { + description = "Gemini Project client written in Rust with NCurses"; + homepage = "https://git.sr.ht/~julienxx/asuka"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ sikmir ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/av-98/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/av-98/default.nix new file mode 100644 index 000000000000..2184c8d699a4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/av-98/default.nix @@ -0,0 +1,21 @@ +{ lib, python3Packages, fetchgit }: + +python3Packages.buildPythonApplication rec { + pname = "av-98"; + version = "1.0.2dev"; + + src = fetchgit { + url = "https://tildegit.org/solderpunk/AV-98.git"; + rev = "96cf8e13fe5714c8cdc754f51eef9f0293b8ca1f"; + sha256 = "09iskh33hl5aaif763j1fmbz7yvf0yqsxycfd41scj7vbwdsbxl0"; + }; + + propagatedBuildInputs = with python3Packages; [ ansiwrap cryptography ]; + + meta = with lib; { + homepage = "https://tildegit.org/solderpunk/AV-98"; + description = "Experimental console client for the Gemini protocol"; + license = licenses.bsd2; + maintainers = with maintainers; [ ehmry ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/bombadillo/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/bombadillo/default.nix new file mode 100644 index 000000000000..c24f91c4e103 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/bombadillo/default.nix @@ -0,0 +1,21 @@ +{ lib, fetchgit, buildGoModule }: + +buildGoModule rec { + pname = "bombadillo"; + version = "2.3.3"; + + src = fetchgit { + url = "https://tildegit.org/sloum/bombadillo.git"; + rev = version; + sha256 = "02w6h44sxzmk3bkdidl8xla0i9rwwpdqljnvcbydx5kyixycmg0q"; + }; + + vendorSha256 = "0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5"; + + meta = with lib; { + description = "Non-web client for the terminal, supporting Gopher, Gemini and more"; + homepage = "https://bombadillo.colorfield.space/"; + license = licenses.gpl3; + maintainers = with maintainers; [ ehmry ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix new file mode 100644 index 000000000000..d76dd8b9daa7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix @@ -0,0 +1,164 @@ +{ stdenv, lib, fetchurl +, dpkg +, alsaLib +, at-spi2-atk +, at-spi2-core +, atk +, cairo +, cups +, dbus +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gnome2 +, gnome3 +, gsettings-desktop-schemas +, gtk3 +, libpulseaudio +, libuuid +, libdrm +, libX11 +, libXcomposite +, libXcursor +, libXdamage +, libXext +, libXfixes +, libXi +, libxkbcommon +, libXrandr +, libXrender +, libXScrnSaver +, libXtst +, mesa +, nspr +, nss +, pango +, udev +, xorg +, zlib +, xdg_utils +, wrapGAppsHook +}: + +let + +rpath = lib.makeLibraryPath [ + alsaLib + at-spi2-atk + at-spi2-core + atk + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gnome2.GConf + gtk3 + libdrm + libpulseaudio + libX11 + libxkbcommon + libXScrnSaver + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libxkbcommon + libXrandr + libXrender + libXtst + libuuid + mesa + nspr + nss + pango + udev + xdg_utils + xorg.libxcb + zlib +]; + +in + +stdenv.mkDerivation rec { + pname = "brave"; + version = "1.17.73"; + + src = fetchurl { + url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; + sha256 = "18bd6kgzfza5r0y2ggfy82pdpnfr2hzgjcfy9vxqq658z7q3jpqy"; + }; + + dontConfigure = true; + dontBuild = true; + dontPatchELF = true; + + nativeBuildInputs = [ dpkg wrapGAppsHook ]; + + buildInputs = [ glib gsettings-desktop-schemas gnome3.adwaita-icon-theme ]; + + unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner"; + + installPhase = '' + mkdir -p $out $out/bin + + cp -R usr/share $out + cp -R opt/ $out/opt + + export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser + + # Fix path to bash in $BINARYWRAPPER + substituteInPlace $BINARYWRAPPER \ + --replace /bin/bash ${stdenv.shell} + + ln -sf $BINARYWRAPPER $out/bin/brave + + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" $out/opt/brave.com/brave/brave + + # Fix paths + substituteInPlace $out/share/applications/brave-browser.desktop \ + --replace /usr/bin/brave-browser-stable $out/bin/brave + substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \ + --replace /opt/brave.com $out/opt/brave.com + substituteInPlace $out/share/menu/brave-browser.menu \ + --replace /opt/brave.com $out/opt/brave.com + substituteInPlace $out/opt/brave.com/brave/default-app-block \ + --replace /opt/brave.com $out/opt/brave.com + + # Correct icons location + icon_sizes=("16" "22" "24" "32" "48" "64" "128" "256") + + for icon in ''${icon_sizes[*]} + do + mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps + ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png + done + + # Replace xdg-settings and xdg-mime + ln -sf ${xdg_utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings + ln -sf ${xdg_utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime + ''; + + meta = with stdenv.lib; { + homepage = "https://brave.com/"; + description = "Privacy-oriented browser for Desktop and Laptop computers"; + changelog = "https://github.com/brave/brave-browser/blob/v${version}/CHANGELOG.md"; + longDescription = '' + Brave browser blocks the ads and trackers that slow you down, + chew up your bandwidth, and invade your privacy. Brave lets you + contribute to your favorite creators automatically. + ''; + license = licenses.mpl20; + maintainers = with maintainers; [ uskudnik rht jefflabonte nasirhm ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix new file mode 100644 index 000000000000..3662c3badd3e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix @@ -0,0 +1,61 @@ +{ stdenv, buildGoPackage, fetchurl, fetchFromGitHub, go-bindata }: + +let + version = "1.6.4"; + + # TODO: must build the extension instead of downloading it. But since it's + # literally an asset that is indifferent regardless of the platform, this + # might be just enough. + webext = fetchurl { + url = "https://github.com/browsh-org/browsh/releases/download/v${version}/browsh-${version}-an.fx.xpi"; + sha256 = "1shf1s9s525wns5vrsc4ns21zjxm1si43lx6v0q8ma6vd5x5445l"; + }; + +in buildGoPackage rec { + inherit version; + + pname = "browsh"; + + goPackagePath = "browsh"; + + # further go package dependencies are defined in deps.nix, see line below. + src = fetchFromGitHub { + owner = "browsh-org"; + repo = "browsh"; + rev = "v${version}"; + sha256 = "0gvf5k1gm81xxg7ha309kgfkgl5357dli0fbc4z01rmfgbl0rfa0"; + }; + + nativeBuildInputs = [ go-bindata ]; + + # embed the web extension in a go file and place it where it's supposed to + # be. See + # https://github.com/browsh-org/browsh/blob/v1.5.0/interfacer/contrib/xpi2bin.sh + preBuild = '' + xpiprefix="$(mktemp -d)" + cp "${webext}" "$xpiprefix/browsh.xpi" + go-bindata \ + -prefix "$xpiprefix" \ + -pkg browsh \ + -o "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/webextension.go" \ + "$xpiprefix/browsh.xpi" + + sed \ + -e 's:Asset("/browsh.xpi"):Asset("browsh.xpi"):g' \ + -i "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/firefox.go" + ''; + + postBuild = '' + mv "$NIX_BUILD_TOP/go/bin/src" "$NIX_BUILD_TOP/go/bin/browsh" + ''; + + goDeps = ./deps.nix; + + meta = with stdenv.lib; { + description = "A fully-modern text-based browser, rendering to TTY and browsers"; + homepage = "https://www.brow.sh/"; + maintainers = [ maintainers.kalbasit ]; + license = stdenv.lib.licenses.lgpl21; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix new file mode 100644 index 000000000000..9a6a898beb5b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix @@ -0,0 +1,264 @@ +# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix) +[ + { + goPackagePath = "github.com/NYTimes/gziphandler"; + fetch = { + type = "git"; + url = "https://github.com/NYTimes/gziphandler"; + rev = "dd0439581c7657cb652dfe5c71d7d48baf39541d"; + sha256 = "0rhrjlw220hnymzfccm0yir3pc9dpj7h3gwzhzq2cbsb3hhsqvyy"; + }; + } + { + goPackagePath = "github.com/fsnotify/fsnotify"; + fetch = { + type = "git"; + url = "https://github.com/fsnotify/fsnotify"; + rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"; + sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"; + }; + } + { + goPackagePath = "github.com/gdamore/encoding"; + fetch = { + type = "git"; + url = "https://github.com/gdamore/encoding"; + rev = "6289cdc94c00ac4aa177771c5fce7af2f96b626d"; + sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9"; + }; + } + { + goPackagePath = "github.com/gdamore/tcell"; + fetch = { + type = "git"; + url = "https://github.com/gdamore/tcell"; + rev = "b5d0c1ac570211e469f43ff88c0c6aa4b56cc99a"; + sha256 = "0g2zfbgyk3djlk0qpmrgcyy0ba9ad932yswpaacswi21qyf9gwag"; + }; + } + { + goPackagePath = "github.com/go-errors/errors"; + fetch = { + type = "git"; + url = "https://github.com/go-errors/errors"; + rev = "a6af135bd4e28680facf08a3d206b454abc877a4"; + sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp"; + }; + } + { + goPackagePath = "github.com/gorilla/websocket"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/websocket"; + rev = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d"; + sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk"; + }; + } + { + goPackagePath = "github.com/hashicorp/hcl"; + fetch = { + type = "git"; + url = "https://github.com/hashicorp/hcl"; + rev = "8cb6e5b959231cc1119e43259c4a608f9c51a241"; + sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66"; + }; + } + { + goPackagePath = "github.com/hpcloud/tail"; + fetch = { + type = "git"; + url = "https://github.com/hpcloud/tail"; + rev = "a30252cb686a21eb2d0b98132633053ec2f7f1e5"; + sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0"; + }; + } + { + goPackagePath = "github.com/lucasb-eyer/go-colorful"; + fetch = { + type = "git"; + url = "https://github.com/lucasb-eyer/go-colorful"; + rev = "30298f24079860c4dee452fdef6519b362a4a026"; + sha256 = "0fig06880bvk1l92j4127v4x9sar4ds7ga8959gxxghb2w70b7l2"; + }; + } + { + goPackagePath = "github.com/magiconair/properties"; + fetch = { + type = "git"; + url = "https://github.com/magiconair/properties"; + rev = "de8848e004dd33dc07a2947b3d76f618a7fc7ef1"; + sha256 = "19zqw1x0w0crh8zc84yy82nkcc5yjz72gviaf2xjgfm5a8np7nyb"; + }; + } + { + goPackagePath = "github.com/mattn/go-runewidth"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-runewidth"; + rev = "3ee7d812e62a0804a7d0a324e0249ca2db3476d3"; + sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs"; + }; + } + { + goPackagePath = "github.com/mitchellh/mapstructure"; + fetch = { + type = "git"; + url = "https://github.com/mitchellh/mapstructure"; + rev = "3536a929edddb9a5b34bd6861dc4a9647cb459fe"; + sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr"; + }; + } + { + goPackagePath = "github.com/onsi/ginkgo"; + fetch = { + type = "git"; + url = "https://github.com/onsi/ginkgo"; + rev = "eea6ad008b96acdaa524f5b409513bf062b500ad"; + sha256 = "1326s5fxgasdpz1qqwrw4n5p3k0vz44msnyz14knrhlw5l97lx33"; + }; + } + { + goPackagePath = "github.com/onsi/gomega"; + fetch = { + type = "git"; + url = "https://github.com/onsi/gomega"; + rev = "90e289841c1ed79b7a598a7cd9959750cb5e89e2"; + sha256 = "1n7i4hksdgv410m43v2sw14bl5vy59dkp6nlw5l76nibbh37syr9"; + }; + } + { + goPackagePath = "github.com/pelletier/go-toml"; + fetch = { + type = "git"; + url = "https://github.com/pelletier/go-toml"; + rev = "728039f679cbcd4f6a54e080d2219a4c4928c546"; + sha256 = "1v76s3vds0i9dxaha4ikd6xjm7vqqfk6sy9l6jc2lsvmj99d5sy6"; + }; + } + { + goPackagePath = "github.com/pkg/errors"; + fetch = { + type = "git"; + url = "https://github.com/pkg/errors"; + rev = "ba968bfe8b2f7e042a574c888954fccecfa385b4"; + sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1"; + }; + } + { + goPackagePath = "github.com/shibukawa/configdir"; + fetch = { + type = "git"; + url = "https://github.com/shibukawa/configdir"; + rev = "e180dbdc8da04c4fa04272e875ce64949f38bd3e"; + sha256 = "0vbma9jkwh0ifz8dk2ssgmy7aiaify63lpa0lah7i4dkkxr94c9z"; + }; + } + { + goPackagePath = "github.com/spf13/afero"; + fetch = { + type = "git"; + url = "https://github.com/spf13/afero"; + rev = "588a75ec4f32903aa5e39a2619ba6a4631e28424"; + sha256 = "0j9r65qgd58324m85lkl49vk9dgwd62g7dwvkfcm3k6i9dc555a9"; + }; + } + { + goPackagePath = "github.com/spf13/cast"; + fetch = { + type = "git"; + url = "https://github.com/spf13/cast"; + rev = "8c9545af88b134710ab1cd196795e7f2388358d7"; + sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5"; + }; + } + { + goPackagePath = "github.com/spf13/jwalterweatherman"; + fetch = { + type = "git"; + url = "https://github.com/spf13/jwalterweatherman"; + rev = "94f6ae3ed3bceceafa716478c5fbf8d29ca601a1"; + sha256 = "1ywmkwci5zyd88ijym6f30fj5c0k2yayxarkmnazf5ybljv50q7b"; + }; + } + { + goPackagePath = "github.com/spf13/pflag"; + fetch = { + type = "git"; + url = "https://github.com/spf13/pflag"; + rev = "298182f68c66c05229eb03ac171abe6e309ee79a"; + sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd"; + }; + } + { + goPackagePath = "github.com/spf13/viper"; + fetch = { + type = "git"; + url = "https://github.com/spf13/viper"; + rev = "b5bf975e5823809fb22c7644d008757f78a4259e"; + sha256 = "1zpzxvn13wpvbblbbn73svaq39zgxfjqhci9d68g3qf309pcfy19"; + }; + } + { + goPackagePath = "github.com/ulule/limiter"; + fetch = { + type = "git"; + url = "https://github.com/ulule/limiter"; + rev = "38b2a440be905c8be884fd5e114dc893a64e5d81"; + sha256 = "0sbbfz9k3m2hf45cx7y7xshsr3rac495lks9ciwmnrzsnxfdh3l5"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "461777fb6f67e8cb9d70cda16573678d085a74cf"; + sha256 = "0sc0llch05q6h7nqgayi3sgismsznpnlsz4gh89y4klpymdcpbh2"; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "93c9922d18aeb82498a065f07aec7ad7fa60dfb7"; + sha256 = "0hv96nwbv0li3nrv43ldfzmf12yrrbji2cf8n44iibv8ps5kfssx"; + }; + } + { + goPackagePath = "golang.org/x/text"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/text"; + rev = "342b2e1fbaa52c93f31447ad2c6abc048c63e475"; + sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh"; + }; + } + { + goPackagePath = "gopkg.in/fsnotify.v1"; + fetch = { + type = "git"; + url = "https://github.com/fsnotify/fsnotify"; + rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"; + sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"; + }; + } + { + goPackagePath = "gopkg.in/tomb.v1"; + fetch = { + type = "git"; + url = "https://github.com/go-tomb/tomb"; + rev = "dd632973f1e7218eb1089048e0798ec9ae7dceb8"; + sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv"; + }; + } + { + goPackagePath = "gopkg.in/yaml.v2"; + fetch = { + type = "git"; + url = "https://github.com/go-yaml/yaml"; + rev = "51d6538a90f86fe93ac480b35f37b2be17fef232"; + sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa"; + }; + } +]
\ No newline at end of file diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix new file mode 100644 index 000000000000..b302be4e013c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/captive-browser/default.nix @@ -0,0 +1,21 @@ +{ lib, fetchFromGitHub, buildGoPackage }: + +buildGoPackage rec { + name = "captive-browser"; + version = "2019-04-16"; + goPackagePath = name; + + src = fetchFromGitHub { + owner = "FiloSottile"; + repo = "captive-browser"; + rev = "08450562e58bf9564ee98ad64ef7b2800e53338f"; + sha256 = "17icgjg7h0xm8g4yy38qjhsvlz9pmlmj9kydz01y2nyl0v02i648"; + }; + + meta = with lib; { + description = "Dedicated Chrome instance to log into captive portals without messing with DNS settings"; + homepage = "https://blog.filippo.io/captive-browser"; + license = licenses.mit; + maintainers = with maintainers; [ volth ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/castor/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/castor/default.nix new file mode 100644 index 000000000000..c9ad213cf1d1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/castor/default.nix @@ -0,0 +1,50 @@ +{ stdenv +, fetchurl +, rustPlatform +, pkg-config +, wrapGAppsHook +, openssl +, gtk3 +, gdk-pixbuf +, pango +, atk +, cairo +}: + +rustPlatform.buildRustPackage rec { + pname = "castor"; + version = "0.8.16"; + + src = fetchurl { + url = "https://git.sr.ht/~julienxx/castor/archive/${version}.tar.gz"; + sha256 = "1qwsprwazkzcs70h219fhh5jj5s5hm1k120fn3pk4qivii4lyhah"; + }; + + cargoSha256 = "0yn2kfiaz6d8wc8rdqli2pwffp5vb1v3zi7520ysrd5b6fc2csf2"; + + nativeBuildInputs = [ + pkg-config + wrapGAppsHook + ]; + + buildInputs = [ + openssl + gtk3 + gdk-pixbuf + pango + atk + cairo + ]; + + postInstall = "make PREFIX=$out copy-data"; + + # Sometimes tests fail when run in parallel + cargoParallelTestThreads = false; + + meta = with stdenv.lib; { + description = "A graphical client for plain-text protocols written in Rust with GTK. It currently supports the Gemini, Gopher and Finger protocols"; + homepage = "https://sr.ht/~julienxx/Castor"; + license = licenses.mit; + maintainers = with maintainers; [ fgaz ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md new file mode 100644 index 000000000000..8e4eae75f960 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md @@ -0,0 +1,69 @@ +# Maintainers + +- TODO: We need more maintainers: + - https://github.com/NixOS/nixpkgs/issues/78450 + - If you just want to help out without becoming a maintainer: + - Look for open Nixpkgs issues or PRs related to Chromium + - Make your own PRs (but please try to make reviews as easy as possible) +- Primary maintainer (responsible for updating Chromium): @primeos +- Testers (test all stable channel updates) + - `nixos-unstable`: + - `x86_64`: @danielfullmer + - `aarch64`: @thefloweringash + - Stable channel: + - `x86_64`: @Frostman +- Other relevant packages: + - `chromiumBeta` and `chromiumDev`: For testing purposes (not build on Hydra) + - `google-chrome`, `google-chrome-beta`, `google-chrome-dev`: Updated via + Chromium's `upstream-info.json` + - `ungoogled-chromium`: Based on `chromium` (the expressions are regularly + copied over and patched accordingly) + +# Upstream links + +- Source code: https://source.chromium.org/chromium/chromium/src +- Bugs: https://bugs.chromium.org/p/chromium/issues/list +- Release updates: https://chromereleases.googleblog.com/ + - Available as Atom or RSS feed (filter for + "Stable Channel Update for Desktop") + - Channel overview: https://omahaproxy.appspot.com/ + - Release schedule: https://chromiumdash.appspot.com/schedule + +# Updating Chromium + +Simply run `./pkgs/applications/networking/browsers/chromium/update.py` to +update `upstream-info.json`. After updates it is important to test at least +`nixosTests.chromium` (or basic manual testing) and `google-chrome` (which +reuses `upstream-info.json`). + +After updating, please also update pkgs/development/tools/selenium/chromedriver/default.nix +to a matching version. + +## Backports + +All updates are considered security critical and should be ported to the stable +channel ASAP. When there is a new stable release the old one should receive +security updates for roughly one month. After that it is important to mark +Chromium as insecure (see 69e4ae56c4b for an example; it is important that the +tested job still succeeds and that all browsers that use `upstream-info.json` +are marked as insecure). + +## Major version updates + +Unfortunately, Chromium regularly breaks on major updates and might need +various patches. Either due to issues with the Nix build sandbox (e.g. we cannot +fetch dependencies via the network and do not use standard FHS paths) or due to +missing upstream fixes that need to be backported. + +Good sources for such patches and other hints: +- https://github.com/archlinux/svntogit-packages/tree/packages/chromium/trunk +- https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium +- https://src.fedoraproject.org/rpms/chromium/tree/master + +If the build fails immediately due to unknown compiler flags this usually means +that a new major release of LLVM is required. + +## Beta and Dev channels + +Those channels are only used to test and fix builds in advance. They may be +broken at times and must not delay stable channel updates. diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix new file mode 100644 index 000000000000..d3953da71d28 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix @@ -0,0 +1,86 @@ +{ stdenv, mkChromiumDerivation, channel, enableWideVine }: + +with stdenv.lib; + +mkChromiumDerivation (base: rec { + name = "chromium-browser"; + packageName = "chromium"; + buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ]; + + outputs = ["out" "sandbox"]; + + sandboxExecutableName = "__chromium-suid-sandbox"; + + installPhase = '' + mkdir -p "$libExecPath" + cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/" + cp -v "$buildPath/icudtl.dat" "$libExecPath/" + cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" + cp -v "$buildPath/chrome" "$libExecPath/$packageName" + + # Swiftshader + # See https://stackoverflow.com/a/4264351/263061 for the find invocation. + if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then + echo "Swiftshader files found; installing" + mkdir -p "$libExecPath/swiftshader" + cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/" + else + echo "Swiftshader files not found" + fi + + mkdir -p "$sandbox/bin" + cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}" + + mkdir -vp "$out/share/man/man1" + cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1" + + for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do + num_and_suffix="''${icon_file##*logo_}" + icon_size="''${num_and_suffix%.*}" + expr "$icon_size" : "^[0-9][0-9]*$" || continue + logo_output_prefix="$out/share/icons/hicolor" + logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" + mkdir -vp "$logo_output_path" + cp -v "$icon_file" "$logo_output_path/$packageName.png" + done + + # Install Desktop Entry + install -D chrome/installer/linux/common/desktop.template \ + $out/share/applications/chromium-browser.desktop + + substituteInPlace $out/share/applications/chromium-browser.desktop \ + --replace "@@MENUNAME@@" "Chromium" \ + --replace "@@PACKAGE@@" "chromium" \ + --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium" + + # Append more mime types to the end + sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \ + $out/share/applications/chromium-browser.desktop + + # See https://github.com/NixOS/nixpkgs/issues/12433 + sed -i \ + -e '/\[Desktop Entry\]/a\' \ + -e 'StartupWMClass=chromium-browser' \ + $out/share/applications/chromium-browser.desktop + ''; + + passthru = { inherit sandboxExecutableName; }; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = { + description = "An open source web browser from Google"; + longDescription = '' + Chromium is an open source web browser from Google that aims to build a + safer, faster, and more stable way for all Internet users to experience + the web. It has a minimalist user interface and provides the vast majority + of source code for Google Chrome (which has some additional features). + ''; + homepage = "https://www.chromium.org/"; + maintainers = with maintainers; [ primeos thefloweringash bendlas ]; # See README.md + license = if enableWideVine then licenses.unfree else licenses.bsd3; + platforms = platforms.linux; + hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else []; + timeout = 172800; # 48 hours (increased from the Hydra default of 10h) + }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix new file mode 100644 index 000000000000..0c16d0c9ec60 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix @@ -0,0 +1,316 @@ +{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl + +# default dependencies +, gnutar, bzip2, flac, speex, libopus +, libevent, expat, libjpeg, snappy +, libpng, libcap +, xdg_utils, yasm, nasm, minizip, libwebp +, libusb1, pciutils, nss, re2 + +, python2Packages, perl, pkgconfig +, nspr, systemd, kerberos +, util-linux, alsaLib +, bison, gperf +, glib, gtk3, dbus-glib +, glibc +, libXScrnSaver, libXcursor, libXtst, libGLU, libGL +, protobuf, speechd, libXdamage, cups +, ffmpeg, libxslt, libxml2, at-spi2-core +, jre8 +, pipewire_0_2 +, libva + +# optional dependencies +, libgcrypt ? null # gnomeSupport || cupsSupport +, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone + +# package customization +, useOzone ? true +, gnomeSupport ? false, gnome ? null +, gnomeKeyringSupport ? false, libgnome-keyring3 ? null +, proprietaryCodecs ? true +, cupsSupport ? true +, pulseSupport ? false, libpulseaudio ? null + +, channel +, upstream-info +}: + +buildFun: + +with stdenv.lib; + +let + jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731 + + # The additional attributes for creating derivations based on the chromium + # source tree. + extraAttrs = buildFun base; + + githubPatch = commit: sha256: fetchpatch { + url = "https://github.com/chromium/chromium/commit/${commit}.patch"; + inherit sha256; + }; + + mkGnFlags = + let + # Serialize Nix types into GN types according to this document: + # https://source.chromium.org/gn/gn/+/master:docs/language.md + mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\""; + sanitize = value: + if value == true then "true" + else if value == false then "false" + else if isList value then "[${concatMapStringsSep ", " sanitize value}]" + else if isInt value then toString value + else if isString value then mkGnString value + else throw "Unsupported type for GN value `${value}'."; + toFlag = key: value: "${key}=${sanitize value}"; + in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); + + # https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py + gnSystemLibraries = [ + "ffmpeg" + "flac" + "libjpeg" + "libpng" + "libwebp" + "libxslt" + "opus" + "snappy" + "zlib" + ]; + + opusWithCustomModes = libopus.override { + withCustomModes = true; + }; + + defaultDependencies = [ + bzip2 flac speex opusWithCustomModes + libevent expat libjpeg snappy + libpng libcap + xdg_utils minizip libwebp + libusb1 re2 + ffmpeg libxslt libxml2 + nasm + ]; + + # build paths and release info + packageName = extraAttrs.packageName or extraAttrs.name; + buildType = "Release"; + buildPath = "out/${buildType}"; + libExecPath = "$out/libexec/${packageName}"; + + versionRange = min-version: upto-version: + let inherit (upstream-info) version; + result = versionAtLeast version min-version && versionOlder version upto-version; + stable-version = (importJSON ./upstream-info.json).stable.version; + in if versionAtLeast stable-version upto-version + then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it." + result + else result; + + base = rec { + name = "${packageName}-unwrapped-${version}"; + inherit (upstream-info) version; + inherit channel packageName buildType buildPath; + + src = fetchurl { + url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz"; + inherit (upstream-info) sha256; + }; + + nativeBuildInputs = [ + llvmPackages.lldClang.bintools + ninja which python2Packages.python perl pkgconfig + python2Packages.ply python2Packages.jinja2 nodejs + gnutar python2Packages.setuptools + ]; + + buildInputs = defaultDependencies ++ [ + nspr nss systemd + util-linux alsaLib + bison gperf kerberos + glib gtk3 dbus-glib + libXScrnSaver libXcursor libXtst libGLU libGL + pciutils protobuf speechd libXdamage at-spi2-core + jre + pipewire_0_2 + libva + ] ++ optional gnomeKeyringSupport libgnome-keyring3 + ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] + ++ optionals cupsSupport [ libgcrypt cups ] + ++ optional pulseSupport libpulseaudio + ++ optionals useOzone [ libdrm wayland mesa.drivers libxkbcommon ]; + + patches = [ + ./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed) + ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags + # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) + ]; + + postPatch = '' + # remove unused third-party + for lib in ${toString gnSystemLibraries}; do + if [ -d "third_party/$lib" ]; then + find "third_party/$lib" -type f \ + \! -path "third_party/$lib/chromium/*" \ + \! -path "third_party/$lib/google/*" \ + \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + fi + done + + # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.): + substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" "" + if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then + substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \ + --replace "/usr/bin/env -S make -f" "/usr/bin/make -f" + fi + + # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX + substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \ + --replace \ + 'return sandbox_binary;' \ + 'return base::FilePath(GetDevelSandboxPath());' + + substituteInPlace services/audio/audio_sandbox_hook_linux.cc \ + --replace \ + '/usr/share/alsa/' \ + '${alsaLib}/share/alsa/' \ + --replace \ + '/usr/lib/x86_64-linux-gnu/gconv/' \ + '${glibc}/lib/gconv/' \ + --replace \ + '/usr/share/locale/' \ + '${glibc}/share/locale/' + + sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \ + chrome/browser/shell_integration_linux.cc + + sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \ + device/udev_linux/udev?_loader.cc + + sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \ + gpu/config/gpu_info_collector_linux.cc + + # Allow to put extensions into the system-path. + sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc + + patchShebangs . + # use our own nodejs + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node + + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py + + '' + optionalString stdenv.isAarch64 '' + substituteInPlace build/toolchain/linux/BUILD.gn \ + --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' + ''; + + gnFlags = mkGnFlags ({ + custom_toolchain = "//build/toolchain/linux/unbundle:default"; + host_toolchain = "//build/toolchain/linux/unbundle:default"; + is_official_build = true; + + use_vaapi = !stdenv.isAarch64; # TODO: Remove once M88 is released + use_sysroot = false; + use_gnome_keyring = gnomeKeyringSupport; + use_gio = gnomeSupport; + # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy', + # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it + enable_nacl = false; + # Enabling the Widevine component here doesn't affect whether we can + # redistribute the chromium package; the Widevine component is either + # added later in the wrapped -wv build or downloaded from Google. + enable_widevine = true; + use_cups = cupsSupport; + # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture. + rtc_use_pipewire = true; + + treat_warnings_as_errors = false; + clang_use_chrome_plugins = false; + blink_symbol_level = 0; + symbol_level = 0; + fieldtrial_testing_like_official_build = true; + + # Google API keys, see: + # http://www.chromium.org/developers/how-tos/api-keys + # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, + # please get your own set of keys. + google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI"; + google_default_client_id = "404761575300.apps.googleusercontent.com"; + google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D"; + } // optionalAttrs proprietaryCodecs { + # enable support for the H.264 codec + proprietary_codecs = true; + enable_hangout_services_extension = true; + ffmpeg_branding = "Chrome"; + } // optionalAttrs pulseSupport { + use_pulseaudio = true; + link_pulseaudio = true; + } // optionalAttrs useOzone { + use_ozone = true; + use_xkbcommon = true; + use_glib = true; + use_gtk = true; + use_system_libwayland = true; + use_system_minigbm = true; + use_system_libdrm = true; + system_wayland_scanner_path = "${wayland}/bin/wayland-scanner"; + } // (extraAttrs.gnFlags or {})); + + configurePhase = '' + runHook preConfigure + + # This is to ensure expansion of $out. + libExecPath="${libExecPath}" + python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries} + ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt + + # Fail if `gn gen` contains a WARNING. + grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1 + + runHook postConfigure + ''; + + # Don't spam warnings about unknown warning options. This is useful because + # our Clang is always older than Chromium's and the build logs have a size + # of approx. 25 MB without this option (and this saves e.g. 66 %). + NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option"; + + buildPhase = let + buildCommand = target: '' + ninja -C "${buildPath}" -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES "${target}" + ( + source chrome/installer/linux/common/installer.include + PACKAGE=$packageName + MENUNAME="Chromium" + process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1" + ) + ''; + targets = extraAttrs.buildTargets or []; + commands = map buildCommand targets; + in concatStringsSep "\n" commands; + + postFixup = '' + # Make sure that libGLESv2 is found by dlopen (if using EGL). + chromiumBinary="$libExecPath/$packageName" + origRpath="$(patchelf --print-rpath "$chromiumBinary")" + patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary" + ''; + + passthru = { + updateScript = ./update.py; + chromiumDeps = { + gn = gnChromium; + }; + }; + }; + +# Remove some extraAttrs we supplied to the base attributes already. +in stdenv.mkDerivation (base // removeAttrs extraAttrs [ + "name" "gnFlags" "buildTargets" +] // { passthru = base.passthru // (extraAttrs.passthru or {}); }) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix new file mode 100644 index 000000000000..e35e4d945dde --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix @@ -0,0 +1,210 @@ +{ newScope, config, stdenv, fetchurl, makeWrapper +, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils +, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit +, libva ? null +, pipewire_0_2 +, gcc, nspr, nss, runCommand +, lib + +# package customization +# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper) +, channel ? "stable" +, gnomeSupport ? false, gnome ? null +, gnomeKeyringSupport ? false +, proprietaryCodecs ? true +, enablePepperFlash ? false +, enableWideVine ? false +, enableVaapi ? false # Disabled by default due to unofficial support +, cupsSupport ? true +, pulseSupport ? config.pulseaudio or stdenv.isLinux +, commandLineArgs ? "" +}: + +let + llvmPackages = llvmPackages_11; + stdenv = llvmPackages.stdenv; + + callPackage = newScope chromium; + + chromium = rec { + inherit stdenv llvmPackages; + + upstream-info = (lib.importJSON ./upstream-info.json).${channel}; + + mkChromiumDerivation = callPackage ./common.nix ({ + inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs + cupsSupport pulseSupport; + gnChromium = gn.overrideAttrs (oldAttrs: { + inherit (upstream-info.deps.gn) version; + src = fetchgit { + inherit (upstream-info.deps.gn) url rev sha256; + }; + }); + }); + + browser = callPackage ./browser.nix { inherit channel enableWideVine; }; + + plugins = callPackage ./plugins.nix { + inherit enablePepperFlash; + }; + }; + + pkgSuffix = if channel == "dev" then "unstable" else channel; + pkgName = "google-chrome-${pkgSuffix}"; + chromeSrc = fetchurl { + urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [ + "https://dl.google.com/linux/chrome/deb/pool/main/g" + "http://95.31.35.30/chrome/pool/main/g" + "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g" + "http://repo.fdzh.org/chrome/deb/pool/main/g" + ]; + sha256 = chromium.upstream-info.sha256bin64; + }; + + mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}"; + widevineCdm = stdenv.mkDerivation { + name = "chrome-widevine-cdm"; + + src = chromeSrc; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ]; + + unpackCmd = let + widevineCdmPath = + if channel == "stable" then + "./opt/google/chrome/WidevineCdm" + else if channel == "beta" then + "./opt/google/chrome-beta/WidevineCdm" + else if channel == "dev" then + "./opt/google/chrome-unstable/WidevineCdm" + else + throw "Unknown chromium channel."; + in '' + # Extract just WidevineCdm from upstream's .deb file + ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}" + + # Move things around so that we don't have to reference a particular + # chrome-* directory later. + mv "${widevineCdmPath}" ./ + + # unpackCmd wants a single output directory; let it take WidevineCdm/ + rm -rf opt + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ]; + + patchPhase = '' + patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so + ''; + + installPhase = '' + mkdir -p $out/WidevineCdm + cp -a * $out/WidevineCdm/ + ''; + + meta = { + platforms = [ "x86_64-linux" ]; + license = lib.licenses.unfree; + }; + }; + + suffix = if channel != "stable" then "-" + channel else ""; + + sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName; + + version = chromium.browser.version; + + # We want users to be able to enableWideVine without rebuilding all of + # chromium, so we have a separate derivation here that copies chromium + # and adds the unfree WidevineCdm. + chromiumWV = let browser = chromium.browser; in if enableWideVine then + runCommand (browser.name + "-wv") { version = browser.version; } + '' + mkdir -p $out + cp -a ${browser}/* $out/ + chmod u+w $out/libexec/chromium + cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/ + '' + else browser; + +in stdenv.mkDerivation { + name = "chromium${suffix}-${version}"; + inherit version; + + buildInputs = [ + makeWrapper ed + + # needed for GSETTINGS_SCHEMAS_PATH + gsettings-desktop-schemas glib gtk3 + + # needed for XDG_ICON_DIRS + gnome3.adwaita-icon-theme + ]; + + outputs = ["out" "sandbox"]; + + buildCommand = let + browserBinary = "${chromiumWV}/libexec/chromium/chromium"; + getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; + libPath = stdenv.lib.makeLibraryPath [ libva pipewire_0_2 ]; + + in with stdenv.lib; '' + mkdir -p "$out/bin" + + eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ + --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \ + ${lib.optionalString enableVaapi "--add-flags --enable-accelerated-video-decode"} \ + ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} + + ed -v -s "$out/bin/chromium" << EOF + 2i + + if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ] + then + export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}" + else + export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}" + fi + + '' + lib.optionalString (libPath != "") '' + # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not + # contain an empty section before or after a colon. + export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}" + '' + '' + + # libredirect causes chromium to deadlock on startup + export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | ${coreutils}/bin/tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | ${coreutils}/bin/tr '\n' ':')" + + export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS + + # Mainly for xdg-open but also other xdg-* tools: + export PATH="${xdg_utils}/bin\''${PATH:+:}\$PATH" + + . + w + EOF + + ln -sv "${chromium.browser.sandbox}" "$sandbox" + + ln -s "$out/bin/chromium" "$out/bin/chromium-browser" + + mkdir -p "$out/share" + for f in '${chromium.browser}'/share/*; do # hello emacs */ + ln -s -t "$out/share/" "$f" + done + ''; + + inherit (chromium.browser) packageName; + meta = chromium.browser.meta; + passthru = { + inherit (chromium) upstream-info browser; + mkDerivation = chromium.mkChromiumDerivation; + inherit chromeSrc sandboxExecutableName; + updateScript = ./update.py; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch new file mode 100644 index 000000000000..6b788f43d29c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch @@ -0,0 +1,17 @@ +--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig 2018-11-02 16:00:34.368933077 +0200 ++++ chromium-70.0.3538.67/build/compute_build_timestamp.py 2018-11-08 04:06:21.658105129 +0200 +@@ -94,6 +94,14 @@ + 'build_type', help='The type of build', choices=('official', 'default')) + args = argument_parser.parse_args() + ++ # I don't trust LASTCHANGE magic, and I definelly want something deterministic here ++ SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None) ++ if SOURCE_DATE_EPOCH is not None: ++ print(SOURCE_DATE_EPOCH) ++ return 0 ++ else: ++ raise RuntimeError("SOURCE_DATE_EPOCH not set") ++ + # The mtime of the revision in build/util/LASTCHANGE is stored in a file + # next to it. Read it, to get a deterministic time close to "now". + # That date is then modified as described at the top of the file so that diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch new file mode 100644 index 000000000000..32f0ae2fb5e6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine-79.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn +index ed0e2f5208b..5b431a030d5 100644 +--- a/third_party/widevine/cdm/BUILD.gn ++++ b/third_party/widevine/cdm/BUILD.gn +@@ -14,7 +14,7 @@ buildflag_header("buildflags") { + + flags = [ + "ENABLE_WIDEVINE=$enable_widevine", +- "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm", ++ "BUNDLE_WIDEVINE_CDM=true", + "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component", + ] + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix new file mode 100644 index 000000000000..c725f87d3a27 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix @@ -0,0 +1,92 @@ +{ stdenv, gcc +, jshon +, glib +, nspr +, nss +, fetchzip +, enablePepperFlash ? false + +, upstream-info +}: + +with stdenv.lib; + +let + mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}"; + + # Generate a shell fragment that emits flags appended to the + # final makeWrapper call for wrapping the browser's main binary. + # + # Note that this is shell-escaped so that only the variable specified + # by the "output" attribute is substituted. + mkPluginInfo = { output ? "out", allowedVars ? [ output ] + , flags ? [], envVars ? {} + }: let + shSearch = ["'"] ++ map (var: "@${var}@") allowedVars; + shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars; + # We need to triple-escape "val": + # * First because makeWrapper doesn't do any quoting of its arguments by + # itself. + # * Second because it's passed to the makeWrapper call separated by IFS but + # not by the _real_ arguments, for example the Widevine plugin flags + # contain spaces, so they would end up as separate arguments. + # * Third in order to be correctly quoted for the "echo" call below. + shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'"; + mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'"; + mkFlag = flag: ["--add-flags" (shEsc flag)]; + mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)]; + envList = mapAttrsToList mkEnvVar envVars; + quoted = map mkSh (flatten ((map mkFlag flags) ++ envList)); + in '' + mkdir -p "''$${output}/nix-support" + echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags" + ''; + + flash = stdenv.mkDerivation rec { + pname = "flashplayer-ppapi"; + version = "32.0.0.445"; + + src = fetchzip { + url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; + sha256 = "1r9vd210d2qp501q40pjx60mzah08rg0f8jk5rpp52ddajwggalv"; + stripRoot = false; + }; + + patchPhase = '' + chmod +x libpepflashplayer.so + patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + installPhase = '' + flashVersion="$( + "${jshon}/bin/jshon" -F manifest.json -e version -u + )" + + install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so" + + ${mkPluginInfo { + allowedVars = [ "out" "flashVersion" ]; + flags = [ + "--ppapi-flash-path=@out@/lib/libpepflashplayer.so" + "--ppapi-flash-version=@flashVersion@" + ]; + }} + ''; + + dontStrip = true; + + meta = { + license = stdenv.lib.licenses.unfree; + maintainers = with stdenv.lib.maintainers; [ taku0 ]; + platforms = platforms.x86_64; + }; + }; + +in { + enabled = optional enablePepperFlash flash; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py new file mode 100755 index 000000000000..9e1f0aec598d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py @@ -0,0 +1,121 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i python -p python3 nix nix-prefetch-git + +import csv +import json +import re +import subprocess +import sys + +from codecs import iterdecode +from collections import OrderedDict +from datetime import datetime +from os.path import abspath, dirname +from urllib.request import urlopen + +HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux' +DEB_URL = 'https://dl.google.com/linux/chrome/deb/pool/main/g' +BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official' + +JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json' + +def load_json(path): + with open(path, 'r') as f: + return json.load(f) + +def nix_prefetch_url(url, algo='sha256'): + print(f'nix-prefetch-url {url}') + out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url]) + return out.decode('utf-8').rstrip() + +def nix_prefetch_git(url, rev): + print(f'nix-prefetch-git {url} {rev}') + out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev]) + return json.loads(out) + +def get_file_revision(revision, file_path): + url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}' + with urlopen(url) as http_response: + return http_response.read() + +def get_matching_chromedriver(version): + # See https://chromedriver.chromium.org/downloads/version-selection + build = re.sub('.[0-9]+$', '', version) + chromedriver_version_url = f'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{build}' + with urlopen(chromedriver_version_url) as http_response: + chromedriver_version = http_response.read().decode() + def get_chromedriver_url(system): + return f'https://chromedriver.storage.googleapis.com/{chromedriver_version}/chromedriver_{system}.zip' + return { + 'version': chromedriver_version, + 'sha256_linux': nix_prefetch_url(get_chromedriver_url('linux64')), + 'sha256_darwin': nix_prefetch_url(get_chromedriver_url('mac64')) + } + +def get_channel_dependencies(channel): + deps = get_file_revision(channel['version'], 'DEPS') + gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'" + gn_commit = re.search(gn_pattern, deps).group(1).decode() + gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit) + return { + 'gn': { + 'version': datetime.fromisoformat(gn['date']).date().isoformat(), + 'url': gn['url'], + 'rev': gn['rev'], + 'sha256': gn['sha256'] + } + } + +channels = {} +last_channels = load_json(JSON_PATH) + +print(f'GET {HISTORY_URL}', file=sys.stderr) +with urlopen(HISTORY_URL) as resp: + builds = csv.DictReader(iterdecode(resp, 'utf-8')) + for build in builds: + channel_name = build['channel'] + + # If we've already found a newer build for this channel, we're + # no longer interested in it. + if channel_name in channels: + continue + + # If we're back at the last build we used, we don't need to + # keep going -- there's no new version available, and we can + # just reuse the info from last time. + if build['version'] == last_channels[channel_name]['version']: + channels[channel_name] = last_channels[channel_name] + continue + + channel = {'version': build['version']} + suffix = 'unstable' if channel_name == 'dev' else channel_name + + try: + channel['sha256'] = nix_prefetch_url(f'{BUCKET_URL}/chromium-{build["version"]}.tar.xz') + channel['sha256bin64'] = nix_prefetch_url(f'{DEB_URL}/google-chrome-{suffix}/google-chrome-{suffix}_{build["version"]}-1_amd64.deb') + except subprocess.CalledProcessError: + # This build isn't actually available yet. Continue to + # the next one. + continue + + channel['deps'] = get_channel_dependencies(channel) + if channel_name == 'stable': + channel['chromedriver'] = get_matching_chromedriver(channel['version']) + + channels[channel_name] = channel + +with open(JSON_PATH, 'w') as out: + def get_channel_key(item): + channel_name = item[0] + if channel_name == 'stable': + return 0 + elif channel_name == 'beta': + return 1 + elif channel_name == 'dev': + return 2 + else: + print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr) + sys.exit(1) + sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key)) + json.dump(sorted_channels, out, indent=2) + out.write('\n') diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json new file mode 100644 index 000000000000..6343dd4b2468 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json @@ -0,0 +1,46 @@ +{ + "stable": { + "version": "87.0.4280.88", + "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy", + "sha256bin64": "0n3fm6wf8zfkv135d50xl8xxrnng3q55vyxkck1da8jyvh18bijb", + "deps": { + "gn": { + "version": "2020-09-09", + "url": "https://gn.googlesource.com/gn", + "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2", + "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk" + } + }, + "chromedriver": { + "version": "87.0.4280.88", + "sha256_linux": "141mr2jiy3nslwd3s43m4i6plkv9wv5fgi78cn7mz0ac9x6fpcgx", + "sha256_darwin": "048hsqp6575r980m769lzznvxypmfcwn89f1d3ik751ymzmb5r78" + } + }, + "beta": { + "version": "88.0.4324.27", + "sha256": "0mciiyh3sn2zrl8g6znylc2pm9sb0wzsclgavf7mmlknri5sjblc", + "sha256bin64": "0qf2j1j3p94s724rwh8fydpjn88cs9yxxhjf5axvqwi7q3h35cfx", + "deps": { + "gn": { + "version": "2020-11-05", + "url": "https://gn.googlesource.com/gn", + "rev": "53d92014bf94c3893886470a1c7c1289f8818db0", + "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9" + } + } + }, + "dev": { + "version": "89.0.4343.0", + "sha256": "0jmc1l0lysl5zax98fjhzsfq3c1sqh3n3xscidafflx362wcfpwa", + "sha256bin64": "1v6xik8kf531y0g5xj0c8szjmak0qvh77kwkw7p7hqxqmnwwp06d", + "deps": { + "gn": { + "version": "2020-11-05", + "url": "https://gn.googlesource.com/gn", + "rev": "53d92014bf94c3893886470a1c7c1289f8818db0", + "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9" + } + } + } +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix new file mode 100644 index 000000000000..fa1fa76340c3 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl +, fltk +, openssl +, libjpeg, libpng +, perl +, libXcursor, libXi, libXinerama }: + +stdenv.mkDerivation rec { + version = "3.0.5"; + pname = "dillo"; + + src = fetchurl { + url = "https://www.dillo.org/download/${pname}-${version}.tar.bz2"; + sha256 = "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv"; + }; + + buildInputs = with stdenv.lib; + [ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ]; + + configureFlags = [ "--enable-ssl" ]; + + meta = with stdenv.lib; { + homepage = "https://www.dillo.org/"; + description = "A fast graphical web browser with a small footprint"; + longDescription = '' + Dillo is a small, fast web browser, tailored for older machines. + ''; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + license = licenses.gpl3; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix new file mode 100644 index 000000000000..79f3cb76a01a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchFromGitHub, fetchpatch, ncurses, xlibsWrapper, bzip2, zlib +, brotli, zstd, lzma, openssl, autoreconfHook, gettext, pkgconfig, libev +, gpm, libidn, tre, expat +, # Incompatible licenses, LGPLv3 - GPLv2 + enableGuile ? false, guile ? null +, enablePython ? false, python ? null +, enablePerl ? (stdenv.hostPlatform == stdenv.buildPlatform), perl ? null +# re-add javascript support when upstream supports modern spidermonkey +}: + +assert enableGuile -> guile != null; +assert enablePython -> python != null; + +stdenv.mkDerivation rec { + pname = "elinks"; + version = "0.13.5"; + + src = fetchFromGitHub { + owner = "rkd77"; + repo = "felinks"; + rev = "v${version}"; + sha256 = "067l9m47j40039q8mvvnxd1amwrac3x6vv0c0svimfpvj4ammgkg"; + }; + + buildInputs = [ + ncurses xlibsWrapper bzip2 zlib brotli zstd lzma + openssl libidn tre expat libev + ] + ++ stdenv.lib.optional stdenv.isLinux gpm + ++ stdenv.lib.optional enableGuile guile + ++ stdenv.lib.optional enablePython python + ++ stdenv.lib.optional enablePerl perl + ; + + nativeBuildInputs = [ autoreconfHook gettext pkgconfig ]; + + configureFlags = [ + "--enable-finger" + "--enable-html-highlight" + "--enable-gopher" + "--enable-cgi" + "--enable-bittorrent" + "--enable-nntp" + "--enable-256-colors" + "--enable-true-color" + "--with-lzma" + "--with-libev" + "--with-terminfo" + ] ++ stdenv.lib.optional enableGuile "--with-guile" + ++ stdenv.lib.optional enablePython "--with-python" + ++ stdenv.lib.optional enablePerl "--with-perl" + ; + + meta = with stdenv.lib; { + description = "Full-featured text-mode web browser (package based on the fork felinks)"; + homepage = "https://github.com/rkd77/felinks"; + license = licenses.gpl2; + platforms = with platforms; linux ++ darwin; + maintainers = with maintainers; [ iblech gebner ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix new file mode 100644 index 000000000000..a16beb652089 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchgit, meson, ninja, pkgconfig, nix-update-script +, python3, gtk3, libsecret, gst_all_1, webkitgtk, glib +, glib-networking, gtkspell3, hunspell, desktop-file-utils +, gobject-introspection, wrapGAppsHook, gnome3 }: + +python3.pkgs.buildPythonApplication rec { + pname = "eolie"; + version = "0.9.99"; + + format = "other"; + doCheck = false; + + src = fetchgit { + url = "https://gitlab.gnome.org/World/eolie"; + rev = "refs/tags/${version}"; + fetchSubmodules = true; + sha256 = "077jww5mqg6bbqbj0j1gss2j3dxlfr2xw8bc43k8vg52drqg6g8w"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + glib-networking + gobject-introspection + gst-libav + gst-plugins-base + gst-plugins-ugly + gstreamer + gnome3.gnome-settings-daemon + gtk3 + gtkspell3 + hunspell + libsecret + (webkitgtk.override {enableGLES = false;}) + glib + ]; + + propagatedBuildInputs = with python3.pkgs; [ + pyfxa + beautifulsoup4 + cryptography + pycairo + pygobject3 + python-dateutil + pycrypto + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + dontWrapGApps = true; + preFixup = '' + buildPythonPath "$out $propagatedBuildInputs" + patchPythonScript "$out/libexec/eolie-sp" + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = pname; + }; + }; + + strictDeps = false; + + meta = with stdenv.lib; { + description = "A new GNOME web browser"; + homepage = "https://wiki.gnome.org/Apps/Eolie"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ samdroid-apps worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix new file mode 100644 index 000000000000..6d8aa3649a90 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ephemeral/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, fetchFromGitHub +, nix-update-script +, desktop-file-utils +, vala +, gettext +, glib +, gtk3 +, libgee +, libdazzle +, meson +, ninja +, pantheon +, pkgconfig +, python3 +, webkitgtk +, wrapGAppsHook +, glib-networking +}: + +stdenv.mkDerivation rec { + pname = "ephemeral"; + version = "7.0.4"; + + src = fetchFromGitHub { + owner = "cassidyjames"; + repo = "ephemeral"; + rev = version; + sha256 = "18chvfdmka21zvjgqfpinm3nrj0ba09szxhhm39anpvpbj92ra8j"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + meson + ninja + vala + pkgconfig + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + glib-networking + gtk3 + libdazzle + libgee + pantheon.granite + webkitgtk + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = pname; + }; + }; + + meta = with stdenv.lib; { + description = "The always-incognito web browser"; + homepage = "https://github.com/cassidyjames/ephemeral"; + maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers; + platforms = platforms.linux; + license = licenses.gpl3; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix new file mode 100644 index 000000000000..3c2aace79b26 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix @@ -0,0 +1,59 @@ +{ stdenv, mkDerivation, lib, fetchFromGitHub, fetchpatch +, cmake, extra-cmake-modules, pkgconfig, qmake +, libpthreadstubs, libxcb, libXdmcp +, qtsvg, qttools, qtwebengine, qtx11extras +, qtwayland, wrapQtAppsHook +, kwallet +}: + +mkDerivation rec { + pname = "falkon"; + version = "3.1.0"; + + src = fetchFromGitHub { + owner = "KDE"; + repo = "falkon"; + rev = "v${version}"; + sha256 = "1w64slh9wpcfi4v7ds9wci1zvwh0dh787ndpi6hd4kmdgnswvsw7"; + }; + + patches = [ + # fixes build with qt5 5.14 + (fetchpatch { + url = "https://github.com/KDE/falkon/commit/bbde5c6955c43bc744ed2c4024598495de908f2a.diff"; + sha256 = "0f7qcddvvdnij3di0acg7jwvwfwyd0xizlav4wccclbj8x7qp5ld"; + }) + ]; + + preConfigure = '' + export NONBLOCK_JS_DIALOGS=true + export KDE_INTEGRATION=true + export GNOME_INTEGRATION=false + export FALKON_PREFIX=$out + ''; + + buildInputs = [ + libpthreadstubs libxcb libXdmcp + qtsvg qttools qtwebengine qtx11extras + kwallet + ] ++ lib.optionals stdenv.isLinux [ qtwayland ]; + + nativeBuildInputs = [ + cmake + extra-cmake-modules + pkgconfig + qmake + qttools + wrapQtAppsHook + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "QtWebEngine based cross-platform web browser"; + homepage = "https://community.kde.org/Incubator/Projects/Falkon"; + license = licenses.gpl3; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix new file mode 100644 index 000000000000..98cf28ec3e18 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix @@ -0,0 +1,965 @@ +{ + version = "84.0b4"; + sources = [ + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ach/firefox-84.0b4.tar.bz2"; + locale = "ach"; + arch = "linux-x86_64"; + sha256 = "da9290899d245d86b3d2d378072af403106596ae1e02a36d40a93deea9e57000"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/af/firefox-84.0b4.tar.bz2"; + locale = "af"; + arch = "linux-x86_64"; + sha256 = "28810946bde4c2335714c0f8b0dffad1a1650c167370e38c6eb5e2ee5d2e54be"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/an/firefox-84.0b4.tar.bz2"; + locale = "an"; + arch = "linux-x86_64"; + sha256 = "d32e9e13b2c1f484686d9394f20a87e2c1d833703e0115de1f9c8c552d1e9d8a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ar/firefox-84.0b4.tar.bz2"; + locale = "ar"; + arch = "linux-x86_64"; + sha256 = "de8348caf98ca0551f3f080eb32ef94c00706676bc8df1723377d98f10221e56"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ast/firefox-84.0b4.tar.bz2"; + locale = "ast"; + arch = "linux-x86_64"; + sha256 = "104cc96b0e14c030848be4bc07a1b2b836a241e9ddba581b9ca24018c54356ee"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/az/firefox-84.0b4.tar.bz2"; + locale = "az"; + arch = "linux-x86_64"; + sha256 = "e96087b52f1dc18c8bd29d486faa00ad06a2165d1e14cbd47e37cafb40602a87"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/be/firefox-84.0b4.tar.bz2"; + locale = "be"; + arch = "linux-x86_64"; + sha256 = "d67c2c1556b6859e0acae5b69b3b7eeac77b3bb1594b48682a97a72742c79d05"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/bg/firefox-84.0b4.tar.bz2"; + locale = "bg"; + arch = "linux-x86_64"; + sha256 = "b3bad1b330a5d4c515b37cddb3e89e538c5cd66ffce68dbf8d1e9adaf4881431"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/bn/firefox-84.0b4.tar.bz2"; + locale = "bn"; + arch = "linux-x86_64"; + sha256 = "9c50c4e12061279133177ade4b22b7e2bb7e14dcc1875464f57efb7c7e360bf7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/br/firefox-84.0b4.tar.bz2"; + locale = "br"; + arch = "linux-x86_64"; + sha256 = "79eb76af707b26fa4d46acf11d0be25ccd144abda6c853373c9ec0cc872c2a8f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/bs/firefox-84.0b4.tar.bz2"; + locale = "bs"; + arch = "linux-x86_64"; + sha256 = "2cbf15a604f90c4a6212f5da251372d09e2247f5ed338193ff93a94695bca308"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ca-valencia/firefox-84.0b4.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-x86_64"; + sha256 = "a9b6cacf6ee8a6a1f733f3ff3741c1bb12eff823664279205906e8e59b646679"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ca/firefox-84.0b4.tar.bz2"; + locale = "ca"; + arch = "linux-x86_64"; + sha256 = "1ea49a5d59129c820f359fbad2253e051adbb260cedd4b62bb20122562466bfd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/cak/firefox-84.0b4.tar.bz2"; + locale = "cak"; + arch = "linux-x86_64"; + sha256 = "b18651df9ae2e16ea9855c30fa393dd34103cf338a515d41d3c1802e52fb92a1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/cs/firefox-84.0b4.tar.bz2"; + locale = "cs"; + arch = "linux-x86_64"; + sha256 = "4dca051e5349372d6caf5a7f6e8e6e12fe42bf96110a1c6e2f7f6e408f365b80"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/cy/firefox-84.0b4.tar.bz2"; + locale = "cy"; + arch = "linux-x86_64"; + sha256 = "3117d47bcec1cf0f5a547a33c62ca5ecfee34435c13a478f23d1d9f0ac187f4f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/da/firefox-84.0b4.tar.bz2"; + locale = "da"; + arch = "linux-x86_64"; + sha256 = "34a38c76997bdd41e6b12cebf08345e7cd19838bd92f5a8d082ba3087cb063c7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/de/firefox-84.0b4.tar.bz2"; + locale = "de"; + arch = "linux-x86_64"; + sha256 = "65e417603cf383d92058b8976c1f6499dc5804d02a22bb639e416c4e730b4a62"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/dsb/firefox-84.0b4.tar.bz2"; + locale = "dsb"; + arch = "linux-x86_64"; + sha256 = "08dacb91773d7b49eb8f08668627badae2967193c441ff2fb6b9d88063c5ffb9"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/el/firefox-84.0b4.tar.bz2"; + locale = "el"; + arch = "linux-x86_64"; + sha256 = "78e870b673c204e4d9fca2a3fbab06031c724a8b0696a3b6e2dea5ac07a5bb88"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/en-CA/firefox-84.0b4.tar.bz2"; + locale = "en-CA"; + arch = "linux-x86_64"; + sha256 = "4c862eb5c53e65af1ddc212a093eb23e33653341fa7db53d935ed8482637aed8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/en-GB/firefox-84.0b4.tar.bz2"; + locale = "en-GB"; + arch = "linux-x86_64"; + sha256 = "f505cf16328603d0164e330fcef60fcfeccdad186d1f91e0b4cee1b8cc7c740d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/en-US/firefox-84.0b4.tar.bz2"; + locale = "en-US"; + arch = "linux-x86_64"; + sha256 = "f0561469f04ab83dd52ae4e3a8ca451d6569845e37d9e04c5a91085654661f8a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/eo/firefox-84.0b4.tar.bz2"; + locale = "eo"; + arch = "linux-x86_64"; + sha256 = "c64d227d6b21876ea48182795d6fd8ec3ca486e5328629a0bbfb936e8463b0a8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/es-AR/firefox-84.0b4.tar.bz2"; + locale = "es-AR"; + arch = "linux-x86_64"; + sha256 = "73b45f6b8d1e53bef003b3e77cc1217b8a85dde49cb0900b4fa2991895e5c184"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/es-CL/firefox-84.0b4.tar.bz2"; + locale = "es-CL"; + arch = "linux-x86_64"; + sha256 = "e7025e4c5fc311aae2798da99ec5e5863bca5ad8b8460981cef86e29ae37d74a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/es-ES/firefox-84.0b4.tar.bz2"; + locale = "es-ES"; + arch = "linux-x86_64"; + sha256 = "e819644eb6337255004fda8286e1f2ed898423c4b97694c8355c28f4d449da61"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/es-MX/firefox-84.0b4.tar.bz2"; + locale = "es-MX"; + arch = "linux-x86_64"; + sha256 = "07de091ca3b06b94e35b84add7fbc5c8fa6ea84ddfe548e5f55b3bc7980a9bd3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/et/firefox-84.0b4.tar.bz2"; + locale = "et"; + arch = "linux-x86_64"; + sha256 = "d6af9ab39f1a13efc772cbb63dd731dcf988c10f13649f348d7ddb3f6ab6ca60"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/eu/firefox-84.0b4.tar.bz2"; + locale = "eu"; + arch = "linux-x86_64"; + sha256 = "110e667568429dd2b0c752962e1148884c44aaef9939926c6b0f49ba5bdb1182"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/fa/firefox-84.0b4.tar.bz2"; + locale = "fa"; + arch = "linux-x86_64"; + sha256 = "f7a783f12bb08ccb06074f903bb2eaaab13b348c6a2950a9699beee28ad97b5e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ff/firefox-84.0b4.tar.bz2"; + locale = "ff"; + arch = "linux-x86_64"; + sha256 = "b2e47bc8ae8d1e54a1b5799a87b4742d049696edd9913f0cc6beb52a89cc261d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/fi/firefox-84.0b4.tar.bz2"; + locale = "fi"; + arch = "linux-x86_64"; + sha256 = "f5ee09f1b9d41506ad1023ad05dbdee95ac049eb4bfd38dd99c06cf682e111a8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/fr/firefox-84.0b4.tar.bz2"; + locale = "fr"; + arch = "linux-x86_64"; + sha256 = "f8c33819a6ceab041bed80f1663d94a80ee3bdb6e859eab1eb8ec9d0b67f4222"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/fy-NL/firefox-84.0b4.tar.bz2"; + locale = "fy-NL"; + arch = "linux-x86_64"; + sha256 = "6ed233042e570e9a04ecc1e25f6211deb7685c117db75f32a541076d95d1cebf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ga-IE/firefox-84.0b4.tar.bz2"; + locale = "ga-IE"; + arch = "linux-x86_64"; + sha256 = "b28337429a0c1d26653fda1d93b59ea0383061a253be5b763442166fdb21bbca"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/gd/firefox-84.0b4.tar.bz2"; + locale = "gd"; + arch = "linux-x86_64"; + sha256 = "546bf2f1a4a8a643b161554bc92e771644ff9ae46c6b10fb2a60b920a2454f44"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/gl/firefox-84.0b4.tar.bz2"; + locale = "gl"; + arch = "linux-x86_64"; + sha256 = "cfc32d3e7e3ba5379895a8b348d9399bd3962a819d0677f14a365f6e0c314676"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/gn/firefox-84.0b4.tar.bz2"; + locale = "gn"; + arch = "linux-x86_64"; + sha256 = "b2b5e826540d3f9b52d67e092fa755b26a34ea9acd0cb1c69eb6f0bc332354d0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/gu-IN/firefox-84.0b4.tar.bz2"; + locale = "gu-IN"; + arch = "linux-x86_64"; + sha256 = "497b8a954ed2c9fa13e207462730dd39d2d0de10a38e3762dac3ef1fbd36282c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/he/firefox-84.0b4.tar.bz2"; + locale = "he"; + arch = "linux-x86_64"; + sha256 = "8cdac2e9d2cf10171f2744727ddd80e21a4d46e2082947e49f4a255f174db968"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/hi-IN/firefox-84.0b4.tar.bz2"; + locale = "hi-IN"; + arch = "linux-x86_64"; + sha256 = "d37c55e60329220de3d792894d7b801adf7dc7ab8ff4ab39bd2e24b59443b973"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/hr/firefox-84.0b4.tar.bz2"; + locale = "hr"; + arch = "linux-x86_64"; + sha256 = "bebb6709dd3be119be45d9fdb0bac41b81514d78a384a221e2ffbb51b46dbea8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/hsb/firefox-84.0b4.tar.bz2"; + locale = "hsb"; + arch = "linux-x86_64"; + sha256 = "c43aea7fdd8a57653d6d9af4aa7c0be6e860f5292366ddd91c5860dfde2ee1bf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/hu/firefox-84.0b4.tar.bz2"; + locale = "hu"; + arch = "linux-x86_64"; + sha256 = "71e6b509dd3a6937d9851c262fc7a1bc9e551cbe0515089586fc22098bc51151"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/hy-AM/firefox-84.0b4.tar.bz2"; + locale = "hy-AM"; + arch = "linux-x86_64"; + sha256 = "c92eaf9f6bfa97651075d2342e45b988ae89c1a4cb55559dad71bfae5912ee83"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ia/firefox-84.0b4.tar.bz2"; + locale = "ia"; + arch = "linux-x86_64"; + sha256 = "3c71aafb7dddcd3f9bcc8e169281614ac1087400d1d0ba02afb18c68b1914128"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/id/firefox-84.0b4.tar.bz2"; + locale = "id"; + arch = "linux-x86_64"; + sha256 = "8075ef0b1d7eb2fc6141262cbb0d3831c3d8508eb43d3e9e142d96946ed2036d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/is/firefox-84.0b4.tar.bz2"; + locale = "is"; + arch = "linux-x86_64"; + sha256 = "5ef96d77bea5c94e7147a5657d76eb5c7f206208a0464245242cca3fc7fb79f0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/it/firefox-84.0b4.tar.bz2"; + locale = "it"; + arch = "linux-x86_64"; + sha256 = "eb76a1f3bd1ac065772d4ea4a435c53b5f7b1d5b643c7b62b7ccfee205ea4e81"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ja/firefox-84.0b4.tar.bz2"; + locale = "ja"; + arch = "linux-x86_64"; + sha256 = "80b644648b9e40ed592ab9ea2b9d7f1e2abcf8d6b0f925aa57cd6cf28d53dcf0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ka/firefox-84.0b4.tar.bz2"; + locale = "ka"; + arch = "linux-x86_64"; + sha256 = "03c34e7b08a8b6140e612739118c35b05dcdef1257b4857d2fda87a1cf8852ff"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/kab/firefox-84.0b4.tar.bz2"; + locale = "kab"; + arch = "linux-x86_64"; + sha256 = "419a4758cf2e2e24968f4da384dbfb03ef8398713c6070ab29ce379772168f18"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/kk/firefox-84.0b4.tar.bz2"; + locale = "kk"; + arch = "linux-x86_64"; + sha256 = "cfe96420e125dd12c9a9e79e45a8d7ee260d1957abddab5ed887afd1a1e3f499"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/km/firefox-84.0b4.tar.bz2"; + locale = "km"; + arch = "linux-x86_64"; + sha256 = "4b3599a9b30132b6105e4bbda7de370e54e21d8e498bb3c4c3d9807282fbf246"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/kn/firefox-84.0b4.tar.bz2"; + locale = "kn"; + arch = "linux-x86_64"; + sha256 = "5da3ddc9d9824e3ba59e1cdc89ee3fb8900c661faec1f539c829d0917be5d4d1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ko/firefox-84.0b4.tar.bz2"; + locale = "ko"; + arch = "linux-x86_64"; + sha256 = "2db9a494693091832e578959144d172d5135b82bbf44c041949da8ffec2de9dc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/lij/firefox-84.0b4.tar.bz2"; + locale = "lij"; + arch = "linux-x86_64"; + sha256 = "2219d5235f0ed9d2015ead5782976727d2b7103afd987eb445f3f274856e6af6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/lt/firefox-84.0b4.tar.bz2"; + locale = "lt"; + arch = "linux-x86_64"; + sha256 = "a335e0d835bcc7ae9563bb3efe6b926ad71e08f3ccbd164aa2b9f257acd1341d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/lv/firefox-84.0b4.tar.bz2"; + locale = "lv"; + arch = "linux-x86_64"; + sha256 = "1f89f8f2715254ef335af9b01ca1503caecb1c93b1a900ee1643c3f9e00c6821"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/mk/firefox-84.0b4.tar.bz2"; + locale = "mk"; + arch = "linux-x86_64"; + sha256 = "86eb9f1e8189ce45c03925337a90f1b204dbdc902c1c4a817a924410a26b0048"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/mr/firefox-84.0b4.tar.bz2"; + locale = "mr"; + arch = "linux-x86_64"; + sha256 = "d5214647403f85c5f7a95871e8d6fb4d4c448af92e6475841fd8474857f21067"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ms/firefox-84.0b4.tar.bz2"; + locale = "ms"; + arch = "linux-x86_64"; + sha256 = "23af07562748448a35242a6cd77bce25a5576d2b71177fb682da58adb21671e3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/my/firefox-84.0b4.tar.bz2"; + locale = "my"; + arch = "linux-x86_64"; + sha256 = "bfec2f3ad0853fb36ec4aac9ad97ba14d30a275eff2582c2e9df600b5940c004"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/nb-NO/firefox-84.0b4.tar.bz2"; + locale = "nb-NO"; + arch = "linux-x86_64"; + sha256 = "32be6fe8aa661f6098b4600d824846738664f254ecd4ab0d0a1e705b28a94e74"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ne-NP/firefox-84.0b4.tar.bz2"; + locale = "ne-NP"; + arch = "linux-x86_64"; + sha256 = "dfa3e6b9f31fa716a2c80fda07c24717a526ef96033b5b1861fcdad43c99b29e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/nl/firefox-84.0b4.tar.bz2"; + locale = "nl"; + arch = "linux-x86_64"; + sha256 = "e253d963b66855c44f41c43baba1b5c952b37dd1b83aac8243c60581ca674a49"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/nn-NO/firefox-84.0b4.tar.bz2"; + locale = "nn-NO"; + arch = "linux-x86_64"; + sha256 = "5d9b90cdee03a544a78f44d4f0566b5b59ae802af4fa60367a1a4836c01197f1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/oc/firefox-84.0b4.tar.bz2"; + locale = "oc"; + arch = "linux-x86_64"; + sha256 = "b37f9a283d9dd2ff9e8998d83e0c147bfbb75e4b64b3936cb344243e1277c370"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/pa-IN/firefox-84.0b4.tar.bz2"; + locale = "pa-IN"; + arch = "linux-x86_64"; + sha256 = "68f6bae2e6f064e22503145b5fd57d027899f23fcf109010a98397dd8c0d7cf6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/pl/firefox-84.0b4.tar.bz2"; + locale = "pl"; + arch = "linux-x86_64"; + sha256 = "789d6925c3b17f96bb92eef54c05fc8787f32ce2c9846931e185dc5a1de9f303"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/pt-BR/firefox-84.0b4.tar.bz2"; + locale = "pt-BR"; + arch = "linux-x86_64"; + sha256 = "329eecf74dc8d9d1d8f4578389553d92a368c972fcb2468e0b936f21508bd1bc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/pt-PT/firefox-84.0b4.tar.bz2"; + locale = "pt-PT"; + arch = "linux-x86_64"; + sha256 = "b30ba75dbd5f5ff3ff709722acdf36acf4de9993d230eb27996e81406779dd0a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/rm/firefox-84.0b4.tar.bz2"; + locale = "rm"; + arch = "linux-x86_64"; + sha256 = "ad90ce4fbcd094bebf77b36a63e38326c613bffb580743c9a4c19df845907dfb"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ro/firefox-84.0b4.tar.bz2"; + locale = "ro"; + arch = "linux-x86_64"; + sha256 = "8f7864bc6577724f20829ad79901d92775200860dd8c43bb2443c7bf22d7a435"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ru/firefox-84.0b4.tar.bz2"; + locale = "ru"; + arch = "linux-x86_64"; + sha256 = "8b52d5eaee53805422bb2fd6dd8b2e0c7a5b01feccbc6fb6c77e4fb8678d30a9"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/si/firefox-84.0b4.tar.bz2"; + locale = "si"; + arch = "linux-x86_64"; + sha256 = "a71df756e97f58271715f3d79a86c0407487dd5820500127cbd9373361bd016f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/sk/firefox-84.0b4.tar.bz2"; + locale = "sk"; + arch = "linux-x86_64"; + sha256 = "71eefff1538a2978d9e4e65fdd5a2322ad81ddfee33464c0d70b95eda1649fda"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/sl/firefox-84.0b4.tar.bz2"; + locale = "sl"; + arch = "linux-x86_64"; + sha256 = "91b2938be8230b6301fe3d15c6d9ba3f031c1e5fca886da228f47a2e0a2cd144"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/son/firefox-84.0b4.tar.bz2"; + locale = "son"; + arch = "linux-x86_64"; + sha256 = "57e456cd14418c41c2e5f8eb0ec6b0807459f41e15207f6997c7742fd3dc8a1a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/sq/firefox-84.0b4.tar.bz2"; + locale = "sq"; + arch = "linux-x86_64"; + sha256 = "0f343e2442523f0e422309cc36518484a242db4116f0e6b7dcfe251cdfea76cf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/sr/firefox-84.0b4.tar.bz2"; + locale = "sr"; + arch = "linux-x86_64"; + sha256 = "cf8fb723611506fff356cabd91a0ca3fdd9cc5d806167df6dd385438d467eeff"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/sv-SE/firefox-84.0b4.tar.bz2"; + locale = "sv-SE"; + arch = "linux-x86_64"; + sha256 = "258020bbc7a75139fee340e50d41676d234be19c931f0228485f06fcab2eef81"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ta/firefox-84.0b4.tar.bz2"; + locale = "ta"; + arch = "linux-x86_64"; + sha256 = "7783166c0f9ceed0f7d037c1e92b988818a70522945af2c96db958966eed8b66"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/te/firefox-84.0b4.tar.bz2"; + locale = "te"; + arch = "linux-x86_64"; + sha256 = "02662946b3506da6432c48eb1c7e0f522ffaed2abcfcc474332a799ef3be2b92"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/th/firefox-84.0b4.tar.bz2"; + locale = "th"; + arch = "linux-x86_64"; + sha256 = "1592b372b8e767e5b7369f356fb733a2daf51b4f45c8c4c94041845d63b3c604"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/tl/firefox-84.0b4.tar.bz2"; + locale = "tl"; + arch = "linux-x86_64"; + sha256 = "2b831feaae729c674e8a9ee207dea007df100bbbd8cf7553791aee3eede37224"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/tr/firefox-84.0b4.tar.bz2"; + locale = "tr"; + arch = "linux-x86_64"; + sha256 = "aedf8b7684f204109e42a3797ba00bd7a8c5bd3f827c31ea3fd4eea1679d8af5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/trs/firefox-84.0b4.tar.bz2"; + locale = "trs"; + arch = "linux-x86_64"; + sha256 = "232cae54f6120a47455fdd7e0d88dde1f64d5a1931bcd7d54f6bf8bd376583e8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/uk/firefox-84.0b4.tar.bz2"; + locale = "uk"; + arch = "linux-x86_64"; + sha256 = "e00de7cbe1f00aa082f9a448857cc19f011bb1d5b579e79457bb0dfc72b7a12d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/ur/firefox-84.0b4.tar.bz2"; + locale = "ur"; + arch = "linux-x86_64"; + sha256 = "7ece4d8af476eef174c0c175b65841da8d826702fb255587c2e1d259bb9ef3ba"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/uz/firefox-84.0b4.tar.bz2"; + locale = "uz"; + arch = "linux-x86_64"; + sha256 = "09c7e7d641f703404aa7927860f2924e6be376b2e39b1f0fe012dc87469edb62"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/vi/firefox-84.0b4.tar.bz2"; + locale = "vi"; + arch = "linux-x86_64"; + sha256 = "18121867e6b8c2a52c5324f653f82afbae97481b5ac3df811e881ec39bbb3b0e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/xh/firefox-84.0b4.tar.bz2"; + locale = "xh"; + arch = "linux-x86_64"; + sha256 = "04f5bb96ef9002eeb0869236f70168e7cbd7842b8e12b66dd6d5d67db9acd28a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/zh-CN/firefox-84.0b4.tar.bz2"; + locale = "zh-CN"; + arch = "linux-x86_64"; + sha256 = "142286cf9136bcb9b6af7ea1df3cf77821c0793ab7b9fe533a2963c453f45a7d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-x86_64/zh-TW/firefox-84.0b4.tar.bz2"; + locale = "zh-TW"; + arch = "linux-x86_64"; + sha256 = "fef32e5817140bbcb6d1b614a72a29523235606192078eb04420ff7a2453cb9a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ach/firefox-84.0b4.tar.bz2"; + locale = "ach"; + arch = "linux-i686"; + sha256 = "40e9b7a738e06cec731c69b659b14ca48b119ae20016e0214e1160edf03919b0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/af/firefox-84.0b4.tar.bz2"; + locale = "af"; + arch = "linux-i686"; + sha256 = "9bb05361a51f836b2de5614127f8df768e504f4d5bc136e3f169741098f0bcbd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/an/firefox-84.0b4.tar.bz2"; + locale = "an"; + arch = "linux-i686"; + sha256 = "ee62418444c76b709204962ed47af8ef3d61b80e628600201b5a12293651c70d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ar/firefox-84.0b4.tar.bz2"; + locale = "ar"; + arch = "linux-i686"; + sha256 = "10b5d4f1616e078bf83ab5ff942dabe89a8eaca63f24e96b53726dfb2bc9e36b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ast/firefox-84.0b4.tar.bz2"; + locale = "ast"; + arch = "linux-i686"; + sha256 = "a4e5ccae125edaa0696b696a5342320707f0c39c8985437b6aed60faede71de0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/az/firefox-84.0b4.tar.bz2"; + locale = "az"; + arch = "linux-i686"; + sha256 = "c13d9ed183c7b9256801708014f38405749cdfcead9f243e80eef78d06a9b78e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/be/firefox-84.0b4.tar.bz2"; + locale = "be"; + arch = "linux-i686"; + sha256 = "57d8eafc3d45784dbad71eb49d5a4c0483d939719b43b0f16e4db1d5a96ff4a8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/bg/firefox-84.0b4.tar.bz2"; + locale = "bg"; + arch = "linux-i686"; + sha256 = "0a65ad71cc9d97277535f07a8dbc7ca248508c24dea8520f92fecbb806f87a31"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/bn/firefox-84.0b4.tar.bz2"; + locale = "bn"; + arch = "linux-i686"; + sha256 = "3cead08f4d746def6cfb909107f4739400498c970f10fbd542259c04b84b5852"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/br/firefox-84.0b4.tar.bz2"; + locale = "br"; + arch = "linux-i686"; + sha256 = "40c6e963e8e52ef51cd4d4e63d501f2a6cecec1800541941458b896ad90e5b93"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/bs/firefox-84.0b4.tar.bz2"; + locale = "bs"; + arch = "linux-i686"; + sha256 = "1e9df53642c442ead4318b0cc886653fdfcecf5275d6e7218acb390bb13e0021"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ca-valencia/firefox-84.0b4.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-i686"; + sha256 = "3b5699dad93291921979fc6da21d16f94ef471e9a8ef3d877001400ba4abe316"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ca/firefox-84.0b4.tar.bz2"; + locale = "ca"; + arch = "linux-i686"; + sha256 = "c52b9cc25dc72eeb6ef3e7c3add4066c005399afdba2cd0964e695a891a1d314"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/cak/firefox-84.0b4.tar.bz2"; + locale = "cak"; + arch = "linux-i686"; + sha256 = "355df19615fddd85c51b033a413a3de524f19fb2d97a2ba77f3b8001b231338f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/cs/firefox-84.0b4.tar.bz2"; + locale = "cs"; + arch = "linux-i686"; + sha256 = "e10f35795f19ea10c4de34687eacad6f9bd863002e9d66b87cbace01b97c8628"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/cy/firefox-84.0b4.tar.bz2"; + locale = "cy"; + arch = "linux-i686"; + sha256 = "f2fd90b19e8c4ac98bd6ee262084ef7842e52a304abe10cfcda2fc14ccb5ce30"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/da/firefox-84.0b4.tar.bz2"; + locale = "da"; + arch = "linux-i686"; + sha256 = "01e468f3a445276aea85425b4b8a58e44a2e4cf8552a02aa3d4d31775bff9575"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/de/firefox-84.0b4.tar.bz2"; + locale = "de"; + arch = "linux-i686"; + sha256 = "9dd3d806a4ff60c9cfd5b81cdf212f72c281f75ce554555cfd443f0696f700d5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/dsb/firefox-84.0b4.tar.bz2"; + locale = "dsb"; + arch = "linux-i686"; + sha256 = "eb26cbad496bc1c4f97e6027a1f2cd9166d479a503a3f0ac566a766c86bdf8b5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/el/firefox-84.0b4.tar.bz2"; + locale = "el"; + arch = "linux-i686"; + sha256 = "e173622f06f64156d749d0f56d98be72f067077c3e41090aa16a3b0c6d7a5e43"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/en-CA/firefox-84.0b4.tar.bz2"; + locale = "en-CA"; + arch = "linux-i686"; + sha256 = "c1c6aa503e1565cb0c0239d562f11322265a7bce4005211b8007579f8f56c318"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/en-GB/firefox-84.0b4.tar.bz2"; + locale = "en-GB"; + arch = "linux-i686"; + sha256 = "57b2670f515e2a17c10df602d93a6960e5c4710462098d89568efd446e4480e5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/en-US/firefox-84.0b4.tar.bz2"; + locale = "en-US"; + arch = "linux-i686"; + sha256 = "81cf4a4fe610de3342bdea340d450ff67c594e7e4924a08b6b69de75510da698"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/eo/firefox-84.0b4.tar.bz2"; + locale = "eo"; + arch = "linux-i686"; + sha256 = "dd61c4bacfe39f7887c6d21d139df6a2df17f263c4be5689f5f9dd6bb4ee6e63"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/es-AR/firefox-84.0b4.tar.bz2"; + locale = "es-AR"; + arch = "linux-i686"; + sha256 = "3ae8695c57befa3552033bcb867b48f9ba491a08e31168ba22901fcb3276a3af"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/es-CL/firefox-84.0b4.tar.bz2"; + locale = "es-CL"; + arch = "linux-i686"; + sha256 = "5ae14208cdbf0dd50edecb8a56bfe7dba0e7520f2ef135abb092761acc8630ae"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/es-ES/firefox-84.0b4.tar.bz2"; + locale = "es-ES"; + arch = "linux-i686"; + sha256 = "d786cf3b623a05e5156b020a436897525e80117ab7fa9f25ca42fca9fb4c0eba"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/es-MX/firefox-84.0b4.tar.bz2"; + locale = "es-MX"; + arch = "linux-i686"; + sha256 = "c2ec749bb5befffd81189503d87a57bda462897bba858904924ae999923a4e42"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/et/firefox-84.0b4.tar.bz2"; + locale = "et"; + arch = "linux-i686"; + sha256 = "7a2e1078ff1a3bb975baa5488f89e8161e20354d7f55b98c964efa5bfce6f696"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/eu/firefox-84.0b4.tar.bz2"; + locale = "eu"; + arch = "linux-i686"; + sha256 = "c635006a367f68bfabad7a3874f3333ac3f486f0001ca9641ac8ce12dd9bd01e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/fa/firefox-84.0b4.tar.bz2"; + locale = "fa"; + arch = "linux-i686"; + sha256 = "f897a5d316c436fc20d8c2737902e29dfd0ece3c9ffdb90fda2fa454ad398257"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ff/firefox-84.0b4.tar.bz2"; + locale = "ff"; + arch = "linux-i686"; + sha256 = "3a31d43cb5242a0aec516d8fe99dc916144e8b7250b81c7de0b1361b19f067fa"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/fi/firefox-84.0b4.tar.bz2"; + locale = "fi"; + arch = "linux-i686"; + sha256 = "50261499bd4725f08684c9042056c9da2029f55b0dee4a856a9de661412c06e8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/fr/firefox-84.0b4.tar.bz2"; + locale = "fr"; + arch = "linux-i686"; + sha256 = "7b793590a975a64b6fcfcccb4e6c07cd5346ec457af1ae31b5fb1032d4217c64"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/fy-NL/firefox-84.0b4.tar.bz2"; + locale = "fy-NL"; + arch = "linux-i686"; + sha256 = "468c7463503a34de44a74ff6a751e8614abbe6bd23f39f50308f23000614331e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ga-IE/firefox-84.0b4.tar.bz2"; + locale = "ga-IE"; + arch = "linux-i686"; + sha256 = "92b49316d122c8c91995766e28387d5587955e022f844c7a85fe491ca602e222"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/gd/firefox-84.0b4.tar.bz2"; + locale = "gd"; + arch = "linux-i686"; + sha256 = "4bd2901b705f99bd1889b21f4af9ba7dd022f608960807f96f115a110c96a80a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/gl/firefox-84.0b4.tar.bz2"; + locale = "gl"; + arch = "linux-i686"; + sha256 = "391d62de840d53d531130fef0018c71add0ef7134fbc758eb869da7c1cc3b5f3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/gn/firefox-84.0b4.tar.bz2"; + locale = "gn"; + arch = "linux-i686"; + sha256 = "d51f75a7718e78bfb1e9d0974db0a404294e577e186794d3480778c7facce418"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/gu-IN/firefox-84.0b4.tar.bz2"; + locale = "gu-IN"; + arch = "linux-i686"; + sha256 = "7cbbf4846153f79fc72e217872fd64b92ed8968aaf618eeededa375ac268a12e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/he/firefox-84.0b4.tar.bz2"; + locale = "he"; + arch = "linux-i686"; + sha256 = "44c0bfad535a4e3c225d948d87935e08e5d77ea22638e971cc833877462edc32"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/hi-IN/firefox-84.0b4.tar.bz2"; + locale = "hi-IN"; + arch = "linux-i686"; + sha256 = "fc64673429972967238b5bb101beb2117cfdb0360e405d4d3b53f013791c0b8c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/hr/firefox-84.0b4.tar.bz2"; + locale = "hr"; + arch = "linux-i686"; + sha256 = "f256eb4e655a14b1a084af7f72ef4673d33b42d1c23ffc1ff3b4ede42d966246"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/hsb/firefox-84.0b4.tar.bz2"; + locale = "hsb"; + arch = "linux-i686"; + sha256 = "9e1e478e501875ac259e22287aece77f1bbc1f898355ab1c29fa26543b38acbb"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/hu/firefox-84.0b4.tar.bz2"; + locale = "hu"; + arch = "linux-i686"; + sha256 = "e8605e1b9d2c92c2eafa35cbe647bdda6af22eb030d8656262473b0b17650de9"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/hy-AM/firefox-84.0b4.tar.bz2"; + locale = "hy-AM"; + arch = "linux-i686"; + sha256 = "be21fea69e27ce54498b6b003c1db20b42d7d52702ac56d1a1fc2c6fc24558f1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ia/firefox-84.0b4.tar.bz2"; + locale = "ia"; + arch = "linux-i686"; + sha256 = "039f50fc10d95bdef4468174a8486f45bbf9313e1b9b6cecb0d094bb3766ca9c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/id/firefox-84.0b4.tar.bz2"; + locale = "id"; + arch = "linux-i686"; + sha256 = "ecd6f3e031529e1fed8fb7ae77bf6e0497c9ad0e4996e31a86c4b79489ba9811"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/is/firefox-84.0b4.tar.bz2"; + locale = "is"; + arch = "linux-i686"; + sha256 = "1f6fbf55f1384141826a4b6a39ec617cc798b0c0a0e1ee02d6cd65a79d6784a9"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/it/firefox-84.0b4.tar.bz2"; + locale = "it"; + arch = "linux-i686"; + sha256 = "73eebb1d351b5d746d3447c7a68d7a906c4db6df8cd257c6a048ea16cf908e64"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ja/firefox-84.0b4.tar.bz2"; + locale = "ja"; + arch = "linux-i686"; + sha256 = "ff1c630c6c41cd31c8ecab5fc48e8879dbc4aa295492368cae93061de6558b64"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ka/firefox-84.0b4.tar.bz2"; + locale = "ka"; + arch = "linux-i686"; + sha256 = "b6976def40cfd05543b70597347ea7c632c591660a2dd08332f81411a6ce6723"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/kab/firefox-84.0b4.tar.bz2"; + locale = "kab"; + arch = "linux-i686"; + sha256 = "403bd985ff7ab44324d12c8c7f1386eec9fbae97ac9a0597d12d09d387686db4"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/kk/firefox-84.0b4.tar.bz2"; + locale = "kk"; + arch = "linux-i686"; + sha256 = "3860b0e8d53655669afcb4bece7637e9a1c0daa66d453e9548b2336eb45d94ad"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/km/firefox-84.0b4.tar.bz2"; + locale = "km"; + arch = "linux-i686"; + sha256 = "5753474371c7b8663d45f7f9591958afb9e9e2777df3e89840f6f34894ddf491"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/kn/firefox-84.0b4.tar.bz2"; + locale = "kn"; + arch = "linux-i686"; + sha256 = "d0dbeceacf93c3a581cc581e09507e401636350b763c8c9f5342b33a0640bd8e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ko/firefox-84.0b4.tar.bz2"; + locale = "ko"; + arch = "linux-i686"; + sha256 = "095930063eae8e3d6a78a6d9adb3d28cff0bb0c9ccdec977c8c80765a4c60560"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/lij/firefox-84.0b4.tar.bz2"; + locale = "lij"; + arch = "linux-i686"; + sha256 = "587bced8e4480eba25e8597ab6b838a4f18553dd44b4f0ff48f245406f78e896"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/lt/firefox-84.0b4.tar.bz2"; + locale = "lt"; + arch = "linux-i686"; + sha256 = "e214c23914e05152973428f5ed1df20054df054848d99ff23e5eb09e19b4557c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/lv/firefox-84.0b4.tar.bz2"; + locale = "lv"; + arch = "linux-i686"; + sha256 = "67657d4abb394ef76d37c321625d99dcf228ee00cc109e6d1c80cb3659db9879"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/mk/firefox-84.0b4.tar.bz2"; + locale = "mk"; + arch = "linux-i686"; + sha256 = "bac0e98b7a68dda441195cbebcdbea583f104188112449b14723c1086c3c4f19"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/mr/firefox-84.0b4.tar.bz2"; + locale = "mr"; + arch = "linux-i686"; + sha256 = "125a63c875f4be6e246fa01289386295172d999e0e523c1171578adea24b022e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ms/firefox-84.0b4.tar.bz2"; + locale = "ms"; + arch = "linux-i686"; + sha256 = "6dc44f34449c915e93bf9c012ce7286b16d6418ca8f576d8a008b7ceb90bcb13"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/my/firefox-84.0b4.tar.bz2"; + locale = "my"; + arch = "linux-i686"; + sha256 = "af5e2f1f9dcca84f41d3701035a00fc6b581aee2bf00f9f926928b99ab42d06e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/nb-NO/firefox-84.0b4.tar.bz2"; + locale = "nb-NO"; + arch = "linux-i686"; + sha256 = "d168631cc1518e17cc9cd85f481f1047f6ae7df593d9197de5710fca0d87965b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ne-NP/firefox-84.0b4.tar.bz2"; + locale = "ne-NP"; + arch = "linux-i686"; + sha256 = "4b6065882ddd9e02441eff830808b31e6104d076cefed8386cff4ec7cb12330a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/nl/firefox-84.0b4.tar.bz2"; + locale = "nl"; + arch = "linux-i686"; + sha256 = "96298283a2dbd9e3242c27551ee29829b21c8b9a32ca33b85da3142c47084dd5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/nn-NO/firefox-84.0b4.tar.bz2"; + locale = "nn-NO"; + arch = "linux-i686"; + sha256 = "19475301d3d93a633a1555b4436d63546a71160a992daa760a8c76a808791b89"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/oc/firefox-84.0b4.tar.bz2"; + locale = "oc"; + arch = "linux-i686"; + sha256 = "48af4af195173b541d76bb623acc357c3a2a8d03227406a21de89ab2d6c8c757"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/pa-IN/firefox-84.0b4.tar.bz2"; + locale = "pa-IN"; + arch = "linux-i686"; + sha256 = "582ec12fbe2f8b07f8f4ae11ddf05c62db2d84508ee63ad6bfead9493a1424cc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/pl/firefox-84.0b4.tar.bz2"; + locale = "pl"; + arch = "linux-i686"; + sha256 = "df8fcb5fe32325d45fbc1c9349065cd2d7f283e6a33d944282f3ed948c1174ee"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/pt-BR/firefox-84.0b4.tar.bz2"; + locale = "pt-BR"; + arch = "linux-i686"; + sha256 = "fa48bc301c9b7dac4802b50980c573039648eb41bf0c0fb3ef75d0ba1dce9b67"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/pt-PT/firefox-84.0b4.tar.bz2"; + locale = "pt-PT"; + arch = "linux-i686"; + sha256 = "b0075346738d9a5f61fe4c3265c3a50f639f017551d3bdb2479e622d9561bd33"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/rm/firefox-84.0b4.tar.bz2"; + locale = "rm"; + arch = "linux-i686"; + sha256 = "c9ad20ff328c8c0693cab58fbfb1d6c1f85bb63fdd20eb8d371e82d4df5c2e50"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ro/firefox-84.0b4.tar.bz2"; + locale = "ro"; + arch = "linux-i686"; + sha256 = "7816302b6f70c0e24b848d3d396876ee0d870d90561c37e440bb8b7722f54ff2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ru/firefox-84.0b4.tar.bz2"; + locale = "ru"; + arch = "linux-i686"; + sha256 = "8f4969a16f4e70b59dd2da78b73532ff39589c984512d16fcd7106d2cf503342"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/si/firefox-84.0b4.tar.bz2"; + locale = "si"; + arch = "linux-i686"; + sha256 = "0dfc4c1c797366ac9e65489b07de756a1b03b5498c9e4a6a10ac0d3a60345471"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/sk/firefox-84.0b4.tar.bz2"; + locale = "sk"; + arch = "linux-i686"; + sha256 = "5e16b451058d64ea0cb61fa92e17fd72e591009803170b0b220237cac7180167"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/sl/firefox-84.0b4.tar.bz2"; + locale = "sl"; + arch = "linux-i686"; + sha256 = "36216a3b474d3fd1d27886495f92eca83d24a465690efe7356ca9e7e4c08163d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/son/firefox-84.0b4.tar.bz2"; + locale = "son"; + arch = "linux-i686"; + sha256 = "1116bbb70b7ff8538d3ce4e7df190bd152c98889d1612fa8485cb0197a83868c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/sq/firefox-84.0b4.tar.bz2"; + locale = "sq"; + arch = "linux-i686"; + sha256 = "006948f771f4964f5f4f078615cbb85aee23051e371ff7b871caee7c4659fe64"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/sr/firefox-84.0b4.tar.bz2"; + locale = "sr"; + arch = "linux-i686"; + sha256 = "20b0b9d605603e525d046424d290e6b2a0c963c0eae2a9a6c6ccdb72a9803e9e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/sv-SE/firefox-84.0b4.tar.bz2"; + locale = "sv-SE"; + arch = "linux-i686"; + sha256 = "a132b97019c75aa8929830f873974e1ab36b69ca7e3c9ab44dd2a5b11bbe4f7f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ta/firefox-84.0b4.tar.bz2"; + locale = "ta"; + arch = "linux-i686"; + sha256 = "3f24d965ee5c89edd447e8a52a0241a5d1cedb0aae6ed1ad1c212ba4dbed210a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/te/firefox-84.0b4.tar.bz2"; + locale = "te"; + arch = "linux-i686"; + sha256 = "2b65c7bb7df93b2bdffa687bd4309352f0d73ecdd66767db0db860f33f17c6a6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/th/firefox-84.0b4.tar.bz2"; + locale = "th"; + arch = "linux-i686"; + sha256 = "21e2dca4e194a38de97b9b717150441bdd32466ee43e721f41afde004bc8e3e2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/tl/firefox-84.0b4.tar.bz2"; + locale = "tl"; + arch = "linux-i686"; + sha256 = "9f4dc351f5244b0837a95d4afbfa0af373fe056e5eb106a2b177a57ba4c85ee7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/tr/firefox-84.0b4.tar.bz2"; + locale = "tr"; + arch = "linux-i686"; + sha256 = "50cabe6fea43e2212d0b0a9a5a382e085fdabc3ff6b6b0694b8f9d3d327c3ffc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/trs/firefox-84.0b4.tar.bz2"; + locale = "trs"; + arch = "linux-i686"; + sha256 = "c4db90a9a0677430fa591cc387bf1255f260208a4907cb760649cd7a6db03808"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/uk/firefox-84.0b4.tar.bz2"; + locale = "uk"; + arch = "linux-i686"; + sha256 = "7c92d619dd827a9f7ef9297f784cff582aba44684dca91c3b9873337b4318fb3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/ur/firefox-84.0b4.tar.bz2"; + locale = "ur"; + arch = "linux-i686"; + sha256 = "ef46130577072c6fe6b14aa0710c75344dea46124093f483db47cbc8c9cb4ec6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/uz/firefox-84.0b4.tar.bz2"; + locale = "uz"; + arch = "linux-i686"; + sha256 = "34c28440a7772a7fcf7f920be760f92057d813648372fe7cb8ae9f2c3fb3a846"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/vi/firefox-84.0b4.tar.bz2"; + locale = "vi"; + arch = "linux-i686"; + sha256 = "c02c1737b56e1ae4f20ffa9abd392fb69f19d68348341977d0f39bfefab465b6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/xh/firefox-84.0b4.tar.bz2"; + locale = "xh"; + arch = "linux-i686"; + sha256 = "6be6defb443480c536639d99d124d8c636d70f049f126a793d627c131035c9c2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/zh-CN/firefox-84.0b4.tar.bz2"; + locale = "zh-CN"; + arch = "linux-i686"; + sha256 = "454af78f3ea4aa00676c4b97dff278dd404116e1da7993b5a2593167d11db885"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/84.0b4/linux-i686/zh-TW/firefox-84.0b4.tar.bz2"; + locale = "zh-TW"; + arch = "linux-i686"; + sha256 = "7e6b1b0ad56916759b01df06b23bb6a23b0c59815538cb1edb3e95edf7b772d7"; + } + ]; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix new file mode 100644 index 000000000000..d86b9d6f9870 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -0,0 +1,206 @@ +{ lib, stdenv, fetchurl, config, wrapGAppsHook +, alsaLib +, atk +, cairo +, curl +, cups +, dbus-glib +, dbus +, fontconfig +, freetype +, gdk-pixbuf +, glib +, glibc +, gtk2 +, gtk3 +, kerberos +, libX11 +, libXScrnSaver +, libxcb +, libXcomposite +, libXcursor +, libXdamage +, libXext +, libXfixes +, libXi +, libXinerama +, libXrender +, libXt +, libcanberra +, libnotify +, gnome3 +, libGLU, libGL +, nspr +, nss +, pango +, libheimdal +, libpulseaudio +, systemd +, channel +, generated +, writeScript +, writeText +, xidel +, coreutils +, gnused +, gnugrep +, gnupg +, ffmpeg +, runtimeShell +, mesa # firefox wants gbm for drm+dmabuf +, systemLocale ? config.i18n.defaultLocale or "en-US" +}: + +let + + inherit (generated) version sources; + + mozillaPlatforms = { + i686-linux = "linux-i686"; + x86_64-linux = "linux-x86_64"; + }; + + arch = mozillaPlatforms.${stdenv.hostPlatform.system}; + + isPrefixOf = prefix: string: + builtins.substring 0 (builtins.stringLength prefix) string == prefix; + + sourceMatches = locale: source: + (isPrefixOf source.locale locale) && source.arch == arch; + + policies = { + DisableAppUpdate = true; + }; + + policiesJson = writeText "no-update-firefox-policy.json" (builtins.toJSON { inherit policies; }); + + defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources; + + source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources; + + name = "firefox-${channel}-bin-unwrapped-${version}"; + +in + +stdenv.mkDerivation { + inherit name; + + src = fetchurl { inherit (source) url sha256; }; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ]; + + libPath = stdenv.lib.makeLibraryPath + [ stdenv.cc.cc + alsaLib + (lib.getDev alsaLib) + atk + cairo + curl + cups + dbus-glib + dbus + fontconfig + freetype + gdk-pixbuf + glib + glibc + gtk2 + gtk3 + kerberos + mesa + libX11 + libXScrnSaver + libXcomposite + libXcursor + libxcb + libXdamage + libXext + libXfixes + libXi + libXinerama + libXrender + libXt + libcanberra + libnotify + libGLU libGL + nspr + nss + pango + libheimdal + libpulseaudio + (lib.getDev libpulseaudio) + systemd + ffmpeg + ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [ + stdenv.cc.cc + ]; + + inherit gtk3; + + buildInputs = [ wrapGAppsHook gtk3 gnome3.adwaita-icon-theme ]; + + # "strip" after "patchelf" may break binaries. + # See: https://github.com/NixOS/patchelf/issues/10 + dontStrip = true; + dontPatchELF = true; + + patchPhase = '' + # Don't download updates from Mozilla directly + echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js + ''; + + installPhase = + '' + mkdir -p "$prefix/usr/lib/firefox-bin-${version}" + cp -r * "$prefix/usr/lib/firefox-bin-${version}" + + mkdir -p "$out/bin" + ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/" + + for executable in \ + firefox firefox-bin plugin-container \ + updater crashreporter webapprt-stub + do + if [ -e "$out/usr/lib/firefox-bin-${version}/$executable" ]; then + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + "$out/usr/lib/firefox-bin-${version}/$executable" + fi + done + + find . -executable -type f -exec \ + patchelf --set-rpath "$libPath" \ + "$out/usr/lib/firefox-bin-${version}/{}" \; + + # wrapFirefox expects "$out/lib" instead of "$out/usr/lib" + ln -s "$out/usr/lib" "$out/lib" + + gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped") + + # See: https://github.com/mozilla/policy-templates/blob/master/README.md + mkdir -p "$out/lib/firefox-bin-${version}/distribution"; + ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json"; + ''; + + passthru.execdir = "/bin"; + passthru.ffmpegSupport = true; + passthru.gssSupport = true; + # update with: + # $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped + passthru.updateScript = import ./update.nix { + inherit name channel writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell; + baseUrl = + if channel == "devedition" + then "http://archive.mozilla.org/pub/devedition/releases/" + else "http://archive.mozilla.org/pub/firefox/releases/"; + }; + meta = with stdenv.lib; { + description = "Mozilla Firefox, free web browser (binary package)"; + homepage = "http://www.mozilla.org/firefox/"; + license = { + free = false; + url = "http://www.mozilla.org/en-US/foundation/trademarks/policy/"; + }; + platforms = builtins.attrNames mozillaPlatforms; + maintainers = with maintainers; [ taku0 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix new file mode 100644 index 000000000000..5f16fb1914ab --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix @@ -0,0 +1,965 @@ +{ + version = "84.0b4"; + sources = [ + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ach/firefox-84.0b4.tar.bz2"; + locale = "ach"; + arch = "linux-x86_64"; + sha256 = "6b548e6e2753e4a0ad2ad5968c063b6f4c7866c297314ba9e807161f7c757275"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/af/firefox-84.0b4.tar.bz2"; + locale = "af"; + arch = "linux-x86_64"; + sha256 = "f75bfba14ae1a248918c0e433c343328305eb6372dd80aa343506437f631f2b6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/an/firefox-84.0b4.tar.bz2"; + locale = "an"; + arch = "linux-x86_64"; + sha256 = "d2e972f7d345720a89081fce3b9257942c93bdeb2a5c7dcede3c30282407f159"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ar/firefox-84.0b4.tar.bz2"; + locale = "ar"; + arch = "linux-x86_64"; + sha256 = "2731722dbd097875bb797a555e9a0ba3843deb159f7917626d8e97c1a3005e7a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ast/firefox-84.0b4.tar.bz2"; + locale = "ast"; + arch = "linux-x86_64"; + sha256 = "4d626c7f293226e9e18e28d069b40f75914f9387553d54588c34e7dd70ce1ae9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/az/firefox-84.0b4.tar.bz2"; + locale = "az"; + arch = "linux-x86_64"; + sha256 = "01a647694a6aa2bbd8ad531197565593783946ad248d34f86550d28b8be5b52b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/be/firefox-84.0b4.tar.bz2"; + locale = "be"; + arch = "linux-x86_64"; + sha256 = "49639180573943a4bd4d0672c5dec969850b4bfceca00c37575c6d0f2d589a7e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/bg/firefox-84.0b4.tar.bz2"; + locale = "bg"; + arch = "linux-x86_64"; + sha256 = "c575261553cbc6afcc60650e21605e1298a122b975f6b6b2845a35725fe2ff25"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/bn/firefox-84.0b4.tar.bz2"; + locale = "bn"; + arch = "linux-x86_64"; + sha256 = "5c5ebe2bfaaa7ea16ca4285d9806f3ecef1b29b61e5018920db27e050a4ef521"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/br/firefox-84.0b4.tar.bz2"; + locale = "br"; + arch = "linux-x86_64"; + sha256 = "29c764eff10d3756f258f0ac5cc9bec14cc46bb66d804eaca5548cebbaa067d6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/bs/firefox-84.0b4.tar.bz2"; + locale = "bs"; + arch = "linux-x86_64"; + sha256 = "7730a4c1e7d4d791fe35f000bba72d3652fe7289eb95f5e77b426995a63ef412"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ca-valencia/firefox-84.0b4.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-x86_64"; + sha256 = "fe90ef596de4262d803fa282cce7b30c1c9bde896b31d7e47d8e862e38ca1037"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ca/firefox-84.0b4.tar.bz2"; + locale = "ca"; + arch = "linux-x86_64"; + sha256 = "f435a47a36affd5b59c7a6543f1c1c7e0dfead407138967a0f295dcd6093bed6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/cak/firefox-84.0b4.tar.bz2"; + locale = "cak"; + arch = "linux-x86_64"; + sha256 = "ec4968ccfaea0a975a4f56aaae8290387707570cf899d078438ac2cb98244fe7"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/cs/firefox-84.0b4.tar.bz2"; + locale = "cs"; + arch = "linux-x86_64"; + sha256 = "357c5372b6fade862671db66b90b3382749153c641bcd7c99f7b2a3c68c143fb"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/cy/firefox-84.0b4.tar.bz2"; + locale = "cy"; + arch = "linux-x86_64"; + sha256 = "5ce8f5e451fb2271635a2cada6c7b54a53936a1b912b777d54ce640cecb3d37e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/da/firefox-84.0b4.tar.bz2"; + locale = "da"; + arch = "linux-x86_64"; + sha256 = "ac790fdafd2875d180be2375937b38546dd77d6e9b8428f4d44a2b780b4db14f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/de/firefox-84.0b4.tar.bz2"; + locale = "de"; + arch = "linux-x86_64"; + sha256 = "6c5205a4d74da62927648f95a069ed6a68ab012f2cbe0c4cded3de8d40c3d325"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/dsb/firefox-84.0b4.tar.bz2"; + locale = "dsb"; + arch = "linux-x86_64"; + sha256 = "516308e19f0373b3ff75e2e114fc7f1d2d370cd4a0f63f8bf74704eced2e0d56"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/el/firefox-84.0b4.tar.bz2"; + locale = "el"; + arch = "linux-x86_64"; + sha256 = "d35a67fcfc8c5c334f55d12810bdcbaab6b9cb5fd3aaa75c79977accf7429445"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/en-CA/firefox-84.0b4.tar.bz2"; + locale = "en-CA"; + arch = "linux-x86_64"; + sha256 = "e8d36d76d791108a6e514a649eebc9c4814aa8ccd4b21728e56a4e9839eef803"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/en-GB/firefox-84.0b4.tar.bz2"; + locale = "en-GB"; + arch = "linux-x86_64"; + sha256 = "9bb695670d7ee7a3a35d9adeef579e33f076fc1eca717149a5078134f584bf70"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/en-US/firefox-84.0b4.tar.bz2"; + locale = "en-US"; + arch = "linux-x86_64"; + sha256 = "595b1004380ac96663c2d8889f02a681ad7c5c56e0f12cde4a26a6453d0a0ec5"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/eo/firefox-84.0b4.tar.bz2"; + locale = "eo"; + arch = "linux-x86_64"; + sha256 = "cb6ac56d074e91e2f5154c275c4c3a46e4392586451fdbba52fb419bbe085c64"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/es-AR/firefox-84.0b4.tar.bz2"; + locale = "es-AR"; + arch = "linux-x86_64"; + sha256 = "920e2aa05414fb72be7f24240636e7ce7b431776cc919c5a07c1361da3f66289"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/es-CL/firefox-84.0b4.tar.bz2"; + locale = "es-CL"; + arch = "linux-x86_64"; + sha256 = "9db297046da02c5c8e1f6d5ba0e4f6b35ec8b8d36335dd2f7933e49d86c207b3"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/es-ES/firefox-84.0b4.tar.bz2"; + locale = "es-ES"; + arch = "linux-x86_64"; + sha256 = "ed94f3ded8f803f956290976cfa41a5c46b42da7f3158b4283445ded15fdd789"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/es-MX/firefox-84.0b4.tar.bz2"; + locale = "es-MX"; + arch = "linux-x86_64"; + sha256 = "11e2a8b7084ea002c6efd92fc86529e2dd09afbe4fe52285a3165733af95e132"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/et/firefox-84.0b4.tar.bz2"; + locale = "et"; + arch = "linux-x86_64"; + sha256 = "0baa470895983b2c85f9ecc79f36fa1b6c8578c5bc22be76ef10d6e7f9e11ee9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/eu/firefox-84.0b4.tar.bz2"; + locale = "eu"; + arch = "linux-x86_64"; + sha256 = "271141d85b5a0338445945208d515ab9ec6452253abddb1860c31cd61458de4b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/fa/firefox-84.0b4.tar.bz2"; + locale = "fa"; + arch = "linux-x86_64"; + sha256 = "d467a6e1eff3b2edad56c6b8b58a7fe2d7fa5c07524fc0d567b660b29169ddf9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ff/firefox-84.0b4.tar.bz2"; + locale = "ff"; + arch = "linux-x86_64"; + sha256 = "4f117b8bd69c01cb6d38b927ab26cfe79fcd111fc9a4a2e53ae4ef936bc9806d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/fi/firefox-84.0b4.tar.bz2"; + locale = "fi"; + arch = "linux-x86_64"; + sha256 = "6eb9d0c0d1ef84abf0af2a873334dea463d728ef5aff398417e2ea3104a4503e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/fr/firefox-84.0b4.tar.bz2"; + locale = "fr"; + arch = "linux-x86_64"; + sha256 = "85d4b90fabcc03d3ac396bdba0749794bc3fe447c9f2ce793962a2acfc35918f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/fy-NL/firefox-84.0b4.tar.bz2"; + locale = "fy-NL"; + arch = "linux-x86_64"; + sha256 = "462e14991e34122e2275bedcd6776d9f8a75242c2b06d84ef3dadab08428d48d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ga-IE/firefox-84.0b4.tar.bz2"; + locale = "ga-IE"; + arch = "linux-x86_64"; + sha256 = "b0b7def94a250ec52fda4e4fe0de931209fe71eb06ce03de13bd7309c7f78d79"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/gd/firefox-84.0b4.tar.bz2"; + locale = "gd"; + arch = "linux-x86_64"; + sha256 = "e3bc980f579132b68cdf06b06abe2303430df239444971010ef420f5fe1599f0"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/gl/firefox-84.0b4.tar.bz2"; + locale = "gl"; + arch = "linux-x86_64"; + sha256 = "66b9c65dedd1b57cfa2d960a40df72dca473f39f1cc585e1406abc64d68b1ce5"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/gn/firefox-84.0b4.tar.bz2"; + locale = "gn"; + arch = "linux-x86_64"; + sha256 = "ad707ad91336de1c0d1f26fddebb95d25a8ff405bc3d576660ad9be0f5643939"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/gu-IN/firefox-84.0b4.tar.bz2"; + locale = "gu-IN"; + arch = "linux-x86_64"; + sha256 = "585c76f373ef5c3f3b86a6cef4dfcdbffe3e314ba737a3f514bcd871140e5aaf"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/he/firefox-84.0b4.tar.bz2"; + locale = "he"; + arch = "linux-x86_64"; + sha256 = "8f9ed5eb32fe9272f5adc22753997292cd2dab7b1368864b4f001eb0fffd7526"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/hi-IN/firefox-84.0b4.tar.bz2"; + locale = "hi-IN"; + arch = "linux-x86_64"; + sha256 = "22d8b3d494f3b0dc5e347c0fedd5ab2ba32690c02993bd2a9066a987bb87aea8"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/hr/firefox-84.0b4.tar.bz2"; + locale = "hr"; + arch = "linux-x86_64"; + sha256 = "c3a70593633985fcc8974364db75f2998e450359d4a8b621f23e95df24cf8e6b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/hsb/firefox-84.0b4.tar.bz2"; + locale = "hsb"; + arch = "linux-x86_64"; + sha256 = "30701d1b25536a45a6a5613cbff8ac83bdec08d6421f1e37d9f0ae9c39ab6856"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/hu/firefox-84.0b4.tar.bz2"; + locale = "hu"; + arch = "linux-x86_64"; + sha256 = "bcb63dc6211b5c24536062ed6f8a424edf0ad553187b298874d97f75d363b1ea"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/hy-AM/firefox-84.0b4.tar.bz2"; + locale = "hy-AM"; + arch = "linux-x86_64"; + sha256 = "0278018d35f7be3e4c8da080bcd86e2bf08a544bfd452136483d2b21f91c582e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ia/firefox-84.0b4.tar.bz2"; + locale = "ia"; + arch = "linux-x86_64"; + sha256 = "d5699f8b946bc551fea78389cc6e82a9ca58ca3a8a492cbe3b985ed655fd60d1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/id/firefox-84.0b4.tar.bz2"; + locale = "id"; + arch = "linux-x86_64"; + sha256 = "1e2c580382192e88094738a01bc99b7efda5a1010e1bb180e35b5701f03aef55"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/is/firefox-84.0b4.tar.bz2"; + locale = "is"; + arch = "linux-x86_64"; + sha256 = "a541657165e18212f97261b2aba391434246688451cc9f2b643a57891dc0eb1a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/it/firefox-84.0b4.tar.bz2"; + locale = "it"; + arch = "linux-x86_64"; + sha256 = "5ecf7a03bc8e8d6329db2bca4296cf0d07b943ec9c9e0cbb2ffdaa4ecffcdf3a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ja/firefox-84.0b4.tar.bz2"; + locale = "ja"; + arch = "linux-x86_64"; + sha256 = "80d6148dbfa8e95e5292699b5326171f6a44eaa30dc4c84b233191a8505a248b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ka/firefox-84.0b4.tar.bz2"; + locale = "ka"; + arch = "linux-x86_64"; + sha256 = "9f15ef55fab16e0086466e696f35dc3107451c2b9ccab9452901cf66723bf688"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/kab/firefox-84.0b4.tar.bz2"; + locale = "kab"; + arch = "linux-x86_64"; + sha256 = "762be8a3bee38ea5b939611b4fbc9fd5bfe71e80b685cb0a8937373aa19f94d6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/kk/firefox-84.0b4.tar.bz2"; + locale = "kk"; + arch = "linux-x86_64"; + sha256 = "65196c278a5a70c76315546465915626ed0c5f395af4ed1aed0ab2f27846aac4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/km/firefox-84.0b4.tar.bz2"; + locale = "km"; + arch = "linux-x86_64"; + sha256 = "530010cb0d3393e47324c032d048a377ac5c9da16e73888db026f6cec61c3533"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/kn/firefox-84.0b4.tar.bz2"; + locale = "kn"; + arch = "linux-x86_64"; + sha256 = "5233a8714e24a915404b3139aa3496812a4203b866cf4d870b013b940eba41ec"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ko/firefox-84.0b4.tar.bz2"; + locale = "ko"; + arch = "linux-x86_64"; + sha256 = "5dfe6629926804ed0820d472e19e51223565b011dee3feb722a81faa58043744"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/lij/firefox-84.0b4.tar.bz2"; + locale = "lij"; + arch = "linux-x86_64"; + sha256 = "4bb4bd94ac7aa845a062c366ea47871293f7b5281a460d3547fc321b6430a3ec"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/lt/firefox-84.0b4.tar.bz2"; + locale = "lt"; + arch = "linux-x86_64"; + sha256 = "162d3705cbb8ef0b8036520d59e17eefd8e94bf27b9c1df027e9c0b26b3ebcca"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/lv/firefox-84.0b4.tar.bz2"; + locale = "lv"; + arch = "linux-x86_64"; + sha256 = "7498cb5bad8ccde4a82e2acf49e899a652086de5c2e0a63f833d5342e83bfa48"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/mk/firefox-84.0b4.tar.bz2"; + locale = "mk"; + arch = "linux-x86_64"; + sha256 = "88ffd9ffb56000b42d3878654b6be2413189b93881d29809c5cfcbcd740349db"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/mr/firefox-84.0b4.tar.bz2"; + locale = "mr"; + arch = "linux-x86_64"; + sha256 = "cac6e4ea74b146d07afa79e85746d9678e6407c733a38367ed36e94821cc2f4a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ms/firefox-84.0b4.tar.bz2"; + locale = "ms"; + arch = "linux-x86_64"; + sha256 = "7e5eaf47c232fd25fb5c1e2de9d81351cfcf33c88c696a193219b0ff86a3c29f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/my/firefox-84.0b4.tar.bz2"; + locale = "my"; + arch = "linux-x86_64"; + sha256 = "20b1756847b2cbfc98153ac0d9a646f129b83f5c1383067d7547e9c70409abfc"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/nb-NO/firefox-84.0b4.tar.bz2"; + locale = "nb-NO"; + arch = "linux-x86_64"; + sha256 = "ac71d2e5520acaa352eba1f26576dc101b7b3a64971b36acbbfe7151b47e1344"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ne-NP/firefox-84.0b4.tar.bz2"; + locale = "ne-NP"; + arch = "linux-x86_64"; + sha256 = "90ff28f5e3ed56f5472e524f37288bad57045dc5491bc84f5e76f33d1d2cb046"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/nl/firefox-84.0b4.tar.bz2"; + locale = "nl"; + arch = "linux-x86_64"; + sha256 = "267c1d406006feae8bc350bcb58b4f73cc2403682c5786bb500bcafca4aa1ae9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/nn-NO/firefox-84.0b4.tar.bz2"; + locale = "nn-NO"; + arch = "linux-x86_64"; + sha256 = "815e84bf8acb3cec68dd7fc06d7849240f71e73cd710538b9f8a887df73f98da"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/oc/firefox-84.0b4.tar.bz2"; + locale = "oc"; + arch = "linux-x86_64"; + sha256 = "14717ad07784d231333584150f04118d22a8616fec76aab800d3208c514904fb"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/pa-IN/firefox-84.0b4.tar.bz2"; + locale = "pa-IN"; + arch = "linux-x86_64"; + sha256 = "1c1470816615bb292f51cfd1a52002b5f2ed4444be41a3521ef1a40b4e64b2b4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/pl/firefox-84.0b4.tar.bz2"; + locale = "pl"; + arch = "linux-x86_64"; + sha256 = "872a505769aff03597c71de66121fd007559c3f1cbb22c67661930de6e193634"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/pt-BR/firefox-84.0b4.tar.bz2"; + locale = "pt-BR"; + arch = "linux-x86_64"; + sha256 = "d0ef34afb32b0f6d1c266b99ea0f4a9015934112524eee0cadc66faa6898ae27"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/pt-PT/firefox-84.0b4.tar.bz2"; + locale = "pt-PT"; + arch = "linux-x86_64"; + sha256 = "e0b17a97217c799e4e0067e91374e63a6a99df827442d0193fcf47320af8a737"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/rm/firefox-84.0b4.tar.bz2"; + locale = "rm"; + arch = "linux-x86_64"; + sha256 = "0c031b6ae10918e65274f5ce95fd03d68011e36ab626e03ad9484ff40b36bc7e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ro/firefox-84.0b4.tar.bz2"; + locale = "ro"; + arch = "linux-x86_64"; + sha256 = "256b81200a5b92763d368b9c5d6f29e191aa4f11b097de1773bc5557d748c3ea"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ru/firefox-84.0b4.tar.bz2"; + locale = "ru"; + arch = "linux-x86_64"; + sha256 = "734b7d94b896554d5fedfd94a84c827ad6737808cd1f7b5b13be20702d46315b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/si/firefox-84.0b4.tar.bz2"; + locale = "si"; + arch = "linux-x86_64"; + sha256 = "d2c9fee5e64b8063c834610c2671f9c3fa49a5e02fc7e3482890b534aeb66a7a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/sk/firefox-84.0b4.tar.bz2"; + locale = "sk"; + arch = "linux-x86_64"; + sha256 = "edcdf2a8a00e0402992862e28efb33614b9f1a4cdfed16316c5d4bbc229b298f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/sl/firefox-84.0b4.tar.bz2"; + locale = "sl"; + arch = "linux-x86_64"; + sha256 = "d097a61adf0908041cb3cce76758f6da274cd7b3a006163b004f70e869947021"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/son/firefox-84.0b4.tar.bz2"; + locale = "son"; + arch = "linux-x86_64"; + sha256 = "d60731c5976825f0566502f6211d8e22388ec9d02bd122272f70a0830297e1fe"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/sq/firefox-84.0b4.tar.bz2"; + locale = "sq"; + arch = "linux-x86_64"; + sha256 = "5dffa799eec3baf2e55d7b690cf73c2b190e369bff32dd1800020c0fdf912c9d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/sr/firefox-84.0b4.tar.bz2"; + locale = "sr"; + arch = "linux-x86_64"; + sha256 = "abb5779af704c926ca90bd9b9a01eb8de1b1b4feae658d5911bc523739eda0d3"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/sv-SE/firefox-84.0b4.tar.bz2"; + locale = "sv-SE"; + arch = "linux-x86_64"; + sha256 = "2a228577a4d6c11a433b8c0340558aa638de175474491428b05509019920f8e1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ta/firefox-84.0b4.tar.bz2"; + locale = "ta"; + arch = "linux-x86_64"; + sha256 = "82f0bec91719e7b2a355c9b0398b924ce4cf429bb11e99d566af9836f5087acb"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/te/firefox-84.0b4.tar.bz2"; + locale = "te"; + arch = "linux-x86_64"; + sha256 = "9e581d2dc107c385142c3bbb5476e3bd94e700cd8f9e36ead46d284d5708e9c2"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/th/firefox-84.0b4.tar.bz2"; + locale = "th"; + arch = "linux-x86_64"; + sha256 = "096ce747a12c0b773d34517efce6aa4aaaf09385c5cf088046f7217639a7ce9e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/tl/firefox-84.0b4.tar.bz2"; + locale = "tl"; + arch = "linux-x86_64"; + sha256 = "3fc48cd9839ba88f246fb04fe34cc5760aa9e40c8fb782ea57347e32d66030f0"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/tr/firefox-84.0b4.tar.bz2"; + locale = "tr"; + arch = "linux-x86_64"; + sha256 = "087c629e5aea8fc698cbc5608c270a7099607b34c5852b3b3f4091af3b7c789f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/trs/firefox-84.0b4.tar.bz2"; + locale = "trs"; + arch = "linux-x86_64"; + sha256 = "4df467d46c5830a3d96f87294c3dfddcc397b73a372ba566900123f7ab86a6ee"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/uk/firefox-84.0b4.tar.bz2"; + locale = "uk"; + arch = "linux-x86_64"; + sha256 = "11090c8aa00533c456ce96cbb09691c816fa2f98ac421cf581c86bd2bef5f296"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/ur/firefox-84.0b4.tar.bz2"; + locale = "ur"; + arch = "linux-x86_64"; + sha256 = "8e7a5cc3606dc6cf71de328863a9107c36024001a381baf00daab11bebb857d7"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/uz/firefox-84.0b4.tar.bz2"; + locale = "uz"; + arch = "linux-x86_64"; + sha256 = "bb1846dd3b7bcf3b657d64bbd215301565dafee00eae96cee15fc71b40f49877"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/vi/firefox-84.0b4.tar.bz2"; + locale = "vi"; + arch = "linux-x86_64"; + sha256 = "375805742481f8f33adccbdc7e10f21ef0b1a0ab383c379e4dc13718c3f8fbf8"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/xh/firefox-84.0b4.tar.bz2"; + locale = "xh"; + arch = "linux-x86_64"; + sha256 = "a8ce0836980441d1248f8bbd2e4bbc7a8269afe9bf8e3125bd9f4dd3acd06d7a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/zh-CN/firefox-84.0b4.tar.bz2"; + locale = "zh-CN"; + arch = "linux-x86_64"; + sha256 = "8f491d8d1f61bf4a7f036efc047462bb04cf953e2a3a39cb5a326e49ed7a880e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-x86_64/zh-TW/firefox-84.0b4.tar.bz2"; + locale = "zh-TW"; + arch = "linux-x86_64"; + sha256 = "dc5a8ca6f8a3f40060d0d2abaf694a066960cbfea355678ac583c3977b37cbed"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ach/firefox-84.0b4.tar.bz2"; + locale = "ach"; + arch = "linux-i686"; + sha256 = "f5b5a500581e52dfe5192135cfa06bf283ff23ca0b1b569db1f1bdcd359ad0b4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/af/firefox-84.0b4.tar.bz2"; + locale = "af"; + arch = "linux-i686"; + sha256 = "f96a13006c272edf5f60d6c04011e48729b5078fbde2238a0e5c422eb1293372"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/an/firefox-84.0b4.tar.bz2"; + locale = "an"; + arch = "linux-i686"; + sha256 = "0bdbd429a512499dcd920ae695b61347196527ab30c601e1645385f3cdaff4ac"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ar/firefox-84.0b4.tar.bz2"; + locale = "ar"; + arch = "linux-i686"; + sha256 = "e0b6addd1b699c228aa353af879bbd263d1bd0e17aa033754abe864348adfc9a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ast/firefox-84.0b4.tar.bz2"; + locale = "ast"; + arch = "linux-i686"; + sha256 = "3ffbc1b67d9cae58c2b21227e6456d9e6ca8a387cdbe8b5bbae9b1db553a34b4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/az/firefox-84.0b4.tar.bz2"; + locale = "az"; + arch = "linux-i686"; + sha256 = "36c9ad3b07b6e032b38486e1d2a7a6b85b85dc84d8d0b9218fbd4c4a71e59e70"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/be/firefox-84.0b4.tar.bz2"; + locale = "be"; + arch = "linux-i686"; + sha256 = "2ac1811463e482205f7dd27e4f98564146f089fb423405a8c3df8d2a10e45147"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/bg/firefox-84.0b4.tar.bz2"; + locale = "bg"; + arch = "linux-i686"; + sha256 = "174d0ab72bfb1a8ea811c1b77a9eb65871f68641b1703c3bbf02bad4d298460b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/bn/firefox-84.0b4.tar.bz2"; + locale = "bn"; + arch = "linux-i686"; + sha256 = "e6d1b74e56690abd5c2f0d2d1dae0b9ac6d16b28daf1964ecd87138a5de9fadf"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/br/firefox-84.0b4.tar.bz2"; + locale = "br"; + arch = "linux-i686"; + sha256 = "2ad97986bcdcdc2b988f1d50fef1a71d767119e03065ddc3e51ad38efc7dd351"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/bs/firefox-84.0b4.tar.bz2"; + locale = "bs"; + arch = "linux-i686"; + sha256 = "71c472c8dce7174ee8139360fd5b8528cba89f73dc186bdd08ed368917b8c41d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ca-valencia/firefox-84.0b4.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-i686"; + sha256 = "4e5245f658f5bf6f47d40e2437841213b03b9f6d12e83766621f5b59fb258eaa"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ca/firefox-84.0b4.tar.bz2"; + locale = "ca"; + arch = "linux-i686"; + sha256 = "4de924505b98c029dbba0762723a3310b3d171f18072a1a51d4f9636aaca8831"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/cak/firefox-84.0b4.tar.bz2"; + locale = "cak"; + arch = "linux-i686"; + sha256 = "11fa8468ca6b3c51ed615d0375e63d85443beab66c10cbdc95fca817ada02215"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/cs/firefox-84.0b4.tar.bz2"; + locale = "cs"; + arch = "linux-i686"; + sha256 = "c1bc48d54d0ea32731d4400c2b2fd817c5ed222cbe5fea20b3ee26ddeebab9d3"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/cy/firefox-84.0b4.tar.bz2"; + locale = "cy"; + arch = "linux-i686"; + sha256 = "02cf2dc5bb97e9497655c53ef45dda3495f280a333c94fcc51048852bc993a53"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/da/firefox-84.0b4.tar.bz2"; + locale = "da"; + arch = "linux-i686"; + sha256 = "6d36d0aa1ce447770c9a149a1df2c27731a31f5784b9f20ef536836e6e42819a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/de/firefox-84.0b4.tar.bz2"; + locale = "de"; + arch = "linux-i686"; + sha256 = "49eb555372658bf827adfc07b08c8ac46a6351f0ecd0fed0ad6d5c4975553c8e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/dsb/firefox-84.0b4.tar.bz2"; + locale = "dsb"; + arch = "linux-i686"; + sha256 = "1c358edc0e6248773103ab92ef0bf6103dfcbfa2945602bbd2f49153ebc7c690"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/el/firefox-84.0b4.tar.bz2"; + locale = "el"; + arch = "linux-i686"; + sha256 = "a445f9806285ef0b036364a618c8d7ca226da899dfa33adbda5b2e327fe63dcb"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/en-CA/firefox-84.0b4.tar.bz2"; + locale = "en-CA"; + arch = "linux-i686"; + sha256 = "6d2590c0cc0aa28a1443185aec54f84973a31e79beccd5ca5700abfd8deebe2c"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/en-GB/firefox-84.0b4.tar.bz2"; + locale = "en-GB"; + arch = "linux-i686"; + sha256 = "71c4040c1326133f18ec7a07ea021b061b0994cf92aa113b358c5c0c10ebc59b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/en-US/firefox-84.0b4.tar.bz2"; + locale = "en-US"; + arch = "linux-i686"; + sha256 = "af3bcd19cd78dea23deaff0c2810282a68428eee4d45e2989c75cbce5ff97098"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/eo/firefox-84.0b4.tar.bz2"; + locale = "eo"; + arch = "linux-i686"; + sha256 = "641def17e0d004f81cb176ccf70cbaa1df50fb204c3ff45a80800b76c21ed006"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/es-AR/firefox-84.0b4.tar.bz2"; + locale = "es-AR"; + arch = "linux-i686"; + sha256 = "0475e9de47c64b11470edf16f2819bfc1b1013f75ff6dd83da96bff1174db788"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/es-CL/firefox-84.0b4.tar.bz2"; + locale = "es-CL"; + arch = "linux-i686"; + sha256 = "0f3c14175da4f59b745473df5f0256b582800b3c3dfabaa21e124b9ef100fc72"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/es-ES/firefox-84.0b4.tar.bz2"; + locale = "es-ES"; + arch = "linux-i686"; + sha256 = "9a33525bcb9d10a10630d4c470877c8698f6da32671cbc47450c7fa4d2cba7de"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/es-MX/firefox-84.0b4.tar.bz2"; + locale = "es-MX"; + arch = "linux-i686"; + sha256 = "ba397ac159b77c9346b58e5c9e4bdffd21b5ac3fd3d4b67a2b67931916b2f830"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/et/firefox-84.0b4.tar.bz2"; + locale = "et"; + arch = "linux-i686"; + sha256 = "664672b4f5f713bee16024845f16555da16f758d8db674dc5ec7f0022d2b7000"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/eu/firefox-84.0b4.tar.bz2"; + locale = "eu"; + arch = "linux-i686"; + sha256 = "3230da6f19116ccf848855218df3fbace86af2d9085f4109a3006476807f464d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/fa/firefox-84.0b4.tar.bz2"; + locale = "fa"; + arch = "linux-i686"; + sha256 = "faf07d08ce391b1043d4081fc650e3ee78ca067a3a11a6e3ff87916f3ac7a557"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ff/firefox-84.0b4.tar.bz2"; + locale = "ff"; + arch = "linux-i686"; + sha256 = "2c763d737cb112b77919594fe34061db5181a725cf518fc3cd9133be9bfd7cf6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/fi/firefox-84.0b4.tar.bz2"; + locale = "fi"; + arch = "linux-i686"; + sha256 = "5a631720534e03e211936255012270e04918461112411e787ea02f138087c6b1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/fr/firefox-84.0b4.tar.bz2"; + locale = "fr"; + arch = "linux-i686"; + sha256 = "2b86ce004a5c42fd6f5cdda28439263357ce5428b6469440046ce6fe4d6157c2"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/fy-NL/firefox-84.0b4.tar.bz2"; + locale = "fy-NL"; + arch = "linux-i686"; + sha256 = "e0e81fb1494d86abdcab4cc9feb0f789ab304172c67da013f0a09ab2c2e3e676"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ga-IE/firefox-84.0b4.tar.bz2"; + locale = "ga-IE"; + arch = "linux-i686"; + sha256 = "ffcf120a36f7268ab2ae03fb1eb6d458fb63b00d41198bf7997290c28997205b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/gd/firefox-84.0b4.tar.bz2"; + locale = "gd"; + arch = "linux-i686"; + sha256 = "a99d3471da7fa2e985fc562a4abe086de9096d2461a50841ad5c8e5d2891bf8b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/gl/firefox-84.0b4.tar.bz2"; + locale = "gl"; + arch = "linux-i686"; + sha256 = "01412502c872561564e1dac95b12d27295be5c411d2bb1ebbd53cfb4dbadee3a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/gn/firefox-84.0b4.tar.bz2"; + locale = "gn"; + arch = "linux-i686"; + sha256 = "a73ee3448bb7888acec856e3e3369e28f5fbb9c5d203892e4992f73b319fa394"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/gu-IN/firefox-84.0b4.tar.bz2"; + locale = "gu-IN"; + arch = "linux-i686"; + sha256 = "3b7904059b38eea27b7901de41be029ea8ec23c3d2a8bbe8941d8852c55cfb97"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/he/firefox-84.0b4.tar.bz2"; + locale = "he"; + arch = "linux-i686"; + sha256 = "0bf4d3aa4f217e12b1f204bdb189625c6daae24cf5253bf4b1cd6288f2717873"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/hi-IN/firefox-84.0b4.tar.bz2"; + locale = "hi-IN"; + arch = "linux-i686"; + sha256 = "4f95852212b0b08aa420c88e2ec7825913e3e82c1d2891fffdb11a8583bf46b8"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/hr/firefox-84.0b4.tar.bz2"; + locale = "hr"; + arch = "linux-i686"; + sha256 = "e30d3274103e39241e233aee994b5b8c2b39dbd190ffa1a9da99f8494ae833b1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/hsb/firefox-84.0b4.tar.bz2"; + locale = "hsb"; + arch = "linux-i686"; + sha256 = "f401baba947e64ef4ef02cc5137c8623a99967ec8597e4e5c8987382dbc505a4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/hu/firefox-84.0b4.tar.bz2"; + locale = "hu"; + arch = "linux-i686"; + sha256 = "70ac5b24deabcaf0b250575a0454a35e127cf15023a3546ae41c01942c64c59b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/hy-AM/firefox-84.0b4.tar.bz2"; + locale = "hy-AM"; + arch = "linux-i686"; + sha256 = "9dfa8b99f67ce66625e0c89c37f4ee36b23421ca89d4445deb5dc82eb0eb05a7"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ia/firefox-84.0b4.tar.bz2"; + locale = "ia"; + arch = "linux-i686"; + sha256 = "4445dc874962b72f7d9096cb46ff98987b56d9c2d3e0acd814fc8c59261363b2"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/id/firefox-84.0b4.tar.bz2"; + locale = "id"; + arch = "linux-i686"; + sha256 = "16c6550910555ddfc395b0c9626dd6e41a4bc9bd4a8ddbfb2867faa991cd4ae4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/is/firefox-84.0b4.tar.bz2"; + locale = "is"; + arch = "linux-i686"; + sha256 = "1c208c0b99cd008d67e8c9c1d118f7b2c8c354b4dcf740554fc2474ff93b8a7c"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/it/firefox-84.0b4.tar.bz2"; + locale = "it"; + arch = "linux-i686"; + sha256 = "cac410ba1679d27565d63d3a70920d3ff262b6171dfe732c3ec7ee88d3386b14"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ja/firefox-84.0b4.tar.bz2"; + locale = "ja"; + arch = "linux-i686"; + sha256 = "0b8c20ac0a4394c8c4a106e65d83718f639453e10c54906da04f4da536a218e4"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ka/firefox-84.0b4.tar.bz2"; + locale = "ka"; + arch = "linux-i686"; + sha256 = "978aad2d0855ed8e364faf4a0522d7271bbd134c699da515db7e5c58dca79d49"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/kab/firefox-84.0b4.tar.bz2"; + locale = "kab"; + arch = "linux-i686"; + sha256 = "f32b2f9cd504a6d4d5b5d2ce47368cad4317cb1249dbd7d925d0c48098fba8be"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/kk/firefox-84.0b4.tar.bz2"; + locale = "kk"; + arch = "linux-i686"; + sha256 = "38e2fef40b71d50b85be7a2d2c44bc0b0bc569410782119fbe07aba00c8193f7"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/km/firefox-84.0b4.tar.bz2"; + locale = "km"; + arch = "linux-i686"; + sha256 = "c8a617eeaba39e138676c8412594329b00d372c40a0401a77e5bf974a407a3b1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/kn/firefox-84.0b4.tar.bz2"; + locale = "kn"; + arch = "linux-i686"; + sha256 = "d1f19e2edfd1ee97b13b8e42c22f1409174c8fb4b024612d27cbb3ab9586ca1d"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ko/firefox-84.0b4.tar.bz2"; + locale = "ko"; + arch = "linux-i686"; + sha256 = "8e1f68d6bf97644616e8d8a39443061fe99df088b42e5218beb823d8cd18b8e6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/lij/firefox-84.0b4.tar.bz2"; + locale = "lij"; + arch = "linux-i686"; + sha256 = "ba22770bc65b0033f424ce30df69a7d21a728245230696b412baf44aa9a111a9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/lt/firefox-84.0b4.tar.bz2"; + locale = "lt"; + arch = "linux-i686"; + sha256 = "27ab65ac4ee08e2714ca7c493a4575352df4a06532773197a2bb3da86e9a18c9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/lv/firefox-84.0b4.tar.bz2"; + locale = "lv"; + arch = "linux-i686"; + sha256 = "4a8f6944d9b6134d664e08eb404e130a218497b4957437b56e4487a8bc205ca5"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/mk/firefox-84.0b4.tar.bz2"; + locale = "mk"; + arch = "linux-i686"; + sha256 = "885893b0a9ef75cd623f21c720aee07357ff3b4b21ccfbe456fc11928ef7037f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/mr/firefox-84.0b4.tar.bz2"; + locale = "mr"; + arch = "linux-i686"; + sha256 = "55aa8e1e4b61eb3b9a26fe9abafa804e7b6d34ac1f36efadf10ee13d2cd934a6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ms/firefox-84.0b4.tar.bz2"; + locale = "ms"; + arch = "linux-i686"; + sha256 = "61412fde864addb40fa2d0ab42f30cb9a7e1887cd130ab59880763d675b6f7fd"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/my/firefox-84.0b4.tar.bz2"; + locale = "my"; + arch = "linux-i686"; + sha256 = "cd7190acda6e20c22edcb99c88c15e87b4676b2dba7de0578d2ab32a22b2bc1b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/nb-NO/firefox-84.0b4.tar.bz2"; + locale = "nb-NO"; + arch = "linux-i686"; + sha256 = "97f16d919eb8321c71864daba7accfcd9bd86d4948bc86df44fa86a52649ad8e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ne-NP/firefox-84.0b4.tar.bz2"; + locale = "ne-NP"; + arch = "linux-i686"; + sha256 = "4ebbdfb4c75621a24b52853c3d94e178decfe3bcaaa1f8f92f42bf91eedd874f"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/nl/firefox-84.0b4.tar.bz2"; + locale = "nl"; + arch = "linux-i686"; + sha256 = "4b14585bb554bc346565a69b6a4c10580345923f8e4dbda8b202e6b9e8cf1452"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/nn-NO/firefox-84.0b4.tar.bz2"; + locale = "nn-NO"; + arch = "linux-i686"; + sha256 = "408f34fb48fe1fa93850857118fc4ed972139e273ed2521cd9f7169f8d4148cc"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/oc/firefox-84.0b4.tar.bz2"; + locale = "oc"; + arch = "linux-i686"; + sha256 = "0f7e1e4df86a931152206159a9f4e99b4241377c5545fb343eff86cd21869bec"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/pa-IN/firefox-84.0b4.tar.bz2"; + locale = "pa-IN"; + arch = "linux-i686"; + sha256 = "c7f85ae2c46585cab0aed8c41117ffd686fe0dac6e0ba64eb41bc22d4b8f01c9"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/pl/firefox-84.0b4.tar.bz2"; + locale = "pl"; + arch = "linux-i686"; + sha256 = "2669e61a0d7da09684230c67c6d43091b3b51e12f291259a62c72ce124fa4c3c"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/pt-BR/firefox-84.0b4.tar.bz2"; + locale = "pt-BR"; + arch = "linux-i686"; + sha256 = "10ac3662c49611f73fb96a13ef464c27b4ce08c25f0f44e253e6e5ce2239a45c"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/pt-PT/firefox-84.0b4.tar.bz2"; + locale = "pt-PT"; + arch = "linux-i686"; + sha256 = "a6e606c6d4ca032653b46966c0b90e001474907424f4fef46669e2363ffb89f1"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/rm/firefox-84.0b4.tar.bz2"; + locale = "rm"; + arch = "linux-i686"; + sha256 = "a8a8ee42020f62b38c125002ff6b5ad975d1a24df4e64f354f58fd949517e3c0"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ro/firefox-84.0b4.tar.bz2"; + locale = "ro"; + arch = "linux-i686"; + sha256 = "f405c06f8041e4c90caed14e7d6fac38467976fd71a214f06eab8c2113c386c0"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ru/firefox-84.0b4.tar.bz2"; + locale = "ru"; + arch = "linux-i686"; + sha256 = "acd2c0812a24b301aafb1278246495b07e346fbd9cd699da406b988dc3d393ee"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/si/firefox-84.0b4.tar.bz2"; + locale = "si"; + arch = "linux-i686"; + sha256 = "d444818f1e76a01a1170209497349331175ab9a761c27b31ddb89ff4d542ab9e"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/sk/firefox-84.0b4.tar.bz2"; + locale = "sk"; + arch = "linux-i686"; + sha256 = "f2f3c9c4888f0055c10d1aae6cb1c40cc7f4d2bd1653e846768326e11b6ef2c6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/sl/firefox-84.0b4.tar.bz2"; + locale = "sl"; + arch = "linux-i686"; + sha256 = "aeff79d992488895e47d3682d6b3661cfd1a86d39aff8c91313f057838075068"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/son/firefox-84.0b4.tar.bz2"; + locale = "son"; + arch = "linux-i686"; + sha256 = "860900ac8f3fde5511a294a4f41e553d4853c4592d4446441399fda78a91898a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/sq/firefox-84.0b4.tar.bz2"; + locale = "sq"; + arch = "linux-i686"; + sha256 = "9122e1837c732b8cf242f211937b3fc445b6a48da3db01cbaa4a0d00117848a8"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/sr/firefox-84.0b4.tar.bz2"; + locale = "sr"; + arch = "linux-i686"; + sha256 = "a3c15061deb11e870d83138bf65beb5a838cc3ba96d067d3e72f816f818da3c5"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/sv-SE/firefox-84.0b4.tar.bz2"; + locale = "sv-SE"; + arch = "linux-i686"; + sha256 = "cb3d2dcf7d80501a8fa38c50d0301af9562050bc64250cc1c6208467990795d6"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ta/firefox-84.0b4.tar.bz2"; + locale = "ta"; + arch = "linux-i686"; + sha256 = "4ece8a45e79aae6e535d56370f8890c5d3045d0ca78bec67fe848367e518339a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/te/firefox-84.0b4.tar.bz2"; + locale = "te"; + arch = "linux-i686"; + sha256 = "70996e39e5b38f7def90f1eadbdbb294992e4ad27a49d4941b3982a0d3f8421b"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/th/firefox-84.0b4.tar.bz2"; + locale = "th"; + arch = "linux-i686"; + sha256 = "36720f87e8b3ee23f15ff48514931747d05638194e9b13b30017e601b8a5c905"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/tl/firefox-84.0b4.tar.bz2"; + locale = "tl"; + arch = "linux-i686"; + sha256 = "d433a22f97bcb69570933b1f371c248ebd2eb83a217bcc1989897c08175cbcd0"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/tr/firefox-84.0b4.tar.bz2"; + locale = "tr"; + arch = "linux-i686"; + sha256 = "0787dd09f287aab492610d2ce23d0be7bc3a2158e84d7e94345358a750ddb752"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/trs/firefox-84.0b4.tar.bz2"; + locale = "trs"; + arch = "linux-i686"; + sha256 = "4d3bd35ed7c43eb502f482bb60da0dbf14714b35e2996362c835a0a35008308a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/uk/firefox-84.0b4.tar.bz2"; + locale = "uk"; + arch = "linux-i686"; + sha256 = "8e1c371acd0bd1762c715c8e36dbc8df104351cbb3c37fab64c72b55bc98f006"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/ur/firefox-84.0b4.tar.bz2"; + locale = "ur"; + arch = "linux-i686"; + sha256 = "14b6149229f49406755a5ee308e0e120964595a1f9a7f2f7e9cc2979a5cf561a"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/uz/firefox-84.0b4.tar.bz2"; + locale = "uz"; + arch = "linux-i686"; + sha256 = "a8adf840548ac5974654234956957b8e53f3e36c83cfad4fa5c840c16e9e4d5c"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/vi/firefox-84.0b4.tar.bz2"; + locale = "vi"; + arch = "linux-i686"; + sha256 = "fc9b023caaabb3a5a18a21a2d65195a7dc7b2655a5d9a1f4c75434cb1f02e4da"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/xh/firefox-84.0b4.tar.bz2"; + locale = "xh"; + arch = "linux-i686"; + sha256 = "940b4e34e92a0efa397d3944fb6b8c5afea57f29355c9f9621accb557efd9860"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/zh-CN/firefox-84.0b4.tar.bz2"; + locale = "zh-CN"; + arch = "linux-i686"; + sha256 = "b1284ea7ec8e42c6139249b1958380e672dd19e7b8c21d95e256e0d3265bd095"; + } + { url = "http://archive.mozilla.org/pub/devedition/releases/84.0b4/linux-i686/zh-TW/firefox-84.0b4.tar.bz2"; + locale = "zh-TW"; + arch = "linux-i686"; + sha256 = "ac76d109c7817b9c06356918860216a3e2f4f776a31a8690064593ffc43139d9"; + } + ]; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/mozilla.asc b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/mozilla.asc Binary files differnew file mode 100644 index 000000000000..dc58eb8d56ab --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/mozilla.asc diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix new file mode 100644 index 000000000000..431ed105f0dc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix @@ -0,0 +1,965 @@ +{ + version = "83.0"; + sources = [ + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ach/firefox-83.0.tar.bz2"; + locale = "ach"; + arch = "linux-x86_64"; + sha256 = "cea6ad61bd402e6c84a81a3f504f1b9292079c9d48d2353b51db4f03a8837fb6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/af/firefox-83.0.tar.bz2"; + locale = "af"; + arch = "linux-x86_64"; + sha256 = "d4bd0a9579f38d53f559412cc3cc04f11871ba22c81eee54dd9ab16c56303513"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/an/firefox-83.0.tar.bz2"; + locale = "an"; + arch = "linux-x86_64"; + sha256 = "10741a6921210643250013c45e9e21bc295da8e41f2bb5c5fadcd86c0e828c80"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ar/firefox-83.0.tar.bz2"; + locale = "ar"; + arch = "linux-x86_64"; + sha256 = "3fd4aeef281e5aafdda572d4814e70295c018b7fae6d214c40dabcac367ace69"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ast/firefox-83.0.tar.bz2"; + locale = "ast"; + arch = "linux-x86_64"; + sha256 = "237e8ff5b3fbc9d7c4095951ca014a5c26cc076305aee705ca943d81e72541dd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/az/firefox-83.0.tar.bz2"; + locale = "az"; + arch = "linux-x86_64"; + sha256 = "79ca0c798243841cc34281f917aad06c2f546a5e11b443a96e5030aefb8de9b3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/be/firefox-83.0.tar.bz2"; + locale = "be"; + arch = "linux-x86_64"; + sha256 = "c15b0f929b3e3c6ad5618ccf6f9f6b143f893b6f77e176b52ecc608ca3157ab8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/bg/firefox-83.0.tar.bz2"; + locale = "bg"; + arch = "linux-x86_64"; + sha256 = "fd2094c59a057e8c35054f7d09c31699aeef927cf9688a87559a8ba69a93f600"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/bn/firefox-83.0.tar.bz2"; + locale = "bn"; + arch = "linux-x86_64"; + sha256 = "c9755c408ca1a4f426f1432339020ef3d7c675d426fae9d8697cded4c7d493f4"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/br/firefox-83.0.tar.bz2"; + locale = "br"; + arch = "linux-x86_64"; + sha256 = "d47b889d31b945a5b768b3bbb336fdc43d62c9cc86f13916225cbfe68a560972"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/bs/firefox-83.0.tar.bz2"; + locale = "bs"; + arch = "linux-x86_64"; + sha256 = "c36da445560b989ae9cf16a1ec72cd2cae82db670f90d27abe0499f8cc025eee"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ca-valencia/firefox-83.0.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-x86_64"; + sha256 = "ef5ee80cc0d6b1b299bc8bb6577b8e26f5de8b541530ddda231e2fafa863e6a1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ca/firefox-83.0.tar.bz2"; + locale = "ca"; + arch = "linux-x86_64"; + sha256 = "7c349aa7406899835bc9e70893f28c8109e17ee9ef018e7a723085117f8dd32f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/cak/firefox-83.0.tar.bz2"; + locale = "cak"; + arch = "linux-x86_64"; + sha256 = "3e7aabe665ce423bd47e7d0474039d7bfeb9958849c18e98c37f28def5fae1aa"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/cs/firefox-83.0.tar.bz2"; + locale = "cs"; + arch = "linux-x86_64"; + sha256 = "97d5e4c255fc87430751c81edc62186e1b4ec901ccf17bfdad7a8ef918077bc1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/cy/firefox-83.0.tar.bz2"; + locale = "cy"; + arch = "linux-x86_64"; + sha256 = "c1856b51dedc5788b40671faee8f8cb996108eb514d1263de998043377f2f7c2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/da/firefox-83.0.tar.bz2"; + locale = "da"; + arch = "linux-x86_64"; + sha256 = "990da1f47d04ec9200d41fa401b23d9607a8e4c11d7cc78989e81785b9633cb0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/de/firefox-83.0.tar.bz2"; + locale = "de"; + arch = "linux-x86_64"; + sha256 = "94ad875d88a18f24ae38f20b324d074a367969368e660ea2b4b0645e31300c94"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/dsb/firefox-83.0.tar.bz2"; + locale = "dsb"; + arch = "linux-x86_64"; + sha256 = "c3edd46c44bae1b00803e587e6f52560b28ddc2fc935c1fe62714bf16fa72d80"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/el/firefox-83.0.tar.bz2"; + locale = "el"; + arch = "linux-x86_64"; + sha256 = "3572a260ec17f76631ca627747ed53d1911ee1180d3e574051b3baf0afd9dcd1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/en-CA/firefox-83.0.tar.bz2"; + locale = "en-CA"; + arch = "linux-x86_64"; + sha256 = "e3c9363e8b93c625234624ac5c3ab0274055c5b8f4f854da955409b9bdf28d52"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/en-GB/firefox-83.0.tar.bz2"; + locale = "en-GB"; + arch = "linux-x86_64"; + sha256 = "240a732c034bf2ac286cefc33b02b56df205c4e175457cd84adb7666418e0be4"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/en-US/firefox-83.0.tar.bz2"; + locale = "en-US"; + arch = "linux-x86_64"; + sha256 = "93ff827fdcba92ddb71851c46ac8192a727ed61402e896c6262943e382f92412"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/eo/firefox-83.0.tar.bz2"; + locale = "eo"; + arch = "linux-x86_64"; + sha256 = "456933a6c1fb1e6ad5b2217a7e3730bd54ff037d3d718414b2c92557fea3659d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/es-AR/firefox-83.0.tar.bz2"; + locale = "es-AR"; + arch = "linux-x86_64"; + sha256 = "040e8a4a74b8bc77e1d485c3376690f4c5ba85015b360f679ceacd848b0ca574"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/es-CL/firefox-83.0.tar.bz2"; + locale = "es-CL"; + arch = "linux-x86_64"; + sha256 = "80e8189ce09c736af1d9927d4943e08e30bc70e9aa7e116f150f14c0dab3fb15"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/es-ES/firefox-83.0.tar.bz2"; + locale = "es-ES"; + arch = "linux-x86_64"; + sha256 = "f48489abac5358a10d8ed36b77398493b6a9189a8327bf61bec6ceaca51ab696"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/es-MX/firefox-83.0.tar.bz2"; + locale = "es-MX"; + arch = "linux-x86_64"; + sha256 = "0d4805b30f05fb8a65b81a42337a8a3732c7664b322557e844929d2b049d0111"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/et/firefox-83.0.tar.bz2"; + locale = "et"; + arch = "linux-x86_64"; + sha256 = "eb4a463b9271fdde45bddad28ce871953739b55126ae5613963a69a319908fb2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/eu/firefox-83.0.tar.bz2"; + locale = "eu"; + arch = "linux-x86_64"; + sha256 = "3a662c575554d3a542e65950352c527cc51e82ae7a8f9d7ca1b69e30a683731e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/fa/firefox-83.0.tar.bz2"; + locale = "fa"; + arch = "linux-x86_64"; + sha256 = "b5ad3a5d39674d60b6e97cd656c77d7d2fb90943a66a590a29e4d42ec1e18c42"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ff/firefox-83.0.tar.bz2"; + locale = "ff"; + arch = "linux-x86_64"; + sha256 = "2db83d638474186f52fde5fe1ee25201e84b198e44397074203d7ce50e23e74c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/fi/firefox-83.0.tar.bz2"; + locale = "fi"; + arch = "linux-x86_64"; + sha256 = "98bd9c50b5db43bf5fcdc829aa295975d3ec106bbc598fda3d7f26679c0ba08c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/fr/firefox-83.0.tar.bz2"; + locale = "fr"; + arch = "linux-x86_64"; + sha256 = "ab3427f5cf7cc88d5108b8be21806197420bd775f33d3f2dc983f0f4dec44d5b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/fy-NL/firefox-83.0.tar.bz2"; + locale = "fy-NL"; + arch = "linux-x86_64"; + sha256 = "9f21d91d1529a05a2da7ba29cc8e875b23ffb4b453077b5e899133cf31813397"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ga-IE/firefox-83.0.tar.bz2"; + locale = "ga-IE"; + arch = "linux-x86_64"; + sha256 = "4c22b166cccede0bcea4e75f826e100dfa4f2def01f904fbffcef789d2d61695"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/gd/firefox-83.0.tar.bz2"; + locale = "gd"; + arch = "linux-x86_64"; + sha256 = "6ca04d381205121dc695dff78ff646499a21976ae64c110763845eda0598b414"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/gl/firefox-83.0.tar.bz2"; + locale = "gl"; + arch = "linux-x86_64"; + sha256 = "d08f4ea821af5e38c21364037c17b8c97c775d60f0697eb0817dcfc7c6d4c7dd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/gn/firefox-83.0.tar.bz2"; + locale = "gn"; + arch = "linux-x86_64"; + sha256 = "90a8b2fdf1d3471311671761e81637d6771a61744eb480c0788cf03d295c30ee"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/gu-IN/firefox-83.0.tar.bz2"; + locale = "gu-IN"; + arch = "linux-x86_64"; + sha256 = "bfe65e5c9795ecdff4dc947d2e2e84d01da894b0ae55c08d73f9397c5730ce17"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/he/firefox-83.0.tar.bz2"; + locale = "he"; + arch = "linux-x86_64"; + sha256 = "2dc01c5a929aa79056a66feb522d50cbbb567bc85589f8106e553c9ddfc02a7c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/hi-IN/firefox-83.0.tar.bz2"; + locale = "hi-IN"; + arch = "linux-x86_64"; + sha256 = "ef2a61dce3ee713a4be3cee5a9dda8498095a7db69304a7d6585ac674970958a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/hr/firefox-83.0.tar.bz2"; + locale = "hr"; + arch = "linux-x86_64"; + sha256 = "ab8357cc1f36965ccbd6f4298ffdbb3d77b09cc4b789a3be708d2c51468402bd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/hsb/firefox-83.0.tar.bz2"; + locale = "hsb"; + arch = "linux-x86_64"; + sha256 = "6a34074a96be7911672b7e83151244f1f963a8cc8930c8d1d113afe8a49c9529"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/hu/firefox-83.0.tar.bz2"; + locale = "hu"; + arch = "linux-x86_64"; + sha256 = "ffec1646df872a757b771a03c00e3e6df3397e7f4af46bd1d6c0fcab242b1721"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/hy-AM/firefox-83.0.tar.bz2"; + locale = "hy-AM"; + arch = "linux-x86_64"; + sha256 = "1b9da538ced466302584fef4ecf415aeae5bee51a87d38bd0a6bb3ea155af66d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ia/firefox-83.0.tar.bz2"; + locale = "ia"; + arch = "linux-x86_64"; + sha256 = "5f8582508155f858c7e52e623579daa7da1aa77bb4e41c2c46d3e6ae8ace6b1e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/id/firefox-83.0.tar.bz2"; + locale = "id"; + arch = "linux-x86_64"; + sha256 = "e5690dcc6b933ddbd27fcfb22f8ab9fc4e4c999d935b6088da38c87af2c567d1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/is/firefox-83.0.tar.bz2"; + locale = "is"; + arch = "linux-x86_64"; + sha256 = "3776fe6aad623e9b74807a48e105d1619143e78e122906360c4efbc73c2891ee"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/it/firefox-83.0.tar.bz2"; + locale = "it"; + arch = "linux-x86_64"; + sha256 = "eb54c4596602150c619db6d0d5572a59f7d9c4def68a34cb874cbc6535939e2a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ja/firefox-83.0.tar.bz2"; + locale = "ja"; + arch = "linux-x86_64"; + sha256 = "54b70bef0507611ad1ea7560668b46385661b5275c7a0ecaad723db44fd8af88"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ka/firefox-83.0.tar.bz2"; + locale = "ka"; + arch = "linux-x86_64"; + sha256 = "56e72349133297d61dfdec4933a01c2cd8fa3d0da3d784e0598506c2db05938c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/kab/firefox-83.0.tar.bz2"; + locale = "kab"; + arch = "linux-x86_64"; + sha256 = "45f554342449405990c84e910dc6436489046acd00fdc4a0ddabb4b28d7c1284"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/kk/firefox-83.0.tar.bz2"; + locale = "kk"; + arch = "linux-x86_64"; + sha256 = "3463c4ea5df4e072dfca22e8983fdc016adbe2326bf186a0168ea9ee2c36b3bd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/km/firefox-83.0.tar.bz2"; + locale = "km"; + arch = "linux-x86_64"; + sha256 = "3bb7d2c3e5278d9c51b87d8140096ae01532e99160b866164d1920fb012c085c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/kn/firefox-83.0.tar.bz2"; + locale = "kn"; + arch = "linux-x86_64"; + sha256 = "c9086912382dbff66045c79130403385b9f075bf782220aeb84f03f62a563638"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ko/firefox-83.0.tar.bz2"; + locale = "ko"; + arch = "linux-x86_64"; + sha256 = "6f70169cd58ee1559ab224c3ea6f5309bf75267d9f315e389b7971e8e1feed09"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/lij/firefox-83.0.tar.bz2"; + locale = "lij"; + arch = "linux-x86_64"; + sha256 = "0b089e6f7954f4d99e9e59bd25148c4be620f9486f8d36c3db68fec5ea700d94"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/lt/firefox-83.0.tar.bz2"; + locale = "lt"; + arch = "linux-x86_64"; + sha256 = "b76c545aad6e5b66bd8ab34bf02f7d4f69ecee348381b16c271f4de0243c660d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/lv/firefox-83.0.tar.bz2"; + locale = "lv"; + arch = "linux-x86_64"; + sha256 = "8504d5c00c5569f008b2e308a9193cf62130e89a6e61b33fc842081e4d504322"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/mk/firefox-83.0.tar.bz2"; + locale = "mk"; + arch = "linux-x86_64"; + sha256 = "636a421f6238de1fee37014c3af147220af6a1f3c04e2ce6ec9dd17898bc7c20"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/mr/firefox-83.0.tar.bz2"; + locale = "mr"; + arch = "linux-x86_64"; + sha256 = "1e00d369be11ad8bfb2dda0ceeb3b7b516fd66427d9e85bff4cc1d699ff3659f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ms/firefox-83.0.tar.bz2"; + locale = "ms"; + arch = "linux-x86_64"; + sha256 = "0590f2bff7e43b9f6c081d57276299f8327df73415a8e2a2243e3c4ec9154200"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/my/firefox-83.0.tar.bz2"; + locale = "my"; + arch = "linux-x86_64"; + sha256 = "ae43f0e8d4ff32274b25a1b78e0af44446ea6989edc4eb3c0d9fae36fcf80908"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/nb-NO/firefox-83.0.tar.bz2"; + locale = "nb-NO"; + arch = "linux-x86_64"; + sha256 = "9c3a74fc7670e2202be1f4f75208f0113c115169ef70614af631cf16879e081f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ne-NP/firefox-83.0.tar.bz2"; + locale = "ne-NP"; + arch = "linux-x86_64"; + sha256 = "d830f802cccc7351a447fc59ed64562cac1521d281ddf218c84d1c9af8a65cb3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/nl/firefox-83.0.tar.bz2"; + locale = "nl"; + arch = "linux-x86_64"; + sha256 = "ecfd03850a48ebf7c3ec9400838100514826b8f35744b0167f61c9086893ae66"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/nn-NO/firefox-83.0.tar.bz2"; + locale = "nn-NO"; + arch = "linux-x86_64"; + sha256 = "ad0e4a89afabf1929d441129066dfcbf532d37da31c76bc79108d123cf5cc649"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/oc/firefox-83.0.tar.bz2"; + locale = "oc"; + arch = "linux-x86_64"; + sha256 = "9b9bbba334c4d7d3907f55a6647cecdf0bb2cd6294569a0008d866cd6eb70a35"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/pa-IN/firefox-83.0.tar.bz2"; + locale = "pa-IN"; + arch = "linux-x86_64"; + sha256 = "083266958874618042ee8f2a6162184cd71bc725a994aeb68158d59edb0cafaa"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/pl/firefox-83.0.tar.bz2"; + locale = "pl"; + arch = "linux-x86_64"; + sha256 = "cb7c72fdc91cd9269a2e53725a26ee94db0e2e608a60ff1120fbe5c1627814bf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/pt-BR/firefox-83.0.tar.bz2"; + locale = "pt-BR"; + arch = "linux-x86_64"; + sha256 = "a2a188a222fc6054ca59d24370528e8c8d4d7dc8e4ab18f71510b415dde73d05"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/pt-PT/firefox-83.0.tar.bz2"; + locale = "pt-PT"; + arch = "linux-x86_64"; + sha256 = "528e1893438ead94afd4013d3c4f4f51107a5d0c4b6d6e018a0687f0d25f9e53"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/rm/firefox-83.0.tar.bz2"; + locale = "rm"; + arch = "linux-x86_64"; + sha256 = "e4d6e53b642da4de5c7f30297c6fec22b37921a55cb744962dc0d60e26812549"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ro/firefox-83.0.tar.bz2"; + locale = "ro"; + arch = "linux-x86_64"; + sha256 = "04ffa3eda69ea0dfc6251564c4c6bc742d5f8e5dbaf6184b4ee9461226ce5c86"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ru/firefox-83.0.tar.bz2"; + locale = "ru"; + arch = "linux-x86_64"; + sha256 = "697ddeb8ec024b5459492ebd652a612cfa1911267071b230f5ea6ac78a1e3075"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/si/firefox-83.0.tar.bz2"; + locale = "si"; + arch = "linux-x86_64"; + sha256 = "a3256c648ea75ce36009306a3c039af228e645ea2e54361fe239ad0cf0869ead"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/sk/firefox-83.0.tar.bz2"; + locale = "sk"; + arch = "linux-x86_64"; + sha256 = "1ae0f898d34c74ea427228d93646ae47990834d14bc4f5563427409dba066f8d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/sl/firefox-83.0.tar.bz2"; + locale = "sl"; + arch = "linux-x86_64"; + sha256 = "9e14b4ad7bd9a8026074e0a3da3d3ba74dbb1be31a2e9cae787802d090c7a965"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/son/firefox-83.0.tar.bz2"; + locale = "son"; + arch = "linux-x86_64"; + sha256 = "1b928ca974133a346950ffc663fbed9d1876a4c0bca53fd807d8077d031531d5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/sq/firefox-83.0.tar.bz2"; + locale = "sq"; + arch = "linux-x86_64"; + sha256 = "7bb9bcfe490bf5d577e55e9b612c932c93ac58252cef592b2af39c17987e700b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/sr/firefox-83.0.tar.bz2"; + locale = "sr"; + arch = "linux-x86_64"; + sha256 = "90e496a5fe9c5d8c38dfcf5a1a07ea04be983fe78c68cb13a2b99067b0f02e7a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/sv-SE/firefox-83.0.tar.bz2"; + locale = "sv-SE"; + arch = "linux-x86_64"; + sha256 = "eab8a1e51a90d36b58901db6175e724f38afb91270b05c51a93c03f8c51fe432"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ta/firefox-83.0.tar.bz2"; + locale = "ta"; + arch = "linux-x86_64"; + sha256 = "bb6d49500393d20134a6f749a77de1fc4cae2feba4e49261862f8a634b4b9276"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/te/firefox-83.0.tar.bz2"; + locale = "te"; + arch = "linux-x86_64"; + sha256 = "a1104e292f949976e423b587fe9728fc741b7a11e276e7d747afd3a93abe3eb5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/th/firefox-83.0.tar.bz2"; + locale = "th"; + arch = "linux-x86_64"; + sha256 = "403e4a86b5f95cb22cdb2100372c55d92fcb4708e3f719da72b643637c711458"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/tl/firefox-83.0.tar.bz2"; + locale = "tl"; + arch = "linux-x86_64"; + sha256 = "993cf86a1b045a477fd4c683e503314fc2aea5a0a52f1faaacd18a0fdc5c7def"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/tr/firefox-83.0.tar.bz2"; + locale = "tr"; + arch = "linux-x86_64"; + sha256 = "8e9e96d0b1a2014dc7374ea893fe72bc72f3840742d305a6e73417468dd6245b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/trs/firefox-83.0.tar.bz2"; + locale = "trs"; + arch = "linux-x86_64"; + sha256 = "3590ebb4c888cf92ebd615df9eda2413fd0a3031293d68809fef74fc92fa759b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/uk/firefox-83.0.tar.bz2"; + locale = "uk"; + arch = "linux-x86_64"; + sha256 = "7a3a2bae67ddd2afd2d6953f5f045a831595ea29e5cc6ad7083b8ac89e55917b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/ur/firefox-83.0.tar.bz2"; + locale = "ur"; + arch = "linux-x86_64"; + sha256 = "445a599ba623d8673d71f6ebde70c64a93e28e57b6859e325b0151240f1d49e5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/uz/firefox-83.0.tar.bz2"; + locale = "uz"; + arch = "linux-x86_64"; + sha256 = "b63e6c1c6afdc3694ee1d2b21175f4a5603c4454e43f0a08e87ccf800862b6bc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/vi/firefox-83.0.tar.bz2"; + locale = "vi"; + arch = "linux-x86_64"; + sha256 = "7127340d189ff601f96ba6f5e6a6175d850e822599e10762908d406b2174a256"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/xh/firefox-83.0.tar.bz2"; + locale = "xh"; + arch = "linux-x86_64"; + sha256 = "41772e457eaf385230086a461033854ad214b4160c6f99f7eb6c4df8dd137dc5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/zh-CN/firefox-83.0.tar.bz2"; + locale = "zh-CN"; + arch = "linux-x86_64"; + sha256 = "013fe88aea216fbc4de9fdaaf559d65678ba389049bcff896540dae8d0a9564d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-x86_64/zh-TW/firefox-83.0.tar.bz2"; + locale = "zh-TW"; + arch = "linux-x86_64"; + sha256 = "7e9eea2a326842f652aad4995f796af9550d03c034587d171e4b2a33da934645"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ach/firefox-83.0.tar.bz2"; + locale = "ach"; + arch = "linux-i686"; + sha256 = "9974b19f4f15d9aa33b5432cceea05efe44f31c4123596aca9fb5cd3dd734152"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/af/firefox-83.0.tar.bz2"; + locale = "af"; + arch = "linux-i686"; + sha256 = "5600ad5fad398648d2e7a2d7bdf7901769fa428f9ef9f79046917133e12a7eb6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/an/firefox-83.0.tar.bz2"; + locale = "an"; + arch = "linux-i686"; + sha256 = "d8e0843dafcaf1b010773b83a665fd593741858b60aaba61d4c308a86f765146"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ar/firefox-83.0.tar.bz2"; + locale = "ar"; + arch = "linux-i686"; + sha256 = "952b2ad360662341b9281cfdd93a141fe2efd16f73baa4fc4be1de7b8f12c8c3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ast/firefox-83.0.tar.bz2"; + locale = "ast"; + arch = "linux-i686"; + sha256 = "a7728b09f7e96983a031a32b1b938fa362e1a1e58722b37ec03a4048a152f0b1"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/az/firefox-83.0.tar.bz2"; + locale = "az"; + arch = "linux-i686"; + sha256 = "c6019a3f7ef56583445acc5ab310770c937b44182a1bb3ed54ac452e6e19f8fc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/be/firefox-83.0.tar.bz2"; + locale = "be"; + arch = "linux-i686"; + sha256 = "12ead04878e308682f04afb6ac9ce9ab134a5a542af328e029cd973c14fe7444"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/bg/firefox-83.0.tar.bz2"; + locale = "bg"; + arch = "linux-i686"; + sha256 = "7134539d5c259cdf6dd316205b857acae87730ca01bd6ef2efcca75f9d06d027"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/bn/firefox-83.0.tar.bz2"; + locale = "bn"; + arch = "linux-i686"; + sha256 = "a97524e0d6f6f61045b2573ac2fe98e31fa372429f5f53c25fb4cb4d32a31940"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/br/firefox-83.0.tar.bz2"; + locale = "br"; + arch = "linux-i686"; + sha256 = "4619705703a6878fba4de4227d90143abb92237ba556a8c5f4a51c9701671821"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/bs/firefox-83.0.tar.bz2"; + locale = "bs"; + arch = "linux-i686"; + sha256 = "2131babd061761fa1119a536ae354145315875c5d8cd300405a35924bbbfcc34"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ca-valencia/firefox-83.0.tar.bz2"; + locale = "ca-valencia"; + arch = "linux-i686"; + sha256 = "73238eb95ac828f4bc2ac220e4b953b950a75b88600b457bf3bd528245574cd8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ca/firefox-83.0.tar.bz2"; + locale = "ca"; + arch = "linux-i686"; + sha256 = "73e65093a587c89c9a392e3b65375ad2158c88e2905ab116eaf8da7cc5841cda"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/cak/firefox-83.0.tar.bz2"; + locale = "cak"; + arch = "linux-i686"; + sha256 = "7f2dd3fdf1e0cae21a1517286b60bbbabd310dfc0dc18588fbe21ba671e97dd3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/cs/firefox-83.0.tar.bz2"; + locale = "cs"; + arch = "linux-i686"; + sha256 = "5f639cc6d14b06ae62f73fc01b909182efea32710dfd817be60499f4da3eafd7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/cy/firefox-83.0.tar.bz2"; + locale = "cy"; + arch = "linux-i686"; + sha256 = "7a3e9921b2e6e407ebeeb22f1ac4b529222a1f5fbdc84c44fc902b8db6aeb1ef"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/da/firefox-83.0.tar.bz2"; + locale = "da"; + arch = "linux-i686"; + sha256 = "05dc3274927f692ec3c60f8353a30e2bcb1a36b54f4ddff90407e2818a497a38"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/de/firefox-83.0.tar.bz2"; + locale = "de"; + arch = "linux-i686"; + sha256 = "c95affb4655b7a0ad6959651cf10090970035c74601ea141366cbb5d44f8a526"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/dsb/firefox-83.0.tar.bz2"; + locale = "dsb"; + arch = "linux-i686"; + sha256 = "c9baf7df51fdebbb2521dd10830f759110a9c92dcdb579fad99d0c4112126e66"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/el/firefox-83.0.tar.bz2"; + locale = "el"; + arch = "linux-i686"; + sha256 = "52afcd2037b9cda2c66975dd184276bcccca27833cd7a6da989e32c591a06060"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/en-CA/firefox-83.0.tar.bz2"; + locale = "en-CA"; + arch = "linux-i686"; + sha256 = "375d3a11f236560f06397f157209b1ce476197a0e7b327cf187dc2002d053c90"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/en-GB/firefox-83.0.tar.bz2"; + locale = "en-GB"; + arch = "linux-i686"; + sha256 = "610657a623b5680c2ea350a5f3d1ec676e9dac8720e0e67b3e627e37a58b0ad6"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/en-US/firefox-83.0.tar.bz2"; + locale = "en-US"; + arch = "linux-i686"; + sha256 = "ac4df9d78ac0321f6be266e7fbf6b79d80bee7cfdf1b00c433072d2283c5fdf8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/eo/firefox-83.0.tar.bz2"; + locale = "eo"; + arch = "linux-i686"; + sha256 = "f23479cb30cf27fa368e9e04591aad2051eedde5e69d105bfc9ba6168792b44b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/es-AR/firefox-83.0.tar.bz2"; + locale = "es-AR"; + arch = "linux-i686"; + sha256 = "5657636c105d301474cf5d2707733a35ac5f5687790002d5778dffb32a727adc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/es-CL/firefox-83.0.tar.bz2"; + locale = "es-CL"; + arch = "linux-i686"; + sha256 = "896f2ac45b98eccd487de64b6c5aa98733d97bd4422dd1a16d02883e3a06c132"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/es-ES/firefox-83.0.tar.bz2"; + locale = "es-ES"; + arch = "linux-i686"; + sha256 = "9d337fc821dae150c4f3ce26c427ad0efa22c53f3b311b4ce7693b33c9ea4d7d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/es-MX/firefox-83.0.tar.bz2"; + locale = "es-MX"; + arch = "linux-i686"; + sha256 = "f9cbd03f9813157835ef7faf9fa2374e488144930ffdec765c370a95a9c72120"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/et/firefox-83.0.tar.bz2"; + locale = "et"; + arch = "linux-i686"; + sha256 = "4f33cbb67003da1b4db4dc12ee2e7b9fe942bc6e6d770608361355ce7fcf8214"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/eu/firefox-83.0.tar.bz2"; + locale = "eu"; + arch = "linux-i686"; + sha256 = "31970c98d028a83a6198dcee9c5f8191343cd84ec6a7fa032a31730db2cc7b00"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/fa/firefox-83.0.tar.bz2"; + locale = "fa"; + arch = "linux-i686"; + sha256 = "1125c534f2067e57701fab7ae3df55c52dc10693b069817021072c74b8b9bdcf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ff/firefox-83.0.tar.bz2"; + locale = "ff"; + arch = "linux-i686"; + sha256 = "ef6c66b0d8a6edce0c982eaee55cd14a4ac4d365478976a0c4f1cd48a6c10c6d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/fi/firefox-83.0.tar.bz2"; + locale = "fi"; + arch = "linux-i686"; + sha256 = "bcd529c0227bd64403dc023ef91459556fbb186e072c12075b705d50293d86c3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/fr/firefox-83.0.tar.bz2"; + locale = "fr"; + arch = "linux-i686"; + sha256 = "47c56fe2b88054d97622e9c0ff2043323b7a916da1e11541e96cf7b05c3e7d52"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/fy-NL/firefox-83.0.tar.bz2"; + locale = "fy-NL"; + arch = "linux-i686"; + sha256 = "b0ed17e5022b0817d6b4f58ef990ce22774bde875151c60be1f7251ec90cb189"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ga-IE/firefox-83.0.tar.bz2"; + locale = "ga-IE"; + arch = "linux-i686"; + sha256 = "380aad276cadff8221e4f675751278ba994e08ddb46a0ebde12d87b741c23263"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/gd/firefox-83.0.tar.bz2"; + locale = "gd"; + arch = "linux-i686"; + sha256 = "0489ed6e1e9150a0facb4e6fb59bea7673e89669d167806d5651224b939fada5"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/gl/firefox-83.0.tar.bz2"; + locale = "gl"; + arch = "linux-i686"; + sha256 = "bc41c2b611ecb4ccdedbbf480138a3bc6326106d6c1641d6a06e40f502427af0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/gn/firefox-83.0.tar.bz2"; + locale = "gn"; + arch = "linux-i686"; + sha256 = "ade8fe9ab75b0a5f75ce80ba0f8065c4b4cbf54d7772f4c3be96886ca166b373"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/gu-IN/firefox-83.0.tar.bz2"; + locale = "gu-IN"; + arch = "linux-i686"; + sha256 = "bc20ad60eee0e6a3d532e436d9b62175872fcb27dab4c9a5083ed6f4bda5f036"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/he/firefox-83.0.tar.bz2"; + locale = "he"; + arch = "linux-i686"; + sha256 = "a08862d8ebdfa2d6c4f038b91f264c9abe873537d1a7cd2997a1eb4d73bf6f4c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/hi-IN/firefox-83.0.tar.bz2"; + locale = "hi-IN"; + arch = "linux-i686"; + sha256 = "8ed5b454bdc38f07c79924a1dc08e76e65a48bd671991744a441693185683916"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/hr/firefox-83.0.tar.bz2"; + locale = "hr"; + arch = "linux-i686"; + sha256 = "97356a661d56d51a9210109db8ad75d61e3e00e4c7570d4e824712b52337af27"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/hsb/firefox-83.0.tar.bz2"; + locale = "hsb"; + arch = "linux-i686"; + sha256 = "5706aa76b23161baf24b79d2b45dd706006fb73aeedd06f41f3273f8078f371b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/hu/firefox-83.0.tar.bz2"; + locale = "hu"; + arch = "linux-i686"; + sha256 = "3b894beaef35012df54ba4c7509a06ece1a0cdf741308b3510ddc702c4eb3656"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/hy-AM/firefox-83.0.tar.bz2"; + locale = "hy-AM"; + arch = "linux-i686"; + sha256 = "b2894092de59b7d6bd6dcd2111fa4591b1a4ed054fd107e2093bd0962edb4405"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ia/firefox-83.0.tar.bz2"; + locale = "ia"; + arch = "linux-i686"; + sha256 = "9d9ee7e05a02078b7d4041c3b63e79f91f0a888b919cf726e2e69090ff05f71d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/id/firefox-83.0.tar.bz2"; + locale = "id"; + arch = "linux-i686"; + sha256 = "13e54589a23323e9043d4dac5586a31e5d43bdde0356b1a00a86f91ee5813eb2"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/is/firefox-83.0.tar.bz2"; + locale = "is"; + arch = "linux-i686"; + sha256 = "955a8a4ff1c5ba7124593b3c8537201ffb1fe33ea5c3edd6ab30e80e6b28f60a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/it/firefox-83.0.tar.bz2"; + locale = "it"; + arch = "linux-i686"; + sha256 = "23927419191d7aee8b29da29d213ee9c7ff39363f3fc9171c70d801158cb895b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ja/firefox-83.0.tar.bz2"; + locale = "ja"; + arch = "linux-i686"; + sha256 = "4ffaf6df345922bcd82942956a0f344c4b52ac49ec64879fef7307a0c34eb8e9"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ka/firefox-83.0.tar.bz2"; + locale = "ka"; + arch = "linux-i686"; + sha256 = "df1027754efd054bae379b35228067799e75820b08ca7e6aff5a527fdaf046a8"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/kab/firefox-83.0.tar.bz2"; + locale = "kab"; + arch = "linux-i686"; + sha256 = "6fc1e5d662ce742a48c003145b1b4b58cb296b43a20f718bdcffdc05e386078f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/kk/firefox-83.0.tar.bz2"; + locale = "kk"; + arch = "linux-i686"; + sha256 = "52cb3ac3a33da1227c3aa5e47e04620be2cc020bc520fcf013fe11ad74ad6378"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/km/firefox-83.0.tar.bz2"; + locale = "km"; + arch = "linux-i686"; + sha256 = "c598fa97bb79f56d01afb30caeff29a2c7dd1f162d2fb49c0632ee259d0fe860"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/kn/firefox-83.0.tar.bz2"; + locale = "kn"; + arch = "linux-i686"; + sha256 = "d6795f3f3c0978dbc399768fd824cceb6a3c1c883c153f65102ef476f74d6408"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ko/firefox-83.0.tar.bz2"; + locale = "ko"; + arch = "linux-i686"; + sha256 = "b4d0b62cdfd332d8e9878b75918a0362a7b68db0b62e4e4508dfa176e79b8ed7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/lij/firefox-83.0.tar.bz2"; + locale = "lij"; + arch = "linux-i686"; + sha256 = "257eec8bead076119b0c3679feb4f3de34c9cf66bd05215e7d76936e6d3ce052"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/lt/firefox-83.0.tar.bz2"; + locale = "lt"; + arch = "linux-i686"; + sha256 = "326925d68306ec6e5b7334eb413cff395ce6a27abf5b0981dee25a7888c64079"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/lv/firefox-83.0.tar.bz2"; + locale = "lv"; + arch = "linux-i686"; + sha256 = "036264de51a7a81b3d636b8217db571db70631231d485f353e64e9f43f0192f4"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/mk/firefox-83.0.tar.bz2"; + locale = "mk"; + arch = "linux-i686"; + sha256 = "6d4966ae49ba7746395b17b98c158c07d33293b68a6c648d0238107812ccfc03"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/mr/firefox-83.0.tar.bz2"; + locale = "mr"; + arch = "linux-i686"; + sha256 = "88a90205bfd157fbcb0697efbd4884772a463f776f5110aae9903dbc1151fcbc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ms/firefox-83.0.tar.bz2"; + locale = "ms"; + arch = "linux-i686"; + sha256 = "67d3651739404a73f263251896c129dc121808d4859169b3469b640345433e9e"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/my/firefox-83.0.tar.bz2"; + locale = "my"; + arch = "linux-i686"; + sha256 = "d7e9a1fe6d2e0e32c2ab9a773d198de241ac2a7d330d9eddce4f3afb9a67671b"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/nb-NO/firefox-83.0.tar.bz2"; + locale = "nb-NO"; + arch = "linux-i686"; + sha256 = "66c165884d4397db3e420151d2b6fa3d7bb7c6de790e6d284815cdcc323da3fe"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ne-NP/firefox-83.0.tar.bz2"; + locale = "ne-NP"; + arch = "linux-i686"; + sha256 = "f75832bd74f5ce8db3765201eee058f0386f196f407223e186c0be3d2a665fcf"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/nl/firefox-83.0.tar.bz2"; + locale = "nl"; + arch = "linux-i686"; + sha256 = "beb68fb193dfcccbe22369f9adcbebe701fd4c9ab5943ec685d5d20398a1ea5d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/nn-NO/firefox-83.0.tar.bz2"; + locale = "nn-NO"; + arch = "linux-i686"; + sha256 = "de2716b8f4c13c6ef76537ef52f1d0529016302ce220a90d9b5062af9becb5b7"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/oc/firefox-83.0.tar.bz2"; + locale = "oc"; + arch = "linux-i686"; + sha256 = "af2a788560a65cb9f3d2ce98acce4ecd3b3105b6c924c6a4de1a9deb6f2a4d42"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/pa-IN/firefox-83.0.tar.bz2"; + locale = "pa-IN"; + arch = "linux-i686"; + sha256 = "a3575371b20bab63a8bccc110343e0cd0736cffbc5c72dd7aa371c646a057060"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/pl/firefox-83.0.tar.bz2"; + locale = "pl"; + arch = "linux-i686"; + sha256 = "daa554b493ce1efa90a1b040e78d2f2e7ad8ca70c16ee19312c69ed4a12f00e3"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/pt-BR/firefox-83.0.tar.bz2"; + locale = "pt-BR"; + arch = "linux-i686"; + sha256 = "4f3fe4a1ce0e12383b37832f44b59fbb40b8fb6e95786edc57ea67ea3d5530bd"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/pt-PT/firefox-83.0.tar.bz2"; + locale = "pt-PT"; + arch = "linux-i686"; + sha256 = "c16bcb116b845a6b28b72096ae43d50f19c7b9868c8bbb833db60eaaa70b001d"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/rm/firefox-83.0.tar.bz2"; + locale = "rm"; + arch = "linux-i686"; + sha256 = "334d3dcf333a66f4bd169536f7f3b56ba4b257793dfd0837badff2a77b3668f4"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ro/firefox-83.0.tar.bz2"; + locale = "ro"; + arch = "linux-i686"; + sha256 = "1e6ad9735fe0046beaf80ac35d0a1831aade14f388d08991b9bc583135ebd94c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ru/firefox-83.0.tar.bz2"; + locale = "ru"; + arch = "linux-i686"; + sha256 = "a252bcd66f01375fbc4ce040b89c853c34745e8dede116d200303c56d6307f15"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/si/firefox-83.0.tar.bz2"; + locale = "si"; + arch = "linux-i686"; + sha256 = "ebc5ce83b456f75b671694ac954258ca480caee563e0cb395786692aedf24d88"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/sk/firefox-83.0.tar.bz2"; + locale = "sk"; + arch = "linux-i686"; + sha256 = "28aac94a71298c459f14949c9c82b379762d3192a16d92e90605ab8925cb31ad"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/sl/firefox-83.0.tar.bz2"; + locale = "sl"; + arch = "linux-i686"; + sha256 = "7fe0eb68a898488bcb697120542fbdcfd1d972c658b4c361bba351a8f5eb76e0"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/son/firefox-83.0.tar.bz2"; + locale = "son"; + arch = "linux-i686"; + sha256 = "f9cb1327834b6a6e41d4abf531410391a40f33a8d168d562dc367faf31d9e042"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/sq/firefox-83.0.tar.bz2"; + locale = "sq"; + arch = "linux-i686"; + sha256 = "15370cc0527797f451a5a1f47637c6663437c8f49fc5c056ccbc2e7510cd6c94"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/sr/firefox-83.0.tar.bz2"; + locale = "sr"; + arch = "linux-i686"; + sha256 = "c44773c36eb39067e429fb4a4b57676abc7eb9fcf45bd6654d96761f64747c6a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/sv-SE/firefox-83.0.tar.bz2"; + locale = "sv-SE"; + arch = "linux-i686"; + sha256 = "aa8d2dc50dce8a53a926c71a4a7a57023a017d5fbd54cd1e446ef74b5eef7dea"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ta/firefox-83.0.tar.bz2"; + locale = "ta"; + arch = "linux-i686"; + sha256 = "5fc3e8a048ec24e49c4c4a0e36712b378687e927c30dc8ecb3ec63bcf983062a"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/te/firefox-83.0.tar.bz2"; + locale = "te"; + arch = "linux-i686"; + sha256 = "ff123410cec64c47d239a432d32eaefa494e7cd7fb0157cc45917fe04b2916ef"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/th/firefox-83.0.tar.bz2"; + locale = "th"; + arch = "linux-i686"; + sha256 = "cb7cbf97884a5b4f62c4e0932ead0e5de018c9623590ac3798a86986916258dc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/tl/firefox-83.0.tar.bz2"; + locale = "tl"; + arch = "linux-i686"; + sha256 = "0d55a23e2c0b7da80a6c042e50fc3c9364c3f24309cf255bfbe55a320ec2cf00"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/tr/firefox-83.0.tar.bz2"; + locale = "tr"; + arch = "linux-i686"; + sha256 = "bfc1adb570f79b4f095bc87ab5a54c6b5179579840ded61319a10ad5ff39d52f"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/trs/firefox-83.0.tar.bz2"; + locale = "trs"; + arch = "linux-i686"; + sha256 = "05b5a2252380147ec47561e29514e3f994414b46aae3dd168909f03e7dec16ef"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/uk/firefox-83.0.tar.bz2"; + locale = "uk"; + arch = "linux-i686"; + sha256 = "7e34b52f4d46a735e36f549295d0f9704113024058a7d8d69a8ee6a023d03755"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/ur/firefox-83.0.tar.bz2"; + locale = "ur"; + arch = "linux-i686"; + sha256 = "1d48e536c09f862bc00fcaf9a175eaeffac1e0aaff66d71ca49123c00cc885bc"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/uz/firefox-83.0.tar.bz2"; + locale = "uz"; + arch = "linux-i686"; + sha256 = "1f1cf131b3196886aa0f923c5dbaa279b86c3473dc048ce23d58fe811ca1266c"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/vi/firefox-83.0.tar.bz2"; + locale = "vi"; + arch = "linux-i686"; + sha256 = "b98507cd809abd28c51514448bf995661dede7c727808ab8c2db46da8da0a164"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/xh/firefox-83.0.tar.bz2"; + locale = "xh"; + arch = "linux-i686"; + sha256 = "73de4ec29cd09610359909ada39820a119a15c3ae0cc1658c2e9b874801a9015"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/zh-CN/firefox-83.0.tar.bz2"; + locale = "zh-CN"; + arch = "linux-i686"; + sha256 = "fea085476f4456133c1f0973121319f1c3efadcc50134cbf5ccde351bbe2ff06"; + } + { url = "http://archive.mozilla.org/pub/firefox/releases/83.0/linux-i686/zh-TW/firefox-83.0.tar.bz2"; + locale = "zh-TW"; + arch = "linux-i686"; + sha256 = "5aebd374f2e73f83bec4c14239555d9f2771d3379280fc55f90f1ae0909be009"; + } + ]; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix new file mode 100644 index 000000000000..018bf04cb570 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix @@ -0,0 +1,93 @@ +{ name +, channel +, writeScript +, xidel +, coreutils +, gnused +, gnugrep +, curl +, gnupg +, runtimeShell +, baseName ? "firefox" +, basePath ? "pkgs/applications/networking/browsers/firefox-bin" +, baseUrl +}: + +let + isBeta = + channel != "release"; + +in writeScript "update-${name}" '' + #!${runtimeShell} + PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${gnupg}/bin + set -eux + pushd ${basePath} + + HOME=`mktemp -d` + export GNUPGHOME=`mktemp -d` + + gpg --import ${./mozilla.asc} + + tmpfile=`mktemp` + url=${baseUrl} + + # retriving latest released version + # - extracts all links from the $url + # - removes . and .. + # - this line remove everything not starting with a number + # - this line sorts everything with semver in mind + # - we remove lines that are mentioning funnelcake + # - this line removes beta version if we are looking for final release + # versions or removes release versions if we are looking for beta + # versions + # - this line pick up latest release + version=`xidel -s $url --extract "//a" | \ + sed s"/.$//" | \ + grep "^[0-9]" | \ + sort --version-sort | \ + grep -v "funnelcake" | \ + grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \ + tail -1` + + curl --silent -o $HOME/shasums "$url$version/SHA256SUMS" + curl --silent -o $HOME/shasums.asc "$url$version/SHA256SUMS.asc" + gpgv --keyring=$GNUPGHOME/pubring.kbx $HOME/shasums.asc $HOME/shasums + + # this is a list of sha256 and tarballs for both arches + # Upstream files contains python repr strings like b'somehash', hence the sed dance + shasums=`cat $HOME/shasums | sed -E s/"b'([a-f0-9]{64})'?(.*)"/'\1\2'/ | grep tar.bz2` + + cat > $tmpfile <<EOF + { + version = "$version"; + sources = [ + EOF + for arch in linux-x86_64 linux-i686; do + # retriving a list of all tarballs for each arch + # - only select tarballs for current arch + # - only select tarballs for current version + # - rename space with colon so that for loop doesnt + # - inteprets sha and path as 2 lines + for line in `echo "$shasums" | \ + grep $arch | \ + grep "${baseName}-$version.tar.bz2$" | \ + tr " " ":"`; do + # create an entry for every locale + cat >> $tmpfile <<EOF + { url = "$url$version/`echo $line | cut -d":" -f3`"; + locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`"; + arch = "$arch"; + sha256 = "`echo $line | cut -d":" -f1`"; + } + EOF + done + done + cat >> $tmpfile <<EOF + ]; + } + EOF + + mv $tmpfile ${channel}_sources.nix + + popd +'' diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix new file mode 100644 index 000000000000..1fbfdc2a7da6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix @@ -0,0 +1,392 @@ +{ pname, ffversion, meta, updateScript ? null +, src, unpackPhase ? null, patches ? [] +, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] }: + +{ lib, stdenv, pkgconfig, pango, perl, python2, python3, zip +, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg +, freetype, fontconfig, file, nspr, nss, nss_3_53, libnotify +, yasm, libGLU, libGL, sqlite, unzip, makeWrapper +, hunspell, libXdamage, libevent, libstartup_notification +, libvpx_1_8 +, icu67, libpng, jemalloc, glib +, autoconf213, which, gnused, rustPackages, rustPackages_1_45 +, rust-cbindgen, nodejs, nasm, fetchpatch +, gnum4 +, debugBuild ? false + +### optionals + +## optional libraries + +, alsaSupport ? stdenv.isLinux, alsaLib +, pulseaudioSupport ? stdenv.isLinux, libpulseaudio +, ffmpegSupport ? true +, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook +, waylandSupport ? true, libxkbcommon +# LTO is disabled since it caused segfaults on wayland see https://github.com/NixOS/nixpkgs/issues/101429 +, ltoSupport ? false, overrideCC, buildPackages +, gssSupport ? true, kerberos +, pipewireSupport ? waylandSupport && webrtcSupport, pipewire + +## privacy-related options + +, privacySupport ? false + +# WARNING: NEVER set any of the options below to `true` by default. +# Set to `!privacySupport` or `false`. + +# webrtcSupport breaks the aarch64 build on version >= 60, fixed in 63. +# https://bugzilla.mozilla.org/show_bug.cgi?id=1434589 +, webrtcSupport ? !privacySupport +, geolocationSupport ? !privacySupport +, googleAPISupport ? geolocationSupport +, crashreporterSupport ? false + +, safeBrowsingSupport ? false +, drmSupport ? false + +# macOS dependencies +, xcbuild, CoreMedia, ExceptionHandling, Kerberos, AVFoundation, MediaToolbox +, CoreLocation, Foundation, AddressBook, libobjc, cups, rsync + +## other + +# As stated by Sylvestre Ledru (@sylvestre) on Nov 22, 2017 at +# https://github.com/NixOS/nixpkgs/issues/31843#issuecomment-346372756 we +# have permission to use the official firefox branding. +# +# For purposes of documentation the statement of @sylvestre: +# > As the person who did part of the work described in the LWN article +# > and release manager working for Mozilla, I can confirm the statement +# > that I made in +# > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815006 +# > +# > @garbas shared with me the list of patches applied for the Nix package. +# > As they are just for portability and tiny modifications, they don't +# > alter the experience of the product. In parallel, Rok also shared the +# > build options. They seem good (even if I cannot judge the quality of the +# > packaging of the underlying dependencies like sqlite, png, etc). +# > Therefor, as long as you keep the patch queue sane and you don't alter +# > the experience of Firefox users, you won't have any issues using the +# > official branding. +, enableOfficialBranding ? true +}: + +assert stdenv.cc.libc or null != null; +assert pipewireSupport -> !waylandSupport || !webrtcSupport -> throw "pipewireSupport requires both wayland and webrtc support."; +assert ltoSupport -> stdenv.isDarwin -> throw "LTO is broken on Darwin (see PR#19312)."; + +let + flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")]; + + default-toolkit = if stdenv.isDarwin then "cairo-cocoa" + else "cairo-gtk${if gtk3Support then "3${lib.optionalString waylandSupport "-wayland"}" else "2"}"; + + binaryName = "firefox"; + binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName; + + browserName = if stdenv.isDarwin then binaryNameCapitalized else binaryName; + + execdir = if stdenv.isDarwin + then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS" + else "/bin"; + + # Darwin's stdenv provides the default llvmPackages version, match that since + # clang LTO on Darwin is broken so the stdenv is not being changed. + llvmPackages = if stdenv.isDarwin + then buildPackages.llvmPackages + else buildPackages.llvmPackages_10; + + # When LTO for Darwin is fixed, the following will need updating as lld + # doesn't work on it. For now it is fine since ltoSupport implies no Darwin. + buildStdenv = if ltoSupport + then overrideCC stdenv llvmPackages.lldClang + else stdenv; + + # 78 ESR won't build with rustc 1.47 + inherit (if lib.versionAtLeast ffversion "82" then rustPackages else rustPackages_1_45) + rustc cargo; + + nss_pkg = if lib.versionOlder ffversion "83" then nss_3_53 else nss; +in + +buildStdenv.mkDerivation ({ + name = "${pname}-unwrapped-${ffversion}"; + version = ffversion; + + inherit src unpackPhase meta; + + patches = [ + ./env_var_for_system_dir.patch + ./no-buildconfig-ffx76.patch + ] ++ + + # there are two flavors of pipewire support + # The patches for the ESR release and the patches for the current stable + # release. + # Until firefox upstream stabilizes pipewire support we will have to continue + # tracking multiple versions here. + lib.optional (pipewireSupport && lib.versionOlder ffversion "83") + (fetchpatch { + # https://src.fedoraproject.org/rpms/firefox/blob/master/f/firefox-pipewire-0-3.patch + url = "https://src.fedoraproject.org/rpms/firefox/raw/e99b683a352cf5b2c9ff198756859bae408b5d9d/f/firefox-pipewire-0-3.patch"; + sha256 = "0qc62di5823r7ly2lxkclzj9rhg2z7ms81igz44nv0fzv3dszdab"; + }) + ++ + # This picks pipewire patches from fedora that are part of https://bugzilla.mozilla.org/show_bug.cgi?id=1672944 + lib.optionals (pipewireSupport && lib.versionAtLeast ffversion "83") (let + fedora_revision = "d6756537dd8cf4d9816dc63ada66ea026e0fd128"; + mkPWPatch = spec: fetchpatch { + inherit (spec) name sha256; + url = "https://src.fedoraproject.org/rpms/firefox/raw/${fedora_revision}/f/${spec.name}"; + }; + in map mkPWPatch [ + { name = "pw1.patch"; sha256 = "1a7zvngn3k7dg886zmi38kmrsdzh2rrr46aw59bhr1gfmq8wlwn0"; } + { name = "pw2.patch"; sha256 = "17irg3yb2mchcy0z0nr4k65mwvkps467cvvczr10fnm06lhkhw1l"; } + { name = "pw3.patch"; sha256 = "12p6ql5ff2lfzlni6xkpz63h2xr6n2a9zf8hhjl99fj56rif6706"; } + { name = "pw4.patch"; sha256 = "0rvysc92rdm98s47w5lvbnrklrf7d299k3918qnldniyb4b9p4mg"; } + { name = "pw5.patch"; sha256 = "0kk2yxq4qkfwc4px6m08jrn18a7a7dhrngfiaw84r9ga6sgn0z00"; } + { name = "pw6.patch"; sha256 = "12lhx9wjpw0ahbfmw07wsx76bb223mr453q9cg8cq951vyskch3s"; } + { name = "pw7.patch"; sha256 = "0afw7cfd48vn62zb9y5kd2l26fg44s3aq1kyg3gm4q3rj34xidf6"; } + ]) + + ++ patches; + + + # Ignore trivial whitespace changes in patches, this fixes compatibility of + # ./env_var_for_system_dir.patch with Firefox >=65 without having to track + # two patches. + patchFlags = [ "-p1" "-l" ]; + + buildInputs = [ + gtk2 perl zip libjpeg zlib bzip2 + dbus dbus-glib pango freetype fontconfig xorg.libXi xorg.libXcursor + xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file + libnotify xorg.pixman yasm libGLU libGL + xorg.xorgproto + xorg.libXext unzip makeWrapper + libevent libstartup_notification /* cairo */ + libpng jemalloc glib + nasm icu67 libvpx_1_8 + # >= 66 requires nasm for the AV1 lib dav1d + # yasm can potentially be removed in future versions + # https://bugzilla.mozilla.org/show_bug.cgi?id=1501796 + # https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ + nspr nss_pkg + ] + ++ lib.optional alsaSupport alsaLib + ++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed + ++ lib.optional gtk3Support gtk3 + ++ lib.optional gssSupport kerberos + ++ lib.optional ltoSupport llvmPackages.libunwind + ++ lib.optionals waylandSupport [ libxkbcommon ] + ++ lib.optionals pipewireSupport [ pipewire ] + ++ lib.optionals (lib.versionAtLeast ffversion "82") [ gnum4 ] + ++ lib.optionals buildStdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos + AVFoundation MediaToolbox CoreLocation + Foundation libobjc AddressBook cups ]; + + NIX_LDFLAGS = lib.optionalString ltoSupport '' + -rpath ${placeholder "out"}/lib/${binaryName} + -rpath ${llvmPackages.libunwind.out}/lib + ''; + + NIX_CFLAGS_COMPILE = toString [ + "-I${glib.dev}/include/gio-unix-2.0" + "-I${nss_pkg.dev}/include/nss" + ]; + + MACH_USE_SYSTEM_PYTHON = "1"; + + postPatch = '' + rm -rf obj-x86_64-pc-linux-gnu + '' + lib.optionalString (pipewireSupport && lib.versionOlder ffversion "83") '' + # substitute the /usr/include/ lines for the libraries that pipewire provides. + # The patch we pick from fedora only contains the generated moz.build files + # which hardcode the dependency paths instead of running pkg_config. + substituteInPlace \ + media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build \ + --replace /usr/include ${pipewire.dev}/include + '' + lib.optionalString (lib.versionAtLeast ffversion "80") '' + substituteInPlace dom/system/IOUtils.h \ + --replace '#include "nspr/prio.h"' '#include "prio.h"' + + substituteInPlace dom/system/IOUtils.cpp \ + --replace '#include "nspr/prio.h"' '#include "prio.h"' \ + --replace '#include "nspr/private/pprio.h"' '#include "private/pprio.h"' \ + --replace '#include "nspr/prtypes.h"' '#include "prtypes.h"' + ''; + + nativeBuildInputs = + [ + autoconf213 + cargo + gnused + llvmPackages.llvm # llvm-objdump + nodejs + perl + pkgconfig + python2 + python3 + rust-cbindgen + rustc + which + ] + ++ lib.optional gtk3Support wrapGAppsHook + ++ lib.optionals buildStdenv.isDarwin [ xcbuild rsync ] + ++ extraNativeBuildInputs; + + preConfigure = '' + # remove distributed configuration files + rm -f configure + rm -f js/src/configure + rm -f .mozconfig* + # this will run autoconf213 + configureScript="$(realpath ./mach) configure" + export MOZCONFIG=$(pwd)/mozconfig + + # Set C flags for Rust's bindgen program. Unlike ordinary C + # compilation, bindgen does not invoke $CC directly. Instead it + # uses LLVM's libclang. To make sure all necessary flags are + # included we need to look in a few places. + # TODO: generalize this process for other use-cases. + + BINDGEN_CFLAGS="$(< ${buildStdenv.cc}/nix-support/libc-crt1-cflags) \ + $(< ${buildStdenv.cc}/nix-support/libc-cflags) \ + $(< ${buildStdenv.cc}/nix-support/cc-cflags) \ + $(< ${buildStdenv.cc}/nix-support/libcxx-cxxflags) \ + ${lib.optionalString buildStdenv.cc.isClang "-idirafter ${buildStdenv.cc.cc}/lib/clang/${lib.getVersion buildStdenv.cc.cc}/include"} \ + ${lib.optionalString buildStdenv.cc.isGNU "-isystem ${buildStdenv.cc.cc}/include/c++/${lib.getVersion buildStdenv.cc.cc} -isystem ${buildStdenv.cc.cc}/include/c++/${lib.getVersion buildStdenv.cc.cc}/${buildStdenv.hostPlatform.config}"} \ + $NIX_CFLAGS_COMPILE" + + echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG + '' + (lib.optionalString googleAPISupport '' + # Google API key used by Chromium and Firefox. + # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, + # please get your own set of keys. + echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga + # 60.5+ & 66+ did split the google API key arguments: https://bugzilla.mozilla.org/show_bug.cgi?id=1531176 + configureFlagsArray+=("--with-google-location-service-api-keyfile=$TMPDIR/ga") + configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/ga") + '') + '' + # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286 + unset AS + ''; + + configureFlags = [ + "--enable-application=browser" + "--with-system-jpeg" + "--with-system-zlib" + "--with-system-libevent" + "--with-system-libvpx" + "--with-system-png" # needs APNG support + "--with-system-icu" + "--enable-system-ffi" + "--enable-system-pixman" + #"--enable-system-cairo" + "--disable-tests" + "--disable-necko-wifi" # maybe we want to enable this at some point + "--disable-updater" + "--enable-jemalloc" + "--enable-default-toolkit=${default-toolkit}" + "--with-libclang-path=${llvmPackages.libclang}/lib" + "--with-system-nspr" + "--with-system-nss" + ] + ++ lib.optional (buildStdenv.isDarwin) "--disable-xcode-checks" + ++ lib.optional (!ltoSupport) "--with-clang-path=${llvmPackages.clang}/bin/clang" + # LTO is done using clang and lld on Linux. + # Darwin needs to use the default linker as lld is not supported (yet?): + # https://bugzilla.mozilla.org/show_bug.cgi?id=1538724 + # elf-hack is broken when using clang+lld: + # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 + ++ lib.optionals ltoSupport [ + "--enable-lto" + "--disable-elf-hack" + ] ++ lib.optional (ltoSupport && !buildStdenv.isDarwin) "--enable-linker=lld" + + ++ flag alsaSupport "alsa" + ++ flag pulseaudioSupport "pulseaudio" + ++ flag ffmpegSupport "ffmpeg" + ++ flag gssSupport "negotiateauth" + ++ flag webrtcSupport "webrtc" + ++ flag crashreporterSupport "crashreporter" + ++ lib.optional drmSupport "--enable-eme=widevine" + + ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ] + else [ "--disable-debug" "--enable-release" + "--enable-optimize" + "--enable-strip" ]) + ++ lib.optional enableOfficialBranding "--enable-official-branding" + ++ extraConfigureFlags; + + postConfigure = '' + cd obj-* + ''; + + makeFlags = lib.optionals enableOfficialBranding [ + "MOZILLA_OFFICIAL=1" + "BUILD_OFFICIAL=1" + ] + ++ extraMakeFlags; + + enableParallelBuilding = true; + doCheck = false; # "--disable-tests" above + + installPhase = if buildStdenv.isDarwin then '' + mkdir -p $out/Applications + cp -LR dist/${binaryNameCapitalized}.app $out/Applications + '' else null; + + postInstall = lib.optionalString buildStdenv.isLinux '' + # Remove SDK cruft. FIXME: move to a separate output? + rm -rf $out/share/idl $out/include $out/lib/${binaryName}-devel-* + + # Needed to find Mozilla runtime + gappsWrapperArgs+=(--argv0 "$out/bin/.${binaryName}-wrapped") + ''; + + postFixup = lib.optionalString buildStdenv.isLinux '' + # Fix notifications. LibXUL uses dlopen for this, unfortunately; see #18712. + patchelf --set-rpath "${lib.getLib libnotify + }/lib:$(patchelf --print-rpath "$out"/lib/${binaryName}*/libxul.so)" \ + "$out"/lib/${binaryName}*/libxul.so + patchelf --add-needed ${xorg.libXScrnSaver.out}/lib/libXss.so $out/lib/${binaryName}/${binaryName} + ''; + + doInstallCheck = true; + installCheckPhase = '' + # Some basic testing + "$out${execdir}/${browserName}" --version + ''; + + passthru = { + inherit updateScript; + version = ffversion; + isFirefox3Like = true; + gtk = gtk2; + inherit alsaSupport; + inherit nspr; + inherit ffmpegSupport; + inherit gssSupport; + inherit execdir; + inherit browserName; + } // lib.optionalAttrs gtk3Support { inherit gtk3; }; + + hardeningDisable = [ "format" ]; # -Werror=format-security + + # the build system verifies checksums of the bundled rust sources + # ./third_party/rust is be patched by our libtool fixup code in stdenv + # unfortunately we can't just set this to `false` when we do not want it. + # See https://github.com/NixOS/nixpkgs/issues/77289 for more details + # Ideally we would figure out how to tell the build system to not + # care about changed hashes as we are already doing that when we + # fetch the sources. Any further modifications of the source tree + # is on purpose by some of our tool (or by accident and a bug?). + dontFixLibtool = true; + + # on aarch64 this is also required + dontUpdateAutotoolsGnuConfigScripts = true; + + requiredSystemFeatures = [ "big-parallel" ]; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch new file mode 100644 index 000000000000..18d31356989a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch @@ -0,0 +1,6 @@ +--- a/toolkit/xre/nsXREDirProvider.cpp 2019-02-28 21:00:14.157543388 +0100 ++++ b/toolkit/xre/nsXREDirProvider.cpp 2019-02-28 21:01:28.731128320 +0100 +@@ -302 +302,2 @@ +- rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir)); ++ const char* pathVar = PR_GetEnv("MOZ_SYSTEM_DIR"); ++ rv = NS_NewNativeLocalFile((pathVar && *pathVar) ? nsDependentCString(pathVar) : reinterpret_cast<const nsCString&>(dirname), false, getter_AddRefs(localDir)); diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch new file mode 100644 index 000000000000..3530954ea5c5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx76.patch @@ -0,0 +1,24 @@ +Remove about:buildconfig. If used as-is, it would add unnecessary runtime dependencies. +diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp +--- firefox-76.0.orig/docshell/base/nsAboutRedirector.cpp 2020-05-03 19:01:29.926544735 +0200 ++++ firefox-76.0/docshell/base/nsAboutRedirector.cpp 2020-05-03 19:12:00.845035570 +0200 +@@ -62,8 +62,6 @@ + {"about", "chrome://global/content/aboutAbout.html", 0}, + {"addons", "chrome://mozapps/content/extensions/extensions.xhtml", + nsIAboutModule::ALLOW_SCRIPT}, +- {"buildconfig", "chrome://global/content/buildconfig.html", +- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT}, + {"checkerboard", "chrome://global/content/aboutCheckerboard.html", + nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | + nsIAboutModule::ALLOW_SCRIPT}, +diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn +--- firefox-65.0-orig/toolkit/content/jar.mn 2019-01-23 00:48:35.033372506 +0100 ++++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100 +@@ -36,7 +36,6 @@ + content/global/plugins.css + content/global/browser-child.js + content/global/browser-content.js +-* content/global/buildconfig.html + content/global/buildconfig.css + content/global/contentAreaUtils.js + content/global/datepicker.xhtml diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix new file mode 100644 index 000000000000..7f1d9763e424 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix @@ -0,0 +1,66 @@ +{ stdenv, lib, callPackage, fetchurl, fetchpatch }: + +let + common = opts: callPackage (import ./common.nix opts) {}; +in + +rec { + firefox = common rec { + pname = "firefox"; + ffversion = "83.0"; + src = fetchurl { + url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; + sha512 = "3va5a9471677jfzkhqp8xkba45n0bcpphbabhqbcbnps6p85m3y98pl5jy9q7cpq3a6gxc4ax7bp90yz2nfvfq7i64iz397xpprri2a"; + }; + + patches = [ + # Fix compilation on aarch64 with newer rust version + # See https://bugzilla.mozilla.org/show_bug.cgi?id=1677690 + # and https://bugzilla.redhat.com/show_bug.cgi?id=1897675 + (fetchpatch { + name = "aarch64-simd-bgz-1677690.patch"; + url = "https://github.com/mozilla/gecko-dev/commit/71597faac0fde4f608a60dd610d0cefac4972cc3.patch"; + sha256 = "1f61nsgbv2c2ylgjs7wdahxrrlgc19gjy5nzs870zr1g832ybwin"; + }) + ]; + + meta = { + description = "A web browser built from Firefox source tree"; + homepage = "http://www.mozilla.com/en-US/firefox/"; + maintainers = with lib.maintainers; [ eelco ]; + platforms = lib.platforms.unix; + badPlatforms = lib.platforms.darwin; + broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". + # not in `badPlatforms` because cross-compilation on 64-bit machine might work. + license = lib.licenses.mpl20; + }; + updateScript = callPackage ./update.nix { + attrPath = "firefox-unwrapped"; + versionKey = "ffversion"; + }; + }; + + firefox-esr-78 = common rec { + pname = "firefox-esr"; + ffversion = "78.5.0esr"; + src = fetchurl { + url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; + sha512 = "20h53cn7p4dds1yfm166iwbjdmw4fkv5pfk4z0pni6x8ddjvg19imzs6ggmpnfhaji8mnlknm7xp5j7x9vi24awvdxdds5n88rh25hd"; + }; + + meta = { + description = "A web browser built from Firefox Extended Support Release source tree"; + homepage = "http://www.mozilla.com/en-US/firefox/"; + maintainers = with lib.maintainers; [ eelco ]; + platforms = lib.platforms.unix; + badPlatforms = lib.platforms.darwin; + broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". + # not in `badPlatforms` because cross-compilation on 64-bit machine might work. + license = lib.licenses.mpl20; + }; + updateScript = callPackage ./update.nix { + attrPath = "firefox-esr-78-unwrapped"; + versionKey = "ffversion"; + }; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix new file mode 100644 index 000000000000..e12b552535d2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix @@ -0,0 +1,35 @@ +{ writeScript +, lib +, xidel +, common-updater-scripts +, coreutils +, gnused +, gnugrep +, curl +, attrPath +, runtimeShell +, baseUrl ? "http://archive.mozilla.org/pub/firefox/releases/" +, versionSuffix ? "" +, versionKey ? "version" +}: + +writeScript "update-${attrPath}" '' + #!${runtimeShell} + PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused xidel ]} + + url=${baseUrl} + + # retriving latest released version + # - extracts all links from the $url + # - extracts lines only with number and dots followed by a slash + # - removes trailing slash + # - sorts everything with semver in mind + # - picks up latest release + version=`xidel -s $url --extract "//a" | \ + grep "^[0-9.]*${versionSuffix}/$" | \ + sed s/[/]$// | \ + sort --version-sort | \ + tail -n 1` + + update-source-version ${attrPath} "$version" "" "" --version-key=${versionKey} +'' diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix new file mode 100644 index 000000000000..7f0b826f905e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -0,0 +1,364 @@ +{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config +, replace, fetchurl, zip, unzip, jq + +## various stuff that can be plugged in +, flashplayer, hal-flash +, ffmpeg, xorg, alsaLib, libpulseaudio, libcanberra-gtk2, libglvnd +, gnome3/*.gnome-shell*/ +, browserpass, chrome-gnome-shell, uget-integrator, plasma5, bukubrow +, tridactyl-native +, fx_cast_bridge +, udev +, kerberos +, libva +, mesa # firefox wants gbm for drm+dmabuf +}: + +## configurability of the wrapper itself + +browser: + +let + wrapper = + { browserName ? browser.browserName or (lib.getName browser) + , pname ? browserName + , version ? lib.getVersion browser + , desktopName ? # browserName with first letter capitalized + (lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName) + , nameSuffix ? "" + , icon ? browserName + , extraNativeMessagingHosts ? [] + , pkcs11Modules ? [] + , forceWayland ? false + , useGlvnd ? true + , cfg ? config.${browserName} or {} + + ## Following options are needed for extra prefs & policies + # For more information about anti tracking (german website) + # visit https://wiki.kairaven.de/open/app/firefox + , extraPrefs ? "" + # For more information about policies visit + # https://github.com/mozilla/policy-templates#enterprisepoliciesenabled + , extraPolicies ? {} + , firefoxLibName ? "firefox" # Important for tor package or the like + , nixExtensions ? null + }: + + assert forceWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used + + let + enableAdobeFlash = cfg.enableAdobeFlash or false; + ffmpegSupport = browser.ffmpegSupport or false; + gssSupport = browser.gssSupport or false; + alsaSupport = browser.alsaSupport or false; + + plugins = + let + removed = lib.filter (a: builtins.hasAttr a cfg) [ + "enableVLC" + "enableDjvu" + "enableMPlayer" + "jre" + "icedtea" + "enableGoogleTalkPlugin" + "enableFriBIDPlugin" + "enableBluejeans" + "enableAdobeReader" + ]; + in if removed != [] + then throw "Your configuration mentions ${lib.concatMapStringsSep ", " (p: browserName + "." + p) removed}. All plugin related options, except for the adobe flash player, have been removed, since Firefox from version 52 onwards no longer supports npapi plugins (see https://support.mozilla.org/en-US/kb/npapi-plugins)." + else lib.optional enableAdobeFlash flashplayer; + + nativeMessagingHosts = + ([ ] + ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass) + ++ lib.optional (cfg.enableBukubrow or false) bukubrow + ++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native + ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell + ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator + ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5.plasma-browser-integration + ++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge + ++ extraNativeMessagingHosts + ); + libs = lib.optionals stdenv.isLinux [ udev libva mesa ] + ++ lib.optional ffmpegSupport ffmpeg + ++ lib.optional gssSupport kerberos + ++ lib.optional useGlvnd libglvnd + ++ lib.optionals (cfg.enableQuakeLive or false) + (with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ]) + ++ lib.optional (enableAdobeFlash && (cfg.enableAdobeFlashDRM or false)) hal-flash + ++ lib.optional (config.pulseaudio or true) libpulseaudio + ++ lib.optional alsaSupport alsaLib + ++ pkcs11Modules; + gtk_modules = [ libcanberra-gtk2 ]; + + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + policiesJson = builtins.toFile "policies.json" + (builtins.toJSON enterprisePolicies); + + usesNixExtensions = nixExtensions != null; + + extensions = builtins.map (a: + if ! (builtins.hasAttr "extid" a) then + throw "nixExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon" + else + a + ) (if usesNixExtensions then nixExtensions else []); + + enterprisePolicies = + { + policies = lib.optionalAttrs usesNixExtensions { + DisableAppUpdate = true; + } // + lib.optionalAttrs usesNixExtensions { + ExtensionSettings = { + "*" = { + blocked_install_message = "You can't have manual extension mixed with nix extensions"; + installation_mode = "blocked"; + }; + + } // lib.foldr (e: ret: + ret // { + "${e.extid}" = { + installation_mode = "allowed"; + }; + } + ) {} extensions; + } + // extraPolicies; + }; + + mozillaCfg = builtins.toFile "mozilla.cfg" '' +// First line must be a comment + + // Disables addon signature checking + // to be able to install addons that do not have an extid + // Security is maintained because only user whitelisted addons + // with a checksum can be installed + ${ lib.optionalString usesNixExtensions ''lockPref("xpinstall.signatures.required", false)'' }; + ${extraPrefs} + ''; + + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# + + in stdenv.mkDerivation { + inherit pname version; + + desktopItem = makeDesktopItem { + name = browserName; + exec = "${browserName}${nameSuffix} %U"; + inherit icon; + comment = ""; + desktopName = "${desktopName}${nameSuffix}${lib.optionalString forceWayland " (Wayland)"}"; + genericName = "Web Browser"; + categories = "Network;WebBrowser;"; + mimeType = stdenv.lib.concatStringsSep ";" [ + "text/html" + "text/xml" + "application/xhtml+xml" + "application/vnd.mozilla.xul+xml" + "x-scheme-handler/http" + "x-scheme-handler/https" + "x-scheme-handler/ftp" + ]; + }; + + nativeBuildInputs = [ makeWrapper lndir ]; + buildInputs = lib.optional (browser ? gtk3) browser.gtk3; + + + buildCommand = lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + cp -R --no-preserve=mode,ownership ${browser}/Applications/${browserName}.app $out/Applications + rm -f $out${browser.execdir or "/bin"}/${browserName} + '' + '' + if [ ! -x "${browser}${browser.execdir or "/bin"}/${browserName}" ] + then + echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'" + exit 1 + fi + + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + # Link the runtime. The executable itself has to be copied, + # because it will resolve paths relative to its true location. + # Any symbolic links have to be replicated as well. + cd "${browser}" + find . -type d -exec mkdir -p "$out"/{} \; + + find . -type f \( -not -name "${browserName}" \) -exec ln -sT "${browser}"/{} "$out"/{} \; + + find . -type f -name "${browserName}" -print0 | while read -d $'\0' f; do + cp -P --no-preserve=mode,ownership "${browser}/$f" "$out/$f" + chmod a+rwx "$out/$f" + done + + # fix links and absolute references + cd "${browser}" + + find . -type l -print0 | while read -d $'\0' l; do + target="$(readlink "$l" | ${replace}/bin/replace-literal -es -- "${browser}" "$out")" + ln -sfT "$target" "$out/$l" + done + + # This will not patch binaries, only "text" files. + # Its there for the wrapper mostly. + cd "$out" + ${replace}/bin/replace-literal -esfR -- "${browser}" "$out" + + # create the wrapper + + executablePrefix="$out${browser.execdir or "/bin"}" + executablePath="$executablePrefix/${browserName}" + + if [ ! -x "$executablePath" ] + then + echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'" + exit 1 + fi + + if [ ! -L "$executablePath" ] + then + # Careful here, the file at executablePath may already be + # a wrapper. That is why we postfix it with -old instead + # of -wrapped. + oldExe="$executablePrefix"/".${browserName}"-old + mv "$executablePath" "$oldExe" + else + oldExe="$(readlink -v --canonicalize-existing "$executablePath")" + fi + + if [ ! -x "${browser}${browser.execdir or "/bin"}/${browserName}" ] + then + echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'" + exit 1 + fi + + makeWrapper "$oldExe" \ + "$out${browser.execdir or "/bin"}/${browserName}${nameSuffix}" \ + --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \ + --suffix LD_LIBRARY_PATH ':' "$libs" \ + --suffix-each GTK_PATH ':' "$gtk_modules" \ + --suffix-each LD_PRELOAD ':' "$(cat $(filterExisting $(addSuffix /extra-ld-preload $plugins)))" \ + --prefix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))" \ + --suffix PATH ':' "$out${browser.execdir or "/bin"}" \ + --set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \ + --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \ + --set SNAP_NAME "firefox" \ + --set MOZ_LEGACY_PROFILES 1 \ + --set MOZ_ALLOW_DOWNGRADE 1 \ + ${lib.optionalString forceWayland '' + --set MOZ_ENABLE_WAYLAND "1" \ + ''}${lib.optionalString (browser ? gtk3) + ''--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ + --suffix XDG_DATA_DIRS : '${gnome3.adwaita-icon-theme}/share' + '' + } + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# + + if [ -e "${browser}/share/icons" ]; then + mkdir -p "$out/share" + ln -s "${browser}/share/icons" "$out/share/icons" + else + for res in 16 32 48 64 128; do + mkdir -p "$out/share/icons/hicolor/''${res}x''${res}/apps" + icon=( "${browser}/lib/"*"/browser/chrome/icons/default/default''${res}.png" ) + if [ -e "$icon" ]; then ln -s "$icon" \ + "$out/share/icons/hicolor/''${res}x''${res}/apps/${browserName}.png" + fi + done + fi + + install -D -t $out/share/applications $desktopItem/share/applications/* + + mkdir -p $out/lib/mozilla/native-messaging-hosts + for ext in ${toString nativeMessagingHosts}; do + ln -sLt $out/lib/mozilla/native-messaging-hosts $ext/lib/mozilla/native-messaging-hosts/* + done + + mkdir -p $out/lib/mozilla/pkcs11-modules + for ext in ${toString pkcs11Modules}; do + ln -sLt $out/lib/mozilla/pkcs11-modules $ext/lib/mozilla/pkcs11-modules/* + done + + # For manpages, in case the program supplies them + mkdir -p $out/nix-support + echo ${browser} > $out/nix-support/propagated-user-env-packages + + + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + # user customization + mkdir -p $out/lib/${firefoxLibName} + + # creating policies.json + mkdir -p "$out/lib/${firefoxLibName}/distribution" + + POL_PATH="$out/lib/${firefoxLibName}/distribution/policies.json" + rm -f "$POL_PATH" + cat ${policiesJson} >> "$POL_PATH" + + # preparing for autoconfig + mkdir -p "$out/lib/${firefoxLibName}/defaults/pref" + + cat > "$out/lib/${firefoxLibName}/defaults/pref/autoconfig.js" <<EOF + pref("general.config.filename", "mozilla.cfg"); + pref("general.config.obscure_value", 0); + EOF + + cat > "$out/lib/${firefoxLibName}/mozilla.cfg" < ${mozillaCfg} + + mkdir -p $out/lib/${firefoxLibName}/distribution/extensions + + for i in ${toString extensions}; do + ln -s -t $out/lib/${firefoxLibName}/distribution/extensions $i/* + done + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# + ''; + + preferLocalBuild = true; + + # Let each plugin tell us (through its `mozillaPlugin') attribute + # where to find the plugin in its tree. + plugins = map (x: x + x.mozillaPlugin) plugins; + libs = lib.makeLibraryPath libs + ":" + lib.makeSearchPathOutput "lib" "lib64" libs; + gtk_modules = map (x: x + x.gtkModule) gtk_modules; + + passthru = { unwrapped = browser; }; + + disallowedRequisites = [ stdenv.cc ]; + + meta = browser.meta // { + description = + browser.meta.description + + " (with plugins: " + + lib.concatStrings (lib.intersperse ", " (map (x: x.name) plugins)) + + ")"; + hydraPlatforms = []; + priority = (browser.meta.priority or 0) - 1; # prefer wrapper over the package + }; + }; +in + lib.makeOverridable wrapper diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix new file mode 100644 index 000000000000..73a095b0827f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix @@ -0,0 +1,157 @@ +{ stdenv, patchelf, makeWrapper + +# Linked dynamic libraries. +, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, gconf, nss, nspr +, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb +, alsaLib, libXdamage, libXtst, libXrandr, expat, cups +, dbus, gtk3, gdk-pixbuf, gcc-unwrapped, at-spi2-atk, at-spi2-core +, kerberos, libdrm, mesa +, libxkbcommon, wayland # ozone/wayland + +# Command line programs +, coreutils + +# command line arguments which are always set e.g "--disable-gpu" +, commandLineArgs ? "" + +# Will crash without. +, systemd + +# Loaded at runtime. +, libexif + +# Additional dependencies according to other distros. +## Ubuntu +, liberation_ttf, curl, util-linux, xdg_utils, wget +## Arch Linux. +, flac, harfbuzz, icu, libpng, libopus, snappy, speechd +## Gentoo +, bzip2, libcap + +# Which distribution channel to use. +, channel ? "stable" + +# Necessary for USB audio devices. +, pulseSupport ? true, libpulseaudio ? null + +# Only needed for getting information about upstream binaries +, chromium + +, gsettings-desktop-schemas +, gnome3 +}: + +with stdenv.lib; + +let + opusWithCustomModes = libopus.override { + withCustomModes = true; + }; + + version = chromium.upstream-info.version; + + deps = [ + glib fontconfig freetype pango cairo libX11 libXi atk gconf nss nspr + libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite libxcb + alsaLib libXdamage libXtst libXrandr expat cups + dbus gdk-pixbuf gcc-unwrapped.lib + systemd + libexif + liberation_ttf curl util-linux xdg_utils wget + flac harfbuzz icu libpng opusWithCustomModes snappy speechd + bzip2 libcap at-spi2-atk at-spi2-core + kerberos libdrm mesa coreutils + libxkbcommon wayland + ] ++ optional pulseSupport libpulseaudio + ++ [ gtk3 ]; + + suffix = if channel != "stable" then "-" + channel else ""; + +in stdenv.mkDerivation { + inherit version; + + name = "google-chrome${suffix}-${version}"; + + src = chromium.chromeSrc; + + nativeBuildInputs = [ patchelf makeWrapper ]; + buildInputs = [ + # needed for GSETTINGS_SCHEMAS_PATH + gsettings-desktop-schemas glib gtk3 + + # needed for XDG_ICON_DIRS + gnome3.adwaita-icon-theme + ]; + + unpackPhase = '' + ar x $src + tar xf data.tar.xz + ''; + + rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps; + binpath = makeBinPath deps; + + installPhase = '' + case ${channel} in + beta) appname=chrome-beta dist=beta ;; + dev) appname=chrome-unstable dist=unstable ;; + *) appname=chrome dist=stable ;; + esac + + exe=$out/bin/google-chrome-$dist + + mkdir -p $out/bin $out/share + + cp -a opt/* $out/share + cp -a usr/share/* $out/share + + # To fix --use-gl=egl: + test -e $out/share/google/$appname/libEGL.so + ln -s libEGL.so $out/share/google/$appname/libEGL.so.1 + test -e $out/share/google/$appname/libGLESv2.so + ln -s libGLESv2.so $out/share/google/$appname/libGLESv2.so.2 + + substituteInPlace $out/share/applications/google-$appname.desktop \ + --replace /usr/bin/google-chrome-$dist $exe + substituteInPlace $out/share/gnome-control-center/default-apps/google-$appname.xml \ + --replace /opt/google/$appname/google-$appname $exe + substituteInPlace $out/share/menu/google-$appname.menu \ + --replace /opt $out/share \ + --replace $out/share/google/$appname/google-$appname $exe + + for icon_file in $out/share/google/chrome*/product_logo_[0-9]*.png; do + num_and_suffix="''${icon_file##*logo_}" + if [ $dist = "stable" ]; then + icon_size="''${num_and_suffix%.*}" + else + icon_size="''${num_and_suffix%_*}" + fi + logo_output_prefix="$out/share/icons/hicolor" + logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" + mkdir -p "$logo_output_path" + mv "$icon_file" "$logo_output_path/google-$appname.png" + done + + makeWrapper "$out/share/google/$appname/google-$appname" "$exe" \ + --prefix LD_LIBRARY_PATH : "$rpath" \ + --prefix PATH : "$binpath" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ + --add-flags ${escapeShellArg commandLineArgs} + + for elf in $out/share/google/$appname/{chrome,chrome-sandbox,nacl_helper}; do + patchelf --set-rpath $rpath $elf + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $elf + done + ''; + + meta = { + description = "A freeware web browser developed by Google"; + homepage = "https://www.google.com/chrome/browser/"; + license = licenses.unfree; + maintainers = with maintainers; [ primeos ]; + # Note from primeos: By updating Chromium I also update Google Chrome and + # will try to merge PRs and respond to issues but I'm not actually using + # Google Chrome. + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix new file mode 100644 index 000000000000..4028f8622c3c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/kristall/default.nix @@ -0,0 +1,31 @@ +{ lib, mkDerivation, fetchFromGitHub, qtbase, qtmultimedia }: + +mkDerivation rec { + pname = "kristall"; + version = "0.3"; + src = fetchFromGitHub { + owner = "MasterQ32"; + repo = "kristall"; + rev = "V" + version; + sha256 = "07nf7w6ilzs5g6isnvsmhh4qa1zsprgjyf0zy7rhpx4ikkj8c8zq"; + }; + + buildInputs = [ qtbase qtmultimedia ]; + + qmakeFlags = [ "src/kristall.pro" ]; + + installPhase = '' + install -Dt $out/bin kristall + install -D Kristall.desktop $out/share/applications/net.random-projects.kristall.desktop + ''; + + meta = with lib; + src.meta // { + description = + "Graphical small-internet client, supports gemini, http, https, gopher, finger"; + homepage = "https://random-projects.net/projects/kristall.gemini"; + maintainers = with maintainers; [ ehmry ]; + license = licenses.gpl3; + inherit (qtmultimedia.meta) platforms; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix new file mode 100644 index 000000000000..0db521f8ef59 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl +, gpm, openssl, pkgconfig, libev # Misc. +, libpng, libjpeg, libtiff, librsvg # graphic formats +, bzip2, zlib, xz # Transfer encodings +, enableFB ? true +, enableDirectFB ? false, directfb +, enableX11 ? true, libX11, libXt, libXau # GUI support +}: + +stdenv.mkDerivation rec { + version = "2.21"; + pname = "links2"; + + src = fetchurl { + url = "${meta.homepage}/download/links-${version}.tar.bz2"; + sha256 = "0qqdcghsdqm7l6kyi0k752ws3ak5crw85pqkcb11wy67j62yspi8"; + }; + + buildInputs = with stdenv.lib; + [ libev librsvg libpng libjpeg libtiff openssl xz bzip2 zlib ] + ++ optionals stdenv.isLinux [ gpm ] + ++ optionals enableX11 [ libX11 libXau libXt ] + ++ optional enableDirectFB [ directfb ]; + + nativeBuildInputs = [ pkgconfig bzip2 ]; + + configureFlags = [ "--with-ssl" ] + ++ stdenv.lib.optional (enableX11 || enableFB || enableDirectFB) "--enable-graphics" + ++ stdenv.lib.optional enableX11 "--with-x" + ++ stdenv.lib.optional enableFB "--with-fb" + ++ stdenv.lib.optional enableDirectFB "--with-directfb"; + + meta = with stdenv.lib; { + homepage = "http://links.twibright.com/"; + description = "A small browser with some graphics support"; + maintainers = with maintainers; [ raskin ]; + license = licenses.gpl2Plus; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix new file mode 100644 index 000000000000..42eb8bcb63a8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix @@ -0,0 +1,68 @@ +{ stdenv, fetchFromGitHub, pkgconfig, wrapGAppsHook +, help2man, luafilesystem, luajit, sqlite +, webkitgtk, gtk3, gst_all_1, glib-networking +}: + +stdenv.mkDerivation rec { + pname = "luakit"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "luakit"; + repo = pname; + rev = version; + sha256 = "sha256-78B8vXkWsFMJIHA72Qrk2SWubrY6YuArqcM0UAPjpzc="; + }; + + nativeBuildInputs = [ + pkgconfig help2man wrapGAppsHook + ]; + + buildInputs = [ + webkitgtk luafilesystem luajit sqlite gtk3 + glib-networking # TLS support + ] ++ ( with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good + gst-plugins-bad gst-plugins-ugly gst-libav ]); + + preBuild = '' + # build-utils/docgen/gen.lua:2: module 'lib.lousy.util' not found + # TODO: why is not this the default? The test runner adds + # ';./lib/?.lua;./lib/?/init.lua' to package.path, but the build-utils + # scripts don't add an equivalent + export LUA_PATH="$LUA_PATH;./?.lua;./?/init.lua" + ''; + + makeFlags = [ + "DEVELOPMENT_PATHS=0" + "USE_LUAJIT=1" + "INSTALLDIR=${placeholder "out"}" + "PREFIX=${placeholder "out"}" + "USE_GTK3=1" + "XDGPREFIX=${placeholder "out"}/etc/xdg" + ]; + + preFixup = let + luaKitPath = "$out/share/luakit/lib/?/init.lua;$out/share/luakit/lib/?.lua"; + in '' + gappsWrapperArgs+=( + --prefix XDG_CONFIG_DIRS : "$out/etc/xdg" + --prefix LUA_PATH ';' "${luaKitPath};$LUA_PATH" + --prefix LUA_CPATH ';' "$LUA_CPATH" + ) + ''; + + meta = with stdenv.lib; { + description = "Fast, small, webkit-based browser framework extensible in Lua"; + longDescription = '' + Luakit is a highly configurable browser framework based on the WebKit web + content engine and the GTK+ toolkit. It is very fast, extensible with Lua, + and licensed under the GNU GPLv3 license. It is primarily targeted at + power users, developers and anyone who wants to have fine-grained control + over their web browser’s behaviour and interface. + ''; + homepage = "https://luakit.github.io/"; + license = licenses.gpl3Only; + platforms = platforms.unix; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix new file mode 100644 index 000000000000..8aeee45b9e54 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix @@ -0,0 +1,50 @@ +{ stdenv, buildPackages +, fetchurl, pkgconfig, ncurses, gzip +, sslSupport ? true, openssl ? null +, nukeReferences +}: + +assert sslSupport -> openssl != null; + +stdenv.mkDerivation rec { + pname = "lynx"; + version = "2.8.9rel.1"; + + src = fetchurl { + urls = [ + "ftp://ftp.invisible-island.net/lynx/tarballs/lynx${version}.tar.bz2" + "https://invisible-mirror.net/archives/lynx/tarballs/lynx${version}.tar.bz2" + ]; + sha256 = "15cmyyma2kz1hfaa6mwjgli8zwdzq3jv0q2cl6nwzycjfwyijzrq"; + }; + + enableParallelBuilding = true; + + hardeningEnable = [ "pie" ]; + + configureFlags = [ + "--enable-default-colors" + "--enable-widec" + "--enable-ipv6" + ] ++ stdenv.lib.optional sslSupport "--with-ssl"; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ nukeReferences ] + ++ stdenv.lib.optional sslSupport pkgconfig; + + buildInputs = [ ncurses gzip ] ++ stdenv.lib.optional sslSupport openssl.dev; + + # cfg_defs.h captures lots of references to build-only dependencies, derived + # from config.cache. + postConfigure = '' + make cfg_defs.h + nuke-refs cfg_defs.h + ''; + + meta = with stdenv.lib; { + description = "A text-mode web browser"; + homepage = "https://lynx.invisible-island.net/"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix new file mode 100644 index 000000000000..66f6384643ad --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix @@ -0,0 +1,59 @@ +{ stdenv +, fetchurl +, cmake +, ninja +, pkgconfig +, intltool +, vala +, wrapGAppsHook +, gcr +, libpeas +, gtk3 +, webkitgtk +, sqlite +, gsettings-desktop-schemas +, libsoup +, glib-networking +, json-glib +, libarchive +}: + +stdenv.mkDerivation rec { + pname = "midori"; + version = "9.0"; + + src = fetchurl { + url = "https://github.com/midori-browser/core/releases/download/v${version}/midori-v${version}.tar.gz"; + sha256 = "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy"; + }; + + nativeBuildInputs = [ + cmake + intltool + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + (libsoup.override { gnomeSupport = true; }) + gcr + glib-networking + gsettings-desktop-schemas + gtk3 + libpeas + sqlite + webkitgtk + json-glib + libarchive + ]; + + meta = with stdenv.lib; { + description = "Lightweight WebKitGTK web browser"; + homepage = "https://www.midori-browser.org/"; + license = with licenses; [ lgpl21Plus ]; + platforms = with platforms; linux; + maintainers = with maintainers; [ raskin ramkromberg ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix new file mode 100644 index 000000000000..3affcba863c8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix @@ -0,0 +1,147 @@ +{ stdenv +, lib +, fetchurl +, alsaLib +, atk +, bzip2 +, cairo +, curl +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, glibc +, graphite2 +, gtk2 +, harfbuzz +, libICE +, libSM +, libX11 +, libXau +, libXcomposite +, libXcursor +, libXdamage +, libXdmcp +, libXext +, libXfixes +, libXi +, libXinerama +, libXrandr +, libXrender +, libXt +, libXxf86vm +, libdrm +, libffi +, libglvnd +, libpng +, libvdpau +, libxcb +, libxshmfence +, nspr +, nss +, pango +, pcre +, pixman +, zlib +, unzip +, debug ? false + +/* you have to add ~/mm.cfg : + + TraceOutputFileEnable=1 + ErrorReportingEnable=1 + MaxWarnings=1 + + in order to read the flash trace at ~/.macromedia/Flash_Player/Logs/flashlog.txt + Then FlashBug (a FireFox plugin) shows the log as well +*/ + +}: + +let + arch = + if stdenv.hostPlatform.system == "x86_64-linux" then + "x86_64" + else if stdenv.hostPlatform.system == "i686-linux" then + "i386" + else throw "Flash Player is not supported on this platform"; + lib_suffix = + if stdenv.hostPlatform.system == "x86_64-linux" then + "64" + else + ""; +in +stdenv.mkDerivation rec { + pname = "flashplayer"; + version = "32.0.0.445"; + + src = fetchurl { + url = + if debug then + "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_npapi_linux_debug.${arch}.tar.gz" + else + "https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz"; + sha256 = + if debug then + if arch == "x86_64" then + "0jn1g8k8fkikhi0xlcsx5a43lxrj6ynwbxn55b17wacsqw20b9ii" + else + "104af8sy0qq45agg3lpjwn1cp8lhpcjiim6gqn4cymcfp8d7ngg0" + else + if arch == "x86_64" then + "1dd52nhnl3f1d7r82gq28scna5qr39gpfqkgrhzd6cxd2vnhnhjn" + else + "09ayb637cyf5x06xmhvad2znss7ak7r4n8z3wq7qmn0pmjdsa5a3"; + }; + + nativeBuildInputs = [ unzip ]; + + sourceRoot = "."; + + dontStrip = true; + dontPatchELF = true; + + preferLocalBuild = true; + + installPhase = '' + mkdir -p $out/lib/mozilla/plugins + cp -pv libflashplayer.so $out/lib/mozilla/plugins + + mkdir -p $out/bin + cp -pv usr/bin/flash-player-properties $out/bin + + mkdir -p $out/lib${lib_suffix}/kde4 + cp -pv usr/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so $out/lib${lib_suffix}/kde4 + + patchelf --set-rpath "$rpath" \ + $out/lib/mozilla/plugins/libflashplayer.so \ + $out/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so + + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath "$rpath" \ + $out/bin/flash-player-properties + ''; + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + }; + + rpath = lib.makeLibraryPath + [ stdenv.cc.cc + alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk-pixbuf glib + glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite + libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama + libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng + libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib + ]; + + meta = { + description = "Adobe Flash Player browser plugin"; + homepage = "http://www.adobe.com/products/flashplayer/"; + license = stdenv.lib.licenses.unfree; + maintainers = with stdenv.lib.maintainers; [ taku0 ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix new file mode 100644 index 000000000000..75c97cdd3412 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix @@ -0,0 +1,106 @@ +{ stdenv +, lib +, fetchurl +, alsaLib +, atk +, bzip2 +, cairo +, curl +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, glibc +, graphite2 +, gtk2 +, harfbuzz +, libICE +, libSM +, libX11 +, libXau +, libXcomposite +, libXcursor +, libXdamage +, libXdmcp +, libXext +, libXfixes +, libXi +, libXinerama +, libXrandr +, libXrender +, libXt +, libXxf86vm +, libdrm +, libffi +, libglvnd +, libpng +, libvdpau +, libxcb +, libxshmfence +, nspr +, nss +, pango +, pcre +, pixman +, zlib +, unzip +, debug ? false +}: + +stdenv.mkDerivation { + pname = "flashplayer-standalone"; + version = "32.0.0.445"; + + src = fetchurl { + url = + if debug then + "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux_debug.x86_64.tar.gz" + else + "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz"; + sha256 = + if debug then + "0iqmdd222mjsf3rdbcm4z974i5q9y4i5agnhn039k0hpydi4zdcr" + else + "07vz17zhwh31phccpbmwgfa3fdb2f7bnc3sf66ipsw1xcqgncpsx"; + }; + + nativeBuildInputs = [ unzip ]; + + sourceRoot = "."; + + dontStrip = true; + dontPatchELF = true; + + preferLocalBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp -pv flashplayer${lib.optionalString debug "debugger"} $out/bin + + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath "$rpath" \ + $out/bin/flashplayer${lib.optionalString debug "debugger"} + ''; + + rpath = lib.makeLibraryPath + [ stdenv.cc.cc + alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk-pixbuf glib + glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite + libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama + libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng + libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib + ]; + + meta = { + description = "Adobe Flash Player standalone executable"; + homepage = "https://www.adobe.com/support/flashplayer/debug_downloads.html"; + license = stdenv.lib.licenses.unfree; + maintainers = with stdenv.lib.maintainers; [ taku0 ]; + platforms = [ "x86_64-linux" ]; + # Application crashed with an unhandled SIGSEGV + # Not on all systems, though. Video driver problem? + broken = false; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/browser.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/browser.nix new file mode 100644 index 000000000000..407d94a4dc45 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/browser.nix @@ -0,0 +1,83 @@ +{ stdenv, fetchurl, fetchpatch, makeWrapper, wrapGAppsHook + +# Buildtime dependencies. +, check, pkgconfig, xxd + +# Runtime dependencies. +, curl, expat, libXcursor, libXrandr, libidn, libjpeg, libpng, libwebp, libxml2 +, openssl, perl, perlPackages + +# uilib-specific dependencies +, gtk2 # GTK 2 +, gtk3 # GTK 3 +, SDL # Framebuffer + +# Configuration +, uilib + +# Netsurf-specific dependencies +, libcss, libdom, libhubbub, libnsbmp, libnsfb, libnsgif +, libnslog, libnspsl, libnsutils, libparserutils, libsvgtiny, libutf8proc +, libwapcaplet, nsgenbind +}: + +let + inherit (stdenv.lib) optional optionals; +in +stdenv.mkDerivation rec { + pname = "netsurf"; + version = "3.10"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/netsurf/releases/source/${pname}-${version}-src.tar.gz"; + sha256 = "sha256-NkhEKeGTYUaFwv8kb1W9Cm3d8xoBi+5F4NH3wohRmV4="; + }; + + nativeBuildInputs = [ + makeWrapper + perl + perlPackages.HTMLParser + pkgconfig + xxd + ] + ++ optional (uilib == "gtk2" || uilib == "gtk3") wrapGAppsHook + ; + + buildInputs = [ + check curl libXcursor libXrandr libidn libjpeg libpng libwebp libxml2 openssl + # Netsurf-specific libraries + nsgenbind libnsfb libwapcaplet libparserutils libnslog libcss + libhubbub libdom libnsbmp libnsgif libsvgtiny libnsutils libnspsl + libutf8proc + ] + ++ optionals (uilib == "framebuffer") [ expat SDL ] + ++ optional (uilib == "gtk2") gtk2 + ++ optional (uilib == "gtk3") gtk3 + ; + + preConfigure = '' + cat <<EOF > Makefile.conf + override NETSURF_GTK_RES_PATH := $out/share/ + override NETSURF_USE_GRESOURCE := YES + EOF + ''; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "TARGET=${uilib}" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "A free, open source, small web browser"; + longDescription = '' + NetSurf is a free, open source web browser. It is written in C and + released under the GNU Public Licence version 2. NetSurf has its own + layout and rendering engine entirely written from scratch. It is small and + capable of handling many of the web standards in use today. + ''; + license = licenses.gpl2Only; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/buildsystem.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/buildsystem.nix new file mode 100644 index 000000000000..2d625b725446 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/buildsystem.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "buildsystem"; + version = "1.9"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}.tar.gz"; + sha256 = "sha256-k4QeMUpoggmiC4dF8GU5PzqQ8Bvmj0Xpa8jS9KKqmio="; + }; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "NetSurf browser shared build system"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/default.nix new file mode 100644 index 000000000000..409ab80ce3ac --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/default.nix @@ -0,0 +1,36 @@ +{ lib, pkgs }: + +lib.makeScope pkgs.newScope (self: with self; { + # ui can be: gtk2, gtk3, sixel, framebuffer. Note that console display (sixel) + # requires a terminal that supports `sixel` capabilities, such as mlterm + # or xterm -ti 340 + ui = "gtk3"; + uilib = + if ui == "gtk2" || + ui == "gtk3" || + ui == "framebuffer" then ui + else if ui == "sixel" then "framebuffer" + else null; # Never will happen + SDL = + if ui == "sixel" then pkgs.SDL_sixel + else if ui == "framebuffer" then pkgs.SDL + else null; + + browser = callPackage ./browser.nix { }; + + buildsystem = callPackage ./buildsystem.nix { }; + libcss = callPackage ./libcss.nix { }; + libdom = callPackage ./libdom.nix { }; + libhubbub = callPackage ./libhubbub.nix { }; + libnsbmp = callPackage ./libnsbmp.nix { }; + libnsfb = callPackage ./libnsfb.nix { }; + libnsgif = callPackage ./libnsgif.nix { }; + libnslog = callPackage ./libnslog.nix { }; + libnspsl = callPackage ./libnspsl.nix { }; + libnsutils = callPackage ./libnsutils.nix { }; + libparserutils = callPackage ./libparserutils.nix { }; + libsvgtiny = callPackage ./libsvgtiny.nix { }; + libutf8proc = callPackage ./libutf8proc.nix { }; + libwapcaplet = callPackage ./libwapcaplet.nix { }; + nsgenbind = callPackage ./nsgenbind.nix { }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libcss.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libcss.nix new file mode 100644 index 000000000000..db907edd8799 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libcss.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, perl +, buildsystem +, libparserutils +, libwapcaplet +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libcss"; + version = "0.9.1"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-0tzhbpM5Lo1qcglCDUfC1Wo4EXAaDoGnJPxUHGPTxtw="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + perl + libparserutils + libwapcaplet + buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + NIX_CFLAGS_COMPILE= "-Wno-error=implicit-fallthrough"; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "Cascading Style Sheets library for netsurf browser"; + longDescription = '' + LibCSS is a CSS parser and selection engine. It aims to parse the forward + compatible CSS grammar. It was developed as part of the NetSurf project + and is available for use by other software, under a more permissive + license. + ''; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libdom.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libdom.nix new file mode 100644 index 000000000000..3aa9e3a1878e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libdom.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, expat +, buildsystem +, libparserutils +, libwapcaplet +, libhubbub +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libdom"; + version = "0.4.1"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-mO4HJHHlXiCMmHjlFcQQrUYso2+HtK/L7K0CPzos70o="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + expat + libhubbub + libparserutils + libwapcaplet + buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "Document Object Model library for netsurf browser"; + longDescription = '' + LibDOM is an implementation of the W3C DOM, written in C. It is currently + in development for use with NetSurf and is intended to be suitable for use + in other projects under a more permissive license. + ''; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libhubbub.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libhubbub.nix new file mode 100644 index 000000000000..53b8d270d4f6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libhubbub.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, perl +, buildsystem +, libparserutils +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libhubbub"; + version = "0.3.7"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-nnriU+bJBp51frmtTkhG84tNtSwMoBUURqn6Spd3NbY="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + perl + libparserutils + buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/hubbub/"; + description = "HTML5 parser library for netsurf browser"; + longDescription = '' + Hubbub is an HTML5 compliant parsing library, written in C. It was + developed as part of the NetSurf project and is available for use by other + software under the MIT licence. + + The HTML5 specification defines a parsing algorithm, based on the + behaviour of mainstream browsers, which provides instructions for how to + parse all markup, both valid and invalid. As a result, Hubbub parses web + content well. + ''; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix new file mode 100644 index 000000000000..95487eed00fc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnsbmp"; + version = "0.1.6"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-ecSTZfhg7UUb/EEJ7d7I3j6bfOWjvgaVlr0qoZJ5Mk8="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "BMP Decoder for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsfb.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsfb.nix new file mode 100644 index 000000000000..d37766f5330f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsfb.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig +, uilib, SDL +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnsfb"; + version = "0.2.2"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-vkRso+tU35A/LamDEdEH11dM0R9awHE+YZFW1NGeo5o="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ SDL buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + "TARGET=${uilib}" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "Netsurf framebuffer abstraction library"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsgif.nix new file mode 100644 index 000000000000..d8683280c4e1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsgif.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnsgif"; + version = "0.2.1"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-nq6lNM1wtTxar0UxeulXcBaFprSojb407Sb0+q6Hmks="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "GIF Decoder for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnslog.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnslog.nix new file mode 100644 index 000000000000..12fdcff50bd3 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnslog.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, bison, flex +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnslog"; + version = "0.1.3"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-/JjcqdfvpnCWRwpdlsAjFG4lv97AjA23RmHHtNsEU9A="; + }; + + nativeBuildInputs = [ pkgconfig bison flex ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "NetSurf Parametric Logging Library"; + license = licenses.isc; + maintainers = [ maintainers.samueldr maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnspsl.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnspsl.nix new file mode 100644 index 000000000000..4338f78247c7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnspsl.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnspsl"; + version = "0.1.6"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-08WCBct40xC/gcpVNHotCYcZzsrHBGvDZ5g7E4tFAgs="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "NetSurf Public Suffix List - Handling library"; + license = licenses.mit; + maintainers = [ maintainers.samueldr maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsutils.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsutils.nix new file mode 100644 index 000000000000..42c8b8b06214 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libnsutils.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libnsutils"; + version = "0.1.0"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-eQxlFjRKvoL2KJ1lY5LpzOvkdbIMx+Hi2EMBE4X3rvA="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "Generalised utility library for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libparserutils.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libparserutils.nix new file mode 100644 index 000000000000..b96018d92eb8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libparserutils.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, perl +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libparserutils"; + version = "0.2.4"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-MiuuYbMMzt4+MFv26uJBSSBkl3W8X/HRtogBKjxJR9g="; + }; + + buildInputs = [ perl buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "Parser building library for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix new file mode 100644 index 000000000000..aef154bbc17c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gperf +, buildsystem +, libdom +, libhubbub +, libparserutils +, libwapcaplet +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libsvgtiny"; + version = "0.1.7"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-LA3PlS8c2ILD6VQB75RZ8W27U8XT5FEjObL563add4E="; + }; + + nativeBuildInputs = [ pkgconfig gperf ]; + buildInputs = [ + libdom + libhubbub + libparserutils + libwapcaplet + buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "NetSurf SVG decoder"; + license = licenses.mit; + maintainers = [ maintainers.samueldr maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix new file mode 100644 index 000000000000..59bae9e941eb --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libutf8proc"; + version = "2.4.0-1"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-AasdaYnBx3VQkNskw/ZOSflcVgrknCa+xRQrrGgCxHI="; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "UTF8 Processing library for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix new file mode 100644 index 000000000000..8c5af461fd06 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "libwapcaplet"; + version = "0.4.3"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-myqh3W1mRfjpkrNpf9vYfwwOHaVyH6VO0ptITRMWDFw="; + }; + + buildInputs = [ buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type"; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/projects/${libname}/"; + description = "String internment library for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix new file mode 100644 index 000000000000..0be7adc4a595 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl +, flex, bison +, buildsystem +}: + +stdenv.mkDerivation rec { + pname = "netsurf-${libname}"; + libname = "nsgenbind"; + version = "0.8"; + + src = fetchurl { + url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz"; + sha256 = "sha256-TY1TrQAK2nEncjZeanPrj8XOl1hK+chlrFsmohh/HLM="; + }; + + buildInputs = [ flex bison buildsystem ]; + + makeFlags = [ + "PREFIX=$(out)" + "NSSHARED=${buildsystem}/share/netsurf-buildsystem" + ]; + + meta = with stdenv.lib; { + homepage = "https://www.netsurf-browser.org/"; + description = "Generator for JavaScript bindings for netsurf browser"; + license = licenses.mit; + maintainers = [ maintainers.vrthra maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/nyxt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/nyxt/default.nix new file mode 100644 index 000000000000..ff99b1c21ddd --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/nyxt/default.nix @@ -0,0 +1,57 @@ +{ stdenv, lib, lispPackages, sbcl +, makeWrapper, wrapGAppsHook, gst_all_1 +, glib, gdk-pixbuf, cairo +, mime-types, pango, gtk3 +, glib-networking, gsettings-desktop-schemas +, xclip, notify-osd, enchant +}: + +stdenv.mkDerivation rec { + pname = "nyxt"; + inherit (lispPackages.nyxt.meta) version; + + src = lispPackages.nyxt; + + nativeBuildInputs = [ makeWrapper wrapGAppsHook ]; + gstBuildInputs = with gst_all_1; [ + gstreamer gst-libav + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]; + buildInputs = [ + glib gdk-pixbuf cairo + mime-types pango gtk3 + glib-networking gsettings-desktop-schemas + xclip notify-osd enchant + ] ++ gstBuildInputs; + + GST_PLUGIN_SYSTEM_PATH_1_0 = lib.concatMapStringsSep ":" (p: "${p}/lib/gstreamer-1.0") gstBuildInputs; + + dontWrapGApps = true; + installPhase = '' + mkdir -p $out/share/applications/ + sed "s/VERSION/$version/" $src/lib/common-lisp/nyxt/assets/nyxt.desktop > $out/share/applications/nyxt.desktop + for i in 16 32 128 256 512; do + mkdir -p "$out/share/icons/hicolor/''${i}x''${i}/apps/" + cp -f $src/lib/common-lisp/nyxt/assets/nyxt_''${i}x''${i}.png "$out/share/icons/hicolor/''${i}x''${i}/apps/nyxt.png" + done + + mkdir -p $out/bin && makeWrapper $src/bin/nyxt $out/bin/nyxt \ + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "${GST_PLUGIN_SYSTEM_PATH_1_0}" \ + --argv0 nyxt "''${gappsWrapperArgs[@]}" + ''; + + checkPhase = '' + $out/bin/nyxt -h + ''; + + meta = with stdenv.lib; { + description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)"; + homepage = "https://nyxt.atlas.engineer"; + license = licenses.bsd3; + maintainers = with maintainers; [ lewo ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix new file mode 100644 index 000000000000..eefe7af26a1b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix @@ -0,0 +1,122 @@ +{ alsaLib +, atk +, cairo +, cups +, curl +, dbus +, dpkg +, expat +, fetchurl +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gnome2 +, gtk3 +, lib +, libX11 +, libxcb +, libXScrnSaver +, libXcomposite +, libXcursor +, libXdamage +, libXext +, libXfixes +, libXi +, libXrandr +, libXrender +, libXtst +, libnotify +, libpulseaudio +, libuuid +, nspr +, nss +, pango +, stdenv +, systemd +, at-spi2-atk +, at-spi2-core +, autoPatchelfHook +, wrapGAppsHook +}: + +let + + mirror = "https://get.geo.opera.com/pub/opera/desktop"; + +in stdenv.mkDerivation rec { + + pname = "opera"; + version = "68.0.3618.63"; + + src = fetchurl { + url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb"; + sha256 = "1643043ywz94x2yr7xyw7krfq53iwkr8qxlbydzq6zb2zina7jxd"; + }; + + unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc ."; + + nativeBuildInputs = [ + autoPatchelfHook + wrapGAppsHook + ]; + + buildInputs = [ + alsaLib + at-spi2-atk + at-spi2-core + atk + cairo + cups + curl + dbus + expat + fontconfig.lib + freetype + gdk-pixbuf + glib + gnome2.GConf + gtk3 + libX11 + libXScrnSaver + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + libnotify + libuuid + libxcb + nspr + nss + pango + stdenv.cc.cc.lib + ]; + + runtimeDependencies = [ + # Works fine without this except there is no sound. + libpulseaudio.out + + # This is a little tricky. Without it the app starts then crashes. Then it + # brings up the crash report, which also crashes. `strace -f` hints at a + # missing libudev.so.0. + (lib.getLib systemd) + ]; + + installPhase = '' + mkdir -p $out + cp -r . $out/ + mv $out/lib/*/opera/*.so $out/lib/ + ''; + + meta = with lib; { + homepage = "https://www.opera.com"; + description = "Web browser"; + platforms = [ "x86_64-linux" ]; + license = licenses.unfree; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix new file mode 100644 index 000000000000..5d299f3349ed --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix @@ -0,0 +1,159 @@ +{ stdenv, lib, fetchFromGitHub, writeScript, desktop-file-utils +, pkgconfig, autoconf213, alsaLib, bzip2, cairo +, dbus, dbus-glib, ffmpeg_3, file, fontconfig, freetype +, gnome2, gnum4, gtk2, hunspell, libevent, libjpeg +, libnotify, libstartup_notification, wrapGAppsHook +, libGLU, libGL, perl, python2, libpulseaudio +, unzip, xorg, wget, which, yasm, zip, zlib + +, withGTK3 ? false, gtk3 +}: + +let + + libPath = lib.makeLibraryPath [ ffmpeg_3 libpulseaudio ]; + gtkVersion = if withGTK3 then "3" else "2"; + +in stdenv.mkDerivation rec { + pname = "palemoon"; + version = "28.16.0"; + + src = fetchFromGitHub { + githubBase = "repo.palemoon.org"; + owner = "MoonchildProductions"; + repo = "Pale-Moon"; + rev = "${version}_Release"; + sha256 = "1svwbiar7c38c8xfw249mwnvayqq5868nkks7cbv9nyf2m9yap56"; + fetchSubmodules = true; + }; + + passthru.updateScript = writeScript "update-${pname}" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p common-updater-scripts curl libxml2 + + set -eu -o pipefail + + # Only release note announcement == finalized release + version="$( + curl -s 'http://www.palemoon.org/releasenotes.shtml' | + xmllint --html --xpath 'html/body/table/tbody/tr/td/h3/text()' - 2>/dev/null | head -n1 | + sed 's/v\(\S*\).*/\1/' + )" + update-source-version ${pname} "$version" + ''; + + nativeBuildInputs = [ + desktop-file-utils file gnum4 perl pkgconfig python2 wget which wrapGAppsHook + ]; + + buildInputs = [ + alsaLib bzip2 cairo dbus dbus-glib ffmpeg_3 fontconfig freetype + gnome2.GConf gtk2 hunspell libevent libjpeg libnotify + libstartup_notification libGLU libGL + libpulseaudio unzip yasm zip zlib + ] + ++ (with xorg; [ + libX11 libXext libXft libXi libXrender libXScrnSaver + libXt pixman xorgproto + ]) + ++ lib.optional withGTK3 gtk3; + + enableParallelBuilding = true; + + configurePhase = '' + export MOZCONFIG=$(pwd)/mozconfig + export MOZ_NOSPAM=1 + + # Keep this similar to the official .mozconfig file, + # only minor changes for portability are permitted with branding. + # https://developer.palemoon.org/build/linux/ + echo > $MOZCONFIG ' + # Clear this if not a 64bit build + _BUILD_64=${lib.optionalString stdenv.hostPlatform.is64bit "1"} + + # Set GTK Version to 2 or 3 + _GTK_VERSION=${gtkVersion} + + # Standard build options for Pale Moon + ac_add_options --enable-application=palemoon + ac_add_options --enable-optimize="-O2 -w" + ac_add_options --enable-default-toolkit=cairo-gtk$_GTK_VERSION + ac_add_options --enable-jemalloc + ac_add_options --enable-strip + ac_add_options --enable-devtools + + ac_add_options --disable-eme + ac_add_options --disable-webrtc + ac_add_options --disable-gamepad + ac_add_options --disable-tests + ac_add_options --disable-debug + ac_add_options --disable-necko-wifi + ac_add_options --disable-updater + + ac_add_options --with-pthreads + + # Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding. + ac_add_options --enable-official-branding + export MOZILLA_OFFICIAL=1 + + # For versions after 28.12.0 + ac_add_options --enable-phoenix-extensions + + ac_add_options --x-libraries=${lib.makeLibraryPath [ xorg.libX11 ]} + + export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION + + # + # NixOS-specific adjustments + # + + ac_add_options --prefix=$out + + mk_add_options MOZ_MAKE_FLAGS="-j${if enableParallelBuilding then "$NIX_BUILD_CORES" else "1"}" + mk_add_options AUTOCONF=${autoconf213}/bin/autoconf + ' + ''; + + buildPhase = "$src/mach build"; + + installPhase = '' + $src/mach install + + desktop-file-install --dir=$out/share/applications \ + $src/palemoon/branding/official/palemoon.desktop + + for iconname in default{16,22,24,32,48,256} mozicon128; do + n=''${iconname//[^0-9]/} + size=$n"x"$n + install -Dm644 $src/palemoon/branding/official/$iconname.png $out/share/icons/hicolor/$size/apps/palemoon.png + done + ''; + + dontWrapGApps = true; + + preFixup = '' + gappsWrapperArgs+=( + --prefix LD_LIBRARY_PATH : "${libPath}" + ) + wrapGApp $out/lib/palemoon-${version}/palemoon + ''; + + meta = with lib; { + description = "An Open Source, Goanna-based web browser focusing on efficiency and customization"; + longDescription = '' + Pale Moon is an Open Source, Goanna-based web browser focusing on + efficiency and customization. + + Pale Moon offers you a browsing experience in a browser completely built + from its own, independently developed source that has been forked off from + Firefox/Mozilla code a number of years ago, with carefully selected + features and optimizations to improve the browser's stability and user + experience, while offering full customization and a growing collection of + extensions and themes to make the browser truly your own. + ''; + homepage = "https://www.palemoon.org/"; + license = licenses.mpl20; + maintainers = with maintainers; [ AndersonTorres OPNA2608 ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix new file mode 100644 index 000000000000..9a4d61a50aee --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix @@ -0,0 +1,31 @@ +{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase }: + +mkDerivation rec { + pname = "qtchan"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "siavash119"; + repo = "qtchan"; + rev = "v${version}"; + sha256 = "1x11m1kwqindzc0dkpfifcglsb362impaxs85kgzx50p898sz9ll"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ qmake ]; + buildInputs = [ qtbase ]; + qmakeFlags = [ "CONFIG-=app_bundle" ]; + + installPhase = '' + mkdir -p $out/bin + cp qtchan $out/bin + ''; + + meta = with lib; { + description = "4chan browser in qt5"; + homepage = "https://github.com/siavash119/qtchan"; + license = licenses.mit; + maintainers = with maintainers; [ chiiruno ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix new file mode 100644 index 000000000000..4b1efe9dba2f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix @@ -0,0 +1,122 @@ +{ stdenv, lib, fetchurl, fetchzip, python3 +, mkDerivationWith, wrapQtAppsHook, wrapGAppsHook, qtbase, glib-networking +, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2 +, libxslt, gst_all_1 ? null +, withPdfReader ? true +, withMediaPlayback ? true +, backend ? "webengine" +}: + +assert withMediaPlayback -> gst_all_1 != null; + +let + python3Packages = python3.pkgs; + pdfjs = let + version = "2.6.347"; + in + fetchzip rec { + name = "pdfjs-${version}"; + url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/${name}-dist.zip"; + sha256 = "0d016fyg81cq464li01xlkf9rxrb3rpsvmk5gh9m4d5yzmcakkfm"; + stripRoot = false; + }; + + backendPackage = + if backend == "webengine" then python3Packages.pyqtwebengine else + if backend == "webkit" then python3Packages.pyqt5_with_qtwebkit else + throw '' + Unknown qutebrowser backend "${backend}". + Valid choices are qtwebengine (recommended) or qtwebkit. + ''; + +in mkDerivationWith python3Packages.buildPythonApplication rec { + pname = "qutebrowser"; + version = "1.14.1"; + + # the release tarballs are different from the git checkout! + src = fetchurl { + url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz"; + sha256 = "15l7jphy1qjsh6y6kd5mgkxsl6ymm9564g1yypa946jbyrgi8k2m"; + }; + + # Needs tox + doCheck = false; + + buildInputs = [ + qtbase + glib-networking + ] ++ lib.optionals withMediaPlayback (with gst_all_1; [ + gst-plugins-base gst-plugins-good + gst-plugins-bad gst-plugins-ugly gst-libav + ]); + + nativeBuildInputs = [ + wrapQtAppsHook wrapGAppsHook asciidoc + docbook_xml_dtd_45 docbook_xsl libxml2 libxslt + ]; + + propagatedBuildInputs = with python3Packages; [ + pyyaml backendPackage jinja2 pygments + pypeg2 cssutils pyopengl attrs setuptools + # scripts and userscripts libs + tldextract beautifulsoup4 + pyreadability pykeepass stem + ]; + + patches = [ ./fix-restart.patch ]; + + dontWrapGApps = true; + dontWrapQtApps = true; + + postPatch = '' + substituteInPlace qutebrowser/misc/quitter.py --subst-var-by qutebrowser "$out/bin/qutebrowser" + + sed -i "s,/usr/share/,$out/share/,g" qutebrowser/utils/standarddir.py + '' + lib.optionalString withPdfReader '' + sed -i "s,/usr/share/pdf.js,${pdfjs},g" qutebrowser/browser/pdfjs.py + ''; + + postBuild = '' + a2x -f manpage doc/qutebrowser.1.asciidoc + ''; + + postInstall = '' + install -Dm644 doc/qutebrowser.1 "$out/share/man/man1/qutebrowser.1" + install -Dm644 misc/org.qutebrowser.qutebrowser.desktop \ + "$out/share/applications/org.qutebrowser.qutebrowser.desktop" + + # Install icons + for i in 16 24 32 48 64 128 256 512; do + install -Dm644 "icons/qutebrowser-''${i}x''${i}.png" \ + "$out/share/icons/hicolor/''${i}x''${i}/apps/qutebrowser.png" + done + install -Dm644 icons/qutebrowser.svg \ + "$out/share/icons/hicolor/scalable/apps/qutebrowser.svg" + + # Install scripts + sed -i "s,/usr/bin/,$out/bin/,g" scripts/open_url_in_instance.sh + install -Dm755 -t "$out/share/qutebrowser/scripts/" $(find scripts -type f) + install -Dm755 -t "$out/share/qutebrowser/userscripts/" misc/userscripts/* + + # Patch python scripts + buildPythonPath "$out $propagatedBuildInputs" + scripts=$(grep -rl python "$out"/share/qutebrowser/{user,}scripts/) + for i in $scripts; do + patchPythonScript "$i" + done + ''; + + postFixup = '' + wrapProgram $out/bin/qutebrowser \ + "''${gappsWrapperArgs[@]}" \ + "''${qtWrapperArgs[@]}" \ + --add-flags '--backend ${backend}' + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/The-Compiler/qutebrowser"; + description = "Keyboard-focused browser with a minimal GUI"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jagajaga rnhmjoj ebzzry ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch new file mode 100644 index 000000000000..828fa5e107c9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch @@ -0,0 +1,19 @@ +diff --git a/quitter.py b/quitter.py +index a42b9d0..f544ccb 100644 +--- a/qutebrowser/misc/quitter.py ++++ b/qutebrowser/misc/quitter.py +@@ -112,13 +112,7 @@ class Quitter(QObject): + Return: + The commandline as a list of strings. + """ +- if os.path.basename(sys.argv[0]) == 'qutebrowser': +- # Launched via launcher script +- args = [sys.argv[0]] +- elif hasattr(sys, 'frozen'): +- args = [sys.executable] +- else: +- args = [sys.executable, '-m', 'qutebrowser'] ++ args = ['@qutebrowser@'] + + # Add all open pages so they get reopened. + page_args = [] # type: typing.MutableSequence[str] diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix new file mode 100644 index 000000000000..57eb4fad76b0 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchgit +, pkgconfig, wrapGAppsHook +, glib, gcr, glib-networking, gsettings-desktop-schemas, gtk, libsoup, webkitgtk +, xorg, dmenu, findutils, gnused, coreutils +, patches ? null +}: + +stdenv.mkDerivation rec { + pname = "surf"; + version = "unstable-2019-02-08"; + + src = fetchgit { + url = "git://git.suckless.org/surf"; + rev = "d068a3878b6b9f2841a49cd7948cdf9d62b55585"; + sha256 = "0pjsv2q8c74sdmqsalym8wa2lv55lj4pd36miam5wd12769xw68m"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ glib gcr glib-networking gsettings-desktop-schemas gtk libsoup webkitgtk ]; + + inherit patches; + + installFlags = [ "PREFIX=$(out)" ]; + + # Add run-time dependencies to PATH. Append them to PATH so the user can + # override the dependencies with their own PATH. + preFixup = let + depsPath = lib.makeBinPath [ xorg.xprop dmenu findutils gnused coreutils ]; + in '' + gappsWrapperArgs+=( + --suffix PATH : ${depsPath} + ) + ''; + + meta = with stdenv.lib; { + description = "A simple web browser based on WebKitGTK"; + longDescription = '' + surf is a simple web browser based on WebKitGTK. It is able to display + websites and follow links. It supports the XEmbed protocol which makes it + possible to embed it in another application. Furthermore, one can point + surf to another URI by setting its XProperties. + ''; + homepage = "https://surf.suckless.org"; + license = licenses.mit; + platforms = webkitgtk.meta.platforms; + maintainers = with maintainers; [ joachifm ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix new file mode 100644 index 000000000000..222b1b5b767c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -0,0 +1,414 @@ +{ stdenv +, fetchurl +, makeDesktopItem + +# Common run-time dependencies +, zlib + +# libxul run-time dependencies +, atk +, cairo +, dbus +, dbus-glib +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gtk3 +, libxcb +, libX11 +, libXext +, libXrender +, libXt +, pango + +, audioSupport ? mediaSupport +, pulseaudioSupport ? false +, libpulseaudio +, apulse + +# Media support (implies audio support) +, mediaSupport ? true +, ffmpeg_3 + +, gmp + +# Pluggable transport dependencies +, python27 + +# Wrapper runtime +, coreutils +, glibcLocales +, gnome3 +, runtimeShell +, shared-mime-info +, gsettings-desktop-schemas + +# Hardening +, graphene-hardened-malloc +# crashes with intel driver +, useHardenedMalloc ? false + +# Whether to disable multiprocess support to work around crashing tabs +# TODO: fix the underlying problem instead of this terrible work-around +, disableContentSandbox ? true + +# Extra preferences +, extraPrefs ? "" +}: + +with stdenv.lib; + +let + libPath = makeLibraryPath libPkgs; + + libPkgs = [ + atk + cairo + dbus + dbus-glib + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libxcb + libX11 + libXext + libXrender + libXt + pango + stdenv.cc.cc + stdenv.cc.libc + zlib + ] + ++ optionals pulseaudioSupport [ libpulseaudio ] + ++ optionals mediaSupport [ + ffmpeg_3 + ]; + + # Library search path for the fte transport + fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ]; + + # Upstream source + version = "10.0.5"; + + lang = "en-US"; + + srcs = { + x86_64-linux = fetchurl { + url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"; + sha256 = "1cxh39x69m4lgqin5k5p67gs9g26w7cnlbdpjqi8dw47y0bpr9xw"; + }; + + i686-linux = fetchurl { + url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"; + sha256 = "1cyg5ic7mrj6x1gxw5w609933d9ripa5b5gxyqnvnxfa23dkh608"; + }; + }; +in +stdenv.mkDerivation rec { + pname = "tor-browser-bundle-bin"; + inherit version; + + src = srcs.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}"); + + preferLocalBuild = true; + allowSubstitutes = false; + + desktopItem = makeDesktopItem { + name = "torbrowser"; + exec = "tor-browser"; + icon = "torbrowser"; + desktopName = "Tor Browser"; + genericName = "Web Browser"; + comment = meta.description; + categories = "Network;WebBrowser;Security;"; + }; + + buildCommand = '' + # For convenience ... + TBB_IN_STORE=$out/share/tor-browser + interp=$(< $NIX_CC/nix-support/dynamic-linker) + + # Unpack & enter + mkdir -p "$TBB_IN_STORE" + tar xf "${src}" -C "$TBB_IN_STORE" --strip-components=2 + pushd "$TBB_IN_STORE" + + # Set ELF interpreter + for exe in firefox.real TorBrowser/Tor/tor ; do + echo "Setting ELF interpreter on $exe ..." >&2 + patchelf --set-interpreter "$interp" "$exe" + done + + # firefox is a wrapper that checks for a more recent libstdc++ & appends it to the ld path + mv firefox.real firefox + + # The final libPath. Note, we could split this into firefoxLibPath + # and torLibPath for accuracy, but this is more convenient ... + libPath=${libPath}:$TBB_IN_STORE:$TBB_IN_STORE/TorBrowser/Tor + + # apulse uses a non-standard library path. For now special-case it. + ${optionalString (audioSupport && !pulseaudioSupport) '' + libPath=${apulse}/lib/apulse:$libPath + ''} + + # Fixup paths to pluggable transports. + sed -i TorBrowser/Data/Tor/torrc-defaults \ + -e "s,./TorBrowser,$TBB_IN_STORE/TorBrowser,g" + + # Fixup obfs transport. Work around patchelf failing to set + # interpreter for pre-compiled Go binaries by invoking the interpreter + # directly. + sed -i TorBrowser/Data/Tor/torrc-defaults \ + -e "s|\(ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit\) exec|\1 exec $interp|" + + # Similarly fixup snowflake + sed -i TorBrowser/Data/Tor/torrc-defaults \ + -e "s|\(ClientTransportPlugin snowflake\) exec|\1 exec $interp|" + + + # Prepare for autoconfig. + # + # See https://developer.mozilla.org/en-US/Firefox/Enterprise_deployment + cat >defaults/pref/autoconfig.js <<EOF + // + pref("general.config.filename", "mozilla.cfg"); + pref("general.config.obscure_value", 0); + EOF + + # Hard-coded Firefox preferences. + cat >mozilla.cfg <<EOF + // First line must be a comment + + // Always update via Nixpkgs + lockPref("app.update.auto", false); + lockPref("app.update.enabled", false); + lockPref("extensions.update.autoUpdateDefault", false); + lockPref("extensions.update.enabled", false); + lockPref("extensions.torbutton.versioncheck_enabled", false); + + // User should never change these. Locking prevents these + // values from being written to prefs.js, avoiding Store + // path capture. + lockPref("extensions.torlauncher.torrc-defaults_path", "$TBB_IN_STORE/TorBrowser/Data/Tor/torrc-defaults"); + lockPref("extensions.torlauncher.tor_path", "$TBB_IN_STORE/TorBrowser/Tor/tor"); + + // Reset pref that captures store paths. + clearPref("extensions.xpiState"); + + // Stop obnoxious first-run redirection. + lockPref("noscript.firstRunRedirection", false); + + // Insist on using IPC for communicating with Tor + // + // Defaults to creating \$TBB_HOME/TorBrowser/Data/Tor/{socks,control}.socket + lockPref("extensions.torlauncher.control_port_use_ipc", true); + lockPref("extensions.torlauncher.socks_port_use_ipc", true); + + // Optionally disable multiprocess support. We always set this to ensure that + // toggling the pref takes effect. + lockPref("browser.tabs.remote.autostart.2", ${if disableContentSandbox then "false" else "true"}); + + // Allow sandbox access to sound devices if using ALSA directly + ${if (audioSupport && !pulseaudioSupport) then '' + pref("security.sandbox.content.write_path_whitelist", "/dev/snd/"); + '' else '' + clearPref("security.sandbox.content.write_path_whitelist"); + ''} + + ${optionalString (extraPrefs != "") '' + ${extraPrefs} + ''} + EOF + + # Hard-code path to TBB fonts; see also FONTCONFIG_FILE in + # the wrapper below. + FONTCONFIG_FILE=$TBB_IN_STORE/TorBrowser/Data/fontconfig/fonts.conf + sed -i "$FONTCONFIG_FILE" \ + -e "s,<dir>fonts</dir>,<dir>$TBB_IN_STORE/fonts</dir>," + + # Preload extensions by moving into the runtime instead of storing under the + # user's profile directory. + # See https://support.mozilla.org/en-US/kb/deploying-firefox-with-extensions + mkdir -p "$TBB_IN_STORE/distribution/extensions" + mv "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/extensions/"* \ + "$TBB_IN_STORE/distribution/extensions" + + # Hard-code paths to geoip data files. TBB resolves the geoip files + # relative to torrc-defaults_path but if we do not hard-code them + # here, these paths end up being written to the torrc in the user's + # state dir. + cat >>TorBrowser/Data/Tor/torrc-defaults <<EOF + GeoIPFile $TBB_IN_STORE/TorBrowser/Data/Tor/geoip + GeoIPv6File $TBB_IN_STORE/TorBrowser/Data/Tor/geoip6 + EOF + + WRAPPER_LD_PRELOAD=${optionalString useHardenedMalloc + "${graphene-hardened-malloc}/lib/libhardened_malloc.so"} + + WRAPPER_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [ + gnome3.adwaita-icon-theme + shared-mime-info + ]} + WRAPPER_XDG_DATA_DIRS+=":"${concatMapStringsSep ":" (x: "${x}/share/gsettings-schemas/${x.name}") [ + glib + gsettings-desktop-schemas + gtk3 + ]}; + + # Generate wrapper + mkdir -p $out/bin + cat > "$out/bin/tor-browser" << EOF + #! ${runtimeShell} + set -o errexit -o nounset + + PATH=${makeBinPath [ coreutils ]} + export LC_ALL=C + export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive + + # Enter local state directory. + REAL_HOME=\$HOME + TBB_HOME=\''${TBB_HOME:-''${XDG_DATA_HOME:-\$REAL_HOME/.local/share}/tor-browser} + HOME=\$TBB_HOME + + mkdir -p "\$HOME" + cd "\$HOME" + + # Initialize empty TBB local state directory hierarchy. We + # intentionally mirror the layout that TBB would see if executed from + # the unpacked bundle dir. + mkdir -p "\$HOME/TorBrowser" "\$HOME/TorBrowser/Data" + + # Initialize the Tor data directory. + mkdir -p "\$HOME/TorBrowser/Data/Tor" + + # TBB will fail if ownership is too permissive + chmod 0700 "\$HOME/TorBrowser/Data/Tor" + + # Initialize the browser profile state. Note that the only data + # copied from the Store payload is the initial bookmark file, which is + # never updated once created. All other files under user's profile + # dir are generated by TBB. + mkdir -p "\$HOME/TorBrowser/Data/Browser/profile.default" + cp -u --no-preserve=mode,owner "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/bookmarks.html" \ + "\$HOME/TorBrowser/Data/Browser/profile.default/bookmarks.html" + + # Clear out some files that tend to capture store references but are + # easily generated by firefox at startup. + rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{addonStartup.json.lz4,compatibility.ini,extensions.ini,extensions.json} + rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/startupCache/* + + # XDG + : "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}" + : "\''${XDG_CONFIG_HOME:=\$REAL_HOME/.config}" + + ${optionalString pulseaudioSupport '' + # Figure out some envvars for pulseaudio + : "\''${PULSE_SERVER:=\$XDG_RUNTIME_DIR/pulse/native}" + : "\''${PULSE_COOKIE:=\$XDG_CONFIG_HOME/pulse/cookie}" + ''} + + # Font cache files capture store paths; clear them out on the off + # chance that TBB would continue using old font files. + rm -rf "\$HOME/.cache/fontconfig" + + # Lift-off + # + # XAUTHORITY and DISPLAY are required for TBB to work at all. + # + # DBUS_SESSION_BUS_ADDRESS is inherited to avoid auto-launch; to + # prevent that, set it to an empty/invalid value prior to running + # tor-browser. + # + # PULSE_SERVER is necessary for audio playback. + # + # Setting FONTCONFIG_FILE is required to make fontconfig read the TBB + # fonts.conf; upstream uses FONTCONFIG_PATH, but FC_DEBUG=1024 + # indicates the system fonts.conf being used instead. + # + # XDG_DATA_DIRS is set to prevent searching system dirs (looking for .desktop & icons) + exec env -i \ + LD_PRELOAD=$WRAPPER_LD_PRELOAD \ + \ + TZ=":" \ + TZDIR="\''${TZDIR:-}" \ + LOCALE_ARCHIVE="\$LOCALE_ARCHIVE" \ + \ + TMPDIR="\''${TMPDIR:-/tmp}" \ + HOME="\$HOME" \ + XAUTHORITY="\''${XAUTHORITY:-\$HOME/.Xauthority}" \ + DISPLAY="\$DISPLAY" \ + DBUS_SESSION_BUS_ADDRESS="\''${DBUS_SESSION_BUS_ADDRESS:-unix:path=\$XDG_RUNTIME_DIR/bus}" \\ + \ + XDG_DATA_HOME="\$HOME/.local/share" \ + XDG_DATA_DIRS="$WRAPPER_XDG_DATA_DIRS" \ + \ + PULSE_SERVER="\''${PULSE_SERVER:-}" \ + PULSE_COOKIE="\''${PULSE_COOKIE:-}" \ + \ + APULSE_PLAYBACK_DEVICE="\''${APULSE_PLAYBACK_DEVICE:-plug:dmix}" \ + \ + TOR_SKIP_LAUNCH="\''${TOR_SKIP_LAUNCH:-}" \ + TOR_CONTROL_PORT="\''${TOR_CONTROL_PORT:-}" \ + TOR_SOCKS_PORT="\''${TOR_SOCKS_PORT:-}" \ + \ + FONTCONFIG_FILE="$FONTCONFIG_FILE" \ + \ + LD_LIBRARY_PATH="$libPath" \ + \ + "$TBB_IN_STORE/firefox" \ + --class "Tor Browser" \ + -no-remote \ + -profile "\$HOME/TorBrowser/Data/Browser/profile.default" \ + "\''${@}" + EOF + chmod +x $out/bin/tor-browser + + # Easier access to docs + mkdir -p $out/share/doc + ln -s $TBB_IN_STORE/TorBrowser/Docs $out/share/doc/tor-browser + + # Install .desktop item + mkdir -p $out/share/applications + cp $desktopItem/share/applications"/"* $out/share/applications + sed -i $out/share/applications/torbrowser.desktop \ + -e "s,Exec=.*,Exec=$out/bin/tor-browser," \ + -e "s,Icon=.*,Icon=tor-browser," + for i in 16 32 48 64 128; do + mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps/ + ln -s $out/share/tor-browser/browser/chrome/icons/default/default$i.png $out/share/icons/hicolor/''${i}x''${i}/apps/tor-browser.png + done + + # Check installed apps + echo "Checking bundled Tor ..." + LD_LIBRARY_PATH=$libPath $TBB_IN_STORE/TorBrowser/Tor/tor --version >/dev/null + + echo "Checking tor-browser wrapper ..." + DISPLAY="" XAUTHORITY="" DBUS_SESSION_BUS_ADDRESS="" TBB_HOME=$(mktemp -d) \ + $out/bin/tor-browser --version >/dev/null + ''; + + meta = with stdenv.lib; { + description = "Tor Browser Bundle built by torproject.org"; + longDescription = '' + Tor Browser Bundle is a bundle of the Tor daemon, Tor Browser (heavily patched version of + Firefox), several essential extensions for Tor Browser, and some tools that glue those + together with a convenient UI. + + `tor-browser-bundle-bin` package is the official version built by torproject.org patched with + `patchelf` to work under nix and with bundled scripts adapted to the read-only nature of + the `/nix/store`. + ''; + homepage = "https://www.torproject.org/"; + changelog = "https://gitweb.torproject.org/builders/tor-browser-build.git/plain/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt?h=maint-${version}"; + platforms = attrNames srcs; + maintainers = with maintainers; [ offline matejc thoughtpolice joachifm hax404 cap KarlJoad ]; + hydraPlatforms = []; + # MPL2.0+, GPL+, &c. While it's not entirely clear whether + # the compound is "libre" in a strict sense (some components place certain + # restrictions on redistribution), it's free enough for our purposes. + license = licenses.free; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix new file mode 100644 index 000000000000..7356768f3973 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix @@ -0,0 +1,111 @@ +{ stdenv +, fetchgit +, fetchurl + +# common +, zip + +# HTTPS Everywhere +, git +, libxml2 # xmllint +, python27 +, python27Packages +, rsync +}: + +{ + https-everywhere = stdenv.mkDerivation rec { + pname = "https-everywhere"; + version = "2017.10.4"; + + extid = "https-everywhere-eff@eff.org"; + + src = fetchgit { + url = "https://git.torproject.org/https-everywhere.git"; + rev = "refs/tags/${version}"; + sha256 = "1g7971xygnhagnb25xjdf6mli6091ai9igx42d0ww88g8i0cqfzj"; + fetchSubmodules = true; # for translations, TODO: remove + }; + + nativeBuildInputs = [ + git + libxml2 # xmllint + python27 + python27Packages.lxml + rsync + zip + ]; + + buildPhase = '' + $shell ./makexpi.sh ${version} --no-recurse + ''; + + installPhase = '' + install -m 444 -D pkg/https-everywhere-$version-eff.xpi "$out/$extid.xpi" + ''; + }; + + noscript = stdenv.mkDerivation rec { + pname = "noscript"; + version = "5.1.2"; + + extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}"; + + src = fetchurl { + url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi"; + sha256 = "1fzspdiwhjabwz1yxb3gzj7giz9jbc1xxm65i93rvhzcp537cs42"; + }; + + dontUnpack = true; + + installPhase = '' + install -m 444 -D $src "$out/$extid.xpi" + ''; + }; + + torbutton = stdenv.mkDerivation rec { + pname = "torbutton"; + version = "1.9.8.1"; + + extid = "torbutton@torproject.org"; + + src = fetchgit { + url = "https://git.torproject.org/torbutton.git"; + rev = "refs/tags/${version}"; + sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l"; + }; + + nativeBuildInputs = [ zip ]; + + buildPhase = '' + $shell ./makexpi.sh + ''; + + installPhase = '' + install -m 444 -D pkg/torbutton-$version.xpi "$out/$extid.xpi" + ''; + }; + + tor-launcher = stdenv.mkDerivation rec { + pname = "tor-launcher"; + version = "0.2.13"; + + extid = "tor-launcher@torproject.org"; + + src = fetchgit { + url = "https://git.torproject.org/tor-launcher.git"; + rev = "refs/tags/${version}"; + sha256 = "1f98v88y2clwvjiw77kxqc9cacp5h0489a540nc2wmsx7vnskrq0"; + }; + + nativeBuildInputs = [ zip ]; + + buildPhase = '' + make package + ''; + + installPhase = '' + install -m 444 -D pkg/tor-launcher-$version.xpi "$out/$extid.xpi" + ''; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix new file mode 100644 index 000000000000..c5cbee196521 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix @@ -0,0 +1,87 @@ +{ stdenv, mkChromiumDerivation, channel, enableWideVine }: + +with stdenv.lib; + +mkChromiumDerivation (base: rec { + name = "chromium-browser"; + packageName = "chromium"; + buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ]; + + outputs = ["out" "sandbox"]; + + sandboxExecutableName = "__chromium-suid-sandbox"; + + installPhase = '' + mkdir -p "$libExecPath" + cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/" + cp -v "$buildPath/icudtl.dat" "$libExecPath/" + cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" + cp -v "$buildPath/chrome" "$libExecPath/$packageName" + + # Swiftshader + # See https://stackoverflow.com/a/4264351/263061 for the find invocation. + if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then + echo "Swiftshader files found; installing" + mkdir -p "$libExecPath/swiftshader" + cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/" + else + echo "Swiftshader files not found" + fi + + mkdir -p "$sandbox/bin" + cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}" + + mkdir -vp "$out/share/man/man1" + cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1" + + for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do + num_and_suffix="''${icon_file##*logo_}" + icon_size="''${num_and_suffix%.*}" + expr "$icon_size" : "^[0-9][0-9]*$" || continue + logo_output_prefix="$out/share/icons/hicolor" + logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" + mkdir -vp "$logo_output_path" + cp -v "$icon_file" "$logo_output_path/$packageName.png" + done + + # Install Desktop Entry + install -D chrome/installer/linux/common/desktop.template \ + $out/share/applications/chromium-browser.desktop + + substituteInPlace $out/share/applications/chromium-browser.desktop \ + --replace "@@MENUNAME@@" "Chromium" \ + --replace "@@PACKAGE@@" "chromium" \ + --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium" + + # Append more mime types to the end + sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \ + $out/share/applications/chromium-browser.desktop + + # See https://github.com/NixOS/nixpkgs/issues/12433 + sed -i \ + -e '/\[Desktop Entry\]/a\' \ + -e 'StartupWMClass=chromium-browser' \ + $out/share/applications/chromium-browser.desktop + ''; + + passthru = { inherit sandboxExecutableName; }; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = { + description = "An open source web browser from Google, with dependencies on Google web services removed"; + longDescription = '' + Chromium is an open source web browser from Google that aims to build a + safer, faster, and more stable way for all Internet users to experience + the web. It has a minimalist user interface and provides the vast majority + of source code for Google Chrome (which has some additional features). + ''; + homepage = "https://github.com/Eloston/ungoogled-chromium"; + maintainers = with maintainers; [ squalus ]; + license = if enableWideVine then licenses.unfree else licenses.bsd3; + platforms = platforms.linux; + hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else []; + timeout = 172800; # 48 hours (increased from the Hydra default of 10h) + broken = channel == "dev"; # Blocked on https://bugs.chromium.org/p/chromium/issues/detail?id=1141896 + }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix new file mode 100644 index 000000000000..2accb1a7ab21 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix @@ -0,0 +1,358 @@ +{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl + +# default dependencies +, gnutar, bzip2, flac, speex, libopus +, libevent, expat, libjpeg, snappy +, libpng, libcap +, xdg_utils, yasm, nasm, minizip, libwebp +, libusb1, pciutils, nss, re2 + +, python2Packages, perl, pkgconfig +, nspr, systemd, kerberos +, util-linux, alsaLib +, bison, gperf +, glib, gtk3, dbus-glib +, glibc +, libXScrnSaver, libXcursor, libXtst, libGLU, libGL +, protobuf, speechd, libXdamage, cups +, ffmpeg, libxslt, libxml2, at-spi2-core +, jre8 +, pipewire_0_2 + +# optional dependencies +, libgcrypt ? null # gnomeSupport || cupsSupport +, libva ? null # useVaapi +, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone + +# package customization +, useOzone ? false +, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper +# VA-API TODOs: +# - Ozone: M81 fails to build due to "ozone_platform_gbm = false" +# - Possible solutions: Write a patch to fix the build (wrong gn dependencies) +# or build with minigbm +# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879) +, gnomeSupport ? false, gnome ? null +, gnomeKeyringSupport ? false, libgnome-keyring3 ? null +, proprietaryCodecs ? true +, cupsSupport ? true +, pulseSupport ? false, libpulseaudio ? null +, ungoogled-chromium +, ungoogled ? false + +, channel +, upstream-info +}: + +buildFun: + +with stdenv.lib; + +let + jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731 + + # The additional attributes for creating derivations based on the chromium + # source tree. + extraAttrs = buildFun base; + + githubPatch = commit: sha256: fetchpatch { + url = "https://github.com/chromium/chromium/commit/${commit}.patch"; + inherit sha256; + }; + + mkGnFlags = + let + # Serialize Nix types into GN types according to this document: + # https://source.chromium.org/gn/gn/+/master:docs/language.md + mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\""; + sanitize = value: + if value == true then "true" + else if value == false then "false" + else if isList value then "[${concatMapStringsSep ", " sanitize value}]" + else if isInt value then toString value + else if isString value then mkGnString value + else throw "Unsupported type for GN value `${value}'."; + toFlag = key: value: "${key}=${sanitize value}"; + in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); + + # https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py + gnSystemLibraries = [ + "ffmpeg" + "flac" + "libjpeg" + "libpng" + "libwebp" + "libxslt" + "opus" + "snappy" + "zlib" + ]; + + opusWithCustomModes = libopus.override { + withCustomModes = true; + }; + + defaultDependencies = [ + bzip2 flac speex opusWithCustomModes + libevent expat libjpeg snappy + libpng libcap + xdg_utils minizip libwebp + libusb1 re2 + ffmpeg libxslt libxml2 + nasm + ]; + + # build paths and release info + packageName = extraAttrs.packageName or extraAttrs.name; + buildType = "Release"; + buildPath = "out/${buildType}"; + libExecPath = "$out/libexec/${packageName}"; + + versionRange = min-version: upto-version: + let inherit (upstream-info) version; + result = versionAtLeast version min-version && versionOlder version upto-version; + stable-version = (importJSON ./upstream-info.json).stable.version; + in if versionAtLeast stable-version upto-version + then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it." + result + else result; + + ungoogler = + let versionEntry = (import ./ungoogled-src.nix)."${upstream-info.version}"; + in ungoogled-chromium { + inherit (versionEntry) rev sha256; + }; + base = rec { + name = "${packageName}-unwrapped-${version}"; + inherit (upstream-info) version; + inherit channel packageName buildType buildPath; + + src = fetchurl { + url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz"; + inherit (upstream-info) sha256; + }; + + nativeBuildInputs = [ + llvmPackages.lldClang.bintools + ninja which python2Packages.python perl pkgconfig + python2Packages.ply python2Packages.jinja2 nodejs + gnutar python2Packages.setuptools + ]; + + buildInputs = defaultDependencies ++ [ + nspr nss systemd + util-linux alsaLib + bison gperf kerberos + glib gtk3 dbus-glib + libXScrnSaver libXcursor libXtst libGLU libGL + pciutils protobuf speechd libXdamage at-spi2-core + jre + pipewire_0_2 + ] ++ optional useVaapi libva + ++ optional gnomeKeyringSupport libgnome-keyring3 + ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] + ++ optionals cupsSupport [ libgcrypt cups ] + ++ optional pulseSupport libpulseaudio + ++ optionals useOzone [ libdrm wayland mesa.drivers libxkbcommon ]; + + patches = [ + ./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed) + ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags + # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) + ] ++ optionals (useVaapi && versionRange "86" "87") [ + # Check for enable-accelerated-video-decode on Linux: + (githubPatch "54deb9811ca9bd2327def5c05ba6987b8c7a0897" "11jvxjlkzz1hm0pvfyr88j7z3zbwzplyl5idkx92l2lzv4459c8d") + ]; + + postPatch = '' + # remove unused third-party + for lib in ${toString gnSystemLibraries}; do + if [ -d "third_party/$lib" ]; then + find "third_party/$lib" -type f \ + \! -path "third_party/$lib/chromium/*" \ + \! -path "third_party/$lib/google/*" \ + \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + fi + done + + # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.): + substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" "" + if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then + substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \ + --replace "/usr/bin/env -S make -f" "/usr/bin/make -f" + fi + + # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX + substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \ + --replace \ + 'return sandbox_binary;' \ + 'return base::FilePath(GetDevelSandboxPath());' + + substituteInPlace services/audio/audio_sandbox_hook_linux.cc \ + --replace \ + '/usr/share/alsa/' \ + '${alsaLib}/share/alsa/' \ + --replace \ + '/usr/lib/x86_64-linux-gnu/gconv/' \ + '${glibc}/lib/gconv/' \ + --replace \ + '/usr/share/locale/' \ + '${glibc}/share/locale/' + + sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \ + chrome/browser/shell_integration_linux.cc + + sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \ + device/udev_linux/udev?_loader.cc + + sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \ + gpu/config/gpu_info_collector_linux.cc + + # Allow to put extensions into the system-path. + sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc + + patchShebangs . + # use our own nodejs + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node + + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py + + '' + optionalString stdenv.isAarch64 '' + substituteInPlace build/toolchain/linux/BUILD.gn \ + --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' + '' + optionalString ungoogled '' + ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors" + ${ungoogler}/utils/patches.py . ${ungoogler}/patches + ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz . + ''; + + gnFlags = mkGnFlags ({ + custom_toolchain = "//build/toolchain/linux/unbundle:default"; + host_toolchain = "//build/toolchain/linux/unbundle:default"; + is_official_build = true; + is_debug = false; + + proprietary_codecs = false; + use_sysroot = false; + use_gnome_keyring = gnomeKeyringSupport; + use_gio = gnomeSupport; + # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy', + # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it + enable_nacl = false; + # Enabling the Widevine component here doesn't affect whether we can + # redistribute the chromium package; the Widevine component is either + # added later in the wrapped -wv build or downloaded from Google. + enable_widevine = true; + use_cups = cupsSupport; + # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture. + rtc_use_pipewire = true; + + treat_warnings_as_errors = false; + is_clang = stdenv.cc.isClang; + clang_use_chrome_plugins = false; + blink_symbol_level = 0; + symbol_level = 0; + fieldtrial_testing_like_official_build = true; + + # Google API keys, see: + # http://www.chromium.org/developers/how-tos/api-keys + # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, + # please get your own set of keys. + google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI"; + google_default_client_id = "404761575300.apps.googleusercontent.com"; + google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D"; + } // optionalAttrs proprietaryCodecs { + # enable support for the H.264 codec + proprietary_codecs = true; + enable_hangout_services_extension = true; + ffmpeg_branding = "Chrome"; + } // optionalAttrs useVaapi { + use_vaapi = true; + } // optionalAttrs pulseSupport { + use_pulseaudio = true; + link_pulseaudio = true; + } // optionalAttrs useOzone { + use_ozone = true; + ozone_platform_gbm = false; + use_xkbcommon = true; + use_glib = true; + use_gtk = true; + use_system_libwayland = true; + use_system_minigbm = true; + use_system_libdrm = true; + system_wayland_scanner_path = "${wayland}/bin/wayland-scanner"; + } // optionalAttrs ungoogled { + enable_hangout_services_extension = false; + enable_js_type_check = false; + enable_mdns = false; + enable_nacl_nonsfi = false; + enable_one_click_signin = false; + enable_reading_list = false; + enable_remoting = false; + enable_reporting = false; + enable_service_discovery = false; + exclude_unwind_tables = true; + google_api_key = ""; + google_default_client_id = ""; + google_default_client_secret = ""; + safe_browsing_mode = 0; + use_official_google_api_keys = false; + use_unofficial_version_number = false; + } // (extraAttrs.gnFlags or {})); + + configurePhase = '' + runHook preConfigure + + # This is to ensure expansion of $out. + libExecPath="${libExecPath}" + python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries} + ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt + + # Fail if `gn gen` contains a WARNING. + grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1 + + runHook postConfigure + ''; + + # Don't spam warnings about unknown warning options. This is useful because + # our Clang is always older than Chromium's and the build logs have a size + # of approx. 25 MB without this option (and this saves e.g. 66 %). + NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option"; + + buildPhase = let + buildCommand = target: '' + ninja -C "${buildPath}" -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES "${target}" + ( + source chrome/installer/linux/common/installer.include + PACKAGE=$packageName + MENUNAME="Chromium" + process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1" + ) + ''; + targets = extraAttrs.buildTargets or []; + commands = map buildCommand targets; + in concatStringsSep "\n" commands; + + postFixup = '' + # Make sure that libGLESv2 is found by dlopen (if using EGL). + chromiumBinary="$libExecPath/$packageName" + origRpath="$(patchelf --print-rpath "$chromiumBinary")" + patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary" + ''; + + passthru = { + updateScript = ./update.py; + chromiumDeps = { + gn = gnChromium; + }; + }; + }; + +# Remove some extraAttrs we supplied to the base attributes already. +in stdenv.mkDerivation (base // removeAttrs extraAttrs [ + "name" "gnFlags" "buildTargets" +] // { passthru = base.passthru // (extraAttrs.passthru or {}); }) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix new file mode 100644 index 000000000000..b02c91c6e230 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix @@ -0,0 +1,218 @@ +{ newScope, config, stdenv, fetchurl, makeWrapper +, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils +, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit +, libva ? null +, pipewire_0_2 +, gcc, nspr, nss, runCommand +, lib + +# package customization +# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper) +, channel ? "stable" +, gnomeSupport ? false, gnome ? null +, gnomeKeyringSupport ? false +, proprietaryCodecs ? true +, enablePepperFlash ? false +, enableWideVine ? false +, enableVaapi ? false # Disabled by default due to unofficial support +, ungoogled ? true +, useOzone ? false +, cupsSupport ? true +, pulseSupport ? config.pulseaudio or stdenv.isLinux +, commandLineArgs ? "" +}: + +let + llvmPackages = llvmPackages_11; + stdenv = llvmPackages.stdenv; + + callPackage = newScope chromium; + + chromium = rec { + inherit stdenv llvmPackages; + + upstream-info = (lib.importJSON ./upstream-info.json).${channel}; + + mkChromiumDerivation = callPackage ./common.nix ({ + inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs + cupsSupport pulseSupport useOzone; + inherit ungoogled; + gnChromium = gn.overrideAttrs (oldAttrs: { + inherit (upstream-info.deps.gn) version; + src = fetchgit { + inherit (upstream-info.deps.gn) url rev sha256; + }; + }); + } // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") { + useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/ + useVaapi = !stdenv.isAarch64; # TODO: Might be best to not set use_vaapi anymore (default is fine) + }); + + browser = callPackage ./browser.nix { inherit channel enableWideVine; }; + + plugins = callPackage ./plugins.nix { + inherit enablePepperFlash; + }; + + ungoogled-chromium = callPackage ./ungoogled.nix {}; + }; + + pkgSuffix = if channel == "dev" then "unstable" else channel; + pkgName = "google-chrome-${pkgSuffix}"; + chromeSrc = fetchurl { + urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [ + "https://dl.google.com/linux/chrome/deb/pool/main/g" + "http://95.31.35.30/chrome/pool/main/g" + "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g" + "http://repo.fdzh.org/chrome/deb/pool/main/g" + ]; + sha256 = chromium.upstream-info.sha256bin64; + }; + + mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}"; + widevineCdm = stdenv.mkDerivation { + name = "chrome-widevine-cdm"; + + src = chromeSrc; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ]; + + unpackCmd = let + widevineCdmPath = + if channel == "stable" then + "./opt/google/chrome/WidevineCdm" + else if channel == "beta" then + "./opt/google/chrome-beta/WidevineCdm" + else if channel == "dev" then + "./opt/google/chrome-unstable/WidevineCdm" + else + throw "Unknown chromium channel."; + in '' + # Extract just WidevineCdm from upstream's .deb file + ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}" + + # Move things around so that we don't have to reference a particular + # chrome-* directory later. + mv "${widevineCdmPath}" ./ + + # unpackCmd wants a single output directory; let it take WidevineCdm/ + rm -rf opt + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ]; + + patchPhase = '' + patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so + ''; + + installPhase = '' + mkdir -p $out/WidevineCdm + cp -a * $out/WidevineCdm/ + ''; + + meta = { + platforms = [ "x86_64-linux" ]; + license = lib.licenses.unfree; + }; + }; + + suffix = if channel != "stable" then "-" + channel else ""; + + sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName; + + version = chromium.browser.version; + + # We want users to be able to enableWideVine without rebuilding all of + # chromium, so we have a separate derivation here that copies chromium + # and adds the unfree WidevineCdm. + chromiumWV = let browser = chromium.browser; in if enableWideVine then + runCommand (browser.name + "-wv") { version = browser.version; } + '' + mkdir -p $out + cp -a ${browser}/* $out/ + chmod u+w $out/libexec/chromium + cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/ + '' + else browser; + +in stdenv.mkDerivation { + name = "ungoogled-chromium${suffix}-${version}"; + inherit version; + + buildInputs = [ + makeWrapper ed + + # needed for GSETTINGS_SCHEMAS_PATH + gsettings-desktop-schemas glib gtk3 + + # needed for XDG_ICON_DIRS + gnome3.adwaita-icon-theme + ]; + + outputs = ["out" "sandbox"]; + + buildCommand = let + browserBinary = "${chromiumWV}/libexec/chromium/chromium"; + getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; + libPath = stdenv.lib.makeLibraryPath [ libva pipewire_0_2 ]; + + in with stdenv.lib; '' + mkdir -p "$out/bin" + + eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ + --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \ + ${lib.optionalString enableVaapi "--add-flags --enable-accelerated-video-decode"} \ + ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} + + ed -v -s "$out/bin/chromium" << EOF + 2i + + if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ] + then + export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}" + else + export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}" + fi + + '' + lib.optionalString (libPath != "") '' + # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not + # contain an empty section before or after a colon. + export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}" + '' + '' + + # libredirect causes chromium to deadlock on startup + export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | ${coreutils}/bin/tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | ${coreutils}/bin/tr '\n' ':')" + + export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS + + # Mainly for xdg-open but also other xdg-* tools: + export PATH="${xdg_utils}/bin\''${PATH:+:}\$PATH" + + . + w + EOF + + ln -sv "${chromium.browser.sandbox}" "$sandbox" + + ln -s "$out/bin/chromium" "$out/bin/chromium-browser" + + mkdir -p "$out/share" + for f in '${chromium.browser}'/share/*; do # hello emacs */ + ln -s -t "$out/share/" "$f" + done + ''; + + inherit (chromium.browser) packageName; + meta = chromium.browser.meta; + passthru = { + inherit (chromium) upstream-info browser; + mkDerivation = chromium.mkChromiumDerivation; + inherit chromeSrc sandboxExecutableName; + updateScript = ./update.py; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch new file mode 100644 index 000000000000..6b788f43d29c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch @@ -0,0 +1,17 @@ +--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig 2018-11-02 16:00:34.368933077 +0200 ++++ chromium-70.0.3538.67/build/compute_build_timestamp.py 2018-11-08 04:06:21.658105129 +0200 +@@ -94,6 +94,14 @@ + 'build_type', help='The type of build', choices=('official', 'default')) + args = argument_parser.parse_args() + ++ # I don't trust LASTCHANGE magic, and I definelly want something deterministic here ++ SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None) ++ if SOURCE_DATE_EPOCH is not None: ++ print(SOURCE_DATE_EPOCH) ++ return 0 ++ else: ++ raise RuntimeError("SOURCE_DATE_EPOCH not set") ++ + # The mtime of the revision in build/util/LASTCHANGE is stored in a file + # next to it. Read it, to get a deterministic time close to "now". + # That date is then modified as described at the top of the file so that diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch new file mode 100644 index 000000000000..32f0ae2fb5e6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn +index ed0e2f5208b..5b431a030d5 100644 +--- a/third_party/widevine/cdm/BUILD.gn ++++ b/third_party/widevine/cdm/BUILD.gn +@@ -14,7 +14,7 @@ buildflag_header("buildflags") { + + flags = [ + "ENABLE_WIDEVINE=$enable_widevine", +- "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm", ++ "BUNDLE_WIDEVINE_CDM=true", + "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component", + ] + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix new file mode 100644 index 000000000000..c725f87d3a27 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix @@ -0,0 +1,92 @@ +{ stdenv, gcc +, jshon +, glib +, nspr +, nss +, fetchzip +, enablePepperFlash ? false + +, upstream-info +}: + +with stdenv.lib; + +let + mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}"; + + # Generate a shell fragment that emits flags appended to the + # final makeWrapper call for wrapping the browser's main binary. + # + # Note that this is shell-escaped so that only the variable specified + # by the "output" attribute is substituted. + mkPluginInfo = { output ? "out", allowedVars ? [ output ] + , flags ? [], envVars ? {} + }: let + shSearch = ["'"] ++ map (var: "@${var}@") allowedVars; + shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars; + # We need to triple-escape "val": + # * First because makeWrapper doesn't do any quoting of its arguments by + # itself. + # * Second because it's passed to the makeWrapper call separated by IFS but + # not by the _real_ arguments, for example the Widevine plugin flags + # contain spaces, so they would end up as separate arguments. + # * Third in order to be correctly quoted for the "echo" call below. + shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'"; + mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'"; + mkFlag = flag: ["--add-flags" (shEsc flag)]; + mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)]; + envList = mapAttrsToList mkEnvVar envVars; + quoted = map mkSh (flatten ((map mkFlag flags) ++ envList)); + in '' + mkdir -p "''$${output}/nix-support" + echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags" + ''; + + flash = stdenv.mkDerivation rec { + pname = "flashplayer-ppapi"; + version = "32.0.0.445"; + + src = fetchzip { + url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; + sha256 = "1r9vd210d2qp501q40pjx60mzah08rg0f8jk5rpp52ddajwggalv"; + stripRoot = false; + }; + + patchPhase = '' + chmod +x libpepflashplayer.so + patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + installPhase = '' + flashVersion="$( + "${jshon}/bin/jshon" -F manifest.json -e version -u + )" + + install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so" + + ${mkPluginInfo { + allowedVars = [ "out" "flashVersion" ]; + flags = [ + "--ppapi-flash-path=@out@/lib/libpepflashplayer.so" + "--ppapi-flash-version=@flashVersion@" + ]; + }} + ''; + + dontStrip = true; + + meta = { + license = stdenv.lib.licenses.unfree; + maintainers = with stdenv.lib.maintainers; [ taku0 ]; + platforms = platforms.x86_64; + }; + }; + +in { + enabled = optional enablePepperFlash flash; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix new file mode 100644 index 000000000000..73c9796aaa96 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix @@ -0,0 +1,6 @@ +{ + "86.0.4240.183" = { + rev = "86.0.4240.183-1"; + sha256 = "0528l2wr5bpl1cwsxzl5zxz1gw91kffkh5j1kzmc5n7m4mscqxyc"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix new file mode 100644 index 000000000000..17418c90af49 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix @@ -0,0 +1,42 @@ +{ stdenv +, fetchFromGitHub +, python3Packages +, makeWrapper +, patch +}: +{ rev +, sha256 +}: + +stdenv.mkDerivation rec { + name = "ungoogled-chromium-${version}"; + + version = rev; + + src = fetchFromGitHub { + owner = "Eloston"; + repo = "ungoogled-chromium"; + inherit rev sha256; + }; + + dontBuild = true; + + buildInputs = [ + python3Packages.python + patch + ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + patchPhase = '' + sed -i '/chromium-widevine/d' patches/series + ''; + + installPhase = '' + mkdir $out + cp -R * $out/ + wrapProgram $out/utils/patches.py --add-flags "apply" --prefix PATH : "${patch}/bin" + ''; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.py b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.py new file mode 100755 index 000000000000..b404ca555bff --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/update.py @@ -0,0 +1,105 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i python -p python3 nix nix-prefetch-git + +import csv +import json +import re +import subprocess +import sys + +from codecs import iterdecode +from collections import OrderedDict +from datetime import datetime +from os.path import abspath, dirname +from urllib.request import urlopen + +HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux' +DEB_URL = 'https://dl.google.com/linux/chrome/deb/pool/main/g' +BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official' + +JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json' + +def load_json(path): + with open(path, 'r') as f: + return json.load(f) + +def nix_prefetch_url(url, algo='sha256'): + print(f'nix-prefetch-url {url}') + out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url]) + return out.decode('utf-8').rstrip() + +def nix_prefetch_git(url, rev): + print(f'nix-prefetch-git {url} {rev}') + out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev]) + return json.loads(out) + +def get_file_revision(revision, file_path): + url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}' + with urlopen(url) as http_response: + return http_response.read() + +def get_channel_dependencies(channel): + deps = get_file_revision(channel['version'], 'DEPS') + gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'" + gn_commit = re.search(gn_pattern, deps).group(1).decode() + gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit) + return { + 'gn': { + 'version': datetime.fromisoformat(gn['date']).date().isoformat(), + 'url': gn['url'], + 'rev': gn['rev'], + 'sha256': gn['sha256'] + } + } + +channels = {} +last_channels = load_json(JSON_PATH) + +print(f'GET {HISTORY_URL}', file=sys.stderr) +with urlopen(HISTORY_URL) as resp: + builds = csv.DictReader(iterdecode(resp, 'utf-8')) + for build in builds: + channel_name = build['channel'] + + # If we've already found a newer build for this channel, we're + # no longer interested in it. + if channel_name in channels: + continue + + # If we're back at the last build we used, we don't need to + # keep going -- there's no new version available, and we can + # just reuse the info from last time. + if build['version'] == last_channels[channel_name]['version']: + channels[channel_name] = last_channels[channel_name] + continue + + channel = {'version': build['version']} + suffix = 'unstable' if channel_name == 'dev' else channel_name + + try: + channel['sha256'] = nix_prefetch_url(f'{BUCKET_URL}/chromium-{build["version"]}.tar.xz') + channel['sha256bin64'] = nix_prefetch_url(f'{DEB_URL}/google-chrome-{suffix}/google-chrome-{suffix}_{build["version"]}-1_amd64.deb') + except subprocess.CalledProcessError: + # This build isn't actually available yet. Continue to + # the next one. + continue + + channel['deps'] = get_channel_dependencies(channel) + + channels[channel_name] = channel + +with open(JSON_PATH, 'w') as out: + def get_channel_key(item): + channel_name = item[0] + if channel_name == 'stable': + return 0 + elif channel_name == 'beta': + return 1 + elif channel_name == 'dev': + return 2 + else: + print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr) + sys.exit(1) + sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key)) + json.dump(sorted_channels, out, indent=2) + out.write('\n') diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json new file mode 100644 index 000000000000..565f884c5102 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json @@ -0,0 +1,41 @@ +{ + "stable": { + "version": "86.0.4240.183", + "sha256": "1g39i82js7fm4fqb8i66d6xs0kzqjxzi4vzvvwz5y9rkbikcc4ma", + "sha256bin64": "1r0dxqsx6j19hgwr3v2sdlb2vd7gb961c4wba4ymd8wy8j8pzly9", + "deps": { + "gn": { + "version": "2020-08-07", + "url": "https://gn.googlesource.com/gn", + "rev": "e327ffdc503815916db2543ec000226a8df45163", + "sha256": "0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr" + } + } + }, + "beta": { + "version": "87.0.4280.40", + "sha256": "07xh76fl257np68way6i5rf64qbvirkfddy7m5gvqb0fzcqd7dp3", + "sha256bin64": "1b2z0aqlh28pqrk6dmabxp1d4mvp9iyfmi4kqmns4cdpg0qgaf41", + "deps": { + "gn": { + "version": "2020-09-09", + "url": "https://gn.googlesource.com/gn", + "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2", + "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk" + } + } + }, + "dev": { + "version": "88.0.4300.0", + "sha256": "00cfs2rp4h8ybn2snr1d8ygg635hx7q5gv2aqriy1j6f8a1pgh1b", + "sha256bin64": "110r1m14h91212nx6pfhn8wkics7wlwx1608l5cqsxxcpvpzl3pv", + "deps": { + "gn": { + "version": "2020-09-09", + "url": "https://gn.googlesource.com/gn", + "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2", + "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk" + } + } + } +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix new file mode 100644 index 000000000000..099d81c99f80 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, pkgconfig, libsoup, webkitgtk, gtk3, glib-networking +, gsettings-desktop-schemas, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "vimb"; + version = "3.3.0"; + + src = fetchFromGitHub { + owner = "fanglingsu"; + repo = "vimb"; + rev = version; + sha256 = "1qg18z2gnsli9qgrqfhqfrsi6g9mcgr90w8yab28nxrq4aha6brf"; + }; + + nativeBuildInputs = [ wrapGAppsHook pkgconfig ]; + buildInputs = [ gtk3 libsoup webkitgtk glib-networking gsettings-desktop-schemas ]; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + meta = { + description = "A Vim-like browser"; + longDescription = '' + A fast and lightweight vim like web browser based on the webkit web + browser engine and the GTK toolkit. Vimb is modal like the great vim + editor and also easily configurable during runtime. Vimb is mostly + keyboard driven and does not detract you from your daily work. + ''; + homepage = "https://fanglingsu.github.io/vimb/"; + license = stdenv.lib.licenses.gpl3; + maintainers = []; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix new file mode 100644 index 000000000000..aa4dd7f8e443 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix @@ -0,0 +1,96 @@ +{ stdenv, fetchurl, zlib, libX11, libXext, libSM, libICE +, libXfixes, libXt, libXi, libXcursor, libXScrnSaver, libXcomposite, libXdamage, libXtst, libXrandr +, alsaLib, dbus, cups, libexif, ffmpeg_3, systemd +, freetype, fontconfig, libXft, libXrender, libxcb, expat +, libuuid +, libxml2 +, glib, gtk3, pango, gdk-pixbuf, cairo, atk, at-spi2-atk, at-spi2-core, gnome2 +, libdrm, mesa +, nss, nspr +, patchelf, makeWrapper +, isSnapshot ? false +, proprietaryCodecs ? false, vivaldi-ffmpeg-codecs ? null +, enableWidevine ? false, vivaldi-widevine ? null +}: + +let + branch = if isSnapshot then "snapshot" else "stable"; + vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi"; +in stdenv.mkDerivation rec { + pname = "vivaldi"; + version = "3.4.2066.90-1"; + + src = fetchurl { + url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb"; + sha256 = "059vcr2j0vr8szqcxfqnzxwy5i8z53g71fwhm22nc0477jbrsxz1"; + }; + + unpackPhase = '' + ar vx $src + tar -xvf data.tar.xz + ''; + + nativeBuildInputs = [ patchelf makeWrapper ]; + + buildInputs = [ + stdenv.cc.cc stdenv.cc.libc zlib libX11 libXt libXext libSM libICE libxcb + libXi libXft libXcursor libXfixes libXScrnSaver libXcomposite libXdamage libXtst libXrandr + atk at-spi2-atk at-spi2-core alsaLib dbus cups gtk3 gdk-pixbuf libexif ffmpeg_3 systemd + freetype fontconfig libXrender libuuid expat glib nss nspr + libxml2 pango cairo gnome2.GConf + libdrm mesa + ] ++ stdenv.lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs; + + libPath = stdenv.lib.makeLibraryPath buildInputs + + stdenv.lib.optionalString (stdenv.is64bit) + (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs) + + ":$out/opt/${vivaldiName}/lib"; + + buildPhase = '' + echo "Patching Vivaldi binaries" + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}" \ + opt/${vivaldiName}/vivaldi-bin + '' + stdenv.lib.optionalString proprietaryCodecs '' + ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/${vivaldiName}/libffmpeg.so.''${version%\.*\.*} + '' + '' + echo "Finished patching Vivaldi binaries" + ''; + + dontPatchELF = true; + dontStrip = true; + + installPhase = '' + mkdir -p "$out" + cp -r opt "$out" + mkdir "$out/bin" + ln -s "$out/opt/${vivaldiName}/${vivaldiName}" "$out/bin/vivaldi" + mkdir -p "$out/share" + cp -r usr/share/{applications,xfce4} "$out"/share + substituteInPlace "$out"/share/applications/*.desktop \ + --replace /usr/bin/${vivaldiName} "$out"/bin/vivaldi + substituteInPlace "$out"/share/applications/*.desktop \ + --replace vivaldi-stable vivaldi + local d + for d in 16 22 24 32 48 64 128 256; do + mkdir -p "$out"/share/icons/hicolor/''${d}x''${d}/apps + ln -s \ + "$out"/opt/${vivaldiName}/product_logo_''${d}.png \ + "$out"/share/icons/hicolor/''${d}x''${d}/apps/vivaldi.png + done + wrapProgram "$out/bin/vivaldi" \ + --suffix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/ \ + ${stdenv.lib.optionalString enableWidevine "--suffix LD_LIBRARY_PATH : ${libPath}"} + '' + stdenv.lib.optionalString enableWidevine '' + ln -sf ${vivaldi-widevine}/share/google/chrome/WidevineCdm $out/opt/${vivaldiName}/WidevineCdm + ''; + + meta = with stdenv.lib; { + description = "A Browser for our Friends, powerful and personal"; + homepage = "https://vivaldi.com"; + license = licenses.unfree; + maintainers = with maintainers; [ otwieracz badmutex ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix new file mode 100644 index 000000000000..2643bd3e58d9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl +, dpkg +}: + +stdenv.mkDerivation rec { + name = "chromium-codecs-ffmpeg"; + version = "78.0.3904.70"; + + src = fetchurl { + url = "https://launchpadlibrarian.net/449403909/${name}-extra_${version}-0ubuntu0.16.04.2_amd64.deb"; + sha256 = "00j604nm49z6hbyw7xsxcvmdjf7117kb478plkpizzvmm3w72b9v"; + }; + + buildInputs = [ dpkg ]; + + unpackPhase = '' + dpkg-deb -x $src . + find . + ''; + + installPhase = '' + install -vD usr/lib/chromium-browser/libffmpeg.so $out/lib/libffmpeg.so + ''; + + meta = with stdenv.lib; { + description = "Additional support for proprietary codecs for Vivaldi"; + homepage = "https://ffmpeg.org/"; + license = licenses.lgpl21; + maintainers = with maintainers; [ betaboon lluchs ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh new file mode 100755 index 000000000000..2e6c2853eb14 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p libarchive curl common-updater-scripts + +set -eu -o pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +root=../../../../.. +export NIXPKGS_ALLOW_UNFREE=1 + +version() { + (cd "$root" && nix-instantiate --eval --strict -A "$1.version" | tr -d '"') +} + +vivaldi_version_old=$(version vivaldi) +vivaldi_version=$(curl -sS https://vivaldi.com/download/ | sed -rne 's/.*vivaldi-stable_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+)_amd64\.deb.*/\1/p') + +if [[ "$vivaldi_version" = "$vivaldi_version_old" ]]; then + echo "vivaldi is already up-to-date" + exit +fi + +# Download vivaldi and save hash and file path. +url="https://downloads.vivaldi.com/stable/vivaldi-stable_${vivaldi_version}_amd64.deb" +mapfile -t prefetch < <(nix-prefetch-url --print-path "$url") +hash=${prefetch[0]} +path=${prefetch[1]} + +nixpkgs="$(git rev-parse --show-toplevel)" +default_nix="$nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix" +ffmpeg_nix="$nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix" + +(cd "$root" && update-source-version vivaldi "$vivaldi_version" "$hash") + +git add "${default_nix}" +git commit -m "vivaldi: ${vivaldi_version_old} -> ${vivaldi_version}" + +# Check vivaldi-ffmpeg-codecs version. +chromium_version_old=$(version vivaldi-ffmpeg-codecs) +chromium_version=$(bsdtar xOf "$path" data.tar.xz | bsdtar xOf - ./opt/vivaldi/vivaldi-bin | strings | grep '^[0-9]\{2,\}\.[0-9]\+\.[0-9]\{4,\}\+\.[0-9]\+$') + +if [[ "$chromium_version" != "$chromium_version_old" ]]; then + (cd "$root" && update-source-version vivaldi-ffmpeg-codecs "$chromium_version") + + git add "${ffmpeg_nix}" + git commit -m "vivaldi-ffmepg-codecs: $chromium_version_old -> $chromium_version" +fi diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix new file mode 100644 index 000000000000..6e807aac5df6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/vivaldi/widevine.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl +, unzip +}: + +stdenv.mkDerivation rec { + name = "widevine"; + version = "4.10.1582.1"; + + src = fetchurl { + url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip"; + sha256 = "0l743f2yyaq1vvc3iicajgnfpjxjsfvjcqvanndbxs23skgjcv6r"; + }; + + buildInputs = [ unzip ]; + + unpackPhase = '' + unzip $src + ''; + + installPhase = '' + install -vD manifest.json $out/share/google/chrome/WidevineCdm/manifest.json + install -vD LICENSE.txt $out/share/google/chrome/WidevineCdm/LICENSE.txt + install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so + ''; + + meta = with stdenv.lib; { + description = "Widevine support for Vivaldi"; + homepage = "https://www.widevine.com"; + license = licenses.unfree; + maintainers = with maintainers; [ betaboon ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch new file mode 100644 index 000000000000..49dd417d1c39 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch @@ -0,0 +1,11 @@ +--- a/url.c 2014-07-14 12:31:30.476563116 +0200 ++++ b/url.c 2014-07-14 12:32:16.364918248 +0200 +@@ -268,7 +268,7 @@ init_PRNG() + if (RAND_status()) + return; + if ((file = RAND_file_name(buffer, sizeof(buffer)))) { +-#ifdef USE_EGD ++#if defined(USE_EGD) && defined(HAVE_SSL_RAND_EGD) + if (RAND_egd(file) > 0) + return; + #endif diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix new file mode 100644 index 000000000000..a15d6844f56d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix @@ -0,0 +1,100 @@ +{ stdenv, fetchFromGitHub, fetchpatch +, ncurses, boehmgc, gettext, zlib +, sslSupport ? true, openssl ? null +, graphicsSupport ? !stdenv.isDarwin, imlib2 ? null +, x11Support ? graphicsSupport, libX11 ? null +, mouseSupport ? !stdenv.isDarwin, gpm-ncurses ? null +, perl, man, pkgconfig, buildPackages, w3m +}: + +assert sslSupport -> openssl != null; +assert graphicsSupport -> imlib2 != null; +assert x11Support -> graphicsSupport && libX11 != null; +assert mouseSupport -> gpm-ncurses != null; + +with stdenv.lib; + +let + mktable = buildPackages.stdenv.mkDerivation { + name = "w3m-mktable"; + inherit (w3m) src; + nativeBuildInputs = [ pkgconfig boehmgc ]; + makeFlags = [ "mktable" ]; + installPhase = '' + install -D mktable $out/bin/mktable + ''; + }; +in stdenv.mkDerivation rec { + pname = "w3m"; + version = "0.5.3+git20190105"; + + src = fetchFromGitHub { + owner = "tats"; + repo = pname; + rev = "v${version}"; + sha256 = "1fbg2p8qh2gvi3g4iz4q6vc0k70pf248r4yndi5lcn2m3mzvjx0i"; + }; + + NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl"; + + # we must set these so that the generated files (e.g. w3mhelp.cgi) contain + # the correct paths. + PERL = "${perl}/bin/perl"; + MAN = "${man}/bin/man"; + + makeFlags = [ "AR=${stdenv.cc.bintools.targetPrefix}ar" ]; + + patches = [ + ./RAND_egd.libressl.patch + (fetchpatch { + name = "https.patch"; + url = "https://aur.archlinux.org/cgit/aur.git/plain/https.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03"; + sha256 = "08skvaha1hjyapsh8zw5dgfy433mw2hk7qy9yy9avn8rjqj7kjxk"; + }) + ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ]; + + postPatch = optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + ln -s ${mktable}/bin/mktable mktable + # stop make from recompiling mktable + sed -ie 's!mktable.*:.*!mktable:!' Makefile.in + ''; + + nativeBuildInputs = [ pkgconfig gettext ]; + buildInputs = [ ncurses boehmgc zlib ] + ++ optional sslSupport openssl + ++ optional mouseSupport gpm-ncurses + ++ optional graphicsSupport imlib2 + ++ optional x11Support libX11; + + postInstall = optionalString graphicsSupport '' + ln -s $out/libexec/w3m/w3mimgdisplay $out/bin + ''; + + hardeningDisable = [ "format" ]; + + configureFlags = + [ "--with-ssl=${openssl.dev}" "--with-gc=${boehmgc.dev}" ] + ++ optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + "ac_cv_func_setpgrp_void=yes" + ] + ++ optional graphicsSupport "--enable-image=${optionalString x11Support "x11,"}fb"; + + preConfigure = '' + substituteInPlace ./configure --replace "/lib /usr/lib /usr/local/lib /usr/ucblib /usr/ccslib /usr/ccs/lib /lib64 /usr/lib64" /no-such-path + substituteInPlace ./configure --replace /usr /no-such-path + ''; + + enableParallelBuilding = false; + + # for w3mimgdisplay + # see: https://bbs.archlinux.org/viewtopic.php?id=196093 + LIBS = optionalString x11Support "-lX11"; + + meta = { + homepage = "http://w3m.sourceforge.net/"; + description = "A text-mode web browser"; + maintainers = [ maintainers.cstrahan ]; + platforms = stdenv.lib.platforms.unix; + license = stdenv.lib.licenses.mit; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch new file mode 100644 index 000000000000..0816c022926d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch @@ -0,0 +1,14 @@ +Forget about X11 in fb module. +This breaks w3mimgdisplay under X11, but removes X11 dependency it in pure fb. +diff --git a/w3mimg/fb/fb_imlib2.c b/w3mimg/fb/fb_imlib2.c +index 1a5151c..d3d7bc3 100644 +--- a/w3mimg/fb/fb_imlib2.c ++++ b/w3mimg/fb/fb_imlib2.c +@@ -3,6 +3,7 @@ + fb_imlib2.c 0.3 Copyright (C) 2002, hito + **************************************************************************/ + ++#define X_DISPLAY_MISSING + #include <Imlib2.h> + #include "fb.h" + #include "fb_img.h" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webbrowser/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webbrowser/default.nix new file mode 100644 index 000000000000..5190f1a7b534 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webbrowser/default.nix @@ -0,0 +1,108 @@ +{ stdenv, lib, fetchgit, makeDesktopItem, pkgconfig, makeWrapper +# Build +, python2, autoconf213, yasm, perl +, unzip, gnome2, gnum4 + +# Runtime +, xorg, zip, freetype, fontconfig, glibc, libffi +, dbus, dbus-glib, gtk2, alsaLib, jack2, ffmpeg +}: + +let + + libPath = lib.makeLibraryPath [ ffmpeg ]; + +in stdenv.mkDerivation rec { + pname = "webbrowser"; + version = "29.0.0rc1"; + + src = fetchgit { + url = "https://git.nuegia.net/webbrowser.git"; + rev = version; + sha256 = "1d82943mla6q3257081d946kgms91dg0n93va3zlzm9hbbqilzm6"; + fetchSubmodules = true; + }; + + desktopItem = makeDesktopItem { + name = "webbrowser"; + exec = "webbrowser %U"; + icon = "webbrowser"; + desktopName = "Web Browser"; + genericName = "Web Browser"; + categories = "Network;WebBrowser;"; + mimeType = lib.concatStringsSep ";" [ + "text/html" + "text/xml" + "application/xhtml+xml" + "application/vnd.mozilla.xul+xml" + "x-scheme-handler/http" + "x-scheme-handler/https" + ]; + }; + + nativeBuildInputs = [ + gnum4 makeWrapper perl pkgconfig python2 + ]; + + buildInputs = [ + alsaLib dbus dbus-glib ffmpeg fontconfig freetype yasm zip jack2 gtk2 + unzip gnome2.GConf xorg.libXt + ]; + + enableParallelBuilding = true; + + configurePhase = '' + export MOZCONFIG=$PWD/.mozconfig + export MOZ_NOSPAM=1 + + cp $src/doc/mozconfig.example $MOZCONFIG + # Need to modify it + chmod 644 $MOZCONFIG + + substituteInPlace $MOZCONFIG \ + --replace "mk_add_options PYTHON=/usr/bin/python2" "mk_add_options PYTHON=${python2}/bin/python2" \ + --replace "mk_add_options AUTOCONF=/usr/bin/autoconf-2.13" "mk_add_options AUTOCONF=${autoconf213}/bin/autoconf" \ + --replace 'mk_add_options MOZ_OBJDIR=$HOME/build/wbobjects/' "" \ + --replace "ac_add_options --x-libraries=/usr/lib64" "ac_add_options --x-libraries=${lib.makeLibraryPath [ xorg.libX11 ]}" \ + --replace "_BUILD_64=1" "_BUILD_64=${lib.optionalString stdenv.hostPlatform.is64bit "1"}" \ + --replace "--enable-ccache" "--disable-ccache" + + echo >> $MOZCONFIG ' + # + # NixOS-specific adjustments + # + + ac_add_options --prefix=$out + + mk_add_options MOZ_MAKE_FLAGS="-j$NIX_BUILD_CORES" + ' + ''; + + buildPhase = "$src/mach build"; + + installPhase = '' + $src/mach install + + mkdir -p $out/share/applications + cp ${desktopItem}/share/applications/* $out/share/applications + + for n in 16 32 48; do + size=$n"x"$n + mkdir -p $out/share/icons/hicolor/$size/apps + cp $src/webbrowser/branding/unofficial/default$n.png \ + $out/share/icons/hicolor/$size/apps/webbrowser.png + done + + # Needed to make videos work + wrapProgram $out/lib/webbrowser-${version}/webbrowser \ + --prefix LD_LIBRARY_PATH : "${libPath}" + ''; + + meta = with lib; { + description = "Generic web browser without trackers compatible with XUL plugins using UXP rendering engine"; + homepage = "https://git.nuegia.net/webbrowser.git/"; + license = [ licenses.mpl20 licenses.gpl3 ]; + maintainers = with maintainers; [ TheBrainScrambler ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix new file mode 100644 index 000000000000..7dbb6a3c5388 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/webmacs/default.nix @@ -0,0 +1,75 @@ +{ lib +, mkDerivationWith +, fetchFromGitHub +, python3Packages +, herbstluftwm +}: + +mkDerivationWith python3Packages.buildPythonApplication rec { + pname = "webmacs"; + version = "0.8"; + + disabled = python3Packages.isPy27; + + src = fetchFromGitHub { + owner = "parkouss"; + repo = "webmacs"; + rev = version; + fetchSubmodules = true; + sha256 = "1hzb9341hybgrqcy1w20hshm6xaiby4wbjpjkigf4zq389407368"; + }; + + propagatedBuildInputs = with python3Packages; [ + pyqtwebengine + setuptools + dateparser + jinja2 + pygments + ]; + + checkInputs = [ + python3Packages.pytest + #python3Packages.pytest-xvfb + #python3Packages.pytest-qt + python3Packages.pytestCheckHook + herbstluftwm + + # The following are listed in test-requirements.txt but appear not + # to be needed at present: + + # python3Packages.pytest-mock + # python3Packages.flake8 + ]; + + # See https://github.com/parkouss/webmacs/blob/1a04fb7bd3f33d39cb4d71621b48c2458712ed39/setup.py#L32 + # Don't know why they're using CC for g++. + preConfigure = '' + export CC=$CXX + ''; + + doCheck = false; # test dependencies not packaged up yet + + dontWrapQtApps = true; + + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; + + meta = with lib; { + description = "Keyboard-based web browser with Emacs/conkeror heritage"; + longDescription = '' + webmacs is yet another browser for keyboard-based web navigation. + + It mainly targets emacs-like navigation, and started as a clone (in terms of + features) of conkeror. + + Based on QtWebEngine and Python 3. Fully customizable in Python. + ''; + homepage = "https://webmacs.readthedocs.io/en/latest/"; + changelog = "https://github.com/parkouss/webmacs/blob/master/CHANGELOG.md"; + license = licenses.gpl3; + maintainers = with maintainers; [ jacg ]; + platforms = platforms.all; + }; + +} |