Files
readest/ops/flake.nix
T

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;
};
});
}