Skip to content

Packaging

Terminal window
nix build . # result/bin/marbble, result/share/applications/Marbble.desktop, icons
pnpm tauri build # native bundles for the current platform (deb, rpm, AppImage, NSIS, dmg, ...)
  • The Nix package (nix/package.nix) builds the frontend with npm in the sandbox, vendors the Rust crates from Cargo.lock, runs cargo tauri build, runs the engine unit tests (cargo test -p daw-engine --lib), and installs the result with a marbble symlink to the daw binary and a desktop entry in the audio categories.

  • npm dependencies come straight from package-lock.json through nixpkgs’ importNpmLock, so there’s no npm hash to refresh. Keep package-lock.json in step with package.json (npm install --package-lock-only after changing dependencies with pnpm).

  • The package source is a file set (Cargo files, crates, src-tauri, src, index.html, LICENSE, the npm and TypeScript configs), so editing docs doesn’t trigger a rebuild.

  • The bundles (and so the Nix package, in lib/Marbble) carry a copy of LICENSE, through bundle.resources in src-tauri/tauri.conf.json.

  • nix/package.nix has its own version string; scripts/set-version.sh keeps it in step (see below).