1
1
mirror of https://github.com/divnix/digga.git synced 2024-12-22 23:51:39 +03:00
A flake utility library to craft shell-, home-, and hosts- environments.
Go to file
Matt Schreiber 61828b5075 fix: module args of home-manager portable configs
Type-check such configs as modules ("moduleType") rather than as
functions evaluating to attribute sets ("functionTo attrs").  This
ensures that they get invoked with all expected module arguments
("pkgs", "lib", etc.).

Update ./examples/hmOnly so that the testuser config references the pkgs
module arg, thus testing that the switch to moduleType works as
intended.

Closes #119
2022-02-23 15:23:14 -08:00
.github gh action: fix non-shallow repository is needed 2022-02-23 15:23:14 -08:00
checks fix: boostrap iso module 2022-02-23 15:23:14 -08:00
doc chore: update docs 2022-02-23 15:23:14 -08:00
examples fix: module args of home-manager portable configs 2022-02-23 15:23:14 -08:00
jobs fix: doc fixes 2022-02-23 15:23:14 -08:00
modules nix: remove ca-references feature flag 2022-02-23 15:23:14 -08:00
overlays chore: remove unused nix-patched overlay 2022-02-23 15:23:14 -08:00
src fix: module args of home-manager portable configs 2022-02-23 15:23:14 -08:00
ufr-polyfills spelling fixes 2022-02-23 15:23:14 -08:00
.editorconfig copy over .editorconfig from devos 2022-02-23 15:22:07 -08:00
.gitignore add gitignore and remove nix build result 2022-02-23 15:22:07 -08:00
.gitmodules satisfy pre-commit hook (editorconfig / format) 2022-02-23 15:23:14 -08:00
bors.toml add github actions and bors configuration 2022-02-23 15:22:07 -08:00
CHANGELOG.md Update Changelog for tag 2022-02-23 15:23:14 -08:00
COPYING add README and COPYING 2022-02-23 15:22:07 -08:00
deprecated.nix rename current modules -> exportedModules 2022-02-23 15:23:14 -08:00
flake.lock update flake-utils-plus fork 2022-02-23 15:23:14 -08:00
flake.nix nix: remove ca-references feature flag 2022-02-23 15:23:14 -08:00
README.md chore: update docs 2022-02-23 15:23:14 -08:00
shell.nix nix: remove ca-references feature flag 2022-02-23 15:23:14 -08:00

Bors enabled MIT License NixOS Chat

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:

This library is based on flake-utils-plus.

Usage

The best way to make use of library is with the Official template.

You can also have a look at the different examples.

Philosophy

In it's lib.mkFlake function, Digga implements a well-specified API interface comprising four API containers that allow you to:

  1. configure nixpkgs channels including internal and external overlays,

  2. define NixOS hosts including internal and external NixOS modules as well as host defaults that apply to all hosts in the environment,

  3. specify user home environments including internal and external home-manager modules, and

  4. setup & combine a series of devshells that you like to have available in your projects.

Modules, Profiles & Suites

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.

Internal Art vs External Art

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.

Contributing

We encourage contributions of any kind. The simplest way to get involved is to join the chat or report problems and ideas on the issue thread.

To craft well thought out APIs we need all the thoughts regarding new ideas.

Pull Requests are just as amazing.

License

Digga is licensed under the MIT License.