Hi!
I’m setting up this thread to track major releases of MyNixOS v2 and gather feedback from the community.
Test it out here: https://v2.mynixos.com/nix/store/16s8kjwv6zz7xyv3hjr890n7v0d8bqwb-wasilibc-static-wasm32-unknown-wasi-22-unstable-2024-10-16.drv
(Adjust settings in the upper right corner menu to control what is streamed).
What is MyNixOS?
MyNixOS is an experimental platform built to help users navigate, create, and run software configurations using Nix/NixOS. Its goal is to make Nix more accessible to beginner and intermediate users of Nix through a structured and graphical interface.
Version 1 of the website lets you search and navigate packages and options, and create and edit Nix flake configurations. However, it has several limitations that limits its usefulness. After spending a bit of time away from the project, MyNixOS v2 is now being built out to fix existing limitations and to improve it further.
What is new in v2?
-
Full rewrite: Version 2 is a complete rewrite with a Rust backend, the Tuono web framework, and a Typescript/React frontend with a Rust WASM engine, compared to v1 which was written in untyped Python and Javascript. This change should help increase the correctness and performance of the platform.
-
Continuous data updates: In v1, the website is built as a Next.js site with ~200k static pages through a lengthy and manual update process, resulting in infrequent updates. Version 2 introduces a pipeline of crawl / fetch / index / render operations that runs continuously and independent of website builds, and a fully dynamic website that is updated separately from data changes.
-
Remove internal configuration model: The Nix editing capability in v1 consists of an internal configuration model that is transformed to Nix code during a release step and is limited to be a one-way process. Version 2 aims to eliminate the internal configuration model and allow direct Nix edits for greater flexibility and correctness.
-
Revision/reference support - In version 1, only the latest revision of each tracked Nix flake is indexed. With version 2, indexing is done at the repository level across references, revisions, and contained Nix flakes, for improved correctness and version tracking.
-
Nix metadata store - Version 2 includes a Nix metadata store which tracks store objects and their relationship to Nix package metadata, which allows a more accurate data model than what was available in version 1.
What is the current status?
Version 2 has four initial phases planned:
- Phase 1: Nix store navigation (current). An unstable technical preview of Nix store navigation can be tested at https://v2.mynixos.com. It combines metadata from Nix derivations, NAR listings, NAR info files, as well as Nix archives that are streamed during navigation and that can be navigated into (see settings to the upper right to limit what is downloaded).
- Phase 2: Nix package search + navigation
- Phase 3: Nix options search + navigation
- Phase 4: Nix configuration editing
The current version of the website (v1) will likely be swapped with v2 after the third phase, after which v1 will be kept on a subdomain until v2 has feature parity.
Notes
- Continuous data updates are not enabled yet as the data model and indexer is still being adjusted.
- The v2 preview is not very useful by itself, and is only meant to be an early showcase of v2.
- The v2 subdomain will remain unstable for a while until v2 is a bit further along and a staging infrastructure is set up.