NixOS configuration as a first-class abstraction #339

Open
opened 2025-05-26 19:58:09 +02:00 by kiara · 1 comment
Owner

As a Nix developer,
I want to consume Fediversity as a NixOS configuration,
so that using it will be simple.

implementation notes

  • our services/vm directory achieves application-level nixos configurations
    • c.f. SelfHostBlocks asking to set the host's hosts to facilitate the SSL logic these modules try to work around
  • c.f. #322, which similarly aims to achieve merge application NixOS configurations (if for a different reason)
  • Nix module like args@{ foo, bar ? "default" }: { config = { inherit (args) foo bar; }; config: { config = lib.mkMerge [ { ... } config ]; options.fediversity = { ... }; } to configure by import or cli flag --arg(str)
  • [ ] downgrade the orchestrator from core to a deployment pipeline for the ProxmoX run-time
    • ensure both NixOS and ProxmoX run-time back-ends are made first-class citizens in panel, for either offering runtime-specific Nix configuration as well as a way to pass runtime-specific settings such as ProxmoX credentials
  • decouple sample panel from the ProxmoX run-time back-end by generalizing the deployment button to various NixOS deployment methods
  • update documentation
**As** a Nix developer, **I want** to consume Fediversity as a NixOS configuration, **so that** using it will be simple. ### implementation notes - our `services/vm` directory achieves application-level nixos configurations - c.f. SelfHostBlocks asking to [set the host's `hosts`](https://github.com/ibizaman/selfhostblocks/blob/ef7f2212f501377b2b2b6a277b7ec7f9e91001f4/demo/nextcloud/README.md#nextcloud-with-ldap-through-http-demo-nextcloud-deploy-ldap) to facilitate the SSL logic these modules try to work around - c.f. #322, which similarly aims to achieve merge application NixOS configurations (if for a different reason) - [ ] Nix module like ~~`args@{ foo, bar ? "default" }: { config = { inherit (args) foo bar; }; `~~ `config: { config = lib.mkMerge [ { ... } config ]; options.fediversity = { ... }; }` to configure by `import` or [cli flag `--arg(str)`](https://nix.dev/manual/nix/latest/command-ref/nix-build.html#opt-arg) - ~~[ ] downgrade the orchestrator from core to a deployment pipeline for the ProxmoX run-time~~ - [ ] ensure both NixOS and ProxmoX run-time back-ends are made first-class citizens in `panel`, for either offering [runtime-specific Nix configuration](https://git.fediversity.eu/Fediversity/meta/src/commit/7b828b497d3a7dff7ae84bf6c22ccf5063718ca8/architecture-docs/interactions.mmd#L46) as well as a way to pass runtime-specific settings such as ProxmoX credentials - [ ] decouple sample panel from the ProxmoX run-time back-end by generalizing the deployment button to [various](https://nix.dev/tutorials/nixos/) NixOS [deployment](https://github.com/nix-community/nixos-generators) methods - [ ] update documentation
kiara changed title from merge service NixOS configurations to make NixOS configuration the core abstraction 2025-05-27 14:54:24 +02:00
kiara changed title from make NixOS configuration the core abstraction to NixOS configuration the core abstraction 2025-06-01 09:56:42 +02:00
kiara changed title from NixOS configuration the core abstraction to NixOS configuration as the core abstraction 2025-06-01 12:57:16 +02:00
Author
Owner

technically, in the data model approach now the basic abstraction is no longer necessarily a nixos configuration, tho given default application configs we should be able to straight-forwardly generate these for a given run-time environment, e.g. have examples for each of those such as examples/live-usb.nix.

for the purpose of this ticket tho, such an approach should suffice, given at least it would ensure one should no longer need multiple nodes or external tools.

technically, in the [data model approach](https://git.fediversity.eu/Fediversity/meta/src/branch/main/architecture-docs/architecture.md#configuration-data-flow) now the basic abstraction is no longer necessarily a nixos configuration, tho given default application configs we should be able to straight-forwardly generate these for a given run-time environment, e.g. have examples for each of those such as `examples/live-usb.nix`. for the purpose of this ticket tho, such an approach should suffice, given at least it would ensure one should no longer need multiple nodes or external tools.
kiara changed title from NixOS configuration as the core abstraction to NixOS configuration as a first-class abstraction 2025-12-02 21:40:32 +01:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference: fediversity/fediversity#339
No description provided.