NixOS History and Our Experience - Nix, Null, Nada, Nothing

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/NixOS

Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
  • nixpkgs

    Nix Packages collection

    Nixpkgs doesn't have package lists: Most conventional package managers generally have an update method, e.g. apt update. These will fetch the latest point in a release channel and pull down metadata about available packages. Nix doesn't have this. The nix-channel --update command, actually just pulls down the entirety of the nixpkgs repo, so it's https://github.com/NixOS/nixpkgs in all of it's glory on your machine. When you do something such as nix-shell -p htop, all of the "figuring out" (evaluation of) what packages to build is done locally on your machine. Once determined, nix will follow the process described above. For "hacking on nixpkgs" this is great, because you can just git clone nixpkgs, and everything you ever need to alter nixpkgs behavior is located in a single mono repo.

  • nix-gui

    Use NixOS Without Coding

    Configuration language usage: Probably a major win for programmers, but a major negative for non-programmers. However, nix-gui has shown that there's potential for gui-based nixos configuration. And this might one day be extended to use as part of the graphical installer. https://discourse.nixos.org/t/why-is-there-no-installer-for-nixos/16644/21. Since nix can be serialized and deserialized to json, there's actually a fair amount of interoperability able to be done to manipulate nix configuration using existing libraries.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • direnv

    unclutter your .profile

    Nix can handle per-project shells nicely. Coupled with direnv, you can have your shell drop into a project ready state by just changing to the directory.

  • rfcs

    The Nix community RFCs (by tweag)

    Content-addressable-storepath Derivations (CAS): Not something that users will mostly interact with directly, but one of the "pitfalls" of nix right now is that updates to "fundamental packages" like glibc, will cause most packages to be re-built. CAS derivation may help significantly in this regards, because there may be a point in which the changes don't have meaningful impact on a given down stream dependencies (for example, a pure python package); the CAS derivation may get to a point where it can start "re-using" existing builds after it determined that the contents exactly match. More info: https://github.com/tweag/rfcs/blob/cas-rfc/rfcs/0062-content-addressed-paths.md

  • Home Manager using Nix

    Manage a user environment using Nix [[email protected]]

    There's a lot of interesting community tools too. Home-manager, which is kind of like "nixos-lite" where it's nixos modules, but at the user level. You can think of the project as "nix dotfiles". It also works on any linux distro, MacOS, and I've used it on WSL2.

  • nixops

    NixOps is a tool for deploying to NixOS machines in a network or cloud.

    Nix can also ship the nixpkgs as an oci image (e.g. docker image), vm image, iso, or if you're able to: as a nixos configuration. Tools like nixops can allow you to deploy many machines and have their behavior exactly specified, and the configuration can be version controlled. NixOS configuration can be thought of as congruent configuration management, where many other tools give you many less guarantees about configuration drift and reproducibility.

  • rfcs

    The Nix community RFCs (by NixOS)

    I changed it through this RFC. This was mostly to make easier to ship NixOS with the major DE's. The previous YY.03 and YY.09 schedule usually meant that were shipping almost EOL DE's in nix. The two month push back was so that the stable releases would be available for gnome (and plasma for YY.11), and we would have ample time to package and test them before release (Nixpkgs is purely volunteer based). Also avoided issues of having a version of systemd which Plasma and gnome weren't developed against: this caused issues like people not being able to switch user in plasma.

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts