From 9efdac5f31dc48e2fd66db57c6a1e0c58a63312e Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sat, 24 May 2025 13:42:30 +0200 Subject: [PATCH] Use devenv instead of flake --- .envrc | 8 ++- .gitignore | 12 ++++ devenv.lock | 103 ++++++++++++++++++++++++++++ devenv.nix | 37 ++++++++++ devenv.yaml | 15 ++++ flake.lock | 61 ---------------- flake.nix | 85 ----------------------- flutter_01.png | Bin 0 -> 62426 bytes flutter_jank_metrics_01.json | 1 + ios/RunnerTests/RunnerTests.swift | 12 ++++ local.properties | 3 + macos/RunnerTests/RunnerTests.swift | 12 ++++ 12 files changed, 202 insertions(+), 147 deletions(-) create mode 100644 devenv.lock create mode 100644 devenv.nix create mode 100644 devenv.yaml delete mode 100644 flake.lock delete mode 100644 flake.nix create mode 100644 flutter_01.png create mode 100644 flutter_jank_metrics_01.json create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 local.properties create mode 100644 macos/RunnerTests/RunnerTests.swift diff --git a/.envrc b/.envrc index 3550a30..e3c2943 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,7 @@ -use flake +export DIRENV_WARN_TIMEOUT=20s + +eval "$(devenv direnvrc)" + +# The use_devenv function supports passing flags to the devenv command +# For example: use devenv --impure --option services.postgres.enable:bool true +use devenv diff --git a/.gitignore b/.gitignore index 9eb3457..15cbb3c 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,15 @@ app.*.map.json /android/app/profile /android/app/release /.direnv/ + +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml +.android +android/app/.cxx/ diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..4c2996e --- /dev/null +++ b/devenv.lock @@ -0,0 +1,103 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1747717470, + "owner": "cachix", + "repo": "devenv", + "rev": "c7f2256ee4a4a4ee9cbf1e82a6e49b253c374995", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747372754, + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1746807397, + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "c5208b594838ea8e6cca5997fbf784b7cca1ca90", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "git-hooks": "git-hooks", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": [ + "git-hooks" + ] + } + } + }, + "root": "root", + "version": 7 +} diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..f78c60c --- /dev/null +++ b/devenv.nix @@ -0,0 +1,37 @@ +{ + pkgs, + lib, + config, + inputs, + ... +}: + +{ + android = { + enable = true; + emulator.enable = false; + flutter.enable = true; + + buildTools.version = [ + "34.0.0" + "33.0.1" + ]; + platforms.version = [ + "27" + "28" + "29" + "30" + "31" + "32" + "33" + "34" + "35" + ]; + ndk.enable = true; + ndk.version = [ + "25.1.8937393" + "26.3.11579264" + "27.2.12479018" + ]; + }; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..01189cf --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,15 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + +# If you're using non-OSS software, you can set allowUnfree to true. +allowUnfree: true + +# If you're willing to use a package that's vulnerable +# permittedInsecurePackages: +# - "openssl-1.1.1w" + +# If you have more than one devenv you can merge them +#imports: +# - ./backend diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 5bd6d61..0000000 --- a/flake.lock +++ /dev/null @@ -1,61 +0,0 @@ -{ - "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1745953386, - "narHash": "sha256-Qk3dfcQzXEG9m4/znM6sYQs2Y/2c5pTP8Kdygwm42Z4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "13497c5ef45da38d78fe8c9ab768a63d513c35dd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs-unstable": "nixpkgs-unstable" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 3e6e6d7..0000000 --- a/flake.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ - description = "Flutter"; - inputs = { - nixpkgs-unstable.url = "github:NixOS/nixpkgs/master"; - flake-utils.url = "github:numtide/flake-utils"; - }; - outputs = - { - self, - nixpkgs-unstable, - flake-utils, - }: - flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = import nixpkgs-unstable { - inherit system; - config = { - android_sdk.accept_license = true; - allowUnfree = true; - }; - }; - - androidComposition = pkgs.androidenv.composeAndroidPackages { - buildToolsVersions = [ - "34.0.0" - "33.0.1" - ]; - platformVersions = [ - "27" - "28" - "29" - "30" - "31" - "32" - "33" - "34" - "35" - ]; - abiVersions = [ - "armeabi-v7a" - "arm64-v8a" - ]; - includeNDK = true; - ndkVersions = [ "27.2.12479018" ]; - }; - # androidSdk = androidComposition.androidsdk; - androidSdk = pkgs.androidenv.androidPkgs.androidsdk; - in - { - devShell = - with pkgs; - mkShell { - ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; - buildInputs = [ - flutter - androidSdk - jdk17 - - # Needed by flutter_secure_storage - libsecret.dev - jsoncpp.dev - - gtk3.dev - pcre2.dev - libsysprof-capture - util-linux.dev - libselinux.dev - libsepol.dev - libthai.dev - libgcrypt.dev - libdatrie.dev - libgpg-error.dev - xorg.libXdmcp.dev - lerc.dev - libxkbcommon.dev - libepoxy.dev - xorg.libXtst - - pkg-config - ]; - }; - } - ); -} diff --git a/flutter_01.png b/flutter_01.png new file mode 100644 index 0000000000000000000000000000000000000000..231e249070f4c800c6ed39af4133c40297b3a623 GIT binary patch literal 62426 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�g@nO%a5VD@$mM?3Vsv;NfOR9b>D_e+Aw%%EV) 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 c({hCltxavWcUT=mfS=