Rebase to flake parts #8
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
{ ... }: {
|
||||
flake.homeManagerModules.wisdomBrowsersChrome =
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
root = config.chiasson.home;
|
||||
cfg = config.chiasson.home.browsers.chrome;
|
||||
in
|
||||
{
|
||||
options.chiasson.home.browsers.chrome.enable = lib.mkEnableOption ''
|
||||
Chrome (unfree, needs `allowUnfree`); skipped if nixpkgs has no build for this platform.
|
||||
'';
|
||||
|
||||
config = lib.mkIf (root.enable && cfg.enable) {
|
||||
home.packages = lib.optional (
|
||||
lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.google-chrome
|
||||
) pkgs.google-chrome;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{ ... }: {
|
||||
flake.homeManagerModules.wisdomBrowsersEdge =
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
root = config.chiasson.home;
|
||||
cfg = config.chiasson.home.browsers.edge;
|
||||
in
|
||||
{
|
||||
options.chiasson.home.browsers.edge.enable = lib.mkEnableOption "Edge (unfree); skipped if unavailable on this platform.";
|
||||
|
||||
config = lib.mkIf (root.enable && cfg.enable) {
|
||||
home.packages = lib.optional (
|
||||
lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.microsoft-edge
|
||||
) pkgs.microsoft-edge;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{ ... }: {
|
||||
flake.homeManagerModules.wisdomBrowsersFlow =
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
root = config.chiasson.home;
|
||||
cfg = config.chiasson.home.browsers.flow;
|
||||
|
||||
flow-browser =
|
||||
let
|
||||
pname = "flow-browser";
|
||||
version = "0.11.0";
|
||||
|
||||
suffix = if pkgs.stdenv.hostPlatform.isAarch64 then "arm64" else "x86_64";
|
||||
|
||||
hash =
|
||||
if pkgs.stdenv.hostPlatform.isAarch64 then
|
||||
"sha256-rTRKbNyVRJAw7ZyDR6kx+XJ4rWmErZqA0b6LP9t5eOA="
|
||||
else
|
||||
"sha256-/Tca4uUBfgbZQEeXdYkCz6CWxqvCl40CQpACFry1k9s=";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://github.com/MultiboxLabs/flow-browser/releases/download/v${version}/flow-browser-${version}-${suffix}.AppImage";
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
appimageContents = pkgs.appimageTools.extractType2 { inherit pname version src; };
|
||||
in
|
||||
pkgs.appimageTools.wrapType2 {
|
||||
inherit pname version src;
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
extraInstallCommands = ''
|
||||
wrapProgram $out/bin/${pname} \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
|
||||
|
||||
install -m 444 -D ${appimageContents}/flow-browser.desktop -t $out/share/applications
|
||||
substituteInPlace $out/share/applications/flow-browser.desktop \
|
||||
--replace-fail 'Exec=AppRun --ozone-platform-hint=auto' 'Exec=${pname} --ozone-platform-hint=auto'
|
||||
|
||||
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/flow-browser.png \
|
||||
$out/share/icons/hicolor/512x512/apps/flow-browser.png
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Chromium-based browser (upstream AppImage)";
|
||||
homepage = "https://github.com/MultiboxLabs/flow-browser";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
mainProgram = pname;
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options.chiasson.home.browsers.flow.enable = lib.mkEnableOption ''
|
||||
[Flow](https://github.com/MultiboxLabs/flow-browser) — upstream AppImage wrapped for NixOS.
|
||||
'';
|
||||
|
||||
config = lib.mkIf (root.enable && cfg.enable) {
|
||||
home.packages = lib.optional (
|
||||
lib.meta.availableOn pkgs.stdenv.hostPlatform flow-browser
|
||||
) flow-browser;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{ ... }: {
|
||||
flake.homeManagerModules.wisdomBrowsersOrion =
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
root = config.chiasson.home;
|
||||
cfg = config.chiasson.home.browsers.orion;
|
||||
|
||||
pname = "oriongtk";
|
||||
version = "0.3.0";
|
||||
flatpakBundle = pkgs.fetchurl {
|
||||
url = "https://cdn.kagi.com/downloads/oriongtk.${version}.flatpak";
|
||||
hash = "sha256-0NOWPS2Yv5NpnTxqsiMvshHFyTyDotPi964/2og/bCw=";
|
||||
};
|
||||
|
||||
appId = "com.kagi.OrionGtk";
|
||||
|
||||
oriongtk = pkgs.runCommand "oriongtk-${version}"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
passthru = {
|
||||
inherit pname version;
|
||||
};
|
||||
}
|
||||
''
|
||||
mkdir -p "$out/bin"
|
||||
makeWrapper ${pkgs.flatpak}/bin/flatpak "$out/bin/${pname}" \
|
||||
--add-flags "run" \
|
||||
--add-flags ${lib.escapeShellArg appId}
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.chiasson.home.browsers.orion.enable = lib.mkEnableOption ''
|
||||
[Orion](https://orionbrowser.com/) (Kagi) — installs the upstream Flatpak bundle and provides `oriongtk`.
|
||||
'';
|
||||
|
||||
config = lib.mkIf (root.enable && cfg.enable) {
|
||||
home.packages = [ oriongtk ];
|
||||
|
||||
home.activation.oriongtkFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
set -eu
|
||||
|
||||
if [ ! -x "${pkgs.flatpak}/bin/flatpak" ]; then
|
||||
echo "oriongtk: flatpak missing; enable Flatpak (e.g. services.flatpak on NixOS)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "oriongtk: ensuring ${appId} from ${flatpakBundle} (user)"
|
||||
# `--or-update` still exits non-zero when the same ref is already installed from this bundle;
|
||||
# `--reinstall` is idempotent for HM switches (uninstall first only if present).
|
||||
${pkgs.flatpak}/bin/flatpak --user install \
|
||||
--assumeyes \
|
||||
--noninteractive \
|
||||
--reinstall \
|
||||
--bundle \
|
||||
${lib.escapeShellArg (builtins.toString flatpakBundle)}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
{ inputs, ... }: {
|
||||
flake.homeManagerModules.wisdomBrowsersZen =
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
root = config.chiasson.home;
|
||||
cfg = config.chiasson.home.browsers.zen;
|
||||
in
|
||||
{
|
||||
imports = [ inputs.zen-browser.homeModules.beta ];
|
||||
|
||||
options.chiasson.home.browsers.zen.enable = lib.mkEnableOption "Zen Browser + locked-down policies / extensions.";
|
||||
|
||||
config = lib.mkIf (root.enable && cfg.enable) {
|
||||
programs.zen-browser = {
|
||||
enable = true;
|
||||
policies = {
|
||||
PasswordManagerEnabled = false;
|
||||
AutofillCreditCardEnabled = false;
|
||||
AutofillAddressEnabled = false;
|
||||
DisableAppUpdate = true;
|
||||
DisableFeedbackCommands = true;
|
||||
DisableFirefoxStudies = true;
|
||||
DisablePocket = true;
|
||||
DisableTelemetry = true;
|
||||
OfferToSaveLogins = false;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
ExtensionSettings = {
|
||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
"uBlock0@raymondhill.net" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
"{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "extract-firefox-extension";
|
||||
runtimeInputs = with pkgs; [
|
||||
wget
|
||||
unzip
|
||||
jq
|
||||
];
|
||||
text = ''
|
||||
if [ -z "$1" ]; then
|
||||
echo "usage: $0 <firefox-addon-url>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PLUGIN_URL="$1"
|
||||
TEMP_DIR="extension-id-$(date +%s)"
|
||||
mkdir "$TEMP_DIR" || exit 1
|
||||
cd "$TEMP_DIR" || exit 1
|
||||
|
||||
DOWNLOAD_URL=$(echo "$PLUGIN_URL" \
|
||||
| sed -E 's|https://addons.mozilla.org/firefox/downloads/file/[0-9]+/([^/]+)-[^/]+\.xpi|\1|' \
|
||||
| tr '_' '-' \
|
||||
| awk '{print "https://addons.mozilla.org/firefox/downloads/latest/" $1 "/latest.xpi"}')
|
||||
|
||||
wget -q "$DOWNLOAD_URL" -O latest.xpi || { cd ..; rm -rf "$TEMP_DIR"; exit 1; }
|
||||
unzip -q latest.xpi -d unpacked || { cd ..; rm -rf "$TEMP_DIR"; exit 1; }
|
||||
|
||||
jq -r '.browser_specific_settings.gecko.id' unpacked/manifest.json || { cd ..; rm -rf "$TEMP_DIR"; exit 1; }
|
||||
|
||||
cd ..
|
||||
rm -rf "$TEMP_DIR"
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user