back to home

nix-community / NUR

Nix User Repository: User contributed nix packages [maintainer=@Pandapip1]

1,788 stars
480 forks
48 issues
PythonNixShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing nix-community/NUR in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/nix-community/NUR)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

NUR Current maintainer: Pandapip1 Original creator: NUR was started by @Mic92 in 2018. The Nix User Repository (NUR) is a community-driven meta repository for Nix packages. It provides access to user repositories that contain package descriptions (Nix expressions) and allows you to install packages by referencing them via attributes. In contrast to Nixpkgs, packages are built from source and **are not reviewed by any Nixpkgs member**. The NUR was created to share new packages from the community in a faster and more decentralized way. NUR automatically checks its list of repositories and performs evaluation checks before it propagates the updates. Installation Using flakes Include NUR in your : Then, either the overlay ( ) or can be used. Using First include NUR in your : To make NUR accessible for your login user, add the following to : For NixOS add the following to your Notice: If you want to use NUR in nix-env, home-manager or in nix-shell you also need NUR in as shown above! Pinning Using without a sha256 will only cache the download for 1 hour by default, so you need internet access almost every time you build something. You can pin the version if you don't want that: How to use Then packages can be used or installed from the NUR namespace. or or Each contributor can register their repository under a name and is responsible for its content. ***NUR does not check the repository for malicious content on a regular basis and it is recommended to check expressions before installing them.*** Using a single package in a devshell This simple example demostrates how to add a single package from nur to a devshell defined in a flake.nix. Using the flake in NixOS Using overlays and modules from NUR in your configuration is fairly straightforward. Integrating with Home Manager Integrating with Home Manager can be done by adding your modules to the attribute. You can then configure your services like usual. Finding packages You can find all packages using Packages search for NUR or search our nur-combined repository, which contains all nix expressions from all users, via github. How to add your own repository. First, create a repository that contains a in its top-level directory. We also provide a repository template that contains a prepared directory structure. DO NOT import packages for example . Instead take all dependency you want to import from Nixpkgs from the given argument. Each repository should return a set of Nix derivations: In this example would be a directory containing a : You can use or to build your packages: For development convenience, you can also set a default value for the pkgs argument: Add your own repository to the of NUR: edit the file : At the moment, each URL must point to a git repository. By running the corresponding is updated and the repository is tested. This will also perform an evaluation check, which must be passed for your repository. Commit the changed but NOT and open a pull request towards https://github.com/nix-community/NUR. At the moment repositories should be buildable on Nixpkgs unstable. Later we will add options to also provide branches for other Nixpkgs channels. Use a different nix file as root expression To use a different file instead of to load packages from, set the option to a path relative to the repository root: Update NUR's lock file after updating your repository By default, we only check for repository updates once a day with an automatic github action to update our lock file . To update NUR faster, you can use our service at https://nur-update.nix-community.org/ after you have pushed an update to your repository, e.g.: Check out the github page for further details Why are my NUR packages not updating? With every build triggered via the URL hook, all repositories will be evaluated. The repository revision for the user is only updated if the evaluation does not contain any errors. Typical evaluation errors include: • Using a wrong license attribute in the metadata. • Using a builtin fetcher because it will cause access to external URLs during evaluation. Use pkgs.fetch* instead (i.e. instead of use ) You can find out if your evaluation succeeded by checking the latest build job. Local evaluation check In your folder, run the check evaluation task On success, this shows a list of your packages Git submodules To fetch git submodules in repositories set : NixOS modules, overlays and library function support It is also possible to define more than just packages. In fact any Nix expression can be used. To make NixOS modules, overlays and library functions more discoverable, they must be put them in their own namespace within the repository. Providing NixOS modules NixOS modules should be placed in the attribute: An example can be found here. Modules should be defined as paths, not functions, to avoid conflicts if imported from multiple locations. A module with no _class will be assumed to be both a NixOS and Home Manager module. If a module is NixOS or Home Manager specific, the attribute should be set to or . Providing Overlays For overlays, use the attribute: Providing library functions Put reusable nix functions that are intend for public use in the attribute: Overriding repositories You can override repositories using argument. This allows to test changes before publishing. The repo must be a valid package repo, i.e. its root contains a file. Overriding repositories with Flake **Experimental** Note that flake support is still experimental and might change in future in a backwards incompatible way. You can override repositories in two ways: • With packageOverrides • With overlay The repo must contain a file in addition to a : flake.nix example Contribution guidelines • When adding packages to your repository make sure they build and set attribute to true otherwise. • Supply meta attributes as described in the Nixpkgs manual, so packages can be found by users. • Keep yo…