mirror of
https://github.com/divnix/digga.git
synced 2024-09-11 06:55:55 +03:00
Merge #431
431: Make this repository digga r=Pacman99 a=Pacman99 closes: #430 This is just some git hacking to preserve both project's commit histories. Commands that I ran: ```sh git remote add digga git@github.com:divnix/digga git checkout -b digga-main digga/main git checkout -b merge-digga upstream/main mkdir ../devos mv * .editorconfig .envrc .gitignore ../devos/ mkdir examples mv ../devos examples/ git add . && git commit -m "tree: move everything into examples/devos" git checkout digga-main git rebase merge-digga # there were 3 merge conflicts with src/pkgs-lib/shell, not sure why but that file has been deleted so I just delt with them git checkout merge-digga git merge digga-main --ff-only git push upstream merge-digga ``` There are a lot of changes, so it'll be easier to review what exactly I did with git to get it this way. The only actual changes I personally made: - removed .gitmodules and downstream submodule - move devos into examples/devos - removed bud template from devos and added `devos` template to digga This doesn't cover devos docs, I think we will need a separate effort to merge devos docs into digga docs. Probably as a digga usage section or something. For now devos docs are just sitting in `examples/devos`. This PR should theoretically have the same amount of commits being added as the number of commits in digga itself. I think it ended up being around 50 less because bors commits aren't included for some reason. Co-authored-by: Parthiv Seetharaman <pachum99@myrdd.info> Co-authored-by: Pacman99 <pachum99@gmail.com> Co-authored-by: David Arnold <dar@xoe.solutions> Co-authored-by: Pacman99 <pachum99@myrdd.info> Co-authored-by: Dusk Banks <me@bb010g.com> Co-authored-by: Pacman99 <Pacman99@users.noreply.github.com>
This commit is contained in:
commit
8a77ad799f
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -35,4 +35,4 @@ Please search on the [issue tracker](../) before creating one.
|
||||
|
||||
## Your Environment
|
||||
<!--- Include relevant details about the environment you experienced the bug in. -->
|
||||
<!--- If you have run `bud update`, for example, post the flake.lock file. -->
|
||||
<!--- If you have run `flk update`, for example, post the flake.lock file. -->
|
||||
|
22
.github/ISSUE_TEMPLATE/community_request.md
vendored
22
.github/ISSUE_TEMPLATE/community_request.md
vendored
@ -1,22 +0,0 @@
|
||||
---
|
||||
name: Commuity Request
|
||||
about: inspire contribution to the `community` branch
|
||||
title: ''
|
||||
labels: 'community'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Your issue may already be reported!
|
||||
Please search on the [issue tracker](../) before creating one.
|
||||
|
||||
## Ideas
|
||||
<!--- The `community` branch is meant to provide various preconfigured system options, -->
|
||||
<!--- useful to all kinds of users. -->
|
||||
|
||||
<!--- The point is to engage the community for what it thinks are -->
|
||||
<!--- sane defaults for various tools. -->
|
||||
|
||||
## Requests
|
||||
<!--- Have a tool that you'd like to see a system profile for? -->
|
||||
<!--- Feel free to request it here. -->
|
16
.github/ISSUE_TEMPLATE/upstream_notice.md
vendored
16
.github/ISSUE_TEMPLATE/upstream_notice.md
vendored
@ -1,16 +0,0 @@
|
||||
---
|
||||
name: Upstream notice (Issues or Changes)
|
||||
about: Create an upstream notice to help our research
|
||||
title: '[ <put the upstream project> ]: <topic>'
|
||||
labels: 'upstream'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Link
|
||||
<!-- just place a link to the upstream issue, or PR -->
|
||||
|
||||
|
||||
## Context
|
||||
<!-- We want to make this as cheap for you as possible.
|
||||
Context is not required but helpful -->
|
27
.github/workflows/check.yml
vendored
27
.github/workflows/check.yml
vendored
@ -1,29 +1,40 @@
|
||||
name: "Check & Cachix"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- trying
|
||||
- staging
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
- uses: cachix/install-nix-action@v13
|
||||
- uses: actions/checkout@v2.4.0
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
- uses: cachix/install-nix-action@v16
|
||||
with:
|
||||
install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-2.4pre20210415_76980a1/install
|
||||
extra_nix_config: |
|
||||
experimental-features = nix-command flakes
|
||||
system-features = nixos-test benchmark big-parallel kvm recursive-nix
|
||||
substituters = https://nrdxp.cachix.org https://nix-community.cachix.org https://cache.nixos.org
|
||||
trusted-public-keys = nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||
|
||||
- uses: cachix/cachix-action@v10
|
||||
with:
|
||||
name: nrdxp
|
||||
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
- run: nix -Lv flake check
|
||||
- run: nix -Lv build ".#nixosConfigurations.NixOS.config.system.build.toplevel"
|
||||
- run: nix -Lv develop -c echo OK
|
||||
- run: nix -Lv develop --command bud --help
|
||||
|
||||
# Quick eval
|
||||
- run: nix develop --command evalnix
|
||||
|
||||
# Check the digga library
|
||||
- run: nix flake check --show-trace
|
||||
|
||||
# Check /examples/*
|
||||
- run: nix develop --command -- check-devos --show-trace
|
||||
- run: nix develop --command -- check-groupByConfig --show-trace
|
||||
- run: nix develop --command -- check-hmOnly --show-trace
|
||||
|
2
.github/workflows/mdbook_docs.yml
vendored
2
.github/workflows/mdbook_docs.yml
vendored
@ -24,4 +24,4 @@ jobs:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_branch: gh-pages
|
||||
publish_dir: ./doc/book
|
||||
cname: devos.divnix.com
|
||||
cname: digga.divnix.com
|
||||
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: main
|
||||
ref: master
|
||||
- name: Update Changelog
|
||||
uses: heinrichreimer/github-changelog-generator-action@v2.1.1
|
||||
with:
|
||||
@ -49,7 +49,7 @@ jobs:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: main
|
||||
ref: master
|
||||
|
||||
- name: Get Changelog Entry
|
||||
id: changelog_reader
|
||||
|
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,10 +1,2 @@
|
||||
result
|
||||
.direnv
|
||||
doc/index.html
|
||||
|
||||
# Result of bud commands
|
||||
vm
|
||||
iso
|
||||
doi
|
||||
|
||||
pkgs/_sources/.shake*
|
||||
|
108
CHANGELOG.md
108
CHANGELOG.md
@ -1,113 +1,19 @@
|
||||
# Changelog
|
||||
|
||||
## [v0.10.0](https://github.com/divnix/devos/tree/v0.10.0) (2021-05-24)
|
||||
## [v0.2.0](https://github.com/divnix/digga/tree/v0.2.0) (2021-06-08)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Providing an interface to nixpkgs.config [\#237](https://github.com/divnix/devos/issues/237)
|
||||
- Making the user available in profiles [\#230](https://github.com/divnix/devos/issues/230)
|
||||
- copy evaluation store paths to iso [\#195](https://github.com/divnix/devos/issues/195)
|
||||
- Extract custom system builds from devosSystem out of lib [\#170](https://github.com/divnix/devos/issues/170)
|
||||
- Allow setting of channel host-wide [\#117](https://github.com/divnix/devos/issues/117)
|
||||
- alacritty: CSIu support [\#51](https://github.com/divnix/devos/issues/51)
|
||||
- Overlays / Imports and treatment of non-nix files [\#26](https://github.com/divnix/digga/issues/26)
|
||||
- NixOS Veteran Migration [\#25](https://github.com/divnix/digga/issues/25)
|
||||
- Add option of devshellOverlays for devshell [\#21](https://github.com/divnix/digga/issues/21)
|
||||
- Is it a right way to enable the deploy-rs multi-arch support [\#18](https://github.com/divnix/digga/issues/18)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Cachix timeouts + how to disable nrdxp cachix \(if needed\) [\#294](https://github.com/divnix/devos/issues/294)
|
||||
- default.nix flake-compat is broken [\#285](https://github.com/divnix/devos/issues/285)
|
||||
- All suites return "attribute missing" [\#282](https://github.com/divnix/devos/issues/282)
|
||||
- nix is built two times [\#203](https://github.com/divnix/devos/issues/203)
|
||||
- fix lib docs [\#166](https://github.com/divnix/devos/issues/166)
|
||||
- Can't override nixpkgs sub-systems with deprecated attributes [\#13](https://github.com/divnix/digga/issues/13)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- eliminate userFlakeNixOS [\#257](https://github.com/divnix/devos/issues/257)
|
||||
- devos-as-library [\#214](https://github.com/divnix/devos/issues/214)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update evalArgs to match the new planned API [\#239](https://github.com/divnix/devos/pull/239)
|
||||
|
||||
## [v0.9.0](https://github.com/divnix/devos/tree/v0.9.0) (2021-04-19)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- pin inputs into iso live registry [\#190](https://github.com/divnix/devos/issues/190)
|
||||
- Pass 'self' to lib [\#169](https://github.com/divnix/devos/issues/169)
|
||||
- doc: quickstart "ISO. What next?" [\#167](https://github.com/divnix/devos/issues/167)
|
||||
- Integrate Android AOSP putting mobile under control [\#149](https://github.com/divnix/devos/issues/149)
|
||||
- Inoculate host identity on first use [\#132](https://github.com/divnix/devos/issues/132)
|
||||
- kubenix support [\#130](https://github.com/divnix/devos/issues/130)
|
||||
- Improve Home Manager support: profiles/suites, modules, extern, flake outputs [\#119](https://github.com/divnix/devos/issues/119)
|
||||
- Local CA \(between hosts\) [\#104](https://github.com/divnix/devos/issues/104)
|
||||
- Q5: git annex for machine state [\#68](https://github.com/divnix/devos/issues/68)
|
||||
- name space ./pkgs overlays [\#60](https://github.com/divnix/devos/issues/60)
|
||||
- remap global keys easily [\#57](https://github.com/divnix/devos/issues/57)
|
||||
- make pass state part of this repo's structure [\#56](https://github.com/divnix/devos/issues/56)
|
||||
- Incorporate ./shells [\#38](https://github.com/divnix/devos/issues/38)
|
||||
- Encrypt with \(r\)age [\#37](https://github.com/divnix/devos/issues/37)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- `pathsToImportedAttrs` does not accept directories [\#221](https://github.com/divnix/devos/issues/221)
|
||||
- Cachix caches aren't added to the configuration [\#208](https://github.com/divnix/devos/issues/208)
|
||||
- Issues with current changelog workflow [\#205](https://github.com/divnix/devos/issues/205)
|
||||
- iso: systemd service startup [\#194](https://github.com/divnix/devos/issues/194)
|
||||
- Help adding easy-hls-nix to devos [\#174](https://github.com/divnix/devos/issues/174)
|
||||
- `flk update` fails because of obsolete flag [\#159](https://github.com/divnix/devos/issues/159)
|
||||
- Expected that not all packages are exported? [\#151](https://github.com/divnix/devos/issues/151)
|
||||
- Segmentation fault when generating iso [\#150](https://github.com/divnix/devos/issues/150)
|
||||
|
||||
**Documentation:**
|
||||
|
||||
- doc: split iso [\#193](https://github.com/divnix/devos/issues/193)
|
||||
- lib: can depend on pkgs \(a la nixpkgs\#pkgs/pkgs-lib\) [\#147](https://github.com/divnix/devos/pull/147)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- FRRouting router implementation [\#154](https://github.com/divnix/devos/issues/154)
|
||||
- ARM aarch64 Support [\#72](https://github.com/divnix/devos/issues/72)
|
||||
|
||||
## [v0.8.0](https://github.com/divnix/devos/tree/v0.8.0) (2021-03-02)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- semi automatic update for /pkgs [\#118](https://github.com/divnix/devos/issues/118)
|
||||
- Home-manager external modules from flakes [\#106](https://github.com/divnix/devos/issues/106)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- My emacsGcc overlay is not working [\#146](https://github.com/divnix/devos/issues/146)
|
||||
- local flake registry freezes branches [\#142](https://github.com/divnix/devos/issues/142)
|
||||
- nixos-option no longer works after collect garbage [\#138](https://github.com/divnix/devos/issues/138)
|
||||
- Profiles imports are brittle, causing failure if imported twice [\#136](https://github.com/divnix/devos/issues/136)
|
||||
|
||||
## [0.7.0](https://github.com/divnix/devos/tree/0.7.0) (2021-02-20)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- add zoxide [\#53](https://github.com/divnix/devos/issues/53)
|
||||
- Multiarch support? [\#17](https://github.com/divnix/devos/issues/17)
|
||||
- initial multiArch support [\#18](https://github.com/divnix/devos/pull/18)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Missing shebang from flk.sh [\#131](https://github.com/divnix/devos/issues/131)
|
||||
- Rename Meta Issue [\#128](https://github.com/divnix/devos/issues/128)
|
||||
- specialisations break the `system` argument [\#46](https://github.com/divnix/devos/issues/46)
|
||||
- Revert "Add extraArgs to lib.nixosSystem call to add system args." [\#47](https://github.com/divnix/devos/pull/47)
|
||||
|
||||
**Documentation:**
|
||||
|
||||
- update home-manager urls [\#62](https://github.com/divnix/devos/pull/62)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- add github action for cachix build ci [\#59](https://github.com/divnix/devos/issues/59)
|
||||
|
||||
## [12052020](https://github.com/divnix/devos/tree/12052020) (2020-12-06)
|
||||
|
||||
## [07092020](https://github.com/divnix/devos/tree/07092020) (2020-07-09)
|
||||
## [v0.1.0](https://github.com/divnix/digga/tree/v0.1.0) (2021-05-15)
|
||||
|
||||
|
||||
|
||||
|
129
README.md
129
README.md
@ -1,95 +1,80 @@
|
||||
[![NixOS](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat&logo=NixOS&logoColor=white)](https://nixos.org)
|
||||
[![Bors enabled](https://bors.tech/images/badge_small.svg)](https://app.bors.tech/repositories/33905)
|
||||
[![MIT License](https://img.shields.io/github/license/divnix/devos)][mit]
|
||||
[![Chat](https://img.shields.io/matrix/devos:nixos.org.svg?label=%23devos%3Anixos.org&logo=matrix&server_fqdn=matrix.org)][matrix]
|
||||
[![NixOS](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat&logo=NixOS&logoColor=white)](https://nixos.org)
|
||||
[![Chat](https://img.shields.io/badge/chat-join%20us-brightgreen.svg?style=flat&logo=matrix&logoColor=white)](https://matrix.to/#/#devos:nixos.org)
|
||||
|
||||
> #### ⚠ Advisory ⚠
|
||||
> DevOS requires the [flakes][flakes] feature available via an _experimental_
|
||||
> branch of [nix][nix]. Until nix 2.4 is released, this project
|
||||
> should be considered unstable.
|
||||
|
||||
### Why?
|
||||
Make an awesome template for NixOS users, with consideration for common tools like [home-manager][home-manager],
|
||||
[devshell][devshell], and [more](./doc/integrations).
|
||||
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][flakes] repository:
|
||||
|
||||
### No. Why _flakes_?
|
||||
Flakes 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.
|
||||
- development shells (via [`numtide/devshell`][devshell]),
|
||||
- home environments (via [`nix-community/home-manager`][home-manager]), and
|
||||
- host configurations (via [`NixOS/nixpkgs/nixos`][nixpkgs]).
|
||||
|
||||
They 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.
|
||||
This library is based on [flake-utils-plus][].
|
||||
|
||||
## Getting Started
|
||||
Check out the [guide](https://devos.divnix.com/start) to get up and running.
|
||||
Also, have a look at [_flake.nix_](./flake.nix). If anything is not immediately
|
||||
discoverable via "[`digga`][digga]'s [`mkFlake`][mk-flake],
|
||||
please file a bug report.
|
||||
# Usage
|
||||
The best way to make use of library is with the [Official template][template].
|
||||
|
||||
### Status: Beta
|
||||
Although this project has already matured quite a bit, especially through
|
||||
recent outfactoring of [`digga`][digga], 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, and a [`develop`](https://github.com/divnix/devos/tree/develop) branch for the brave 😜
|
||||
You can also have a look at the different [examples][].
|
||||
|
||||
## In the Wild
|
||||
* @Pacman99: [Personal](https://gitlab.com/coffeetables/lower), [Server](https://gitlab.com/coffeetables/myrdd)
|
||||
* [@danielphan2003](https://github.com/danielphan2003/flk) and make sure to also check out [devos-ext-lib][devos-ext-lib]
|
||||
* [PubSolarOS](https://git.sr.ht/~b12f/pub-solar-os)
|
||||
# Philosophy
|
||||
|
||||
## Shoulders
|
||||
This work does not reinvent the wheel. It stands on the [shoulders of the
|
||||
following giants][giants]:
|
||||
In it's `lib.mkFlake` function, _Digga_ implements a well-specified API
|
||||
interface comprising four API containers that allow you to:
|
||||
|
||||
### :onion: — like the layers of an onion
|
||||
- [`divnix/digga`][digga]
|
||||
- [`gytis-ivaskevicius/flake-utils-plus`][fup]
|
||||
- [`numtide/flake-utils`][fu]
|
||||
1. configure **nixpkgs channels** including internal and external overlays,
|
||||
|
||||
### :family: — like family
|
||||
- [`numtide/devshell`][devshell]
|
||||
- [`serokell/deploy-rs`][deploy]
|
||||
- [`berberman/nvfetcher`][nvfetcher]
|
||||
- [`NixOS/nixpkgs`][nixpkgs]
|
||||
2. define **NixOS hosts** including internal and external NixOS modules as well as
|
||||
host defaults that apply to all hosts in the environment,
|
||||
|
||||
:heart:
|
||||
3. specify **user home environments** including internal and external home-manager
|
||||
modules, and
|
||||
|
||||
## Inspiration & Art
|
||||
- [hlissner/dotfiles][dotfiles]
|
||||
- [nix-user-chroot](https://github.com/nix-community/nix-user-chroot)
|
||||
- [Nickel](https://github.com/tweag/nickel)
|
||||
- [Awesome Nix](https://github.com/nix-community/awesome-nix)
|
||||
- [devshell](https://github.com/numtide/devshell)
|
||||
4. setup & combine a series of **devshells** that you like to have available in
|
||||
your projects.
|
||||
|
||||
## 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.
|
||||
## Modules, Profiles & Suites
|
||||
For NixOS- & home-manager-modules, _Digga_ allows you to distinguish between
|
||||
_modules_, _profiles_ and _suites_.
|
||||
|
||||
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.
|
||||
- **Modules** are abstract configurations that, while holding the implementation, do not
|
||||
set any system state.
|
||||
|
||||
It might eventually become a non-profit if that's not too complicated or, if those
|
||||
goals are sufficiently upstreamed into "the Nix", dissolved.
|
||||
- **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][issues].
|
||||
|
||||
To craft well thought out APIs we need all the thoughts regarding new ideas.
|
||||
|
||||
Pull Requests are just as amazing.
|
||||
|
||||
# License
|
||||
DevOS is licensed under the [MIT License][mit].
|
||||
|
||||
[community]: https://github.com/divnix/devos/tree/community
|
||||
[core]: https://github.com/divnix/devos
|
||||
[deploy]: https://github.com/serokell/deploy-rs
|
||||
Digga is licensed under the [MIT License][mit].
|
||||
|
||||
[chat]: https://matrix.to/#/#devos:matrix.org
|
||||
[devshell]: https://github.com/numtide/devshell
|
||||
[digga]: https://github.com/divnix/digga
|
||||
[dotfiles]: https://github.com/hlissner/dotfiles
|
||||
[flake-doc]: https://github.com/NixOS/nix/blob/master/src/nix/flake.md
|
||||
[examples]: https://github.com/divnix/digga/tree/main/examples
|
||||
[flakes]: https://nixos.wiki/wiki/Flakes
|
||||
[fu]: https://github.com/numtide/flake-utils
|
||||
[fup]: https://github.com/gytis-ivaskevicius/flake-utils-plus
|
||||
[giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants
|
||||
[home-manager]: https://nix-community.github.io/home-manager
|
||||
[flake-utils-plus]: https://github.com/gytis-ivaskevicius/flake-utils-plus
|
||||
[home-manager]: https://github.com/nix-community/home-manager
|
||||
[issues]: https://github.com/divnix/digga/issues
|
||||
[mit]: https://mit-license.org
|
||||
[mk-flake]: https://github.com/divnix/digga/tree/main/src/mkFlake
|
||||
[nix]: https://nixos.org/manual/nix/stable
|
||||
[nixos]: https://nixos.org/manual/nixos/stable
|
||||
[nixpkgs]: https://github.com/NixOS/nixpkgs
|
||||
[nvfetcher]: https://github.com/berberman/nvfetcher
|
||||
[please]: https://github.com/nrdxp/devos/tree/nrd
|
||||
[matrix]: https://matrix.to/#/#devos:nixos.org
|
||||
[devos-ext-lib]: https://github.com/divnix/devos-ext-lib
|
||||
[nixpkgs]: https://github.com/nixos/nixpkgs
|
||||
[template]: https://github.com/divnix/devos
|
||||
|
||||
|
@ -3,3 +3,5 @@ status = [ "check" ]
|
||||
required_approvals = 1
|
||||
|
||||
up_to_date_approvals = true
|
||||
|
||||
delete_merged_branches = true
|
||||
|
40
checks/default.nix
Normal file
40
checks/default.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, inputs # flake style polyfill not possible, since this depends on digga's internals
|
||||
}:
|
||||
let
|
||||
|
||||
nixpkgs = inputs.nixpkgs;
|
||||
digga = inputs.digga;
|
||||
lib = nixpkgs.lib // digga.lib;
|
||||
pkgs = import nixpkgs { inherit system; config = { }; overlays = [ ]; };
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
libTests = pkgs.runCommandNoCC "devos-lib-tests"
|
||||
{
|
||||
buildInputs = [
|
||||
pkgs.nix
|
||||
(
|
||||
let tests = import ./lib { inherit pkgs lib; }; in
|
||||
if tests == [ ] then null
|
||||
else throw (builtins.toJSON tests)
|
||||
)
|
||||
];
|
||||
} ''
|
||||
datadir="${pkgs.nix}/share"
|
||||
export TEST_ROOT=$(pwd)/test-tmp
|
||||
export NIX_BUILD_HOOK=
|
||||
export NIX_CONF_DIR=$TEST_ROOT/etc
|
||||
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
|
||||
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
|
||||
export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
||||
export NIX_STORE_DIR=$TEST_ROOT/store
|
||||
export PAGER=cat
|
||||
cacheDir=$TEST_ROOT/binary-cache
|
||||
nix-store --init
|
||||
|
||||
touch $out
|
||||
'';
|
||||
|
||||
}
|
23
checks/lib/default.nix
Normal file
23
checks/lib/default.nix
Normal file
@ -0,0 +1,23 @@
|
||||
{ pkgs, lib }:
|
||||
with lib;
|
||||
lib.runTests {
|
||||
testRakeLeaves = {
|
||||
expr = rakeLeaves ./profiles;
|
||||
expected = {
|
||||
f = ./profiles/f.nix;
|
||||
foo = ./profiles/foo;
|
||||
t = {
|
||||
bar = ./profiles/t/bar.nix;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testFlattenTree = {
|
||||
expr = flattenTree (rakeLeaves ./profiles);
|
||||
expected = {
|
||||
f = ./profiles/f.nix;
|
||||
foo = ./profiles/foo;
|
||||
"t.bar" = ./profiles/t/bar.nix;
|
||||
};
|
||||
};
|
||||
}
|
1
checks/lib/profiles/f.nix
Normal file
1
checks/lib/profiles/f.nix
Normal file
@ -0,0 +1 @@
|
||||
{ }
|
3
checks/lib/profiles/foo/default.nix
Normal file
3
checks/lib/profiles/foo/default.nix
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
bar = 5;
|
||||
}
|
1
checks/lib/profiles/t/bar.nix
Normal file
1
checks/lib/profiles/t/bar.nix
Normal file
@ -0,0 +1 @@
|
||||
{ }
|
121
deprecated.nix
Normal file
121
deprecated.nix
Normal file
@ -0,0 +1,121 @@
|
||||
{ lib, flake-utils-plus, internal-modules, importers, nixosModules }:
|
||||
let
|
||||
importers' = importers;
|
||||
in
|
||||
lib.warn ''
|
||||
You are accessing a deprecated item of the digga lib.
|
||||
Please update timely, it will be remove soon.
|
||||
''
|
||||
rec {
|
||||
|
||||
mkSuites = lib.warn ''
|
||||
Deprecated Function: mkSuites.
|
||||
''
|
||||
(
|
||||
{ suites, profiles }:
|
||||
let
|
||||
profileSet = lib.genAttrs' profiles (path: {
|
||||
name = baseNameOf path;
|
||||
value = mkProfileAttrs (toString path);
|
||||
});
|
||||
in
|
||||
lib.mapAttrs (_: v: lib.profileMap v) (suites profileSet)
|
||||
)
|
||||
;
|
||||
|
||||
mkProfileAttrs = lib.warn ''
|
||||
Deprecated Function: mkProfileAttrs.
|
||||
''
|
||||
(
|
||||
dir:
|
||||
let
|
||||
imports =
|
||||
let
|
||||
files = builtins.readDir dir;
|
||||
|
||||
p = n: v:
|
||||
v == "directory"
|
||||
&& n != "profiles";
|
||||
in
|
||||
lib.filterAttrs p files;
|
||||
|
||||
f = n: _:
|
||||
lib.optionalAttrs
|
||||
(lib.pathExists (dir + "/${n}/default.nix"))
|
||||
{ default = dir + "/${n}"; }
|
||||
// mkProfileAttrs (dir + "/${n}");
|
||||
in
|
||||
lib.mapAttrs f imports
|
||||
)
|
||||
;
|
||||
|
||||
profileMap =
|
||||
lib.warn ''
|
||||
Deprecated Function: profileMap.
|
||||
''
|
||||
(
|
||||
list: map (profile: profile.default) (lib.flatten list)
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
exporters =
|
||||
lib.warn ''
|
||||
Deprecated Attribute Set: lib.exporters.
|
||||
|
||||
Please use export* functions instead:
|
||||
lib.exporters.modulesFromList -> lib.exportModules
|
||||
lib.exporters.fromOverlays -> lib.exportPackages
|
||||
lib.exporters.internalOverlays -> lib.exportOverlays
|
||||
''
|
||||
{
|
||||
modulesFromList = flake-utils-plus.lib.exportModules;
|
||||
fromOverlays = flake-utils-plus.lib.exportPackages;
|
||||
internalOverlays = flake-utils-plus.lib.exportOverlays;
|
||||
}
|
||||
;
|
||||
|
||||
modules =
|
||||
lib.warn ''
|
||||
Deprecated Attribute Set: lib.modules.
|
||||
|
||||
Internal modules 'customBuilds', 'hmNixosDefaults' & 'globalDefaults'
|
||||
will be completely removed from the api soon.
|
||||
|
||||
Please use digga.nixosModules for exported modules or proto-modules:
|
||||
lib.modules.isoConfig -> nixosModules.boostrapIso
|
||||
''
|
||||
(
|
||||
internal-modules // { isoConfig = nixosModules.boostrapIso; }
|
||||
)
|
||||
;
|
||||
|
||||
importModules =
|
||||
lib.warn ''
|
||||
Deprecated Function: lib.importModules.
|
||||
|
||||
Use lib.importExportableModules instead to set `exportedModules` option
|
||||
''
|
||||
importers'.importExportableModules;
|
||||
|
||||
importers =
|
||||
lib.warn ''
|
||||
Deprecated Attribute Set: lib.importers.
|
||||
|
||||
Please use import* functions instead:
|
||||
lib.importers.overlays -> lib.importOverlays
|
||||
lib.importers.modules -> lib.importModules
|
||||
lib.importers.hosts -> lib.importHosts
|
||||
lib.importers.rakeLeaves -> lib.rakeLeaves
|
||||
lib.importers.flattenTree -> lib.flattenTree
|
||||
''
|
||||
{
|
||||
overlays = importers'.importOverlays;
|
||||
modules = importers'.importModules;
|
||||
hosts = importers'.importHosts;
|
||||
rakeLeaves = importers'.rakeLeaves;
|
||||
flattenTree = importers'.flattenTree;
|
||||
}
|
||||
;
|
||||
|
||||
}
|
@ -1,18 +1,16 @@
|
||||
# Pull Requests
|
||||
|
||||
## TL;DR;
|
||||
# TL;DR;
|
||||
- **Target Branch**: `main`
|
||||
- **Merge Policy**: [`bors`][bors] is always right (→ `bors try`)
|
||||
- **Docs**: every changeset is expected to contain doc updates
|
||||
- **Docs**: every change set is expected to contain doc updates
|
||||
- **Commit Msg**: be a poet! Comprehensive and explanatory commit messages
|
||||
should cover the motivation and use case in an easily understandable manner
|
||||
even when read after a few months.
|
||||
- **Test Driven Development**: please default to test driven development where possible.
|
||||
- **Test Driven Development**: please default to test driven development you can
|
||||
make use of the `./examples` & `./e2e` and wire test up in the devshell.
|
||||
|
||||
### Within the Devshell (`nix develop`)
|
||||
- **Hooks**: please `git commit` within the devshell
|
||||
- **Fail Early**: please run from within the devshell on your local machine:
|
||||
- `nix flake check`
|
||||
- **Fail Early**: please run `check-all` from within the devshell on your local machine
|
||||
|
||||
[bors]: https://bors.tech
|
||||
|
||||
|
@ -1,28 +1,10 @@
|
||||
# Summary
|
||||
|
||||
- [Introduction](../README.md)
|
||||
- [Quick Start](./start/index.md)
|
||||
- [ISO](./start/iso.md)
|
||||
- [Bootstrapping](./start/bootstrapping.md)
|
||||
- [From NixOS](./start/from-nixos.md)
|
||||
- [Key Concepts](./concepts/index.md)
|
||||
- [Hosts](./concepts/hosts.md)
|
||||
- [Overrides](./concepts/overrides.md)
|
||||
- [Profiles](./concepts/profiles.md)
|
||||
- [Suites](./concepts/suites.md)
|
||||
- [Users](./concepts/users.md)
|
||||
- [Outputs](./outputs/index.md)
|
||||
- [Modules](./outputs/modules.md)
|
||||
- [Overlays](./outputs/overlays.md)
|
||||
- [Packages](./outputs/pkgs.md)
|
||||
- [Concerns]()
|
||||
- [Secrets](./secrets.md)
|
||||
- [Tests](./tests.md)
|
||||
- [Helper Script – `bud`](./bud/index.md)
|
||||
- [get](./bud/get.md)
|
||||
- [Integrations](./integrations/index.md)
|
||||
- [Cachix](./integrations/cachix.md)
|
||||
- [Deploy RS](./integrations/deploy.md)
|
||||
- [NvFetcher](./integrations/nvfetcher.md)
|
||||
- [Hercules CI](./integrations/hercules.md)
|
||||
- [API Reference](./api-reference.md)
|
||||
- [Channels](./api-reference-channels.md)
|
||||
- [Home](./api-reference-home.md)
|
||||
- [Devshell](./api-reference-devshell.md)
|
||||
- [NixOS](./api-reference-nixos.md)
|
||||
- [Library Reference]()
|
||||
- [Contributing](./CONTRIBUTING.md)
|
||||
|
75
doc/api-reference-channels.md
Executable file
75
doc/api-reference-channels.md
Executable file
@ -0,0 +1,75 @@
|
||||
# Channels API Container
|
||||
Configure your channels that you can use throughout your configurations.
|
||||
|
||||
> #### ⚠ Gotcha ⚠
|
||||
> Devshell & (non-host-specific) Home-Manager `pkgs` instances are rendered off the
|
||||
> `nixos.hostDefaults.channelName` (default) channel.
|
||||
|
||||
|
||||
## channels
|
||||
nixpkgs channels to create
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set of submodules or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## channels.\<name\>.config
|
||||
nixpkgs config for this channel
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## channels.\<name\>.input
|
||||
nixpkgs flake input to use for this channel
|
||||
|
||||
|
||||
*_Type_*:
|
||||
nix flake
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
"self.inputs.<name>"
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## channels.\<name\>.overlays
|
||||
overlays to apply to this channel
|
||||
these will get exported under the 'overlays' flake output
|
||||
as \<channel\>/\<name\> and any overlay pulled from ${inputs}
|
||||
will be filtered out
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid Nixpkgs overlay or path convertible to its or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
72
doc/api-reference-devshell.md
Executable file
72
doc/api-reference-devshell.md
Executable file
@ -0,0 +1,72 @@
|
||||
# Devshell API Container
|
||||
Configure your devshell module collections of your environment.
|
||||
|
||||
|
||||
## devshell
|
||||
Modules to include in your DevOS shell. the `modules` argument
|
||||
will be exported under the `devshellModules` output
|
||||
|
||||
|
||||
*_Type_*:
|
||||
submodule or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## devshell.exportedModules
|
||||
modules to include in all hosts and export to devshellModules output
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid module or path convertible to its or anything convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## devshell.externalModules
|
||||
The `externalModules` option has been removed.
|
||||
Any modules that should be exported should be defined with the `exportedModules`
|
||||
option and all other modules should just go into the `modules` option.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## devshell.modules
|
||||
modules to include that won't be exported
|
||||
meant importing modules from external flakes
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
167
doc/api-reference-home.md
Executable file
167
doc/api-reference-home.md
Executable file
@ -0,0 +1,167 @@
|
||||
# Home-Manager API Container
|
||||
Configure your home manager modules, profiles & suites.
|
||||
|
||||
|
||||
## home
|
||||
hosts, modules, suites, and profiles for home-manager
|
||||
|
||||
|
||||
*_Type_*:
|
||||
submodule or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.exportedModules
|
||||
modules to include in all hosts and export to homeModules output
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.externalModules
|
||||
The `externalModules` option has been removed.
|
||||
Any modules that should be exported should be defined with the `exportedModules`
|
||||
option and all other modules should just go into the `modules` option.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.importables
|
||||
Packages of paths to be passed to modules as `specialArgs`.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.importables.suites
|
||||
collections of profiles
|
||||
|
||||
|
||||
*_Type_*:
|
||||
null or attribute set of list of paths or anything convertible to its or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
null
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.modules
|
||||
modules to include that won't be exported
|
||||
meant importing modules from external flakes
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.profiles
|
||||
WARNING: The 'suites' and `profiles` options have been deprecated, you can now create
|
||||
both with the importables option. `rakeLeaves` can be used to create profiles and
|
||||
by passing a module or `rec` set to `importables`, suites can access profiles.
|
||||
Example:
|
||||
```
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles;
|
||||
suites = with profiles; { };
|
||||
}
|
||||
```
|
||||
See https://github.com/divnix/digga/pull/30 for more details
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of paths or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## home.suites
|
||||
WARNING: The 'suites' and `profiles` options have been deprecated, you can now create
|
||||
both with the importables option. `rakeLeaves` can be used to create profiles and
|
||||
by passing a module or `rec` set to `importables`, suites can access profiles.
|
||||
Example:
|
||||
```
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles;
|
||||
suites = with profiles; { };
|
||||
}
|
||||
```
|
||||
See https://github.com/divnix/digga/pull/30 for more details
|
||||
|
||||
|
||||
*_Type_*:
|
||||
function that evaluates to a(n) attrs or path convertible to it
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## home.users
|
||||
HM users that can be deployed portably without a host.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set of HM user configs
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
282
doc/api-reference-nixos.md
Executable file
282
doc/api-reference-nixos.md
Executable file
@ -0,0 +1,282 @@
|
||||
# NixOS API Container
|
||||
Configure your nixos modules, profiles & suites.
|
||||
|
||||
|
||||
## nixos
|
||||
hosts, modules, suites, and profiles for NixOS
|
||||
|
||||
|
||||
*_Type_*:
|
||||
submodule or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults
|
||||
Defaults for all hosts.
|
||||
the modules passed under hostDefaults will be exported
|
||||
to the 'nixosModules' flake output.
|
||||
They will also be added to all hosts.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
submodule
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults.channelName
|
||||
Channel this host should follow
|
||||
|
||||
|
||||
*_Type_*:
|
||||
channel defined in `channels`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults.exportedModules
|
||||
modules to include in all hosts and export to nixosModules output
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults.externalModules
|
||||
The `externalModules` option has been removed.
|
||||
Any modules that should be exported should be defined with the `exportedModules`
|
||||
option and all other modules should just go into the `modules` option.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults.modules
|
||||
modules to include that won't be exported
|
||||
meant importing modules from external flakes
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hostDefaults.system
|
||||
system for this host
|
||||
|
||||
|
||||
*_Type_*:
|
||||
null or system defined in `supportedSystems`
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
null
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hosts
|
||||
configurations to include in the nixosConfigurations output
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set of submodules
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hosts.\<name\>.channelName
|
||||
Channel this host should follow
|
||||
|
||||
|
||||
*_Type_*:
|
||||
null or channel defined in `channels`
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
null
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hosts.\<name\>.modules
|
||||
modules to include
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid modules or anything convertible to it or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hosts.\<name\>.system
|
||||
system for this host
|
||||
|
||||
|
||||
*_Type_*:
|
||||
null or system defined in `supportedSystems`
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
null
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.hosts.\<name\>.tests
|
||||
tests to run
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of valid NixOS test or path convertible to its or anything convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
*_Example_*
|
||||
```
|
||||
{"_type":"literalExpression","text":"[\n {\n name = \"testname1\";\n machine = { ... };\n testScript = ''\n # ...\n '';\n }\n ({ corutils, writers, ... }: {\n name = \"testname2\";\n machine = { ... };\n testScript = ''\n # ...\n '';\n })\n ./path/to/test.nix\n];\n"}
|
||||
```
|
||||
|
||||
|
||||
## nixos.importables
|
||||
Packages of paths to be passed to modules as `specialArgs`.
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.importables.suites
|
||||
collections of profiles
|
||||
|
||||
|
||||
*_Type_*:
|
||||
null or attribute set of list of paths or anything convertible to its or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
null
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.profiles
|
||||
WARNING: The 'suites' and `profiles` options have been deprecated, you can now create
|
||||
both with the importables option. `rakeLeaves` can be used to create profiles and
|
||||
by passing a module or `rec` set to `importables`, suites can access profiles.
|
||||
Example:
|
||||
```
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles;
|
||||
suites = with profiles; { };
|
||||
}
|
||||
```
|
||||
See https://github.com/divnix/digga/pull/30 for more details
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of paths or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
[]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## nixos.suites
|
||||
WARNING: The 'suites' and `profiles` options have been deprecated, you can now create
|
||||
both with the importables option. `rakeLeaves` can be used to create profiles and
|
||||
by passing a module or `rec` set to `importables`, suites can access profiles.
|
||||
Example:
|
||||
```
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles;
|
||||
suites = with profiles; { };
|
||||
}
|
||||
```
|
||||
See https://github.com/divnix/digga/pull/30 for more details
|
||||
|
||||
|
||||
*_Type_*:
|
||||
function that evaluates to a(n) attrs or path convertible to it
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
79
doc/api-reference.md
Executable file
79
doc/api-reference.md
Executable file
@ -0,0 +1,79 @@
|
||||
# Top Level API
|
||||
`digga`'s top level API. API Containers are documented in their respective sub-chapter:
|
||||
|
||||
- [Channels](./api-reference-channels.md)
|
||||
- [Home](./api-reference-home.md)
|
||||
- [Devshell](./api-reference-devshell.md)
|
||||
- [NixOS](./api-reference-nixos.md)
|
||||
|
||||
## channelsConfig
|
||||
nixpkgs config for all channels
|
||||
|
||||
|
||||
*_Type_*:
|
||||
attribute set or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
{}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## inputs
|
||||
The flake's inputs
|
||||
|
||||
*_Type_*:
|
||||
attribute set of nix flakes
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## outputsBuilder
|
||||
builder for flake system-spaced outputs
|
||||
The builder gets passed an attrset of all channels
|
||||
|
||||
|
||||
*_Type_*:
|
||||
function that evaluates to a(n) attrs or path convertible to it
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
"channels: { }"
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## self
|
||||
The flake to create the DevOS outputs for
|
||||
|
||||
*_Type_*:
|
||||
nix flake
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## supportedSystems
|
||||
The systems supported by this flake
|
||||
|
||||
|
||||
*_Type_*:
|
||||
list of strings
|
||||
|
||||
|
||||
*_Default_*
|
||||
```
|
||||
["aarch64-linux","aarch64-darwin","i686-linux","x86_64-darwin","x86_64-linux"]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
@ -1,6 +1,10 @@
|
||||
[book]
|
||||
authors = ["Timothy DeHerrera"]
|
||||
authors = [
|
||||
"Timothy DeHerrera",
|
||||
"Parthiv Seetharaman",
|
||||
"David Arnold",
|
||||
]
|
||||
language = "en"
|
||||
multilingual = false
|
||||
src = "."
|
||||
title = "devos docs"
|
||||
title = "Digga Library Docs"
|
||||
|
15
doc/tests.md
15
doc/tests.md
@ -12,12 +12,21 @@ packages during their [check phase][check]. All packages and their tests will
|
||||
be built during CI.
|
||||
|
||||
## Integration Tests
|
||||
All your profiles defined in suites will be tested in a NixOS VM.
|
||||
All your profiles defined in suites can be tested against an individual host.
|
||||
Simply use digga's pre-baked `digga.lib.allProfilesTest` like so:
|
||||
|
||||
```nix
|
||||
{
|
||||
hosts = {
|
||||
Morty.tests = [ allProfilesTest ];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
You can write integration tests for one or more NixOS VMs that can,
|
||||
optionally, be networked together, and yes, it's as awesome as it sounds!
|
||||
|
||||
Be sure to use the `mkTest` function from digga, `digga.lib.pkgs-lib.mkTest`
|
||||
Be sure to use the `mkTest` function from Digga, `digga.lib.mkTest`
|
||||
which wraps the official [testing-python][testing-python] function to ensure
|
||||
that the system is setup exactly as it is for a bare DevOS system. There are
|
||||
already great resources for learning how to use these tests effectively,
|
||||
@ -26,7 +35,7 @@ and the examples in [nixpkgs][nixos-tests].
|
||||
|
||||
[test-doc]: https://nixos.org/manual/nixos/stable/index.html#sec-nixos-tests
|
||||
[test-blog]: https://www.haskellforall.com/2020/11/how-to-use-nixos-for-lightweight.html
|
||||
[default]: https://github.com/divnix/devos/tree/main/tests/default.nix
|
||||
[default]: https://github.com/divnix/devos/tree/core/tests/default.nix
|
||||
[run-test]: https://github.com/NixOS/nixpkgs/blob/6571462647d7316aff8b8597ecdf5922547bf365/lib/debug.nix#L154-L166
|
||||
[nixos-tests]: https://github.com/NixOS/nixpkgs/tree/master/nixos/tests
|
||||
[testing-python]: https://github.com/NixOS/nixpkgs/tree/master/nixos/lib/testing-python.nix
|
||||
|
32
examples/devos/.editorconfig
Normal file
32
examples/devos/.editorconfig
Normal file
@ -0,0 +1,32 @@
|
||||
# Editor configuration, see http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Ignore diffs/patches
|
||||
[*.{diff,patch}]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
indent_size = unset
|
||||
|
||||
[{.*,secrets}/**]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
charset = unset
|
||||
indent_style = unset
|
||||
indent_size = unset
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
10
examples/devos/.gitignore
vendored
Normal file
10
examples/devos/.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
result
|
||||
.direnv
|
||||
doc/index.html
|
||||
|
||||
# Result of bud commands
|
||||
vm
|
||||
iso
|
||||
doi
|
||||
|
||||
pkgs/_sources/.shake*
|
114
examples/devos/CHANGELOG.md
Normal file
114
examples/devos/CHANGELOG.md
Normal file
@ -0,0 +1,114 @@
|
||||
# Changelog
|
||||
|
||||
## [v0.10.0](https://github.com/divnix/devos/tree/v0.10.0) (2021-05-24)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Providing an interface to nixpkgs.config [\#237](https://github.com/divnix/devos/issues/237)
|
||||
- Making the user available in profiles [\#230](https://github.com/divnix/devos/issues/230)
|
||||
- copy evaluation store paths to iso [\#195](https://github.com/divnix/devos/issues/195)
|
||||
- Extract custom system builds from devosSystem out of lib [\#170](https://github.com/divnix/devos/issues/170)
|
||||
- Allow setting of channel host-wide [\#117](https://github.com/divnix/devos/issues/117)
|
||||
- alacritty: CSIu support [\#51](https://github.com/divnix/devos/issues/51)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Cachix timeouts + how to disable nrdxp cachix \(if needed\) [\#294](https://github.com/divnix/devos/issues/294)
|
||||
- default.nix flake-compat is broken [\#285](https://github.com/divnix/devos/issues/285)
|
||||
- All suites return "attribute missing" [\#282](https://github.com/divnix/devos/issues/282)
|
||||
- nix is built two times [\#203](https://github.com/divnix/devos/issues/203)
|
||||
- fix lib docs [\#166](https://github.com/divnix/devos/issues/166)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- eliminate userFlakeNixOS [\#257](https://github.com/divnix/devos/issues/257)
|
||||
- devos-as-library [\#214](https://github.com/divnix/devos/issues/214)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update evalArgs to match the new planned API [\#239](https://github.com/divnix/devos/pull/239)
|
||||
|
||||
## [v0.9.0](https://github.com/divnix/devos/tree/v0.9.0) (2021-04-19)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- pin inputs into iso live registry [\#190](https://github.com/divnix/devos/issues/190)
|
||||
- Pass 'self' to lib [\#169](https://github.com/divnix/devos/issues/169)
|
||||
- doc: quickstart "ISO. What next?" [\#167](https://github.com/divnix/devos/issues/167)
|
||||
- Integrate Android AOSP putting mobile under control [\#149](https://github.com/divnix/devos/issues/149)
|
||||
- Inoculate host identity on first use [\#132](https://github.com/divnix/devos/issues/132)
|
||||
- kubenix support [\#130](https://github.com/divnix/devos/issues/130)
|
||||
- Improve Home Manager support: profiles/suites, modules, extern, flake outputs [\#119](https://github.com/divnix/devos/issues/119)
|
||||
- Local CA \(between hosts\) [\#104](https://github.com/divnix/devos/issues/104)
|
||||
- Q5: git annex for machine state [\#68](https://github.com/divnix/devos/issues/68)
|
||||
- name space ./pkgs overlays [\#60](https://github.com/divnix/devos/issues/60)
|
||||
- remap global keys easily [\#57](https://github.com/divnix/devos/issues/57)
|
||||
- make pass state part of this repo's structure [\#56](https://github.com/divnix/devos/issues/56)
|
||||
- Incorporate ./shells [\#38](https://github.com/divnix/devos/issues/38)
|
||||
- Encrypt with \(r\)age [\#37](https://github.com/divnix/devos/issues/37)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- `pathsToImportedAttrs` does not accept directories [\#221](https://github.com/divnix/devos/issues/221)
|
||||
- Cachix caches aren't added to the configuration [\#208](https://github.com/divnix/devos/issues/208)
|
||||
- Issues with current changelog workflow [\#205](https://github.com/divnix/devos/issues/205)
|
||||
- iso: systemd service startup [\#194](https://github.com/divnix/devos/issues/194)
|
||||
- Help adding easy-hls-nix to devos [\#174](https://github.com/divnix/devos/issues/174)
|
||||
- `flk update` fails because of obsolete flag [\#159](https://github.com/divnix/devos/issues/159)
|
||||
- Expected that not all packages are exported? [\#151](https://github.com/divnix/devos/issues/151)
|
||||
- Segmentation fault when generating iso [\#150](https://github.com/divnix/devos/issues/150)
|
||||
|
||||
**Documentation:**
|
||||
|
||||
- doc: split iso [\#193](https://github.com/divnix/devos/issues/193)
|
||||
- lib: can depend on pkgs \(a la nixpkgs\#pkgs/pkgs-lib\) [\#147](https://github.com/divnix/devos/pull/147)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- FRRouting router implementation [\#154](https://github.com/divnix/devos/issues/154)
|
||||
- ARM aarch64 Support [\#72](https://github.com/divnix/devos/issues/72)
|
||||
|
||||
## [v0.8.0](https://github.com/divnix/devos/tree/v0.8.0) (2021-03-02)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- semi automatic update for /pkgs [\#118](https://github.com/divnix/devos/issues/118)
|
||||
- Home-manager external modules from flakes [\#106](https://github.com/divnix/devos/issues/106)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- My emacsGcc overlay is not working [\#146](https://github.com/divnix/devos/issues/146)
|
||||
- local flake registry freezes branches [\#142](https://github.com/divnix/devos/issues/142)
|
||||
- nixos-option no longer works after collect garbage [\#138](https://github.com/divnix/devos/issues/138)
|
||||
- Profiles imports are brittle, causing failure if imported twice [\#136](https://github.com/divnix/devos/issues/136)
|
||||
|
||||
## [0.7.0](https://github.com/divnix/devos/tree/0.7.0) (2021-02-20)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- add zoxide [\#53](https://github.com/divnix/devos/issues/53)
|
||||
- Multiarch support? [\#17](https://github.com/divnix/devos/issues/17)
|
||||
- initial multiArch support [\#18](https://github.com/divnix/devos/pull/18)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Missing shebang from flk.sh [\#131](https://github.com/divnix/devos/issues/131)
|
||||
- Rename Meta Issue [\#128](https://github.com/divnix/devos/issues/128)
|
||||
- specialisations break the `system` argument [\#46](https://github.com/divnix/devos/issues/46)
|
||||
- Revert "Add extraArgs to lib.nixosSystem call to add system args." [\#47](https://github.com/divnix/devos/pull/47)
|
||||
|
||||
**Documentation:**
|
||||
|
||||
- update home-manager urls [\#62](https://github.com/divnix/devos/pull/62)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- add github action for cachix build ci [\#59](https://github.com/divnix/devos/issues/59)
|
||||
|
||||
## [12052020](https://github.com/divnix/devos/tree/12052020) (2020-12-06)
|
||||
|
||||
## [07092020](https://github.com/divnix/devos/tree/07092020) (2020-07-09)
|
||||
|
||||
|
||||
|
||||
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
18
examples/devos/COPYING
Normal file
18
examples/devos/COPYING
Normal file
@ -0,0 +1,18 @@
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
95
examples/devos/README.md
Normal file
95
examples/devos/README.md
Normal file
@ -0,0 +1,95 @@
|
||||
[![NixOS](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat&logo=NixOS&logoColor=white)](https://nixos.org)
|
||||
[![MIT License](https://img.shields.io/github/license/divnix/devos)][mit]
|
||||
[![Chat](https://img.shields.io/matrix/devos:nixos.org.svg?label=%23devos%3Anixos.org&logo=matrix&server_fqdn=matrix.org)][matrix]
|
||||
|
||||
> #### ⚠ Advisory ⚠
|
||||
> DevOS requires the [flakes][flakes] feature available via an _experimental_
|
||||
> branch of [nix][nix]. Until nix 2.4 is released, this project
|
||||
> should be considered unstable.
|
||||
|
||||
### Why?
|
||||
Make an awesome template for NixOS users, with consideration for common tools like [home-manager][home-manager],
|
||||
[devshell][devshell], and [more](./doc/integrations).
|
||||
|
||||
### No. Why _flakes_?
|
||||
Flakes 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.
|
||||
|
||||
They 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.
|
||||
|
||||
## Getting Started
|
||||
Check out the [guide](https://devos.divnix.com/start) to get up and running.
|
||||
Also, have a look at [_flake.nix_](./flake.nix). If anything is not immediately
|
||||
discoverable via "[`digga`][digga]'s [`mkFlake`][mk-flake],
|
||||
please file a bug report.
|
||||
|
||||
### Status: Beta
|
||||
Although this project has already matured quite a bit, especially through
|
||||
recent outfactoring of [`digga`][digga], 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, and a [`develop`](https://github.com/divnix/devos/tree/develop) branch for the brave 😜
|
||||
|
||||
## In the Wild
|
||||
* @Pacman99: [Personal](https://gitlab.com/coffeetables/lower), [Server](https://gitlab.com/coffeetables/myrdd)
|
||||
* [@danielphan2003](https://github.com/danielphan2003/flk) and make sure to also check out [devos-ext-lib][devos-ext-lib]
|
||||
* [PubSolarOS](https://git.sr.ht/~b12f/pub-solar-os)
|
||||
|
||||
## Shoulders
|
||||
This work does not reinvent the wheel. It stands on the [shoulders of the
|
||||
following giants][giants]:
|
||||
|
||||
### :onion: — like the layers of an onion
|
||||
- [`divnix/digga`][digga]
|
||||
- [`gytis-ivaskevicius/flake-utils-plus`][fup]
|
||||
- [`numtide/flake-utils`][fu]
|
||||
|
||||
### :family: — like family
|
||||
- [`numtide/devshell`][devshell]
|
||||
- [`serokell/deploy-rs`][deploy]
|
||||
- [`berberman/nvfetcher`][nvfetcher]
|
||||
- [`NixOS/nixpkgs`][nixpkgs]
|
||||
|
||||
:heart:
|
||||
|
||||
## Inspiration & Art
|
||||
- [hlissner/dotfiles][dotfiles]
|
||||
- [nix-user-chroot](https://github.com/nix-community/nix-user-chroot)
|
||||
- [Nickel](https://github.com/tweag/nickel)
|
||||
- [Awesome Nix](https://github.com/nix-community/awesome-nix)
|
||||
- [devshell](https://github.com/numtide/devshell)
|
||||
|
||||
## 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
|
||||
DevOS is licensed under the [MIT License][mit].
|
||||
|
||||
[community]: https://github.com/divnix/devos/tree/community
|
||||
[core]: https://github.com/divnix/devos
|
||||
[deploy]: https://github.com/serokell/deploy-rs
|
||||
[devshell]: https://github.com/numtide/devshell
|
||||
[digga]: https://github.com/divnix/digga
|
||||
[dotfiles]: https://github.com/hlissner/dotfiles
|
||||
[flake-doc]: https://github.com/NixOS/nix/blob/master/src/nix/flake.md
|
||||
[flakes]: https://nixos.wiki/wiki/Flakes
|
||||
[fu]: https://github.com/numtide/flake-utils
|
||||
[fup]: https://github.com/gytis-ivaskevicius/flake-utils-plus
|
||||
[giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants
|
||||
[home-manager]: https://nix-community.github.io/home-manager
|
||||
[mit]: https://mit-license.org
|
||||
[mk-flake]: https://github.com/divnix/digga/tree/main/src/mkFlake
|
||||
[nix]: https://nixos.org/manual/nix/stable
|
||||
[nixos]: https://nixos.org/manual/nixos/stable
|
||||
[nixpkgs]: https://github.com/NixOS/nixpkgs
|
||||
[nvfetcher]: https://github.com/berberman/nvfetcher
|
||||
[please]: https://github.com/nrdxp/devos/tree/nrd
|
||||
[matrix]: https://matrix.to/#/#devos:nixos.org
|
||||
[devos-ext-lib]: https://github.com/divnix/devos-ext-lib
|
5
examples/devos/bors.toml
Normal file
5
examples/devos/bors.toml
Normal file
@ -0,0 +1,5 @@
|
||||
status = [ "check" ]
|
||||
|
||||
required_approvals = 1
|
||||
|
||||
up_to_date_approvals = true
|
1
examples/devos/doc/.gitignore
vendored
Normal file
1
examples/devos/doc/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
book
|
18
examples/devos/doc/CONTRIBUTING.md
Normal file
18
examples/devos/doc/CONTRIBUTING.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Pull Requests
|
||||
|
||||
## TL;DR;
|
||||
- **Target Branch**: `main`
|
||||
- **Merge Policy**: [`bors`][bors] is always right (→ `bors try`)
|
||||
- **Docs**: every changeset is expected to contain doc updates
|
||||
- **Commit Msg**: be a poet! Comprehensive and explanatory commit messages
|
||||
should cover the motivation and use case in an easily understandable manner
|
||||
even when read after a few months.
|
||||
- **Test Driven Development**: please default to test driven development where possible.
|
||||
|
||||
### Within the Devshell (`nix develop`)
|
||||
- **Hooks**: please `git commit` within the devshell
|
||||
- **Fail Early**: please run from within the devshell on your local machine:
|
||||
- `nix flake check`
|
||||
|
||||
[bors]: https://bors.tech
|
||||
|
28
examples/devos/doc/SUMMARY.md
Normal file
28
examples/devos/doc/SUMMARY.md
Normal file
@ -0,0 +1,28 @@
|
||||
# Summary
|
||||
|
||||
- [Introduction](../README.md)
|
||||
- [Quick Start](./start/index.md)
|
||||
- [ISO](./start/iso.md)
|
||||
- [Bootstrapping](./start/bootstrapping.md)
|
||||
- [From NixOS](./start/from-nixos.md)
|
||||
- [Key Concepts](./concepts/index.md)
|
||||
- [Hosts](./concepts/hosts.md)
|
||||
- [Overrides](./concepts/overrides.md)
|
||||
- [Profiles](./concepts/profiles.md)
|
||||
- [Suites](./concepts/suites.md)
|
||||
- [Users](./concepts/users.md)
|
||||
- [Outputs](./outputs/index.md)
|
||||
- [Modules](./outputs/modules.md)
|
||||
- [Overlays](./outputs/overlays.md)
|
||||
- [Packages](./outputs/pkgs.md)
|
||||
- [Concerns]()
|
||||
- [Secrets](./secrets.md)
|
||||
- [Tests](./tests.md)
|
||||
- [Helper Script – `bud`](./bud/index.md)
|
||||
- [get](./bud/get.md)
|
||||
- [Integrations](./integrations/index.md)
|
||||
- [Cachix](./integrations/cachix.md)
|
||||
- [Deploy RS](./integrations/deploy.md)
|
||||
- [NvFetcher](./integrations/nvfetcher.md)
|
||||
- [Hercules CI](./integrations/hercules.md)
|
||||
- [Contributing](./CONTRIBUTING.md)
|
6
examples/devos/doc/book.toml
Normal file
6
examples/devos/doc/book.toml
Normal file
@ -0,0 +1,6 @@
|
||||
[book]
|
||||
authors = ["Timothy DeHerrera"]
|
||||
language = "en"
|
||||
multilingual = false
|
||||
src = "."
|
||||
title = "devos docs"
|
33
examples/devos/doc/tests.md
Normal file
33
examples/devos/doc/tests.md
Normal file
@ -0,0 +1,33 @@
|
||||
# Testing
|
||||
|
||||
Testing is always an important aspect of any software development project, and
|
||||
NixOS offers some incredibly powerful tools to write tests for your
|
||||
configuration, and, optionally, run them in
|
||||
[CI](./integrations/hercules.md).
|
||||
|
||||
## Unit Tests
|
||||
Unit tests can be created from regular derivations, and they can do
|
||||
almost anything you can imagine. By convention, it is best to test your
|
||||
packages during their [check phase][check]. All packages and their tests will
|
||||
be built during CI.
|
||||
|
||||
## Integration Tests
|
||||
All your profiles defined in suites will be tested in a NixOS VM.
|
||||
|
||||
You can write integration tests for one or more NixOS VMs that can,
|
||||
optionally, be networked together, and yes, it's as awesome as it sounds!
|
||||
|
||||
Be sure to use the `mkTest` function from digga, `digga.lib.pkgs-lib.mkTest`
|
||||
which wraps the official [testing-python][testing-python] function to ensure
|
||||
that the system is setup exactly as it is for a bare DevOS system. There are
|
||||
already great resources for learning how to use these tests effectively,
|
||||
including the official [docs][test-doc], a fantastic [blog post][test-blog],
|
||||
and the examples in [nixpkgs][nixos-tests].
|
||||
|
||||
[test-doc]: https://nixos.org/manual/nixos/stable/index.html#sec-nixos-tests
|
||||
[test-blog]: https://www.haskellforall.com/2020/11/how-to-use-nixos-for-lightweight.html
|
||||
[default]: https://github.com/divnix/devos/tree/main/tests/default.nix
|
||||
[run-test]: https://github.com/NixOS/nixpkgs/blob/6571462647d7316aff8b8597ecdf5922547bf365/lib/debug.nix#L154-L166
|
||||
[nixos-tests]: https://github.com/NixOS/nixpkgs/tree/master/nixos/tests
|
||||
[testing-python]: https://github.com/NixOS/nixpkgs/tree/master/nixos/lib/testing-python.nix
|
||||
[check]: https://nixos.org/manual/nixpkgs/stable/#ssec-check-phase
|
6
examples/devos/doc/theme/highlight.js
vendored
Normal file
6
examples/devos/doc/theme/highlight.js
vendored
Normal file
File diff suppressed because one or more lines are too long
558
examples/devos/flake.lock
Normal file
558
examples/devos/flake.lock
Normal file
@ -0,0 +1,558 @@
|
||||
{
|
||||
"nodes": {
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1637793790,
|
||||
"narHash": "sha256-oPXavjxETEWGXq8g7kQHyRLKUmLX2yPtGn+t3V0mrTY=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "f85eea0e29fa9a8924571d0e398215e175f80d55",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"beautysh": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"poetry2nix": "poetry2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1630693543,
|
||||
"narHash": "sha256-7Sly3ReaJZw60Qo0rpfN4jF6zy94nwQz6ENgUUFzJfg=",
|
||||
"owner": "lovesegfault",
|
||||
"repo": "beautysh",
|
||||
"rev": "5609593961b70428f58d5c1b4b25cdda43b0d0bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lovesegfault",
|
||||
"repo": "beautysh",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"blank": {
|
||||
"locked": {
|
||||
"lastModified": 1625557891,
|
||||
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"bud": {
|
||||
"inputs": {
|
||||
"beautysh": "beautysh",
|
||||
"devshell": [
|
||||
"digga",
|
||||
"devshell"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1640836100,
|
||||
"narHash": "sha256-My9Lay6BCDwAZgrL4SuVXHkYPHIU7ypnuiS/pd7eg1M=",
|
||||
"owner": "divnix",
|
||||
"repo": "bud",
|
||||
"rev": "b1d8ab3970f4dfb5fb90d7d8a9ab493c75d031fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "bud",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1634994402,
|
||||
"narHash": "sha256-xmlCVVOYGpZoxgOqsDOVF0B0ASrnbNGVAEzID9qh2xo=",
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "44da835ac40dab5fd231298b59d83487382d2fab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"deploy": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
],
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1643787431,
|
||||
"narHash": "sha256-8IwuVgXulRE3ZWq6z8mytarawC32pKPKR20EyDtSH+w=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "4154ba1aaaf7333a916384c348d867d03b6f1409",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"locked": {
|
||||
"lastModified": 1637575296,
|
||||
"narHash": "sha256-ZY8YR5u8aglZPe27+AJMnPTG6645WuavB+w0xmhTarw=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "0e56ef21ba1a717169953122c7415fa6a8cd2618",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"digga": {
|
||||
"inputs": {
|
||||
"blank": "blank",
|
||||
"deploy": [
|
||||
"deploy"
|
||||
],
|
||||
"devshell": "devshell",
|
||||
"flake-utils-plus": "flake-utils-plus",
|
||||
"home-manager": [
|
||||
"home"
|
||||
],
|
||||
"latest": "latest",
|
||||
"nixlib": [
|
||||
"nixos"
|
||||
],
|
||||
"nixos-generators": "nixos-generators",
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1643510242,
|
||||
"narHash": "sha256-9C9DyJhQ5bevk0CEEjGct+U9EqUgHg8T70nxz47zjMI=",
|
||||
"owner": "divnix",
|
||||
"repo": "digga",
|
||||
"rev": "33bfb05b8a148d8ad6a842de74e22209bf9fe5d7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "digga",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1623875721,
|
||||
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils-plus": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1639385028,
|
||||
"narHash": "sha256-oqorKz3mwf7UuDJwlbCEYCB2LfcWLL0DkeCWhRIL820=",
|
||||
"owner": "gytis-ivaskevicius",
|
||||
"repo": "flake-utils-plus",
|
||||
"rev": "be1be083af014720c14f3b574f57b6173b4915d0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "gytis-ivaskevicius",
|
||||
"repo": "flake-utils-plus",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1642700792,
|
||||
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1631561581,
|
||||
"narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1642653493,
|
||||
"narHash": "sha256-22mGPjiHUo2Jmze4IjXCJLjeK2mbvvCztHmUyUMr4yw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "28b9ae40c45c5e7711c353fee1b7af734e293979",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-21.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"locked": {
|
||||
"lastModified": 1638198142,
|
||||
"narHash": "sha256-plU9b8r4St6q4U7VHtG9V7oF8k9fIpfXl/KDaZLuY9k=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8a308775674e178495767df90c419425474582a1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"latest_2": {
|
||||
"locked": {
|
||||
"lastModified": 1643347846,
|
||||
"narHash": "sha256-O0tyXF//ppRpe9yT1Uu5n34yI2MWDyY6ZiJ4Qn5zIkE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5bb20f9dc70e9ee16e21cc404b6508654931ce41",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1638203339,
|
||||
"narHash": "sha256-Sz3iCvbWrVWOD/XfYQeRJgP/7MVYL3/VKsNXvDeWBFc=",
|
||||
"owner": "nmattia",
|
||||
"repo": "naersk",
|
||||
"rev": "c3e56b8a4ffb6d906cdfcfee034581f9a8ece571",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nmattia",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixlib": {
|
||||
"locked": {
|
||||
"lastModified": 1641688481,
|
||||
"narHash": "sha256-6L+EU12xLDHby7y8elgFtRKVBxix+7qV8DhVgXqrKZo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "f697717b3d3a074ffc16c8c8227504f0db292886",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos": {
|
||||
"locked": {
|
||||
"lastModified": 1643463207,
|
||||
"narHash": "sha256-W0azAxucUq84BvWqDPt3gX8kyc8wYvGUynZV9COfByQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "03098169624f487eef37186b3214c40e6b6e919d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-generators": {
|
||||
"inputs": {
|
||||
"nixlib": "nixlib",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1637655461,
|
||||
"narHash": "sha256-kXZPbclN3gKwjhp2/RYFDFpAsSBwzX1iLF4EcnHZsPQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"rev": "05a3eb158a9c7746a5d463726d7f7cccf07500e4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1638182287,
|
||||
"narHash": "sha256-vBzf+hbTJz2ZdXV/DWirl6wOO7tjdqzTIU+0FANt65U=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "6b3f79de09c3de7c91ab51e55e87879f61b6faec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1643428210,
|
||||
"narHash": "sha256-ympCeHuXeGitpnegE0raAtWLNg3vZbjj5QbbMvvBGCQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e1b353e890801a759efe9a4c42f6984e47721f0d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1643513770,
|
||||
"narHash": "sha256-Q64SabfQLuhHQfhpIHS/fLCEO2NUFnI+EKsB5GnfWh8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "66ab3568d67b90275c0720aae8b911bad82c24fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1644972330,
|
||||
"narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "19574af0af3ffaf7c9e359744ed32556f34536bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1638231901,
|
||||
"narHash": "sha256-XzuvFTmsXULdWynQWzgaPHikepNhjEpK4o5WXfmRqek=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "4e68fb3d8f48e91196deb13f44bcfb421da25afb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nur",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nvfetcher": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": [
|
||||
"nixos"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1634524567,
|
||||
"narHash": "sha256-v9ZTZj1WNQaaVfs1P1mUPuh518mmwpqszj1EjdeGUmc=",
|
||||
"owner": "berberman",
|
||||
"repo": "nvfetcher",
|
||||
"rev": "807513f4bbd0e3b5863f4c3b91f8ac846ed6da9b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "berberman",
|
||||
"repo": "nvfetcher",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"poetry2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1625240517,
|
||||
"narHash": "sha256-2E1gaOP+bCplhf3kliVQWK5N1NV2h06mkJk2KTiRTJQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"rev": "e40e8ed0e8c11e709e4c8c7c20174facd265a021",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"bud": "bud",
|
||||
"darwin": "darwin",
|
||||
"deploy": "deploy",
|
||||
"digga": "digga",
|
||||
"home": "home",
|
||||
"latest": "latest_2",
|
||||
"naersk": "naersk",
|
||||
"nixos": "nixos",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nur": "nur",
|
||||
"nvfetcher": "nvfetcher"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1637014545,
|
||||
"narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
143
examples/devos/flake.nix
Normal file
143
examples/devos/flake.nix
Normal file
@ -0,0 +1,143 @@
|
||||
{
|
||||
description = "A highly structured configuration database.";
|
||||
|
||||
nixConfig.extra-experimental-features = "nix-command flakes";
|
||||
nixConfig.extra-substituters = "https://nrdxp.cachix.org https://nix-community.cachix.org";
|
||||
nixConfig.extra-trusted-public-keys = "nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=";
|
||||
|
||||
inputs =
|
||||
{
|
||||
nixos.url = "github:nixos/nixpkgs/release-21.11";
|
||||
latest.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
digga.url = "github:divnix/digga";
|
||||
digga.inputs.nixpkgs.follows = "nixos";
|
||||
digga.inputs.nixlib.follows = "nixos";
|
||||
digga.inputs.home-manager.follows = "home";
|
||||
digga.inputs.deploy.follows = "deploy";
|
||||
|
||||
bud.url = "github:divnix/bud";
|
||||
bud.inputs.nixpkgs.follows = "nixos";
|
||||
bud.inputs.devshell.follows = "digga/devshell";
|
||||
|
||||
home.url = "github:nix-community/home-manager/release-21.11";
|
||||
home.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
darwin.url = "github:LnL7/nix-darwin";
|
||||
darwin.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
deploy.url = "github:serokell/deploy-rs";
|
||||
deploy.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
agenix.url = "github:ryantm/agenix";
|
||||
agenix.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
nvfetcher.url = "github:berberman/nvfetcher";
|
||||
nvfetcher.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
naersk.url = "github:nmattia/naersk";
|
||||
naersk.inputs.nixpkgs.follows = "nixos";
|
||||
|
||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self
|
||||
, digga
|
||||
, bud
|
||||
, nixos
|
||||
, home
|
||||
, nixos-hardware
|
||||
, nur
|
||||
, agenix
|
||||
, nvfetcher
|
||||
, deploy
|
||||
, ...
|
||||
} @ inputs:
|
||||
digga.lib.mkFlake
|
||||
{
|
||||
inherit self inputs;
|
||||
|
||||
channelsConfig = { allowUnfree = true; };
|
||||
|
||||
channels = {
|
||||
nixos = {
|
||||
imports = [ (digga.lib.importOverlays ./overlays) ];
|
||||
overlays = [
|
||||
nur.overlay
|
||||
agenix.overlay
|
||||
nvfetcher.overlay
|
||||
./pkgs/default.nix
|
||||
];
|
||||
};
|
||||
latest = { };
|
||||
};
|
||||
|
||||
lib = import ./lib { lib = digga.lib // nixos.lib; };
|
||||
|
||||
sharedOverlays = [
|
||||
(final: prev: {
|
||||
__dontExport = true;
|
||||
lib = prev.lib.extend (lfinal: lprev: {
|
||||
our = self.lib;
|
||||
});
|
||||
})
|
||||
];
|
||||
|
||||
nixos = {
|
||||
hostDefaults = {
|
||||
system = "x86_64-linux";
|
||||
channelName = "nixos";
|
||||
imports = [ (digga.lib.importExportableModules ./modules) ];
|
||||
modules = [
|
||||
{ lib.our = self.lib; }
|
||||
digga.nixosModules.bootstrapIso
|
||||
digga.nixosModules.nixConfig
|
||||
home.nixosModules.home-manager
|
||||
agenix.nixosModules.age
|
||||
bud.nixosModules.bud
|
||||
];
|
||||
};
|
||||
|
||||
imports = [ (digga.lib.importHosts ./hosts) ];
|
||||
hosts = {
|
||||
/* set host specific properties here */
|
||||
NixOS = { };
|
||||
};
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles // {
|
||||
users = digga.lib.rakeLeaves ./users;
|
||||
};
|
||||
suites = with profiles; rec {
|
||||
base = [ core users.nixos users.root ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
imports = [ (digga.lib.importExportableModules ./users/modules) ];
|
||||
modules = [ ];
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./users/profiles;
|
||||
suites = with profiles; rec {
|
||||
base = [ direnv git ];
|
||||
};
|
||||
};
|
||||
users = {
|
||||
nixos = { suites, ... }: { imports = suites.base; };
|
||||
}; # digga.lib.importers.rakeLeaves ./users/hm;
|
||||
};
|
||||
|
||||
devshell = ./shell;
|
||||
|
||||
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;
|
||||
|
||||
deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { };
|
||||
|
||||
}
|
||||
//
|
||||
{
|
||||
budModules = { devos = import ./shell/bud; };
|
||||
}
|
||||
;
|
||||
}
|
1
examples/devos/shell.nix
Normal file
1
examples/devos/shell.nix
Normal file
@ -0,0 +1 @@
|
||||
(import ./lib/compat).shellNix
|
0
examples/devos/users/modules/.flake-keep
Normal file
0
examples/devos/users/modules/.flake-keep
Normal file
4
examples/groupByConfig/devshell/default.nix
Normal file
4
examples/groupByConfig/devshell/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{ self, ... }:
|
||||
{
|
||||
exportedModules = [ ./python.toml ];
|
||||
}
|
3
examples/groupByConfig/devshell/python.toml
Normal file
3
examples/groupByConfig/devshell/python.toml
Normal file
@ -0,0 +1,3 @@
|
||||
[[commands]]
|
||||
package = "poetry"
|
||||
category = "Python"
|
27
examples/groupByConfig/flake.nix
Normal file
27
examples/groupByConfig/flake.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
description = "A DevOS example. And also a digga test bed.";
|
||||
|
||||
inputs =
|
||||
{
|
||||
nixos.url = "github:nixos/nixpkgs/release-21.11";
|
||||
digga = {
|
||||
url = "github:divnix/digga";
|
||||
inputs.nixpkgs.follows = "nixos";
|
||||
};
|
||||
home.url = "github:nix-community/home-manager";
|
||||
home.inputs.nixpkgs.follows = "nixos";
|
||||
};
|
||||
|
||||
outputs = inputs @ { self, nixos, digga, home }:
|
||||
digga.lib.mkFlake {
|
||||
|
||||
inherit self inputs;
|
||||
|
||||
channels.nixos = { };
|
||||
|
||||
nixos = ./nixos;
|
||||
home = ./home;
|
||||
devshell = ./devshell;
|
||||
|
||||
};
|
||||
}
|
7
examples/groupByConfig/home/default.nix
Normal file
7
examples/groupByConfig/home/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ self, ... }:
|
||||
let
|
||||
lib = self.inputs.digga.lib;
|
||||
in
|
||||
{
|
||||
imports = [ (lib.importExportableModules ./modules) ];
|
||||
}
|
45
examples/groupByConfig/home/modules/my-home.nix
Normal file
45
examples/groupByConfig/home/modules/my-home.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
extraConfig = {
|
||||
pull.rebase = false;
|
||||
};
|
||||
|
||||
aliases = {
|
||||
a = "add -p";
|
||||
co = "checkout";
|
||||
cob = "checkout -b";
|
||||
f = "fetch -p";
|
||||
c = "commit";
|
||||
p = "push";
|
||||
ba = "branch -a";
|
||||
bd = "branch -d";
|
||||
bD = "branch -D";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
ds = "diff --staged";
|
||||
r = "restore";
|
||||
rs = "restore --staged";
|
||||
st = "status -sb";
|
||||
|
||||
# reset
|
||||
soft = "reset --soft";
|
||||
hard = "reset --hard";
|
||||
s1ft = "soft HEAD~1";
|
||||
h1rd = "hard HEAD~1";
|
||||
|
||||
# logging
|
||||
lg =
|
||||
"log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
plog =
|
||||
"log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'";
|
||||
tlog =
|
||||
"log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative";
|
||||
rank = "shortlog -sn --no-merges";
|
||||
|
||||
# delete merged branches
|
||||
bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d";
|
||||
};
|
||||
};
|
||||
}
|
6
examples/groupByConfig/nixos/Morty.nix
Normal file
6
examples/groupByConfig/nixos/Morty.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ lib, pkgs, config, ... }: {
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
fileSystems."/" = { device = "/dev/disk/by-label/One"; };
|
||||
users.users.root.password = "";
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user