HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
NixOS
nixpkgs
Nix2013–2026
NixOS / nixpkgs

nixpkgs

Nix Packages collection & NixOS

360Distinct people
597Mentions
11Explicit recommenders
26.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Nix Packages collection & NixOS

GitHub

Where it is used

  • NixOS — NixOS uses Nixpkgs as a core part of the distribution; it is built around Nixpkgs. This powers its reproducible, declarative system configuration. Source

What people are saying

I love NixOS, it's my daily driver on my personal laptop, but it definitely has given me more than its fair share of headaches. If everything you're going to do is in Nixpkgs,…

tombert used a recommendation phrase. 11 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:01:40 AM UTC.

A technical vision for the Haskell ecosystem direct repository linkDebated

Commenters debate whether Haskell's primary bottleneck is technical performance, such as compile time and incremental builds, or its lack of a coherent, polished ecosystem for building diverse applications like web and desktop software. While some argue that foundational libraries and better developer experience are the missing pieces, others contend that the language's utility is constrained by fragmented tooling and unclear positioning compared to more universal alternatives.

17 readable replies · Supporting reply 1 · Supporting reply 2 · Supporting reply 3 · Supporting reply 4

Mentions over time

HN mentions by year597 dated mentions

Observed mentions: 2013-12-15 16:18:08 UTC to 2026-10-21 00:27:48 UTC.

02550751001252013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 13 mentions; 1 submissions, 12 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 23 mentions; 1 submissions, 22 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 22 mentions; 0 submissions, 22 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 21 mentions; 0 submissions, 21 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 31 mentions; 1 submissions, 30 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 59 mentions; 1 submissions, 58 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 112 mentions; 3 submissions, 109 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 72 mentions; 3 submissions, 69 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 81 mentions; 5 submissions, 76 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 77 mentions; 3 submissions, 74 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 53 mentions; 5 submissions, 48 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 25 mentions; 2 submissions, 23 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC716
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC13112
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC23122
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC22022
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC21021
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC31130
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC59158
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC1123109
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC72369
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC81576
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC77374
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC53548
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC25223

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
Nixpkgs is a collection of over 140,000 software packages that can be installed with the Nix package manager. It also implements NixOS, a purely-functional Linux distribution. Manuals NixOS Manual - how to install, configure, and maintain a purely-functional Linux distribution Nixpkgs Manual - contributing to Nixpkgs and using programming-language-specific Nix expressions Nix Package Manager Manual - how to write Nix expressions (programs), and how to use Nix command line tools Community Discourse Forum Matrix Chat Official wiki Community-maintained list of ways to get in touch (Discord, Telegram, IRC, etc.) Other Project Repositories The sources of all official Nix-related projects are in the NixOS organization on GitHub. Here are some of the main ones: Nix - the purely functional package manager NixOps - the tool to remotely deploy NixOS machines nixos-hardware - NixOS profiles to optimize settings for different hardware Nix RFCs - the formal process for making substantial changes to the community NixOS homepage - the NixOS.org website hydra - our continuous integration system NixOS Branding - NixOS branding Continuous Integration and Distribution Nixpkgs and NixOS are built and tested by our continuous integration system, Hydra. Continuous package builds for unstable/master Continuous package builds for the NixOS 26.05 release Tests for unstable/master Tests for the NixOS 26.05 release Artifacts successfully built with Hydra are published to cache at https://cache.nixos.org/. When successful build and test criteria are met, the Nixpkgs expressions are distributed via Nix channels. Contributing Nixpkgs is among the most active projects on GitHub. While thousands of open issues and pull requests might seem like a lot at first, it helps to consider it in the context of the scope of the project. Nixpkgs describes how to build tens of thousands of pieces of software and implements a Linux distribution. The GitHub Insights page gives a sense of the project activity. Community contributions are always welcome through GitHub Issues and Pull Requests. For more information about contributing to the project, please visit the contributing page. Donations The infrastructure for NixOS and related projects is maintained by a nonprofit organization, the NixOS Foundation. To ensure the continuity and expansion of the NixOS infrastructure, we are looking for donations to our organization. You can donate to the NixOS Foundation through SEPA bank transfers or by using Open Collective: License Nixpkgs is licensed under the MIT License. NoteMIT license does not apply to the packages built by Nixpkgs, merely to the files in this repository (the Nix expressions, build scripts, NixOS modules, etc.). It also might not apply to patches included in Nixpkgs, which may be derivative works of the packages to which they apply. The aforementioned artifacts are all covered by the licenses of the respective packages.
Read the full README on GitHub

