uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
44
pkgs/applications/networking/3proxy/default.nix
Normal file
44
pkgs/applications/networking/3proxy/default.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ lib, stdenv, fetchFromGitHub, nixosTests }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "3proxy";
|
||||
version = "0.9.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "3proxy";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-4bLlQ/ULvpjs6fr19yBBln5mRRc+yj+zVLiTs1e/Ypc=";
|
||||
};
|
||||
|
||||
# They use 'install -s', that calls the native strip instead of the cross.
|
||||
# Don't strip binary on install, we strip it on fixup phase anyway.
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile.Linux \
|
||||
--replace "(INSTALL_BIN) -s" "(INSTALL_BIN)" \
|
||||
--replace "/usr" ""
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"-f Makefile.Linux"
|
||||
"INSTALL=install"
|
||||
"DESTDIR=${placeholder "out"}"
|
||||
"CC:=$(CC)"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
rm -fr $out/var
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
smoke-test = nixosTests._3proxy;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tiny free proxy server";
|
||||
homepage = "https://github.com/3proxy/3proxy";
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ misuzu ];
|
||||
};
|
||||
}
|
||||
31
pkgs/applications/networking/Sylk/default.nix
Normal file
31
pkgs/applications/networking/Sylk/default.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{ appimageTools, fetchurl, lib }:
|
||||
|
||||
let
|
||||
pname = "Sylk";
|
||||
version = "3.0.1";
|
||||
in
|
||||
|
||||
appimageTools.wrapType2 rec {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage";
|
||||
hash = "sha256-VgepO7LHFmNKq/H0RFcIkafgtiVGt8K/LdiCO5Dw2s4=";
|
||||
};
|
||||
|
||||
profile = ''
|
||||
export LC_ALL=C.UTF-8
|
||||
'';
|
||||
|
||||
multiPkgs = null; # no 32bit needed
|
||||
extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
|
||||
extraInstallCommands = "mv $out/bin/{${name},${pname}}";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Sylk WebRTC client";
|
||||
homepage = "https://sylkserver.com/";
|
||||
license = licenses.agpl3Plus;
|
||||
maintainers = with maintainers; [ zimbatm ];
|
||||
platforms = [ "i386-linux" "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
111
pkgs/applications/networking/aether/default.nix
Normal file
111
pkgs/applications/networking/aether/default.nix
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
{ autoPatchelfHook, makeDesktopItem, lib, stdenv, wrapGAppsHook
|
||||
, alsa-lib, at-spi2-atk, at-spi2-core, atk, cairo, cups, dbus, expat, fontconfig
|
||||
, freetype, gdk-pixbuf, glib, gtk3, libcxx, libdrm, libnotify, libpulseaudio, libuuid
|
||||
, libX11, libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext
|
||||
, libXfixes, libXi, libXrandr, libXrender, libXtst, libxcb, libxshmfence
|
||||
, mesa, nspr, nss, pango, systemd, libappindicator-gtk3, libdbusmenu
|
||||
, fetchurl, fetchFromGitHub, imagemagick, copyDesktopItems
|
||||
}:
|
||||
|
||||
let
|
||||
binaryName = "AetherP2P";
|
||||
aether-app-git = fetchFromGitHub {
|
||||
owner = "aethereans";
|
||||
repo = "aether-app";
|
||||
rev = "53b6c8b2a9253cbf056ea3ebb077e0e08cbc5b1d";
|
||||
sha256 = "1kgkzh7ih2q9dsckdkinh5dbzvr7gdykf8yz6h8pyhvzyjhk1v0r";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "aether";
|
||||
version = "2.0.0-dev.15";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://static.getaether.net/Releases/Aether-${version}/2011262249.19338c93/linux/Aether-${version}%2B2011262249.19338c93.tar.gz";
|
||||
sha256 = "1hi8w83zal3ciyzg2m62shkbyh6hj7gwsidg3dn88mhfy68himf7";
|
||||
# % in the url / canonical filename causes an error
|
||||
name = "aether-tarball.tar.gz";
|
||||
};
|
||||
|
||||
# there is no logo in the tarball so we grab it from github and convert it in the build phase
|
||||
buildPhase = ''
|
||||
convert ${aether-app-git}/aether-core/aether/client/src/app/ext_dep/images/Linux-Windows-App-Icon.png -resize 512x512 aether.png
|
||||
'';
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
cups
|
||||
libdrm
|
||||
libuuid
|
||||
libXdamage
|
||||
libX11
|
||||
libXScrnSaver
|
||||
libXtst
|
||||
libxcb
|
||||
libxshmfence
|
||||
mesa
|
||||
nss
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
imagemagick
|
||||
autoPatchelfHook
|
||||
wrapGAppsHook
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = pname;
|
||||
exec = binaryName;
|
||||
icon = pname;
|
||||
desktopName = "Aether";
|
||||
genericName = meta.description;
|
||||
categories = [ "Network" ];
|
||||
mimeTypes = [ "x-scheme-handler/aether" ];
|
||||
})
|
||||
];
|
||||
|
||||
installPhase =
|
||||
let
|
||||
libPath = lib.makeLibraryPath [
|
||||
libcxx systemd libpulseaudio libdrm mesa
|
||||
stdenv.cc.cc alsa-lib atk at-spi2-atk at-spi2-core cairo cups dbus expat fontconfig freetype
|
||||
gdk-pixbuf glib gtk3 libnotify libX11 libXcomposite libuuid
|
||||
libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
|
||||
libXtst nspr nss libxcb pango systemd libXScrnSaver
|
||||
libappindicator-gtk3 libdbusmenu
|
||||
];
|
||||
in
|
||||
''
|
||||
mkdir -p $out/{bin,opt/${binaryName},share/icons/hicolor/512x512/apps}
|
||||
mv * $out/opt/${binaryName}
|
||||
|
||||
chmod +x $out/opt/${binaryName}/${binaryName}
|
||||
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
|
||||
$out/opt/${binaryName}/${binaryName}
|
||||
|
||||
wrapProgram $out/opt/${binaryName}/${binaryName} \
|
||||
"''${gappsWrapperArgs[@]}" \
|
||||
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}" \
|
||||
--prefix LD_LIBRARY_PATH : ${libPath}
|
||||
|
||||
ln -s $out/opt/${binaryName}/${binaryName} $out/bin/
|
||||
|
||||
ln -s $out/opt/${binaryName}/aether.png $out/share/icons/hicolor/512x512/apps/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Peer-to-peer ephemeral public communities";
|
||||
homepage = "https://getaether.net/";
|
||||
downloadPage = "https://getaether.net/download/";
|
||||
license = licenses.agpl3Only;
|
||||
maintainers = with maintainers; [ maxhille ];
|
||||
# other platforms could be supported by building from source
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
34
pkgs/applications/networking/alpnpass/default.nix
Normal file
34
pkgs/applications/networking/alpnpass/default.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{ buildGoModule
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "alpnpass";
|
||||
version = "0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VerSprite";
|
||||
repo = "alpnpass";
|
||||
rev = version;
|
||||
hash = "sha256-hNZqGTV17rFSKLhZzNqH2E4SSb6Jhk7YQ4TN0HnE+9g=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Inspect the plaintext payload inside of proxied TLS connections";
|
||||
longDescription = ''
|
||||
This tool will listen on a given port, strip SSL encryption,
|
||||
forward traffic through a plain TCP proxy,
|
||||
then encrypt the returning traffic again
|
||||
and send it to the target of your choice.
|
||||
|
||||
Unlike most SSL stripping solutions this tool will negotiate ALPN and
|
||||
preserve the negotiated protocol all the way to the target.
|
||||
'';
|
||||
homepage = "https://github.com/VerSprite/alpnpass";
|
||||
license = licenses.unlicense;
|
||||
maintainers = [ maintainers.raboof ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
{ lib, stdenv, fetchurl, jdk, makeWrapper, autoPatchelfHook, makeDesktopItem, glib, libsecret }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "apache-directory-studio";
|
||||
version = "2.0.0-M17";
|
||||
versionWithDate = "2.0.0.v20210717-M17";
|
||||
|
||||
src =
|
||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "mirror://apache/directory/studio/${versionWithDate}/ApacheDirectoryStudio-${versionWithDate}-linux.gtk.x86_64.tar.gz";
|
||||
sha256 = "19zdspzv4n3mfgb1g45s3wh0vbvn6a9zjd4xi5x2afmdjkzlwxi4";
|
||||
}
|
||||
else throw "Unsupported system: ${stdenv.hostPlatform.system}";
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "apache-directory-studio";
|
||||
exec = "ApacheDirectoryStudio";
|
||||
icon = "apache-directory-studio";
|
||||
comment = "Eclipse-based LDAP browser and directory client";
|
||||
desktopName = "Apache Directory Studio";
|
||||
genericName = "Apache Directory Studio";
|
||||
categories = [ "Java" "Network" ];
|
||||
};
|
||||
|
||||
buildInputs = [ glib libsecret ];
|
||||
nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
|
||||
|
||||
installPhase = ''
|
||||
dest="$out/libexec/ApacheDirectoryStudio"
|
||||
mkdir -p "$dest"
|
||||
cp -r . "$dest"
|
||||
|
||||
mkdir -p "$out/bin"
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
"$dest/ApacheDirectoryStudio"
|
||||
|
||||
makeWrapper "$dest/ApacheDirectoryStudio" \
|
||||
"$out/bin/ApacheDirectoryStudio" \
|
||||
--prefix PATH : "${jdk}/bin"
|
||||
install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm"
|
||||
install -D -t "$out/share/applications" ${desktopItem}/share/applications/*
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Eclipse-based LDAP browser and directory client";
|
||||
homepage = "https://directory.apache.org/studio/";
|
||||
license = licenses.asl20;
|
||||
# Upstream supports macOS and Windows too.
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.bjornfor ];
|
||||
};
|
||||
}
|
||||
158
pkgs/applications/networking/appgate-sdp/default.nix
Normal file
158
pkgs/applications/networking/appgate-sdp/default.nix
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
{ alsa-lib
|
||||
, at-spi2-atk
|
||||
, at-spi2-core
|
||||
, atk
|
||||
, autoPatchelfHook
|
||||
, cairo
|
||||
, cups
|
||||
, curl
|
||||
, dbus
|
||||
, dnsmasq
|
||||
, dpkg
|
||||
, expat
|
||||
, fetchurl
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, gtk3
|
||||
, icu
|
||||
, iproute2
|
||||
, krb5
|
||||
, lib
|
||||
, libdrm
|
||||
, libsecret
|
||||
, libuuid
|
||||
, libxcb
|
||||
, libxkbcommon
|
||||
, lttng-ust
|
||||
, makeWrapper
|
||||
, mesa
|
||||
, networkmanager
|
||||
, nspr
|
||||
, nss
|
||||
, openssl
|
||||
, pango
|
||||
, procps
|
||||
, python3
|
||||
, stdenv
|
||||
, systemd
|
||||
, xdg-utils
|
||||
, xorg
|
||||
, zlib
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
deps = [
|
||||
alsa-lib
|
||||
at-spi2-atk
|
||||
at-spi2-core
|
||||
atk
|
||||
cairo
|
||||
cups
|
||||
curl
|
||||
dbus
|
||||
expat
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk3
|
||||
icu
|
||||
krb5
|
||||
libdrm
|
||||
libsecret
|
||||
libuuid
|
||||
libxcb
|
||||
libxkbcommon
|
||||
lttng-ust
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
openssl
|
||||
pango
|
||||
stdenv.cc.cc
|
||||
systemd
|
||||
xorg.libX11
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXcomposite
|
||||
xorg.libXcursor
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXtst
|
||||
xorg.libxkbfile
|
||||
xorg.libxshmfence
|
||||
zlib
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "appgate-sdp";
|
||||
version = "5.5.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://bin.appgate-sdp.com/${versions.majorMinor version}/client/appgate-sdp_${version}_amd64.deb";
|
||||
sha256 = "sha256-7qfgUYD7uPb+ZEierREVfnHoGz0/b/J+hcsX/duDFWU=";
|
||||
};
|
||||
|
||||
# just patch interpreter
|
||||
autoPatchelfIgnoreMissingDeps = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
buildInputs = [
|
||||
python3
|
||||
python3.pkgs.dbus-python
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
dpkg
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
dpkg-deb -x $src $out
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -r $out/usr/share $out/share
|
||||
|
||||
substituteInPlace $out/lib/systemd/system/appgate-dumb-resolver.service \
|
||||
--replace "/opt/" "$out/opt/"
|
||||
|
||||
substituteInPlace $out/lib/systemd/system/appgatedriver.service \
|
||||
--replace "/opt/" "$out/opt/" \
|
||||
--replace "InaccessiblePaths=/mnt /srv /boot /media" "InaccessiblePaths=-/mnt -/srv -/boot -/media"
|
||||
|
||||
substituteInPlace $out/lib/systemd/system/appgate-resolver.service \
|
||||
--replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq" \
|
||||
--replace "/opt/" "$out/opt/"
|
||||
|
||||
substituteInPlace $out/opt/appgate/linux/nm.py \
|
||||
--replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq"
|
||||
|
||||
substituteInPlace $out/opt/appgate/linux/set_dns \
|
||||
--replace "/etc/appgate.conf" "$out/etc/appgate.conf"
|
||||
|
||||
wrapProgram $out/opt/appgate/service/createdump \
|
||||
--set LD_LIBRARY_PATH "${makeLibraryPath [ stdenv.cc.cc ]}"
|
||||
|
||||
wrapProgram $out/opt/appgate/appgate-driver \
|
||||
--prefix PATH : ${makeBinPath [ iproute2 networkmanager dnsmasq ]} \
|
||||
--set LD_LIBRARY_PATH $out/opt/appgate/service
|
||||
|
||||
makeWrapper $out/opt/appgate/Appgate $out/bin/appgate \
|
||||
--prefix PATH : ${makeBinPath [ xdg-utils ]} \
|
||||
--set LD_LIBRARY_PATH $out/opt/appgate:${makeLibraryPath deps}
|
||||
|
||||
wrapProgram $out/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Appgate SDP (Software Defined Perimeter) desktop client";
|
||||
homepage = "https://www.appgate.com/support/software-defined-perimeter-support";
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ ymatsiuk ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 04933c578f51aa1f536991318dc5aede57f81c0d Mon Sep 17 00:00:00 2001
|
||||
From: Attila Lendvai <attila@lendvai.name>
|
||||
Date: Sat, 30 Jan 2021 14:02:02 +0100
|
||||
Subject: [PATCH 1/2] clef-service: accept default CONFIGDIR from the
|
||||
environment
|
||||
|
||||
---
|
||||
packaging/bee-clef-service | 15 ++++++++++-----
|
||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/packaging/bee-clef-service b/packaging/bee-clef-service
|
||||
index 10bcd92..34c7edd 100755
|
||||
--- a/packaging/bee-clef-service
|
||||
+++ b/packaging/bee-clef-service
|
||||
@@ -1,16 +1,21 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
start() {
|
||||
- KEYSTORE=/var/lib/bee-clef/keystore
|
||||
- CONFIGDIR=/var/lib/bee-clef
|
||||
+ if [ -z "$CONFIGDIR" ]; then
|
||||
+ CONFIGDIR=/var/lib/bee-clef
|
||||
+ fi
|
||||
+ if [ -z "$PASSWORD_FILE" ]; then
|
||||
+ PASSWORD_FILE=${CONFIGDIR}/password
|
||||
+ fi
|
||||
+ KEYSTORE=${CONFIGDIR}/keystore
|
||||
+ SECRET=$(cat ${PASSWORD_FILE})
|
||||
CHAINID=5
|
||||
- SECRET=$(cat /var/lib/bee-clef/password)
|
||||
# clef with every start sets permissions back to 600
|
||||
- (sleep 4; chmod 660 /var/lib/bee-clef/clef.ipc) &
|
||||
+ (sleep 4; chmod 660 ${CONFIGDIR}/clef.ipc) &
|
||||
( sleep 2; cat << EOF
|
||||
{ "jsonrpc": "2.0", "id":1, "result": { "text":"$SECRET" } }
|
||||
EOF
|
||||
-) | clef --stdio-ui --keystore $KEYSTORE --configdir $CONFIGDIR --chainid $CHAINID --rules /etc/bee-clef/rules.js --nousb --4bytedb-custom /etc/bee-clef/4byte.json --pcscdpath "" --auditlog "" --loglevel 3 --ipcpath /var/lib/bee-clef
|
||||
+) | clef --stdio-ui --keystore $KEYSTORE --configdir $CONFIGDIR --chainid $CHAINID --rules /etc/bee-clef/rules.js --nousb --4bytedb-custom /etc/bee-clef/4byte.json --pcscdpath "" --auditlog "" --loglevel 3 --ipcpath ${CONFIGDIR}
|
||||
}
|
||||
|
||||
stop() {
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From 1a1ab986245e8b74648a1a0adb5d1c7019561d18 Mon Sep 17 00:00:00 2001
|
||||
From: Attila Lendvai <attila@lendvai.name>
|
||||
Date: Sat, 30 Jan 2021 15:24:57 +0100
|
||||
Subject: [PATCH 2/2] nix diff for substituteAll
|
||||
|
||||
---
|
||||
packaging/bee-clef-service | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/packaging/bee-clef-service b/packaging/bee-clef-service
|
||||
index 34c7edd..31e9d95 100755
|
||||
--- a/packaging/bee-clef-service
|
||||
+++ b/packaging/bee-clef-service
|
||||
@@ -15,7 +15,7 @@ start() {
|
||||
( sleep 2; cat << EOF
|
||||
{ "jsonrpc": "2.0", "id":1, "result": { "text":"$SECRET" } }
|
||||
EOF
|
||||
-) | clef --stdio-ui --keystore $KEYSTORE --configdir $CONFIGDIR --chainid $CHAINID --rules /etc/bee-clef/rules.js --nousb --4bytedb-custom /etc/bee-clef/4byte.json --pcscdpath "" --auditlog "" --loglevel 3 --ipcpath ${CONFIGDIR}
|
||||
+) | @clefBinary@ --stdio-ui --keystore $KEYSTORE --configdir $CONFIGDIR --chainid $CHAINID --rules @out@/share/bee-clef/rules.js --nousb --4bytedb-custom @out@/share/bee-clef/4byte.json --pcscdpath "" --auditlog "" --loglevel 3 --ipcpath ${CONFIGDIR}
|
||||
}
|
||||
|
||||
stop() {
|
||||
--
|
||||
2.29.2
|
||||
|
||||
57
pkgs/applications/networking/bee/bee-clef.nix
Normal file
57
pkgs/applications/networking/bee/bee-clef.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{ version ? "release", stdenv, lib, fetchFromGitHub, go-ethereum }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bee-clef";
|
||||
version = "0.4.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethersphere";
|
||||
repo = "bee-clef";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1sfwql0kvnir8b9ggpqcyc0ar995gxgfbhqb1xpfzp6wl0g3g4zz";
|
||||
};
|
||||
|
||||
buildInputs = [ go-ethereum ];
|
||||
|
||||
clefBinary = "${go-ethereum}/bin/clef";
|
||||
|
||||
patches = [
|
||||
./0001-clef-service-accept-default-CONFIGDIR-from-the-envir.patch
|
||||
./0002-nix-diff-for-substituteAll.patch
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin/
|
||||
mkdir -p $out/share/bee-clef/
|
||||
mkdir -p $out/lib/systemd/system/
|
||||
cp packaging/bee-clef.service $out/lib/systemd/system/
|
||||
substituteAll packaging/bee-clef-service $out/share/bee-clef/bee-clef-service
|
||||
substituteAll ${./ensure-clef-account} $out/share/bee-clef/ensure-clef-account
|
||||
substituteAll packaging/bee-clef-keys $out/bin/bee-clef-keys
|
||||
cp packaging/rules.js packaging/4byte.json $out/share/bee-clef/
|
||||
chmod +x $out/bin/bee-clef-keys
|
||||
chmod +x $out/share/bee-clef/bee-clef-service
|
||||
chmod +x $out/share/bee-clef/ensure-clef-account
|
||||
patchShebangs $out/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
# homepage = "https://gateway.ethswarm.org/bzz/docs.swarm.eth/docs/installation/bee-clef/";
|
||||
homepage = "https://docs.ethswarm.org/docs/installation/bee-clef";
|
||||
description = "External signer for Ethereum Swarm Bee";
|
||||
longDescription = ''
|
||||
clef is go-ethereum's external signer.
|
||||
|
||||
bee-clef is a package that starts up a vanilla clef instance as a systemd service,
|
||||
but configured in such a way that is suitable for bee (relaxed security for
|
||||
automated operation).
|
||||
|
||||
This package contains the files necessary to run the bee-clef service.
|
||||
'';
|
||||
license = with licenses; [ bsd3 ];
|
||||
maintainers = with maintainers; [ attila-lendvai ];
|
||||
platforms = go-ethereum.meta.platforms;
|
||||
};
|
||||
}
|
||||
75
pkgs/applications/networking/bee/bee.nix
Normal file
75
pkgs/applications/networking/bee/bee.nix
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{ version ? "release", lib, fetchFromGitHub, buildGoModule }:
|
||||
|
||||
let
|
||||
|
||||
versionSpec = rec {
|
||||
unstable = rec {
|
||||
pname = "bee-unstable";
|
||||
version = "2021-01-30";
|
||||
rev = "824636a2c2629c329ab10275cef6a0b7395343ad";
|
||||
goVersionString = "g" + builtins.substring 0 7 rev; # this seems to be some kind of standard of git describe...
|
||||
sha256 = "0ly1yqjq29arbak8lchdradf39l5bmxpbfir6ljjc7nyqdxz0sxg";
|
||||
vendorSha256 = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
};
|
||||
release = rec {
|
||||
pname = "bee";
|
||||
version = "0.5.0";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "sha256-3Oy9RhgMPRFjUs3Dj8XUhAqoxx5BTi32OiK4Y8YEG2Q=";
|
||||
vendorSha256 = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
};
|
||||
"0.5.0" = release;
|
||||
"0.4.1" = rec {
|
||||
pname = "bee";
|
||||
version = "0.4.1";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1bmgbav52pcb5p7cgq9756512fzfqhjybyr0dv538plkqx47mpv7";
|
||||
vendorSha256 = "0j393va4jrg9q3wlc9mgkbpgnn2w2s3k2hcn8phzj8d5fl4n4v2h";
|
||||
};
|
||||
}.${version};
|
||||
|
||||
in
|
||||
|
||||
buildGoModule {
|
||||
inherit (versionSpec) pname version vendorSha256;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethersphere";
|
||||
repo = "bee";
|
||||
inherit (versionSpec) rev sha256;
|
||||
};
|
||||
|
||||
subPackages = [ "cmd/bee" ];
|
||||
|
||||
# no symbol table, no debug info, and pass the commit for the version string
|
||||
ldflags = lib.optionals ( lib.hasAttr "goVersionString" versionSpec)
|
||||
[ "-s" "-w" "-X=github.com/ethersphere/bee.commit=${versionSpec.goVersionString}" ];
|
||||
|
||||
# Mimic the bee Makefile: without disabling CGO, two (transitive and
|
||||
# unused) dependencies would fail to compile.
|
||||
preBuild = ''
|
||||
export CGO_ENABLED=0
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/lib/systemd/system
|
||||
cp packaging/bee.service $out/lib/systemd/system/
|
||||
cp packaging/bee-get-addr $out/bin/
|
||||
chmod +x $out/bin/bee-get-addr
|
||||
patchShebangs $out/bin/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/ethersphere/bee";
|
||||
description = "Ethereum Swarm Bee";
|
||||
longDescription = ''
|
||||
A decentralised storage and communication system for a sovereign digital society.
|
||||
|
||||
Swarm is a system of peer-to-peer networked nodes that create a decentralised storage and communication service. The system is economically self-sustaining due to a built-in incentive system enforced through smart contracts on the Ethereum blockchain.
|
||||
|
||||
Bee is a Swarm node implementation, written in Go.
|
||||
'';
|
||||
license = with licenses; [ bsd3 ];
|
||||
maintainers = with maintainers; [ attila-lendvai ];
|
||||
};
|
||||
}
|
||||
47
pkgs/applications/networking/bee/ensure-clef-account
Normal file
47
pkgs/applications/networking/bee/ensure-clef-account
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
set -e
|
||||
|
||||
# NOTE This file is called by the systemd service in its preStart
|
||||
# hook, but it's not Nix specific in any way. Ideally, the same file
|
||||
# should be called from the postinst scripts of the other packages,
|
||||
# but... the world is not ideal.
|
||||
|
||||
# What follows was extracted from, and should be in sync with
|
||||
# https://github.com/ethersphere/bee-clef/tree/master/packaging
|
||||
|
||||
DATA_DIR="$1"
|
||||
CONFIG_DIR="$2"
|
||||
PASSWORD_FILE=${DATA_DIR}/password
|
||||
MASTERSEED=${DATA_DIR}/masterseed.json
|
||||
KEYSTORE=${DATA_DIR}/keystore
|
||||
|
||||
echo "ensure-clef-account $DATA_DIR $CONFIG_DIR"
|
||||
|
||||
if ! test -f ${PASSWORD_FILE}; then
|
||||
< /dev/urandom tr -dc _A-Z-a-z-0-9 2> /dev/null | head -c32 > ${PASSWORD_FILE}
|
||||
chmod 0400 ${PASSWORD_FILE}
|
||||
echo "Initialized ${PASSWORD_FILE} from /dev/urandom"
|
||||
fi
|
||||
|
||||
if ! test -f ${MASTERSEED}; then
|
||||
parse_json() { echo $1|sed -e 's/[{}]/''/g'|sed -e 's/", "/'\",\"'/g'|sed -e 's/" ,"/'\",\"'/g'|sed -e 's/" , "/'\",\"'/g'|sed -e 's/","/'\"---SEPERATOR---\"'/g'|awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}"|sed -e "s/\"$2\"://"|tr -d "\n\t"|sed -e 's/\\"/"/g'|sed -e 's/\\\\/\\/g'|sed -e 's/^[ \t]*//g'|sed -e 's/^"//' -e 's/"$//' ; }
|
||||
SECRET=$(cat ${PASSWORD_FILE})
|
||||
CLEF="@clefBinary@ --configdir ${DATA_DIR} --keystore ${KEYSTORE} --stdio-ui"
|
||||
$CLEF init >/dev/null << EOF
|
||||
$SECRET
|
||||
$SECRET
|
||||
EOF
|
||||
$CLEF newaccount >/dev/null << EOF
|
||||
$SECRET
|
||||
EOF
|
||||
$CLEF setpw 0x$(parse_json $(cat ${KEYSTORE}/*) address) >/dev/null << EOF
|
||||
$SECRET
|
||||
$SECRET
|
||||
$SECRET
|
||||
EOF
|
||||
$CLEF attest $(sha256sum ${CONFIG_DIR}/rules.js | cut -d' ' -f1 | tr -d '\n') >/dev/null << EOF
|
||||
$SECRET
|
||||
EOF
|
||||
echo "Clef data dir initialized"
|
||||
fi
|
||||
33
pkgs/applications/networking/blocky/default.nix
Normal file
33
pkgs/applications/networking/blocky/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{ buildGoModule
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
, nixosTests
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "blocky";
|
||||
version = "0.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "0xERR0R";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-rFHDoNrEmMSNEc3RLdSeRk9mF05drUYfJFQKHAk5alE=";
|
||||
};
|
||||
|
||||
# needs network connection and fails at
|
||||
# https://github.com/0xERR0R/blocky/blob/development/resolver/upstream_resolver_test.go
|
||||
doCheck = false;
|
||||
|
||||
vendorSha256 = "sha256-rrqDjh5e3KX5+saYjnMPG0bhr5YEOPfz0QCRf6omNZI=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Fast and lightweight DNS proxy as ad-blocker for local network with many features.";
|
||||
homepage = "https://0xerr0r.github.io/blocky";
|
||||
changelog = "https://github.com/0xERR0R/blocky/releases";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ ratsclub ];
|
||||
};
|
||||
|
||||
passthru.tests = { inherit (nixosTests) blocky; };
|
||||
}
|
||||
93
pkgs/applications/networking/breitbandmessung/default.nix
Normal file
93
pkgs/applications/networking/breitbandmessung/default.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, dpkg
|
||||
, electron_16
|
||||
, makeWrapper
|
||||
, nixosTests
|
||||
, nodePackages
|
||||
, undmg
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
||||
version = "3.1.0";
|
||||
|
||||
systemArgs = rec {
|
||||
x86_64-linux = rec {
|
||||
src = fetchurl {
|
||||
url = "https://download.breitbandmessung.de/bbm/Breitbandmessung-${version}-linux.deb";
|
||||
sha256 = "sha256-jSP+H9ej9Wd+swBZSy9uMi2ExSTZ191FGZhqaocTl7w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
makeWrapper
|
||||
nodePackages.asar
|
||||
];
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mv usr/share $out/share
|
||||
mkdir -p $out/share/breitbandmessung/resources
|
||||
|
||||
asar e opt/Breitbandmessung/resources/app.asar $out/share/breitbandmessung/resources
|
||||
|
||||
# At first start, the program checks for supported operating systems by using the `bizzby-lsb-release`
|
||||
# module and only runs when it finds Debian/Ubuntu. So we present us as Debian and make it happy.
|
||||
cat <<EOF > $out/share/breitbandmessung/resources/node_modules/bizzby-lsb-release/lib/lsb-release.js
|
||||
module.exports = function release() {
|
||||
return {
|
||||
distributorID: "Debian",
|
||||
description: "Debian GNU/Linux 10 (buster)",
|
||||
release: "10",
|
||||
codename: "buster"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
makeWrapper ${electron_16}/bin/electron $out/bin/breitbandmessung \
|
||||
--add-flags $out/share/breitbandmessung/resources/build/electron.js
|
||||
|
||||
# Fix the desktop link
|
||||
substituteInPlace $out/share/applications/breitbandmessung.desktop \
|
||||
--replace /opt/Breitbandmessung $out/bin
|
||||
'';
|
||||
};
|
||||
|
||||
x86_64-darwin = {
|
||||
src = fetchurl {
|
||||
url = "https://download.breitbandmessung.de/bbm/Breitbandmessung-${version}-mac.dmg";
|
||||
sha256 = "sha256-2c8mDKJuHDSw7p52EKnJO5vr2kNTLU6r9pmGPANjE20=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ undmg ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/Applications/Breitbandmessung.app
|
||||
cp -R . $out/Applications/Breitbandmessung.app
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
aarch64-darwin = x86_64-darwin;
|
||||
}.${system} or { src = throw "Unsupported system: ${system}"; };
|
||||
in
|
||||
stdenv.mkDerivation ({
|
||||
pname = "breitbandmessung";
|
||||
inherit version;
|
||||
|
||||
passthru.tests = { inherit (nixosTests) breitbandmessung; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Broadband internet speed test app from the german Bundesnetzagentur";
|
||||
homepage = "https://www.breitbandmessung.de";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ b4dm4n ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||
};
|
||||
} // systemArgs)
|
||||
25
pkgs/applications/networking/brig/default.nix
Normal file
25
pkgs/applications/networking/brig/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, buildGoPackage, fetchFromGitHub }:
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "brig";
|
||||
version = "0.4.1";
|
||||
rev = "v${version}";
|
||||
|
||||
goPackagePath = "github.com/sahib/brig";
|
||||
subPackages = ["."];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sahib";
|
||||
repo = "brig";
|
||||
inherit rev;
|
||||
sha256 = "0gi39jmnzqrgj146yw8lcmgmvzx7ii1dgw4iqig7kx8c0jiqi600";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "File synchronization on top of ipfs with git like interface and FUSE filesystem";
|
||||
homepage = "https://github.com/sahib/brig";
|
||||
license = licenses.agpl3;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ offline ];
|
||||
};
|
||||
}
|
||||
28
pkgs/applications/networking/browsers/amfora/default.nix
Normal file
28
pkgs/applications/networking/browsers/amfora/default.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ stdenv, lib, fetchFromGitHub, buildGoModule }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "amfora";
|
||||
version = "1.9.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "makeworld-the-better-one";
|
||||
repo = "amfora";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-93xNzYPoy8VsbY2JyvDXt4J/gIbI2wzrCD83JUaP150=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-XtiGj2Tr6sSBduIjBspeZpYaSTd6x6EVf3VEVMXDAD0=";
|
||||
|
||||
postInstall = lib.optionalString (!stdenv.isDarwin) ''
|
||||
sed -i "s:amfora:$out/bin/amfora:" amfora.desktop
|
||||
install -Dm644 amfora.desktop -t $out/share/applications
|
||||
'';
|
||||
|
||||
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 ];
|
||||
changelog = "https://github.com/makeworld-the-better-one/amfora/blob/v${version}/CHANGELOG.md";
|
||||
};
|
||||
}
|
||||
28
pkgs/applications/networking/browsers/asuka/default.nix
Normal file
28
pkgs/applications/networking/browsers/asuka/default.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ lib, stdenv, rustPlatform, fetchFromSourcehut, pkg-config, ncurses, openssl, Security }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "asuka";
|
||||
version = "0.8.5";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~julienxx";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-+rj6P3ejc4Qb/uqbf3N9MqyqDT7yg9JFE0yfW/uzd6M=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-XrFpvH3qiMvpgbH7Q+KC1zFAqJT4rjxux6Q5KLY2ufI=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ ncurses openssl ]
|
||||
++ lib.optional stdenv.isDarwin Security;
|
||||
|
||||
meta = with 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 ];
|
||||
};
|
||||
}
|
||||
25
pkgs/applications/networking/browsers/av-98/default.nix
Normal file
25
pkgs/applications/networking/browsers/av-98/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ 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 ];
|
||||
|
||||
# No tests are available
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "av98" ];
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
29
pkgs/applications/networking/browsers/bombadillo/default.nix
Normal file
29
pkgs/applications/networking/browsers/bombadillo/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ lib, fetchgit, buildGoModule, installShellFiles }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "bombadillo";
|
||||
version = "2.4.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://tildegit.org/sloum/bombadillo.git";
|
||||
rev = version;
|
||||
sha256 = "sha256-FjU9AyRAdGFr1bVpkmj5STkbzCXvpxOaOj7WNQJq7A0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
vendorSha256 = null;
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
postInstall = ''
|
||||
installManPage bombadillo.1
|
||||
'';
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
207
pkgs/applications/networking/browsers/brave/default.nix
Normal file
207
pkgs/applications/networking/browsers/brave/default.nix
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
{ lib, stdenv, fetchurl, wrapGAppsHook, makeWrapper
|
||||
, dpkg
|
||||
, alsa-lib
|
||||
, at-spi2-atk
|
||||
, at-spi2-core
|
||||
, atk
|
||||
, cairo
|
||||
, cups
|
||||
, dbus
|
||||
, expat
|
||||
, fontconfig
|
||||
, freetype
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, gnome
|
||||
, gsettings-desktop-schemas
|
||||
, gtk3
|
||||
, libuuid
|
||||
, libdrm
|
||||
, libX11
|
||||
, libXcomposite
|
||||
, libXcursor
|
||||
, libXdamage
|
||||
, libXext
|
||||
, libXfixes
|
||||
, libXi
|
||||
, libxkbcommon
|
||||
, libXrandr
|
||||
, libXrender
|
||||
, libXScrnSaver
|
||||
, libxshmfence
|
||||
, libXtst
|
||||
, mesa
|
||||
, nspr
|
||||
, nss
|
||||
, pango
|
||||
, pipewire
|
||||
, udev
|
||||
, wayland
|
||||
, xorg
|
||||
, zlib
|
||||
, xdg-utils
|
||||
, snappy
|
||||
|
||||
# command line arguments which are always set e.g "--disable-gpu"
|
||||
, commandLineArgs ? ""
|
||||
|
||||
# Necessary for USB audio devices.
|
||||
, pulseSupport ? stdenv.isLinux
|
||||
, libpulseaudio
|
||||
|
||||
# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
|
||||
, libGL
|
||||
|
||||
# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
|
||||
, libvaSupport ? stdenv.isLinux
|
||||
, libva
|
||||
, enableVideoAcceleration ? libvaSupport
|
||||
|
||||
# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
|
||||
, vulkanSupport ? false
|
||||
, addOpenGLRunpath
|
||||
, enableVulkan ? vulkanSupport
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath
|
||||
optionalString strings escapeShellArg;
|
||||
|
||||
deps = [
|
||||
alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat
|
||||
fontconfig freetype gdk-pixbuf glib gtk3 libdrm libX11 libGL
|
||||
libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage
|
||||
libXext libXfixes libXi libXrandr libXrender libxshmfence
|
||||
libXtst libuuid mesa nspr nss pango pipewire udev wayland
|
||||
xdg-utils xorg.libxcb zlib snappy
|
||||
]
|
||||
++ optional pulseSupport libpulseaudio
|
||||
++ optional libvaSupport libva;
|
||||
|
||||
rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
|
||||
binpath = makeBinPath deps;
|
||||
|
||||
enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ]
|
||||
++ optional enableVulkan "Vulkan";
|
||||
|
||||
# The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
|
||||
disableFeatures = optional enableVideoAcceleration "UseChromeOSDirectVideoDecoder";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brave";
|
||||
version = "1.38.115";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
sha256 = "sha256-YQpFsB3VVzsOa7PoZ+TLv10Dzm9z819cmyw7atnG/Cs=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
dontPatchELF = true;
|
||||
doInstallCheck = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
(wrapGAppsHook.override { inherit makeWrapper; })
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
# needed for GSETTINGS_SCHEMAS_PATH
|
||||
glib gsettings-desktop-schemas gtk3
|
||||
|
||||
# needed for XDG_ICON_DIRS
|
||||
gnome.adwaita-icon-theme
|
||||
];
|
||||
|
||||
unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
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
|
||||
|
||||
for exe in $out/opt/brave.com/brave/{brave,chrome_crashpad_handler}; do
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${rpath}" $exe
|
||||
done
|
||||
|
||||
# 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
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
# Add command line args to wrapGApp.
|
||||
gappsWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : ${rpath}
|
||||
--prefix PATH : ${binpath}
|
||||
${optionalString (enableFeatures != []) ''
|
||||
--add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}"
|
||||
''}
|
||||
${optionalString (disableFeatures != []) ''
|
||||
--add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}"
|
||||
''}
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland}}"
|
||||
${optionalString vulkanSupport ''
|
||||
--prefix XDG_DATA_DIRS : "${addOpenGLRunpath.driverLink}/share"
|
||||
--add-flags ${escapeShellArg commandLineArgs}
|
||||
''}
|
||||
)
|
||||
'';
|
||||
|
||||
installCheckPhase = ''
|
||||
# Bypass upstream wrapper which suppresses errors
|
||||
$out/opt/brave.com/brave/brave --version
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://brave.com/";
|
||||
description = "Privacy-oriented browser for Desktop and Laptop computers";
|
||||
changelog = "https://github.com/brave/brave-browser/blob/master/CHANGELOG_DESKTOP.md#" + replaceStrings [ "." ] [ "" ] version;
|
||||
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" ];
|
||||
};
|
||||
}
|
||||
5
pkgs/applications/networking/browsers/brave/update.sh
Executable file
5
pkgs/applications/networking/browsers/brave/update.sh
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnused common-updater-scripts
|
||||
|
||||
version="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)"
|
||||
update-source-version brave "$version"
|
||||
61
pkgs/applications/networking/browsers/browsh/default.nix
Normal file
61
pkgs/applications/networking/browsers/browsh/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ lib, 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 lib; {
|
||||
description = "A fully-modern text-based browser, rendering to TTY and browsers";
|
||||
homepage = "https://www.brow.sh/";
|
||||
maintainers = [ maintainers.kalbasit ];
|
||||
license = lib.licenses.lgpl21;
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
264
pkgs/applications/networking/browsers/browsh/deps.nix
generated
Normal file
264
pkgs/applications/networking/browsers/browsh/deps.nix
generated
Normal file
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
{ lib, fetchFromGitHub, buildGoPackage }:
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "captive-browser";
|
||||
version = "2021-08-01";
|
||||
goPackagePath = pname;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FiloSottile";
|
||||
repo = "captive-browser";
|
||||
rev = "9c707dc32afc6e4146e19b43a3406329c64b6f3c";
|
||||
sha256 = "sha256-65lPo5tpE0M/VyyvlzlcVSuHX4AhhVuqK0UF4BIAH/Y=";
|
||||
};
|
||||
|
||||
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 ma27 ];
|
||||
};
|
||||
}
|
||||
52
pkgs/applications/networking/browsers/castor/default.nix
Normal file
52
pkgs/applications/networking/browsers/castor/default.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{ lib
|
||||
, fetchFromSourcehut
|
||||
, rustPlatform
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, openssl
|
||||
, gtk3
|
||||
, gdk-pixbuf
|
||||
, pango
|
||||
, atk
|
||||
, cairo
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "castor";
|
||||
version = "0.9.0";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~julienxx";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-yYLDbxmUR86fdpbHQQTiHVUbicnOD75cl3Vhofw5qr0=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-AHhKfy2AAcDBcknzNb8DAzm51RQqFQDuWN+Hp5731Yk=";
|
||||
|
||||
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
|
||||
dontUseCargoParallelThreads = true;
|
||||
|
||||
meta = with 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 ];
|
||||
};
|
||||
}
|
||||
99
pkgs/applications/networking/browsers/chromium/README.md
Normal file
99
pkgs/applications/networking/browsers/chromium/README.md
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# Maintainers
|
||||
|
||||
- Note: We could always use more contributors, testers, etc. E.g.:
|
||||
- A dedicated maintainer for the NixOS stable channel
|
||||
- PRs with cleanups, improvements, fixes, etc. (but please try to make reviews
|
||||
as easy as possible)
|
||||
- People who handle stale issues/PRs
|
||||
- Primary maintainer (responsible for all updates): @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 only (not build on
|
||||
Hydra). We use these channels for testing and to fix build errors in advance
|
||||
so that `chromium` updates are trivial and can be merged fast.
|
||||
- `google-chrome`, `google-chrome-beta`, `google-chrome-dev`: Updated via
|
||||
Chromium's `upstream-info.json`
|
||||
- `ungoogled-chromium`: @squalus
|
||||
- `chromedriver`: Updated via Chromium's `upstream-info.json` and not built
|
||||
from source.
|
||||
|
||||
# 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`).
|
||||
|
||||
Note: The source tarball is often only available a few hours after the release
|
||||
was announced. The CI/CD status can be tracked here:
|
||||
- https://ci.chromium.org/p/infra/builders/cron/publish_tarball
|
||||
- https://ci.chromium.org/p/infra/builders/cron/publish_tarball_dispatcher
|
||||
|
||||
To run all automated NixOS VM tests for Chromium, ungoogled-chromium,
|
||||
and Google Chrome (not recommended, currently 6x tests!):
|
||||
```
|
||||
nix-build nixos/tests/chromium.nix
|
||||
```
|
||||
|
||||
A single test can be selected, e.g. to test `ungoogled-chromium` (see
|
||||
`channelMap` in `nixos/tests/chromium.nix` for all available options):
|
||||
```
|
||||
nix-build nixos/tests/chromium.nix -A ungoogled
|
||||
```
|
||||
(Note: Testing Google Chrome requires `export NIXPKGS_ALLOW_UNFREE=1`.)
|
||||
|
||||
For custom builds it's possible to "override" `channelMap`.
|
||||
|
||||
## 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.
|
||||
|
||||
# Testing
|
||||
|
||||
Useful tests:
|
||||
- Version: chrome://version/
|
||||
- GPU acceleration: chrome://gpu/
|
||||
- Essential functionality: Browsing, extensions, video+audio, JS, ...
|
||||
- WebGL: https://get.webgl.org/
|
||||
- VA-API: https://wiki.archlinux.org/index.php/chromium#Hardware_video_acceleration
|
||||
- Optional: Widevine CDM (proprietary), Benchmarks, Ozone, etc.
|
||||
100
pkgs/applications/networking/browsers/chromium/browser.nix
Normal file
100
pkgs/applications/networking/browsers/chromium/browser.nix
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
{ lib, mkChromiumDerivation
|
||||
, channel, chromiumVersionAtLeast
|
||||
, enableWideVine, ungoogled
|
||||
}:
|
||||
|
||||
with 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/libvulkan.so.1" "$libExecPath/"
|
||||
cp -v "$buildPath/vk_swiftshader_icd.json" "$libExecPath/"
|
||||
cp -v "$buildPath/icudtl.dat" "$libExecPath/"
|
||||
cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
|
||||
cp -v "$buildPath/chrome_crashpad_handler" "$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"
|
||||
+ optionalString ungoogled ", 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 = if ungoogled
|
||||
then "https://github.com/Eloston/ungoogled-chromium"
|
||||
else "https://www.chromium.org/";
|
||||
maintainers = with maintainers; if ungoogled
|
||||
then [ squalus primeos michaeladler ]
|
||||
else [ primeos thefloweringash ];
|
||||
license = if enableWideVine then licenses.unfree else licenses.bsd3;
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "chromium";
|
||||
hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium")
|
||||
then ["aarch64-linux" "x86_64-linux"]
|
||||
else [];
|
||||
timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
|
||||
};
|
||||
})
|
||||
358
pkgs/applications/networking/browsers/chromium/common.nix
Normal file
358
pkgs/applications/networking/browsers/chromium/common.nix
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
{ stdenv, lib, fetchurl, fetchpatch
|
||||
# Channel data:
|
||||
, channel, upstream-info
|
||||
# Helper functions:
|
||||
, chromiumVersionAtLeast, versionRange
|
||||
|
||||
# Native build inputs:
|
||||
, ninja, pkg-config
|
||||
, python3, perl
|
||||
, which
|
||||
, llvmPackages
|
||||
# postPatch:
|
||||
, pkgsBuildHost
|
||||
# configurePhase:
|
||||
, gnChromium
|
||||
|
||||
# Build inputs:
|
||||
, libpng
|
||||
, bzip2, flac, speex, libopus
|
||||
, libevent, expat, libjpeg, snappy
|
||||
, libcap
|
||||
, xdg-utils, minizip, libwebp
|
||||
, libusb1, re2
|
||||
, ffmpeg, libxslt, libxml2
|
||||
, nasm
|
||||
, nspr, nss
|
||||
, util-linux, alsa-lib
|
||||
, bison, gperf, libkrb5
|
||||
, glib, gtk3, dbus-glib
|
||||
, libXScrnSaver, libXcursor, libXtst, libxshmfence, libGLU, libGL
|
||||
, mesa
|
||||
, pciutils, protobuf, speechd, libXdamage, at-spi2-core
|
||||
, pipewire
|
||||
, libva
|
||||
, libdrm, wayland, libxkbcommon # Ozone
|
||||
, curl
|
||||
, libepoxy
|
||||
# postPatch:
|
||||
, glibc # gconv + locale
|
||||
|
||||
# Package customization:
|
||||
, cupsSupport ? true, cups ? null
|
||||
, proprietaryCodecs ? true
|
||||
, pulseSupport ? false, libpulseaudio ? null
|
||||
, ungoogled ? false, ungoogled-chromium
|
||||
# Optional dependencies:
|
||||
, libgcrypt ? null # cupsSupport
|
||||
, systemdSupport ? stdenv.isLinux
|
||||
, systemd
|
||||
}:
|
||||
|
||||
buildFun:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
python3WithPackages = python3.withPackages(ps: with ps; [
|
||||
ply jinja2 setuptools
|
||||
]);
|
||||
clangFormatPython3 = fetchurl {
|
||||
url = "https://chromium.googlesource.com/chromium/tools/build/+/e77882e0dde52c2ccf33c5570929b75b4a2a2522/recipes/recipe_modules/chromium/resources/clang-format?format=TEXT";
|
||||
sha256 = "0ic3hn65dimgfhakli1cyf9j3cxcqsf1qib706ihfhmlzxf7256l";
|
||||
};
|
||||
|
||||
# The additional attributes for creating derivations based on the chromium
|
||||
# source tree.
|
||||
extraAttrs = buildFun base;
|
||||
|
||||
githubPatch = { commit, sha256, revert ? false }: fetchpatch {
|
||||
url = "https://github.com/chromium/chromium/commit/${commit}.patch";
|
||||
inherit sha256 revert;
|
||||
};
|
||||
|
||||
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 = [
|
||||
# TODO:
|
||||
# "ffmpeg"
|
||||
# "snappy"
|
||||
"flac"
|
||||
"libjpeg"
|
||||
"libpng"
|
||||
"libwebp"
|
||||
"libxslt"
|
||||
# "opus"
|
||||
];
|
||||
|
||||
opusWithCustomModes = libopus.override {
|
||||
withCustomModes = true;
|
||||
};
|
||||
|
||||
# build paths and release info
|
||||
packageName = extraAttrs.packageName or extraAttrs.name;
|
||||
buildType = "Release";
|
||||
buildPath = "out/${buildType}";
|
||||
libExecPath = "$out/libexec/${packageName}";
|
||||
|
||||
ungoogler = ungoogled-chromium {
|
||||
inherit (upstream-info.deps.ungoogled-patches) rev sha256;
|
||||
};
|
||||
|
||||
base = rec {
|
||||
pname = "${packageName}-unwrapped";
|
||||
inherit (upstream-info) version;
|
||||
inherit packageName buildType buildPath;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
|
||||
inherit (upstream-info) sha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
ninja pkg-config
|
||||
python3WithPackages perl
|
||||
which
|
||||
llvmPackages.bintools
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
(libpng.override { apngSupport = false; }) # https://bugs.chromium.org/p/chromium/issues/detail?id=752403
|
||||
bzip2 flac speex opusWithCustomModes
|
||||
libevent expat libjpeg snappy
|
||||
libcap
|
||||
xdg-utils minizip libwebp
|
||||
libusb1 re2
|
||||
ffmpeg libxslt libxml2
|
||||
nasm
|
||||
nspr nss
|
||||
util-linux alsa-lib
|
||||
bison gperf libkrb5
|
||||
glib gtk3 dbus-glib
|
||||
libXScrnSaver libXcursor libXtst libxshmfence libGLU libGL
|
||||
mesa # required for libgbm
|
||||
pciutils protobuf speechd libXdamage at-spi2-core
|
||||
pipewire
|
||||
libva
|
||||
libdrm wayland mesa.drivers libxkbcommon
|
||||
curl
|
||||
libepoxy
|
||||
] ++ optional systemdSupport systemd
|
||||
++ optionals cupsSupport [ libgcrypt cups ]
|
||||
++ optional pulseSupport libpulseaudio;
|
||||
|
||||
patches = [
|
||||
# Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed):
|
||||
./patches/no-build-timestamps.patch
|
||||
# For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags:
|
||||
./patches/widevine-79.patch
|
||||
] ++ optionals (versionRange "102" "103") [
|
||||
# https://dawn-review.googlesource.com/c/dawn/+/88582
|
||||
# Wrap get_gitHash in try-catch to prevent failures in tarball builds.
|
||||
./patches/m102-fix-dawn_version_generator-failure.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Workaround/fix for https://bugs.chromium.org/p/chromium/issues/detail?id=1313361:
|
||||
substituteInPlace BUILD.gn \
|
||||
--replace '"//infra/orchestrator:orchestrator_all",' ""
|
||||
# Disable build flags that require LLVM 15:
|
||||
substituteInPlace build/config/compiler/BUILD.gn \
|
||||
--replace '"-Xclang",' "" \
|
||||
--replace '"-no-opaque-pointers",' ""
|
||||
# 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
|
||||
chmod -x third_party/webgpu-cts/src/tools/run_deno
|
||||
chmod -x third_party/dawn/third_party/webgpu-cts/tools/run_deno
|
||||
|
||||
# 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/' \
|
||||
'${alsa-lib}/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
|
||||
|
||||
'' + lib.optionalString systemdSupport ''
|
||||
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
|
||||
|
||||
# We need the fix for https://bugs.chromium.org/p/chromium/issues/detail?id=1254408:
|
||||
base64 --decode ${clangFormatPython3} > buildtools/linux64/clang-format
|
||||
|
||||
patchShebangs .
|
||||
# Link to our own Node.js and Java (required during the build):
|
||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||
ln -s "${pkgsBuildHost.nodejs}/bin/node" third_party/node/linux/node-linux-x64/bin/node
|
||||
ln -s "${pkgsBuildHost.jre8_headless}/bin/java" third_party/jdk/current/bin/
|
||||
|
||||
# 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 ({
|
||||
# Main build and toolchain settings:
|
||||
# Create an official and optimized release build (only official builds
|
||||
# should be distributed to users, as non-official builds are intended for
|
||||
# development and may not be configured appropriately for production,
|
||||
# e.g. unsafe developer builds have developer-friendly features that may
|
||||
# weaken or disable security measures like sandboxing or ASLR):
|
||||
is_official_build = true;
|
||||
disable_fieldtrial_testing_config = true;
|
||||
# Build Chromium using the system toolchain (for Linux distributions):
|
||||
custom_toolchain = "//build/toolchain/linux/unbundle:default";
|
||||
host_toolchain = "//build/toolchain/linux/unbundle:default";
|
||||
# Don't build against a sysroot image downloaded from Cloud Storage:
|
||||
use_sysroot = false;
|
||||
# The default value is hardcoded instead of using pkg-config:
|
||||
system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
|
||||
# Because we use a different toolchain / compiler version:
|
||||
treat_warnings_as_errors = false;
|
||||
# We aren't compiling with Chrome's Clang (would enable Chrome-specific
|
||||
# plugins for enforcing coding guidelines, etc.):
|
||||
clang_use_chrome_plugins = false;
|
||||
# Disable symbols (they would negatively affect the performance of the
|
||||
# build since the symbols are large and dealing with them is slow):
|
||||
symbol_level = 0;
|
||||
blink_symbol_level = 0;
|
||||
|
||||
# Google API key, see: https://www.chromium.org/developers/how-tos/api-keys
|
||||
# Note: The API key is for NixOS/nixpkgs use ONLY.
|
||||
# For your own distribution, please get your own set of keys.
|
||||
google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
|
||||
|
||||
# Optional features:
|
||||
use_gio = true;
|
||||
use_gnome_keyring = false; # Superseded by libsecret
|
||||
use_cups = cupsSupport;
|
||||
|
||||
# Feature overrides:
|
||||
# Native Client support was deprecated in 2020 and support will end in June 2021:
|
||||
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;
|
||||
# Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture:
|
||||
rtc_use_pipewire = true;
|
||||
# Disable PGO because the profile data requires a newer compiler version (LLVM 14 isn't sufficient):
|
||||
chrome_pgo_phase = 0;
|
||||
} // 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 ungoogled (importTOML ./ungoogled-flags.toml)
|
||||
// (extraAttrs.gnFlags or {}));
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
# This is to ensure expansion of $out.
|
||||
libExecPath="${libExecPath}"
|
||||
${python3}/bin/python3 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 {}); })
|
||||
233
pkgs/applications/networking/browsers/chromium/default.nix
Normal file
233
pkgs/applications/networking/browsers/chromium/default.nix
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
{ newScope, config, stdenv, fetchurl, makeWrapper
|
||||
, llvmPackages_14, ed, gnugrep, coreutils, xdg-utils
|
||||
, glib, gtk3, gnome, gsettings-desktop-schemas, gn, fetchgit
|
||||
, libva, pipewire, wayland
|
||||
, gcc, nspr, nss, runCommand
|
||||
, lib
|
||||
|
||||
# package customization
|
||||
# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
|
||||
, channel ? "stable"
|
||||
, proprietaryCodecs ? true
|
||||
, enableWideVine ? false
|
||||
, ungoogled ? false # Whether to build chromium or ungoogled-chromium
|
||||
, cupsSupport ? true
|
||||
, pulseSupport ? config.pulseaudio or stdenv.isLinux
|
||||
, commandLineArgs ? ""
|
||||
}:
|
||||
|
||||
let
|
||||
llvmPackages = llvmPackages_14;
|
||||
stdenv = llvmPackages.stdenv;
|
||||
|
||||
upstream-info = (lib.importJSON ./upstream-info.json).${channel};
|
||||
|
||||
# Helper functions for changes that depend on specific versions:
|
||||
warnObsoleteVersionConditional = min-version: result:
|
||||
let ungoogled-version = (lib.importJSON ./upstream-info.json).ungoogled-chromium.version;
|
||||
in lib.warnIf
|
||||
(lib.versionAtLeast ungoogled-version min-version)
|
||||
"chromium: ungoogled version ${ungoogled-version} is newer than a conditional bounded at ${min-version}. You can safely delete it."
|
||||
result;
|
||||
chromiumVersionAtLeast = min-version:
|
||||
let result = lib.versionAtLeast upstream-info.version min-version;
|
||||
in warnObsoleteVersionConditional min-version result;
|
||||
versionRange = min-version: upto-version:
|
||||
let inherit (upstream-info) version;
|
||||
result = lib.versionAtLeast version min-version && lib.versionOlder version upto-version;
|
||||
in warnObsoleteVersionConditional upto-version result;
|
||||
|
||||
callPackage = newScope chromium;
|
||||
|
||||
chromium = rec {
|
||||
inherit stdenv llvmPackages upstream-info;
|
||||
|
||||
mkChromiumDerivation = callPackage ./common.nix ({
|
||||
inherit channel chromiumVersionAtLeast versionRange;
|
||||
inherit proprietaryCodecs
|
||||
cupsSupport pulseSupport ungoogled;
|
||||
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 chromiumVersionAtLeast enableWideVine ungoogled;
|
||||
};
|
||||
|
||||
ungoogled-chromium = callPackage ./ungoogled.nix {};
|
||||
};
|
||||
|
||||
pkgSuffix = if channel == "dev" then "unstable" else
|
||||
(if channel == "ungoogled-chromium" then "stable" else channel);
|
||||
pkgName = "google-chrome-${pkgSuffix}";
|
||||
chromeSrc =
|
||||
let
|
||||
# Use the latest stable Chrome version if necessary:
|
||||
version = if chromium.upstream-info.sha256bin64 != null
|
||||
then chromium.upstream-info.version
|
||||
else (lib.importJSON ./upstream-info.json).stable.version;
|
||||
sha256 = if chromium.upstream-info.sha256bin64 != null
|
||||
then chromium.upstream-info.sha256bin64
|
||||
else (lib.importJSON ./upstream-info.json).stable.sha256bin64;
|
||||
in 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"
|
||||
];
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
|
||||
widevineCdm = stdenv.mkDerivation {
|
||||
name = "chrome-widevine-cdm";
|
||||
|
||||
src = chromeSrc;
|
||||
|
||||
unpackCmd = let
|
||||
widevineCdmPath =
|
||||
if (channel == "stable" || channel == "ungoogled-chromium") 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" || channel == "ungoogled-chromium")
|
||||
then ""
|
||||
else "-" + channel;
|
||||
|
||||
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 {
|
||||
pname = lib.optionalString ungoogled "ungoogled-"
|
||||
+ "chromium${suffix}";
|
||||
inherit version;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper ed
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
# needed for GSETTINGS_SCHEMAS_PATH
|
||||
gsettings-desktop-schemas glib gtk3
|
||||
|
||||
# needed for XDG_ICON_DIRS
|
||||
gnome.adwaita-icon-theme
|
||||
];
|
||||
|
||||
outputs = ["out" "sandbox"];
|
||||
|
||||
buildCommand = let
|
||||
browserBinary = "${chromiumWV}/libexec/chromium/chromium";
|
||||
libPath = lib.makeLibraryPath [ libva pipewire wayland gtk3 ];
|
||||
|
||||
in with lib; ''
|
||||
mkdir -p "$out/bin"
|
||||
|
||||
makeWrapper "${browserBinary}" "$out/bin/chromium" \
|
||||
--add-flags ${escapeShellArg commandLineArgs} \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
|
||||
|
||||
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 (this is only a fallback; \$PATH is suffixed so that other implementations can be used):
|
||||
export PATH="\$PATH\''${PATH:+:}${xdg-utils}/bin"
|
||||
|
||||
.
|
||||
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;
|
||||
};
|
||||
}
|
||||
53
pkgs/applications/networking/browsers/chromium/get-commit-message.py
Executable file
53
pkgs/applications/networking/browsers/chromium/get-commit-message.py
Executable file
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python3 -p python3Packages.feedparser python3Packages.requests
|
||||
|
||||
# This script prints the Git commit message for stable channel updates.
|
||||
# Usage: ./get-commit-message.py [version]
|
||||
|
||||
import re
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
import feedparser
|
||||
import requests
|
||||
|
||||
feed = feedparser.parse('https://chromereleases.googleblog.com/feeds/posts/default')
|
||||
html_tags = re.compile(r'<[^>]+>')
|
||||
target_version = sys.argv[1] if len(sys.argv) == 2 else None
|
||||
|
||||
for entry in feed.entries:
|
||||
url = requests.get(entry.link).url.split('?')[0]
|
||||
if entry.title != 'Stable Channel Update for Desktop':
|
||||
if target_version and entry.title == '':
|
||||
# Workaround for a special case (Chrome Releases bug?):
|
||||
if not 'the-stable-channel-has-been-updated-to' in url:
|
||||
continue
|
||||
else:
|
||||
continue
|
||||
content = entry.content[0].value
|
||||
content = html_tags.sub('', content) # Remove any HTML tags
|
||||
if re.search(r'Linux', content) is None:
|
||||
continue
|
||||
#print(url) # For debugging purposes
|
||||
version = re.search(r'\d+(\.\d+){3}', content).group(0)
|
||||
if target_version:
|
||||
if version != target_version:
|
||||
continue
|
||||
else:
|
||||
print('chromium: TODO -> ' + version + '\n')
|
||||
print(url)
|
||||
if fixes := re.search(r'This update includes .+ security fix(es)?\.', content):
|
||||
fixes = fixes.group(0)
|
||||
if zero_days := re.search(r'Google is aware( of reports)? th(e|at) .+ in the wild\.', content):
|
||||
fixes += " " + zero_days.group(0)
|
||||
print('\n' + '\n'.join(textwrap.wrap(fixes, width=72)))
|
||||
if cve_list := re.findall(r'CVE-[^: ]+', content):
|
||||
cve_list = list(OrderedDict.fromkeys(cve_list)) # Remove duplicates but preserve the order
|
||||
cve_string = ' '.join(cve_list)
|
||||
print("\nCVEs:\n" + '\n'.join(textwrap.wrap(cve_string, width=72)))
|
||||
sys.exit(0) # We only care about the most recent stable channel update
|
||||
|
||||
print("Error: No match.")
|
||||
sys.exit(1)
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
From e9ffd084ec1ff9f7bfc86879732953dc58256958 Mon Sep 17 00:00:00 2001
|
||||
From: Loko Kung <lokokung@google.com>
|
||||
Date: Tue, 3 May 2022 00:28:53 +0000
|
||||
Subject: [PATCH] Wrap get_gitHash in try-catch to prevent failures in tarball
|
||||
builds.
|
||||
|
||||
Bug: chromium:1321370
|
||||
Change-Id: If39d2236d1b4d965f7bd189f6bd1cdc70436c41d
|
||||
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/88582
|
||||
Commit-Queue: Loko Kung <lokokung@google.com>
|
||||
Reviewed-by: Austin Eng <enga@chromium.org>
|
||||
Kokoro: Kokoro <noreply+kokoro@google.com>
|
||||
(cherry picked from commit 03ddfbb81fb4127ca37ea53e70fcb34fe851e24e)
|
||||
---
|
||||
third_party/dawn/generator/dawn_version_generator.py | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/third_party/dawn/generator/dawn_version_generator.py b/third_party/dawn/generator/dawn_version_generator.py
|
||||
index 1907e88da..3c1927bee 100644
|
||||
--- a/third_party/dawn/generator/dawn_version_generator.py
|
||||
+++ b/third_party/dawn/generator/dawn_version_generator.py
|
||||
@@ -23,11 +23,14 @@ def get_git():
|
||||
|
||||
|
||||
def get_gitHash(dawnDir):
|
||||
- result = subprocess.run([get_git(), 'rev-parse', 'HEAD'],
|
||||
- stdout=subprocess.PIPE,
|
||||
- cwd=dawnDir)
|
||||
- if result.returncode == 0:
|
||||
- return result.stdout.decode('utf-8').strip()
|
||||
+ try:
|
||||
+ result = subprocess.run([get_git(), "rev-parse", "HEAD"],
|
||||
+ stdout=subprocess.PIPE,
|
||||
+ cwd=dawnDir)
|
||||
+ if result.returncode == 0:
|
||||
+ return result.stdout.decode("utf-8").strip()
|
||||
+ except Exception:
|
||||
+ return ""
|
||||
# No hash was available (possibly) because the directory was not a git checkout. Dawn should
|
||||
# explicitly handle its absenece and disable features relying on the hash, i.e. caching.
|
||||
return ''
|
||||
--
|
||||
2.36.0
|
||||
|
|
@ -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
|
||||
|
|
@ -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",
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
build_with_tflite_lib=false
|
||||
chrome_pgo_phase=0
|
||||
clang_use_chrome_plugins=false
|
||||
disable_fieldtrial_testing_config=true
|
||||
enable_hangout_services_extension=false
|
||||
enable_js_type_check=false
|
||||
enable_mdns=false
|
||||
enable_mse_mpeg2ts_stream_parser=true
|
||||
enable_nacl=false
|
||||
enable_one_click_signin=false
|
||||
enable_reading_list=false
|
||||
enable_remoting=false
|
||||
enable_reporting=false
|
||||
enable_service_discovery=false
|
||||
enable_widevine=true
|
||||
exclude_unwind_tables=true
|
||||
google_api_key=""
|
||||
google_default_client_id=""
|
||||
google_default_client_secret=""
|
||||
safe_browsing_mode=0
|
||||
treat_warnings_as_errors=false
|
||||
use_official_google_api_keys=false
|
||||
use_unofficial_version_number=false
|
||||
43
pkgs/applications/networking/browsers/chromium/ungoogled.nix
Normal file
43
pkgs/applications/networking/browsers/chromium/ungoogled.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, python3Packages
|
||||
, makeWrapper
|
||||
, patch
|
||||
}:
|
||||
|
||||
{ rev
|
||||
, sha256
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ungoogled-chromium";
|
||||
|
||||
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"
|
||||
'';
|
||||
}
|
||||
247
pkgs/applications/networking/browsers/chromium/update.py
Executable file
247
pkgs/applications/networking/browsers/chromium/update.py
Executable file
|
|
@ -0,0 +1,247 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i python -p python3 nix nix-prefetch-git
|
||||
|
||||
"""This script automatically updates chromium, google-chrome, chromedriver, and ungoogled-chromium
|
||||
via upstream-info.json."""
|
||||
# Usage: ./update.py [--commit]
|
||||
|
||||
import base64
|
||||
import csv
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from codecs import iterdecode
|
||||
from collections import OrderedDict
|
||||
from datetime import datetime
|
||||
from distutils.version import LooseVersion
|
||||
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'
|
||||
UNGOOGLED_FLAGS_PATH = dirname(abspath(__file__)) + '/ungoogled-flags.toml'
|
||||
COMMIT_MESSAGE_SCRIPT = dirname(abspath(__file__)) + '/get-commit-message.py'
|
||||
|
||||
|
||||
def load_json(path):
|
||||
"""Loads the given JSON file."""
|
||||
with open(path, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def nix_prefetch_url(url, algo='sha256'):
|
||||
"""Prefetches the content of the given URL."""
|
||||
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):
|
||||
"""Prefetches the requested Git revision of the given repository URL."""
|
||||
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):
|
||||
"""Fetches the requested Git revision of the given Chromium file."""
|
||||
url = f'https://chromium.googlesource.com/chromium/src/+/refs/tags/{revision}/{file_path}?format=TEXT'
|
||||
with urlopen(url) as http_response:
|
||||
resp = http_response.read()
|
||||
return base64.b64decode(resp)
|
||||
|
||||
|
||||
def get_matching_chromedriver(version):
|
||||
"""Gets the matching chromedriver version for the given Chromium 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 ('https://chromedriver.storage.googleapis.com/' +
|
||||
f'{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')),
|
||||
'sha256_darwin_aarch64': nix_prefetch_url(get_chromedriver_url('mac64_m1'))
|
||||
}
|
||||
|
||||
|
||||
def get_channel_dependencies(version):
|
||||
"""Gets all dependencies for the given Chromium version."""
|
||||
deps = get_file_revision(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']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def get_latest_ungoogled_chromium_tag():
|
||||
"""Returns the latest ungoogled-chromium tag using the GitHub API."""
|
||||
api_tag_url = 'https://api.github.com/repos/Eloston/ungoogled-chromium/tags?per_page=1'
|
||||
with urlopen(api_tag_url) as http_response:
|
||||
tag_data = json.load(http_response)
|
||||
return tag_data[0]['name']
|
||||
|
||||
|
||||
def get_latest_ungoogled_chromium_build():
|
||||
"""Returns a dictionary for the latest ungoogled-chromium build."""
|
||||
tag = get_latest_ungoogled_chromium_tag()
|
||||
version = tag.split('-')[0]
|
||||
return {
|
||||
'channel': 'ungoogled-chromium',
|
||||
'version': version,
|
||||
'ungoogled_tag': tag
|
||||
}
|
||||
|
||||
|
||||
def get_ungoogled_chromium_gn_flags(revision):
|
||||
"""Returns ungoogled-chromium's GN build flags for the given revision."""
|
||||
gn_flags_url = f'https://raw.githubusercontent.com/Eloston/ungoogled-chromium/{revision}/flags.gn'
|
||||
return urlopen(gn_flags_url).read().decode()
|
||||
|
||||
|
||||
def channel_name_to_attr_name(channel_name):
|
||||
"""Maps a channel name to the corresponding main Nixpkgs attribute name."""
|
||||
if channel_name == 'stable':
|
||||
return 'chromium'
|
||||
if channel_name == 'beta':
|
||||
return 'chromiumBeta'
|
||||
if channel_name == 'dev':
|
||||
return 'chromiumDev'
|
||||
if channel_name == 'ungoogled-chromium':
|
||||
return 'ungoogled-chromium'
|
||||
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def get_channel_key(item):
|
||||
"""Orders Chromium channels by their name."""
|
||||
channel_name = item[0]
|
||||
if channel_name == 'stable':
|
||||
return 0
|
||||
if channel_name == 'beta':
|
||||
return 1
|
||||
if channel_name == 'dev':
|
||||
return 2
|
||||
if channel_name == 'ungoogled-chromium':
|
||||
return 3
|
||||
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def print_updates(channels_old, channels_new):
|
||||
"""Print a summary of the updates."""
|
||||
print('Updates:')
|
||||
for channel_name in channels_old:
|
||||
version_old = channels_old[channel_name]["version"]
|
||||
version_new = channels_new[channel_name]["version"]
|
||||
if LooseVersion(version_old) < LooseVersion(version_new):
|
||||
attr_name = channel_name_to_attr_name(channel_name)
|
||||
print(f'- {attr_name}: {version_old} -> {version_new}')
|
||||
|
||||
|
||||
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'))
|
||||
builds = list(builds)
|
||||
builds.append(get_latest_ungoogled_chromium_build())
|
||||
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']}
|
||||
if channel_name == 'dev':
|
||||
google_chrome_suffix = 'unstable'
|
||||
elif channel_name == 'ungoogled-chromium':
|
||||
google_chrome_suffix = 'stable'
|
||||
else:
|
||||
google_chrome_suffix = 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-{google_chrome_suffix}/' +
|
||||
f'google-chrome-{google_chrome_suffix}_{build["version"]}-1_amd64.deb')
|
||||
except subprocess.CalledProcessError:
|
||||
if (channel_name == 'ungoogled-chromium' and 'sha256' in channel and
|
||||
build['version'].split('.')[0] == last_channels['stable']['version'].split('.')[0]):
|
||||
# Sometimes ungoogled-chromium is updated to a newer tag than
|
||||
# the latest stable Chromium version. In this case we'll set
|
||||
# sha256bin64 to null and the Nixpkgs code will fall back to
|
||||
# the latest stable Google Chrome (only required for
|
||||
# Widevine/DRM which is disabled by default):
|
||||
channel['sha256bin64'] = None
|
||||
else:
|
||||
# This build isn't actually available yet. Continue to
|
||||
# the next one.
|
||||
continue
|
||||
|
||||
channel['deps'] = get_channel_dependencies(channel['version'])
|
||||
if channel_name == 'stable':
|
||||
channel['chromedriver'] = get_matching_chromedriver(channel['version'])
|
||||
elif channel_name == 'ungoogled-chromium':
|
||||
ungoogled_repo_url = 'https://github.com/Eloston/ungoogled-chromium.git'
|
||||
channel['deps']['ungoogled-patches'] = {
|
||||
'rev': build['ungoogled_tag'],
|
||||
'sha256': nix_prefetch_git(ungoogled_repo_url, build['ungoogled_tag'])['sha256']
|
||||
}
|
||||
with open(UNGOOGLED_FLAGS_PATH, 'w') as out:
|
||||
out.write(get_ungoogled_chromium_gn_flags(build['ungoogled_tag']))
|
||||
|
||||
channels[channel_name] = channel
|
||||
|
||||
|
||||
sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
|
||||
if len(sys.argv) == 2 and sys.argv[1] == '--commit':
|
||||
for channel_name in sorted_channels.keys():
|
||||
version_old = last_channels[channel_name]['version']
|
||||
version_new = sorted_channels[channel_name]['version']
|
||||
if LooseVersion(version_old) < LooseVersion(version_new):
|
||||
last_channels[channel_name] = sorted_channels[channel_name]
|
||||
with open(JSON_PATH, 'w') as out:
|
||||
json.dump(last_channels, out, indent=2)
|
||||
out.write('\n')
|
||||
attr_name = channel_name_to_attr_name(channel_name)
|
||||
commit_message = f'{attr_name}: {version_old} -> {version_new}'
|
||||
if channel_name == 'stable':
|
||||
body = subprocess.check_output([COMMIT_MESSAGE_SCRIPT, version_new]).decode('utf-8')
|
||||
commit_message += '\n\n' + body
|
||||
elif channel_name == 'ungoogled-chromium':
|
||||
subprocess.run(['git', 'add', UNGOOGLED_FLAGS_PATH], check=True)
|
||||
subprocess.run(['git', 'add', JSON_PATH], check=True)
|
||||
subprocess.run(['git', 'commit', '--file=-'], input=commit_message.encode(), check=True)
|
||||
else:
|
||||
with open(JSON_PATH, 'w') as out:
|
||||
json.dump(sorted_channels, out, indent=2)
|
||||
out.write('\n')
|
||||
print_updates(last_channels, sorted_channels)
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"stable": {
|
||||
"version": "102.0.5005.61",
|
||||
"sha256": "07vbi3gn9g4n04b2qi2hm34r122snrqaifa46yk3pyh1d79rfdqs",
|
||||
"sha256bin64": "100n8k3d9k5bq58irc36ig6m5m0lxggffyk4crqqqcib2anqd0zv",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-04-14",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "fd9f2036f26d83f9fcfe93042fb952e5a7fe2167",
|
||||
"sha256": "0b5xs0chcv3hfhy71rycsmgxnqbm375a333hwav8929k9cbi5p9h"
|
||||
}
|
||||
},
|
||||
"chromedriver": {
|
||||
"version": "102.0.5005.27",
|
||||
"sha256_linux": "1978xwj9kf8nihgakmnzgibizq6wp74qp2d2fxgrsgggjy1clmbv",
|
||||
"sha256_darwin": "0abnqpdm5hgirzj9g2zwkjcc7cwnnr3va4qn09g5yqndlbvi9nqd",
|
||||
"sha256_darwin_aarch64": "0mw7vypghnw3qdci8g11hgfwbfln471dq1mymxn4bi7691xxb6a2"
|
||||
}
|
||||
},
|
||||
"beta": {
|
||||
"version": "103.0.5060.33",
|
||||
"sha256": "00s9nwy5y2vik08snqxv1wbajllb7d81bryl5v4miyihjs511zjb",
|
||||
"sha256bin64": "1l1fmfsl6ms4ps6sixp6chq3p6spik2fsvz5njvj1zf84p90mx4l",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-05-11",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "578a7fe4c3c6b0bc2ae1fd2e37f14857d09895bf",
|
||||
"sha256": "03dqfrdpf5xxl64dby3qmbwpzdq2gsa8g7xl438py3a629rgxg63"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dev": {
|
||||
"version": "104.0.5098.0",
|
||||
"sha256": "1h5szy6jp2n55m0fs2czdlldgkgyrqsnkfhhpwxzl8fyanlpw1hj",
|
||||
"sha256bin64": "1w97mkdz3ab9wxw7fj5fpm8cjazdpb0s715c85hd3h0wrvwm1g8p",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-05-31",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "37baefb026b199605affa7bcb24810d1724ce373",
|
||||
"sha256": "166ciclcp77vn7k4k8nvb7xn1clddbrk35am4hqiayfya57yal3c"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ungoogled-chromium": {
|
||||
"version": "102.0.5005.61",
|
||||
"sha256": "07vbi3gn9g4n04b2qi2hm34r122snrqaifa46yk3pyh1d79rfdqs",
|
||||
"sha256bin64": "100n8k3d9k5bq58irc36ig6m5m0lxggffyk4crqqqcib2anqd0zv",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-04-14",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "fd9f2036f26d83f9fcfe93042fb952e5a7fe2167",
|
||||
"sha256": "0b5xs0chcv3hfhy71rycsmgxnqbm375a333hwav8929k9cbi5p9h"
|
||||
},
|
||||
"ungoogled-patches": {
|
||||
"rev": "102.0.5005.61-1",
|
||||
"sha256": "1hlyi6k894blkkqmqsizx72bag2vj6wlpza0fvi8db5wp6i5b58g"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
pkgs/applications/networking/browsers/dillo/default.nix
Normal file
37
pkgs/applications/networking/browsers/dillo/default.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{ lib, 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 lib;
|
||||
[ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
|
||||
|
||||
# Workaround build failure on -fno-common toolchains:
|
||||
# ld: main.o:/build/dillo-3.0.5/dpid/dpid.h:64: multiple definition of `sock_set';
|
||||
# dpid.o:/build/dillo-3.0.5/dpid/dpid.h:64: first defined here
|
||||
NIX_CFLAGS_COMPILE = "-fcommon";
|
||||
|
||||
configureFlags = [ "--enable-ssl" ];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
61
pkgs/applications/networking/browsers/elinks/default.nix
Normal file
61
pkgs/applications/networking/browsers/elinks/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ lib, stdenv, fetchFromGitHub, fetchpatch, ncurses, xlibsWrapper, bzip2, zlib
|
||||
, brotli, zstd, xz, openssl, autoreconfHook, gettext, pkg-config, libev
|
||||
, gpm, libidn, tre, expat
|
||||
, # Incompatible licenses, LGPLv3 - GPLv2
|
||||
enableGuile ? false, guile ? null
|
||||
, enablePython ? false, python ? null
|
||||
, enablePerl ? (!stdenv.isDarwin) && (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.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rkd77";
|
||||
repo = "felinks";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-2TF0rbmjwhwV2AVUXjfzoprzpeqrETis3AFhMftpaZQ=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ncurses xlibsWrapper bzip2 zlib brotli zstd xz
|
||||
openssl libidn tre expat libev
|
||||
]
|
||||
++ lib.optional stdenv.isLinux gpm
|
||||
++ lib.optional enableGuile guile
|
||||
++ lib.optional enablePython python
|
||||
++ lib.optional enablePerl perl
|
||||
;
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook gettext pkg-config ];
|
||||
|
||||
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"
|
||||
] ++ lib.optional enableGuile "--with-guile"
|
||||
++ lib.optional enablePython "--with-python"
|
||||
++ lib.optional enablePerl "--with-perl"
|
||||
;
|
||||
|
||||
meta = with 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 ];
|
||||
};
|
||||
}
|
||||
82
pkgs/applications/networking/browsers/eolie/default.nix
Normal file
82
pkgs/applications/networking/browsers/eolie/default.nix
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
{ lib, fetchgit, meson, ninja, pkg-config, nix-update-script
|
||||
, python3, gtk3, libsecret, gst_all_1, webkitgtk, glib
|
||||
, glib-networking, gtkspell3, hunspell, desktop-file-utils
|
||||
, gobject-introspection, wrapGAppsHook, gnome }:
|
||||
|
||||
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
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = with gst_all_1; [
|
||||
glib-networking
|
||||
gobject-introspection
|
||||
gst-libav
|
||||
gst-plugins-base
|
||||
gst-plugins-ugly
|
||||
gstreamer
|
||||
gnome.gnome-settings-daemon
|
||||
gtk3
|
||||
gtkspell3
|
||||
hunspell
|
||||
libsecret
|
||||
webkitgtk
|
||||
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 lib; {
|
||||
description = "A new GNOME web browser";
|
||||
homepage = "https://wiki.gnome.org/Apps/Eolie";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ samdroid-apps ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
72
pkgs/applications/networking/browsers/ephemeral/default.nix
Normal file
72
pkgs/applications/networking/browsers/ephemeral/default.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, desktop-file-utils
|
||||
, vala
|
||||
, gettext
|
||||
, glib
|
||||
, gtk3
|
||||
, libgee
|
||||
, libdazzle
|
||||
, meson
|
||||
, ninja
|
||||
, pantheon
|
||||
, pkg-config
|
||||
, python3
|
||||
, webkitgtk
|
||||
, wrapGAppsHook
|
||||
, glib-networking
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ephemeral";
|
||||
version = "7.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cassidyjames";
|
||||
repo = "ephemeral";
|
||||
rev = version;
|
||||
sha256 = "sha256-07HO8nC2Pwz2EAea4ZzmqyMfQdgX8FVqDepdA6j/NT8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
gettext
|
||||
meson
|
||||
ninja
|
||||
vala
|
||||
pkg-config
|
||||
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 lib; {
|
||||
description = "The always-incognito web browser";
|
||||
homepage = "https://github.com/cassidyjames/ephemeral";
|
||||
maintainers = with maintainers; [ xiorcale ] ++ teams.pantheon.members;
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
mainProgram = "com.github.cassidyjames.ephemeral";
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,985 @@
|
|||
{
|
||||
version = "102.0b1";
|
||||
sources = [
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ach/firefox-102.0b1.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5bf7b77542830773cf517786efd69151dcf394e79ab493e373edc0a63917b3f2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/af/firefox-102.0b1.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f7e5fe2f890b5ef8047e77e99c416eba4e196167233f2104e726bfaffc152e0e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/an/firefox-102.0b1.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e3296557c37f57df9845ee66d9a47ae88c4b31427e2c3d927f04c9196da83ea4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ar/firefox-102.0b1.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "951aac261c9801351d3460c6e6e71fa0d36cf68b58efc54b781ecbdc6e056671";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ast/firefox-102.0b1.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2c0b8affeaa6f1f547681e7394b85ba4d2e59a04ae55018b2ed7fefe7726c011";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/az/firefox-102.0b1.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0bf8e2681a79b406ff30bbe18f2b2a297fc9753b5a0eef4103ef53c550948246";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/be/firefox-102.0b1.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "4fdd0aa53fff4ae4a2482b057c6651aa162026962310a8246390a1759d0bd15b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/bg/firefox-102.0b1.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2720f21799bbbb3d4b2b466ec03156f0d917b9516842f8cd880846ce805cd23c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/bn/firefox-102.0b1.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ae9d0730f90ca2731a1591114eea81dfaeba1fb3163d622ece44a24f297b7a6c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/br/firefox-102.0b1.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "17e21d4db73c7d475ff72f11e01880774ff1e046bc6f099dbefde97f41dad8f2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/bs/firefox-102.0b1.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "017c6c0a0dc69a69299cd56bafe2b674423c8f06f5a5d5f53564993fe2dd6dfe";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ca-valencia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c00134e9beba1f1860646a364675437bddab803b6223cfa6c10ffbcbe0409a0d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ca/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2080acf229af910ff879a76455235a33099fe399746daab22568a5f44fb68e29";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/cak/firefox-102.0b1.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "adec8c1d42b2d5edb24d43b7fbe3cbc17213f29b725ad0fdaa8052b81152c62d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/cs/firefox-102.0b1.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "eaecfc5694a0cac8d5fdcb7faab8cdf9dfc4345010d6be624586667e70cb19f5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/cy/firefox-102.0b1.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bbad096759ad9071623ff78eb7641516b1e5773f850d7de3d14b75de30c84c3c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/da/firefox-102.0b1.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "480c261e00bb978f0cc7777489bec194d2a9e215130f31da647e80e5864a25d9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/de/firefox-102.0b1.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a79f862029cdc81f392df4c4773aaea72310640663cd221eb98917045b88952d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/dsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a04f396061267fc31bebbf3df5a0962cc679b4eaaad535f193bcc2427b7e36f8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/el/firefox-102.0b1.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "df91ab7afd1c07c2ee6b6a9340c9843be00fbfb045c396357b821903c3e3e482";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/en-CA/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b9111f4177bcca3e630a0a868f3abcf6f167723fed02fc00d1bdb0ee33a677b5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/en-GB/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "674d1bc769b2ba4c648621e68268e8123d250d7ad2d99acb184ceacf9d5578b2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/en-US/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8370ff349f4d8dd306c26cc2f0ace89d594439bb37ea0479132c0c407a8ae35f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/eo/firefox-102.0b1.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6c0c35679a0cc1ce8afd42f5cf7031d4b516a68f29552c6f06667dae0c177454";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/es-AR/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "aad712c43baa9f37511b814065be8919bf63ab066d1b2d1b6f904a19893dd1ca";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/es-CL/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "358dfdef54ea8c3eca7ba9e8be2bff5ec1749246e5e8d5c7cbc343a4213cc04e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/es-ES/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "51814d3c30830351a61c5e3d4d1d198396842af75122933f139edf6d427f7b95";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/es-MX/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "955acd8f8c52d239519edc72d4d543a4443ba2ba6a4fab9d8d1992964403d695";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/et/firefox-102.0b1.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a8f8349212f9276292f6c48efef9085e483adfb782dc78fc937b67c9d9f17426";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/eu/firefox-102.0b1.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "df31f354fc851ddaa109c8188c5a2969460be2894995e6ebad60c370f4fbffb8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/fa/firefox-102.0b1.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a1dd2cdd8ba88a1761cb32495c236d893d9ee1ceade2d50d82df444dbe790fac";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ff/firefox-102.0b1.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c76bffdb13f53979c150871906592b7595e0cb9c40325682c09666cffa77edda";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/fi/firefox-102.0b1.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8b1575c5e2c8b59caeceb4000b3ed5a4ec4497a4c00bc3c70480c363a706dc9a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/fr/firefox-102.0b1.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "17eb0d4793a7407143c9fb81bf29f72085093d730ccc73a384ad42611049c81b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/fy-NL/firefox-102.0b1.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "134716fc8a3222d57c2c80efe506cba93b3b90c4906e2ad6df3015cf7af3e81a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ga-IE/firefox-102.0b1.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6c9c25f24d3d1e66c65052d921e2824a957b876358d77dc50d1c3afb64602b1d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/gd/firefox-102.0b1.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "71195ddc56b0c4fa5f0969ec532909ee69604eee2eeeca93c9c93977a9192ca5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/gl/firefox-102.0b1.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "dc13b9e00c3ed0dd857574650ee9dada503b443daab5a7f5d15c813f953063ad";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/gn/firefox-102.0b1.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1c74f4bb5ccdc0f7d039528b28e995157b2fdc64d4a89ed30ef985e70e214fab";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/gu-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d0af0dbb392cd69e81e99244680c33edd2ee43f2751633c5dd6e1085e7886395";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/he/firefox-102.0b1.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d8e21573efff5f3d0327190bc77a4cc00631e209e7ee7864f188e7c5b7b426d1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/hi-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bb5c4522f3460ca036b799d5867f29cedccfa291571e29f45cf178c155e50a88";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/hr/firefox-102.0b1.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6aa8261afcb81efcefd4f1dd87a8a478f700271ab8b9679f5579c26b7d9234f7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/hsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "49e7b231a7044329d6ee4d9ab592af94b926fedcada0a495862f03662924b6cd";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/hu/firefox-102.0b1.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "172b59c4a09d7d976adbca2bdb7a3ab17edd226f48c8368d5881fca6c1683a0c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/hy-AM/firefox-102.0b1.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "58c6b3d9c05303ba1aa95332901dfaa7fe4bea73a372e88904265ba2a60b0ecb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "15dfaf1be33ab60f16a289abf93b4587d5f4f59ea40eb888a5f4b0fa995fe9e2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/id/firefox-102.0b1.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5a4725663aebea696994f235ccb0ad8a30099811062489263ebb31fb74bc9486";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/is/firefox-102.0b1.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a8d3e0a7339724ac80d5511a38a20bddd21e9169437e0ece90bea2bb905e9b70";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/it/firefox-102.0b1.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1c5413179863f736e6c33c55980b986efdb23106e2dfaa6e65ba8087130ee5a8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ja/firefox-102.0b1.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5cdced533cb8917c884f0933af8418a403c15e8cd4267a3e4ed5b4b44f004ebe";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ka/firefox-102.0b1.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "aa6e1cb166c3b6987b13af98fbf9cdf0218c170907b031a0a3ab0b12d816efb7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/kab/firefox-102.0b1.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3937ae491eab4de1c742f7e36370f8b40394938b69b78ec062dade560ecf5309";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/kk/firefox-102.0b1.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ca6907a9213dfd36c0ae47b75c606b7c773ebff92d60ebeb785efeb0d55a7ace";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/km/firefox-102.0b1.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7e36a11414ae496bc0478b29cbc23539b3bf373b2ce1337dc39eaa6b64082f6c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/kn/firefox-102.0b1.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8d49db33f9d6dee9a6ac0cf073e2aba82eed2365fb82a6d8ac774442abfc57ac";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ko/firefox-102.0b1.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f1bb09defa86290f95e6a437ce4a5527aab734d948b0d77a88962afb5ec3683a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/lij/firefox-102.0b1.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f0cf6c34bafd6e2bc4892bf872d456f2c55a74eb734b8285ed9c3901889cdf90";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/lt/firefox-102.0b1.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "496226d3c7f20540568553bd2aa3ea62c3418f03385909efb693556c15434873";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/lv/firefox-102.0b1.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5d5c735bf76ae76407c269029f26f6d0de91cfa100bb9b53c0fac6be956cc91f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/mk/firefox-102.0b1.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0fa3ee10829379605e9f8e98cf3005d0ad3a6623f94b838abb5ebe540ac035e5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/mr/firefox-102.0b1.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2308dc25440088b16566ce2898f78aadaafae59a9ac63b0848019d373790483c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ms/firefox-102.0b1.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0f3d7ba9db7401cfc628e3d44c9339466fffcd914c1ffde3b98ee1e4dba23559";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/my/firefox-102.0b1.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "520eeafe70e21117d9ecb47cdd3f7aa183e45357050e488de2524d23fd99d9ba";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/nb-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0b49458888ba323f17e5cb386a1ba1fdc4a0947c6323f0072e326ac347e937d8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ne-NP/firefox-102.0b1.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1db3c0dfeff7ca7b130ac23e8fb249f3fbfa8dda9e1a23343a121e11afca9786";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/nl/firefox-102.0b1.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8b5c07abfaa47e9dd26112002ffa055893d656d5716ea8aad95a8e6a5d56c776";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/nn-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "86b6391990fe065760122daebb1a9bcef836bd519636796e9a94051ece995a66";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/oc/firefox-102.0b1.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e690fab7e167593524f8ccd2a1a498f3faf94c359760f972ea428bfd2d1f8055";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/pa-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c89dd669e8f633ee603ed5c2df68aa5ea838fd975ec44d1a76ec40478e4c4098";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/pl/firefox-102.0b1.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b0085dc6e6af3970b8bc2b163c5c09572b30a61c7fa6a65ae2abf468bf087fd3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/pt-BR/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "347568d45297045c79c6ece860dd27e2b3df198f68cb9cfccecd4df32cefd6d4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/pt-PT/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7197b6c5f36bde9016c92b0f16d170c9b7d66bae8ae7f9e6eef2cb724c89851e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/rm/firefox-102.0b1.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b684be5c5602e2e35557b439a2003d8fa9ca1d9f1558a96c98dafa5b2bd75853";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ro/firefox-102.0b1.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9f7eab19db7753474571b9855bba17b670a0cceb561248660af5b94fd349e2e4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ru/firefox-102.0b1.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d6f1facdd16577e4b6ccbf424803802ecbe6d9c38495268c964202b98ebbc53b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sco/firefox-102.0b1.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "38c3b3f006d9cf7ba05b094afd2c2777be3450d2718893ecb15e9fdc88919eb4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/si/firefox-102.0b1.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "db9d12171cad6fdeb8f941ea63a752d714378298d23af61fa0d05aba4f3dc1ba";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sk/firefox-102.0b1.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "cbb91cc3e7420a2e2a5e0cdf4fbf07ea4d738d92e3256c5d6fc21d53c0879a14";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sl/firefox-102.0b1.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b24dde197b24c0f632dabaca54c94d8e5680d49f920b322d6ac2cd469f7901d6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/son/firefox-102.0b1.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e4889e5504f02b08e4965b22eb448adf3824b65a19b894a1da9aba868c7fa228";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sq/firefox-102.0b1.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "444cdfc2e3930bbc7c2420c126b672aedcd226576541f51e511ecc07d4a9f678";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sr/firefox-102.0b1.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a778d255e4139dfd15360ce5d7753594044b1bb5e71575dc460fd8c95110c126";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/sv-SE/firefox-102.0b1.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "21d0e95e3f1cfd4158cb58bd1acb0beb80dbf28f6a3327d173057b3cfa9e715f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/szl/firefox-102.0b1.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ff5280cd388245679f858eba3981d25a55ecbaa7596274f06d7fc4497e404070";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ta/firefox-102.0b1.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "61f01dbe8466e4f706c4cde8e02f85146c4bb4ef7cceb38b7432ab713ac4f122";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/te/firefox-102.0b1.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f4941c5a27aa00960d4ffa965e2272826e82a91a772f82a88900fba0a5e9e5be";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/th/firefox-102.0b1.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "476340de222b16ddf99435a4e0a6d595e56ebf405a75fdbf86e288ceb002e384";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/tl/firefox-102.0b1.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "43c30abc2e133df74092a37c1a76f08e5de29ab3e63e7d932b3cb36cf78fd962";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/tr/firefox-102.0b1.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f32110fa8ef1dbb250163991c70cd10b34189c715320e33dfc651f4f2eefc7ae";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/trs/firefox-102.0b1.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "39fbc1b1808fdc4a14412fd8eb0f55eca552c8199befbd6bf1b66670d23d40fb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/uk/firefox-102.0b1.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "94fc025ea6b21eca1ba3abc95adbe8139380834b25a77bab9edebe13d784a2a6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/ur/firefox-102.0b1.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d21902de47411cc61317e9d9a25a58f86d0c3c0fdded9d0aaf68746abb0799e9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/uz/firefox-102.0b1.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5af6ee234803855b472aee207ebdec44d632e0ca8490adbc73628d92024c0613";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/vi/firefox-102.0b1.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "86075662a1225c9d9e3f3c235cad38a461c070c96cfb5d76929d7f0f6ce71bb3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/xh/firefox-102.0b1.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e931160b5e1aa5a6b319d8464f3cf51b3b2d59b60cc94df75f0831ee04fb5dfb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/zh-CN/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a8cdc90b39fa9fbf75f39c9602c1d8ab35fbdc433c25222da5d6ed8fb78117ba";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-x86_64/zh-TW/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0db895acb0f98309f078661767fb6f0b0cc5c7124f39cfe9195e5a2323a18260";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ach/firefox-102.0b1.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0437f0464b665767ff2623d37b3826acb6069847db5c5a4397db9651962ec68b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/af/firefox-102.0b1.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cfe23197bbe6aae8677802cbb2ff68245b15d1fd8876b693de1c2dbf1f47d724";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/an/firefox-102.0b1.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-i686";
|
||||
sha256 = "20a25672447283d7a9de733a1b968ecb46e7a4ef99748f5881cb39beee360c51";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ar/firefox-102.0b1.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-i686";
|
||||
sha256 = "27b305d58aede4ff44adb519c6e86e032ec6f04174711923bb3923078e8c3fb8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ast/firefox-102.0b1.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-i686";
|
||||
sha256 = "4b716d276aa0557e7a8aa184686f274c59a87de029862effeab94be87a9b299d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/az/firefox-102.0b1.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-i686";
|
||||
sha256 = "441819ba50b7ebdac51a020313b42b72ab9d5ddc083c90830b5923674e529e3f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/be/firefox-102.0b1.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-i686";
|
||||
sha256 = "81f82eb9a9a7546934d993e96104e60eb9f113547d5f9aadd1927b55353f83bc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/bg/firefox-102.0b1.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-i686";
|
||||
sha256 = "98c90dbbcbce8479c43970a26347fa85ca7fa9bf88d8bbb40c3f59bf299d7fff";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/bn/firefox-102.0b1.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b0b13133854c2debd2adc0595c8228eb61d0528f7cb0f7c9003c8b530aefe112";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/br/firefox-102.0b1.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6a5cb06cffe271a7cefc2ba5bcdec55b2ddafc691a2966c50e8424d2063f3ea5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/bs/firefox-102.0b1.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "baaf8167a852a5167d5be28cc01ae679d52e9d4b68139f7025d562f9cf407f42";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ca-valencia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "06964de776425e78fc5f15bb3a80e7b8ab5bf48d1728022e3b421482c74cbebb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ca/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2d93398c2e6038e44d865b116becedd09a98784f47478d2ea515f4d22645b123";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/cak/firefox-102.0b1.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2d0ed4e73bf2f10548f87e977c110b7381943894fc9086cd4070c3bb3eb9bd8f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/cs/firefox-102.0b1.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ba2b742a49b7c9bdbf7aa69821cb115e08621406106651190e7b2471fb96aa2e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/cy/firefox-102.0b1.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-i686";
|
||||
sha256 = "924497f2d2f32ac9f2c4beaa70cf642278270d1d436c4df31dda9b5a6ff34768";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/da/firefox-102.0b1.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7df699188f0397746229416cdcec8b1a1153882870baaae2e2fdc7f7cd215f99";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/de/firefox-102.0b1.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5afe0a2a4cbcccd1fd2276b31c40bca27e4bab51a383181d00ccbe82e33ccd16";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/dsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2bf561c2b91498e0629b1ed51e7cde4b143f5c4ef922879d32cb8a84e3eaf541";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/el/firefox-102.0b1.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-i686";
|
||||
sha256 = "3b98567bbcf3e9247e162ec090dbcc74b9bd25d7956b778b95354bb29fca4f1c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/en-CA/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-i686";
|
||||
sha256 = "49fb286864884bad0b0475b59a8c8183786735b7faebbfbee16abf63428b83c1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/en-GB/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-i686";
|
||||
sha256 = "11c5a7beebdf04d0f256335edbaee3a6484c25463ab5fe9ffb8d6d05681b919f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/en-US/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c830eb987c8a5cea156b99a93ae1e81bb09731e20b0196123835e0973ca6e7f2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/eo/firefox-102.0b1.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ac017596916103c58e44e39c4ce78c824c518d1c9e0bfb91850f77e2c6fc01c9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/es-AR/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2c39d37608cd3334df267291dda11cc600342c828707b265bcf97965a8e63165";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/es-CL/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "80bd515fada96e0503ce4ba06da827ad92236144c04cad8ebd4a31b9664a44c3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/es-ES/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-i686";
|
||||
sha256 = "aaaaf66780064ce6d7308292db468f01255fae319656802e42405894341b0310";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/es-MX/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-i686";
|
||||
sha256 = "971ff94c7b7d387ba00efa3003b5c584e80acadea532543654696810aca8ab03";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/et/firefox-102.0b1.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c356bb64e7905846500f77729b273e4099720164d7ec60ba5dccfb6a52798831";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/eu/firefox-102.0b1.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fef22ca88e23a8b2058f3c18a08ca5c64319e800ae181d9f5fa577a2915850eb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/fa/firefox-102.0b1.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-i686";
|
||||
sha256 = "3a29f741cde5f2bae16f92561852c8c418366f7bd3661d857b21d643055aafc8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ff/firefox-102.0b1.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-i686";
|
||||
sha256 = "604d25a3299123e9fb5e1cc4e198584ccfbfd1b6ad901318dab1723f9bd4dacb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/fi/firefox-102.0b1.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "62d434f423017e24ddefea84208fd14e7a2c24ad6fb6daefe4e575167fbe19a3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/fr/firefox-102.0b1.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b78ec1c9307fb5f313cc6d3fdf9c65c6917d53322ca5cfbe2af750edcec5d5e3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/fy-NL/firefox-102.0b1.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "331035fd4827477cd14e30ad8451fda9afc8ad29e6b399505e2a0dcfe73bcbd0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ga-IE/firefox-102.0b1.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ce3ba6050befeaa4fa93b304412e8ca27fe884d471b28f30ffb821953b43bc98";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/gd/firefox-102.0b1.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-i686";
|
||||
sha256 = "9fd1f9f778258c582b60b02188bb2fcab40f5ed872f24ec4f6bba9e5644b4cdd";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/gl/firefox-102.0b1.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8869da2fc8b7ef9c2aba51851890cf84823269dbe8e37bdb730a36f9c326a1a8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/gn/firefox-102.0b1.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c9e9bf23a9cd45f25e262f6a6d310b9a526ab5e408500ecf58ee81fb68da7629";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/gu-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2beebe2851f27beff0df99656828da0e001e729734afb3c664f17956e161ef4f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/he/firefox-102.0b1.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6362379d495959cf29ec47dfdbafc6bf0490edbc53a493f8503259a1fa3129c9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/hi-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "720a83f277210fd17579ba983390898d6eccf56fca8eebfbd4f515a81a06e3ae";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/hr/firefox-102.0b1.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2885d066bfd9b9d2048c0b085453dac63dae24fd004e139f7cbc61a4d523555b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/hsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e493df1f717c789ee79b219252498dee64078cf63d8d01ad251f013aaee116d7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/hu/firefox-102.0b1.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "67cfa2f9396da798b6a40e16bb065195050f2a3ebc7d8e4f16c264f9064a7bbb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/hy-AM/firefox-102.0b1.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b50aeb41ada0842ef7a504000d58b4021efbdf7546af28a64f61ff1f73c1132d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f50d871307c56944db8da8bc9184e1d263438f4e65f5e1a224d457b50be9b221";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/id/firefox-102.0b1.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-i686";
|
||||
sha256 = "45f88f4f6d52abe5b2f2396e6dd9026997da2c5e200a5c1214f551db79f60545";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/is/firefox-102.0b1.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5fdc873a5169b90326bddb63bfeabb84dff1236989b2419d2552fe1a4ad374b9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/it/firefox-102.0b1.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b1fda09c4e30db3bf9f31f4ab90cba3c1e1af17a091aaccd48f73569fbff9011";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ja/firefox-102.0b1.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-i686";
|
||||
sha256 = "3cc1c9179d0ac123d8c94ff1a5432fdb0b71e98e06252322f5bcf460f4510979";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ka/firefox-102.0b1.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-i686";
|
||||
sha256 = "79737294887adcf0664ac739762f864edd522f675f3db9df9426effa2d7aa08f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/kab/firefox-102.0b1.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-i686";
|
||||
sha256 = "52fb97280fc2caa51c0b9acc4dece8247af707fe3de459d77edd8605b29214f2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/kk/firefox-102.0b1.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "636e013aa216ea096405f911f8205ce8b554698f47db4c1b54db341558ee5113";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/km/firefox-102.0b1.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-i686";
|
||||
sha256 = "49d99f2bd7ecf9b2fc13d683234b4a41bfc6ce92a251dc6749b3b9e5e0e537df";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/kn/firefox-102.0b1.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "50795dfc67f3995a78ba45ca8177f4e6f57c3385425fed7ca4d0f12f97526152";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ko/firefox-102.0b1.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-i686";
|
||||
sha256 = "88f81dd2c42afd3c0736cc285770430dfe42ebde6b8a8bcac803ca2ae48fddd1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/lij/firefox-102.0b1.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a0644937b55e0362024a84f8081515032ca8b45dc464d617003aa97b750ab75c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/lt/firefox-102.0b1.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a6a33ee2772db50c58ee6bcfce0e792b15a4a9c0e32b29761d293ccf9f133e6a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/lv/firefox-102.0b1.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f5cce0de3a90ce186333f7340800cd904d86e8ef9e67d8cee74250b5a7ee229e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/mk/firefox-102.0b1.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2192f4afd3f2deef349b94af6cfa991b52eca2b2b471d01c49c8d2fb52906215";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/mr/firefox-102.0b1.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "52a473915b50af806e4411072e6ef1bb11513a1c2318cea2bc30316fea52e3c6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ms/firefox-102.0b1.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-i686";
|
||||
sha256 = "44222951d447e20d00e114dd2f8612f4d0530cdf2f16e2eb6b138d8a0c7dbc5f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/my/firefox-102.0b1.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f197fd101f16961ac1c1b14b5032b2024cb57bb058e391bc718f6322e7b09a42";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/nb-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b2bdc585bf4e5a5809b5c8ec71c897ed002fc9f078c519f19c00a7d435ce3476";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ne-NP/firefox-102.0b1.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fb7d577e07bf326aa567e3984225f56238e7729f1dfc4a483553c3c5afae0ac5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/nl/firefox-102.0b1.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d29229abcc0bd8f43351f66d7971df31bd6954e3c828b3832cf76434ad235773";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/nn-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d386cd22da4240e18a43d901b5188c5671753f61239b87f7e4b3dbc005c38c9e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/oc/firefox-102.0b1.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1eea04b33f5c49d93af634e6b5d1932063915920677c21905ae164c2411d4b68";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/pa-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6984adee9873c7fe84e1efa5628d59c53b4f7576e8ec11a9f4ff95f456426b34";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/pl/firefox-102.0b1.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d907cf20cd8efb9159572df0f287774b3c01bbea74ce081f9e2ea43c5a046c5f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/pt-BR/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7361ebdc18f68f42b8c9de21a7282c073bfa2974a863cfe76b61a6bd6abfed52";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/pt-PT/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-i686";
|
||||
sha256 = "532d63e38277f617f2f9876baaa01ab12ecb52a6c1997c30161e9caeb7a538f5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/rm/firefox-102.0b1.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1acac571273ee2b63ed09df573ae956ada59046213c3b6534cbec05af48de802";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ro/firefox-102.0b1.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1995c012bf7b29ea733c19d0bd29dd10a407cdca0d7bd9f3de66a3860a3016cb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ru/firefox-102.0b1.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-i686";
|
||||
sha256 = "298861e794b2cead714a95fc6a147a05e72c0a29908f0520ebc92a2d389e8d1b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sco/firefox-102.0b1.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d561c43669d1b55d3d0b92df2010b53f4d1725111e5392a2aeb4d3a7c10808f0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/si/firefox-102.0b1.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-i686";
|
||||
sha256 = "92e3767984e459031043d2c1f546cf78b37ca66848a2388ed4350bdb839e61ed";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sk/firefox-102.0b1.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8e0c88b4cbb847a1778fd31571b7ed0aea7734057e67b5b940414121bfc311c6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sl/firefox-102.0b1.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cdadc37d4e1d6f744e218ebb62775d906575fe3c901ffb32183c40eab63ece46";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/son/firefox-102.0b1.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2cd07ddb72b439f603540e0d9c6cc15ec102048d1cf63d4a0be048aa817588df";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sq/firefox-102.0b1.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e6d51f7ff2dbfb189a7bdacfb4610f06e705a1b761a2c6d74e4b6ac3ca6857ca";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sr/firefox-102.0b1.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a61d649c677a96c678c126d412e7b61b8e0ced1e4ccc489dd196bd552262f414";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/sv-SE/firefox-102.0b1.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a0eb1c6823aec788c1499c37a61fd73b14e68ec83bdba012fb21c214aa1c274e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/szl/firefox-102.0b1.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e565d46b09754eb91c8dd9875f02c4a46aa5d246178960821296b7110b3e31b4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ta/firefox-102.0b1.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8f8aaf241e0aee9e3bbd2758f0c2a3942966ec8011266ecb4f66a31709619b53";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/te/firefox-102.0b1.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6453a3b0c13566ff47a398c154a74d5845f098e610766e49ed700c623bc4f311";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/th/firefox-102.0b1.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d7f462112729d9c55e65fa994b63837e57abfc993154c0e04f58451ec91eedc4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/tl/firefox-102.0b1.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "666ab093de8e3fb245fa3c71f21d27bc7c1f4da6777d1e02ba3e84994ed8774e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/tr/firefox-102.0b1.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "dca1298c17bb682be5f7d6e8dc29971141b0356ab4d57a4131fa321b5743a224";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/trs/firefox-102.0b1.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a424735263a3380f5615412b7f1c018a415d86d6cff7bebfdf8e3bef949e65f5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/uk/firefox-102.0b1.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8928f31cc9dde4abbc87ca25d2df2a1e091dffd6954cd8967fa6aae64026ddda";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/ur/firefox-102.0b1.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b1c1ccae2e38af8738b11222d2ddfaa833502dba1888f333ce28d70bacdc11c0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/uz/firefox-102.0b1.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-i686";
|
||||
sha256 = "207dd10285eef70d20573e9513af846c98928d7d847508adc98f5d2b2d3f35dc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/vi/firefox-102.0b1.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "14a880166e78f6ce298b4fc8c7a3e1af8a4b59265ee47cd7e9b10cfef2f071d1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/xh/firefox-102.0b1.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-i686";
|
||||
sha256 = "be4209406b5f2fc7b10020d4c8ce9caa50cb2362348b5d357381693474bc30c9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/zh-CN/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2afe953fed72682c999b81ab623a3643d7510d6a6bb9c67b88e265704cf12626";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/102.0b1/linux-i686/zh-TW/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-i686";
|
||||
sha256 = "73c2cc84876d74e6de355835274eb2e9d5fc9ce4868ed0550e8d8094d9d212af";
|
||||
}
|
||||
];
|
||||
}
|
||||
213
pkgs/applications/networking/browsers/firefox-bin/default.nix
Normal file
213
pkgs/applications/networking/browsers/firefox-bin/default.nix
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
{ lib, stdenv, fetchurl, config, wrapGAppsHook
|
||||
, alsa-lib
|
||||
, atk
|
||||
, cairo
|
||||
, curl
|
||||
, cups
|
||||
, dbus-glib
|
||||
, dbus
|
||||
, fontconfig
|
||||
, freetype
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, glibc
|
||||
, gtk3
|
||||
, libkrb5
|
||||
, libX11
|
||||
, libXScrnSaver
|
||||
, libxcb
|
||||
, libXcomposite
|
||||
, libXcursor
|
||||
, libXdamage
|
||||
, libXext
|
||||
, libXfixes
|
||||
, libXi
|
||||
, libXinerama
|
||||
, libXrender
|
||||
, libXrandr
|
||||
, libXt
|
||||
, libXtst
|
||||
, libcanberra
|
||||
, libnotify
|
||||
, adwaita-icon-theme
|
||||
, libGLU, libGL
|
||||
, nspr
|
||||
, nss
|
||||
, pango
|
||||
, pipewire
|
||||
, pciutils
|
||||
, 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;
|
||||
} // config.firefox.policies or {};
|
||||
|
||||
policiesJson = writeText "firefox-policies.json" (builtins.toJSON { inherit policies; });
|
||||
|
||||
defaultSource = lib.findFirst (sourceMatches "en-US") {} sources;
|
||||
|
||||
mozLocale =
|
||||
if systemLocale == "ca_ES@valencia"
|
||||
then "ca-valencia"
|
||||
else lib.replaceStrings ["_"] ["-"] systemLocale;
|
||||
|
||||
source = lib.findFirst (sourceMatches mozLocale) defaultSource sources;
|
||||
|
||||
pname = "firefox-${channel}-bin-unwrapped";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit pname version;
|
||||
|
||||
src = fetchurl { inherit (source) url sha256; };
|
||||
|
||||
libPath = lib.makeLibraryPath
|
||||
[ stdenv.cc.cc
|
||||
alsa-lib
|
||||
atk
|
||||
cairo
|
||||
curl
|
||||
cups
|
||||
dbus-glib
|
||||
dbus
|
||||
fontconfig
|
||||
freetype
|
||||
gdk-pixbuf
|
||||
glib
|
||||
glibc
|
||||
gtk3
|
||||
libkrb5
|
||||
mesa
|
||||
libX11
|
||||
libXScrnSaver
|
||||
libXcomposite
|
||||
libXcursor
|
||||
libxcb
|
||||
libXdamage
|
||||
libXext
|
||||
libXfixes
|
||||
libXi
|
||||
libXinerama
|
||||
libXrender
|
||||
libXrandr
|
||||
libXt
|
||||
libXtst
|
||||
libcanberra
|
||||
libnotify
|
||||
libGLU libGL
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
pipewire
|
||||
pciutils
|
||||
libheimdal
|
||||
libpulseaudio
|
||||
systemd
|
||||
ffmpeg
|
||||
] + ":" + lib.makeSearchPathOutput "lib" "lib64" [
|
||||
stdenv.cc.cc
|
||||
];
|
||||
|
||||
inherit gtk3;
|
||||
|
||||
buildInputs = [ wrapGAppsHook gtk3 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.binaryName = "firefox";
|
||||
passthru.libName = "firefox-bin-${version}";
|
||||
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 pname 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 lib; {
|
||||
description = "Mozilla Firefox, free web browser (binary package)";
|
||||
homepage = "http://www.mozilla.org/firefox/";
|
||||
license = licenses.mpl20;
|
||||
platforms = builtins.attrNames mozillaPlatforms;
|
||||
hydraPlatforms = [];
|
||||
maintainers = with maintainers; [ taku0 lovesegfault ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,985 @@
|
|||
{
|
||||
version = "102.0b1";
|
||||
sources = [
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ach/firefox-102.0b1.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2869c8410d33dd72aa49640e8e4212495ca8d727313ed04f98075d069770ad37";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/af/firefox-102.0b1.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "aa209757eefccd0a55ed4c5fcbc8bf3bbfb2370199a3c344d758e2bd952c5b79";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/an/firefox-102.0b1.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "dd6adfd7c206ec2141fe4d8cdf71d069136a9e794adbe47aafa178f44f815b80";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ar/firefox-102.0b1.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0951a188b1eac97dfbc2c6aefc2ec6b39277bd4137b3114b1819c10c7f473729";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ast/firefox-102.0b1.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ccb5ecd4eead223c7a1603bbcd2b27be131353a72cad27fca842c72d9b5c8ff6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/az/firefox-102.0b1.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "71fab001a0525b286a25bb865148279e22d012ceb0674f961bd1ed23dfaba53e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/be/firefox-102.0b1.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2f81b34bbde17d9cea6effc1a4679b4c56a7ee235d387e5d301661b9b0f62b8a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/bg/firefox-102.0b1.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8d0fc8ff65ddd91a12087256bd551aaf1fe044e5eea42c739bb3955e0b53e7ac";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/bn/firefox-102.0b1.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a82d5849c01705daa7ceae84f55b5234ab7480371c9a164631ba66055ace8e47";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/br/firefox-102.0b1.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bc2f6129be28dbfc83116ba77afad7ad65593e04c7619c9db955da0aed2259c8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/bs/firefox-102.0b1.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c9901f6f2dfd76de70af99fe8c40c0e4e293d83391ec87529e127fe5de29acf8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ca-valencia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "97de640fa7679a94c154bf283cf458321fe7e57976463826c321212e86a7ae04";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ca/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "400fe18f1e123a82110cdd1be6ed6f3962f95dbad2aacba131d84726e55bc54e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/cak/firefox-102.0b1.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "af223a64339ce70a87371d0c884f0e875f45489d4a4a3205440a0438dba636e3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/cs/firefox-102.0b1.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c80711a10772f82d79f9c869fa3423c1f2d2751e3d74a3d03f87970bc496cc2f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/cy/firefox-102.0b1.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f2a3964821da317e201e06e49d41fac33128ee2e756f405eb5bea7d5fe6d33ef";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/da/firefox-102.0b1.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ce485755ab3e3f99fd9702bcbd4217941bbac25486dd14c5680c8bffef198879";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/de/firefox-102.0b1.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f18659798afc514287e7932ab89e9b474a1b1cd211afc4dd7955da5c8dab118e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/dsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fb27f8bbefd2fd75c501ef5e1f3f00bf693e76cd16fd84f201e4af09cf51d260";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/el/firefox-102.0b1.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2821dd98fa34d8606a9fcac6d1655d10544d0e052e3815d5ae8f2c398075ced8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/en-CA/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1761cace29d72c97352d7884bfb11507e0536691a33c493718d3194f927a91a1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/en-GB/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "90f8500e2b4f8bffe0fdc0f3180781ac310bf13013ca811b277663d31936e90e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/en-US/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "de886e61ef05adac7f5d3aceeb77c353dccc1a885fa99917f7c3ea8803fcc027";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/eo/firefox-102.0b1.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "16ab1feb9b271915f67c68468815b4d968693f7193ca80a8085160753c07ca93";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/es-AR/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "22577df6253bd464e3969beefad1d4bd73d25eb5f5e8b2a092e721d1c71bfeac";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/es-CL/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7f4e96171972faac42a2853d6cccc295133aeca58002b846af4af35c0c1fb28d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/es-ES/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "533d1dc7b12f5be8d162a09b3a805769c45fd59416f8e42259c46d5135e4f98e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/es-MX/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "db8af4d55e0bd9f2b0b74c0e7036632a59d69056a93f5acb935fcab0ed34d9af";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/et/firefox-102.0b1.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b7919d4c4039eb95664442e1b8843bea2d9917ae1b6e7c7078d2bc3977fea011";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/eu/firefox-102.0b1.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0076d6f98eda1417402b7bd813014552d6c7d4e2db0bf2dbe0b48c8d1b7e07e6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/fa/firefox-102.0b1.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "84315f84ebf2822a80606901ee9fd95f780ec3875c0d9f1fc0e3834cdb877b9e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ff/firefox-102.0b1.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "40ab1e5706528fa2d4ea42c24ead5874d0581f173512c67302f848a988c9301e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/fi/firefox-102.0b1.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d23c4a76f0f9cb418b081997344294c148bfb8fb8c99f14a852ebc60a54939cf";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/fr/firefox-102.0b1.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a74b385a1d6e47015e6f523bd2e1d397f87939f0107e2038ec4672f908e7dc26";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/fy-NL/firefox-102.0b1.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "57900479e289308e6a99e01553a78af144b37c2892f79636c3a76e5157f22671";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ga-IE/firefox-102.0b1.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f269d95a93794367ce2c5e80d8f9302f744d728c6ffb1cd2b0a8a24f2a1cfa43";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/gd/firefox-102.0b1.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fdbf3a0e009673a3d24b0cbeee7e7b86e07649369abd32448fbae8ffeeb4c9fe";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/gl/firefox-102.0b1.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "cb15cc797bb74894ab181060801359922683ea7d274e2bafa4fd941b99b0f55d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/gn/firefox-102.0b1.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a9665138e16c2bfda6980344ad3ad85a655320bf71f97f147a69ee622ef90030";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/gu-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "17ffa9d59aeafd899406db446d236a1c8132196c48146e970920904caf7eb450";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/he/firefox-102.0b1.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "10bfb240efe94e6012412c212bf8571b60942f97914f6a03618b8facb547b34b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/hi-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5c9b8754f872984c34bf70f3ce59354352ea1da5a131597b529ec3d97f1bce13";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/hr/firefox-102.0b1.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3925cddc5997ea032920aa41c943a9e386a56ba177198a83f487b4e8f7c1a31c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/hsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bb15df7f320c78c0bd0384100f21e453be564fb7e2c164491fc006173b5f43c5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/hu/firefox-102.0b1.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0796d42094d84133062d73d3ca11b209b7a4d53dd67426c41a662d388d73c534";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/hy-AM/firefox-102.0b1.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "62900bab9827ebd082679b262bfc8387214aed6fcca8e304679095953e2dd2e0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9a13f091e0f319223df7029a82c1a152a2e659ce3a3209731f706f303711e2ce";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/id/firefox-102.0b1.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0922a1b44f3c5e2fde754b27ee31660d4e0fc062bd422febeabfa6b3988717a2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/is/firefox-102.0b1.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fd9534ffcc53ae2947d486be722b367990808a9ecef7e82f29188d563bc4eab6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/it/firefox-102.0b1.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "78c5cbb05369a3467108c05ee832a51ee26196cfc33607c9d15e6cf755a82c60";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ja/firefox-102.0b1.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1f48c4f96b7a599a0ba28365d901b5a3c3354bcb147da1bdb0a18d379dee92c9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ka/firefox-102.0b1.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e92821bf3bc9be390e8feef391ca0f5044014ea92a06edc424241d8c761c6be2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/kab/firefox-102.0b1.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2eb9cf42edb080503792fa8a730b3fca624acdf48cca0e965b101130609a6392";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/kk/firefox-102.0b1.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d467ecff9f0fcd4107d5021c1eeec2741abb124dc9bc6fa8db7ca5d5c0403df0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/km/firefox-102.0b1.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f3cdc420d103218acc06e3622b4624ba95c705fefd42093550622a2ce3373d1c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/kn/firefox-102.0b1.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e16917d4ba4ade2c3c8c5dc1309c220013f3e3f2b091991773ba8f3a448295d1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ko/firefox-102.0b1.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3d73f2d86cf4acc3e9469c7020c1bafe013d6aafe3ec79c16808390e2e676c48";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/lij/firefox-102.0b1.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "73165758c67fa7f8cead25287742ed0c34cb3a0d429e4b559bed0d1466c06f9c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/lt/firefox-102.0b1.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8e0cc44be1054b890591d5fb3f6625919504a6fdcf60d0271794f1a41db5a545";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/lv/firefox-102.0b1.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "14d6c3bd99487a768fc3696f8ea8b68487e46ace807a26b9c18df0a3c43c1ffc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/mk/firefox-102.0b1.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8cebf973addfc612c1c0dffdbe785fac53934f5bc542d1e79909d1bcdf025b51";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/mr/firefox-102.0b1.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "493dd2121d648367af1edd3e80db91015a9b8a9a47eefef9276ef1f6bf486f22";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ms/firefox-102.0b1.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "1508aa8660e8f666e04fc0a6c3e49b51a51816ad4b8ee43c0dfb680e2e90f611";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/my/firefox-102.0b1.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f0878efedb68f2a03366e4874dafcf754e59921da849ec6fb6d39cd153315f1e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/nb-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "69001a55ae4e756393f273ce23ea13df8f8b47fb97359016d65e16dc6256551b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ne-NP/firefox-102.0b1.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "4bcde837fc1bfc6f97c9539d607b6f7e748ff2e83e2c0b9a54aab2077eb446d8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/nl/firefox-102.0b1.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "97fc75c9feaa019ea0bc80f9a1a6e8054e2bcd583071bc179cfab66d35c8856e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/nn-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fede171c784763824fd3a9c2a2788ed6eb945a7329a6e4e27b3d4a5c1bd8ac18";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/oc/firefox-102.0b1.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "625f5654a4ae1345fcde23e9314ceed16b17505b6070064c4e0d325e8d0f7ba2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/pa-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "30d3814d7d53788fe61f9322fb70228584e47ab1409e5786711085d61b0dc0c5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/pl/firefox-102.0b1.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "afc89da60ff9a1a1811bd0b1d5301f73db0d172568012205e304eafda1e0600f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/pt-BR/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fad00c1dfc184e4beb269b7cbe81d940c27b757fa55ec3b44510849b821c1f6a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/pt-PT/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bde2a367aa909aae4edf73abd4c877b71292841c89a82c96bc136d1b80a722b2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/rm/firefox-102.0b1.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8a0dc63330317d8800c951a4db66fe1753b4511252051168f2af8f16a94c9364";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ro/firefox-102.0b1.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c9c963ec177336ed842f005750e4e08bec393a0f85d9c681ab322b47ecf8e699";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ru/firefox-102.0b1.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d04893d872e73793b65f4d421a1514dfefa282df294e5f13814da89dd1643fb7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sco/firefox-102.0b1.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d0014e69debc8df04bf25699232ad7bd85a75dd241c232f0bff52b1fce26310c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/si/firefox-102.0b1.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c1613bacf6edc90334a2ade3ea0718d0dece70bf0f21823aa1d247fa3fe94152";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sk/firefox-102.0b1.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "456bb9ba488d512a1b12dbae82688c5da5e611c9ef5537a10e86adbc415cb625";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sl/firefox-102.0b1.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "aaaaf31bd6f8034df1d678367c017dec07eca73e3e46d250e61b9897491f7afb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/son/firefox-102.0b1.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "533408b8c4b4b4d706a33530d6d5886c6413048ad7871da35f7baf1ba75a5bdd";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sq/firefox-102.0b1.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "cb4d01b984e68673f1673468cb286560e511674f55eb778af51b7160e39a7097";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sr/firefox-102.0b1.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d5eb66a4165aac9491bf64176f07bc7f84ee4e98ce81a85e0e1b6571c5fd4a9b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/sv-SE/firefox-102.0b1.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ab037e78469d27856c5224ab615f4f222a95425ba8a2d1c356b36092595740e3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/szl/firefox-102.0b1.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "52bfa587c0ef1a327a8fd1cb4132b3260326c1e35266dc81cba70427a38c14d7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ta/firefox-102.0b1.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "571831d05d2041f4e5017f02492f412ee4a6d22434f8c854fb03629ecbe0a4a7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/te/firefox-102.0b1.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "05a50bb39a94a3e25c7364e051de128cb06cb69ff097532dadc4d38ad2ba4765";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/th/firefox-102.0b1.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "54e1dd8283e83db7cc7df02c228ea6c07918925229fea66fdab3e2aecdace37c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/tl/firefox-102.0b1.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "8b213e29de094b7a8b2ee28bca4d4c2adf9b1f2f3def05877d4d84b177b16381";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/tr/firefox-102.0b1.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ea5ac108be644de8ae5d6098079e70d90d723472382bf4b656a4b10b32089aa4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/trs/firefox-102.0b1.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ae62a9b06118c9d692eead535b5369dfdf6615c65a7458e93873a4c34aaa9809";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/uk/firefox-102.0b1.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bcf906c12077923511b7dd2b9cf893e9aaa5dffd67997c4ea6dca47808a94001";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/ur/firefox-102.0b1.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "710e26fee7484f0ecc2465d8da3f42c986efe9102cf02c543ca6a08df8f57c16";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/uz/firefox-102.0b1.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c09c8f79961467daf9d2f9af59d1109603b0d40746897dd037e1fe489f910f53";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/vi/firefox-102.0b1.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3ecf131c82a70b1609f65727a7f79bbe68b3194bea85fd02fdcd12f681ae9fae";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/xh/firefox-102.0b1.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "50e0ec349cbf8939847aa0de54e2fae7bd71762602ce3ed62ca40b834b089a00";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/zh-CN/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e800d967df599c5d48235af1038875d23ea4902e6263e0f5d779a5ff5eac9cff";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-x86_64/zh-TW/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0946cda9640bbf31727adbebc7b2dd221a050109d7248a77a2e7b443ca9d3334";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ach/firefox-102.0b1.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7d29bc8f1487d8f3dd19f7ab0bf6e40ee357199cdd16d03bf07033bef6288cce";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/af/firefox-102.0b1.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cceead004baf8183d82c9b9b1dedb18e5fe9f6e558a44f0fee7669f7a51bd357";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/an/firefox-102.0b1.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-i686";
|
||||
sha256 = "baf5bf3514da84f537da2271c772f7e7308389c46712826f3f5ddfa43f3316f7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ar/firefox-102.0b1.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e31abc2de63a6a679fcf733b8a12827b2460024f2bbaebe986016f2c5705a1a6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ast/firefox-102.0b1.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-i686";
|
||||
sha256 = "4663f930dbe9a2c64ae4dd873903828d7cc26f0673353e7be3780feebe58718e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/az/firefox-102.0b1.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8a952c2714e14c973b114ef056a6110ff1b937f0fe4b0c5a3f241b9d48d0c698";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/be/firefox-102.0b1.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-i686";
|
||||
sha256 = "61a78df562a99240b03a09d642c0530a8bd55ffd6bcdc15db4f9bd8b471eb808";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/bg/firefox-102.0b1.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-i686";
|
||||
sha256 = "80c0f371915db526e9fa400c662e87beebd3f122ce3ac15195bd70419e509ec7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/bn/firefox-102.0b1.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "48b33b1e6e485b38e2940713ec972d70eba16938fe8780acb856833e2aaa6cb5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/br/firefox-102.0b1.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b75e59a526a34d8bdfe592d48ded3d1559d6de7fcb6683e356b212fb04179002";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/bs/firefox-102.0b1.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a55c68a945abceccaeab17418a866a5f5e5f7644e161faa5b3208667d54a877d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ca-valencia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a7afe58e11b0cf0dc95f9543aedbd88ce03ea246b92ddcb1f93340b75cc35200";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ca/firefox-102.0b1.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a4039e50de751a61e5a79b4f35ea6b2495974a7c39394c25748149a362b4fdc0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/cak/firefox-102.0b1.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e021c889f0e180fdd23250c7993fb4e5d1e5c0a6ec801943cba0f05fd0909129";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/cs/firefox-102.0b1.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "15439bf1c939707b6062eed5bf59c22e740ffdd4ef9a05cf4e01df502d4febcd";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/cy/firefox-102.0b1.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2d0e4c6851836b98d65c6a8f62a976b4292fdc6a2c612d9d02f1f825bea0ec20";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/da/firefox-102.0b1.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-i686";
|
||||
sha256 = "19f0411b95446cef94a304f69fcb1c0e2471fe7c866f36eebba3bdf501dbd0be";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/de/firefox-102.0b1.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-i686";
|
||||
sha256 = "80b8cf81da026b576788453e179a6db128e7d2ffb42df12390ca731a7f62fc12";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/dsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "dc15b9f7c07543c87232d62f503859b89b13d65a66cbe2e44bf9a3b306005a01";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/el/firefox-102.0b1.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-i686";
|
||||
sha256 = "52f35b4225b6df62bd1946174f1ba109503cd6a77a649f6b31f2159650a620d3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/en-CA/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-i686";
|
||||
sha256 = "366fe6d1c3515b18049d85913ee86c38b5be461f99d6ffbf1c635dbee255e957";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/en-GB/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-i686";
|
||||
sha256 = "af289855db6d990dd3885e3263e32e627dd381d7bba3193ec6269e445cdc4f00";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/en-US/firefox-102.0b1.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8f1bc05072d986a97995ebf0ca4ba57d345bc467747e9c420cf6e3c8d8ab5bd9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/eo/firefox-102.0b1.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1ffaa167521c7dd200371d03ffc6b2137dc6d964010f71e65e4b182dd9806af1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/es-AR/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1e1f92815add28a3eee7ce0c4edad7e81a5bcd96de3805eacb4e6b4b0cc9c7e7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/es-CL/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "4506728d6d0ffd9ff80fb213187cce5170708a2413a5047b3e95196d78b98ed9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/es-ES/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c90872f86df92a2ceaf7c78990b52e144f7b044f67838b1856eefd02aae6faf5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/es-MX/firefox-102.0b1.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-i686";
|
||||
sha256 = "100d85d1862129a6fe3d6ef8220e549776a2c67d62dd38db7a13cbeb51a2d58e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/et/firefox-102.0b1.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-i686";
|
||||
sha256 = "76ee145a97fe2f1c96f48e2f7b2248fb35817ae8f98414228e3117db1aa5bd55";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/eu/firefox-102.0b1.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b2637f52752e2641b0ae5c700dcea84d3e4def470c3995055f871a8945fcbf52";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/fa/firefox-102.0b1.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0ea2b65aeb6e0a562ee87cd4fa980769b1eb56e58cab76dd7d4a81c8f40a2478";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ff/firefox-102.0b1.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e3a8d084202dc1e640f556074e06165c0a016486834a1011b872aea8f8c8e7ea";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/fi/firefox-102.0b1.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "35d48e97e5ded260d79723338d8f91d05fab37be8d960503801240cf69504639";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/fr/firefox-102.0b1.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "9c96aeaf1470a49a28cd29d5d6c5e31f76c5e0f610e5a6065ace3585ceb7ff2d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/fy-NL/firefox-102.0b1.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2f498d0fd9ffb298a9a54fa860fba3420ee8ca82ac45f70639dffb64c73aa458";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ga-IE/firefox-102.0b1.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ee34018c8702d7bb9c30e526aff4f795e1a40509b8e8eede985e9d413aac571f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/gd/firefox-102.0b1.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ca52067349378fbcdd33f84c31e7cbd3ebefd86fa870cef98daebd27ee607702";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/gl/firefox-102.0b1.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "16440444c26bca766105eb9888d7d3c38c7462764679ac4ac0b82e8884eac49d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/gn/firefox-102.0b1.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "53cc0f9ac721262eddc4faaa3386eb5acce22a92b3d8433c8b4a4b0f090bf3d8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/gu-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "27abf002b149d493cb3f11719904fbe347ab2dec5d46e6e3e5e24a17f958c23f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/he/firefox-102.0b1.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-i686";
|
||||
sha256 = "33b62093079be24560d911cfdae89312aa980b8342c6114ea8359c306c2c3681";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/hi-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "18d0406231672931d4e24d0baa91786811087b496b885c2cb0bf2a4d8dd09bbe";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/hr/firefox-102.0b1.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0f6fe33d4d8afde522b80567640f382a7e9ef40f8b161f574e3133b54e738233";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/hsb/firefox-102.0b1.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "350f6b854cea4720f1d9acb83fa738b3dce7877a2c8a3cf64d68249883a3d22d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/hu/firefox-102.0b1.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d8b008c162608682e1e609cd853f02a374d7210461769307772b2aa0055befed";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/hy-AM/firefox-102.0b1.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-i686";
|
||||
sha256 = "14f17996404594e9e974f2c16c41dd83866e8f896900203aab975ebf7435ef52";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ia/firefox-102.0b1.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "21d47e59574336c64583546f84a4be97c9639093788926b4f261a868c2db1bb2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/id/firefox-102.0b1.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e6ea69ac717f03f963bf9304946e2c2956d5dc5fdf154f1189b2ac00037a8770";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/is/firefox-102.0b1.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e1497f01bd0e4b979f38584541a268c29be2723ba396327b5a7be961278ad81e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/it/firefox-102.0b1.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6943c5ec04c7c79c92c61081c9e896ec752765d813398bac568fe1869e79b83d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ja/firefox-102.0b1.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-i686";
|
||||
sha256 = "23308e1cf1eb70bcc5d3ccae8fd3b9f5e4a111ecb5690d577c89ea57f57b9e7c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ka/firefox-102.0b1.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e6bca98a1d137992f698134f970c75e0317c41f8ba3cfb9842e8c415ab361fd8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/kab/firefox-102.0b1.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-i686";
|
||||
sha256 = "267b9c22a2d92ac187150a1935ada053034c01ef45fe770dffd76351b33ca29f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/kk/firefox-102.0b1.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0feeb4bef2f52e5f0d7210753e4e02deebfe0ef33bd2f0840b6f7f743a1b445a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/km/firefox-102.0b1.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5e851a5c7b633ead4583aaaa0668d9e2127a945019530c5dce48bb3a5b3b00f6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/kn/firefox-102.0b1.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a95d69cbe8079d8a132e4d31521b6a45f7d7e513d049541bfa4cd24788530cc4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ko/firefox-102.0b1.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-i686";
|
||||
sha256 = "87c1d6fa8361cbc4119b9f92acbc3cd196518123af73067a507a04a8db3d313e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/lij/firefox-102.0b1.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-i686";
|
||||
sha256 = "81d934b8d5ca12875dd612c8a204e6bb7d37364f9b4cf1ecb99b8751f92500ad";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/lt/firefox-102.0b1.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-i686";
|
||||
sha256 = "741a87ef1af0193b63adad96f9f43423c99adb582ae1168f56d9909d1e573b47";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/lv/firefox-102.0b1.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-i686";
|
||||
sha256 = "85e31738fecd400f797c1dce5d30f8b91ff373bc02db06f2e9f4c1684ccaed9e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/mk/firefox-102.0b1.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "45c50c61b20c74bb7ed0a814984147b209524f78c7a6aa821093694795bdfbe9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/mr/firefox-102.0b1.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cb094495dc2f2aa9ace28dfaba79bc1c627c6f5dbb0c92386d7fae628642d64e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ms/firefox-102.0b1.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a858b0b119d81fb909a8ec0d8ba5b20a480a9cf7d52b10e96c62e34e45053ea5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/my/firefox-102.0b1.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-i686";
|
||||
sha256 = "557b6190f3dca1ffbee31d5620e420f997d9033bee398dbe467fd12e2007a129";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/nb-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6beb47419a38e014fdf7870a7c42b35d583b3787defcf7092c65d920a9682863";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ne-NP/firefox-102.0b1.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-i686";
|
||||
sha256 = "3ecfb96b7f423039e7cc51b325dc363ae6b769035103a1b0360476b6a5842293";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/nl/firefox-102.0b1.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e22499361532c90dd0eb27c21d0788d0318b502b127dafd57216ee3e73eb4b2b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/nn-NO/firefox-102.0b1.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d1e48a710173315069779aaac38d0e3c32bd63ce69e75e0c7e7380ff3c30a8f4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/oc/firefox-102.0b1.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-i686";
|
||||
sha256 = "de8ccc3ab0d7696ef0ea2afbbe08beb30115facc1683e5dbfc54b273e72d7df1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/pa-IN/firefox-102.0b1.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7ec93c3e8db7be9bf24d071db1df100252acbb07a933985e4a16810c0e41d00f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/pl/firefox-102.0b1.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fb57ca62cb348a627125f669179433e3daa300063b7eca8edf57932ab3b0e2a4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/pt-BR/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e3955fc279438ebb92e3cbd4376c0304a2aa0f903a54b8cafa150b701a3d1f4c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/pt-PT/firefox-102.0b1.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b40643e5d8d0fa1a897614c3d0d358c63d3d38ca086dba5ea39f52795cf86811";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/rm/firefox-102.0b1.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-i686";
|
||||
sha256 = "21f69e2b18ad801cd929b8abb1570747d738ada5c300ce01507c6bc9dca6f363";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ro/firefox-102.0b1.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1fae15db0efc6aaf945860200148b57b2f988d64c1b5ec333e1a0034ae174a97";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ru/firefox-102.0b1.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-i686";
|
||||
sha256 = "26bd0558c16b1cb8f4401363da50cc23dca20738bbfc5393059a38c6f47676a3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sco/firefox-102.0b1.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-i686";
|
||||
sha256 = "835eb757dcf3300b56ea8eb303c48499c1a7d32f98f790b4260e3cef2794aca7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/si/firefox-102.0b1.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-i686";
|
||||
sha256 = "51062992f63fc07ac75d3744263df14a20f3f781ecf66c1860221ef801b26053";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sk/firefox-102.0b1.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6e33069706a50c23e089fbbba986d77370e6204d8548aa1593611580120bffb3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sl/firefox-102.0b1.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a502d6b92c3e5d03531ef6aca6c736e087a6251b28f2f4cc20e560a35551b260";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/son/firefox-102.0b1.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8bbad5f5c790dfd00b3f58a7cd67c5f24b733969a66ac681746d0fa3e66cc663";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sq/firefox-102.0b1.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1da7a31f2893b3ca7991e43d0848cf0d50c4fa8534898c196fef999f76fe57af";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sr/firefox-102.0b1.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "318f76f7813fea84b114b7a774e1deb0fb3e5d5bfb9b74139bddd552576054b1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/sv-SE/firefox-102.0b1.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6c1fd376f581c48385cb4722d57ed0f201c693b1aab4a88ab86e5c10e69785c7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/szl/firefox-102.0b1.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "4c1d202bb8d6986a7086fef601cd78fdcf60cb624539a3c68ddd6788e1fb7236";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ta/firefox-102.0b1.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fc64775590eb188331497fd9747637d6882b5fabdeeec9d577e32af4fd151f9d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/te/firefox-102.0b1.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1b441621d1246c235a10241892359009e77542825b0c78eb0b584d60d3124fcc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/th/firefox-102.0b1.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f9b877cca833293145f9cdf76c152adf3ccfb6c44667d1580d2030f1f628f918";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/tl/firefox-102.0b1.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "669dd844b396e01a34ae2bd8e32f2ef6d999b976228a59f9b1863352b8370e9e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/tr/firefox-102.0b1.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7bf9b048f5f00ebe9ad937100cc5d2ed983f9f52d109b1fcf1fee82b4ab0f31b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/trs/firefox-102.0b1.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "caba55bbf0cab9b1868d5e959c1b4be2cb9cf9a4e485e3a653bebe313ba982f6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/uk/firefox-102.0b1.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a13e56ae29c6bea34ad3adcd5b8e802ed4add58c47ba7680631868c06ec9b73e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/ur/firefox-102.0b1.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c98a1fcd3a57d02d4e96a2a64537554782df9f273ced7dc3cc3745a1a1eb740a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/uz/firefox-102.0b1.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f3064f8a893e2f343dff7dc3ab000a8eac43625ed331af73991856749a1779a5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/vi/firefox-102.0b1.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e1ba9faeee76150c768e4f4fe717f82b752c3b82160c39e5ae7ab0b710c81f5d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/xh/firefox-102.0b1.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-i686";
|
||||
sha256 = "edd9d0c3c2b807fe303a229965569aa9dca64ecb61cd1a5d9aaf718ae3156b01";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/zh-CN/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "434687c33b8d0c1261905656e96a619c5e4f3900eb0d4ac7d92394dc5c0230be";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/devedition/releases/102.0b1/linux-i686/zh-TW/firefox-102.0b1.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5d022965855b6833b0f740449e7bb964018fddd96e9cc106f2cb5164bbf8b0fb";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,985 @@
|
|||
{
|
||||
version = "101.0";
|
||||
sources = [
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ach/firefox-101.0.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "14db524413baf168d73273786015022ab502427a303f07c78572ad57aaeebe6b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/af/firefox-101.0.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "33e6813b6ca1c502ef921b8c8642ccd987478c8de634dfb5d8c64ce0a19c06bc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/an/firefox-101.0.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "86ccc87e19de62d6f756499ba191fda30e335b990bca8878b315ddb2155cd658";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ar/firefox-101.0.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "48f18522e97684daa99c89034a391d77dea78e358cfc77221fce526718457955";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ast/firefox-101.0.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9e09274dcfec395d743dd6b00da8a014fd1903b54cc1dc8b25bf0f54f1cb7826";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/az/firefox-101.0.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "40b8c014c19f055c556ac77f9f74db8b9b08bfe4f4c3f85eb6e54507843b5abc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/be/firefox-101.0.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3e5460b19d3260e3380ca501a14a8c2206e1a486c751bd1aae3ca94f547f129c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/bg/firefox-101.0.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ff5577529a103bb3ad6737aa73e45caafb206907b9928050322fb9ce4ecfbdd9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/bn/firefox-101.0.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fc45461a116248cead5534b1fc90d1c1b13c0209863c91af0587c15148288f78";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/br/firefox-101.0.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "973585b8427f98a6c77bcc313aa20d11c574c3b5406bce11b1a2ab42bcdf63f5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/bs/firefox-101.0.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "72a2c60c92e9994af5617b5bda987031ac2631e42b430f3c05715bedc6dfff5f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ca-valencia/firefox-101.0.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a6e6f102e67db1b21a110ee3ebc3f2bc6008bcdf5274c0d58153e83c9593a2b6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ca/firefox-101.0.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "25e58754303a5008720524b0fec41ccf9ff9c349c5c393507a2e6eee76c87962";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/cak/firefox-101.0.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "90839ec9985d15f7da930785c1ff209d7a7fdf716a0b12e527bb4d47b64ee00b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/cs/firefox-101.0.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6b1a58bc125c67ef05f3bfadc451e0b34a08b65c7f8b0e52105c1b960627fbb4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/cy/firefox-101.0.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "89949e630bd4739640a526b1f415b3530d2a00519db263e66ef560f37a825124";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/da/firefox-101.0.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "60ae6268c40b5c90128aa0f6560620df7aa50d35cd7509facf7c288d94f56349";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/de/firefox-101.0.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "90b3d59e90ed03c3a765bfdafbc041df55e7561d153d76ee0c435a8bc995d1e9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/dsb/firefox-101.0.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6a1c087d6656acb509c99f114f954359ea66432a8dac736173003de9375b1f15";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/el/firefox-101.0.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d4a2ff58861be221f8b0dfd9a809b84c204b24575031b8cd30ce2a6ae7962f0e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/en-CA/firefox-101.0.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "baf4bde1575fbf78ce267cd6fd5e57bd9a2ad1d73a5f997eb14a71c89e5db40d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/en-GB/firefox-101.0.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "cd18d9742b885a0b1f7e97f50c97c611c60f6d925d9b43430667f6fa96601aa3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/en-US/firefox-101.0.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a7fbb33d88fe5bb1e448e3ff25f45271ca5fbc0af386e24575bd6bac90ddd356";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/eo/firefox-101.0.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b00e54bd4b24654a4fb8d4549d1f62dfc7abeece501e239a188b286e7fa8fb37";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/es-AR/firefox-101.0.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d8bf5075a2e07ceddb69ddad444411a712efa707879e00775bdb533b9d3da854";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/es-CL/firefox-101.0.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9717c4eaad36fed52de69a5145d83f090fa9c96ab7ffd05126de01ee7503a545";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/es-ES/firefox-101.0.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d4bce50048aa955ae14e18708518f4d47fa5e2a4416e9ad2d8cbfc077eefcb0d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/es-MX/firefox-101.0.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a7923256eed38fe3c7c322274b235cf6002753933b962a3f0f63674c3f97c853";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/et/firefox-101.0.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e84cc7bd58eec66ceed9ad9c593934ad2586f60766d437d42e0fd604729632d6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/eu/firefox-101.0.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "788afc1248050ec58b68d7f966080786265bce2fe2880af83cbd7f04e3542d8b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/fa/firefox-101.0.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b661ab31b891db240779ceff7ba98d82da66389cf7492a47f9e72349dab0bf6f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ff/firefox-101.0.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "58183f3a058528f47361f865662e82d3347f2898c16a70d1b6ca1050fad94c94";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/fi/firefox-101.0.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c499158db1e90a7a81bcd52e75864a80c8bfa32d406c8cfd6d8ec502baafffd3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/fr/firefox-101.0.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "92a25e80c681d4e3f5c87bfeb62708f637b53fd73340772aef7195fdde22ddbb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/fy-NL/firefox-101.0.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "0d6f36991194e54e99a1942e6d6ee3db039986b4ddafbaac3fc2085a6887e95d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ga-IE/firefox-101.0.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "c61c5b9172a017a26b5b298e5c405aba4df8d5d28653eef515ed370bee9f8f2a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/gd/firefox-101.0.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "48125e447921be025769c96506b6e01ea930d13f83d3f99fd8d3f28f4c675b90";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/gl/firefox-101.0.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "2bd458ee51ca947d6ad33a5decafa82511a6dc61c59ba11ad4a7a2c49fe933ba";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/gn/firefox-101.0.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7144f058790ac607ea1f7bb9be55f31fed1fc443a414e7edc20c0ce9840ec7a8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/gu-IN/firefox-101.0.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "83aeb888cd7e2778bfb874bd44c758621da2f5fd9117d13cbbd5995141b1852f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/he/firefox-101.0.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bf847454b90c9037dc0d2c066bad139f636f8076d11cd2cb84f0a9e6581a1c31";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/hi-IN/firefox-101.0.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "3df9962e6e90c72dcf46c388a7d0dad58e65824915e4d4a524044464254356e8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/hr/firefox-101.0.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "be29bab135c5cff05587ccaad641fe7cbb669536135cb92cf224e1d497adc10e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/hsb/firefox-101.0.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "adbb39c9cf2a547dd64b8d3479ab86c32d94081f7a1eaf27693f613f26c71bc6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/hu/firefox-101.0.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9af49c093c5e347be9bb5357d847749e0c6743c33e24d027a89ddd05d6db3ad8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/hy-AM/firefox-101.0.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d67539319b9af553857965bed89e3c60c972107834b22a17d5e50791593ca492";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ia/firefox-101.0.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d6618cfa24b299e48c33eb22fef9957860053128eabc2c40bfce95390a9db6a8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/id/firefox-101.0.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bb2a6f0ae3005b1a96c3f95c0ff5a9741a0c299a69ed02e220720b7ee7375325";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/is/firefox-101.0.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "6dc400c41faf87172b238dc51e7e50a3e4dca8ff636889f917813d788504b897";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/it/firefox-101.0.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "06e8c37b15d2c634a93c04e05fc05b844b6cdc82327a898b7b65b7e89f6d8c05";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ja/firefox-101.0.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5c4655516ce6047eb7e14d932d9b21f39e8c781aecb7ebe7ba9303af6412ae92";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ka/firefox-101.0.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "25077c1bcbd9fba2e5d43e118d4d24b4528e116a30f11516da8a894e73ba3a62";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/kab/firefox-101.0.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "582e4da31b3bb1a01e32598ff9a57db7c01b9d3eaa8a897eec77da7ad97c29a6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/kk/firefox-101.0.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f5a34c98f65c8f9cde9e0eb3ba1c4a86490f4166d393e7dfdcfb4771e616cf9f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/km/firefox-101.0.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e2ed6c7a0b329068f5f377bfb139af29eaeb8c02db1a09ba4a3e2a8b80573828";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/kn/firefox-101.0.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9f6b31b8961a96bff006fb85bd152233f64893382aec0c305111198f8e9bdbb5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ko/firefox-101.0.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7a62c81bf05a530816b218800377de56b86bc4348f6306c91b357836c30f142a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/lij/firefox-101.0.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ae59bb7d86f02c93772b257e4cf3465fb3369513e6275aa4a2ce41e579958d63";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/lt/firefox-101.0.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "511ef1e7f2cb312acb62c48be62c85d77b9b629c3904aa5c99136ca1bcfa4081";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/lv/firefox-101.0.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "e7a9f9721f9fcf83aeacb4c1b2e997c8c8955f0faa56d200a25b53be4d05bb76";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/mk/firefox-101.0.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f9e2cd667b742fc6c1d8515d20f7f919a9fa829f3fbde991d1bf184554a1e9f3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/mr/firefox-101.0.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ae83ac65ecb816201ee480f331db2f852ae2540a7676b37f07c8a56605f6a09f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ms/firefox-101.0.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "967367faac639b244a4abed3390e51572cc5e2c84ee2085aed5a20f5623a3bf3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/my/firefox-101.0.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "84e8b271ea132238fcc1d3cb273d749b313084c916704d30faf685bb8bf0414b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/nb-NO/firefox-101.0.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "73e0c9a7ae62594bff977cf2602b2fe914f9a0fc9a6992d4359f79817a44e550";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ne-NP/firefox-101.0.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a21dad5ed5a35199b030d0d5cc69fc82ce3bc84511211d6ea322e39892ac7f81";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/nl/firefox-101.0.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ef8bd07819f02a4d28820cc07ab625d3817215ef6d166bd9bd1f5c555d9f26d5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/nn-NO/firefox-101.0.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b8af9e4769d6da41e6e54a4fb2f178b2bc17e6c9ba6439353d75654ac473722e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/oc/firefox-101.0.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7b75d592f533d1023e59d2c5ddadb1ea14ceecd7e022913e894c624fa32d7c42";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/pa-IN/firefox-101.0.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "faee5fdbe4856e317d3fbb93d280389b14fd148c2070699d8584f2b67f1c9654";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/pl/firefox-101.0.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "da93e21631e9d7401d39be651ba37daf1811d53fe20173eb3678761ebd4ad0cc";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/pt-BR/firefox-101.0.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "beb4bd8ef9cb37c47011f013cec4345e323e2c55bc7d7b8f91200854163cd576";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/pt-PT/firefox-101.0.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "9680c46656d6a0d48429c53590fca19dcc8981a7fe7fd68f764adc2e0f9d7151";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/rm/firefox-101.0.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "5463259d86046bb9d63ac1480ded749413ad22c9ee44071c86cc0d7805a04877";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ro/firefox-101.0.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "43aab5d01e2d6509283ef29fa6fe8220f9739d796a5558e9670ecdf75123f95c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ru/firefox-101.0.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "82fb586884c1ff0cfaa46a02fea8ccdcae516d078c6a6f2303f4291b5cdeae1f";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sco/firefox-101.0.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "669d480fd4df4f5afb62d6795141aedc08db91de288919fd84cd62b68b7da299";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/si/firefox-101.0.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "094f88139fbfe5c92cb570a70cc901d386c28d04b42cfa5366bc18a3c0946d6c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sk/firefox-101.0.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "29f996a4bbf2c4914a0a827a952ae6a4d8d416d5ffc6854f7ee57f9deab06c2b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sl/firefox-101.0.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "68fc41ed66185639b4c66a2595cc3bf98ec018523c8a96b42d1034256595bd75";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/son/firefox-101.0.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d2e7c1a28fb8280c69d7ed827be23183eed7ed59628dcb223999de51e006b294";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sq/firefox-101.0.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "b9f9da037869fa89faa78858eb8f64eaf2faf91303da7de35cb1f222e2a31b14";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sr/firefox-101.0.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "d584e652103feba633f4dbcaeffc4bf1bd5dbcd7f13a4ab96b240f9647bc577c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/sv-SE/firefox-101.0.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "fb623fbdea9eaf12502f151ed92aab8bba1961663fcd5a79d312892eff5465b6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/szl/firefox-101.0.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "4f7f59b41fff41692567e9e2f18e43f09725f54da7f284f08c919f7e46f1bc23";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ta/firefox-101.0.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "314806c810e3013635fbb2d31d49e903919691f76251139a56f75a001bda2fec";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/te/firefox-101.0.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "a097f21d29f35fece34740c896b53f139f0c90891c815e5a11c092a804dd76c9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/th/firefox-101.0.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "762b23c9e84af000787d4219b2a536e6990fbea46586daa3616ee95f5daf46ca";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/tl/firefox-101.0.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "ae8e71ad7f59c6b180b21506e2e18afbf41b355d093886bafc63b99dc60ab8e4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/tr/firefox-101.0.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "17ef9aaa88212ff26b99e111be4b35ab1ba5e98eedc4057f967ec9d2fa271d77";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/trs/firefox-101.0.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "bec7f199cd6a396050ad896726e347fe23b10cb9e89fae0023002460519a5877";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/uk/firefox-101.0.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "233149ea079eaa59e2c7f2c1ea123d2572c52579951aa217646a47447510d13e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/ur/firefox-101.0.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "7aba6f901beb995f0f0d7e8ac54fa7f19ec6524a7f6a018f9435c30db16e4659";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/uz/firefox-101.0.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "cb668846487e5a58315a6c50b81ba75fa3f65dba52c9fcb725f21e8777fe9295";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/vi/firefox-101.0.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "adbe092a8142bf2abc11a96a376223a07342513dc8e94bde35bc36e18b1eb274";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/xh/firefox-101.0.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "f4a225b10b300c09ad53facf99796228fd7ddb02e644cc1143ec265de390b7a9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/zh-CN/firefox-101.0.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "28662691d294f09751d0fbd091832b0ade7e3ad1c551ccaacdc9fe32965b8c20";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-x86_64/zh-TW/firefox-101.0.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-x86_64";
|
||||
sha256 = "dbd64ccc0fe481252faa2fc355f532f9fd9d1bce8e0849bfb30ad1f01d5a0157";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ach/firefox-101.0.tar.bz2";
|
||||
locale = "ach";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ed4a2a733dfcce77cc9dc75be951b075014d0e68299d3440706f84a9fe646c80";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/af/firefox-101.0.tar.bz2";
|
||||
locale = "af";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c4deca2ec13995802420be712606e73b57a81d07266d9e6b9d2b08c3d835a73e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/an/firefox-101.0.tar.bz2";
|
||||
locale = "an";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a9aa0b837b768793ba27b98144fe4f86eb50887a2ee2e0f169d18fc7115dc853";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ar/firefox-101.0.tar.bz2";
|
||||
locale = "ar";
|
||||
arch = "linux-i686";
|
||||
sha256 = "07da00fa6b46ae7b33bd60eb718f251ad4c7ce0826bd1133854920c7da8dbf6b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ast/firefox-101.0.tar.bz2";
|
||||
locale = "ast";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2b61ea2fab6da05faa3ad65b5e529d7ce231bbf09981c826385226559e1a4a3a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/az/firefox-101.0.tar.bz2";
|
||||
locale = "az";
|
||||
arch = "linux-i686";
|
||||
sha256 = "27af15457e6197a30a6be826f75fae605840db8925f395c644cc9a41076575f8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/be/firefox-101.0.tar.bz2";
|
||||
locale = "be";
|
||||
arch = "linux-i686";
|
||||
sha256 = "113da6d3df34fafd0a6ca4884b46befd2818dc01ee47a29f4e35b21a53ed184d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/bg/firefox-101.0.tar.bz2";
|
||||
locale = "bg";
|
||||
arch = "linux-i686";
|
||||
sha256 = "77e774ed1000ffeb1b8d8b8f005b89d0d40de42a01c4bb1ee35d51934c992313";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/bn/firefox-101.0.tar.bz2";
|
||||
locale = "bn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8821b7d73dc7d569c598282ade6f401722873d7958b0ce7da82403ff507000ef";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/br/firefox-101.0.tar.bz2";
|
||||
locale = "br";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fd6ede8fd815b973999ba2cc06d457aba85a6ef9831c25f8c5c74b993c7aabce";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/bs/firefox-101.0.tar.bz2";
|
||||
locale = "bs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2162bee6bf2db3872a27a3d52c89685f010782f7a1c819d228b1988967532ab2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ca-valencia/firefox-101.0.tar.bz2";
|
||||
locale = "ca-valencia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d5c76947ee4c0358b85a252eb5dc4dd303389e1a5e7b93d5cfb42f63bd746d75";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ca/firefox-101.0.tar.bz2";
|
||||
locale = "ca";
|
||||
arch = "linux-i686";
|
||||
sha256 = "55b263d258686b88aa1955d4f4c1947a5711e4931a294e92ea59cc3bfb6731eb";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/cak/firefox-101.0.tar.bz2";
|
||||
locale = "cak";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a03cb4d4298be64acb9efb44bc9f0eceb3c236854836702e263f27670fb87d06";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/cs/firefox-101.0.tar.bz2";
|
||||
locale = "cs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "1244440d1e08f5a85cd4b9b421017e5ff0e962595bf265432e4a7335a3d8bdca";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/cy/firefox-101.0.tar.bz2";
|
||||
locale = "cy";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b105b779c7faf9f5a48fd0780a10129c07d42a0d96fadb88e3b2857fbe12f7a4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/da/firefox-101.0.tar.bz2";
|
||||
locale = "da";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a39c036b133430b892a4ce138631405fe706175f787f4638976086eae7d8af0d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/de/firefox-101.0.tar.bz2";
|
||||
locale = "de";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a063d2f9f90349733dd394df4a6bb9310b0762925396eb4a04e393445131f15d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/dsb/firefox-101.0.tar.bz2";
|
||||
locale = "dsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ed503eda1a9f92b2f0e3c9ef3849ccb06146efe97f98f6dfb2477c46528a70d0";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/el/firefox-101.0.tar.bz2";
|
||||
locale = "el";
|
||||
arch = "linux-i686";
|
||||
sha256 = "786b5f96b1857b04a07108f226b2954858a6c2f580118d68a22d437acaf518aa";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/en-CA/firefox-101.0.tar.bz2";
|
||||
locale = "en-CA";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a5667f28e17a36a82fa3926f6d55b8e9c9d409bb57bd9d6b4f0594000a95e757";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/en-GB/firefox-101.0.tar.bz2";
|
||||
locale = "en-GB";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a70914c28776e1af158c09f576e7c7106e6ab1c67d1b55b4a4a815223f172882";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/en-US/firefox-101.0.tar.bz2";
|
||||
locale = "en-US";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c7349be1d7fc89b9eb69a2f4f787fde4f871010e7bffc4527d730e8d0869ddd3";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/eo/firefox-101.0.tar.bz2";
|
||||
locale = "eo";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a274d4935dbb365a7cc91ced50b100dbaa52834cee9f9ee1fe8ad34a9148ea80";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/es-AR/firefox-101.0.tar.bz2";
|
||||
locale = "es-AR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c759bcebddc84f8a06fdf704f8401ec2dadd1f0575b1cc350fbcd7a237585583";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/es-CL/firefox-101.0.tar.bz2";
|
||||
locale = "es-CL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "668475ac0f399bade5fa940753800a95938516964799febc8eb55ec895589d56";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/es-ES/firefox-101.0.tar.bz2";
|
||||
locale = "es-ES";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8496a0a14729c5a395d2de953269b05b8d71787ad01332adf3a4868cdbd6e5e5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/es-MX/firefox-101.0.tar.bz2";
|
||||
locale = "es-MX";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a40e4630a78e1646cf7a75a0916895d44b57b5607f1318fa59783b6813940f90";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/et/firefox-101.0.tar.bz2";
|
||||
locale = "et";
|
||||
arch = "linux-i686";
|
||||
sha256 = "16ddae557a301fc6c1cf2e172d6679e5f816d169d0e1af4c394b5ff4dc5a631b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/eu/firefox-101.0.tar.bz2";
|
||||
locale = "eu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f138fa6c5734852c405bc4e65749249174ca9fd0a04c6ddc20a841f5a4f4e960";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/fa/firefox-101.0.tar.bz2";
|
||||
locale = "fa";
|
||||
arch = "linux-i686";
|
||||
sha256 = "72ea1ad58bf04ee65578e7d5720d78e74861fdb586712425fd31f8b37de905b1";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ff/firefox-101.0.tar.bz2";
|
||||
locale = "ff";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b34cd5e14ca919ebb3282efb1a2694ef549ea1c8c4b7dd8080cc4ba55bab255d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/fi/firefox-101.0.tar.bz2";
|
||||
locale = "fi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f9437305d883969b9dc7c8dc74abcae164b2853e83315ede6bf6c59864b68603";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/fr/firefox-101.0.tar.bz2";
|
||||
locale = "fr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c60ad164b817b8a9d95e32d28337201aacb21982abec04400e1a60f408f683c4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/fy-NL/firefox-101.0.tar.bz2";
|
||||
locale = "fy-NL";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ed99d06a4608da07e11878a928008d159fdbe4cf416553936c2e20a8b8256844";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ga-IE/firefox-101.0.tar.bz2";
|
||||
locale = "ga-IE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d0399a4ede61294becb01c5681d77734a280564f4da91ad24626f426e922452d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/gd/firefox-101.0.tar.bz2";
|
||||
locale = "gd";
|
||||
arch = "linux-i686";
|
||||
sha256 = "614cdec3669c8b63b9c036cb12a4a9396c2d5f6c8a0587eda898c4a67b6443cd";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/gl/firefox-101.0.tar.bz2";
|
||||
locale = "gl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "3490724153f7ca02e8112e86cf1211780b8644fccbbd98f58229dfb14fa73bf2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/gn/firefox-101.0.tar.bz2";
|
||||
locale = "gn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6108e07a96896b0731dcd25af54f39c5c30c811dbd316e44fa2f250750b2dd57";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/gu-IN/firefox-101.0.tar.bz2";
|
||||
locale = "gu-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0cc8e928e0d34c9fd26bd2b82dc8b95cc1457919bcf8f43f30796088cbedaba5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/he/firefox-101.0.tar.bz2";
|
||||
locale = "he";
|
||||
arch = "linux-i686";
|
||||
sha256 = "bc1594ee9785f8f89a805aeaa4f0a38536254c496129a762b115e1d04dc197a2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/hi-IN/firefox-101.0.tar.bz2";
|
||||
locale = "hi-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5544cee30712323694cb93894fb1b372681f8abf7aa346e9e486e1cbeba20699";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/hr/firefox-101.0.tar.bz2";
|
||||
locale = "hr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "dcb15296bac2961f54df24f8d6d256acd228f703136a8354e4d567d257872f17";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/hsb/firefox-101.0.tar.bz2";
|
||||
locale = "hsb";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5efaacb071c8b445e0eb150d3ec5f962fec79f6f4359ae6aced2d46c601593d9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/hu/firefox-101.0.tar.bz2";
|
||||
locale = "hu";
|
||||
arch = "linux-i686";
|
||||
sha256 = "bdeeafd08d1f27e02f86f99a36bd151665e3903b7a1f583c97ed248fa573449c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/hy-AM/firefox-101.0.tar.bz2";
|
||||
locale = "hy-AM";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8b9853a2fb7205d5f927857f878b0f21e8d0a2e6e5659afccd803531a6765572";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ia/firefox-101.0.tar.bz2";
|
||||
locale = "ia";
|
||||
arch = "linux-i686";
|
||||
sha256 = "55caf5f447c856363966d7059df41b1bcba386876f53e22fc920a67b40d8fd1b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/id/firefox-101.0.tar.bz2";
|
||||
locale = "id";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ff44f78979beb744659d34d712052ea82496498135974f7875fb4484cb7921da";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/is/firefox-101.0.tar.bz2";
|
||||
locale = "is";
|
||||
arch = "linux-i686";
|
||||
sha256 = "78c926a89cfa76ae0462bb88183a4ee5f52785bd978933842bf18213b881ab00";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/it/firefox-101.0.tar.bz2";
|
||||
locale = "it";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2addfd18bcb297c1b0feb78fd6fbc149273aa2072c5b1780db649a673fcc7380";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ja/firefox-101.0.tar.bz2";
|
||||
locale = "ja";
|
||||
arch = "linux-i686";
|
||||
sha256 = "6035ac17cd72d9a8468523c0bca7e9a0c646f7a879606000e0ffd79fe6a0d024";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ka/firefox-101.0.tar.bz2";
|
||||
locale = "ka";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ff4e7e6da69fb21ed0ec610fa6c5bc98ef525467e7bc175f329e8f41ea72444b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/kab/firefox-101.0.tar.bz2";
|
||||
locale = "kab";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0a426d965232b2ce6bd10f558f342bd2d742f529de7281256773d665b9ad03ad";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/kk/firefox-101.0.tar.bz2";
|
||||
locale = "kk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2b3a1d3fe1a4f30bc60e5848db8cb0b053488edec689ad96728c2906c71b1aa8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/km/firefox-101.0.tar.bz2";
|
||||
locale = "km";
|
||||
arch = "linux-i686";
|
||||
sha256 = "7d823fe28c563c17a78d4d4ca6c12838d9ecc22c6f7bcd2f572bc767d994b8ec";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/kn/firefox-101.0.tar.bz2";
|
||||
locale = "kn";
|
||||
arch = "linux-i686";
|
||||
sha256 = "fc5c6f626b1dbfc4c76a324f332709ce9c7451192af2558c3058bf42127ce599";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ko/firefox-101.0.tar.bz2";
|
||||
locale = "ko";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e67480cf5d8d2eebcb787a8f375431a3169c4c3b670b9d0dcd5a0b0841fe7593";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/lij/firefox-101.0.tar.bz2";
|
||||
locale = "lij";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b1abf37f2be554d64dc6d0d6d3ad278bd7e6d6562e3da8bda3e5b113703339f7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/lt/firefox-101.0.tar.bz2";
|
||||
locale = "lt";
|
||||
arch = "linux-i686";
|
||||
sha256 = "2f186889c7f14780651af9c2095336d41b7d3b18984571f5bf1a6dd953771669";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/lv/firefox-101.0.tar.bz2";
|
||||
locale = "lv";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cbae8899272e61a7a438a089de7ddb15d6a4d9eb9edbbdc678f05e68b9f64d75";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/mk/firefox-101.0.tar.bz2";
|
||||
locale = "mk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "18f51bad14598ecfc77a2c3150904589ec08deccb5262d6279aa345f6da7e31a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/mr/firefox-101.0.tar.bz2";
|
||||
locale = "mr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e0f2b5b34eff5ab548b1ef9916e579f0ccacd937a829b8a64cbf2bb0b7c14865";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ms/firefox-101.0.tar.bz2";
|
||||
locale = "ms";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a3967f13cf494adcf2d3eba99e66b7c3eaf2288ded379a00563f57537d161315";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/my/firefox-101.0.tar.bz2";
|
||||
locale = "my";
|
||||
arch = "linux-i686";
|
||||
sha256 = "939f95630d8e09bfc800ea76465745ffb9a3a9cb8f343a5b4b28192d43cac6a2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/nb-NO/firefox-101.0.tar.bz2";
|
||||
locale = "nb-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "9bbb12775311cd3b9c2c1d629b340448435957e3d98e6473b70b7055c9a89488";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ne-NP/firefox-101.0.tar.bz2";
|
||||
locale = "ne-NP";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ebacc072acca82eb6382e4e878c2e954470218b607856ba741f23f141472065d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/nl/firefox-101.0.tar.bz2";
|
||||
locale = "nl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "dc66ad68135f59442fedeaaad2c43128fd6235fa7676859e60656c2a9a4a4ef5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/nn-NO/firefox-101.0.tar.bz2";
|
||||
locale = "nn-NO";
|
||||
arch = "linux-i686";
|
||||
sha256 = "0896130d79c08632b44a4a1c74ace2e2b1ab0661c6db16b9f5f1f9f034574655";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/oc/firefox-101.0.tar.bz2";
|
||||
locale = "oc";
|
||||
arch = "linux-i686";
|
||||
sha256 = "195173d1416849310f710c7f57e7679acad3f42d24cb196f5288522a7d853b3a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/pa-IN/firefox-101.0.tar.bz2";
|
||||
locale = "pa-IN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "bf7d196c9ed97da16e0fb0a06293d2de338e4df58248640bad276ce5b810b79d";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/pl/firefox-101.0.tar.bz2";
|
||||
locale = "pl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ba71f15d969ac92c764d4d3583cf564826315a6667a936290fded99b3fc1e8ee";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/pt-BR/firefox-101.0.tar.bz2";
|
||||
locale = "pt-BR";
|
||||
arch = "linux-i686";
|
||||
sha256 = "b5aa7bac52636cbb83b1e3c952dd2d0cb54c8e4f24a175464734d131bfb501b9";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/pt-PT/firefox-101.0.tar.bz2";
|
||||
locale = "pt-PT";
|
||||
arch = "linux-i686";
|
||||
sha256 = "12abaaac467f02e984da4290e0052de1dbe36093edf343482c488b2ae8645808";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/rm/firefox-101.0.tar.bz2";
|
||||
locale = "rm";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a79cdf8f100bdd1bcd02734d001611ec4db09cf2977b6082589bb933120f43f6";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ro/firefox-101.0.tar.bz2";
|
||||
locale = "ro";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e9f87d21000f8340b4b20ed86aea881aeba0be3123b0840238cfc90774ae0c5a";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ru/firefox-101.0.tar.bz2";
|
||||
locale = "ru";
|
||||
arch = "linux-i686";
|
||||
sha256 = "429b0b879db9732412b2149f1f1f4e4493cb623539a37babb3c04c337b13c2f7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sco/firefox-101.0.tar.bz2";
|
||||
locale = "sco";
|
||||
arch = "linux-i686";
|
||||
sha256 = "c7b9dc7aaeca702479d2aab0eb82eb9c56693ba4529399a2e89eddf7077fb23e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/si/firefox-101.0.tar.bz2";
|
||||
locale = "si";
|
||||
arch = "linux-i686";
|
||||
sha256 = "a7b377a7a2c448d15782f97778f2014315809a279cf3bf67354534816d886620";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sk/firefox-101.0.tar.bz2";
|
||||
locale = "sk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "97f3b93f0b98103200d2c8c974e0c13ef4b01188d7f78dd9ac8463bc0cd9e716";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sl/firefox-101.0.tar.bz2";
|
||||
locale = "sl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "759689d8c5981c24d432f9e791c7a0f3dfdb54da88edc4a09f8d515a7a4f754c";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/son/firefox-101.0.tar.bz2";
|
||||
locale = "son";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cf9296fe3d3e53ff6febb0d55126185dbfe1f6ca051fd3874efa5da1ebda4a5b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sq/firefox-101.0.tar.bz2";
|
||||
locale = "sq";
|
||||
arch = "linux-i686";
|
||||
sha256 = "38631aa655b553a76678281b4ed2b8485b75e239b7440b83d0427a8a7b3da532";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sr/firefox-101.0.tar.bz2";
|
||||
locale = "sr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "e7c66daebb35b710dac0fa307dc071e30924631d493cca7e1c59007f14234eb2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/sv-SE/firefox-101.0.tar.bz2";
|
||||
locale = "sv-SE";
|
||||
arch = "linux-i686";
|
||||
sha256 = "627512f5df875426378bb8dad35eef2840660739ee08a59601dcdeb88723c8c5";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/szl/firefox-101.0.tar.bz2";
|
||||
locale = "szl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "8db81d2c81e8f4792e710e6bca4478e1a5a33ac5fd221d098b2eeee408fcfc0b";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ta/firefox-101.0.tar.bz2";
|
||||
locale = "ta";
|
||||
arch = "linux-i686";
|
||||
sha256 = "15fa84ba22775d12509c980dbf41cfec9805ba5dc886e8ef55b6cb8edd5d24d7";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/te/firefox-101.0.tar.bz2";
|
||||
locale = "te";
|
||||
arch = "linux-i686";
|
||||
sha256 = "570e8f9c117119bfe28e692f3c9dd472e42b1294179537e8a21d649e7f667f41";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/th/firefox-101.0.tar.bz2";
|
||||
locale = "th";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f9fde3b781d9a4ede606b847869eae22421827b2b1478b26cfbb0ca970e6ee73";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/tl/firefox-101.0.tar.bz2";
|
||||
locale = "tl";
|
||||
arch = "linux-i686";
|
||||
sha256 = "ac73f17f7ae81d876d84dbab61a084575588a1fba141f5dc00872ba0f433e27e";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/tr/firefox-101.0.tar.bz2";
|
||||
locale = "tr";
|
||||
arch = "linux-i686";
|
||||
sha256 = "546a6be0926439863924333f9f131b9cd49d1de6741c8479654280f72b95fe32";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/trs/firefox-101.0.tar.bz2";
|
||||
locale = "trs";
|
||||
arch = "linux-i686";
|
||||
sha256 = "f4f08485be5fbe573e3d7a9c7f8128b0a4f95e2a5449be116dca1e8019a1b592";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/uk/firefox-101.0.tar.bz2";
|
||||
locale = "uk";
|
||||
arch = "linux-i686";
|
||||
sha256 = "d84423e51ee540c7f58bf3f86c2897b8ea0d92d2b81c06c5f08ba86c4878c8d8";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/ur/firefox-101.0.tar.bz2";
|
||||
locale = "ur";
|
||||
arch = "linux-i686";
|
||||
sha256 = "db5f75c031d1a4f115d833c390091f160d341b5a8688889948cf3dc5f57eb544";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/uz/firefox-101.0.tar.bz2";
|
||||
locale = "uz";
|
||||
arch = "linux-i686";
|
||||
sha256 = "cff9c0ade769eab45c2d37e5ee2be3ee8c9782e369f1665be4ae86dbf9c281f4";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/vi/firefox-101.0.tar.bz2";
|
||||
locale = "vi";
|
||||
arch = "linux-i686";
|
||||
sha256 = "867448419eb09c6a0a6cda430eb9cfc8f932e5867e8e236963902ddfda85d493";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/xh/firefox-101.0.tar.bz2";
|
||||
locale = "xh";
|
||||
arch = "linux-i686";
|
||||
sha256 = "5069c1e55c01980eb77d9da0e98246a6ad786b88fcb4604a4570095892d7cec2";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/zh-CN/firefox-101.0.tar.bz2";
|
||||
locale = "zh-CN";
|
||||
arch = "linux-i686";
|
||||
sha256 = "544ac00893f544edcf3bc2e2c885e2a1bc78e13aceab04c31cc0523b496bc8ce";
|
||||
}
|
||||
{ url = "http://archive.mozilla.org/pub/firefox/releases/101.0/linux-i686/zh-TW/firefox-101.0.tar.bz2";
|
||||
locale = "zh-TW";
|
||||
arch = "linux-i686";
|
||||
sha256 = "197c8ad51f176f9187ae9d747d7ed9c11fcfbeb4376720411b6237f706b3e487";
|
||||
}
|
||||
];
|
||||
}
|
||||
93
pkgs/applications/networking/browsers/firefox-bin/update.nix
Normal file
93
pkgs/applications/networking/browsers/firefox-bin/update.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
{ pname
|
||||
, 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-${pname}" ''
|
||||
#!${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 --receive-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
|
||||
|
||||
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
|
||||
''
|
||||
573
pkgs/applications/networking/browsers/firefox/common.nix
Normal file
573
pkgs/applications/networking/browsers/firefox/common.nix
Normal file
|
|
@ -0,0 +1,573 @@
|
|||
{ pname
|
||||
, version
|
||||
, meta
|
||||
, updateScript ? null
|
||||
, binaryName ? "firefox"
|
||||
, application ? "browser"
|
||||
, applicationName ? "Mozilla Firefox"
|
||||
, src
|
||||
, unpackPhase ? null
|
||||
, extraPatches ? []
|
||||
, extraPostPatch ? ""
|
||||
, extraNativeBuildInputs ? []
|
||||
, extraConfigureFlags ? []
|
||||
, extraBuildInputs ? []
|
||||
, extraMakeFlags ? []
|
||||
, extraPassthru ? {}
|
||||
, tests ? []
|
||||
}:
|
||||
|
||||
|
||||
{ lib
|
||||
, pkgs
|
||||
, stdenv
|
||||
|
||||
# build time
|
||||
, autoconf
|
||||
, cargo
|
||||
, dump_syms
|
||||
, makeWrapper
|
||||
, nodejs
|
||||
, perl
|
||||
, pkg-config
|
||||
, pkgsCross # wasm32 rlbox
|
||||
, python3
|
||||
, runCommand
|
||||
, rustc
|
||||
, rust-cbindgen
|
||||
, rustPlatform
|
||||
, unzip
|
||||
, which
|
||||
, wrapGAppsHook
|
||||
|
||||
# runtime
|
||||
, bzip2
|
||||
, dbus
|
||||
, dbus-glib
|
||||
, file
|
||||
, fontconfig
|
||||
, freetype
|
||||
, glib
|
||||
, gnum4
|
||||
, gtk3
|
||||
, icu
|
||||
, libGL
|
||||
, libGLU
|
||||
, libevent
|
||||
, libffi
|
||||
, libjpeg
|
||||
, libpng
|
||||
, libstartup_notification
|
||||
, libvpx
|
||||
, libwebp
|
||||
, nasm
|
||||
, nspr
|
||||
, nss_esr
|
||||
, nss_latest
|
||||
, pango
|
||||
, xorg
|
||||
, zip
|
||||
, zlib
|
||||
, pkgsBuildBuild
|
||||
|
||||
# optionals
|
||||
|
||||
## debugging
|
||||
|
||||
, debugBuild ? false
|
||||
|
||||
# On 32bit platforms, we disable adding "-g" for easier linking.
|
||||
, enableDebugSymbols ? !stdenv.is32bit
|
||||
|
||||
## optional libraries
|
||||
|
||||
, alsaSupport ? stdenv.isLinux, alsa-lib
|
||||
, ffmpegSupport ? true
|
||||
, gssSupport ? true, libkrb5
|
||||
, jackSupport ? stdenv.isLinux, libjack2
|
||||
, jemallocSupport ? true, jemalloc
|
||||
, ltoSupport ? (stdenv.isLinux && stdenv.is64bit), overrideCC, buildPackages
|
||||
, pgoSupport ? (stdenv.isLinux && stdenv.isx86_64 && stdenv.hostPlatform == stdenv.buildPlatform), xvfb-run
|
||||
, pipewireSupport ? waylandSupport && webrtcSupport
|
||||
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
|
||||
, sndioSupport ? stdenv.isLinux, sndio
|
||||
, waylandSupport ? true, libxkbcommon, libdrm
|
||||
|
||||
## privacy-related options
|
||||
|
||||
, privacySupport ? false
|
||||
|
||||
# WARNING: NEVER set any of the options below to `true` by default.
|
||||
# Set to `!privacySupport` or `false`.
|
||||
|
||||
, crashreporterSupport ? !privacySupport
|
||||
, geolocationSupport ? !privacySupport
|
||||
, googleAPISupport ? geolocationSupport
|
||||
, mlsAPISupport ? geolocationSupport
|
||||
, webrtcSupport ? !privacySupport
|
||||
|
||||
# digital rights managemewnt
|
||||
|
||||
# This flag controls whether Firefox will show the nagbar, that allows
|
||||
# users at runtime the choice to enable Widevine CDM support when a site
|
||||
# requests it.
|
||||
# Controlling the nagbar and widevine CDM at runtime is possible by setting
|
||||
# `browser.eme.ui.enabled` and `media.gmp-widevinecdm.enabled` accordingly
|
||||
, drmSupport ? true
|
||||
|
||||
# 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 "${pname}: pipewireSupport requires both wayland and webrtc support.";
|
||||
|
||||
let
|
||||
flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
|
||||
|
||||
# Target the LLVM version that rustc is built with for LTO.
|
||||
llvmPackages0 = rustc.llvmPackages;
|
||||
llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages;
|
||||
|
||||
# Force the use of lld and other llvm tools for LTO
|
||||
llvmPackages = llvmPackages0.override {
|
||||
bootBintoolsNoLibc = null;
|
||||
bootBintools = null;
|
||||
};
|
||||
llvmPackagesBuildBuild = llvmPackagesBuildBuild0.override {
|
||||
bootBintoolsNoLibc = null;
|
||||
bootBintools = null;
|
||||
};
|
||||
|
||||
# LTO requires LLVM bintools including ld.lld and llvm-ar.
|
||||
buildStdenv = overrideCC llvmPackages.stdenv (llvmPackages.stdenv.cc.override {
|
||||
bintools = if ltoSupport then buildPackages.rustc.llvmPackages.bintools else stdenv.cc.bintools;
|
||||
});
|
||||
|
||||
# Compile the wasm32 sysroot to build the RLBox Sandbox
|
||||
# https://hacks.mozilla.org/2021/12/webassembly-and-back-again-fine-grained-sandboxing-in-firefox-95/
|
||||
# We only link c++ libs here, our compiler wrapper can find wasi libc and crt itself.
|
||||
wasiSysRoot = runCommand "wasi-sysroot" {} ''
|
||||
mkdir -p $out/lib/wasm32-wasi
|
||||
for lib in ${pkgsCross.wasi32.llvmPackages.libcxx}/lib/* ${pkgsCross.wasi32.llvmPackages.libcxxabi}/lib/*; do
|
||||
ln -s $lib $out/lib/wasm32-wasi
|
||||
done
|
||||
'';
|
||||
|
||||
distributionIni = pkgs.writeText "distribution.ini" (lib.generators.toINI {} {
|
||||
# Some light branding indicating this build uses our distro preferences
|
||||
Global = {
|
||||
id = "nixos";
|
||||
version = "1.0";
|
||||
about = "${applicationName} for NixOS";
|
||||
};
|
||||
Preferences = {
|
||||
# These values are exposed through telemetry
|
||||
"app.distributor" = "nixos";
|
||||
"app.distributor.channel" = "nixpkgs";
|
||||
"app.partner.nixos" = "nixos";
|
||||
};
|
||||
});
|
||||
|
||||
defaultPrefs = {
|
||||
"geo.provider.network.url" = {
|
||||
value = "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%";
|
||||
reason = "Use MLS by default for geolocation, since our Google API Keys are not working";
|
||||
};
|
||||
};
|
||||
|
||||
defaultPrefsFile = pkgs.writeText "nixos-default-prefs.js" (lib.concatStringsSep "\n" (lib.mapAttrsToList (key: value: ''
|
||||
// ${value.reason}
|
||||
pref("${key}", ${builtins.toJSON value.value});
|
||||
'') defaultPrefs));
|
||||
|
||||
in
|
||||
|
||||
buildStdenv.mkDerivation ({
|
||||
name = "${pname}-unwrapped-${version}";
|
||||
inherit version;
|
||||
|
||||
inherit src unpackPhase meta;
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
]
|
||||
++ lib.optionals crashreporterSupport [ "symbols" ];
|
||||
|
||||
# Add another configure-build-profiling run before the final configure phase if we build with pgo
|
||||
preConfigurePhases = lib.optionals pgoSupport [
|
||||
"configurePhase"
|
||||
"buildPhase"
|
||||
"profilingPhase"
|
||||
];
|
||||
|
||||
patches = [
|
||||
]
|
||||
++ lib.optional (lib.versionAtLeast version "86") ./env_var_for_system_dir-ff86.patch
|
||||
++ lib.optional (lib.versionAtLeast version "90" && lib.versionOlder version "95") ./no-buildconfig-ffx90.patch
|
||||
++ lib.optional (lib.versionAtLeast version "96") ./no-buildconfig-ffx96.patch
|
||||
++ extraPatches;
|
||||
|
||||
postPatch = ''
|
||||
rm -rf obj-x86_64-pc-linux-gnu
|
||||
patchShebangs mach
|
||||
''
|
||||
+ extraPostPatch;
|
||||
|
||||
# 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" ];
|
||||
|
||||
# if not explicitly set, wrong cc from buildStdenv would be used
|
||||
HOST_CC = "${llvmPackagesBuildBuild.stdenv.cc}/bin/cc";
|
||||
HOST_CXX = "${llvmPackagesBuildBuild.stdenv.cc}/bin/c++";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
cargo
|
||||
gnum4
|
||||
llvmPackagesBuildBuild.bintools
|
||||
makeWrapper
|
||||
nodejs
|
||||
perl
|
||||
pkg-config
|
||||
python3
|
||||
rust-cbindgen
|
||||
rustPlatform.bindgenHook
|
||||
rustc
|
||||
unzip
|
||||
which
|
||||
wrapGAppsHook
|
||||
]
|
||||
++ lib.optionals crashreporterSupport [ dump_syms ]
|
||||
++ lib.optionals pgoSupport [ xvfb-run ]
|
||||
++ extraNativeBuildInputs;
|
||||
|
||||
setOutputFlags = false; # `./mach configure` doesn't understand `--*dir=` flags.
|
||||
|
||||
preConfigure = ''
|
||||
# remove distributed configuration files
|
||||
rm -f configure js/src/configure .mozconfig*
|
||||
|
||||
# Runs autoconf through ./mach configure in configurePhase
|
||||
configureScript="$(realpath ./mach) configure"
|
||||
|
||||
# Set predictable directories for build and state
|
||||
export MOZ_OBJDIR=$(pwd)/mozobj
|
||||
export MOZBUILD_STATE_PATH=$(pwd)/mozbuild
|
||||
|
||||
# Don't try to send libnotify notifications during build
|
||||
export MOZ_NOSPAM=1
|
||||
|
||||
# Set consistent remoting name to ensure wmclass matches with desktop file
|
||||
export MOZ_APP_REMOTINGNAME="${binaryName}"
|
||||
|
||||
# AS=as in the environment causes build failure
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1497286
|
||||
unset AS
|
||||
|
||||
'' + lib.optionalString (lib.versionAtLeast version "100.0") ''
|
||||
# Use our own python
|
||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
||||
'' + lib.optionalString (lib.versionOlder version "100.0") ''
|
||||
# Use our own python
|
||||
export MACH_USE_SYSTEM_PYTHON=1
|
||||
|
||||
'' + lib.optionalString (lib.versionAtLeast version "95.0") ''
|
||||
# RBox WASM Sandboxing
|
||||
export WASM_CC=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}cc
|
||||
export WASM_CXX=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}c++
|
||||
'' + lib.optionalString pgoSupport ''
|
||||
if [ -e "$TMPDIR/merged.profdata" ]; then
|
||||
echo "Configuring with profiling data"
|
||||
for i in "''${!configureFlagsArray[@]}"; do
|
||||
if [[ ''${configureFlagsArray[i]} = "--enable-profile-generate=cross" ]]; then
|
||||
unset 'configureFlagsArray[i]'
|
||||
fi
|
||||
done
|
||||
configureFlagsArray+=(
|
||||
"--enable-profile-use=cross"
|
||||
"--with-pgo-profile-path="$TMPDIR/merged.profdata""
|
||||
"--with-pgo-jarlog="$TMPDIR/jarlog""
|
||||
)
|
||||
else
|
||||
echo "Configuring to generate profiling data"
|
||||
configureFlagsArray+=(
|
||||
"--enable-profile-generate=cross"
|
||||
)
|
||||
fi
|
||||
'' + 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 at https://www.chromium.org/developers/how-tos/api-keys/.
|
||||
echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/google-api-key
|
||||
# 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/google-api-key")
|
||||
configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/google-api-key")
|
||||
'' + lib.optionalString mlsAPISupport ''
|
||||
# Mozilla Location services API key
|
||||
# Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
|
||||
# please get your own set of keys at https://location.services.mozilla.com/api.
|
||||
echo "dfd7836c-d458-4917-98bb-421c82d3c8a0" > $TMPDIR/mls-api-key
|
||||
configureFlagsArray+=("--with-mozilla-api-keyfile=$TMPDIR/mls-api-key")
|
||||
'' + lib.optionalString (enableOfficialBranding && !stdenv.is32bit) ''
|
||||
export MOZILLA_OFFICIAL=1
|
||||
'';
|
||||
|
||||
# firefox has a different definition of configurePlatforms from nixpkgs, see configureFlags
|
||||
configurePlatforms = [ ];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-tests"
|
||||
"--disable-updater"
|
||||
"--enable-application=${application}"
|
||||
"--enable-default-toolkit=cairo-gtk3${lib.optionalString waylandSupport "-wayland"}"
|
||||
"--enable-system-pixman"
|
||||
"--with-distribution-id=org.nixos"
|
||||
"--with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib"
|
||||
"--with-system-ffi"
|
||||
"--with-system-icu"
|
||||
"--with-system-jpeg"
|
||||
"--with-system-libevent"
|
||||
"--with-system-libvpx"
|
||||
"--with-system-nspr"
|
||||
"--with-system-nss"
|
||||
"--with-system-png" # needs APNG support
|
||||
"--with-system-webp"
|
||||
"--with-system-zlib"
|
||||
# for firefox, host is buildPlatform, target is hostPlatform
|
||||
"--host=${buildStdenv.buildPlatform.config}"
|
||||
"--target=${buildStdenv.hostPlatform.config}"
|
||||
]
|
||||
# LTO is done using clang and lld on Linux.
|
||||
++ lib.optionals ltoSupport [
|
||||
"--enable-lto=cross" # Cross-Language LTO
|
||||
"--enable-linker=lld"
|
||||
]
|
||||
# elf-hack is broken when using clang+lld:
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
|
||||
++ lib.optional (ltoSupport && (buildStdenv.isAarch32 || buildStdenv.isi686 || buildStdenv.isx86_64)) "--disable-elf-hack"
|
||||
++ lib.optional (lib.versionAtLeast version "95") "--with-wasi-sysroot=${wasiSysRoot}"
|
||||
|
||||
++ flag alsaSupport "alsa"
|
||||
++ flag jackSupport "jack"
|
||||
++ flag pulseaudioSupport "pulseaudio"
|
||||
++ lib.optional (lib.versionAtLeast version "100") (flag sndioSupport "sndio")
|
||||
++ flag ffmpegSupport "ffmpeg"
|
||||
++ flag jemallocSupport "jemalloc"
|
||||
++ flag geolocationSupport "necko-wifi"
|
||||
++ flag gssSupport "negotiateauth"
|
||||
++ flag webrtcSupport "webrtc"
|
||||
++ flag crashreporterSupport "crashreporter"
|
||||
++ lib.optional (!drmSupport) "--disable-eme"
|
||||
|
||||
++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
|
||||
else [ "--disable-debug" "--enable-optimize" ])
|
||||
# --enable-release adds -ffunction-sections & LTO that require a big amount of
|
||||
# RAM and the 32-bit memory space cannot handle that linking
|
||||
++ flag (!debugBuild && !stdenv.is32bit) "release"
|
||||
++ flag enableDebugSymbols "debug-symbols"
|
||||
++ lib.optionals enableDebugSymbols [ "--disable-strip" "--disable-install-strip" ]
|
||||
|
||||
++ lib.optional enableOfficialBranding "--enable-official-branding"
|
||||
++ extraConfigureFlags;
|
||||
|
||||
buildInputs = [
|
||||
bzip2
|
||||
dbus
|
||||
dbus-glib
|
||||
file
|
||||
fontconfig
|
||||
freetype
|
||||
glib
|
||||
gtk3
|
||||
icu
|
||||
libffi
|
||||
libGL
|
||||
libGLU
|
||||
libevent
|
||||
libjpeg
|
||||
libpng
|
||||
libstartup_notification
|
||||
libvpx
|
||||
libwebp
|
||||
nasm
|
||||
nspr
|
||||
pango
|
||||
perl
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXft
|
||||
xorg.libXi
|
||||
xorg.libXrender
|
||||
xorg.libXt
|
||||
xorg.libXtst
|
||||
xorg.pixman
|
||||
xorg.xorgproto
|
||||
zip
|
||||
zlib
|
||||
]
|
||||
++ [ (if (lib.versionAtLeast version "92") then nss_latest else nss_esr) ]
|
||||
++ lib.optional alsaSupport alsa-lib
|
||||
++ lib.optional jackSupport libjack2
|
||||
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
||||
++ lib.optional (sndioSupport && lib.versionAtLeast version "100") sndio
|
||||
++ lib.optional gssSupport libkrb5
|
||||
++ lib.optionals waylandSupport [ libxkbcommon libdrm ]
|
||||
++ lib.optional jemallocSupport jemalloc
|
||||
++ extraBuildInputs;
|
||||
|
||||
profilingPhase = lib.optionalString pgoSupport ''
|
||||
# Package up Firefox for profiling
|
||||
./mach package
|
||||
|
||||
# Run profiling
|
||||
(
|
||||
export HOME=$TMPDIR
|
||||
export LLVM_PROFDATA=llvm-profdata
|
||||
export JARLOG_FILE="$TMPDIR/jarlog"
|
||||
|
||||
xvfb-run -w 10 -s "-screen 0 1920x1080x24" \
|
||||
./mach python ./build/pgo/profileserver.py
|
||||
)
|
||||
|
||||
# Copy profiling data to a place we can easily reference
|
||||
cp ./merged.profdata $TMPDIR/merged.profdata
|
||||
|
||||
# Clean build dir
|
||||
./mach clobber
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
cd mozobj
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
cd ..
|
||||
'';
|
||||
|
||||
makeFlags = extraMakeFlags;
|
||||
separateDebugInfo = enableDebugSymbols;
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# tests were disabled in configureFlags
|
||||
doCheck = false;
|
||||
|
||||
# Generate build symbols once after the final build
|
||||
# https://firefox-source-docs.mozilla.org/crash-reporting/uploading_symbol.html
|
||||
preInstall = lib.optionalString crashreporterSupport ''
|
||||
./mach buildsymbols
|
||||
mkdir -p $symbols/
|
||||
cp mozobj/dist/*.crashreporter-symbols.zip $symbols/
|
||||
'' + ''
|
||||
cd mozobj
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Install distribution customizations
|
||||
install -Dvm644 ${distributionIni} $out/lib/${binaryName}/distribution/distribution.ini
|
||||
install -Dvm644 ${defaultPrefsFile} $out/lib/${binaryName}/browser/defaults/preferences/nixos-default-prefs.js
|
||||
|
||||
'' + 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")
|
||||
'';
|
||||
|
||||
# Workaround: The separateDebugInfo hook skips artifacts whose build ID's length is not 40.
|
||||
# But we got 16-length build ID here. The function body is mainly copied from pkgs/build-support/setup-hooks/separate-debug-info.sh
|
||||
# Remove it when https://github.com/NixOS/nixpkgs/pull/146275 is merged.
|
||||
preFixup = lib.optionalString enableDebugSymbols ''
|
||||
_separateDebugInfo() {
|
||||
[ -e "$prefix" ] || return 0
|
||||
|
||||
local dst="''${debug:-$out}"
|
||||
if [ "$prefix" = "$dst" ]; then return 0; fi
|
||||
|
||||
dst="$dst/lib/debug/.build-id"
|
||||
|
||||
# Find executables and dynamic libraries.
|
||||
local i
|
||||
while IFS= read -r -d $'\0' i; do
|
||||
if ! isELF "$i"; then continue; fi
|
||||
|
||||
# Extract the Build ID. FIXME: there's probably a cleaner way.
|
||||
local id="$($READELF -n "$i" | sed 's/.*Build ID: \([0-9a-f]*\).*/\1/; t; d')"
|
||||
if [[ -z "$id" ]]; then
|
||||
echo "could not find build ID of $i, skipping" >&2
|
||||
continue
|
||||
fi
|
||||
|
||||
# Extract the debug info.
|
||||
header "separating debug info from $i (build ID $id)"
|
||||
mkdir -p "$dst/''${id:0:2}"
|
||||
$OBJCOPY --only-keep-debug "$i" "$dst/''${id:0:2}/''${id:2}.debug"
|
||||
$STRIP --strip-debug "$i"
|
||||
|
||||
# Also a create a symlink <original-name>.debug.
|
||||
ln -sfn ".build-id/''${id:0:2}/''${id:2}.debug" "$dst/../$(basename "$i")"
|
||||
done < <(find "$prefix" -type f -print0)
|
||||
}
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
# Some basic testing
|
||||
"$out/bin/${binaryName}" --version
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit updateScript;
|
||||
inherit version;
|
||||
inherit alsaSupport;
|
||||
inherit binaryName;
|
||||
inherit jackSupport;
|
||||
inherit pipewireSupport;
|
||||
inherit sndioSupport;
|
||||
inherit nspr;
|
||||
inherit ffmpegSupport;
|
||||
inherit gssSupport;
|
||||
inherit tests;
|
||||
inherit gtk3;
|
||||
inherit wasiSysRoot;
|
||||
} // extraPassthru;
|
||||
|
||||
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" ];
|
||||
})
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
diff -r 22fc47c968f2 toolkit/xre/nsXREDirProvider.cpp
|
||||
--- a/toolkit/xre/nsXREDirProvider.cpp Mon Dec 14 15:09:17 2020 +0000
|
||||
+++ b/toolkit/xre/nsXREDirProvider.cpp Tue Feb 23 23:38:56 2021 +0100
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "jsapi.h"
|
||||
#include "xpcpublic.h"
|
||||
+#include "prenv.h"
|
||||
|
||||
#include "nsIAppStartup.h"
|
||||
#include "nsIFile.h"
|
||||
@@ -305,7 +306,8 @@
|
||||
"/usr/lib/mozilla"_ns
|
||||
# endif
|
||||
;
|
||||
- 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));
|
||||
# endif
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
--- a/docshell/base/nsAboutRedirector.cpp
|
||||
+++ b/docshell/base/nsAboutRedirector.cpp
|
||||
@@ -66,8 +66,6 @@ static const RedirEntry kRedirMap[] = {
|
||||
{"about", "chrome://global/content/aboutAbout.html", 0},
|
||||
{"addons", "chrome://mozapps/content/extensions/aboutaddons.html",
|
||||
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},
|
||||
--- a/toolkit/content/jar.mn
|
||||
+++ b/toolkit/content/jar.mn
|
||||
@@ -39,8 +39,6 @@ toolkit.jar:
|
||||
content/global/plugins.html
|
||||
content/global/plugins.css
|
||||
content/global/plugins.js
|
||||
-* content/global/buildconfig.html
|
||||
- content/global/buildconfig.css
|
||||
content/global/contentAreaUtils.js
|
||||
content/global/datepicker.xhtml
|
||||
#ifndef MOZ_FENNEC
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
|
||||
index e7be91a248..5eb98534ee 100644
|
||||
--- a/docshell/base/nsAboutRedirector.cpp
|
||||
+++ b/docshell/base/nsAboutRedirector.cpp
|
||||
@@ -66,9 +66,6 @@ static const RedirEntry kRedirMap[] = {
|
||||
{"about", "chrome://global/content/aboutAbout.html", 0},
|
||||
{"addons", "chrome://mozapps/content/extensions/aboutaddons.html",
|
||||
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::IS_SECURE_CHROME_UI},
|
||||
- {"buildconfig", "chrome://global/content/buildconfig.html",
|
||||
- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
- nsIAboutModule::IS_SECURE_CHROME_UI},
|
||||
{"checkerboard", "chrome://global/content/aboutCheckerboard.html",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
|
||||
index 74c0ae8f34..a5d9645a96 100644
|
||||
--- a/toolkit/content/jar.mn
|
||||
+++ b/toolkit/content/jar.mn
|
||||
@@ -41,8 +41,6 @@ toolkit.jar:
|
||||
content/global/plugins.css
|
||||
content/global/plugins.js
|
||||
#endif
|
||||
-* content/global/buildconfig.html
|
||||
- content/global/buildconfig.css
|
||||
content/global/contentAreaUtils.js
|
||||
content/global/datepicker.xhtml
|
||||
#ifndef MOZ_FENNEC
|
||||
54
pkgs/applications/networking/browsers/firefox/packages.nix
Normal file
54
pkgs/applications/networking/browsers/firefox/packages.nix
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
{ stdenv, lib, callPackage, fetchurl, fetchpatch, nixosTests, buildMozillaMach }:
|
||||
|
||||
rec {
|
||||
firefox = buildMozillaMach rec {
|
||||
pname = "firefox";
|
||||
version = "101.0";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "fffe7e0940c1443fcdc5b205677764cb4e04b29f33fcfafb2857d383700584f309806b81fc4989efb56cc12a3cca1ff7d451b647050c43e98777b5c952ed5d56";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "A web browser built from Firefox source tree";
|
||||
homepage = "http://www.mozilla.com/en-US/firefox/";
|
||||
maintainers = with lib.maintainers; [ lovesegfault hexa ];
|
||||
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.
|
||||
maxSilent = 14400; # 4h, double the default of 7200s (c.f. #129212, #129115)
|
||||
license = lib.licenses.mpl20;
|
||||
};
|
||||
tests = [ nixosTests.firefox ];
|
||||
updateScript = callPackage ./update.nix {
|
||||
attrPath = "firefox-unwrapped";
|
||||
};
|
||||
};
|
||||
|
||||
firefox-esr-91 = buildMozillaMach rec {
|
||||
pname = "firefox-esr";
|
||||
version = "91.10.0esr";
|
||||
applicationName = "Mozilla Firefox ESR";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "8344b829d7bd86250afdd4cb582e27ed5705b3ef48aec50b9a39abc17deba86c9fd721f4667f5c2155e3d7cd1d6e1f82ff8e218ced3a16a4e06bb414ee0690f8";
|
||||
};
|
||||
|
||||
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; [ hexa ];
|
||||
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;
|
||||
};
|
||||
tests = [ nixosTests.firefox-esr-91 ];
|
||||
updateScript = callPackage ./update.nix {
|
||||
attrPath = "firefox-esr-91-unwrapped";
|
||||
versionSuffix = "esr";
|
||||
};
|
||||
};
|
||||
}
|
||||
47
pkgs/applications/networking/browsers/firefox/update.nix
Normal file
47
pkgs/applications/networking/browsers/firefox/update.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{ writeScript
|
||||
, lib
|
||||
, xidel
|
||||
, common-updater-scripts
|
||||
, coreutils
|
||||
, gnused
|
||||
, gnugrep
|
||||
, curl
|
||||
, gnupg
|
||||
, 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 gnupg gnused xidel ]}
|
||||
|
||||
set -eux
|
||||
HOME=`mktemp -d`
|
||||
export GNUPGHOME=`mktemp -d`
|
||||
gpg --receive-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
|
||||
|
||||
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`
|
||||
|
||||
curl --silent --show-error -o "$HOME"/shasums "$url$version/SHA512SUMS"
|
||||
curl --silent --show-error -o "$HOME"/shasums.asc "$url$version/SHA512SUMS.asc"
|
||||
gpgv --keyring="$GNUPGHOME"/pubring.kbx "$HOME"/shasums.asc "$HOME"/shasums
|
||||
|
||||
hash=$(grep '\.source\.tar\.xz$' "$HOME"/shasums | grep '^[^ ]*' -o)
|
||||
|
||||
update-source-version ${attrPath} "$version" "$hash" "" --version-key=${versionKey}
|
||||
''
|
||||
359
pkgs/applications/networking/browsers/firefox/wrapper.nix
Normal file
359
pkgs/applications/networking/browsers/firefox/wrapper.nix
Normal file
|
|
@ -0,0 +1,359 @@
|
|||
{ stdenv, lib, makeDesktopItem, makeWrapper, makeBinaryWrapper, lndir, config
|
||||
, fetchurl, zip, unzip, jq, xdg-utils, writeText
|
||||
|
||||
## various stuff that can be plugged in
|
||||
, ffmpeg, xorg, alsa-lib, libpulseaudio, libcanberra-gtk3, libglvnd, libnotify, opensc
|
||||
, gnome/*.gnome-shell*/
|
||||
, browserpass, chrome-gnome-shell, uget-integrator, plasma5Packages, bukubrow, pipewire
|
||||
, tridactyl-native
|
||||
, fx_cast_bridge
|
||||
, udev
|
||||
, libkrb5
|
||||
, libva
|
||||
, mesa # firefox wants gbm for drm+dmabuf
|
||||
, cups
|
||||
, pciutils
|
||||
, sndio
|
||||
, libjack2
|
||||
}:
|
||||
|
||||
## configurability of the wrapper itself
|
||||
|
||||
browser:
|
||||
|
||||
let
|
||||
wrapper =
|
||||
{ applicationName ? browser.binaryName or (lib.getName browser)
|
||||
, pname ? applicationName
|
||||
, version ? lib.getVersion browser
|
||||
, desktopName ? # applicationName with first letter capitalized
|
||||
(lib.toUpper (lib.substring 0 1 applicationName) + lib.substring 1 (-1) applicationName)
|
||||
, nameSuffix ? ""
|
||||
, icon ? applicationName
|
||||
, wmClass ? null
|
||||
, extraNativeMessagingHosts ? []
|
||||
, pkcs11Modules ? []
|
||||
, forceWayland ? false
|
||||
, useGlvnd ? true
|
||||
, cfg ? config.${applicationName} 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 ? ""
|
||||
, extraPrefsFiles ? []
|
||||
# For more information about policies visit
|
||||
# https://github.com/mozilla/policy-templates#enterprisepoliciesenabled
|
||||
, extraPolicies ? {}
|
||||
, extraPoliciesFiles ? []
|
||||
, libName ? browser.libName or "firefox" # Important for tor package or the like
|
||||
, nixExtensions ? null
|
||||
}:
|
||||
|
||||
let
|
||||
ffmpegSupport = browser.ffmpegSupport or false;
|
||||
gssSupport = browser.gssSupport or false;
|
||||
alsaSupport = browser.alsaSupport or false;
|
||||
pipewireSupport = browser.pipewireSupport or false;
|
||||
sndioSupport = browser.sndioSupport or false;
|
||||
jackSupport = browser.jackSupport or false;
|
||||
# PCSC-Lite daemon (services.pcscd) also must be enabled for firefox to access smartcards
|
||||
smartcardSupport = cfg.smartcardSupport or false;
|
||||
|
||||
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) plasma5Packages.plasma-browser-integration
|
||||
++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge
|
||||
++ extraNativeMessagingHosts
|
||||
);
|
||||
libs = lib.optionals stdenv.isLinux [ udev libva mesa libnotify xorg.libXScrnSaver cups pciutils ]
|
||||
++ lib.optional pipewireSupport pipewire
|
||||
++ lib.optional ffmpegSupport ffmpeg
|
||||
++ lib.optional gssSupport libkrb5
|
||||
++ lib.optional useGlvnd libglvnd
|
||||
++ lib.optionals (cfg.enableQuakeLive or false)
|
||||
(with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsa-lib zlib ])
|
||||
++ lib.optional (config.pulseaudio or true) libpulseaudio
|
||||
++ lib.optional alsaSupport alsa-lib
|
||||
++ lib.optional sndioSupport sndio
|
||||
++ lib.optional jackSupport libjack2
|
||||
++ lib.optional smartcardSupport opensc
|
||||
++ pkcs11Modules;
|
||||
gtk_modules = [ libcanberra-gtk3 ];
|
||||
|
||||
#########################
|
||||
# #
|
||||
# EXTRA PREF CHANGES #
|
||||
# #
|
||||
#########################
|
||||
policiesJson = writeText "policies.json" (builtins.toJSON enterprisePolicies);
|
||||
|
||||
usesNixExtensions = nixExtensions != null;
|
||||
|
||||
nameArray = builtins.map(a: a.name) (if usesNixExtensions then nixExtensions else []);
|
||||
|
||||
# Check that every extension has a unqiue .name attribute
|
||||
# and an extid attribute
|
||||
extensions = if nameArray != (lib.unique nameArray) then
|
||||
throw "Firefox addon name needs to be unique"
|
||||
else if ! (lib.hasSuffix "esr" browser.name) then
|
||||
throw "Nix addons are only supported in Firefox ESR"
|
||||
else 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 = {
|
||||
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;
|
||||
|
||||
Extensions = {
|
||||
Install = lib.foldr (e: ret:
|
||||
ret ++ [ "${e.outPath}/${e.extid}.xpi" ]
|
||||
) [] extensions;
|
||||
};
|
||||
} // lib.optionalAttrs smartcardSupport {
|
||||
SecurityDevices = {
|
||||
"OpenSC PKCS#11 Module" = "opensc-pkcs11.so";
|
||||
};
|
||||
}
|
||||
// extraPolicies;
|
||||
};
|
||||
|
||||
mozillaCfg = writeText "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 = applicationName;
|
||||
exec = "${applicationName}${nameSuffix} %U";
|
||||
inherit icon;
|
||||
desktopName = "${desktopName}${nameSuffix}${lib.optionalString forceWayland " (Wayland)"}";
|
||||
genericName = "Web Browser";
|
||||
categories = [ "Network" "WebBrowser" ];
|
||||
mimeTypes = [
|
||||
"text/html"
|
||||
"text/xml"
|
||||
"application/xhtml+xml"
|
||||
"application/vnd.mozilla.xul+xml"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/ftp"
|
||||
];
|
||||
startupWMClass = wmClass;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper lndir jq ];
|
||||
buildInputs = [ browser.gtk3 ];
|
||||
|
||||
|
||||
buildCommand = ''
|
||||
if [ ! -x "${browser}/bin/${applicationName}" ]
|
||||
then
|
||||
echo "cannot find executable file \`${browser}/bin/${applicationName}'"
|
||||
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 "${applicationName}" \) -exec ln -sT "${browser}"/{} "$out"/{} \;
|
||||
|
||||
find . -type f \( -name "${applicationName}" -o -name "${applicationName}-bin" \) -print0 | while read -d $'\0' f; do
|
||||
cp -P --no-preserve=mode,ownership --remove-destination "${browser}/$f" "$out/$f"
|
||||
chmod a+rwx "$out/$f"
|
||||
done
|
||||
|
||||
# fix links and absolute references
|
||||
|
||||
find . -type l -print0 | while read -d $'\0' l; do
|
||||
target="$(readlink "$l")"
|
||||
target=''${target/#"${browser}"/"$out"}
|
||||
ln -sfT "$target" "$out/$l"
|
||||
done
|
||||
|
||||
cd "$out"
|
||||
|
||||
# create the wrapper
|
||||
|
||||
executablePrefix="$out/bin"
|
||||
executablePath="$executablePrefix/${applicationName}"
|
||||
oldWrapperArgs=()
|
||||
|
||||
if [[ -L $executablePath ]]; then
|
||||
# Symbolic link: wrap the link's target.
|
||||
oldExe="$(readlink -v --canonicalize-existing "$executablePath")"
|
||||
rm "$executablePath"
|
||||
elif wrapperCmd=$(${makeBinaryWrapper.extractCmd} "$executablePath"); [[ $wrapperCmd ]]; then
|
||||
# If the executable is a binary wrapper, we need to update its target to
|
||||
# point to $out, but we can't just edit the binary in-place because of length
|
||||
# issues. So we extract the command used to create the wrapper and add the
|
||||
# arguments to our wrapper.
|
||||
parseMakeCWrapperCall() {
|
||||
shift # makeCWrapper
|
||||
oldExe=$1; shift
|
||||
oldWrapperArgs=("$@")
|
||||
}
|
||||
eval "parseMakeCWrapperCall ''${wrapperCmd//"${browser}"/"$out"}"
|
||||
rm "$executablePath"
|
||||
else
|
||||
if read -rn2 shebang < "$executablePath" && [[ $shebang == '#!' ]]; then
|
||||
# Shell wrapper: patch in place to point to $out.
|
||||
sed -i "s@${browser}@$out@g" "$executablePath"
|
||||
fi
|
||||
# Suffix the executable with -old, because -wrapped might already be used by the old wrapper.
|
||||
oldExe="$executablePrefix/.${applicationName}"-old
|
||||
mv "$executablePath" "$oldExe"
|
||||
fi
|
||||
|
||||
makeWrapper "$oldExe" \
|
||||
"''${executablePath}${nameSuffix}" \
|
||||
--prefix LD_LIBRARY_PATH ':' "$libs" \
|
||||
--suffix-each GTK_PATH ':' "$gtk_modules" \
|
||||
--prefix PATH ':' "${xdg-utils}/bin" \
|
||||
--suffix PATH ':' "$out/bin" \
|
||||
--set MOZ_APP_LAUNCHER "${applicationName}${nameSuffix}" \
|
||||
--set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
|
||||
--set MOZ_LEGACY_PROFILES 1 \
|
||||
--set MOZ_ALLOW_DOWNGRADE 1 \
|
||||
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
|
||||
--suffix XDG_DATA_DIRS : '${gnome.adwaita-icon-theme}/share' \
|
||||
${lib.optionalString forceWayland "--set MOZ_ENABLE_WAYLAND 1"} \
|
||||
"''${oldWrapperArgs[@]}"
|
||||
#############################
|
||||
# #
|
||||
# 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=$( find "${browser}/lib/" -name "default''${res}.png" )
|
||||
if [ -e "$icon" ]; then ln -s "$icon" \
|
||||
"$out/share/icons/hicolor/''${res}x''${res}/apps/${icon}.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
|
||||
|
||||
|
||||
#########################
|
||||
# #
|
||||
# EXTRA PREF CHANGES #
|
||||
# #
|
||||
#########################
|
||||
# user customization
|
||||
mkdir -p $out/lib/${libName}
|
||||
|
||||
# creating policies.json
|
||||
mkdir -p "$out/lib/${libName}/distribution"
|
||||
|
||||
POL_PATH="$out/lib/${libName}/distribution/policies.json"
|
||||
rm -f "$POL_PATH"
|
||||
cat ${policiesJson} >> "$POL_PATH"
|
||||
|
||||
extraPoliciesFiles=(${builtins.toString extraPoliciesFiles})
|
||||
for extraPoliciesFile in "''${extraPoliciesFiles[@]}"; do
|
||||
jq -s '.[0] + .[1]' "$POL_PATH" $extraPoliciesFile > .tmp.json
|
||||
mv .tmp.json "$POL_PATH"
|
||||
done
|
||||
|
||||
# preparing for autoconfig
|
||||
mkdir -p "$out/lib/${libName}/defaults/pref"
|
||||
|
||||
echo 'pref("general.config.filename", "mozilla.cfg");' > "$out/lib/${libName}/defaults/pref/autoconfig.js"
|
||||
echo 'pref("general.config.obscure_value", 0);' >> "$out/lib/${libName}/defaults/pref/autoconfig.js"
|
||||
|
||||
cat > "$out/lib/${libName}/mozilla.cfg" < ${mozillaCfg}
|
||||
|
||||
extraPrefsFiles=(${builtins.toString extraPrefsFiles})
|
||||
for extraPrefsFile in "''${extraPrefsFiles[@]}"; do
|
||||
cat "$extraPrefsFile" >> "$out/lib/${libName}/mozilla.cfg"
|
||||
done
|
||||
|
||||
mkdir -p $out/lib/${libName}/distribution/extensions
|
||||
|
||||
#############################
|
||||
# #
|
||||
# END EXTRA PREF CHANGES #
|
||||
# #
|
||||
#############################
|
||||
'';
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
||||
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;
|
||||
hydraPlatforms = [];
|
||||
priority = (browser.meta.priority or 0) - 1; # prefer wrapper over the package
|
||||
};
|
||||
};
|
||||
in lib.makeOverridable wrapper
|
||||
24
pkgs/applications/networking/browsers/gmni/default.nix
Normal file
24
pkgs/applications/networking/browsers/gmni/default.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ stdenv, lib, fetchFromSourcehut, bearssl, scdoc }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gmni";
|
||||
version = "1.0";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~sircmpwn";
|
||||
repo = "gmni";
|
||||
rev = version;
|
||||
sha256 = "sha256-3MFNAI/SfFigNfitfFs3o9kkz7JeEflMHiH7iJpLfi4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ scdoc ];
|
||||
buildInputs = [ bearssl ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Gemini client";
|
||||
homepage = "https://git.sr.ht/~sircmpwn/gmni";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ bsima jb55 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
174
pkgs/applications/networking/browsers/google-chrome/default.nix
Normal file
174
pkgs/applications/networking/browsers/google-chrome/default.nix
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
{ lib, stdenv, patchelf, makeWrapper
|
||||
|
||||
# Linked dynamic libraries.
|
||||
, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, nss, nspr
|
||||
, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb
|
||||
, alsa-lib, libXdamage, libXtst, libXrandr, libxshmfence, expat, cups
|
||||
, dbus, gtk3, gdk-pixbuf, gcc-unwrapped, at-spi2-atk, at-spi2-core
|
||||
, libkrb5, libdrm, libglvnd, mesa
|
||||
, libxkbcommon, pipewire, 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, pciutils
|
||||
|
||||
# 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
|
||||
|
||||
# Only needed for getting information about upstream binaries
|
||||
, chromium
|
||||
|
||||
, gsettings-desktop-schemas
|
||||
, gnome
|
||||
|
||||
# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder)
|
||||
, libvaSupport ? true, libva
|
||||
|
||||
# For Vulkan support (--enable-features=Vulkan)
|
||||
, addOpenGLRunpath
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
opusWithCustomModes = libopus.override {
|
||||
withCustomModes = true;
|
||||
};
|
||||
|
||||
version = chromium.upstream-info.version;
|
||||
|
||||
deps = [
|
||||
glib fontconfig freetype pango cairo libX11 libXi atk nss nspr
|
||||
libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite libxcb
|
||||
alsa-lib libXdamage libXtst libXrandr libxshmfence expat cups
|
||||
dbus gdk-pixbuf gcc-unwrapped.lib
|
||||
systemd
|
||||
libexif pciutils
|
||||
liberation_ttf curl util-linux xdg-utils wget
|
||||
flac harfbuzz icu libpng opusWithCustomModes snappy speechd
|
||||
bzip2 libcap at-spi2-atk at-spi2-core
|
||||
libkrb5 libdrm libglvnd mesa coreutils
|
||||
libxkbcommon pipewire wayland
|
||||
] ++ optional pulseSupport libpulseaudio
|
||||
++ optional libvaSupport libva
|
||||
++ [ gtk3 ];
|
||||
|
||||
suffix = if channel != "stable" then "-" + channel else "";
|
||||
|
||||
crashpadHandlerBinary = if lib.versionAtLeast version "94"
|
||||
then "chrome_crashpad_handler"
|
||||
else "crashpad_handler";
|
||||
|
||||
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
|
||||
gnome.adwaita-icon-theme
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
ar x $src
|
||||
tar xf data.tar.xz
|
||||
'';
|
||||
|
||||
rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
|
||||
binpath = makeBinPath deps;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
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
|
||||
|
||||
|
||||
substituteInPlace $out/share/google/$appname/google-$appname \
|
||||
--replace 'CHROME_WRAPPER' 'WRAPPER'
|
||||
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:${addOpenGLRunpath.driverLink}/share" \
|
||||
--set CHROME_WRAPPER "google-chrome-$dist" \
|
||||
--add-flags ${escapeShellArg commandLineArgs} \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
|
||||
|
||||
for elf in $out/share/google/$appname/{chrome,chrome-sandbox,${crashpadHandlerBinary},nacl_helper}; do
|
||||
patchelf --set-rpath $rpath $elf
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $elf
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
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" ];
|
||||
mainProgram =
|
||||
if (channel == "dev") then "google-chrome-unstable"
|
||||
else "google-chrome-${channel}";
|
||||
};
|
||||
}
|
||||
44
pkgs/applications/networking/browsers/kristall/default.nix
Normal file
44
pkgs/applications/networking/browsers/kristall/default.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ lib, stdenv, fetchFromGitHub, wrapQtAppsHook, qmake, qtmultimedia }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kristall";
|
||||
version = "0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MasterQ32";
|
||||
repo = "kristall";
|
||||
rev = "V${version}";
|
||||
sha256 = "07nf7w6ilzs5g6isnvsmhh4qa1zsprgjyf0zy7rhpx4ikkj8c8zq";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.cc.isClang ''
|
||||
sed -i '1i #include <errno.h>' src/browsertab.cpp
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ wrapQtAppsHook qmake ];
|
||||
|
||||
buildInputs = [ qtmultimedia ];
|
||||
|
||||
qmakeFlags = [ "src/kristall.pro" ];
|
||||
|
||||
installPhase = if stdenv.isDarwin then ''
|
||||
mkdir -p $out/Applications
|
||||
mv kristall.app $out/Applications
|
||||
'' else ''
|
||||
install -Dt $out/bin kristall
|
||||
install -D Kristall.desktop $out/share/applications/net.random-projects.kristall.desktop
|
||||
install -D src/icons/kristall.svg $out/share/icons/hicolor/scalable/apps/net.random-projects.kristall.svg
|
||||
for size in 16 32 64 128; do
|
||||
install -D src/icons/kristall-''${size}.png $out/share/icons/hicolor/''${size}x''${size}/apps/net.random-projects.kristall.png
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
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.gpl3Only;
|
||||
inherit (qtmultimedia.meta) platforms;
|
||||
};
|
||||
}
|
||||
65
pkgs/applications/networking/browsers/lagrange/default.nix
Normal file
65
pkgs/applications/networking/browsers/lagrange/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, cmake
|
||||
, pkg-config
|
||||
, fribidi
|
||||
, harfbuzz
|
||||
, libwebp
|
||||
, mpg123
|
||||
, SDL2
|
||||
, the-foundation
|
||||
, AppKit
|
||||
, zip
|
||||
, enableTUI ? false, ncurses, sealcurses
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lagrange";
|
||||
version = "1.13.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "skyjake";
|
||||
repo = "lagrange";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-5EIXbdVBFkmftD8xK1VJmZH3Ul99fhFSpFLOQNqSXoU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config zip ];
|
||||
|
||||
buildInputs = [ the-foundation ]
|
||||
++ lib.optionals (!enableTUI) [ fribidi harfbuzz libwebp mpg123 SDL2 ]
|
||||
++ lib.optionals enableTUI [ ncurses sealcurses ]
|
||||
++ lib.optional stdenv.isDarwin AppKit;
|
||||
|
||||
cmakeFlags = lib.optionals enableTUI [
|
||||
"-DENABLE_TUI=YES"
|
||||
"-DENABLE_MPG123=NO"
|
||||
"-DENABLE_WEBP=NO"
|
||||
"-DENABLE_FRIBIDI=NO"
|
||||
"-DENABLE_HARFBUZZ=NO"
|
||||
"-DENABLE_POPUP_MENUS=NO"
|
||||
"-DENABLE_IDLE_SLEEP=NO"
|
||||
"-DCMAKE_INSTALL_DATADIR=${placeholder "out"}/share"
|
||||
];
|
||||
|
||||
installPhase = lib.optionalString (stdenv.isDarwin && !enableTUI) ''
|
||||
mkdir -p $out/Applications
|
||||
mv Lagrange.app $out/Applications
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Beautiful Gemini Client";
|
||||
homepage = "https://gmi.skyjake.fi/lagrange/";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ sikmir ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
32
pkgs/applications/networking/browsers/librewolf/default.nix
Normal file
32
pkgs/applications/networking/browsers/librewolf/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ stdenv, lib, callPackage, buildMozillaMach }:
|
||||
|
||||
let
|
||||
librewolf-src = callPackage ./librewolf.nix { };
|
||||
in
|
||||
(buildMozillaMach rec {
|
||||
pname = "librewolf";
|
||||
applicationName = "LibreWolf";
|
||||
binaryName = "librewolf";
|
||||
version = librewolf-src.packageVersion;
|
||||
src = librewolf-src.firefox;
|
||||
inherit (librewolf-src) extraConfigureFlags extraPostPatch extraPassthru;
|
||||
|
||||
meta = {
|
||||
description = "A fork of Firefox, focused on privacy, security and freedom";
|
||||
homepage = "https://librewolf.net/";
|
||||
maintainers = with lib.maintainers; [ squalus ];
|
||||
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.
|
||||
maxSilent = 14400; # 4h, double the default of 7200s (c.f. #129212, #129115)
|
||||
license = lib.licenses.mpl20;
|
||||
};
|
||||
updateScript = callPackage ./update.nix {
|
||||
attrPath = "librewolf-unwrapped";
|
||||
};
|
||||
}).override {
|
||||
crashreporterSupport = false;
|
||||
enableOfficialBranding = false;
|
||||
pgoSupport = false; # Profiling gets stuck and doesn't terminate.
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
{ callPackage }:
|
||||
let
|
||||
src = callPackage ./src.nix { };
|
||||
in
|
||||
rec {
|
||||
|
||||
inherit (src) packageVersion firefox source;
|
||||
|
||||
extraPatches = [ ./verify-telemetry-macros.patch ];
|
||||
|
||||
extraConfigureFlags = [
|
||||
"--with-app-name=librewolf"
|
||||
"--with-app-basename=LibreWolf"
|
||||
"--with-branding=browser/branding/librewolf"
|
||||
"--with-distribution-id=io.gitlab.librewolf-community"
|
||||
"--with-unsigned-addon-scopes=app,system"
|
||||
"--allow-addon-sideload"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
while read patch_name; do
|
||||
echo "applying LibreWolf patch: $patch_name"
|
||||
patch -p1 < ${source}/$patch_name
|
||||
done <${source}/assets/patches.txt
|
||||
|
||||
cp -r ${source}/themes/browser .
|
||||
cp ${source}/assets/search-config.json services/settings/dumps/main/search-config.json
|
||||
sed -i '/MOZ_SERVICES_HEALTHREPORT/ s/True/False/' browser/moz.configure
|
||||
sed -i '/MOZ_NORMANDY/ s/True/False/' browser/moz.configure
|
||||
'';
|
||||
|
||||
extraPrefsFiles = [ "${source}/submodules/settings/librewolf.cfg" ];
|
||||
|
||||
extraPoliciesFiles = [ "${source}/submodules/settings/distribution/policies.json" ];
|
||||
|
||||
extraPassthru = {
|
||||
librewolf = { inherit src extraPatches; };
|
||||
inherit extraPrefsFiles extraPoliciesFiles;
|
||||
};
|
||||
}
|
||||
|
||||
11
pkgs/applications/networking/browsers/librewolf/src.json
Normal file
11
pkgs/applications/networking/browsers/librewolf/src.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"packageVersion": "100.0.2-1",
|
||||
"source": {
|
||||
"rev": "100.0.2-1",
|
||||
"sha256": "1hss4kvy4n4wxwlbb0pk7f02qra1dk8xgc6v6xqg252i7453vg9d"
|
||||
},
|
||||
"firefox": {
|
||||
"version": "100.0.2",
|
||||
"sha512": "6d9922e35e496fa63833ba03d1466e075287e40e50854ddc4f4a2036d9c7ca1f35c03bc6f708a3c469e0ec3b389b3346ac754bb84df0fecb86955fc21c05e00f"
|
||||
}
|
||||
}
|
||||
18
pkgs/applications/networking/browsers/librewolf/src.nix
Normal file
18
pkgs/applications/networking/browsers/librewolf/src.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{ fetchurl, fetchFromGitLab }:
|
||||
let src = builtins.fromJSON (builtins.readFile ./src.json);
|
||||
in
|
||||
{
|
||||
inherit (src) packageVersion;
|
||||
source = fetchFromGitLab {
|
||||
owner = "librewolf-community";
|
||||
repo = "browser/source";
|
||||
fetchSubmodules = true;
|
||||
inherit (src.source) rev sha256;
|
||||
};
|
||||
firefox = fetchurl {
|
||||
url =
|
||||
"mirror://mozilla/firefox/releases/${src.firefox.version}/source/firefox-${src.firefox.version}.source.tar.xz";
|
||||
inherit (src.firefox) sha512;
|
||||
};
|
||||
}
|
||||
|
||||
65
pkgs/applications/networking/browsers/librewolf/update.nix
Normal file
65
pkgs/applications/networking/browsers/librewolf/update.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ writeScript
|
||||
, lib
|
||||
, coreutils
|
||||
, gnused
|
||||
, gnugrep
|
||||
, curl
|
||||
, gnupg
|
||||
, jq
|
||||
, nix-prefetch-git
|
||||
, moreutils
|
||||
, runtimeShell
|
||||
, ...
|
||||
}:
|
||||
|
||||
writeScript "update-librewolf" ''
|
||||
#!${runtimeShell}
|
||||
PATH=${lib.makeBinPath [ coreutils curl gnugrep gnupg gnused jq moreutils nix-prefetch-git ]}
|
||||
set -euo pipefail
|
||||
|
||||
latestTag=$(curl https://gitlab.com/api/v4/projects/librewolf-community%2Fbrowser%2Fsource/repository/tags?per_page=1 | jq -r .[0].name)
|
||||
echo "latestTag=$latestTag"
|
||||
|
||||
srcJson=pkgs/applications/networking/browsers/librewolf/src.json
|
||||
localRev=$(jq -r .source.rev < $srcJson)
|
||||
echo "localRev=$localRev"
|
||||
|
||||
if [ "$localRev" == "$latestTag" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
prefetchOut=$(mktemp)
|
||||
repoUrl=https://gitlab.com/librewolf-community/browser/source.git/
|
||||
nix-prefetch-git $repoUrl --quiet --rev $latestTag --fetch-submodules > $prefetchOut
|
||||
srcDir=$(jq -r .path < $prefetchOut)
|
||||
srcHash=$(jq -r .sha256 < $prefetchOut)
|
||||
|
||||
ffVersion=$(<$srcDir/version)
|
||||
lwRelease=$(<$srcDir/release)
|
||||
lwVersion="$ffVersion-$lwRelease"
|
||||
echo "lwVersion=$lwVersion"
|
||||
echo "ffVersion=$ffVersion"
|
||||
if [ "$lwVersion" != "$latestTag" ]; then
|
||||
echo "error: Tag name does not match the computed LibreWolf version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
HOME=$(mktemp -d)
|
||||
export GNUPGHOME=$(mktemp -d)
|
||||
gpg --receive-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
|
||||
|
||||
mozillaUrl=https://archive.mozilla.org/pub/firefox/releases/
|
||||
|
||||
curl --silent --show-error -o "$HOME"/shasums "$mozillaUrl$ffVersion/SHA512SUMS"
|
||||
curl --silent --show-error -o "$HOME"/shasums.asc "$mozillaUrl$ffVersion/SHA512SUMS.asc"
|
||||
gpgv --keyring="$GNUPGHOME"/pubring.kbx "$HOME"/shasums.asc "$HOME"/shasums
|
||||
|
||||
ffHash=$(grep '\.source\.tar\.xz$' "$HOME"/shasums | grep '^[^ ]*' -o)
|
||||
echo "ffHash=$ffHash"
|
||||
|
||||
jq ".source.rev = \"$latestTag\"" $srcJson | sponge $srcJson
|
||||
jq ".source.sha256 = \"$srcHash\"" $srcJson | sponge $srcJson
|
||||
jq ".firefox.version = \"$ffVersion\"" $srcJson | sponge $srcJson
|
||||
jq ".firefox.sha512 = \"$ffHash\"" $srcJson | sponge $srcJson
|
||||
jq ".packageVersion = \"$lwVersion\"" $srcJson | sponge $srcJson
|
||||
''
|
||||
41
pkgs/applications/networking/browsers/links2/default.nix
Normal file
41
pkgs/applications/networking/browsers/links2/default.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ lib, stdenv, fetchurl
|
||||
, gpm, openssl, pkg-config, 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.25";
|
||||
pname = "links2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${meta.homepage}/download/links-${version}.tar.bz2";
|
||||
sha256 = "sha256-LdeFCGmOgnnvTwmjoqIelZUEARNALabFU5dEFPtJ3Sw=";
|
||||
};
|
||||
|
||||
buildInputs = with lib;
|
||||
[ libev librsvg libpng libjpeg libtiff openssl xz bzip2 zlib ]
|
||||
++ optionals stdenv.isLinux [ gpm ]
|
||||
++ optionals enableX11 [ libX11 libXau libXt ]
|
||||
++ optional enableDirectFB [ directfb ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config bzip2 ];
|
||||
|
||||
configureFlags = [ "--with-ssl" ]
|
||||
++ lib.optional (enableX11 || enableFB || enableDirectFB) "--enable-graphics"
|
||||
++ lib.optional enableX11 "--with-x"
|
||||
++ lib.optional enableFB "--with-fb"
|
||||
++ lib.optional enableDirectFB "--with-directfb";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://links.twibright.com/";
|
||||
description = "A small browser with some graphics support";
|
||||
maintainers = with maintainers; [ raskin ];
|
||||
mainProgram = "links";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
90
pkgs/applications/networking/browsers/luakit/default.nix
Normal file
90
pkgs/applications/networking/browsers/luakit/default.nix
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, help2man
|
||||
, glib-networking
|
||||
, gst_all_1
|
||||
, gtk3
|
||||
, luafilesystem
|
||||
, luajit
|
||||
, sqlite
|
||||
, webkitgtk
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "luakit";
|
||||
version = "2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "luakit";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-5YeJkbWk1wHxWXqWOvhEDeScWPU/aRVhuOWRHLSHVZM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
help2man
|
||||
wrapGAppsHook
|
||||
];
|
||||
buildInputs = [
|
||||
gtk3
|
||||
glib-networking # TLS support
|
||||
luafilesystem
|
||||
luajit
|
||||
sqlite
|
||||
webkitgtk
|
||||
] ++ ( with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
gst-plugins-bad
|
||||
gst-plugins-ugly
|
||||
gst-libav
|
||||
]);
|
||||
|
||||
|
||||
# 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
|
||||
preBuild = ''
|
||||
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 lib; {
|
||||
homepage = "https://luakit.github.io/";
|
||||
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.
|
||||
'';
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = [ maintainers.AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
65
pkgs/applications/networking/browsers/lynx/default.nix
Normal file
65
pkgs/applications/networking/browsers/lynx/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, buildPackages
|
||||
, fetchurl
|
||||
, pkg-config
|
||||
, ncurses
|
||||
, gzip
|
||||
, sslSupport ? true
|
||||
, openssl
|
||||
, nukeReferences
|
||||
, fetchpatch
|
||||
}:
|
||||
|
||||
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" ];
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "CVE-2021-38165.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/lynx/CVE-2021-38165.patch?id=3400945dbbb8a87065360963e4caa0e17d3dcc61";
|
||||
sha256 = "1aykb9y2g2vdpbbpvjlm4r40x7py2yv6jbywwcqcxrlciqcw4x57";
|
||||
})
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--enable-default-colors"
|
||||
"--enable-widec"
|
||||
"--enable-ipv6"
|
||||
] ++ lib.optional sslSupport "--with-ssl";
|
||||
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||
nativeBuildInputs = [ nukeReferences ]
|
||||
++ lib.optional sslSupport pkg-config;
|
||||
|
||||
buildInputs = [ ncurses gzip ]
|
||||
++ lib.optional sslSupport openssl;
|
||||
|
||||
# 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 lib; {
|
||||
description = "A text-mode web browser";
|
||||
homepage = "https://lynx.invisible-island.net/";
|
||||
maintainers = with maintainers; [ ];
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
191
pkgs/applications/networking/browsers/microsoft-edge/browser.nix
Normal file
191
pkgs/applications/networking/browsers/microsoft-edge/browser.nix
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
{ channel, version, revision, sha256 }:
|
||||
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, lib
|
||||
|
||||
, binutils-unwrapped
|
||||
, xz
|
||||
, gnutar
|
||||
, file
|
||||
|
||||
, glibc
|
||||
, glib
|
||||
, nss
|
||||
, nspr
|
||||
, atk
|
||||
, at-spi2-atk
|
||||
, xorg
|
||||
, cups
|
||||
, dbus
|
||||
, expat
|
||||
, libdrm
|
||||
, libxkbcommon
|
||||
, gtk3
|
||||
, pango
|
||||
, cairo
|
||||
, gdk-pixbuf
|
||||
, mesa
|
||||
, alsa-lib
|
||||
, at-spi2-core
|
||||
, libuuid
|
||||
, systemd
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
baseName = "microsoft-edge";
|
||||
|
||||
shortName = if channel == "stable"
|
||||
then "msedge"
|
||||
else "msedge-" + channel;
|
||||
|
||||
longName = if channel == "stable"
|
||||
then baseName
|
||||
else baseName + "-" + channel;
|
||||
|
||||
iconSuffix = if channel == "stable"
|
||||
then ""
|
||||
else "_${channel}";
|
||||
|
||||
desktopSuffix = if channel == "stable"
|
||||
then ""
|
||||
else "-${channel}";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name="${baseName}-${channel}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://packages.microsoft.com/repos/edge/pool/main/m/${baseName}-${channel}/${baseName}-${channel}_${version}-${revision}_amd64.deb";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
unpackCmd = "${binutils-unwrapped}/bin/ar p $src data.tar.xz | ${xz}/bin/xz -dc | ${gnutar}/bin/tar -xf -";
|
||||
sourceRoot = ".";
|
||||
|
||||
dontPatch = true;
|
||||
dontConfigure = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
buildPhase = let
|
||||
libPath = {
|
||||
msedge = lib.makeLibraryPath [
|
||||
glibc glib nss nspr atk at-spi2-atk xorg.libX11
|
||||
xorg.libxcb cups.lib dbus.lib expat libdrm
|
||||
xorg.libXcomposite xorg.libXdamage xorg.libXext
|
||||
xorg.libXfixes xorg.libXrandr libxkbcommon
|
||||
gtk3 pango cairo gdk-pixbuf mesa
|
||||
alsa-lib at-spi2-core xorg.libxshmfence systemd
|
||||
];
|
||||
naclHelper = lib.makeLibraryPath [
|
||||
glib nspr atk libdrm xorg.libxcb mesa xorg.libX11
|
||||
xorg.libXext dbus.lib libxkbcommon
|
||||
];
|
||||
libwidevinecdm = lib.makeLibraryPath [
|
||||
glib nss nspr
|
||||
];
|
||||
libGLESv2 = lib.makeLibraryPath [
|
||||
xorg.libX11 xorg.libXext xorg.libxcb
|
||||
];
|
||||
libsmartscreen = lib.makeLibraryPath [
|
||||
libuuid stdenv.cc.cc.lib
|
||||
];
|
||||
libsmartscreenn = lib.makeLibraryPath [
|
||||
libuuid
|
||||
];
|
||||
liboneauth = lib.makeLibraryPath [
|
||||
libuuid xorg.libX11
|
||||
];
|
||||
};
|
||||
in ''
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${libPath.msedge}" \
|
||||
opt/microsoft/${shortName}/msedge
|
||||
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
opt/microsoft/${shortName}/msedge-sandbox
|
||||
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
opt/microsoft/${shortName}/msedge_crashpad_handler
|
||||
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${libPath.naclHelper}" \
|
||||
opt/microsoft/${shortName}/nacl_helper
|
||||
|
||||
patchelf \
|
||||
--set-rpath "${libPath.libwidevinecdm}" \
|
||||
opt/microsoft/${shortName}/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so
|
||||
|
||||
patchelf \
|
||||
--set-rpath "${libPath.libGLESv2}" \
|
||||
opt/microsoft/${shortName}/libGLESv2.so
|
||||
|
||||
patchelf \
|
||||
--set-rpath "${libPath.libsmartscreen}" \
|
||||
opt/microsoft/${shortName}/libsmartscreen.so
|
||||
|
||||
patchelf \
|
||||
--set-rpath "${libPath.libsmartscreenn}" \
|
||||
opt/microsoft/${shortName}/libsmartscreenn.so
|
||||
|
||||
patchelf \
|
||||
--set-rpath "${libPath.liboneauth}" \
|
||||
opt/microsoft/${shortName}/liboneauth.so
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -R opt usr/bin usr/share $out
|
||||
|
||||
${if channel == "stable"
|
||||
then ""
|
||||
else "ln -sf $out/opt/microsoft/${shortName}/${baseName}-${channel} $out/opt/microsoft/${shortName}/${baseName}"}
|
||||
|
||||
ln -sf $out/opt/microsoft/${shortName}/${longName} $out/bin/${longName}
|
||||
|
||||
rm -rf $out/share/doc
|
||||
rm -rf $out/opt/microsoft/${shortName}/cron
|
||||
|
||||
for icon in '16' '24' '32' '48' '64' '128' '256'
|
||||
do
|
||||
${ "icon_source=$out/opt/microsoft/${shortName}/product_logo_\${icon}${iconSuffix}.png" }
|
||||
${ "icon_target=$out/share/icons/hicolor/\${icon}x\${icon}/apps" }
|
||||
mkdir -p $icon_target
|
||||
cp $icon_source $icon_target/microsoft-edge${desktopSuffix}.png
|
||||
done
|
||||
|
||||
substituteInPlace $out/share/applications/${longName}.desktop \
|
||||
--replace /usr/bin/${baseName}-${channel} $out/bin/${longName}
|
||||
|
||||
substituteInPlace $out/share/gnome-control-center/default-apps/${longName}.xml \
|
||||
--replace /opt/microsoft/${shortName} $out/opt/microsoft/${shortName}
|
||||
|
||||
substituteInPlace $out/share/menu/${longName}.menu \
|
||||
--replace /opt/microsoft/${shortName} $out/opt/microsoft/${shortName}
|
||||
|
||||
substituteInPlace $out/opt/microsoft/${shortName}/xdg-mime \
|
||||
--replace "''${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" "''${XDG_DATA_DIRS:-/run/current-system/sw/share}" \
|
||||
--replace "xdg_system_dirs=/usr/local/share/:/usr/share/" "xdg_system_dirs=/run/current-system/sw/share/" \
|
||||
--replace /usr/bin/file ${file}/bin/file
|
||||
|
||||
substituteInPlace $out/opt/microsoft/${shortName}/default-app-block \
|
||||
--replace /opt/microsoft/${shortName} $out/opt/microsoft/${shortName}
|
||||
|
||||
substituteInPlace $out/opt/microsoft/${shortName}/xdg-settings \
|
||||
--replace "''${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" "''${XDG_DATA_DIRS:-/run/current-system/sw/share}" \
|
||||
--replace "''${XDG_CONFIG_DIRS:-/etc/xdg}" "''${XDG_CONFIG_DIRS:-/run/current-system/sw/etc/xdg}"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.microsoft.com/en-us/edge";
|
||||
description = "The web browser from Microsoft";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ zanculmarktum kuwii ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
beta = import ./browser.nix {
|
||||
channel = "beta";
|
||||
version = "101.0.1210.19";
|
||||
revision = "1";
|
||||
sha256 = "sha256:1kgc19ryw69xiqppz90d6sa45g99hzkh7x5yk9d3xlh1gc1xn54p";
|
||||
};
|
||||
dev = import ./browser.nix {
|
||||
channel = "dev";
|
||||
version = "102.0.1227.0";
|
||||
revision = "1";
|
||||
sha256 = "sha256:0dnyandri7yg7c9812pnsxqszxyqcssxf87yskjg2vw95hawf11x";
|
||||
};
|
||||
stable = import ./browser.nix {
|
||||
channel = "stable";
|
||||
version = "100.0.1185.44";
|
||||
revision = "1";
|
||||
sha256 = "sha256:0zv1zyijh620xz36a6nmhv7rbv4ln5f245hyh0w1sngynsl1rz89";
|
||||
};
|
||||
}
|
||||
50
pkgs/applications/networking/browsers/microsoft-edge/update.sh
Executable file
50
pkgs/applications/networking/browsers/microsoft-edge/update.sh
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p curl gzip
|
||||
|
||||
# To update: ./update.sh > default.nix
|
||||
|
||||
index_file=$(curl -sL https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages.gz | gzip -dc)
|
||||
|
||||
echo "{"
|
||||
|
||||
packages=()
|
||||
echo "$index_file" | while read -r line; do
|
||||
if [[ "$line" =~ ^Package:[[:space:]]*(.*) ]]; then
|
||||
Package="${BASH_REMATCH[1]}"
|
||||
fi
|
||||
if [[ "$line" =~ ^Version:[[:space:]]*(.*)-([a-zA-Z0-9+.~]*) ]]; then
|
||||
Version="${BASH_REMATCH[1]}"
|
||||
Revision="${BASH_REMATCH[2]}"
|
||||
fi
|
||||
if [[ "$line" =~ ^SHA256:[[:space:]]*(.*) ]]; then
|
||||
SHA256="${BASH_REMATCH[1]}"
|
||||
fi
|
||||
|
||||
if ! [[ "$line" ]]; then
|
||||
found=0
|
||||
for i in "${packages[@]}"; do
|
||||
if [[ "$i" == "$Package" ]]; then
|
||||
found=1
|
||||
fi
|
||||
done
|
||||
|
||||
if (( ! $found )); then
|
||||
channel="${Package##*-}"
|
||||
name="${Package%-${channel}}"
|
||||
cat <<EOF
|
||||
${channel} = import ./browser.nix {
|
||||
channel = "${channel}";
|
||||
version = "${Version}";
|
||||
revision = "${Revision}";
|
||||
sha256 = "sha256:$(nix-hash --type sha256 --to-base32 ${SHA256})";
|
||||
};
|
||||
EOF
|
||||
fi
|
||||
|
||||
packages+=($Package)
|
||||
Package=""
|
||||
Version=""
|
||||
fi
|
||||
done
|
||||
|
||||
echo "}"
|
||||
63
pkgs/applications/networking/browsers/midori/default.nix
Normal file
63
pkgs/applications/networking/browsers/midori/default.nix
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, cmake
|
||||
, ninja
|
||||
, pkg-config
|
||||
, 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
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
(libsoup.override { gnomeSupport = true; })
|
||||
gcr
|
||||
glib-networking
|
||||
gsettings-desktop-schemas
|
||||
gtk3
|
||||
libpeas
|
||||
sqlite
|
||||
webkitgtk
|
||||
json-glib
|
||||
libarchive
|
||||
];
|
||||
|
||||
passthru = {
|
||||
inherit gtk3;
|
||||
};
|
||||
|
||||
meta = with 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 ];
|
||||
};
|
||||
}
|
||||
83
pkgs/applications/networking/browsers/netsurf/browser.nix
Normal file
83
pkgs/applications/networking/browsers/netsurf/browser.nix
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{ lib, stdenv, fetchurl, fetchpatch, makeWrapper, wrapGAppsHook
|
||||
|
||||
# Buildtime dependencies.
|
||||
, check, pkg-config, 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 (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
|
||||
pkg-config
|
||||
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 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;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{ lib, 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 lib; {
|
||||
homepage = "https://www.netsurf-browser.org/";
|
||||
description = "NetSurf browser shared build system";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
36
pkgs/applications/networking/browsers/netsurf/default.nix
Normal file
36
pkgs/applications/networking/browsers/netsurf/default.nix
Normal file
|
|
@ -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 { };
|
||||
})
|
||||
44
pkgs/applications/networking/browsers/netsurf/libcss.nix
Normal file
44
pkgs/applications/networking/browsers/netsurf/libcss.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config, 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 = [ pkg-config ];
|
||||
buildInputs = [
|
||||
perl
|
||||
libparserutils
|
||||
libwapcaplet
|
||||
buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE= [ "-Wno-error=implicit-fallthrough" "-Wno-error=maybe-uninitialized" ];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
43
pkgs/applications/networking/browsers/netsurf/libdom.nix
Normal file
43
pkgs/applications/networking/browsers/netsurf/libdom.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config, 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 = [ pkg-config ];
|
||||
buildInputs = [
|
||||
expat
|
||||
libhubbub
|
||||
libparserutils
|
||||
libwapcaplet
|
||||
buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
44
pkgs/applications/networking/browsers/netsurf/libhubbub.nix
Normal file
44
pkgs/applications/networking/browsers/netsurf/libhubbub.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config, 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 = [ pkg-config ];
|
||||
buildInputs = [
|
||||
perl
|
||||
libparserutils
|
||||
buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config
|
||||
, 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 = [ pkg-config ];
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.netsurf-browser.org/";
|
||||
description = "BMP Decoder for netsurf browser";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
32
pkgs/applications/networking/browsers/netsurf/libnsfb.nix
Normal file
32
pkgs/applications/networking/browsers/netsurf/libnsfb.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config
|
||||
, 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 = [ pkg-config ];
|
||||
buildInputs = [ SDL buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
"TARGET=${uilib}"
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/libnsgif.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/libnsgif.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config
|
||||
, 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 = [ pkg-config ];
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/libnslog.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/libnslog.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config, 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 = [ pkg-config bison flex ];
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.netsurf-browser.org/";
|
||||
description = "NetSurf Parametric Logging Library";
|
||||
license = licenses.isc;
|
||||
maintainers = [ maintainers.samueldr maintainers.AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/libnspsl.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/libnspsl.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config
|
||||
, 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 = [ pkg-config ];
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/libnsutils.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/libnsutils.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config
|
||||
, 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 = [ pkg-config ];
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.netsurf-browser.org/";
|
||||
description = "Generalised utility library for netsurf browser";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
{ lib, 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 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;
|
||||
};
|
||||
}
|
||||
39
pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
Normal file
39
pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{ lib, stdenv, fetchurl, pkg-config, 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 = [ pkg-config gperf ];
|
||||
buildInputs = [
|
||||
libdom
|
||||
libhubbub
|
||||
libparserutils
|
||||
libwapcaplet
|
||||
buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.netsurf-browser.org/projects/${libname}/";
|
||||
description = "NetSurf SVG decoder";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.samueldr maintainers.AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, pkg-config
|
||||
, 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";
|
||||
hash = "sha256-AasdaYnBx3VQkNskw/ZOSflcVgrknCa+xRQrrGgCxHI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ buildsystem ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.netsurf-browser.org/";
|
||||
description = "UTF8 Processing library for netsurf browser";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, 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 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;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/networking/browsers/netsurf/nsgenbind.nix
Normal file
30
pkgs/applications/networking/browsers/netsurf/nsgenbind.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, 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 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;
|
||||
};
|
||||
}
|
||||
57
pkgs/applications/networking/browsers/nyxt/default.nix
Normal file
57
pkgs/applications/networking/browsers/nyxt/default.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{ stdenv, lib, lispPackages
|
||||
, makeWrapper, wrapGAppsHook, gst_all_1
|
||||
, glib, gdk-pixbuf, cairo
|
||||
, mailcap, 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
|
||||
mailcap pango gtk3
|
||||
glib-networking gsettings-desktop-schemas
|
||||
xclip notify-osd enchant
|
||||
] ++ gstBuildInputs;
|
||||
|
||||
GST_PLUGIN_SYSTEM_PATH_1_0 = lib.makeSearchPathOutput "lib" "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 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 payas ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
131
pkgs/applications/networking/browsers/opera/default.nix
Normal file
131
pkgs/applications/networking/browsers/opera/default.nix
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
{ alsa-lib
|
||||
, atk
|
||||
, cairo
|
||||
, cups
|
||||
, curl
|
||||
, dbus
|
||||
, dpkg
|
||||
, expat
|
||||
, fetchurl
|
||||
, fontconfig
|
||||
, freetype
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, gtk3
|
||||
, gtk4
|
||||
, lib
|
||||
, libX11
|
||||
, libxcb
|
||||
, libXScrnSaver
|
||||
, libXcomposite
|
||||
, libXcursor
|
||||
, libXdamage
|
||||
, libXext
|
||||
, libXfixes
|
||||
, libXi
|
||||
, libXrandr
|
||||
, libXrender
|
||||
, libXtst
|
||||
, libdrm
|
||||
, libnotify
|
||||
, libpulseaudio
|
||||
, libuuid
|
||||
, libxshmfence
|
||||
, mesa
|
||||
, 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 = "84.0.4316.42";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb";
|
||||
sha256 = "sha256-ZjVuw30YfHQ69BVxPvIde6VuOcqtnXrGwhZpA26vLpw=";
|
||||
};
|
||||
|
||||
unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc .";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
at-spi2-atk
|
||||
at-spi2-core
|
||||
atk
|
||||
cairo
|
||||
cups
|
||||
curl
|
||||
dbus
|
||||
expat
|
||||
fontconfig.lib
|
||||
freetype
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk3
|
||||
libX11
|
||||
libXScrnSaver
|
||||
libXcomposite
|
||||
libXcursor
|
||||
libXdamage
|
||||
libXext
|
||||
libXfixes
|
||||
libXi
|
||||
libXrandr
|
||||
libXrender
|
||||
libXtst
|
||||
libdrm
|
||||
libnotify
|
||||
libuuid
|
||||
libxcb
|
||||
libxshmfence
|
||||
mesa
|
||||
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)
|
||||
|
||||
# Error at startup:
|
||||
# "Illegal instruction (core dumped)"
|
||||
gtk3
|
||||
gtk4
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r . $out/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.opera.com";
|
||||
description = "Web browser";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
license = licenses.unfree;
|
||||
};
|
||||
}
|
||||
215
pkgs/applications/networking/browsers/palemoon/default.nix
Normal file
215
pkgs/applications/networking/browsers/palemoon/default.nix
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, alsa-lib
|
||||
, autoconf213
|
||||
, cairo
|
||||
, dbus
|
||||
, dbus-glib
|
||||
, desktop-file-utils
|
||||
, fetchFromGitea
|
||||
, ffmpeg
|
||||
, fontconfig
|
||||
, freetype
|
||||
, gnome2
|
||||
, gnum4
|
||||
, libGL
|
||||
, libGLU
|
||||
, libevent
|
||||
, libnotify
|
||||
, libpulseaudio
|
||||
, libstartup_notification
|
||||
, pango
|
||||
, perl
|
||||
, pkg-config
|
||||
, python2
|
||||
, unzip
|
||||
, which
|
||||
, wrapGAppsHook
|
||||
, writeScript
|
||||
, xorg
|
||||
, yasm
|
||||
, zip
|
||||
, zlib
|
||||
, withGTK3 ? true, gtk3, gtk2
|
||||
, testers
|
||||
, palemoon
|
||||
}:
|
||||
|
||||
# Only specific GCC versions are supported with branding
|
||||
# https://developer.palemoon.org/build/linux/
|
||||
assert stdenv.cc.isGNU;
|
||||
assert with lib.strings; (
|
||||
versionAtLeast stdenv.cc.version "7.1"
|
||||
&& versionOlder stdenv.cc.version "12"
|
||||
);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "palemoon";
|
||||
version = "31.0.0";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "repo.palemoon.org";
|
||||
owner = "MoonchildProductions";
|
||||
repo = "Pale-Moon";
|
||||
rev = "${version}_Release";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-fIQAQCtjA/9Otft3e9Z4xWgE09sqsdArYQtZqmEgfTc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf213
|
||||
desktop-file-utils
|
||||
gnum4
|
||||
perl
|
||||
pkg-config
|
||||
python2
|
||||
unzip
|
||||
which
|
||||
wrapGAppsHook
|
||||
yasm
|
||||
zip
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
cairo
|
||||
dbus
|
||||
dbus-glib
|
||||
ffmpeg
|
||||
fontconfig
|
||||
freetype
|
||||
gnome2.GConf
|
||||
gtk2
|
||||
libGL
|
||||
libGLU
|
||||
libevent
|
||||
libnotify
|
||||
libpulseaudio
|
||||
libstartup_notification
|
||||
pango
|
||||
zlib
|
||||
]
|
||||
++ (with xorg; [
|
||||
libX11
|
||||
libXext
|
||||
libXft
|
||||
libXi
|
||||
libXrender
|
||||
libXScrnSaver
|
||||
libXt
|
||||
pixman
|
||||
xorgproto
|
||||
])
|
||||
++ lib.optionals withGTK3 [
|
||||
gtk3
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./mach
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
export MOZCONFIG=$PWD/mozconfig
|
||||
export MOZ_NOSPAM=1
|
||||
|
||||
export build64=${lib.optionalString stdenv.hostPlatform.is64bit "1"}
|
||||
export gtkversion=${if withGTK3 then "3" else "2"}
|
||||
export xlibs=${lib.makeLibraryPath [ xorg.libX11 ]}
|
||||
export prefix=$out
|
||||
export mozmakeflags="-j${if enableParallelBuilding then "$NIX_BUILD_CORES" else "1"}"
|
||||
export autoconf=${autoconf213}/bin/autoconf
|
||||
|
||||
substituteAll ${./mozconfig} $MOZCONFIG
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
./mach build
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
./mach install
|
||||
|
||||
# Install official branding stuff
|
||||
desktop-file-install --dir=$out/share/applications \
|
||||
./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 ./palemoon/branding/official/$iconname.png $out/share/icons/hicolor/$size/apps/palemoon.png
|
||||
done
|
||||
|
||||
# Remove unneeded SDK data from installation
|
||||
# https://forum.palemoon.org/viewtopic.php?f=37&t=26796&p=214676#p214729
|
||||
rm -r $out/{include,share/idl,lib/palemoon-devel-${version}}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup =
|
||||
let
|
||||
libPath = lib.makeLibraryPath [
|
||||
ffmpeg
|
||||
libpulseaudio
|
||||
];
|
||||
in
|
||||
''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : "${libPath}"
|
||||
)
|
||||
wrapGApp $out/lib/palemoon-${version}/palemoon
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.palemoon.org/";
|
||||
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.
|
||||
'';
|
||||
changelog = "https://repo.palemoon.org/MoonchildProductions/Pale-Moon/releases/tag/${version}_Release";
|
||||
license = licenses.mpl20;
|
||||
maintainers = with maintainers; [ AndersonTorres OPNA2608 ];
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
};
|
||||
|
||||
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"
|
||||
'';
|
||||
tests.version = testers.testVersion {
|
||||
package = palemoon;
|
||||
};
|
||||
};
|
||||
}
|
||||
44
pkgs/applications/networking/browsers/palemoon/mozconfig
Normal file
44
pkgs/applications/networking/browsers/palemoon/mozconfig
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# -*- mode: sh; coding: utf-8-unix; fill-column: 80 -*-
|
||||
|
||||
# Mozconfig template file for nixpkgs
|
||||
|
||||
# Keep this similar to the official .mozconfig file, only minor changes for
|
||||
# portability are permitted with branding.
|
||||
# https://developer.palemoon.org/build/linux/
|
||||
|
||||
_BUILD_64=@build64@
|
||||
|
||||
# Set GTK Version
|
||||
_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 --enable-av1
|
||||
|
||||
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
|
||||
|
||||
ac_add_options --x-libraries=@xlibs@
|
||||
|
||||
#
|
||||
# NixOS-specific adjustments
|
||||
#
|
||||
|
||||
ac_add_options --prefix=@prefix@
|
||||
|
||||
mk_add_options MOZ_MAKE_FLAGS=@mozmakeflags@
|
||||
mk_add_options AUTOCONF=@autoconf@
|
||||
30
pkgs/applications/networking/browsers/qtchan/default.nix
Normal file
30
pkgs/applications/networking/browsers/qtchan/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase }:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qtchan";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "siavash119";
|
||||
repo = "qtchan";
|
||||
rev = "v${version}";
|
||||
sha256 = "1x11m1kwqindzc0dkpfifcglsb362impaxs85kgzx50p898sz9ll";
|
||||
};
|
||||
|
||||
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; [ Madouura ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
136
pkgs/applications/networking/browsers/qutebrowser/default.nix
Normal file
136
pkgs/applications/networking/browsers/qutebrowser/default.nix
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{ stdenv, lib, fetchurl, fetchzip, python3
|
||||
, mkDerivationWith, wrapQtAppsHook, wrapGAppsHook, qtbase, qtwebengine, glib-networking
|
||||
, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2
|
||||
, libxslt, gst_all_1 ? null
|
||||
, withPdfReader ? true
|
||||
, withMediaPlayback ? true
|
||||
, backend ? "webengine"
|
||||
, pipewireSupport ? stdenv.isLinux
|
||||
, pipewire_0_2
|
||||
}:
|
||||
|
||||
assert withMediaPlayback -> gst_all_1 != null;
|
||||
|
||||
let
|
||||
python3Packages = python3.pkgs;
|
||||
pdfjs = let
|
||||
version = "2.14.305";
|
||||
in
|
||||
fetchzip rec {
|
||||
url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/pdfjs-${version}-dist.zip";
|
||||
hash = "sha256-E7t+0AUndrgi4zfJth0w28RmWLqLyXMUCnueNf/gNi4=";
|
||||
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 = "2.5.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";
|
||||
hash = "sha256-5ohYhqhM0WamumM3lKWKTGfYccJxiBJ+XdvFJ2127bw=";
|
||||
};
|
||||
|
||||
# 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
|
||||
# scripts and userscripts libs
|
||||
tldextract beautifulsoup4
|
||||
readability-lxml pykeepass stem
|
||||
pynacl
|
||||
# extensive ad blocking
|
||||
adblock
|
||||
]
|
||||
++ lib.optional (pythonOlder "3.9") importlib-resources
|
||||
);
|
||||
|
||||
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,$out,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
|
||||
'';
|
||||
|
||||
preFixup = let
|
||||
libPath = lib.makeLibraryPath [ pipewire_0_2 ];
|
||||
in
|
||||
''
|
||||
makeWrapperArgs+=(
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
"''${qtWrapperArgs[@]}"
|
||||
--add-flags '--backend ${backend}'
|
||||
--set QUTE_QTWEBENGINE_VERSION_OVERRIDE "${lib.getVersion qtwebengine}"
|
||||
${lib.optionalString (pipewireSupport && backend == "webengine") ''--prefix LD_LIBRARY_PATH : ${libPath}''}
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with 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 dotlambda ];
|
||||
inherit (backendPackage.meta) platforms;
|
||||
};
|
||||
}
|
||||
|
|
@ -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]
|
||||
49
pkgs/applications/networking/browsers/surf/default.nix
Normal file
49
pkgs/applications/networking/browsers/surf/default.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{ lib, stdenv, fetchgit
|
||||
, pkg-config, wrapGAppsHook
|
||||
, glib, gcr, glib-networking, gsettings-desktop-schemas, gtk, libsoup, webkitgtk
|
||||
, xorg, dmenu, findutils, gnused, coreutils
|
||||
, patches ? null
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "surf";
|
||||
version = "2.1";
|
||||
|
||||
# tarball is missing file common.h
|
||||
src = fetchgit {
|
||||
url = "git://git.suckless.org/surf";
|
||||
rev = version;
|
||||
sha256 = "1v926hiayddylq79n8l7dy51bm0dsa9n18nx9bkhg666cx973x4z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config wrapGAppsHook ];
|
||||
buildInputs = [ glib gcr glib-networking gsettings-desktop-schemas gtk libsoup webkitgtk ];
|
||||
|
||||
inherit patches;
|
||||
|
||||
makeFlags = [ "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 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 ];
|
||||
};
|
||||
}
|
||||
48
pkgs/applications/networking/browsers/telescope/default.nix
Normal file
48
pkgs/applications/networking/browsers/telescope/default.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, bison
|
||||
, libevent
|
||||
, libressl
|
||||
, ncurses
|
||||
, autoreconfHook
|
||||
, buildPackages
|
||||
, memstreamHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "telescope";
|
||||
version = "0.8.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "omar-polo";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-9gZeBAC7AGU5vb+692npjKbbqFEAr9iGLu1u68EJ0W8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
bison
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libevent
|
||||
libressl
|
||||
ncurses
|
||||
] ++ lib.optional stdenv.isDarwin memstreamHook;
|
||||
|
||||
configureFlags = [
|
||||
"HOSTCC=${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Telescope is a w3m-like browser for Gemini";
|
||||
homepage = "https://telescope.omarpolo.com/";
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ heph2 ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,438 @@
|
|||
{ lib, 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 ? mediaSupport
|
||||
, libpulseaudio
|
||||
, apulse
|
||||
|
||||
# Media support (implies audio support)
|
||||
, mediaSupport ? true
|
||||
, ffmpeg
|
||||
|
||||
, gmp
|
||||
|
||||
# Wrapper runtime
|
||||
, coreutils
|
||||
, glibcLocales
|
||||
, gnome
|
||||
, runtimeShell
|
||||
, shared-mime-info
|
||||
, gsettings-desktop-schemas
|
||||
|
||||
# Hardening
|
||||
, graphene-hardened-malloc
|
||||
# Whether to use graphene-hardened-malloc
|
||||
, useHardenedMalloc ? true
|
||||
|
||||
# Whether to disable multiprocess support
|
||||
, disableContentSandbox ? false
|
||||
|
||||
# Extra preferences
|
||||
, extraPrefs ? ""
|
||||
}:
|
||||
|
||||
with 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
|
||||
];
|
||||
|
||||
# Library search path for the fte transport
|
||||
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
||||
|
||||
# Upstream source
|
||||
version = "11.0.13";
|
||||
|
||||
lang = "en-US";
|
||||
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
urls = [
|
||||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "03pzwzgikc43pm0lga61jdzg46fanmvd1wsnb2xkq0y1ny8gsqfz";
|
||||
};
|
||||
|
||||
i686-linux = fetchurl {
|
||||
urls = [
|
||||
"https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
|
||||
];
|
||||
sha256 = "0j8h2g404sagzjxnwf55n8hpvmwk52qhml98nyliajf1xg8v8k19";
|
||||
};
|
||||
};
|
||||
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") [
|
||||
gnome.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 some files if the last known store path is different from the new one
|
||||
: "\''${KNOWN_STORE_PATH:=\$HOME/known-store-path}"
|
||||
if ! [ "\$KNOWN_STORE_PATH" -ef $out ]; then
|
||||
echo "Cleanup files with outdated store references"
|
||||
ln -Tsf $out "\$KNOWN_STORE_PATH"
|
||||
|
||||
# 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/*
|
||||
fi
|
||||
|
||||
# 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"
|
||||
|
||||
# Manually specify data paths (by default TB attempts to create these in the store)
|
||||
{
|
||||
echo "user_pref(\"extensions.torlauncher.toronionauthdir_path\", \"\$HOME/TorBrowser/Data/Tor/onion-auth\");"
|
||||
echo "user_pref(\"extensions.torlauncher.torrc_path\", \"\$HOME/TorBrowser/Data/Tor/torrc\");"
|
||||
echo "user_pref(\"extensions.torlauncher.tordatadir_path\", \"\$HOME/TorBrowser/Data/Tor\");"
|
||||
} >> "\$HOME/TorBrowser/Data/Browser/profile.default/prefs.js"
|
||||
|
||||
# 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:-}" \
|
||||
\
|
||||
MOZ_ENABLE_WAYLAND="\''${MOZ_ENABLE_WAYLAND:-}" \
|
||||
WAYLAND_DISPLAY="\''${WAYLAND_DISPLAY:-}" \
|
||||
XDG_RUNTIME_DIR="\''${XDG_RUNTIME_DIR:-}" \
|
||||
XCURSOR_PATH="\''${XCURSOR_PATH:-}" \
|
||||
\
|
||||
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 ..."
|
||||
TBB_HOME=$(mktemp -d) \
|
||||
$out/bin/tor-browser --version >/dev/null
|
||||
'';
|
||||
|
||||
meta = with 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 KarlJoad ];
|
||||
mainProgram = "tor-browser";
|
||||
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;
|
||||
};
|
||||
}
|
||||
64
pkgs/applications/networking/browsers/vieb/default.nix
Normal file
64
pkgs/applications/networking/browsers/vieb/default.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
{ mkYarnPackage, fetchFromGitHub, electron, makeWrapper, makeDesktopItem, lib, p7zip }:
|
||||
|
||||
mkYarnPackage rec {
|
||||
pname = "vieb";
|
||||
version = "7.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Jelmerro";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-4iokmUzs72aVHb95D98ZITRygn4gGAc/K+M5uMnF2NM=";
|
||||
};
|
||||
|
||||
packageJSON = ./package.json;
|
||||
yarnLock = ./yarn.lock;
|
||||
yarnNix = ./yarn.nix;
|
||||
yarnFlags = [ "--production" "--offline" ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "vieb";
|
||||
exec = "vieb %U";
|
||||
icon = "vieb";
|
||||
desktopName = "Web Browser";
|
||||
genericName = "Web Browser";
|
||||
categories = [ "Network" "WebBrowser" ];
|
||||
mimeTypes = [
|
||||
"text/html"
|
||||
"application/xhtml+xml"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
];
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
unlink $out/libexec/vieb/deps/vieb/node_modules
|
||||
ln -s $out/libexec/vieb/node_modules $out/libexec/vieb/deps/vieb/node_modules
|
||||
|
||||
find $out/libexec/vieb/node_modules/7zip-bin -name 7za -exec ln -s -f ${p7zip}/bin/7za {} ';'
|
||||
|
||||
install -Dm0644 {${desktopItem},$out}/share/applications/vieb.desktop
|
||||
|
||||
pushd $out/libexec/vieb/node_modules/vieb/app/img/icons
|
||||
for file in *.png; do
|
||||
install -Dm0644 $file $out/share/icons/hicolor/''${file//.png}/apps/vieb.png
|
||||
done
|
||||
popd
|
||||
|
||||
makeWrapper ${electron}/bin/electron $out/bin/vieb \
|
||||
--add-flags $out/libexec/vieb/node_modules/vieb/app
|
||||
'';
|
||||
|
||||
distPhase = ":"; # disable useless $out/tarballs directory
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://vieb.dev/";
|
||||
changelog = "https://github.com/Jelmerro/Vieb/releases/tag/${version}";
|
||||
description = "Vim Inspired Electron Browser";
|
||||
maintainers = with maintainers; [ gebner fortuneteller2k ];
|
||||
platforms = platforms.unix;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
45
pkgs/applications/networking/browsers/vieb/package.json
Normal file
45
pkgs/applications/networking/browsers/vieb/package.json
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"name": "vieb",
|
||||
"productName": "Vieb",
|
||||
"version": "7.1.2",
|
||||
"description": "Vim Inspired Electron Browser",
|
||||
"main": "app/index.js",
|
||||
"scripts": {
|
||||
"build": "node build.js",
|
||||
"buildall": "node build.js --linux --win --mac",
|
||||
"buildlinux": "node build.js --linux",
|
||||
"buildmac": "node build.js --mac",
|
||||
"buildwin": "node build.js --win",
|
||||
"dev": "electron app --datafolder=./ViebData/",
|
||||
"fix": "eslint --fix app .eslintrc.js build.js",
|
||||
"lint": "eslint app .eslintrc.js build.js",
|
||||
"start": "electron app",
|
||||
"test": "TZ=UTC jest --testEnvironment jsdom --coverage --collectCoverageFrom 'app/**/*.js' -u && npm run lint && echo 'All good :)'"
|
||||
},
|
||||
"repository": "https://github.com/Jelmerro/Vieb",
|
||||
"homepage": "https://vieb.dev",
|
||||
"keywords": [
|
||||
"Vim",
|
||||
"Electron",
|
||||
"Browser",
|
||||
"Internet"
|
||||
],
|
||||
"author": "Jelmer van Arnhem",
|
||||
"email": "Jelmerro@users.noreply.github.com",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
"electron": "17.0.1",
|
||||
"electron-builder": "22.14.13",
|
||||
"eslint": "8.9.0",
|
||||
"eslint-plugin-sort-keys": "2.3.5",
|
||||
"jest": "27.5.1",
|
||||
"jest-environment-jsdom": "27.5.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"7zip-bin": "5.1.1",
|
||||
"@cliqz/adblocker-electron": "1.23.6",
|
||||
"@cliqz/adblocker-electron-preload": "1.23.6",
|
||||
"is-svg": "4.3.2",
|
||||
"rimraf": "3.0.2"
|
||||
}
|
||||
}
|
||||
4359
pkgs/applications/networking/browsers/vieb/yarn.lock
Normal file
4359
pkgs/applications/networking/browsers/vieb/yarn.lock
Normal file
File diff suppressed because it is too large
Load diff
4701
pkgs/applications/networking/browsers/vieb/yarn.nix
Normal file
4701
pkgs/applications/networking/browsers/vieb/yarn.nix
Normal file
File diff suppressed because it is too large
Load diff
38
pkgs/applications/networking/browsers/vimb/default.nix
Normal file
38
pkgs/applications/networking/browsers/vimb/default.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{ lib, stdenv, fetchFromGitHub, pkg-config, libsoup, webkitgtk, gtk3, glib-networking
|
||||
, gsettings-desktop-schemas, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "vimb";
|
||||
version = "3.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fanglingsu";
|
||||
repo = "vimb";
|
||||
rev = version;
|
||||
sha256 = "sha256-Eq4riJSznKpkW9JJDnTCLxZ9oMJTmWkIoGphOiCcSAg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook pkg-config ];
|
||||
buildInputs = [ gtk3 libsoup webkitgtk glib-networking gsettings-desktop-schemas ];
|
||||
|
||||
passthru = {
|
||||
inherit gtk3;
|
||||
};
|
||||
|
||||
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 = lib.licenses.gpl3;
|
||||
maintainers = [];
|
||||
platforms = with lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue