Giter VIP home page Giter VIP logo

awesome-nix's Introduction

Awesome Nix Awesome NixOS

A curated list of the best resources in the Nix community.

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible.

Please read the contribution guidelines before contributing.

Contents

Resources

Learning

  • Building a Rust service with Nix - An in-depth blog series about creating a Rust application with Nix.
  • Explainix - Explain Nix syntax visually.
  • How to Learn Nix - It's like a Let's Play, but for obscure software documentation.
  • Nix - A One Pager - A one page introduction to the Nix language.
  • Nix from First Principles: Flake Edition - A modern crash-course to using Nix features, Flakes, and developing with Nix.
  • Nix Notes - A collection of short notes about Nix, each contributing to the same virtual machine image.
  • Nix Pills - The best way to learn, with examples.
  • Nix Shorts - A collection of short notes about how to use Nix, updated for Nix Flakes.
  • nix.dev - An opinionated guide for developers about getting things done using the Nix ecosystem.
  • NixOS & Flakes Book - An unofficial and opinionated NixOS & Flakes book for beginners.
  • NixOS Asia Tutorial Series - A series of high-level tutorials on using Nix Flakes, NixOS, home-manager, etc.
  • Tour of Nix - An online interactive tutorial on Nix language constructs.
  • Wombat's Book of Nix - A book-length introduction to Nix and flakes.
  • Zero to Nix - A flake-centric guide to Nix and its concepts created by Determinate Systems to quickly onboard beginners.

Discovery

  • Hound - Handily search across all or selected Nix-related repositories.
  • Nix Package Versions - Find all versions of a package that were available in a channel and the revision you can download it from.
  • Noogle - Nix API search engine allowing to search functions based on their types and other attributes.
  • Home Manager Option Search - Search through all 2000+ Home Manager options and read how to use them.

Installation Media

  • nixos-generators - Take a NixOS config and build multiple different images types including VirtualBox VMs, Azure images, and installation ISOs.
  • nixos-infect - Replace a running non-NixOS Linux host with NixOS.
  • nixos-up - Super easy NixOS installer that can be used from the installation ISO.
  • nix-installer - Opinonated alternative to the official Nix install scripts.
  • nix-installer-scripts - Runs the official installer but does some tweaking as well such as adding fcontext for selinux and installing nix outside of the default profile so you don't accidently uninstall it.

Channel History

  • Channel History - Get historical git commits for Nix channels.
  • Nix Infra Status - Get the age and current git commit of each Nix channel.
  • Nix Review Tools Reports - Reports showing problematic dependencies (dependencies causing the most failed builds) for major Hydra jobsets.

Deployment Tools

  • bento - A KISS deployment tool to keep your NixOS fleet (servers & workstations) up to date.
  • Colmena - A simple, stateless NixOS deployment tool modeled after NixOps and morph.
  • comin - A deployment tool to continuously pull from Git repositories.
  • deploy-rs - A simple multi-profile Nix-flake deploy tool.
  • krops - A lightweight toolkit to deploy NixOS systems, remotely or locally.
  • KubeNix - A Kubernetes resource builder using Nix.
  • KuberNix - Single-dependency Kubernetes clusters via Nix packages.
  • morph - A tool for managing existing NixOS hosts.
  • Nixery - A Docker-compatible container registry which builds images ad-hoc via Nix.
  • Nixinate - A Nix flake library to provide app outputs for managing existing NixOS hosts over SSH.
  • NixOps - The official Nix deployment tool, compatible with AWS, Hetzner, and more.
  • pushnix - Simple cli utility that pushes NixOS configuration and triggers a rebuild using ssh.
  • terraform-nixos - A set of Terraform modules designed to deploy NixOS.
  • terranix - Use Nix and the NixOS module system to write your Terraform code.

Virtualisation

  • nixos-shell - Simple headless VM configuration using Nix (similar to Vagrant).
  • extra-container - Run declarative NixOS containers from the command line.
  • microvm - NixOS-based MicroVMs.

