Digga — slangy German for "good friend" — is a flake utility library that helps you declaratively craft and manage all three layers of your system environment within a single nix flakes repository:
- development shells (via
- home environments (via
- host configurations (via
This library is based on flake-utils-plus.
The best way to make use of library is with the Official template.
You can also have a look at the different examples.
lib.mkFlake function, Digga implements a well-specified API
interface comprising four API containers that allow you to:
configure nixpkgs channels including internal and external overlays,
define NixOS hosts including internal and external NixOS modules as well as host defaults that apply to all hosts in the environment,
specify user home environments including internal and external home-manager modules, and
setup & combine a series of devshells that you like to have available in your projects.
For NixOS- & home-manager-modules, Digga allows you to distinguish between modules, profiles and suites.
Modules are abstract configurations that, while holding the implementation, do not set any system state.
Profiles are concrete configurations that set system state within the profile domain.
Suites are a composable, clean and discoverable mechanism for profile aggregation.
Overlays and modules can be defined internally coming from your repo or externally coming from an upstream flake. This distinction serves the library to only export your own work as the public flake output.
Downstream consumers of your flake can now more easily tell your art apart from other upstream art.
To craft well thought out APIs we need all the thoughts regarding new ideas.
Pull Requests are just as amazing.
Digga is licensed under the MIT License.