feat: add pre-configured librewolf browser

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-05-30 01:12:55 +02:00
parent 39248e2be6
commit b3caa9852c
3 changed files with 71 additions and 2 deletions
+7 -1
View File
@@ -1,6 +1,12 @@
## Configuring your browser's proxy settings ## Configuring your browser's proxy settings
We recommend installing **FoxyProxy** to manage your browser's proxies. **If you use Nix**, you can launch a pre-configured browser (LibreWolf) with the proxy and certificate already set up:
```sh
nix run github:anotherhadi/spilltea#browser{{if or (ne .Cfg.App.Host "127.0.0.1") (ne .Cfg.App.Port 8080) (ne .Cfg.App.CertDir "~/.local/share/spilltea")}} --{{end}}{{if ne .Cfg.App.Host "127.0.0.1"}} --host {{.Cfg.App.Host}}{{end}}{{if ne .Cfg.App.Port 8080}} --port {{.Cfg.App.Port}}{{end}}{{if ne .Cfg.App.CertDir "~/.local/share/spilltea"}} --cert-dir {{.Cfg.App.CertDir}}{{end}}
```
Otherwise, we recommend installing **FoxyProxy** to manage your browser's proxies.
You can install it from the [Google Chrome extension store](https://chromewebstore.google.com/) or from the [Firefox extension store](https://addons.mozilla.org/en-US/firefox/extensions) You can install it from the [Google Chrome extension store](https://chromewebstore.google.com/) or from the [Firefox extension store](https://addons.mozilla.org/en-US/firefox/extensions)
1. Open FoxyProxy's options, then click on `Add New Proxy` button. 1. Open FoxyProxy's options, then click on `Add New Proxy` button.
+61
View File
@@ -0,0 +1,61 @@
{pkgs}: let
defaultCertDir = "$HOME/.local/share/spilltea";
defaultHost = "127.0.0.1";
defaultPort = "8080";
in
pkgs.writeShellApplication {
name = "spilltea-browser";
runtimeInputs = with pkgs; [nss.tools librewolf netcat-gnu procps];
text = ''
CERT_DIR="${defaultCertDir}"
HOST="${defaultHost}"
PORT="${defaultPort}"
while [[ $# -gt 0 ]]; do
case "$1" in
--cert-dir) CERT_DIR="$2"; shift 2 ;;
--host) HOST="$2"; shift 2 ;;
--port) PORT="$2"; shift 2 ;;
*) echo "Unknown argument: $1"; exit 1 ;;
esac
done
CERT_FILE="$CERT_DIR/mitmproxy-ca-cert.pem"
if [[ ! -f "$CERT_FILE" ]]; then
echo "Certificate not found at $CERT_FILE"
echo "Launch spilltea first, or use --cert-dir if you changed cert_dir in your config."
exit 1
fi
if ! pgrep -x spilltea > /dev/null 2>&1; then
echo "spilltea is not running. Launch spilltea first."
exit 1
fi
if ! nc -z "$HOST" "$PORT" > /dev/null 2>&1; then
echo "Nothing is listening on $HOST:$PORT."
echo "Is spilltea configured on that port? Use --host and --port if you changed them in your config."
exit 1
fi
PROFILE=$(mktemp -d)
trap 'rm -rf "$PROFILE"' EXIT
certutil -N -d sql:"$PROFILE" --empty-password
certutil -d sql:"$PROFILE" -A -n "spilltea" -t "CT,," -i "$CERT_FILE"
cat > "$PROFILE/user.js" <<EOF
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "$HOST");
user_pref("network.proxy.http_port", $PORT);
user_pref("network.proxy.ssl", "$HOST");
user_pref("network.proxy.ssl_port", $PORT);
user_pref("network.proxy.no_proxies_on", "");
user_pref("network.stricttransportsecurity.preloadlist", false);
user_pref("dom.security.https_only_mode", false);
EOF
librewolf --profile "$PROFILE" --no-remote
'';
}
+3 -1
View File
@@ -2,6 +2,7 @@
pkgs, pkgs,
buildGoApplication, buildGoApplication,
}: let }: let
browser = import ./browser.nix {inherit pkgs;};
pname = "spilltea"; pname = "spilltea";
version = "0.0.6"; version = "0.0.6";
ldflags = ["-s" "-w" "-X main.version=${version}"]; ldflags = ["-s" "-w" "-X main.version=${version}"];
@@ -9,7 +10,7 @@
inherit pname version ldflags; inherit pname version ldflags;
src = ../.; src = ../.;
modules = ./gomod2nix.toml; modules = ./gomod2nix.toml;
nativeBuildInputs = [ pkgs.installShellFiles ]; nativeBuildInputs = [pkgs.installShellFiles];
env.GOTOOLCHAIN = "local"; env.GOTOOLCHAIN = "local";
postInstall = '' postInstall = ''
installShellCompletion --cmd spilltea \ installShellCompletion --cmd spilltea \
@@ -26,4 +27,5 @@
in { in {
"${pname}" = pkg; "${pname}" = pkg;
default = pkg; default = pkg;
browser = browser;
} }