+3
-4
app.config.js
+3
-4
app.config.js
···
35
35
return {
36
36
expo: {
37
37
version: VERSION,
38
-
name: 'Deer',
38
+
name: IS_DEV ? 'Deer (dev)' : 'Deer',
39
39
slug: 'deer',
40
40
scheme: ['bluesky', 'deer'],
41
41
// owner: 'blueskysocial',
···
49
49
newArchEnabled: false,
50
50
ios: {
51
51
supportsTablet: false,
52
-
bundleIdentifier: 'top.aylac.deer',
52
+
bundleIdentifier: IS_DEV ? 'top.aylac.deer.dev' : 'top.aylac.deer',
53
53
config: {
54
54
usesNonExemptEncryption: false,
55
55
},
···
153
153
backgroundImage: './assets/icon-android-background.png',
154
154
backgroundColor: '#4b9b6c',
155
155
},
156
-
package: 'top.aylac.deer',
156
+
package: IS_DEV ? 'top.aylac.deer.dev' : 'top.aylac.deer',
157
157
intentFilters: [
158
158
{
159
159
action: 'VIEW',
···
237
237
compileSdkVersion: 35,
238
238
targetSdkVersion: 35,
239
239
buildToolsVersion: '35.0.0',
240
-
gradleVersion: '8.10',
241
240
},
242
241
},
243
242
],
+19
-19
flake.lock
+19
-19
flake.lock
···
7
7
"nixpkgs": "nixpkgs"
8
8
},
9
9
"locked": {
10
-
"lastModified": 1745266877,
11
-
"narHash": "sha256-MOEwZIhu3EXSBrtHML04kbb0gII6irVf9YJEMy8MGsU=",
10
+
"lastModified": 1758745316,
11
+
"narHash": "sha256-DCZ34pumKcJKGTroasX5rSrYFdCVkDqTnpAtAdMJliQ=",
12
12
"owner": "tadfisher",
13
13
"repo": "android-nixpkgs",
14
-
"rev": "3e3987cb51c9ffbd38e62dba0f793940b55a9c07",
14
+
"rev": "c37ea9af0f85dcead5a40fedc51f5351fd9e374d",
15
15
"type": "github"
16
16
},
17
17
"original": {
···
49
49
]
50
50
},
51
51
"locked": {
52
-
"lastModified": 1743550720,
53
-
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
52
+
"lastModified": 1756770412,
53
+
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
54
54
"owner": "hercules-ci",
55
55
"repo": "flake-parts",
56
-
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
56
+
"rev": "4524271976b625a4a605beefd893f270620fd751",
57
57
"type": "github"
58
58
},
59
59
"original": {
···
100
100
},
101
101
"nixpkgs": {
102
102
"locked": {
103
-
"lastModified": 1744932701,
104
-
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
103
+
"lastModified": 1758427187,
104
+
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
105
105
"owner": "NixOS",
106
106
"repo": "nixpkgs",
107
-
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
107
+
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
108
108
"type": "github"
109
109
},
110
110
"original": {
···
116
116
},
117
117
"nixpkgs_2": {
118
118
"locked": {
119
-
"lastModified": 1743583204,
120
-
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
119
+
"lastModified": 1758427187,
120
+
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
121
121
"owner": "NixOS",
122
122
"repo": "nixpkgs",
123
-
"rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434",
123
+
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
124
124
"type": "github"
125
125
},
126
126
"original": {
···
132
132
},
133
133
"nixpkgs_3": {
134
134
"locked": {
135
-
"lastModified": 1744904290,
136
-
"narHash": "sha256-ewg0m4mGwl3iO4aN73yZoT8lCgEHtapP3d/trfUE6To=",
135
+
"lastModified": 1758446476,
136
+
"narHash": "sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto+dxG4mBo=",
137
137
"owner": "nixos",
138
138
"repo": "nixpkgs",
139
-
"rev": "e03df76c3a8ac2119f45ff18c9b994513dbb7a4c",
139
+
"rev": "a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0",
140
140
"type": "github"
141
141
},
142
142
"original": {
143
143
"owner": "nixos",
144
+
"ref": "nixpkgs-unstable",
144
145
"repo": "nixpkgs",
145
-
"rev": "e03df76c3a8ac2119f45ff18c9b994513dbb7a4c",
146
146
"type": "github"
147
147
}
148
148
},
···
190
190
"nixpkgs": "nixpkgs_3"
191
191
},
192
192
"locked": {
193
-
"lastModified": 1745836852,
194
-
"narHash": "sha256-4rlqhVU89ypXQTWpJchMdocHNSZBVTUehiNWnAy0zJ0=",
193
+
"lastModified": 1758752388,
194
+
"narHash": "sha256-MNXszHSyvZCth+uh9m7LiH4xS2DU3Qe1PgbUnlRt5zY=",
195
195
"owner": "ryand56",
196
196
"repo": "wrangler",
197
-
"rev": "070db974683ef1f8e95dadef549f223381ee8544",
197
+
"rev": "bf1b96fa9962c0addcd8f59153bbca3d95fcca6b",
198
198
"type": "github"
199
199
},
200
200
"original": {
+81
-65
flake.nix
+81
-65
flake.nix
···
6
6
wrangler-flake.url = "github:ryand56/wrangler";
7
7
};
8
8
9
-
outputs =
10
-
{
11
-
nixpkgs,
12
-
flake-utils,
13
-
wrangler-flake,
14
-
android-nixpkgs,
15
-
...
16
-
}:
9
+
outputs = {
10
+
nixpkgs,
11
+
flake-utils,
12
+
wrangler-flake,
13
+
android-nixpkgs,
14
+
...
15
+
}:
17
16
flake-utils.lib.eachDefaultSystem (
18
-
system:
19
-
let
17
+
system: let
18
+
android-arch =
19
+
if system == "aarch64-darwin"
20
+
then "arm64-v8a"
21
+
else "x86-64";
22
+
android-arch-underline =
23
+
if system == "aarch64-darwin"
24
+
then "arm64-v8a"
25
+
else "x86_64";
26
+
20
27
pkgs = import nixpkgs {
21
28
inherit system;
22
29
config = {
···
26
33
};
27
34
pinnedJDK = pkgs.jdk17;
28
35
androidSdk = android-nixpkgs.sdk.${system} (
29
-
sdkPkgs:
30
-
with sdkPkgs;
31
-
[
32
-
cmdline-tools-latest
33
-
build-tools-35-0-0
34
-
build-tools-34-0-0
35
-
platform-tools
36
-
platforms-android-35
37
-
emulator
38
-
cmake-3-22-1
39
-
ndk-26-1-10909125
40
-
ndk-28-0-13004108
41
-
]
42
-
++ nixpkgs.lib.optionals (system == "aarch64-darwin") [
43
-
system-images-android-35-google-apis-arm64-v8a
44
-
system-images-android-35-google-apis-playstore-arm64-v8a
45
-
]
46
-
++ nixpkgs.lib.optionals (system == "x86_64-darwin" || system == "x86_64-linux") [
47
-
system-images-android-35-google-apis-x86-64
48
-
system-images-android-35-google-apis-playstore-x86-64
49
-
]
36
+
sdk:
37
+
with sdk; [
38
+
build-tools-35-0-0
39
+
build-tools-36-0-0
40
+
cmdline-tools-latest
41
+
emulator
42
+
platform-tools
43
+
platforms-android-35
44
+
platforms-android-36
45
+
sources-android-35
46
+
sources-android-36
47
+
ndk-27-1-12297006
48
+
ndk-27-0-12077973
49
+
cmake-3-22-1
50
+
sdk."system-images-android-35-google-apis-${android-arch}"
51
+
sdk."system-images-android-35-google-apis-playstore-${android-arch}"
52
+
]
50
53
);
54
+
55
+
create-avd = pkgs.writeShellScriptBin "create-avd" ''
56
+
avdmanager create avd \
57
+
--name android-35 \
58
+
--package 'system-images;android-35;google_apis_playstore;${android-arch-underline}' \
59
+
--tag google_apis_playstore \
60
+
--device pixel_8 \
61
+
--force
62
+
'';
51
63
in
52
-
with pkgs;
53
-
{
54
-
packages = {
55
-
default = callPackage ./default.nix { };
56
-
};
57
-
devShells = {
58
-
default = mkShell rec {
59
-
buildInputs = [
60
-
androidSdk
61
-
pinnedJDK
62
-
];
64
+
with pkgs; {
65
+
packages = {
66
+
default = callPackage ./default.nix {};
67
+
};
68
+
devShells = {
69
+
default = mkShell rec {
70
+
buildInputs = [
71
+
androidSdk
72
+
pinnedJDK
73
+
];
74
+
75
+
JAVA_HOME = pinnedJDK;
76
+
ANDROID_HOME = "${androidSdk}/share/android-sdk";
77
+
ANDROID_SDK_ROOT = "${androidSdk}/share/android-sdk";
78
+
ANDROID_USER_HOME = "/data/android";
79
+
ANDROID_AVD_HOME = "${ANDROID_USER_HOME}/avd";
63
80
64
-
JAVA_HOME = pinnedJDK;
65
-
ANDROID_HOME = "${androidSdk}/share/android-sdk";
66
-
ANDROID_SDK_ROOT = "${androidSdk}/share/android-sdk";
81
+
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/35.0.0/aapt2";
67
82
68
-
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/35.0.0/aapt2";
83
+
packages = [
84
+
gradle_8
85
+
create-avd
69
86
70
-
packages = [
71
-
just
72
-
fastmod
73
-
nodejs
74
-
yarn
75
-
crowdin-cli
76
-
eas-cli
87
+
just
88
+
fastmod
89
+
nodejs
90
+
yarn
91
+
crowdin-cli
92
+
eas-cli
77
93
78
-
bundletool
94
+
bundletool
79
95
80
-
typescript
81
-
typescript-language-server
96
+
typescript
97
+
typescript-language-server
82
98
83
-
go
84
-
gopls
99
+
go
100
+
gopls
85
101
86
-
wrangler-flake.packages.${system}.wrangler
87
-
];
102
+
wrangler-flake.packages.${system}.wrangler
103
+
];
88
104
89
-
shellHook = ''
90
-
export GRADLE_USER_HOME=~/.cache/gradle
91
-
'';
105
+
shellHook = ''
106
+
export GRADLE_USER_HOME=~/.cache/gradle
107
+
'';
108
+
};
92
109
};
93
-
};
94
-
}
110
+
}
95
111
);
96
112
}
+4
-9
plugins/withAndroidNoJitpackPlugin.js
+4
-9
plugins/withAndroidNoJitpackPlugin.js
···
4
4
5
5
module.exports = function withAndroidNoJitpackPlugin(config) {
6
6
return withProjectBuildGradle(config, config => {
7
-
if (!config.modResults.contents.includes(jitpackRepository)) {
8
-
throw Error(
9
-
'Expected to find the jitpack string in the config. ' +
10
-
'You MUST verify whether it was actually removed upstream, ' +
11
-
'or if the format has changed and this plugin no longer recognizes it.',
7
+
if (config.modResults.contents.includes(jitpackRepository)) {
8
+
config.modResults.contents = config.modResults.contents.replaceAll(
9
+
jitpackRepository,
10
+
'',
12
11
)
13
12
}
14
-
config.modResults.contents = config.modResults.contents.replaceAll(
15
-
jitpackRepository,
16
-
'',
17
-
)
18
13
return config
19
14
})
20
15
}