#!/usr/bin/env bash

version_gte() {
    local cmd="$1"
    local required_version="$2"
    local installed_version=$($cmd | grep -oE "[0-9]+(\.[0-9]+)+" | head -n 1)

    if [ -z "$installed_version" ]; then
        return 1
    fi

    IFS="."
    set -- $installed_version
    local installed_parts="$@"
    set -- $required_version
    local required_parts="$@"
    unset IFS

    local i=1
    for required_part in $required_parts; do
        installed_part=$(echo "$installed_parts" | cut -d " " -f $i)
        if [ "${installed_part:-0}" -lt "$required_part" ]; then
            return 1
        elif [ "${installed_part:-0}" -gt "$required_part" ]; then
            return 0
        fi
        i=$((i + 1))
    done

    return 0
}

if type nix-shell >/dev/null 2>&1; then
    if ! has devenv; then
        # Install devenv v1.x. Hash from https://www.nixhub.io/packages/devenv
        if version_gte "nix --version" "2.30.0"; then
            nix profile add github:NixOS/nixpkgs/80d901ec0377e19ac3f7bb8c035201e2e098cc97#devenv
        else
            nix profile install github:NixOS/nixpkgs/80d901ec0377e19ac3f7bb8c035201e2e098cc97#devenv
        fi
    fi

    eval "$(devenv direnvrc)"
    use devenv
else
    echo "nix-shell is not available. Install Nix: https://nixos.org/download"
fi
