Packaging
nix build . # result/bin/marbble, result/share/applications/Marbble.desktop, iconspnpm 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 fromCargo.lock, runscargo tauri build, runs the engine unit tests (cargo test -p daw-engine --lib), and installs the result with amarbblesymlink to thedawbinary and a desktop entry in the audio categories. -
npm dependencies come straight from
package-lock.jsonthrough nixpkgs’importNpmLock, so there’s no npm hash to refresh. Keeppackage-lock.jsonin step withpackage.json(npm install --package-lock-onlyafter 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 ofLICENSE, throughbundle.resourcesinsrc-tauri/tauri.conf.json. -
nix/package.nixhas its ownversionstring;scripts/set-version.shkeeps it in step (see below).