Netsuke requires Ninja on PATH. A source build
also requires the dated Rust nightly toolchain pinned in rust-toolchain.toml
because Netsuke builds with the Polonius borrow checker (-Zpolonius=next).
Inside a checkout both settings are inherited automatically: rustup installs
the pinned toolchain, and the repository's .cargo/config.toml supplies
RUSTFLAGS=-Zpolonius=next. Neither has to be passed on the command line.
Netsuke v0.1.0-beta1 is available from crates.io. Where
cargo binstall is available,
prefer it: it fetches a prebuilt release binary and avoids the toolchain
requirement below.
cargo binstall netsuke-build
Building from the registry instead runs outside a repository checkout, so neither the pinned toolchain nor the Polonius flag is picked up automatically; supply both explicitly:
rustup toolchain install nightly-2026-06-25
RUSTFLAGS=-Zpolonius=next cargo +nightly-2026-06-25 install netsuke-build
Pre-built installers are available from the v0.1.0-beta1 GitHub release:
| Platform | Architectures | Packages |
|---|---|---|
| Linux | x86-64 (amd64) and Arm64 (arm64) |
Debian (.deb) and RPM (.rpm) |
| macOS | Intel x86-64 and Apple silicon Arm64 | Installer package (.pkg) |
| Windows | x64 and Arm64 | Windows Installer (.msi) |
Download the package for the host architecture, then install it with the
platform tool. Replace PACKAGE with the downloaded filename:
- Debian or Ubuntu:
sudo apt install ./PACKAGE.deb - Fedora, Rocky Linux, or another RPM-based distribution:
sudo dnf install ./PACKAGE.rpm - macOS:
sudo installer -pkg ./PACKAGE.pkg -target / - Windows:
msiexec.exe /i PACKAGE.msi
The Linux packages install the binary under /usr/bin, add the netsuke.1
manual page and declare ninja-build as a dependency. The macOS packages
install the binary under /usr/local/bin, along with the manual page and
licence. Ninja must be installed separately when using the macOS or Windows
installer. The Windows MSI installs to C:\Program Files\netsuke and does not
update PATH.
SHA-256 checksum files accompany standalone binaries and staged help and licence files. Installer packages do not have checksum sidecars in v0.1.0-beta1. Windows PowerShell help files are published beside each MSI as sidecar artefacts rather than embedded in the installer.
Install the current source checkout with Cargo. The clone supplies both the
pinned nightly toolchain and RUSTFLAGS=-Zpolonius=next, so neither is given
here — unlike the registry install above, which runs outside a checkout:
git clone https://github.com/leynos/netsuke.git
cd netsuke
cargo install --path .
Complete Windows setup
The MSI does not add its installation directory to PATH. Add it to the
current user's persistent PATH, update the current PowerShell session, then
verify that the command resolves:
$netsukeDirectory = Join-Path $env:ProgramFiles 'netsuke'
$userPath = [Environment]::GetEnvironmentVariable('Path', 'User')
$userEntries = @($userPath -split ';' | Where-Object { $_ })
if ($userEntries -notcontains $netsukeDirectory) {
$newUserPath = (($userEntries + $netsukeDirectory) -join ';')
[Environment]::SetEnvironmentVariable('Path', $newUserPath, 'User')
}
if (($env:Path -split ';') -notcontains $netsukeDirectory) {
$env:Path = "$env:Path;$netsukeDirectory"
}
netsuke --version
The release publishes PowerShell help separately for each Windows architecture.
The following script downloads the matching module script, manifest, Microsoft
Assistance Markup Language (MAML) help, and about-help file. It then restores
the versioned module layout under the current user's standard PowerShell module
directory and imports the module. Set $architecture to match the downloaded
MSI:
$architecture = 'amd64' # Use 'arm64' for the Arm64 MSI.
$releaseUri = 'https://api.github.com/repos/leynos/netsuke/releases/tags/v0.1.0-beta1'
$release = Invoke-RestMethod -Uri $releaseUri
$documents = [Environment]::GetFolderPath('MyDocuments')
$editionDirectory = if ($PSVersionTable.PSEdition -eq 'Desktop') {
'WindowsPowerShell'
} else {
'PowerShell'
}
$moduleRoot = Join-Path $documents "$editionDirectory\Modules"
$moduleDirectory = Join-Path $moduleRoot 'Netsuke\0.1.0-beta1'
$helpDirectory = Join-Path $moduleDirectory 'en-US'
New-Item -ItemType Directory -Path $helpDirectory -Force | Out-Null
$patterns = @{
'Netsuke.psm1' = '*Netsuke.psm1'
'Netsuke.psd1' = '*Netsuke.psd1'
'Netsuke-help.xml' = '*en-US-Netsuke-help.xml'
'about_Netsuke.help.txt' = '*en-US-about_Netsuke.help.txt'
}
$localizedFiles = @('Netsuke-help.xml', 'about_Netsuke.help.txt')
foreach ($fileName in $patterns.Keys) {
$pattern = "*windows-$architecture*$($patterns[$fileName])"
$asset = $release.assets | Where-Object { $_.name -like $pattern } | Select-Object -First 1
if ($null -eq $asset) {
throw "Release asset not found: $pattern"
}
$destinationDirectory = if ($localizedFiles -contains $fileName) {
$helpDirectory
} else {
$moduleDirectory
}
$destination = Join-Path $destinationDirectory $fileName
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $destination -UseBasicParsing
}
Import-Module (Join-Path $moduleDirectory 'Netsuke.psd1') -Force
The versioned directory is discoverable in later PowerShell sessions. After the import, inspect the external help with:
Get-Help Netsuke -Full