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-productions.s3.amazonaws.com/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: [email protected]