{ ... }: { 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)} ''; }; }; }