Nixpacks
Nixpacks is an open-source build tool that converts application source code into OCI-compliant Docker images by combining language-specific providers, Nix packages, and Buildkit. Originally created by Railway as the build system powering the Railway platform, Nixpacks inspects a project's source, selects one or more providers (Node, Python, Ruby, Go, Java, Rust, PHP, Elixir, Deno, Crystal, .NET, Swift, Scala, Dart, Haskell, Gleam, Zig, Clojure, Lunatic, Cobol, Scheme, F#, Staticfile, and more), and produces a reproducible build plan composed of setup, install, build, and start phases. The plan declares Nix packages, apt packages, environment variables, commands, and cache directories, and can be customized via a `nixpacks.toml` file, CLI flags, or environment variables. Compared with Cloud Native Buildpacks, Nixpacks uses Nix as its package layer, ships as a single Rust CLI, and outputs a plain Dockerfile/OCI image without requiring a buildpack lifecycle. The project is MIT licensed and currently in maintenance mode; Railway recommends Railpack as the actively developed successor.
5 APIs
0 Features
Build ToolBuildpacksDockerOCINixNixpkgsContainer ImageApplication PackagingRailwayOpen SourceRustDevOpsPlatform EngineeringPaaS
aid: nixpacks
name: Nixpacks
description: Nixpacks is an open-source build tool that converts application source code into OCI-compliant Docker images
by combining language-specific providers, Nix packages, and Buildkit. Originally created by Railway as the build system
powering the Railway platform, Nixpacks inspects a project's source, selects one or more providers (Node, Python, Ruby,
Go, Java, Rust, PHP, Elixir, Deno, Crystal, .NET, Swift, Scala, Dart, Haskell, Gleam, Zig, Clojure, Lunatic, Cobol, Scheme,
F#, Staticfile, and more), and produces a reproducible build plan composed of setup, install, build, and start phases. The
plan declares Nix packages, apt packages, environment variables, commands, and cache directories, and can be customized
via a `nixpacks.toml` file, CLI flags, or environment variables. Compared with Cloud Native Buildpacks, Nixpacks uses Nix
as its package layer, ships as a single Rust CLI, and outputs a plain Dockerfile/OCI image without requiring a buildpack
lifecycle. The project is MIT licensed and currently in maintenance mode; Railway recommends Railpack as the actively developed
successor.
url: https://raw.githubusercontent.com/api-evangelist/nixpacks/refs/heads/main/apis.yml
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg
type: Index
position: Consuming
access: 3rd-Party
tags:
- Build Tool
- Buildpacks
- Docker
- OCI
- Nix
- Nixpkgs
- Container Image
- Application Packaging
- Railway
- Open Source
- Rust
- DevOps
- Platform Engineering
- PaaS
created: '2026-05-24'
modified: '2026-05-24'
specificationVersion: '0.20'
apis:
- aid: nixpacks:cli
name: Nixpacks CLI
description: The Nixpacks command-line interface is the primary interface for generating build plans and producing Docker
images from application source. Core commands include `nixpacks plan` (emit the JSON build plan that would be used), `nixpacks
build` (produce an OCI image via Docker BuildKit), and `nixpacks detect` (identify which providers match the source directory).
The CLI accepts inline overrides for install, build, and start commands, Nix and apt packages, environment variables,
the base build image, and a separate runtime image, and is distributed as a single Rust binary via Homebrew, install script,
Docker image, and GitHub releases.
humanURL: https://nixpacks.com/docs/cli
tags:
- CLI
- Build
- Plan
- Detect
properties:
- type: Documentation
url: https://nixpacks.com/docs/cli
- type: GettingStarted
url: https://nixpacks.com/docs/getting-started
- type: SourceCode
url: https://github.com/railwayapp/nixpacks
- type: Install
url: https://nixpacks.com/docs/install
- aid: nixpacks:build-plan
name: Nixpacks Build Plan
description: The Nixpacks build plan is the JSON representation of how a source directory will be turned into a container
image. A plan declares the list of providers used, top-level `variables`, `staticAssets`, `buildImage`, and an ordered
set of phases (`setup`, `install`, `build`, plus any provider- or user-defined phases) along with a `start` phase. Each
phase carries `cmds`, `nixPkgs`, `nixLibs`, `nixOverlays`, `nixpkgsArchive`, `aptPkgs`, `dependsOn`, `cacheDirectories`,
`onlyIncludeFiles`, and `paths`. Plans can be saved and replayed via `nixpacks build --plan plan.json` to guarantee reproducible
image builds.
humanURL: https://nixpacks.com/docs/how-it-works
tags:
- Build Plan
- JSON
- Phases
- Reproducible Builds
properties:
- type: Documentation
url: https://nixpacks.com/docs/how-it-works
- type: Reference
url: https://nixpacks.com/docs/configuration/file
- aid: nixpacks:configuration-file
name: Nixpacks Configuration File (nixpacks.toml)
description: Projects can override or extend the auto-detected build plan by committing a `nixpacks.toml` (or `nixpacks.json`)
file at the root of the repository. The configuration file mirrors the build-plan structure with top-level `providers`,
`buildImage`, `variables`, and `staticAssets`, a `[phases.<name>]` table for each phase carrying `cmds`, `nixPkgs`, `nixLibs`,
`aptPkgs`, `dependsOn`, `cacheDirectories`, `onlyIncludeFiles`, and `paths`, and a `[start]` table for `cmd`, `runImage`,
and runtime-only file inclusion. The `"..."` token can be used inside array fields to extend rather than replace provider-supplied
values.
humanURL: https://nixpacks.com/docs/configuration/file
tags:
- Configuration
- TOML
- Phases
- Customization
properties:
- type: Documentation
url: https://nixpacks.com/docs/configuration/file
- type: Reference
url: https://nixpacks.com/docs/configuration/environment
- aid: nixpacks:providers
name: Nixpacks Language Providers
description: Providers are the pluggable modules that detect a language or framework in the source directory and contribute
their portion of the build plan. Nixpacks ships with providers for Node (npm, pnpm, Yarn, Bun), Python (pip, Poetry, PDM,
uv), Ruby, Go, Java (Gradle, Maven), Rust, PHP, Elixir, Deno, Crystal, C#/.NET, Swift, Scala, Dart, Haskell, Gleam, Zig,
Clojure, Lunatic, Cobol, Scheme, F#, and a Staticfile provider for purely static sites. Each provider declares the Nix
packages, install commands, build commands, and default start command appropriate to its ecosystem; multiple providers
can compose in a single image (for example, a Node frontend with a Python backend).
humanURL: https://nixpacks.com/docs/providers
tags:
- Providers
- Detection
- Languages
- Frameworks
properties:
- type: Documentation
url: https://nixpacks.com/docs/providers
- type: SourceCode
url: https://github.com/railwayapp/nixpacks/tree/main/src/providers
- aid: nixpacks:github-action
name: Nixpacks GitHub Action
description: The official `iloveitaly/github-action-nixpacks` GitHub Action wraps the Nixpacks CLI so that CI pipelines
can build and optionally push OCI images directly from a workflow without installing Nixpacks manually. The action accepts
the same overrides as the CLI (image tags, platform, push target, plan path, environment variables) and is commonly paired
with Docker login actions to publish images to GitHub Container Registry, Docker Hub, or any OCI-compliant registry.
humanURL: https://github.com/iloveitaly/github-action-nixpacks
tags:
- GitHub Actions
- CI/CD
- Build
- Container Image
properties:
- type: SourceCode
url: https://github.com/iloveitaly/github-action-nixpacks
- type: Documentation
url: https://nixpacks.com/docs/guides/github-actions
common:
- type: Website
name: Nixpacks Website
description: Official Nixpacks marketing and documentation site.
url: https://nixpacks.com
- type: Documentation
name: Nixpacks Documentation
description: Full Nixpacks documentation covering install, CLI, providers, configuration, and how it works.
url: https://nixpacks.com/docs
- type: GettingStarted
name: Nixpacks Getting Started
description: Quickstart for installing Nixpacks and building your first image from a source directory.
url: https://nixpacks.com/docs/getting-started
- type: Install
name: Nixpacks Install Guide
description: Installation instructions across Homebrew, the install script, Docker image, and GitHub release binaries.
url: https://nixpacks.com/docs/install
- type: GitHubOrganization
name: Railway GitHub Organization
description: GitHub organization that owns Nixpacks and the broader Railway open-source ecosystem.
url: https://github.com/railwayapp
- type: GitHubRepository
name: Nixpacks GitHub Repository
description: Primary source repository for the Nixpacks Rust CLI, language providers, and tests.
url: https://github.com/railwayapp/nixpacks
- type: SourceCode
name: Nixpacks Source
description: Rust source code for the Nixpacks CLI, build planner, and language providers.
url: https://github.com/railwayapp/nixpacks
- type: License
name: MIT License
description: Nixpacks is distributed under the MIT License.
url: https://github.com/railwayapp/nixpacks/blob/main/LICENSE
- type: Issues
name: Nixpacks Issues
description: GitHub issue tracker for Nixpacks bug reports and feature requests.
url: https://github.com/railwayapp/nixpacks/issues
- type: ChangeLog
name: Nixpacks Releases
description: Release notes and version history for the Nixpacks CLI.
url: https://github.com/railwayapp/nixpacks/releases
- type: ContainerImage
name: Nixpacks Docker Image
description: Official Docker image for running Nixpacks in CI and other containerized environments.
url: https://github.com/railwayapp/nixpacks/pkgs/container/nixpacks
- type: Provider
name: Railway
description: Railway, the PaaS that originated Nixpacks and uses it to build user applications.
url: https://railway.app
- type: Successor
name: Railpack
description: Railpack, Railway's actively developed successor to Nixpacks.
url: https://github.com/railwayapp/railpack
- type: Twitter
name: Railway on Twitter/X
description: Railway's social account, the primary public channel for Nixpacks announcements.
url: https://twitter.com/Railway
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com