Skip to content

Instantly share code, notes, and snippets.

@janKeli
Last active October 10, 2024 19:36
Show Gist options
  • Save janKeli/1a0d66b7f059387e44ba232b79af7450 to your computer and use it in GitHub Desktop.
Save janKeli/1a0d66b7f059387e44ba232b79af7450 to your computer and use it in GitHub Desktop.
A nix dev shell for tauri, set up for desktop and android dev.
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
fenix.url = "github:nix-community/fenix";
fenix.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
flake-utils,
fenix,
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
system = system;
config.allowUnfree = true;
config.android_sdk.accept_license = true;
};
android_sdk =
(pkgs.androidenv.composeAndroidPackages {
platformVersions = ["34"];
ndkVersions = ["26.3.11579264"];
includeNDK = true;
useGoogleAPIs = false;
useGoogleTVAddOns = false;
includeEmulator = false;
includeSystemImages = false;
includeSources = false;
})
.androidsdk;
packages = with pkgs; [
curl
wget
pkg-config
nodejs_20
typescript-language-server
(with fenix.packages.${system};
combine [
complete.rustc
complete.cargo
complete.clippy
targets.aarch64-linux-android.latest.rust-std
targets.armv7-linux-androideabi.latest.rust-std
targets.i686-linux-android.latest.rust-std
targets.x86_64-linux-android.latest.rust-std
])
rust-analyzer
android_sdk
jdk
];
libraries = with pkgs; [
gtk3
libsoup_3
webkitgtk_4_1
cairo
gdk-pixbuf
glib
dbus
openssl_3
librsvg
];
in {
devShell = pkgs.mkShell {
buildInputs = packages ++ libraries;
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath libraries}:$LD_LIBRARY_PATH";
XDG_DATA_DIRS = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS";
ANDROID_HOME = "${android_sdk}/libexec/android-sdk";
NDK_HOME = "${android_sdk}/libexec/android-sdk/ndk/26.3.11579264";
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${android_sdk}/libexec/android-sdk/build-tools/34.0.0/aapt2";
};
});
}
@janKeli
Copy link
Author

janKeli commented Aug 10, 2024

Notes

  • You don't have to have either rust, node or android_studio on your system.
  • By using this you agree to the android SDK license.

@janKeli
Copy link
Author

janKeli commented Aug 10, 2024

Usage

nix develop
npm create tauri-app@latest -- --rc # and follow its instructions

@stelcodes
Copy link

stelcodes commented Oct 10, 2024

Thank you! I'm on MacOS and had to make this change:

      libraries = with pkgs; [
        gtk3
        libsoup_3
        cairo
        gdk-pixbuf
        glib
        dbus
        openssl_3
        librsvg
      ] ++ pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [
        webkitgtk_4_1
      ];

because webkitgtk is broken on MacOS.

EDIT: Actually this is probably a better reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment