NUR: a user-run package layer for Nix that trades review for speed
Nix User Repository: User contributed nix packages [maintainer=@Pandapip1].
At a glance
- What is it?
- The Nix User Repository is a community meta-repository that indexes user-maintained Nix expressions. It gives fast, decentralized access to packages outside Nixpkgs, with the explicit cost that nothing in it is reviewed.
- Who is it for?
- Adopt NUR if you need a package that is not in Nixpkgs and you are willing to read its source before every install. Do not adopt it for critical infrastructure or for users who expect Nixpkgs-level review.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- nix-community/NUR1,990 ★ · +80
| Repository | 2026-07-28 | 2026-11-14 |
|---|---|---|
| nix-community/NUR | 1.9k | 2k |
80 Stars in the last 109 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What NUR actually is and who should care
NUR is a meta-repository, not a package set. It holds pointers to many user-maintained Git repositories, each of which contains Nix expressions. When you install `nur.repos.mic92.hello-nur`, NUR fetches that user's repository and evaluates the expression inside. The project was started in 2018 by Mic92 and is now maintained by Pandapip1. The audience is Nix users who want a package that is not in Nixpkgs, or who want a newer version than Nixpkgs carries. The trade is explicit: packages are built from source and are not reviewed by any Nixpkgs member. That sentence is the core of the project. Everything else in NUR is a mechanism to make that unreviewed content reachable.
How the evaluation pipeline works
NUR does not build packages itself. It runs a repository list and performs evaluation checks before propagating updates. The README says NUR automatically checks its list of repositories and performs evaluation checks before it propagates the updates. That means the central service verifies that each registered repository evaluates without errors, but it does not build or test the resulting derivations. The checked result is published as the `nur-combined` repository, which contains all Nix expressions from all users. You can search that combined repo on GitHub. The evaluation check is a gate for syntax and structure, not for safety or correctness. A repository can pass evaluation and still contain a malicious builder script.
Installing NUR: flakes versus packageOverrides
There are two main installation paths. With flakes, you add NUR as an input and let its nixpkgs follow yours. The README shows this input block: `nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; };`. Then you use either the overlay `overlays.default` or `legacyPackages.<system>`. Without flakes, you add NUR to `packageOverrides` in `~/.config/nixpkgs/config.nix` using `builtins.fetchTarball`. For NixOS, you put the same override in `nixpkgs.config.packageOverrides` inside `/etc/nixos/configuration.nix`. The README warns that if you use NUR in `nix-env`, home-manager, or `nix-shell`, you also need it in the user-level config file. That is a concrete gotcha: missing the user config means NUR is not visible to those tools.
Pinning is not optional for reproducibility
The unpinned `fetchTarball` path caches for only one hour by default. That means every build needs internet access, and worse, the content can change between builds. The README explicitly says this and shows how to pin. You take a specific commit URL and a sha256 hash obtained with `nix-prefetch-url --unpack`. The example pins to commit `3a6a6f4da737da41e27922ce2cfacf68a109ebce` with a hash. Flakes users get pinning for free because flake inputs are locked. But the non-flake path, which many existing NixOS users still rely on, defaults to floating. If you use NUR without pinning, you are building from a moving target. That is a real reliability cost, and the README does not sugarcoat it.
Using NUR in devshells, NixOS modules, and Home Manager
The README gives three integration patterns. In a devshell, you add the NUR overlay to `pkgs` and then reference `pkgs.nur.repos.mic92.hello-nur` inside `mkShell`. For NixOS, you import `nur.modules.nixos.default` to get the overlay, then you can import user modules directly, for example `nur.repos.iopq.modules.nixos.xraya`. For Home Manager, you import `lib.attrValues nur.repos.moredhel.modules.homeManager` and then configure services like `services.unison`. Each repo can provide its own modules, so the integration surface is not fixed. That flexibility is useful, but it also means you must inspect each repo's module interface yourself. There is no central schema for what a module looks like.
The security model is a warning, not a feature
The README contains a direct warning: NUR does not check the repository for malicious content on a regular basis and it is recommended to check expressions before installing them. That is the opposite of Nixpkgs, where maintainers review changes. With NUR, the repository owner controls the expressions, and the central service only checks evaluation. An attacker who registers a plausible repo name and passes evaluation can ship a builder that runs arbitrary code. The README's example package is `hello-nur`, which is trivial, but real repos may contain complex build scripts. The project does not even attempt to sandbox or scan. If you install from NUR, you are the reviewer. That is a design choice, but it is a hard boundary.
NUR versus Nixpkgs and other channels
The main alternative is Nixpkgs itself. Nixpkgs is reviewed, tested, and has a stable release process. NUR exists precisely because Nixpkgs review is slow and selective. The difference is not just speed: Nixpkgs has a formal structure, a security team, and a large set of CI checks. NUR has evaluation checks only. Another alternative is to vendor a package yourself by writing a local derivation. That gives you full control and no third-party trust, but it costs time and requires Nix expertise. NUR sits in between: faster than Nixpkgs, less trusted than a local expression. For a package you need today and can read in five minutes, NUR is reasonable. For a package you cannot understand, Nixpkgs or a vendored expression is safer.
Maintenance cost and license
NUR is MIT licensed, which is permissive and should not block adoption. The maintenance burden is on the central maintainer, currently Pandapip1, who manages the repository list and the evaluation checks. The README does not document a release process or a versioning scheme. There are no recent releases listed, and the project tracks `main`. That means the central NUR repository is a moving target unless you pin. For users, the maintenance cost is the review obligation: every time you update your lockfile or your `fetchTarball` hash, you should re-read the repos you depend on. The project itself does not promise stability. If the maintainer steps away, the service could stop, though the combined repo and the individual repos would remain usable. That is a real risk to consider before building your workflow around NUR.
Editorial conclusion
Adopt NUR if you need a package that is not in Nixpkgs and you are willing to read its source before every install. Do not adopt it for critical infrastructure or for users who expect Nixpkgs-level review. Before using any repo, check its default.nix, look at the maintainer history, and pin the NUR revision you trust. NUR is a distribution channel, not a guarantee.
Frequently asked questions
What is the Nix User Repository?
A community driven meta repository for Nix packages. It gives access to user repositories that contain Nix expressions and lets you install from them by attribute, and it was created to share new community packages faster and more decentralized than Nixpkgs allows.
Is a NUR package reviewed before it is indexed?
No. The page states that packages are built from source and are not reviewed by any Nixpkgs member, and that NUR does not check repositories for malicious content on a regular basis, so it recommends checking expressions before installing them. The automatic checks are evaluation checks.
How do I add NUR to a flake?
Declare an nixpkgs input pointing at nixos-unstable and a nur input with inputs.nixpkgs.follows set to your own nixpkgs, then use overlays.default or legacyPackages.<system>. The page's own snippet shows the inputs block and stops there, without an outputs attribute.
How do I pin a specific NUR revision?
Use builtins.fetchTarball with an attribute set containing a commit tarball URL and a sha256. Without the hash the download is only cached for an hour, so you re-download on almost every build. Take the revision from the commit history and the hash from nix-prefetch-url --unpack.
Where can I search for packages in NUR?
On the search site at nur.nix-community.org, or in the nur-combined repository, which holds the Nix expressions from every user repository and can be searched with GitHub code search.
How do I publish my own package through NUR?
Create a repository containing a default.nix in its top level directory, optionally starting from the repository template, and register it under a name you own. Each contributor is responsible for the content of their own repository.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/nix-community-nur)Star history chart for your README
[](https://hysenlabs.com/projects/nix-community-nur)Was this useful?