Command-Line Tools

  • alejandra - An opinionated Nix code formatter optimized for speed and consistency.
  • comma - Quickly run any binary; wraps together nix run and nix-index.
  • deadnix - Scan Nix files for dead code.
  • devenv - A Nix-based tool for creating developer shell environments quickly and reproducibly.
  • manix - Find configuration options and function documentation for Nixpkgs, NixOS, and Home Manager.
  • nixfmt - A formatter for Nix code, intended to easily apply a uniform style.
  • nixpkgs-fmt - Nix code formatter for nixpkgs.
  • nixpkgs-hammering - An opinionated linter for Nixpkgs package expressions.
  • nix-alien - Run unpatched binaries on Nix/NixOS easily.
  • nix-diff - A tool to explain why two Nix derivations differ.
  • nix-du - Visualise which gc-roots to delete to free some space in your Nix store.
  • nix-index - Quickly locate Nix packages with specific files.
  • nix-init - Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more.
  • nix-melt - A ranger-like flake.lock viewer.
  • nix-output-monitor - A tool to produce useful graphs and statistics when building derivations.
  • nix-prefetch - A universal tool for updating source checksums.
  • nix-tree - Interactively browse the dependency graph of Nix derivations.
  • nurl - Generate Nix fetcher calls from repository URLs.
  • nvd - Diff package versions between two store paths; it's especially useful for comparing NixOS generations on rebuild.
  • statix - A linter/fixer to check for and fix antipatterns in Nix code.

Development

  • attic - Multi-tenant Nix Binary Cache.
  • Arion - Run docker-compose with help from Nix/NixOS.
  • cached-nix-shell - A nix-shell replacement that uses caching to open subsequent shells quickly.
  • Cachix - Hosted binary cache service; free for open-source projects.
  • Devbox - Instant, portable, and predictable development environments.
  • devshell - mkShell with extra bits and a toml config option to be able to onboard non-nix users.
  • dream2nix - A framework for automatically converting packages from other build systems to Nix.
  • flake.parts - Minimal Nix modules framework for Flakes: split your flakes into modules and get things done with community modules.
  • flake-utils - Pure Nix flake utility functions to help with writing flakes.
  • flake-utils-plus - A lightweight Nix library flake for painless NixOS flake configuration.
  • flakelight - A modular flake framework aiming to minimize boilerplate.
  • flox - Manage and share development environments, package projects, and publish artifacts anywhere.
  • gitignore.nix - The most feature-complete and easy-to-use .gitignore integration.
  • haumea - Filesystem-based module system for the Nix language similar to traditional programming languages, with support for file hierarchy and visibility.
  • lorri - A much better nix-shell for development that augments direnv.
  • namaka - Snapshot testing for Nix based on haumea.
  • nil - NIx Language server, an incremental analysis assistent for writing in Nix.
  • niv - Easy dependency management for Nix projects with package pinning.
  • nix-direnv - A fast loader and flake-compliant configuration for the direnv environment auto-loader.
  • nix-health - A program to check the health of your Nix install. Furthermore, individual projects can configure their own health checks in their flake.nix.
  • nix-update - Update versions/source hashes of nix packages.
  • nixd - Nix language server, based on Nix libraries.
  • nixpkgs-review - The best tool to verify that a pull-request in Nixpkgs is building properly.
  • pre-commit-hooks.nix - Run linters/formatters at commit time and on your CI.
  • rnix-lsp - A syntax-checking language server for Nix.
  • robotnix - A declarative and reproducible build system for Android (AOSP) images.
  • services-flake - A NixOS-like service configuration framework for Nix flakes.
  • Snowfall Lib - A library that makes it easy to manage your Nix flake by imposing an opinionated file structure.
  • templates - Project templates for many languages using Nix flakes.

DevOps

  • Makes - A Nix-based CI/CD pipeline framework for building, testing, and releasing projects in any language, from anywhere.
  • Standard - An opinionated Nix Flakes framework to keep Nix code in large projects organized, accompanied by a friendly CLI/TUI optized for DevOps scenarios.

Programming Languages

Arduino

  • nixduino - Nix-based tool to help build Arduino sketches.

Clojure

  • clj-nix - Nix helper functions for Clojure projects.

Crystal

  • crystal2nix - Convert shard.lock into Nix expressions.

Elm

  • elm2nix - Convert elm.json into Nix expressions.

Haskell

  • cabal2nix - Converts a Cabal file into a Nix build expression.
  • haskell-flake - A flake-parts Nix module for Haskell development.
  • haskell.nix - Alternative Haskell Infrastructure for Nixpkgs.
  • nix-haskell-mode - Automatic Haskell setup in Emacs.
  • nixkell - A Haskell project template using Nix and direnv.

Node.js

  • 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.

OCaml

  • opam2nix - Generate Nix expressions from opam packages.

PHP

  • composer2nix - Generate Nix expressions to build composer packages.
  • composer-plugin-nixify - Composer plugin to help with Nix packaging.
  • composition-c4 - Support for building composer packages from a composer.lock (using IFD).
  • nix-phps - Flake containing old and unmaintained PHP versions (intended for CI use).
  • nix-shell - Nix shells for PHP development.

