Supported Runtimes

When using the Nixpacks build mode, Apply.Build automatically detects your application's runtime based on files in your repository. If you use the Dockerfile build mode, you have full control over the runtime — see Deployments for details.

Languages and runtimes

RuntimeDetected byVersions
Clojureproject.clj or build.cljJDK 8 (default), 11, latest
COBOL.cbl filesLatest
Crystalshard.ymlLatest
C#/.NET*.csprojVia global.json or NIXPACKS_CSHARP_SDK_VERSION
Dartpubspec.yamlLatest
Denodeno.json or deno.jsoncLatest
Elixirmix.exsLatest (default), 1.17, 1.16, 1.15, 1.14, 1.13, 1.12, 1.11, 1.10, 1.9
F#*.fsprojVia global.json or NIXPACKS_CSHARP_SDK_VERSION
Gleamgleam.toml and manifest.tomlFrom manifest.toml
Gomain.go1.18–1.23 (default 1.22)
Haskellpackage.yaml and .hs filesVia Stack
Javapom.xml or gradlewJDK 8, 11, 17 (default), 19, 20, 21
LunaticCargo.toml with runner = "lunatic"Latest stable
Node.jspackage.json16, 18 (default), 20, 22, 23
PHPcomposer.json or index.php8.1, 8.2 (default), 8.3, 8.4
Pythonmain.py, requirements.txt, pyproject.toml, or Pipfile2.7, 3.8–3.13 (default 3.11)
RubyGemfileVia .ruby-version or Gemfile
RustCargo.tomlLatest stable (default), any via rust-overlay
Scalabuild.sbtJDK 8, 11, 17 (default), 19, 20, 21
SwiftPackage.swift3.1–5.8 (default 5.8)
Zigbuild.zigLatest

Static sites

Static files are served automatically when any of the following are found: a Staticfile, ./public, ./dist, ./index, or ./index.html.

Specifying a version

You can pin a runtime version using standard version files:

  • Node.js.node-version, .nvmrc, or engines field in package.json
  • Python.python-version, runtime.txt, or .tool-versions
  • Gogo directive in go.mod
  • Ruby.ruby-version or Gemfile
  • Swift.swift-version or swift-tools-version in Package.swift
  • Elixir.elixir-version or mix.exs

See the Nixpacks docs for full details on each provider.