Personal Nix setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Android SDK via flake

+136 -8
+47
flake.lock
··· 27 27 "type": "github" 28 28 } 29 29 }, 30 + "android-sdk": { 31 + "inputs": { 32 + "devshell": "devshell", 33 + "flake-utils": [ 34 + "flake-utils" 35 + ], 36 + "nixpkgs": [ 37 + "nixpkgs" 38 + ] 39 + }, 40 + "locked": { 41 + "lastModified": 1737058742, 42 + "narHash": "sha256-akgqrW8z7Nt6SrP56umZRcG4RYUW+nH2WbU4MNF3mPQ=", 43 + "owner": "tadfisher", 44 + "repo": "android-nixpkgs", 45 + "rev": "42733564fa7787454437727d09389c8a3663e225", 46 + "type": "github" 47 + }, 48 + "original": { 49 + "owner": "tadfisher", 50 + "ref": "stable", 51 + "repo": "android-nixpkgs", 52 + "type": "github" 53 + } 54 + }, 30 55 "apple-silicon": { 31 56 "inputs": { 32 57 "flake-compat": "flake-compat", ··· 97 122 "original": { 98 123 "owner": "lnl7", 99 124 "repo": "nix-darwin", 125 + "type": "github" 126 + } 127 + }, 128 + "devshell": { 129 + "inputs": { 130 + "nixpkgs": [ 131 + "android-sdk", 132 + "nixpkgs" 133 + ] 134 + }, 135 + "locked": { 136 + "lastModified": 1735644329, 137 + "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", 138 + "owner": "numtide", 139 + "repo": "devshell", 140 + "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", 141 + "type": "github" 142 + }, 143 + "original": { 144 + "owner": "numtide", 145 + "repo": "devshell", 100 146 "type": "github" 101 147 } 102 148 }, ··· 764 810 "root": { 765 811 "inputs": { 766 812 "agenix": "agenix", 813 + "android-sdk": "android-sdk", 767 814 "apple-silicon": "apple-silicon", 768 815 "darwin": "darwin", 769 816 "flake-utils": "flake-utils",
+9
flake.nix
··· 63 63 url = "github:kitten/yeetmouse/next?dir=nix"; 64 64 inputs.nixpkgs.follows = "nixpkgs"; 65 65 }; 66 + 67 + android-sdk = { 68 + url = "github:tadfisher/android-nixpkgs/stable"; 69 + inputs = { 70 + nixpkgs.follows = "nixpkgs"; 71 + flake-utils.follows = "flake-utils"; 72 + }; 73 + }; 66 74 }; 67 75 68 76 outputs = inputs: let ··· 72 80 overlays = [ 73 81 inputs.lix-module.overlays.lixFromNixpkgs 74 82 inputs.nvim-plugins.overlays.default 83 + inputs.android-sdk.overlays.default 75 84 (self: super: { 76 85 inherit (inputs.language-servers.packages.${self.system}) 77 86 typescript-language-server
+79 -8
home/development/react-native.nix
··· 1 - { lib, helpers, config, pkgs, ... }: 1 + { lib, system, helpers, config, pkgs, ... }: 2 2 3 3 with lib; 4 4 let 5 5 cfg = config.modules.development; 6 + 7 + android-arch = if helpers.system == "aarch64-darwin" then "arm64-v8a" else "x86-64"; 8 + 9 + create-avd = pkgs.writeShellScriptBin "create-avd" '' 10 + avdmanager create avd \ 11 + --name android-34 \ 12 + --package 'system-images;android-34;google_apis_playstore;${android-arch}' \ 13 + --tag google_apis_playstore \ 14 + --device pixel_8 \ 15 + --force 16 + ''; 6 17 in { 7 18 options.modules.development.react-native = { 8 19 enable = mkOption { ··· 11 22 description = "Whether to enable React Native configuration."; 12 23 type = types.bool; 13 24 }; 25 + 26 + android-sdk = mkOption { 27 + default = cfg.react-native.enable; 28 + type = types.bool; 29 + }; 30 + 31 + android-studio = mkOption { 32 + default = cfg.react-native.enable && cfg.react-native.android-sdk; 33 + type = types.bool; 34 + }; 35 + 36 + cocoapods = mkOption { 37 + default = cfg.react-native.enable; 38 + type = types.bool; 39 + }; 40 + 41 + xcode = mkOption { 42 + default = cfg.react-native.enable; 43 + type = types.bool; 44 + }; 14 45 }; 15 46 16 - config.modules.apps.firefox = { 17 - enable = if helpers.isDarwin then (mkDefault true) else (mkForce false); 18 - }; 19 - } // helpers.darwinAttrs { 20 - config = mkIf (cfg.enable && cfg.react-native.enable) { 21 - home.packages = with pkgs; [ cocoapods ]; 22 - }; 47 + config = mkIf cfg.react-native.enable (mkMerge [ 48 + { 49 + modules.development.react-native = { 50 + cocoapods = if helpers.isDarwin then (mkDefault true) else (mkForce false); 51 + }; 52 + } 53 + 54 + (helpers.mkIfDarwin { 55 + home.packages = with pkgs; mkIf cfg.react-native.cocoapods [ 56 + cocoapods 57 + ]; 58 + }) 59 + 60 + (mkIf cfg.react-native.android-sdk { 61 + home.packages = [ 62 + pkgs.gradle_8 63 + create-avd 64 + ] ++ optionals (helpers.isLinux && cfg.react-native.android-studio) [ 65 + pkgs.android-studio 66 + ]; 67 + 68 + home.sessionVariables = rec { 69 + JAVA_HOME = pkgs.jdk.home; 70 + ANDROID_USER_HOME = "${config.xdg.stateHome}/android"; 71 + ANDROID_AVD_HOME = "${ANDROID_USER_HOME}/avd"; 72 + }; 73 + 74 + android-sdk = { 75 + enable = true; 76 + packages = sdk: with sdk; [ 77 + build-tools-34-0-0 78 + build-tools-35-0-0 79 + cmdline-tools-latest 80 + emulator 81 + platform-tools 82 + platforms-android-34 83 + platforms-android-35 84 + sources-android-34 85 + sources-android-35 86 + ndk-26-1-10909125 87 + cmake-3-22-1 88 + sdk."system-images-android-34-google-apis-${android-arch}" 89 + sdk."system-images-android-34-google-apis-playstore-${android-arch}" 90 + ]; 91 + }; 92 + }) 93 + ]); 23 94 }
+1
lib/system.nix
··· 47 47 48 48 imports = [ 49 49 inputs.agenix.homeManagerModules.default 50 + inputs.android-sdk.hmModules.android 50 51 ../home/default.nix 51 52 ../machines/${hostname}/home.nix 52 53 ];