proselint is a linter for English prose that checks style, usage, and common writing errors based on authoritative references like Garner's Modern American Usage. It operates as a Python library with a command-line interface (CLI) and a FastAPI web service. The architecture is a monolith: text input is tokenized and matched against a registry of checks (existence, preferred forms, consistency, etc.) using a pluggable regex engine (RE2 or Python re). Results are output as structured JSON or formatted text. The project also includes editor plugins (Sublime Text, CodeMirror), a pre-commit hook, and a Jekyll-based documentation site. While the core linting logic is well-architected with a clean check type system and configurable thresholds, the repository carries significant technical debt from vendored third-party code (an old CodeMirror distribution) and several unmaintained editor plugins. The codebase is actively maintained with CI/CD across platforms and Python versions, but the outdated dependencies and legacy components introduce medium technical drift.
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 VS Code extension provides comprehensive Nix language support including syntax highlighting via a custom TextMate grammar, formatting via external tools (nixfmt, alejandra, etc.), linting via nix-instantiate, and a language server client supporting nil and nixd. It uses a clean architecture with separate modules for the language client, formatter, linter, and process execution. The extension activates on Nix files and falls back to local formatting/linting when no LSP is enabled. The codebase demonstrates good software engineering practices with TypeScript, unit tests, and continuous integration, though it is tightly coupled to the VS Code extension API and Nix toolchain, limiting reuse outside its domain. The most reusable component is the process-runner module, which encapsulates external command execution with error handling in a workspace-aware manner.
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).