You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.3 KiB

Some notes on Nix language style

In an attempt to keep this more consistent than NixWRT ended up being, here is a Nix language style guide for this repo.

  • favour callPackage over raw import for calling derivations or any function that may generate one - any code that might need pkgs or parts of it.

  • prefer let inherit (quark) up down strange charm over with quark, in any context where the scope is more than a single expression or there is more than one reference to up, down etc. with pkgs; [ foo bar baz] is OK, with lib; stdenv.mkDerivation { ... } is usually not.

  • is defined only when running tests, so don't refer to it in "application" code

  • the parameters to a derivation are sorted alphabetically, except for lib, stdenv and maybe other non-package "special cases"

  • indentation is whatever emacs nix-mode says it is.

    • where a let form defines multiple names, put a newline after the token let, and indent each name two characters
  • should it be a package or a module? packages are self-contained - they live in /nix/store/eeeeeee-name and don't directly change system behaviour by their presence or absense. modules can add to /etc or /bin or other global state, create services, all that side-effecty stuff. generally it should be a package unless it can't be.