{"id":13611106,"url":"https://github.com/divnix/digga","last_synced_at":"2025-05-16T02:07:16.120Z","repository":{"id":39918426,"uuid":"221324180","full_name":"divnix/digga","owner":"divnix","description":"A flake utility library to craft shell-, home-, and hosts- environments. ","archived":false,"fork":false,"pushed_at":"2024-05-17T10:20:04.000Z","size":4899,"stargazers_count":1010,"open_issues_count":33,"forks_count":108,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-10T13:02:26.801Z","etag":null,"topics":["devos","digga","dotfiles","flake","flake-utils-plus","nix","nix-flake","nixos","nixos-configuration"],"latest_commit_sha":null,"homepage":"https://digga.divnix.com","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/divnix.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-12T22:28:16.000Z","updated_at":"2025-05-04T14:16:43.000Z","dependencies_parsed_at":"2024-11-21T02:03:49.476Z","dependency_job_id":null,"html_url":"https://github.com/divnix/digga","commit_stats":{"total_commits":1199,"total_committers":59,"mean_commits":"20.322033898305083","dds":0.5688073394495412,"last_synced_commit":"117be8023d7615f1603cc99e0a5d4891f7b508a4"},"previous_names":["divnix/devos"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdigga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdigga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdigga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/divnix%2Fdigga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/divnix","download_url":"https://codeload.github.com/divnix/digga/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453651,"owners_count":22073617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devos","digga","dotfiles","flake","flake-utils-plus","nix","nix-flake","nixos","nixos-configuration"],"created_at":"2024-08-01T19:01:51.847Z","updated_at":"2025-05-16T02:07:16.094Z","avatar_url":"https://github.com/divnix.png","language":"Nix","funding_links":[],"categories":["Nix"],"sub_categories":[],"readme":"[![MIT License](https://img.shields.io/github/license/divnix/devos)][mit]\n[![NixOS](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat\u0026logo=NixOS\u0026logoColor=white)](https://nixos.org)\n[![Chat](https://img.shields.io/badge/chat-join%20us-brightgreen.svg?style=flat\u0026logo=matrix\u0026logoColor=white)](https://matrix.to/#/#devos:nixos.org)\n\n# DEPRECATION NOTICE\nThis project is no longer maintained and not recommended for any sort of use case. Please see https://github.com/divnix/digga/issues/503 for better alternatives and the reasons behind this decision.\n\n-----\nDigga \u0026mdash; slangy German for \"good friend\" \u0026mdash; is a flake utility library\nthat helps you declaratively craft and manage all three layers of your system\nenvironment within a single [nix flakes][flakes] repository:\n\n- development shells (via [`numtide/devshell`][devshell]),\n- home environments (via [`nix-community/home-manager`][home-manager]), and\n- host configurations (via [`NixOS/nixpkgs/nixos`][nixpkgs]).\n\nThis library is based on [flake-utils-plus][].\n\n# Status: Beta\n\nAlthough this project has already matured quite a bit, a fair amount of api polishing is still\nexpected. There are unstable versions (0._x_._x_) to help users keep track\nof changes and progress.\n\n# Usage\n\nThe best way to make use of library is with the [Official template][template].\nCheck out the [guide](./doc/start/index.md) to get up and running.\nAlso have a look at devos's [_flake.nix_](./examples/devos/flake.nix).\nIf anything is not immediately discoverable via our [`mkFlake`][mk-flake], please file a bug report.\n\n# Examples\n\nMake sure to check out all the [examples](./examples) to see the different ways\nto make use of the digga api.\n\n## In the Wild\n\nYou can also see digga being actually used:\n\n- @Pacman99: [Personal](https://gitlab.com/coffeetables/lower), [Server](https://gitlab.com/coffeetables/myrdd)\n- [@danielphan2003](https://github.com/danielphan2003/flk) and make sure to also check out [devos-ext-lib](https://github.com/divnix/devos-ext-lib)\n- [PubSolarOS](https://git.sr.ht/~b12f/pub-solar-os)\n- @montchr: [Dotfield](https://github.com/montchr/dotfield) – including darwin configurations\n- [@sweenu](https://github.com/sweenu/nixfiles): pc, server and RaspberryPi deployment in one repo\n\n# Philosophy\n\nIn it's `lib.mkFlake` function, _Digga_ implements a well-specified API\ninterface comprising four API containers that allow you to:\n\n1. configure **nixpkgs channels** including internal and external overlays,\n\n2. define **NixOS hosts** including internal and external NixOS modules as well as\n   host defaults that apply to all hosts in the environment,\n\n3. specify **user home environments** including internal and external home-manager\n   modules, and\n\n4. setup \u0026 combine a series of **devshells** that you like to have available in\n   your projects.\n\n## Modules, Profiles \u0026 Suites\n\nFor NixOS- \u0026 home-manager-modules, _Digga_ allows you to distinguish between\n_modules_, _profiles_ and _suites_.\n\n- **Modules** are abstract configurations that, while holding the implementation, do not\n  set any system state.\n\n- **Profiles** are concrete configurations that set system state within the profile domain.\n\n- **Suites** are a composable, clean and discoverable mechanism for profile aggregation.\n\n## Internal Art vs External Art\n\nOverlays and modules can be defined internally coming from your repo or externally\ncoming from an upstream flake. This distinction serves the library to only export\nyour own work as the public flake output.\n\nDownstream consumers of your flake can now more easily tell your art apart from\nother upstream art.\n\n# Contributing\n\nWe encourage contributions of any kind. The simplest way to get involved is to\njoin the [chat][] or report problems and ideas on the [issue thread][issues].\n\nTo craft well thought out APIs we need all the thoughts regarding new ideas.\n\nPull Requests are just as amazing.\n\n# Why _flakes_?\n\nFlakes are a part of an explicit push to improve [Nix's UX](https://github.com/NixOS/nix/blob/master/doc/manual/src/contributing/cli-guideline.md), and have become an integral part of that effort.\n\nThey also make [Nix expressions](https://nixos.org/manual/nix/unstable/expressions/expression-syntax.html) easier to distribute and reuse with convient [flake references](https://github.com/NixOS/nix/blob/master/src/nix/flake.md#flake-references) for building or using packages, modules, and whole systems.\n\n# Shoulders\n\nThis work does not reinvent the wheel. It stands on the [shoulders of the\nfollowing giants][giants]:\n\n## :onion: \u0026mdash; like the layers of an onion\n\n- [`gytis-ivaskevicius/flake-utils-plus`](https://github.com/gytis-ivaskevicius/flake-utils-plus)\n- [`numtide/flake-utils`](https://github.com/numtide/flake-utils/)\n\n## :family: \u0026mdash; like family\n\n- [`numtide/devshell`](https://github.com/numtide/devshell)\n- [`serokell/deploy-rs`](https://github.com/serokell/deploy-rs)\n- [`berberman/nvfetcher`](https://github.com/berberman/nvfetcher)\n- [`NixOS/nixpkgs`](https://github.com/NixOS/nixpkgs)\n\n:heart:\n\n### Inspiration \u0026 Art\n\n- [hlissner/dotfiles](https://github.com/hlissner/dotfiles)\n- [nix-user-chroot](https://github.com/nix-community/nix-user-chroot)\n- [Nickel](https://github.com/tweag/nickel)\n- [Awesome Nix](https://github.com/nix-community/awesome-nix)\n- [devshell](https://github.com/numtide/devshell)\n\n# Divnix\n\nThe divnix org is an open space that spontaneously formed out of \"the Nix\".\nIt is really just a place where otherwise unrelated people work\ntogether and get stuff done.\n\nIt's a place to stop \"geeking out in isolation\" (or within company boundaries).\nA place to experiment, learn together, and iterate quickly on best practices.\nThat's what it is.\n\nIt might eventually become a non-profit if that's not too complicated or, if those\ngoals are sufficiently upstreamed into \"the Nix\", dissolved.\n\n# License\n\nDigga is licensed under the [MIT License][mit].\n\n[mk-flake]: ./src/mkFlake\n[chat]: https://matrix.to/#/#devos:matrix.org\n[devshell]: https://github.com/numtide/devshell\n[examples]: https://github.com/divnix/digga/tree/main/examples\n[flakes]: https://wiki.nixos.org/wiki/Flakes\n[flake-utils-plus]: https://github.com/gytis-ivaskevicius/flake-utils-plus\n[giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants\n[home-manager]: https://github.com/nix-community/home-manager\n[issues]: https://github.com/divnix/digga/issues\n[mit]: https://mit-license.org\n[nix]: https://nixos.org/manual/nix/stable\n[nixpkgs]: https://github.com/nixos/nixpkgs\n[template]: ./examples/devos\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivnix%2Fdigga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdivnix%2Fdigga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivnix%2Fdigga/lists"}