Skip to content

Instantly share code, notes, and snippets.

@matthewbauer
Created April 30, 2019 16:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewbauer/f8e36468b0dd84caff6a0d3ce3fd2b85 to your computer and use it in GitHub Desktop.
Save matthewbauer/f8e36468b0dd84caff6a0d3ce3fd2b85 to your computer and use it in GitHub Desktop.

Proposed Nixpkgs Rules

  • Mission statement: to package the latest, stable version of all of the world’s open source software with a living maintainer.
  • Other software is allowed on a case by case basis. Possible exceptions include, but not limited to:
    • Popular closed-source applications without a good alternative.
    • Older software that is required as a dependency of other packages.
    • Unstable versions of software
      • commonly used and packaged by other package sets.
      • where no stable version exists.
      • where the stable version is over 18 months old.
      • that is depended on by another package and no stable version will work.
  • Standard environment should include the minimum amount of software required to build directly or transitively all other software.
    • Some software needs its own bootstrap tools. This should be limited to the self-hosted compilers specifically listed:
      • JDK
      • GHC
      • Rustc
      • OCaml
      • SML
      • ?
    • Bootstrapping should not be exceptional. It should be as close to ordinary compilation as possible.
  • Limit checked in code to the absolute minimum. Use as much upstream patches and source code as possible. If you author a patch, it must be made available to upstream first. Leave a comment on whether the patch is accepted or not by upstream.
    • Patches should be unconditional and upstreamable.
  • Limit the difference between platforms as much as possible.
  • Every package should have a unique source.
  • Packages should assume dependencies have no enabled features, but permit all to be enabled.
  • Make every feature configurable, but enable all of them by default.
  • All software should be built from source, unless source code is unavailable or no way to build from source currently exists.
  • No merging of your own pull requests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment