Live location tracking and playback for the game "manhunt"
1{
2 inputs = {
3 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4 flakelight.url = "github:nix-community/flakelight";
5 rust-overlay.url = "github:oxalica/rust-overlay";
6 rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
7 };
8 outputs = { flakelight, ... } @ inputs:
9 flakelight ./. {
10 inherit inputs;
11 withOverlays = [ inputs.rust-overlay.overlays.default ];
12 nixpkgs.config = {
13 allowUnfree = true;
14 android_sdk.accept_license = true;
15 };
16
17 formatters =
18 let
19 forAllTypes = cmd: types:
20 builtins.listToAttrs (builtins.map
21 (t: {
22 name = "*.${t}";
23 value = cmd;
24 })
25 types);
26 in
27 {
28 "*.rs" = "cd backend; cargo fmt";
29 }
30 // (forAllTypes "prettier --write ." [ "ts" "tsx" "md" "json" ]);
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; [
65 at-spi2-atk
66 atkmm
67 cairo
68 gdk-pixbuf
69 glib
70 gtk3
71 harfbuzz
72 librsvg
73 libsoup_3
74 pango
75 webkitgtk_4_1
76 openssl
77 pkg-config
78 gobject-introspection
79 nodePackages.prettier
80 (rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { targets = [ "aarch64-linux-android" "armv7-linux-androideabi" "i686-linux-android" "x86_64-linux-android" ]; }))
81 cargo-tauri
82 nodejs
83 (android-studio.withSdk androidComposition.androidsdk)
84 ];
85 };
86 };
87}