diff --git a/package/.envrc b/package/.envrc new file mode 100644 index 0000000..4c203ce --- /dev/null +++ b/package/.envrc @@ -0,0 +1,5 @@ +use flake . --impure + +if [ -f .envrc.local ]; then + source .envrc.local +fi diff --git a/package/example/android/gradle.properties b/package/example/android/gradle.properties index 7f078ce..32e18a6 100644 --- a/package/example/android/gradle.properties +++ b/package/example/android/gradle.properties @@ -10,7 +10,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m -org.gradle.jvmargs=-Xms512M -Xmx4g -XX:MaxPermSize=1024m -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options="-Xmx1g" +org.gradle.jvmargs=-Xms512M -Xmx4g -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options="-Xmx1g" org.gradle.parallel=true org.gradle.daemon=true org.gradle.configureondemand=true @@ -43,3 +43,5 @@ hermesEnabled=true #VisionCamera_disableFrameProcessors=true # Can be set to true to include the full 2.4 MB MLKit dependency VisionCamera_enableCodeScanner=true + +android.aapt2FromMavenOverride=/nix/store/6nrdbhdcmrig3vr80sc7qf9lna5cs1gb-android-sdk-env/share/android-sdk/build-tools/33.0.0/aapt2 diff --git a/package/flake.lock b/package/flake.lock new file mode 100644 index 0000000..5d3fb4e --- /dev/null +++ b/package/flake.lock @@ -0,0 +1,189 @@ +{ + "nodes": { + "android-nixpkgs": { + "inputs": { + "devshell": "devshell", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1701980274, + "narHash": "sha256-uKJIFvsahbWw52TsIht7g2iosXBgJDRMSMoCE1fvEAk=", + "owner": "tadfisher", + "repo": "android-nixpkgs", + "rev": "bce9d437ed54ee1425b66442a12814fee4cdbd51", + "type": "github" + }, + "original": { + "owner": "tadfisher", + "repo": "android-nixpkgs", + "type": "github" + } + }, + "devshell": { + "inputs": { + "nixpkgs": [ + "android-nixpkgs", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1701787589, + "narHash": "sha256-ce+oQR4Zq9VOsLoh9bZT8Ip9PaMLcjjBUHVPzW5d7Cw=", + "owner": "numtide", + "repo": "devshell", + "rev": "44ddedcbcfc2d52a76b64fb6122f209881bd3e1e", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694102001, + "narHash": "sha256-vky6VPK1n1od6vXbqzOXnekrQpTL4hbPAwUhT5J9c9E=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "9e21c80adf67ebcb077d75bd5e7d724d21eeafd6", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1701718080, + "narHash": "sha256-6ovz0pG76dE0P170pmmZex1wWcQoeiomUZGggfH9XPs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2c7f3c0fb7c08a0814627611d9d7d45ab6d75335", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1702312524, + "narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a9bf124c46ef298113270b1f84a164865987a91c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "android-nixpkgs": "android-nixpkgs", + "flake-utils": "flake-utils_2", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "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/package/flake.nix b/package/flake.nix new file mode 100644 index 0000000..b2f569e --- /dev/null +++ b/package/flake.nix @@ -0,0 +1,69 @@ +{ + description = "Sample Nix ts-node build"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + gitignore = { + url = "github:hercules-ci/gitignore.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + android-nixpkgs = { + url = "github:tadfisher/android-nixpkgs"; + }; + }; + outputs = { self, nixpkgs, flake-utils, gitignore, android-nixpkgs, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + nodejs = pkgs.nodejs-18_x; + # NOTE: this does not work + appBuild = pkgs.stdenv.mkDerivation { + name = "example-ts-node"; + version = "0.1.0"; + src = gitignore.lib.gitignoreSource ./.; # uses the gitignore in the repo to only copy files git would see + buildInputs = [ nodejs ]; + # https://nixos.org/manual/nixpkgs/stable/#sec-stdenv-phases + buildPhase = '' + # each phase has pre/postHooks. When you make your own phase be sure to still call the hooks + runHook preBuild + npm ci + npm run build + runHook postBuild + ''; + installPhase = '' + runHook preInstall + cp -r node_modules $out/node_modules + cp package.json $out/package.json + cp -r dist $out/dist + runHook postInstall + ''; + }; + android-sdk = android-nixpkgs.sdk.${system} (sdkPkgs: with sdkPkgs; [ + cmdline-tools-latest + build-tools-30-0-3 + build-tools-33-0-0 + build-tools-33-0-1 + build-tools-34-0-0 + platform-tools + platforms-android-33 + platforms-android-34 + emulator + ndk-23-1-7779620 + cmake-3-22-1 + system-images-android-33-google-apis-x86-64 + system-images-android-34-google-apis-x86-64 + ]); + in with pkgs; { + defaultPackage = appBuild; + devShell = mkShell { + buildInputs = [ nodejs yarn watchman gradle_7 alejandra nodePackages.prettier ]; + ANDROID_SDK_BIN = android-sdk; + shellHook = '' + export JAVA_HOME=${pkgs.jdk17.home} + source ${android-sdk.out}/nix-support/setup-hook + export PATH=${android-sdk}/bin:$PATH + ORG_GRADLE_PROJECT_ANDROID_HOME="$ANDROID_HOME" + ''; + }; + }); +}