All Projects → divnix → digga

divnix / digga

Licence: MIT license
A flake utility library to craft shell-, home-, and hosts- environments.

Programming Languages

Nix
1067 projects

Projects that are alternatives of or similar to digga

nix-configs
My Nix{OS} configuration files
Stars: ✭ 54 (-93.4%)
Mutual labels:  nix, nixos, flake, nix-flake
microvm.nix
NixOS MicroVMs
Stars: ✭ 136 (-83.37%)
Mutual labels:  nix, nixos, flake, nix-flake
nyx
⚙️Nix[OS] Configuration
Stars: ✭ 50 (-93.89%)
Mutual labels:  nix, nixos, nixos-configuration, nix-flake
base16.nix
Quickly theme programs in your favourite base16 colorscheme
Stars: ✭ 61 (-92.54%)
Mutual labels:  nix, nixos, flake, nix-flake
rc
Structured system configuration (I moved from NixOS to GuixSD)
Stars: ✭ 97 (-88.14%)
Mutual labels:  nix, nixos, nixos-configuration, flake
flake-utils-plus
Use Nix flakes without any fluff.
Stars: ✭ 280 (-65.77%)
Mutual labels:  nix, nixos, nix-flake, flake-utils-plus
dotfiles
Dotfiles
Stars: ✭ 25 (-96.94%)
Mutual labels:  nix, nixos, nixos-configuration, nix-flake
nixdots
I have no idea what the hell I'm doing
Stars: ✭ 46 (-94.38%)
Mutual labels:  nix, nixos, nixos-configuration, nix-flake
dotnix
nix stuff
Stars: ✭ 27 (-96.7%)
Mutual labels:  nix, nixos, nixos-configuration, nix-flake
dotfiles
NixOS system config & Home-Manager user config
Stars: ✭ 43 (-94.74%)
Mutual labels:  nix, nixos, flake
nix-config
NixOS configuration (also on WSL)
Stars: ✭ 51 (-93.77%)
Mutual labels:  nix, nixos, nixos-configuration
nixos-config
My NixOS configuration
Stars: ✭ 23 (-97.19%)
Mutual labels:  nix, nixos, nixos-configuration
deadnix
Scan Nix files for dead code
Stars: ✭ 121 (-85.21%)
Mutual labels:  nix, nixos, nix-flake
system
Declarative NixOS system configuration for all my machines
Stars: ✭ 14 (-98.29%)
Mutual labels:  nix, nixos, nixos-configuration
dconf2nix
🐾 Convert Dconf files (e.g. Gnome Shell) to Nix, as expected by Home Manager
Stars: ✭ 51 (-93.77%)
Mutual labels:  nix, nixos, nixos-configuration
nix-config
A collection of my system configs and dotfiles
Stars: ✭ 35 (-95.72%)
Mutual labels:  nix, nixos, nix-flake
elemental
Elemental, the component parts of a Nix/OS development system.
Stars: ✭ 44 (-94.62%)
Mutual labels:  nix, nixos, nixos-configuration
system
The system configuration of a professional yak shaver
Stars: ✭ 42 (-94.87%)
Mutual labels:  nix, nixos, nix-flake
dotfiles
🏠
Stars: ✭ 53 (-93.52%)
Mutual labels:  nix, nixos, nix-flake
dotfiles
My NixOS configuration featuring awesome and neovim
Stars: ✭ 40 (-95.11%)
Mutual labels:  nix, nixos, flake

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.

Status: Beta

Although this project has already matured quite a bit, a fair amount of api polishing is still expected. There are unstable versions (0.x.x) to help users keep track of changes and progress.

Usage

The best way to make use of library is with the Official template. Check out the guide to get up and running. Also have a look at devos's flake.nix. If anything is not immediately discoverable via our mkFlake, please file a bug report.

Examples

Make sure to check out all the examples to see the different ways to make use of the digga api.

In the Wild

You can also see digga being actually used:

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.

Why flakes?

Flakes are a part of an explicit push to improve Nix's UX, and have become an integral part of that effort.

They also make Nix expressions easier to distribute and reuse with convient flake references for building or using packages, modules, and whole systems.

Shoulders

This work does not reinvent the wheel. It stands on the shoulders of the following giants:

🧅 — like the layers of an onion

👪 — like family

❤️

Inspiration & Art

Divnix

The divnix org is an open space that spontaneously formed out of "the Nix". It is really just a place where otherwise unrelated people work together and get stuff done.

It's a place to stop "geeking out in isolation" (or within company boundaries). A place to experiment, learn together, and iterate quickly on best practices. That's what it is.

It might eventually become a non-profit if that's not too complicated or, if those goals are sufficiently upstreamed into "the Nix", dissolved.

License

Digga is licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].