PureScript

  • Easy PureScript Nix - A project to easily use PureScript and other tools with Nix.
  • purs-nix - CLI and library combo designed for managing PureScript projects using Nix. It provides a Nix API that can be used within your projects, as well as a command-line interface for managing your development process.

Python

  • poetry2nix - Build Python packages directly from Poetry's poetry.lock. No conversion step needed.

Ruby

  • Bundix - Generates a Nix expression for your Bundler-managed application.
  • ruby-nix - Generates reproducible ruby/bundler app environment with Nix.

Rust

  • cargo2nix - Granular caching, development shell, Nix & Rust integration.
  • crane - A Nix library for building Cargo projects with incremental artifact caching.
  • fenix - Rust toolchains and Rust analyzer nightly for nix.
  • naersk - Build Rust packages directly from Cargo.lock. No conversion step needed.
  • nix-cargo-integration - A library that allows easy and effortless integration for Cargo projects.
  • nixpkgs-mozilla - Mozilla's overlay with Rust toolchains and Firefox.
  • rust-nix-templater - Generates Nix build and development files for Rust projects.
  • rust-overlay - Pure and reproducible nix overlay of binary distributed Rust toolchains.

Scala

Zig

  • zon2nix - Convert the dependencies in build.zig.zon to a Nix expression.

NixOS Modules

  • base16.nix - Flake way to theme programs in base16 colorschemes, mustache template support included.
  • Home Manager - Manage your user configuration just like NixOS.
  • musnix - Do real-time audio work in NixOS.
  • nixcloud-webservices - A Nixpkgs extension with a focus on ease of deployment of web-related technologies.
  • NixVim - A NeoVim distribution built with Nix modules and Nixpkgs.
  • Simple Nixos Mailserver - A complete mailserver, managed with NixOS modules.
  • Stylix - System-wide colorscheming and typography for NixOS.
  • nix-bitcoin - Modules and packages for Bitcoin nodes with higher-layer protocols with an emphasis on security.
  • nix-topology - Generate infrastructure and network diagrams directly from your NixOS configuration.

NixOS Configuration Editors

Desktop apps

Webinterface

  • MyNixOS - Graphical editor for Nix flakes. Create and manage configurations and modules for NixOS and Nix home-manager. Rather a Nix generator than a Nix editor, because it does not allow to import Nix files.

Overlays

  • awesome-nix-hpc - High Performance Computing package sets.
  • chaotic-nyx - Daily bumped bleeding edge packages like mesa_git & others that aren't yet in Nixpkgs. Created by the makers of Chaotic-AUR.
  • nix-darwin - Manage macOS configuration just like on NixOS.
  • nixpkgs-firefox-darwin - Automatically updated Firefox binary packages for macOS.
  • nixpkgs-wayland - Bleeding-edge Wayland packages.
  • NUR - Nix User Repositories. The mother of all overlays, allowing access to user repositories and installing packages via attributes.
  • System Manager - A non-NixOS Linux system configuration tool built on Nix.

Community

awesome-nix's People

Contributors

06kellyjac avatar accelbread avatar adisbladis avatar alper avatar chrissound avatar cyntheticfox avatar dependabot[bot] avatar domenkozar avatar dywedir avatar erikarvstedt avatar figsoda avatar freuk avatar fricklerhandwerk avatar iogamaster avatar j4m3s-s avatar jtojnar avatar kilianar avatar kubukoz avatar loicreynier avatar m0n4d1 avatar mic92 avatar noteed avatar pinage404 avatar shivaraj-bh avatar srgom avatar supersandro2000 avatar tazjin avatar utdemir avatar yusdacra avatar zimbatm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-nix's Issues

Failing URLs

This is an Issue to track failing URLs with comments generated by the Lychee link checker.

Add "Official" Section

I'm considering adding an "Official" section before the "Resources" one, kind of like that on the Node.js Awesome list. This would probably include just the NixOS website, a link to the "learn" page as "Documentation", a link to Nix and/or Nixpkgs, and maybe a link to the Discourse?

Unsure as to what would be best included in such, and what can be left out. I know at a maximum it would be:

  • Website
  • Documentation
  • Nix Repository
  • Nixpkgs Repository
  • NixOps Repository
  • NixOS Discourse
  • NixOS FreeNode
  • NixCon

That list feels a little long to put though, so it might be better to just have:

  • Website
  • Documentation
  • Nixpkgs Repository

And keep the rest distributed into their corresponding sections.

