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 flakelight.builtinFormatters = false;
18 formatters = pkgs: let
19 prettier = "${pkgs.prettier}/bin/prettier --write .";
20 alejandra = "${pkgs.alejandra}/bin/alejandra .";
21 rustfmt = "${pkgs.rustfmt}/bin/rustfmt fmt";
22 just = "${pkgs.just}/bin/just --fmt --unstable";
23 in {
24 "justfile" = just;
25 "*.nix" = alejandra;
26 "*.js" = prettier;
27 "*.ts" = prettier;
28 "*.jsx" = prettier;
29 "*.tsx" = prettier;
30 "*.md" = prettier;
31 "*.json" = prettier;
32 "*.rs" = rustfmt;
33 };
34
35 devShell = pkgs: let
36 buildToolsVersion = "34.0.0";
37 androidComposition = pkgs.androidenv.composeAndroidPackages {
38 platformVersions = [
39 "34"
40 "36"
41 "latest"
42 ];
43 systemImageTypes = ["google_apis_playstore"];
44 buildToolsVersions = [buildToolsVersion];
45 abiVersions = [
46 "armeabi-v7a"
47 "arm64-v8a"
48 "x86_64"
49 ];
50 includeNDK = true;
51 includeExtras = [
52 "extras;google;auto"
53 ];
54 };
55 in {
56 shellHook = let
57 ANDROID_HOME = "${androidComposition.androidsdk}/libexec/android-sdk";
58 in ''
59 export XDG_DATA_DIRS="$GSETTINGS_SCHEMAS_PATH"
60 export GIO_EXTRA_MODULES="${pkgs.dconf.lib}/lib/gio/modules:${pkgs.glib-networking}/lib/gio/modules"
61 export ANDROID_HOME=${ANDROID_HOME}
62 export NDK_HOME="${androidComposition.androidsdk}/libexec/android-sdk/ndk/${builtins.head (pkgs.lib.lists.reverseList (builtins.split "-" "${androidComposition.ndk-bundle}"))}"
63 export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_HOME}/build-tools/${buildToolsVersion}/aapt2"
64 '';
65 packages = with pkgs; [
66 at-spi2-atk
67 atkmm
68 cairo
69 gdk-pixbuf
70 glib
71 gtk3
72 alejandra
73 harfbuzz
74 librsvg
75 gradle
76 libsoup_3
77 just
78 pango
79 webkitgtk_4_1
80 cargo-nextest
81 openssl
82 pkg-config
83 gobject-introspection
84 nodePackages.prettier
85 (rust-bin.stable.latest.default.override {targets = ["aarch64-linux-android" "armv7-linux-androideabi" "i686-linux-android" "x86_64-linux-android"];})
86 cargo-tauri
87 nodejs
88 (android-studio.withSdk androidComposition.androidsdk)
89 ];
90 };
91 };
92}