
Cargo 1.84.0 broke fetchCargoTarball hashes, so fetchCargoTarball is not long for this world. Tell people to use fetchCargoVendor, which Nixpkgs is currently in the process of switching to across the tree.
98 lines
2.1 KiB
Markdown
98 lines
2.1 KiB
Markdown
# cargo-tauri.hook {#tauri-hook}
|
|
|
|
[Tauri](https://tauri.app/) is a framework for building smaller, faster, and
|
|
more secure desktop applications with a web frontend.
|
|
|
|
In Nixpkgs, `cargo-tauri.hook` overrides the default build and install phases.
|
|
|
|
## Example code snippet {#tauri-hook-example-code-snippet}
|
|
|
|
```nix
|
|
{
|
|
lib,
|
|
stdenv,
|
|
rustPlatform,
|
|
fetchNpmDeps,
|
|
cargo-tauri,
|
|
glib-networking,
|
|
nodejs,
|
|
npmHooks,
|
|
openssl,
|
|
pkg-config,
|
|
webkitgtk_4_1,
|
|
wrapGAppsHook4,
|
|
}:
|
|
|
|
rustPlatform.buildRustPackage rec {
|
|
# . . .
|
|
|
|
useFetchCargoVendor = true;
|
|
cargoHash = "...";
|
|
|
|
# Assuming our app's frontend uses `npm` as a package manager
|
|
npmDeps = fetchNpmDeps {
|
|
name = "${pname}-npm-deps-${version}";
|
|
inherit src;
|
|
hash = "...";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
# Pull in our main hook
|
|
cargo-tauri.hook
|
|
|
|
# Setup npm
|
|
nodejs
|
|
npmHooks.npmConfigHook
|
|
|
|
# Make sure we can find our libraries
|
|
pkg-config
|
|
wrapGAppsHook4
|
|
];
|
|
|
|
buildInputs =
|
|
[ openssl ]
|
|
++ lib.optionals stdenv.hostPlatform.isLinux [
|
|
glib-networking # Most Tauri apps need networking
|
|
webkitgtk_4_1
|
|
];
|
|
|
|
# Set our Tauri source directory
|
|
cargoRoot = "src-tauri";
|
|
# And make sure we build there too
|
|
buildAndTestSubdir = cargoRoot;
|
|
|
|
# . . .
|
|
}
|
|
```
|
|
|
|
## Variables controlling cargo-tauri {#tauri-hook-variables-controlling}
|
|
|
|
### Tauri Exclusive Variables {#tauri-hook-exclusive-variables}
|
|
|
|
#### `tauriBuildFlags` {#tauri-build-flags}
|
|
|
|
Controls the flags passed to `cargo tauri build`.
|
|
|
|
#### `tauriBundleType` {#tauri-bundle-type}
|
|
|
|
The [bundle type](https://tauri.app/v1/guides/building/) to build.
|
|
|
|
#### `dontTauriBuild` {#dont-tauri-build}
|
|
|
|
Disables using `tauriBuildHook`.
|
|
|
|
#### `dontTauriInstall` {#dont-tauri-install}
|
|
|
|
Disables using `tauriInstallPostBuildHook` and `tauriInstallHook`.
|
|
|
|
### Honored Variables {#tauri-hook-honored-variables}
|
|
|
|
Along with those found in [](#compiling-rust-applications-with-cargo), the
|
|
following variables used by `cargoBuildHook` and `cargoInstallHook` are honored
|
|
by the cargo-tauri setup hook.
|
|
|
|
- `buildAndTestSubdir`
|
|
- `cargoBuildType`
|
|
- `cargoBuildNoDefaultFeatures`
|
|
- `cargoBuildFeatures`
|