#!/usr/bin/env -S nix shell nixpkgs#jq -c bash

# Update inputs when the Mesa or QT version is outdated. We don't want
# incompatibilities between the user's system and Hyprland.

# get the current Nixpkgs revision
REV=$(jq <flake.lock '.nodes.nixpkgs.locked.rev' -r)

get_ver() {
  nix eval --raw "github:nixos/nixpkgs/$1#$2"
}

# check versions for current and remote nixpkgs'
MESA_OLD=$(get_ver "$REV" mesa.version)
MESA_NEW=$(get_ver nixos-unstable mesa.version)
QT_OLD=$(get_ver "$REV" kdePackages.qtbase.version)
QT_NEW=$(get_ver nixos-unstable kdePackages.qtbase.version)

if [ "$MESA_OLD" != "$MESA_NEW" ] || [ "$QT_OLD" != "$QT_NEW" ]; then
  echo "Updating flake inputs..."
  echo "Mesa: $MESA_OLD -> $MESA_NEW"
  echo "Qt:   $QT_OLD -> $QT_NEW"

  # update inputs to latest versions
  nix flake update
else
  echo "nixpkgs is up to date!"
fi