- Video conference
- GitHub project board
- Team details
- Past meeting notes
- Attendees: @fricklerhandwerk @proofconstruction @alejandrosame
- Notes by: @fricklerhandwerk
Agenda
- Discuss outline for nix.dev
Outline for nix.dev
- Against all odds – implemented here: implement the vision by proofconstruction · Pull Request #701 · NixOS/nix.dev · GitHub
- It’s a huge change, we may want to coordinate with other PRs until it’s settled
Some notes and ideas
-
Contributing intro should move to public contributing to docs (or nix.dev) page
- The Diataxis interpretation should have its own page
- High-level outline should be either on the front page or categorise the side bar
-
Set up a development environment is somewhat Python-specific and has a lot of overlap with the declarative shell tutorial, but reads like a recipe. We should move it to the language-specific guides.
- @alejandrosame: should go together with Nixpkgs Python FAQ/Guides towards nix.dev
- Declarative shell environments would benefit from listing improvements over the command-line approach (as in Declarative and reproducible developer environments) rather then framing the previous approach as inefficient.
- We should absolutely introduce the Nix language gently in the declarative shell tutorial and refer to the full Nix language basics for details.
- We should at least use release branches in expressions consistently to ensure a reasonable degree of reproducibility. Stop doing
<nixpkgs>
- All of that needs to be accompanied by a broad collection of concise recipes, and a deep collection of explanations that build up Nix from first principles (possibly encompassing a complete rework and extension of the Pills); but this is longer-term thinking
Tutorials
-
Temporary environments
- Ad hoc shell environments
- Reproducible interpreted scripts
- Declarative shell environments with
shell.nix
- Merge the two articles into one
-
Nix language basics
- This is required to deal with more involved examples
- Will probably need revised introduction to pick up on what we have seen so far
-
Using, customising, and creating packages
- Customise packages with
override
andoverrideAttrs
- Take a peek into how packages are functions that call
mkDerivation
and defer to Packaging existing software and, as a prerequisite, Nix language basics - Refer to search.nixos.org and show how to find the package declaration
- Show overriding a package parameter, such as Tor Browser with media (but ideally something that needs less time to compile)
- Show overriding a package version, and escalate to adding patches or adjusting build phases
- Take a peek into how packages are functions that call
- Packaging existing software
- At the end the tutorial we should refer to the list of language-specific build helpers
- Once we have a collection of recipes, link to those, too
- You should get pretty far with what you have up to now, and everything else gets into convenience, scaling up, and more advanced use cases.
- At the end the tutorial we should refer to the list of language-specific build helpers
- Customise packages with
-
Declarative user environments and system configurations
- Declarative user environments with Home Manager
- Add
direnv
for convenience - The challenge here is installing Home Manager itself declaratively, but there are ways.
- Add
- Dependency management with
niv
- This can be nicely motivated by requiring multiple remote Nix expressions
- Now that we have Home Manager, we can seamlessly include
niv
in the user environment
- Editor configuration with Home manager
-
vim
with configuration and plugins - emacs
- VSCode
- Link to a few relevant configuration topics as follow-ups: Git, SSH, …
-
- NixOS in a virtual machine
- This should be motivated by some relevant system service, i.e. something that cannot be configured through Home Manager
- The tutorial should frame NixOS as an advanced use case and offer the VM approach as a gentle introduction. It should also note that you have to figure out yourself how to translate the generic instructions to NixOS.
- This is a compromise to account for the fact that NixOS documentation is essentially unmaintained.
- Install NixOS
- This should also link to
nix-darwin
as a native alternative for macOS, and note the support status
- This should also link to
- Using NixOS modules
- Refactor your NixOS configuration
- Build a bootable NixOS ISO image
- Custom NixOS modules
- Essentially import the Writing Modules section from the NixOS manual
- Declarative user environments with Home Manager
-
Building, testing, and deploying software
- Set up a cache
- Set up distributed builds
- Cross compilation
- Continuous Integration with GitHub Actions
- Building and running NixOS containers
- Building and running Docker images
- Building and running virtual machines in NixOS
- Integration testing with NixOS virtual machines
- Deploy NixOS images with Terraform
-
Debugging builds
-
Debugging Nix expressions
Recipes
- Best practices
- Pinning Nixpkgs
- Should be expanded with an introduction and some more details on when to use what
- Combining multiple Nixpkgs releases
- Essentially this Discourse reply but also for Home manager and shell environments
- Link to Dependency management with
niv
- Sharing dependencies between
default.nix
andshell.nix
- Maybe this is not worth a whole tutorial
- Alternatively it could be nested under the packaging chapter
- Troubleshooting
- Essentially FAQ, but of practical nature; different name to disambiguate
Reference
- Recommended support tools
- This can also house a section for commercial offers
- Recommended reading
- This should be populated from the documentation survey
- Glossary
Concepts
- Flakes
- Frequently Asked Questions
- Only conceptual!