#! /bin/sh # create temp dir and ensure it is always cleaned trap 'clean_temp_dir' EXIT temp_dir=$(mktemp -d) clean_temp_dir() { rm -rf "$temp_dir" } is_installed() { name=$1 if [ -n "$(command -v "$name")" ]; then return 0 else return 1 fi } install_nix() { if is_installed curl; then curl --proto '=https' --tlsv1.2 -sSf -L \ https://install.determinate.systems/nix \ > "$temp_dir"/install_nix.sh elif is_installed wget; then wget -qO- \ https://install.determinate.systems/nix \ > "$temp_dir"/install_nix.sh else echo "Either curl or wget is required to install Nix. Exiting." exit 1 fi NIX_INSTALLER_DIAGNOSTIC_ENDPOINT="" sh "$temp_dir"/install_nix.sh install } ask_then_install_nix() { echo "Clan requires Nix to be installed. Would you like to install it now? (y/n)" read -r response if [ "$response" = "y" ]; then install_nix else echo "Clan cannot run without Nix. Exiting." exit 1 fi } ensure_nix_installed() { if ! is_installed nix; then ask_then_install_nix fi } start_clan_gui() { PATH="${PATH:+$PATH:}/nix/var/nix/profiles/default/bin" \ exec nix run \ https://git.clan.lol/clan/clan-core/archive/main.tar.gz#clan-app \ --no-accept-flake-config \ --extra-experimental-features flakes nix-command -- "$@" } main() { ensure_nix_installed start_clan_gui "$@" } main "$@"