What Hacker News says

23 sources
I primarily think of Nix as being a build tool akin to Make rather than a package manager. It's almost as if the flakiness of Make made us think that building applications or libraries was somehow a different thing to building an OS, so we invented a separate thing called a package manager. Then Nix came along and showed that a single build tool can be used for something as simple as a preprocessor (Nix's string quasiquotation is very nice), through to compiling applications, bundling applications into a coherent OS, and even orchestrating clusters of real & virtual machines. I wonder if this proposed system would be as amenable to handling such a wide variety of software (e.g. https://nixos.org/nixpkgs/manual/#chap-language-support ) on such a wide variety of platforms (e.g. https://github.com/NixOS/nixpkgs/tree/master/pkgs/os-specifi...
Read the rest
).
In Portable systemd services
If you found out through gdb that your code compiled with -O0 was still somehow optimized by gcc, or if you found out that your gcc did not optimize your code aggressively enough although you gave it -Ofast, check out this issue [0]. [0] https://github.com/NixOS/nixpkgs/issues/18995 Yeah. The devs believed it was okay to make gcc -O2 by default and impossible to override from the command line you gave to gcc. If you encountered this issue I hope google could quickly bring you to that issue on github. Good luck and don't waste hours to figure out why.
In NixOS 16.09 released
I think Nix does/comes close to what you're after. Nix 'packages' are just text files describing the build/install process, so they can be version controlled (e.g. there's a big repo at https://github.com/nixos/nixpkgs ). Dependencies, build environments, etc. are fully specified by the package and isolated from each other, and there is an emphasis on reproducibility, so building/installing a particular package should always give the same results. (This isn't enforced, but a non-reproducible package is considered buggy, and there are tools to check if a package can be reproduced) Nix packages themselves can reference external dependencies, like git repos and URLs, and usually provide a fixed checksum to compare the output against; if it doesn't match, the build is aborted. Wrappers/translators are also available to integrate with other pa
Read the rest
ckage manager ecosystems, e.g. cabal/hackage for Haskell packages. Results are cached locally (packages are only built once, until they get garbage collected) and remotely (if a build server has already built a package, you can fetch it from there instead). For development environments, you can write a Nix package for your project then run the 'nix-shell' command to enter its build environment (i.e. all dependencies available, environment variables set, etc.)
In Show HN: Cross-platform dependency manager using bash and cmake
> Not that: enterprises and other businesses know someone will handle their problems now and later with Red Hat, SUSE, and Ubuntu. Is there assurance of that for Nix? No. For this reason alone nothing big is about to happen. Some consulting shops might prescribe this, or may just use it internally. Other places I know its in deployment they have an employee whose a power user or contributor who probably evangelized it in the first place. > So the whole distro is separate from Linux itself in terms that it could work on a BSD or Windows just replacing some OS-specific modules? I am much more familiar with nixpkgs (the packages themselves, suitable for single-user install on top of some distro) proper, but let me take a shot. Nix is like a way better version or puppet/ansible/etc in that virtually all the work is done not in nix but in the
Read the rest
nix expression themselves. This is true for both nixpkgs and nixos. The most interesting thing that Nix does is the sandboxing, and must of that I think could be done as support code in the nix expression language except then it would be easier to subvert. They way nixos is structed (topological sort on deps is) 1. library of mainly FP prelude functions and few fix-point combinators, https://github.com/NixOS/nixpkgs/tree/master/lib 2. Nixpkgs itself https://github.com/NixOS/nixpkgs/tree/master/pkgs 3. NixOS module system: maybe https://github.com/NixOS/nixpkgs/blob/master/lib/modules.nix ? 4. NixOS itself https://github.com/NixOS/nixpkgs/tree/master/nixos The purpose of the module system is the key to understanding nixos vs nixpkgs. Nixpkgs is just software to build: you can build as much as you want, as many versions of a thing as you want (nix doesn't even disambiguate between 2 packages vs 2 versions of the same package). Since it's just building software, there is no services or long running software or state really, other than nix itself. Now that's all great, but a distro inevitably involves more state / finite resources. Only one process gets to be PID 1, only so many port files, etc. Nix doesn't want to deal with all this itself, so it largely just spits out /etc files. In rarer cases there are deliberately impure "packages" that may run some commands to set up something (e.g. the "package" that builds /etc itself.) The module system allows one to write configuration modules (duh!) that (a) declare a few options (b) do a few things based on those options. Those "things" include delegating to other modules. Now the key point is the config options are safely combined so that syntactically conflicting configuration is caught -- we have conceptually a "partial monoid" of configurations. e.g. `{ a = [ "b" ]; }` (+) `{ a = [ "c" ]; }` => `{ a = [ "b" "c" ]; }`, `{ a = "foo"; }` (+) `{ a = "bar"; }` => error. This means one can use config itself to model finite resources (modules can also assert on config so one can e.g. ensure list is a set). Because nixpkgs is one ginormous repo, its very easy to refactor and add abstractions. So on any system that Nix will one, one can just add more layer to bluntly abstract over non-portabilities. Not exactly glamorous, but it works. And people do use nixpkgs on FreeBSD and illumos at atleast, so I am sure it runs there. [Few users + our shitty CI practices means that is prone to bitrot, cygwin once worked years ago IIUC]. I don't know if Nix knows about jails or zones yet, but there is plain chroot "sandboxing", or even none at all, for more portability. > There a link describing that in more detail? I'm not sure what's best for NixOS (the above is my own memory from spending enough time on IRC, etc), but http://lethalman.blogspot.com/2014/07/nix-pill-1-why-you-sho... is a great blog series introducing nix itself. > Good to know it's not dependent on systemd, though, for uptake reasons. For example, there was some talk about smudging the nixpkgs--nixos divide so that single-user-install nix users on MacOS could use the module system to define services. That would naturally involve abstracting over init as no systemd on Darwin! > "mechanisms from policy" Ah, that was the phrase I was forgetting :) > Btw, are you a NixOS developer or did "we" mean something else? The "we" is really just group membership psychology at work :). I don't have repo privileges or anything but contribute odds and ends. Currently working on better cross-compiling abstractions in nixpkgs ...because is anything ever designed with cross-compiling in mind from day one?!
In Infrastructure Software is Dead
The last time I tried (a month ago), I could reproduce most of my current Homebrew packages. There are few that are broken (e.g. rust, which has since been fixed), or do not have Darwin support (aria2c, which I have a PR open[1]). There are also packages that are a little bit hard to discover, e.g. those that are imported from Haskell's Hackage where it is not listed by default[2] when you do `nix-env -i <packageName>` (e.g. shellcheck). From my few days of trying to replace Homebrew with Nix, being able to rollback the environment to last known good state (`nix-env --rollback`), ability to keep track of package changes (`nix-env --list-generations`), ability to try a package without installing it (`nix-shell`, well, technically it's installed on the machine, but nothing is linked in the profile, and you can nuke them with `nix-collect-ga
Read the rest
rbage`) are very nice additions. Apart from these features, the fact that it doesn't chown `/usr/local/` to my user is a big plus. Nix will also not linking anything not explicitly installed by user to their profile (e.g. if package A has B as dependency, B won't be linked until user actually choose to install it, which is then managed separately from B that were explicitly installed as A's dependency). That said, I've since revert back to Homebrew because there are few packages broken that are crucial to what I'm working on. Creating and fixing package is not too hard (I did with aria2c), although time didn't allow me to do it back then. I would love to try to switch to Nix again sometimes. People in ##nix-darwin are super-nice, also! :-) [1]: https://github.com/NixOS/nixpkgs/pull/15029 [2]: https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell...
In Nix as OS X Package Manager

Showing the 15 most recent of 23 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.