A guide on setting up your NixOS Desktop with all the essential Applications, Tools, and Games to make your experience with NixOS great! This may not be perfect guide for everyone but I feel there is at least one or more perfect solutions for New and Advanced NixOS users.
You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.
NixOS is a Linux distribution built on top of the Nix package manager. It has tools dedicated to DevOps and deployment tasks.
Nix Tour is an interactive tour that uses the actual package manager to learn you the language by example, in the browser.
Nix is a package manager and build system that parses reproducible build instructions specified in the Nix Expression Language, is a pure functional language with lazy evaluation. Nix expressions are pure functions taking dependencies as arguments and producing derivation specifying a reproducible build environment for the package. Nix stores the results of the build in unique addresses specified by a hash of the complete dependency tree, creating an immutable package store that allows for atomic upgrades, rollbacks and concurrent installation of different versions of a package, essentially eliminating dependency hell.
Nix Expression Language is a pure, lazy, functional language. Purity means that operations in the language don't have side-effects (for instance, there is no variable assignment). The language is not a full-featured, general purpose language. Its main job is to describe packages, compositions of packages, and the variability within packages.
Nixpkgs is the largest repository of Nix packages(over 80,000 packages) and NixOS modules. The repository is hosted on GitHub and maintained by the community, with official backing from the NixOS Foundation. Additionally, checkout Language-specific package helpers and Alternative Package Sets.
NixOS Packages Search is a tool for searching through NixOS packages.
NixOS Packages Search
Nix Software Center is a simple gtk4/libadwaita software center to easily install and manage nix packages.
NixOS Software Center
FlakeHub is a platform developed by Determinate Systems for discovering and publishing Nix flakes. FlakeHub provides the Nix ecosystem with a variety of new capabilities:
FlakeHub
Determinate Nix Installer is an opinionated alternative to the official Nix install scripts.
The nix-installer tool is ready to use in a number of environments:
Platform | Multi User | root only | Maturity |
---|---|---|---|
Linux (x86_64 & aarch64) | ✓ (via systemd) | ✓ | Stable |
MacOS (x86_64 & aarch64) | ✓ | Stable (See note) | |
Valve Steam Deck (SteamOS) | ✓ | Stable | |
WSL2 (x86_64 & aarch64) | ✓ (via systemd) | ✓ | Stable |
Podman Linux Containers | ✓ (via systemd) | ✓ | Stable|
|Docker Containers | |✓ | Stable|
|Linux (i686) | ✓ (via systemd) | ✓ |Unstable|
Hydra is Nix's official continuous integration and build system.
Kubenix is a Kubernetes resource builder written in Nix.
Nix-kubernetes is a Kubernetes deployment manager written in nix.
Disnix is a microservice architecture built with Nix.
Hail is a service for pull-based continuous deployment.
Morph is a NixOS deployment tool.
Nixery is a ad-hoc container images from Nix.
Home Manager is a tool to manage your user configuration just like NixOS.s.
Jovian NixOS is a set of packages and configurations for running NixOS on the Steam Deck.
NixVim is a NeoVim distribution built with Nix modules and Nixpkgs.
Simple Nixos Mailserver is a complete mailserver, managed with NixOS modules.
Nix Flake Checker is a tool from Determinate Systems that performs "health" checks on the flake.lock files in your flake-powered Nix projects. Its goal is to help your Nix projects stay on recent and supported versions of Nixpkgs.
NixOS Anywhere is a tool that let's you install NixoS everywhere via ssh on a target machine running x86_64 Linux with kexec support.
Stylix is a system-wide colorscheming and typography for NixOS.
Awesome-Nix-HPC is a High Performance Computing package sets.
Nix-darwin is a tool to manage macOS configuration just like on NixOS.
Nixpkgs-firefox-darwin is a nikpkg to automatically updated Firefox binary packages for macOS.
Nixpkgs-wayland is a bleeding-edge Wayland packages.
NUR(Nix User Repositories) is the mother of all overlays, allowing access to user repositories and installing packages via attributes.
Alejandra is a opinionated Nix code formatter optimized for speed and consistency.
Comma is a tool that quickly runs any binary; wraps together nix run
and nix-index
Colmena is a simple, stateless NixOS deployment tool modeled after NixOps and morph.
Krops is a lightweight toolkit to deploy NixOS systems, remotely or locally.
KuberNix is a single-dependency Kubernetes clusters via Nix packages.
Terraform-nixos is a set of Terraform modules designed to deploy NixOS.
Terranix is a tool to use Nix and the NixOS module system to write your Terraform code.
Arion is a configure Docker Compose with Nix modules.
Deploy-rs is a simple multi-profile Nix-flake deploy tool.
Fractalide is a reusable Reproducible Composable Software.
Nixos-shell is a simple headless VM configuration using Nix (similar to Vagrant).
Pushnix is a simple cli utility that pushes NixOS configuration and triggers a rebuild using ssh.
Musnix is a real-time audio modules for NixOS.
Nix-bundle is a package Nix attributes into single-file executables.
Extra-container is a run declarative NixOS containers from the command line. Similar to nixos-shell (chrisfarms).
Nixcloud-webservices is a set of nixpkgs extension for web-related technologies.
Mach-nix is a tool that makes it easy to create and share reproducible python environments or packages. Existing tools for python package management often suffer from reproducibility and complexity issues, requiring a multitude of tools and additional virtualization layers to work sufficiently.
Impermanence is a set of modules to help you handle persistent state on systems with ephemeral root storage.
NixOS Vagrant Plugin is a plugin that adds nix provisioning for NixOS guests to Vagrant.
Fenix is a Rust toolchains and Rust analyzer nightly for nix.
NixOS-WSL is a minimal root filesystem for running NixOS on WSL. It can be used with DistroLauncher as install.tar.gz
or as input to wsl --import --version 2
.
Nix-bitcoin is a set of NixOS modules to install a bitcoin node with emphasis on security.
Nixpkgs-review is a review nixpkgs pull requests.
Nix-update is a swiss army knife for updating nix packages.
Nox is a set of tools to make Nix easier to use.
Nix-diff is a tool to compare Nix derivations.
Niff is a tool to compare two Nix expressions to determine what attributes changes.
Nix-upgrade-scripts is a set of tools for Nixpkgs maintainers to upgrade packages.
Nixops-manager is a NixOps wrapper for Git repositories.
Narfuse is a FUSE filesystem for mounting Nix archive (NAR) files as a virtual Nix store.
Nix-visualize is a tool to visualize the dependencies of a given package.
Home-manager is a system for managing a user environment using Nix.
NixGl is a wrapper to run OpenGL applications outside of NixOS.
Nixfmt is a formatter for Nix code.
Nix-index is a tool that quickly locate Nix packages with specific files.
Nix-prefetch is a universal tool for updating source checksums.
Nix-tree is a tool that let's you interactively browse the dependency graph of Nix derivations.
Statix is a linter/fixer to check for and fix antipatterns in Nix code.
Cached-nix-shell is a nix-shell
replacement that uses caching to open subsequent shells quickly.
Cachix is a hosted binary cache service; free for open-source projects.
Devshell is a mkShell
with extra bits and a toml config option to be able to onboard non-nix users.
Flake-utils - Pure Nix flake utility functions to help with writing flakes.
Gitignore.nix - The most feature-complete and easy-to-use .gitignore
integration.
Lorri is a much better nix-shell
for development that augments direnv.
Makes is a Nix-based CI/CD pipeline framework for building, testing, and releasing projects in any language, from anywhere.
Niv is a easy dependency management for Nix projects with package pinning.
Nix-direnv is a fast loader and flake-compliant configuration for the direnv environment auto-loader.
Nixpkgs-review is the best tool to verify that a pull-request in Nixpkgs is building properly.
Pre-commit-hooks.nix is a tool to run linters/formatters at commit time and on your CI.
Robotnix is a declarative and reproducible build system for Android (AOSP) images.
Nixpkgs-hammering is a nixpkg to beat your package expressions into a shape.
Nix-alien is a tool to run unpatched binaries on Nix/NixOS easily.
Disko is a declarative disk partitioning tool using Nix.
NixOS on WSL is a minimal root filesystem for running NixOS on WSL. It can be used with DistroLauncher as install.tar.gz
or as input to wsl --import --version 2
.
Appvm is a simple application VMs (hypervisor-based sandbox) based on Nix package manager. It uses one read-only /nix directory for all appvms. So creating a new appvm (but not first) is just about one minute.
Deadnix is a tool that scan .nix
files for dead code (unused variable bindings).
nix2container isa tool that provides an efficient container development workflow with images built by Nix: it doesn't write tarballs to the Nix store and allows to skip already pushed layers (without having to rebuild them).
nixos-mailserver is a complete and Simple Nixos Mailserver.
NixOS Desktop with the new Calamares Installer
NixOS with the Plasma Desktop
ccls is a C/C++/Objective-C language server.
Mach-nix is a tool to create highly reproducible python environments.
Poetry2nix is a tool to build Python packages directly from Poetry's poetry.lock
. No conversion step needed.
Pypi2nix is a tool to generate Nix expressions for Python packages.
Bundix is a tool that generates a Nix expression for your Bundler-managed application.
Fenix is a Rust toolchains and Rust analyzer nightly for nix.
Naersk is a build to Rust packages directly from Cargo.lock
. No conversion step needed.
Nix-cargo-integration is a library that allows easy and effortless integration for Cargo projects.
Nixpkgs-mozilla is Mozilla's overlay with Rust toolchains and Firefox.
Rust-nix-templater is a tool that generates Nix build and development files for Rust projects.
Rust-overlay is a pure and reproducible nix overlay of binary distributed Rust toolchains.
Sbtix isa tool that generates a Nix definition that represents your SBT project's dependencies. It then uses this to build a Maven repo containing the stuff your project needs, and feeds it back to your SBT build.
Sbt-derivation is a mkDerivation for sbt, similar to buildGoModule.
Sbt-nix.g8 is a giter8 template for new Scala projects with Nix support.
Clj-nix is Nix helpers for Clojure projects.
Clj2nix is a tool that converts deps.edn to a nix expression.
Clojure-nix-locker is a simple and flexible tool to build clojure projects with Nix.
Cabal2nix is a tool that converts a Cabal file into a Nix build expression.
Haskell.nix is an alternative Haskell Infrastructure for Nixpkgs.
Nix-haskell-mode is an automatic Haskell setup in Emacs.
Nixkell is a Haskell project template using Nix and direnv.
Stack2nix is a tool to generate nix expressions for Haskell projects.
Napalm - Support for building npm packages in Nix with a lightweight npm registry.
Node2nix - Generate Nix expression from a package.json
(or package-lock.json
) (to be stored as files).
Npmlock2nix - Generate Nix expressions from a package-lock.json
(in-memory), primarily for web projects.
Yarn2nix - Generate Nix expressions from a yarn.lock
file.
Composer2nix is a tool to generate Nix expressions to build composer packages.
Composer-plugin-nixify is a composer plugin to help with Nix packaging.
Composition-c4 is support for building composer packages from a composer.lock
(using IFD).
Nix-phps is a Flake containing old and unmaintained PHP versions (intended for CI use).
Nix-shell is a Nix shells for PHP development.
mvn2nix is a tool to easily package your Maven Java application with the Nix package manager.
nixduino is a Nix-based tool to help build Arduino sketches.