{ description = "A Nix-flake-based development environment for OpenStApps"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: let aapt2buildToolsVersion = "33.0.2"; in flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; config = { allowUnfree = true; android_sdk.accept_license = true; }; }; fontMin = pkgs.python311.withPackages ( ps: with ps; [ brotli fonttools ] ++ (with fonttools.optional-dependencies; [ woff ]) ); android = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "30.0.3" aapt2buildToolsVersion ]; platformVersions = [ "33" ]; }; androidJdk = pkgs.jdk17; cypress = pkgs.cypress.overrideAttrs (cyPrev: rec { version = "13.2.0"; src = pkgs.fetchzip { url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip"; hash = "sha256-9o0nprGcJhudS1LNm+T7Vf0Dwd1RBauYKI+w1FBQ3ZM="; }; }); in { devShell = pkgs.mkShell rec { buildInputs = [ pkgs.nodejs_18 pkgs.corepack # tools pkgs.curl pkgs.jq fontMin cypress # android androidJdk android.androidsdk ]; ANDROID_JAVA_HOME = "${androidJdk.home}"; ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk"; GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${aapt2buildToolsVersion}/aapt2"; CYPRESS_INSTALL_BINARY = "0"; CYPRESS_RUN_BINARY = "${cypress}/bin/Cypress"; CHROME_BIN = pkgs.lib.getExe pkgs.chromium; }; } ); }