From 96627adf7b8ca4cdd254b986e9e559ee0e1d7c9a Mon Sep 17 00:00:00 2001 From: HendrikRauh <114620133+HendrikRauh@users.noreply.github.com> Date: Sat, 10 Jan 2026 14:16:05 +0100 Subject: [PATCH] Update .gitignore and add flake.nix patching script for Flutter version management --- .gitignore | 1 + flake.lock | 19 +++++++++++++- flake.nix | 11 +++++++- update-flutter-nix.sh | 60 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 update-flutter-nix.sh diff --git a/.gitignore b/.gitignore index 3b84f8e6..90020ffc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ .history .svn/ .direnv +flake.nix.bak coverage/* diff --git a/flake.lock b/flake.lock index 1805babf..bf891922 100644 --- a/flake.lock +++ b/flake.lock @@ -34,10 +34,27 @@ "type": "github" } }, + "nixpkgs-flutter": { + "locked": { + "lastModified": 1751285371, + "narHash": "sha256-/hDU+2AUeFFu5qGHO/UyFMc4UG/x5Cw5uXO36KGTk6c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nixpkgs-flutter": "nixpkgs-flutter" } }, "systems": { diff --git a/flake.nix b/flake.nix index 5038e85e..f9475faa 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; + nixpkgs-flutter.url = "github:NixOS/nixpkgs/b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b"; }; outputs = @@ -11,16 +12,23 @@ self, nixpkgs, flake-utils, + nixpkgs-flutter, }: flake-utils.lib.eachDefaultSystem ( system: let + pkgs = import nixpkgs { inherit system; config = { allowUnfree = true; android_sdk.accept_license = true; }; + overlays = [ + (final: prev: { + flutter-pkg = import (self.inputs.nixpkgs-flutter) { inherit system; }; + }) + ]; }; androidSdk = @@ -69,7 +77,7 @@ with pkgs; [ # Mobile development - flutter + pkgs.flutter-pkg.flutter fvm-wrapper jdk17 @@ -80,6 +88,7 @@ # Python & task runner python3 python3Packages.invoke + jq # System dependencies for Flutter on Linux git diff --git a/update-flutter-nix.sh b/update-flutter-nix.sh new file mode 100644 index 00000000..5aad34d3 --- /dev/null +++ b/update-flutter-nix.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -e + +# 0. Abhängigkeiten prüfen +for cmd in jq curl sed nix; do + command -v $cmd >/dev/null 2>&1 || { echo "Fehler: $cmd nicht installiert!"; exit 1; } +done + +# 1. Version aus .fvmrc extrahieren +if [ ! -f .fvmrc ]; then + echo "Fehler: .fvmrc nicht gefunden!" + exit 1 +fi + +FLUTTER_VERSION=$(jq -r .flutter .fvmrc) +echo "Gesuchte Flutter Version: $FLUTTER_VERSION" + +# 2. Commit-Hash und Version aus Devbox-API holen +API_URL="https://search.devbox.sh/v2/pkg?name=flutter" +RELEASES_JSON=$(curl -s "$API_URL") + +# Alle Versionen extrahieren und sortieren +ALL_VERSIONS=$(echo "$RELEASES_JSON" | jq -r '.releases[].version' | sort -V) + +# Finde die gewünschte oder nächsthöhere Version +FOUND_VERSION=$(echo "$ALL_VERSIONS" | awk -v v="$FLUTTER_VERSION" '$0 >= v { print; exit }') + +if [ -z "$FOUND_VERSION" ]; then + echo "Fehler: Keine passende Flutter-Version gefunden." + exit 1 +fi + +if [ "$FOUND_VERSION" != "$FLUTTER_VERSION" ]; then + echo "Hinweis: Exakte Version nicht gefunden, benutze stattdessen Version $FOUND_VERSION." +fi + +# Commit-Hash für x86_64-linux extrahieren +COMMIT=$(echo "$RELEASES_JSON" | jq -r --arg v "$FOUND_VERSION" '.releases[] | select(.version==$v) | .platforms[] | select(.system=="x86_64-linux") | .commit_hash' | head -n 1) + +if [ -z "$COMMIT" ] || [ "$COMMIT" == "null" ]; then + echo "Fehler: Kein Commit-Hash für Version $FOUND_VERSION und Plattform x86_64-linux gefunden." + exit 1 +fi + +echo "Gefundener Commit: $COMMIT (Version: $FOUND_VERSION)" + + +# 3. Die flake.nix patchen (Backup anlegen) +sed -i.bak "s|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/[a-f0-9]*\";|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/$COMMIT\";|" flake.nix + +# 4. Den Flake-Lock aktualisieren +nix flake update nixpkgs-flutter + +# 5. Optional: direnv reload +if command -v direnv >/dev/null 2>&1; then + direnv reload +fi + +echo "Erfolgreich! Die flake.nix nutzt nun den Commit für Flutter $FLUTTER_VERSION (oder höher)."