108 lines
3.4 KiB
Nix
108 lines
3.4 KiB
Nix
{
|
|
description = "Readest development environment";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
devshell.url = "github:numtide/devshell";
|
|
android = {
|
|
url = "github:tadfisher/android-nixpkgs/stable";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, android, devshell }:
|
|
{
|
|
overlay = final: prev: {
|
|
inherit (self.packages.${final.system}) android-sdk android-studio;
|
|
};
|
|
}
|
|
//
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
overlays = [
|
|
devshell.overlays.default
|
|
self.overlay
|
|
];
|
|
};
|
|
# android-studio is not available in aarch64-darwin
|
|
androidConditionalPackages = if pkgs.system != "aarch64-darwin" then [ pkgs.android-studio ] else [ ];
|
|
commonPackages = with pkgs; [
|
|
pnpm
|
|
];
|
|
mkCommonSHell = { name, extraPackages ? [], extraEnv ? [] }:
|
|
pkgs.devshell.mkShell {
|
|
inherit name;
|
|
packages = commonPackages ++ extraPackages;
|
|
env = extraEnv;
|
|
};
|
|
|
|
in {
|
|
packages = {
|
|
android-sdk = android.sdk.${system} (sdkPkgs: with sdkPkgs; [
|
|
# Useful packages for building and testing.
|
|
build-tools-34-0-0
|
|
cmdline-tools-latest
|
|
emulator
|
|
platform-tools
|
|
platforms-android-34
|
|
ndk-26-1-10909125
|
|
]
|
|
++ lib.optionals (system == "aarch64-darwin") [
|
|
system-images-android-34-google-apis-arm64-v8a
|
|
system-images-android-34-google-apis-playstore-arm64-v8a
|
|
]
|
|
++ lib.optionals (system == "x86_64-darwin" || system == "x86_64-linux") [
|
|
system-images-android-34-google-apis-x86-64
|
|
system-images-android-34-google-apis-playstore-x86-64
|
|
]);
|
|
} // lib.optionalAttrs (system == "x86_64-linux") {
|
|
# Android Studio in nixpkgs is currently packaged for x86_64-linux only.
|
|
android-studio = pkgs.androidStudioPackages.stable;
|
|
};
|
|
|
|
devShells = {
|
|
web = mkCommonSHell {
|
|
name = "readest-dev";
|
|
};
|
|
|
|
ios = mkCommonSHell {
|
|
name = "readest-ios";
|
|
extraPackages = [ pkgs.cocoapods ];
|
|
};
|
|
|
|
android = mkCommonSHell {
|
|
name = "readest-android";
|
|
extraPackages = [
|
|
pkgs.android-sdk
|
|
pkgs.gradle
|
|
pkgs.jdk
|
|
] ++ androidConditionalPackages;
|
|
extraEnv = [
|
|
{
|
|
name = "ANDROID_HOME";
|
|
value = "${pkgs.android-sdk}/share/android-sdk";
|
|
}
|
|
{
|
|
name = "ANDROID_SDK_ROOT";
|
|
value = "${pkgs.android-sdk}/share/android-sdk";
|
|
}
|
|
{
|
|
name = "NDK_HOME";
|
|
value = "${pkgs.android-sdk}/share/android-sdk/ndk/26.1.10909125";
|
|
}
|
|
{
|
|
name = "JAVA_HOME";
|
|
value = pkgs.jdk.home;
|
|
}
|
|
];
|
|
};
|
|
|
|
default = self.devShells.${system}.web;
|
|
};
|
|
});
|
|
}
|