Update .gitignore and add flake.nix patching script for Flutter version management
Some checks failed
Android / build (push) Has been cancelled
CI / test (push) Has been cancelled
iOS / build (push) Has been cancelled

This commit is contained in:
HendrikRauh 2026-01-10 14:16:05 +01:00
parent 0546fba37f
commit 96627adf7b
4 changed files with 89 additions and 2 deletions

1
.gitignore vendored
View file

@ -9,6 +9,7 @@
.history
.svn/
.direnv
flake.nix.bak
coverage/*

19
flake.lock generated
View file

@ -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": {

View file

@ -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

60
update-flutter-nix.sh Normal file
View file

@ -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)."