Proposal: Create GitHub Action for Alphabetization

We have GitHub actions to enforce basic "awesome-list" style via awesome-lint and a link checker via lychee, but I currently still have to manually check every time whether a PR has the lists under subheadings in alphabetical order.

It might require a bit of time and me actually bothering to learn TypeScript/Node.js, but I think an alphabetization checker would be valuable.

summaries should should be factual

many summaries currently contain either value judgement ("simple", "awesome", "quickly", "better") or nondescript statements ("Beat your package expressions into a shape").

that does not help readers figure out how and why a recommendation may be useful to them.

summaries should consistently and factually state for every resource

  • what it is for
  • why it is part of this collection
  • (optional) how it differs from competing offers, trade-offs, etc.

related: #123

List of nix-config, nixos-config repos?

Hi!

I have been using NixOS for a long time and feel relatively "plugged in", yet I'm constantly finding things in other Nix users's configuration repos.

Is there interest in maintaining a list of those repos here?

Bonus, we could call out flakes-enabled repos which are somewhat hard to find now and useful for folks looking to test out flakes.

Lists are not alphabetic

The Contributing Guidelines include to "keep entries sorts alphabetically by the title", but I noticed for some sections like Development, they aren't ordered.

It's a pretty simple fix, so I can go ahead and create a PR for it when I get a moment to breathe today.

Broaden to Nix, rename project

The name of this list technically excludes some awesome stuff like nix-darwin and kubenix. GitHub handles renames quite well, so I think it's not too late!

awesome-nixos -> awesome-nix

nixkite - Nix module for buildkite pipelines

I realize this could be viewed as shameless self promotion but anyway, I've created nixkite - https://github.com/johnae/nixkite which is a Nix module for generating buildkite pipelines... a bit opinionated in that it only supports DAG pipelines (eg. the relatively new functionality on buildkite).

I'm using it myself in https://github.com/johnae/nixos-configuration (and other private repos as well).
Maybe it is worthy of including on this list? It likely doesn't have any users at the moment other than me.

Add Morph and krops

Imo these tools deserve to be listed next to nixops.

  • Morph

    Morph is a tool for managing existing NixOS hosts - basically a fancy wrapper around nix-build, nix copy, nix-env, /nix/store/.../bin/switch-to-configuration, scp and more. Morph supports updating multiple hosts in a row, and with support for health checks makes it fairly safe to do so.

  • Krops

    krops (krebs ops)
    krops is a lightweigt toolkit to deploy NixOS systems, remotely or locally.
    Some Features
    - store your secrets in password store
    - build your system remotely
    - minimal overhead (it's basically just nixos-rebuild switch!)
    - run from custom nixpkgs branch/checkout/fork

Selection doesn't work.

When attempting to select the method used with tab it only comes up with option 0 on zsh. When I try typing in another option it just says hit tab to see options. The only thing I can do is hit enter. Typing any number 0-5 does nothing but tell me to hit tab.

Clean up Formatting and Grammar

The resource descriptions could use some cleaning-up in the formatting and consistency, including ensuring consistent capitalization of Nix/NixOS/Nixpkgs, making commands into code blocks or having the "preformatted" style via backticks (a.k.a. grave symbols), and validating that list item names match the project name in capitalization and formatting.

May help with #1 in the Awesome list approval process, but is not guaranteed, and may have a lifetime shorter or longer than that issue.

I can write most of the pull requests for this, but contributions are always welcome.

I'll be using this issue to track the work.

Recategorize tools

Some of the sections (like Deployment Tools, Command-line Tools, and Development) are getting rather large. Might be worthwhile to look at other Awesome lists and see about recategorizing some of the projects.

centralize collection of resources and recommendations

there are multiple locations which overlap in serving the overview function for different topics:

proposal to increase centralization and ease curation:

  • determine a location for collections of resources on each topic
  • remove redundant information from the other locations
  • link appropriately

examples:

  1. learning Nix
  • "learning Nix" is actually learning/understanding multiple things
    • how to navigate the ecosystem
    • nix commands
    • Nix language syntax and semantics
    • builtins and pkgs.lib
    • nixpkgs patterns and idioms
    • language-specific patterns and tooling
    • NixOS modules
    • software development with Nix
    • contributing to the ecosystem
    • ...
  • as we decided to make nix.dev the official Nix learning resource, curating additional learning resources should be managed there
  • suggestion: only link to nix.dev from here
  1. communication channels

related: NixOS/nixpkgs#121403 (Bring the Haskell documentation back into nixpkgs)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.