nvfetcher is a Haskell-based CLI tool and library for automating Nix package updates. It integrates with nvchecker to monitor upstream version releases and uses the Shake build system to manage dependency tracking and incremental builds. The tool processes package definitions (from TOML config or Haskell DSL), fetches source code using appropriate methods (git, GitHub, URL, tarball, Docker), optionally extracts files, processes Rust Cargo.lock dependencies, and generates Nix expressions and JSON metadata for use in Nixpkgs. The architecture is modular with clear separation of concerns: configuration parsing, core logic, fetching mechanisms, version checking, extraction, and Nix expression generation.
This repository provides a collection of Nix development shell environments for a variety of open-source projects, including Arduino, Firefox, Git, OpenWRT, Yocto, and others. Each environment is defined by a `shell.nix` file that specifies the dependencies, environment variables, and sometimes FHS sandboxing (via `buildFHSEnv`) needed to build or develop that project. The codebase acts as a library of reusable Nix expressions—users can drop into any environment using `nix-shell` or `nix develop`. While not a traditional application, it serves as a practical tool for developers using Nix/NixOS to set up reproducible, self-contained build environments that isolate project-specific dependencies from the host system. The environments vary in complexity from simple `mkShell` wrappers to sophisticated FHS chroots with custom linker settings and variable passthrough (e.g., Yocto). The repository also demonstrates advanced Nix patterns like overriding `stdenv` for LTO (Firefox) and creating wrapper scripts for C standard enforcement (Buildroot).