A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/ekala-project/nix-lib below:

ekala-project/nix-lib: Standalone lib for use with nix

This repository is largely taken from nixpkgs/lib. This library is meant to serve as the basis of a poly-repo nixpkgs fork or for standalone use in a flake which doesn't need all of nixpkgs.

Noteable exceptions from nixpkgs/lib:

Nixpkgs lib (original readme)

This directory contains the implementation, documentation and tests for the Nixpkgs lib library.

The evaluation entry point for lib is default.nix. This file evaluates to an attribute set containing two separate kinds of attributes:

Most files in this directory are definitions of sub-libraries, but there are a few others:

The module system spans multiple sub-libraries:

Follow these guidelines for proposing a change to the interface of lib.

Clearly describe why the change is necessary and its use cases.

Make sure that the change benefits the user more than the added mental effort of looking it up and keeping track of its definition. If the same can reasonably be done with the existing interface, consider just updating the documentation with more examples and links. This is also known as the Fairbairn Threshold.

Through this principle we avoid the human cost of duplicated functionality in an overly large library.

Make one PR for each change

Don't have multiple changes in one PR, instead split it up into multiple ones.

This keeps the conversation focused and has a higher chance of getting merged.

Name the interface appropriately

When introducing new names to the interface, such as new function, or new function attributes, make sure to name it appropriately.

Names should be self-explanatory and consistent with the rest of lib. If there's no obvious best name, include the alternatives you considered.

Update the reference documentation to reflect the change.

Be generous with links to related functionality.

Add good test coverage for the change, including:

See running tests for more details on the test suites.

Name variables well, even if they're internal. The code should be as self-explanatory as possible. Be generous with code comments when appropriate.

As a baseline, follow the Nixpkgs code conventions.

Nix generally does not have free abstractions. Be aware that seemingly straightforward changes can cause more allocations and a decrease in performance. That said, don't optimise prematurely, especially in new code.

Reference documentation for library functions is written above each function as a multi-line comment. These comments are processed using nixdoc and rendered in the Nixpkgs manual. The nixdoc README describes the comment format.

See doc/README.md for how to build the manual.

All library tests can be run by building the derivation in tests/release.nix:

nix-build tests/release.nix

Some commands for quicker iteration over parts of the test suite are also available:

# Run all evaluation unit tests in tests/misc.nix
# if the resulting list is empty, all tests passed
nix-instantiate --eval --strict tests/misc.nix

# Run the module system tests
tests/modules.sh

# Run the lib.sources tests
tests/sources.sh

# Run the lib.filesystem tests
tests/filesystem.sh

# Run the lib.path property tests
path/tests/prop.sh

# Run the lib.fileset tests
fileset/tests.sh

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4