---
title: "Nixpacks, Better Help, Improved Service Settings"
date: 2022-04-01T14:00:00.000+00:00
number: 0075
url: https://railway.com/changelog/2022-04-01
---

# Nixpacks, Better Help, Improved Service Settings

It is a glorious April Fool’s day and for those of us born yesterday, it is a day of delightful horrors where we realize things aren’t always what they seem. Not us though, we are a perfectly serious company with only business value to offer.

This Changelog will be a little bit on the longer side as we walk through some sticking points of the platform and what we have in store to make building and deploying your apps 100x better. No joke.

## Nixpacks: A New Buildpack Solution

**[TL;DR]*** We are working on a new reproducible build system for Railway with Rust and Nix. *[*You can checkout the repo here.*](https://github.com/railwayapp/nixpacks)* If you love to nerd out over this stuff, email us at jobs (at) railway dot app. *

Buildpacks and the resulting Docker Images solve for having a predictable outcome when it comes to deploying your application. Instead of tying your start command in a gangly script in Bash, Buildpacks attempted to make the build and deploy process as prescriptive as possible. 

But there were some limitations. An occasional upstream change on the Buildpack would cause wild differences in build behavior and it would fail. One obvious answer to fix this is to pin the version of the buildpack that we were using, but we opted against that choice to optimistically include all the security updates and support for new language versions. In addition, one of the common asks from our users was the ability to install OS level packages and customize the build command.

[Nix](https://nixos.org/) is a cross-platform package manager that emphasizes a pure deployment model paired with a snazzy functional language called the Nix Expression Language. Every artifact that comes out of a build is unique, with all packages versioned. So what if we could have a system that detected the language of a directory and built the application with a reproducible process. Enter Nixpacks. Nixpacks is the start to have a build system that is predictable, reliable, and buzzword compliant.

[Nixpacks](https://github.com/railwayapp/nixpacks) is still in active development, but at the moment it works in two phases. The first phase analyzes the source directory and generates a build plan that includes a list of Nix packages, how to install the app, and build and start commands to run. It also pins the installable [Nix packages](https://github.com/NixOS/nixpkgs) to a specific commit. This means that the app source + build plan will always produce the same image. The second phase takes the source code and build plan and generates an OCI compliant image (using Docker) that can be deployed to Railway.

[Image: Untitled]

With this multi-phase approach, we hope to solve a few problems that we see at Railway. One of the main ones is that our starters break because of an updated node version or upstream change and fail to build and deploy. With Nixpacks we can keep track of the last known git commit + build plan that was known to work and deploy that for our users guaranteeing a successful deploy every time.

Let’s level for a bit. We are grateful for the CloudNative Computing Foundation and Heroku for starting and maintaining the Heroku Buildpacks these last few years. They served as great starting point for the platform. This deserves a longer more involved blogpost but we think this is the start to radically improving the experience of building and deploying your application.

## Revamped Community Help + Discord Linking

We really enjoy using Discord to talk to our users to find out how you use the platform. Our Discord server is approaching 3,000+ members and we want to continue having conversations with all of you to figure out how to best solve for the issues you face with Railway. We now added a sticky modal in our Help channels that connect to the Help modal we shipped a few Changelogs ago.


Meanwhile, It’s been three months since we shipped the Discord Integration for Railway. In the meantime, our Support Engineer, Angelo and the Moderation team have been collectively slamming our heads on our respective keyboards to improve the community experience on Discord.

We gutted out the old integration that would take 15 minutes or so to get access to new beta features and replaced it with a new `/beta` command that detects if you have your account linked. Now, adding the Beta role results in instant access to Priority Boarding features. Shame we don’t have any now to promote. If you relink your Discord account you also get a snazzy new Linked Account role, this is a special tool that will help us later. ;)



## Improved Service Settings

The new settings page has been improved. Dangerous parts of the pane look more dangerous and it has a much better visual hierarchy. The domains tab has also been moved into the service settings and is scoped to the active environment. We can write more about it but just look at that screenshot.

[Image: Untitled]

## Improvements and Fixes

- Custom domains now properly delete when you delete a project
- Services must be upgraded to continue using the dashboard
- Fix a typo for one of our investor’s names (Sorry Calvin)
- Forward railway.app/docs to docs.
- Make sure the Proxy stays quick
- Deprecated humour