{ description = "Flutter Template"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; flake-utils.url = "github:numtide/flake-utils"; ide = { url = "github:ivandimitrov8080/flake-ide"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs , flake-utils , ide , ... }: flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; config = { android_sdk.accept_license = true; allowUnfree = true; }; overlays = [ (final: prev: { nvim = ide.nvim.${system}.standalone { plugins = { lsp.servers = { kotlin-language-server.enable = true; }; }; extraPlugins = with prev.vimPlugins; [ flutter-tools-nvim ]; }; }) ]; }; nativeBuildInputs = [ ]; buildInputs = [ androidSdk pkgs.flutter pkgs.jdk pkgs.nvim pkgs.libxml2 ]; # Android config buildToolsVersion = "30.0.3"; androidComposition = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ buildToolsVersion ]; platformVersions = [ "33" "34" ]; abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; includeNDK = true; ndkVersion = "26.3.11579264"; cmakeVersions = [ "3.22.1" ]; }; androidSdk = androidComposition.androidsdk; env = rec { CHROME_EXECUTABLE = "/home/ivand/.nix-profile/bin/chromium"; ANDROID_SDK_ROOT = "${androidComposition.androidsdk}/libexec/android-sdk"; ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle"; LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; }; in { devShells.default = pkgs.mkShell { inherit nativeBuildInputs buildInputs env; }; } ); }