Live location tracking and playback for the game "manhunt"

Setup Nix

bwc9876.dev 0d6317a0 ca2a4179

verified
+68 -11
+2
.gitignore
··· 1 1 result 2 + *.jks 3 + backend/gen/
+1 -1
backend/tauri.conf.json
··· 2 2 "$schema": "https://schema.tauri.app/config/2", 3 3 "productName": "manhunt-app", 4 4 "version": "0.1.0", 5 - "identifier": "dev.bwc9876.manhunt.app", 5 + "identifier": "com.bwc9876.manhunt.app", 6 6 "build": { 7 7 "beforeDevCommand": "npm run dev", 8 8 "devUrl": "http://localhost:1420",
+20 -1
flake.lock
··· 53 53 "root": { 54 54 "inputs": { 55 55 "flakelight": "flakelight", 56 - "nixpkgs": "nixpkgs_2" 56 + "nixpkgs": "nixpkgs_2", 57 + "rust-overlay": "rust-overlay" 58 + } 59 + }, 60 + "rust-overlay": { 61 + "inputs": { 62 + "nixpkgs": ["nixpkgs"] 63 + }, 64 + "locked": { 65 + "lastModified": 1746498961, 66 + "narHash": "sha256-rp+oh/N88JKHu7ySPuGiA3lBUVIsrOtHbN2eWJdYCgk=", 67 + "owner": "oxalica", 68 + "repo": "rust-overlay", 69 + "rev": "24b00064cdd1d7ba25200c4a8565dc455dc732ba", 70 + "type": "github" 71 + }, 72 + "original": { 73 + "owner": "oxalica", 74 + "repo": "rust-overlay", 75 + "type": "github" 57 76 } 58 77 } 59 78 },
+45 -9
flake.nix
··· 2 2 inputs = { 3 3 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 4 4 flakelight.url = "github:nix-community/flakelight"; 5 + rust-overlay.url = "github:oxalica/rust-overlay"; 6 + rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; 5 7 }; 6 8 outputs = { flakelight, ... } @ inputs: 7 9 flakelight ./. { 8 10 inherit inputs; 11 + withOverlays = [ inputs.rust-overlay.overlays.default ]; 12 + nixpkgs.config = { 13 + allowUnfree = true; 14 + android_sdk.accept_license = true; 15 + }; 16 + 9 17 formatters = 10 18 let 11 19 forAllTypes = cmd: types: ··· 20 28 "*.rs" = "cd backend; cargo fmt"; 21 29 } 22 30 // (forAllTypes "prettier --write ." [ "ts" "tsx" "md" "json" ]); 23 - devShell = { 24 - shellHook = pkgs: '' 25 - export XDG_DATA_DIRS="$GSETTINGS_SCHEMAS_PATH" 26 - export GIO_EXTRA_MODULES="${pkgs.dconf.lib}/lib/gio/modules:${pkgs.glib-networking}/lib/gio/modules" 27 - ''; 28 - packages = pkgs: 29 - with pkgs; [ 31 + devShell = pkgs: 32 + let 33 + buildToolsVersion = "34.0.0"; 34 + androidComposition = pkgs.androidenv.composeAndroidPackages { 35 + platformVersions = [ 36 + "34" 37 + "latest" 38 + ]; 39 + systemImageTypes = [ "google_apis_playstore" ]; 40 + buildToolsVersions = [ buildToolsVersion ]; 41 + abiVersions = [ 42 + "armeabi-v7a" 43 + "arm64-v8a" 44 + "x86_64" 45 + ]; 46 + includeNDK = true; 47 + includeExtras = [ 48 + "extras;google;auto" 49 + ]; 50 + }; 51 + in 52 + { 53 + shellHook = 54 + let 55 + ANDROID_HOME = "${androidComposition.androidsdk}/libexec/android-sdk"; 56 + in 57 + '' 58 + export XDG_DATA_DIRS="$GSETTINGS_SCHEMAS_PATH" 59 + export GIO_EXTRA_MODULES="${pkgs.dconf.lib}/lib/gio/modules:${pkgs.glib-networking}/lib/gio/modules" 60 + export ANDROID_HOME=${ANDROID_HOME} 61 + export NDK_HOME="${androidComposition.androidsdk}/libexec/android-sdk/ndk/${builtins.head (pkgs.lib.lists.reverseList (builtins.split "-" "${androidComposition.ndk-bundle}"))}" 62 + export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_HOME}/build-tools/${buildToolsVersion}/aapt2" 63 + ''; 64 + packages = with pkgs; [ 30 65 at-spi2-atk 31 66 atkmm 32 67 cairo ··· 42 77 pkg-config 43 78 gobject-introspection 44 79 nodePackages.prettier 45 - cargo 80 + (rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { targets = [ "aarch64-linux-android" "armv7-linux-androideabi" "i686-linux-android" "x86_64-linux-android" ]; })) 46 81 cargo-tauri 47 82 nodejs 83 + (android-studio.withSdk androidComposition.androidsdk) 48 84 ]; 49 - }; 85 + }; 50 86 }; 51 87 }