Loading doc/hooks/index.md +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ postgresql-test-hook.section.md premake.section.md python.section.md scons.section.md tauri.section.md tetex-tex-live.section.md unzip.section.md validatePkgConfig.section.md Loading doc/hooks/tauri.section.md 0 → 100644 +108 −0 Original line number Diff line number Diff line # 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, darwin, glib-networking, libsoup, nodejs, npmHooks, openssl, pkg-config, webkitgtk, wrapGAppsHook3, }: rustPlatform.buildRustPackage rec { # . . . 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 wrapGAppsHook3 ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.isLinux [ glib-networking # Most Tauri apps need networking libsoup webkitgtk ] ++ lib.optionals stdenv.isDarwin ( with darwin.apple_sdk.frameworks; [ AppKit CoreServices Security WebKit ] ); # 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` nixos/doc/manual/release-notes/rl-2411.section.md +3 −0 Original line number Diff line number Diff line Loading @@ -591,6 +591,9 @@ - The arguments from [](#opt-services.postgresql.initdbArgs) now get shell-escaped. - `cargo-tauri.hook` was introduced to help users build [Tauri](https://tauri.app/) projects. It is meant to be used alongside `rustPlatform.buildRustPackage` and Node hooks such as `npmConfigHook`, `pnpm.configHook`, and the new `yarnConfig` - Support for *runner registration tokens* has been [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/380872) in `gitlab-runner` 15.6 and is expected to be removed in `gitlab-runner` 18.0. Configuration of existing runners should be changed to using *runner authentication tokens* by configuring Loading pkgs/applications/misc/insulator2/default.nix +13 −22 Original line number Diff line number Diff line { lib , cmake , dbus , fetchFromGitHub , fetchYarnDeps Loading @@ -13,12 +12,14 @@ , cyrus_sasl , stdenv , fixup_yarn_lock , yarn , yarnConfigHook , nodejs-slim , cargo-tauri , cargo , rustPlatform , rustc , jq , moreutils }: stdenv.mkDerivation rec { Loading @@ -32,6 +33,11 @@ stdenv.mkDerivation rec { hash = "sha256-Bi9GCQr7yox5Plc7o0svRKYi1XoK/HDGj1VbW1z4jac="; }; # Yarn *really* wants us to use corepack if this is set postPatch = '' jq 'del(.packageManager)' package.json | sponge package.json ''; yarnOfflineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; hash = "sha256-ih5NSOvYje981SkVfPHm/u2sS1B36kgxpfe9LmQaxdo="; Loading @@ -47,37 +53,22 @@ stdenv.mkDerivation rec { }; }; configurePhase = '' export HOME=$(mktemp -d) yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} fixup_yarn_lock yarn.lock yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive patchShebangs node_modules/ yarn run postinstall --offline ''; preBuild = '' yarn tauri build -b deb ''; cargoRoot = "backend/"; preInstall = '' mv backend/target/release/bundle/deb/*/data/usr/ "$out" ''; buildAndTestDir = cargoRoot; nativeBuildInputs = [ cmake pkg-config perl rustPlatform.cargoSetupHook cargo rustc cargo-tauri cargo-tauri.hook fixup_yarn_lock yarn yarnConfigHook nodejs-slim cyrus_sasl jq moreutils # for sponge ]; buildInputs = [ Loading pkgs/by-name/ca/cargo-tauri/hook.nix 0 → 100644 +56 −0 Original line number Diff line number Diff line { lib, stdenv, makeSetupHook, cargo, cargo-tauri, rust, # The subdirectory of `target/` from which to copy the build artifacts targetSubdirectory ? stdenv.hostPlatform.rust.cargoShortTarget, }: let kernelName = stdenv.hostPlatform.parsed.kernel.name; in makeSetupHook { name = "tauri-hook"; propagatedBuildInputs = [ cargo cargo-tauri ]; substitutions = { inherit targetSubdirectory; inherit (rust.envVars) rustHostPlatformSpec setEnv; # A map of the bundles used for Tauri's different supported platforms # https://github.com/tauri-apps/tauri/blob/23a912bb84d7c6088301e1ffc59adfa8a799beab/README.md#platforms defaultTauriBundleType = { darwin = "app"; linux = "deb"; } .${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook"); # $targetDir is the path to the build artifacts (i.e., `./target/release`) installScript = { darwin = '' mkdir $out mv "$targetDir"/bundle/macos $out/Applications ''; linux = '' mv "$targetDir"/bundle/deb/*/data/usr $out ''; } .${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook"); }; meta = { inherit (cargo-tauri.meta) maintainers broken; # Platforms that Tauri supports bundles for platforms = lib.platforms.darwin ++ lib.platforms.linux; }; } ./hook.sh Loading
doc/hooks/index.md +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ postgresql-test-hook.section.md premake.section.md python.section.md scons.section.md tauri.section.md tetex-tex-live.section.md unzip.section.md validatePkgConfig.section.md Loading
doc/hooks/tauri.section.md 0 → 100644 +108 −0 Original line number Diff line number Diff line # 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, darwin, glib-networking, libsoup, nodejs, npmHooks, openssl, pkg-config, webkitgtk, wrapGAppsHook3, }: rustPlatform.buildRustPackage rec { # . . . 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 wrapGAppsHook3 ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.isLinux [ glib-networking # Most Tauri apps need networking libsoup webkitgtk ] ++ lib.optionals stdenv.isDarwin ( with darwin.apple_sdk.frameworks; [ AppKit CoreServices Security WebKit ] ); # 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`
nixos/doc/manual/release-notes/rl-2411.section.md +3 −0 Original line number Diff line number Diff line Loading @@ -591,6 +591,9 @@ - The arguments from [](#opt-services.postgresql.initdbArgs) now get shell-escaped. - `cargo-tauri.hook` was introduced to help users build [Tauri](https://tauri.app/) projects. It is meant to be used alongside `rustPlatform.buildRustPackage` and Node hooks such as `npmConfigHook`, `pnpm.configHook`, and the new `yarnConfig` - Support for *runner registration tokens* has been [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/380872) in `gitlab-runner` 15.6 and is expected to be removed in `gitlab-runner` 18.0. Configuration of existing runners should be changed to using *runner authentication tokens* by configuring Loading
pkgs/applications/misc/insulator2/default.nix +13 −22 Original line number Diff line number Diff line { lib , cmake , dbus , fetchFromGitHub , fetchYarnDeps Loading @@ -13,12 +12,14 @@ , cyrus_sasl , stdenv , fixup_yarn_lock , yarn , yarnConfigHook , nodejs-slim , cargo-tauri , cargo , rustPlatform , rustc , jq , moreutils }: stdenv.mkDerivation rec { Loading @@ -32,6 +33,11 @@ stdenv.mkDerivation rec { hash = "sha256-Bi9GCQr7yox5Plc7o0svRKYi1XoK/HDGj1VbW1z4jac="; }; # Yarn *really* wants us to use corepack if this is set postPatch = '' jq 'del(.packageManager)' package.json | sponge package.json ''; yarnOfflineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; hash = "sha256-ih5NSOvYje981SkVfPHm/u2sS1B36kgxpfe9LmQaxdo="; Loading @@ -47,37 +53,22 @@ stdenv.mkDerivation rec { }; }; configurePhase = '' export HOME=$(mktemp -d) yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} fixup_yarn_lock yarn.lock yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive patchShebangs node_modules/ yarn run postinstall --offline ''; preBuild = '' yarn tauri build -b deb ''; cargoRoot = "backend/"; preInstall = '' mv backend/target/release/bundle/deb/*/data/usr/ "$out" ''; buildAndTestDir = cargoRoot; nativeBuildInputs = [ cmake pkg-config perl rustPlatform.cargoSetupHook cargo rustc cargo-tauri cargo-tauri.hook fixup_yarn_lock yarn yarnConfigHook nodejs-slim cyrus_sasl jq moreutils # for sponge ]; buildInputs = [ Loading
pkgs/by-name/ca/cargo-tauri/hook.nix 0 → 100644 +56 −0 Original line number Diff line number Diff line { lib, stdenv, makeSetupHook, cargo, cargo-tauri, rust, # The subdirectory of `target/` from which to copy the build artifacts targetSubdirectory ? stdenv.hostPlatform.rust.cargoShortTarget, }: let kernelName = stdenv.hostPlatform.parsed.kernel.name; in makeSetupHook { name = "tauri-hook"; propagatedBuildInputs = [ cargo cargo-tauri ]; substitutions = { inherit targetSubdirectory; inherit (rust.envVars) rustHostPlatformSpec setEnv; # A map of the bundles used for Tauri's different supported platforms # https://github.com/tauri-apps/tauri/blob/23a912bb84d7c6088301e1ffc59adfa8a799beab/README.md#platforms defaultTauriBundleType = { darwin = "app"; linux = "deb"; } .${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook"); # $targetDir is the path to the build artifacts (i.e., `./target/release`) installScript = { darwin = '' mkdir $out mv "$targetDir"/bundle/macos $out/Applications ''; linux = '' mv "$targetDir"/bundle/deb/*/data/usr $out ''; } .${kernelName} or (throw "${kernelName} is not supported by cargo-tauri.hook"); }; meta = { inherit (cargo-tauri.meta) maintainers broken; # Platforms that Tauri supports bundles for platforms = lib.platforms.darwin ++ lib.platforms.linux; }; } ./hook.sh