Personal Nix setup

Add Android SDK via flake

Changed files
+136 -8
home
development
lib
+47
flake.lock
···
"type": "github"
}
},
+
"android-sdk": {
+
"inputs": {
+
"devshell": "devshell",
+
"flake-utils": [
+
"flake-utils"
+
],
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1737058742,
+
"narHash": "sha256-akgqrW8z7Nt6SrP56umZRcG4RYUW+nH2WbU4MNF3mPQ=",
+
"owner": "tadfisher",
+
"repo": "android-nixpkgs",
+
"rev": "42733564fa7787454437727d09389c8a3663e225",
+
"type": "github"
+
},
+
"original": {
+
"owner": "tadfisher",
+
"ref": "stable",
+
"repo": "android-nixpkgs",
+
"type": "github"
+
}
+
},
"apple-silicon": {
"inputs": {
"flake-compat": "flake-compat",
···
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
+
"type": "github"
+
}
+
},
+
"devshell": {
+
"inputs": {
+
"nixpkgs": [
+
"android-sdk",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1735644329,
+
"narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=",
+
"owner": "numtide",
+
"repo": "devshell",
+
"rev": "f7795ede5b02664b57035b3b757876703e2c3eac",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "devshell",
"type": "github"
}
},
···
"root": {
"inputs": {
"agenix": "agenix",
+
"android-sdk": "android-sdk",
"apple-silicon": "apple-silicon",
"darwin": "darwin",
"flake-utils": "flake-utils",
+9
flake.nix
···
url = "github:kitten/yeetmouse/next?dir=nix";
inputs.nixpkgs.follows = "nixpkgs";
};
+
+
android-sdk = {
+
url = "github:tadfisher/android-nixpkgs/stable";
+
inputs = {
+
nixpkgs.follows = "nixpkgs";
+
flake-utils.follows = "flake-utils";
+
};
+
};
};
outputs = inputs: let
···
overlays = [
inputs.lix-module.overlays.lixFromNixpkgs
inputs.nvim-plugins.overlays.default
+
inputs.android-sdk.overlays.default
(self: super: {
inherit (inputs.language-servers.packages.${self.system})
typescript-language-server
+79 -8
home/development/react-native.nix
···
-
{ lib, helpers, config, pkgs, ... }:
+
{ lib, system, helpers, config, pkgs, ... }:
with lib;
let
cfg = config.modules.development;
+
+
android-arch = if helpers.system == "aarch64-darwin" then "arm64-v8a" else "x86-64";
+
+
create-avd = pkgs.writeShellScriptBin "create-avd" ''
+
avdmanager create avd \
+
--name android-34 \
+
--package 'system-images;android-34;google_apis_playstore;${android-arch}' \
+
--tag google_apis_playstore \
+
--device pixel_8 \
+
--force
+
'';
in {
options.modules.development.react-native = {
enable = mkOption {
···
description = "Whether to enable React Native configuration.";
type = types.bool;
};
+
+
android-sdk = mkOption {
+
default = cfg.react-native.enable;
+
type = types.bool;
+
};
+
+
android-studio = mkOption {
+
default = cfg.react-native.enable && cfg.react-native.android-sdk;
+
type = types.bool;
+
};
+
+
cocoapods = mkOption {
+
default = cfg.react-native.enable;
+
type = types.bool;
+
};
+
+
xcode = mkOption {
+
default = cfg.react-native.enable;
+
type = types.bool;
+
};
};
-
config.modules.apps.firefox = {
-
enable = if helpers.isDarwin then (mkDefault true) else (mkForce false);
-
};
-
} // helpers.darwinAttrs {
-
config = mkIf (cfg.enable && cfg.react-native.enable) {
-
home.packages = with pkgs; [ cocoapods ];
-
};
+
config = mkIf cfg.react-native.enable (mkMerge [
+
{
+
modules.development.react-native = {
+
cocoapods = if helpers.isDarwin then (mkDefault true) else (mkForce false);
+
};
+
}
+
+
(helpers.mkIfDarwin {
+
home.packages = with pkgs; mkIf cfg.react-native.cocoapods [
+
cocoapods
+
];
+
})
+
+
(mkIf cfg.react-native.android-sdk {
+
home.packages = [
+
pkgs.gradle_8
+
create-avd
+
] ++ optionals (helpers.isLinux && cfg.react-native.android-studio) [
+
pkgs.android-studio
+
];
+
+
home.sessionVariables = rec {
+
JAVA_HOME = pkgs.jdk.home;
+
ANDROID_USER_HOME = "${config.xdg.stateHome}/android";
+
ANDROID_AVD_HOME = "${ANDROID_USER_HOME}/avd";
+
};
+
+
android-sdk = {
+
enable = true;
+
packages = sdk: with sdk; [
+
build-tools-34-0-0
+
build-tools-35-0-0
+
cmdline-tools-latest
+
emulator
+
platform-tools
+
platforms-android-34
+
platforms-android-35
+
sources-android-34
+
sources-android-35
+
ndk-26-1-10909125
+
cmake-3-22-1
+
sdk."system-images-android-34-google-apis-${android-arch}"
+
sdk."system-images-android-34-google-apis-playstore-${android-arch}"
+
];
+
};
+
})
+
]);
}
+1
lib/system.nix
···
imports = [
inputs.agenix.homeManagerModules.default
+
inputs.android-sdk.hmModules.android
../home/default.nix
../machines/${hostname}/home.nix
];