Attendees: @edolstra @roberth @Ericson2314 @fricklerhandwerk @puckipedia @Mic92
Notes: @fricklerhandwerk
STF sponsoring developer time
-
@fricklerhandwerk talked with Neighbourhoodie, the contractor offering developer time as part of the Sovereign Tech Fund Bug Resilience Program
- the opportunity was mentioned on Matrix on 2024-05-16 to get some maintainer quick feedback, since applications are first-come-first-serve
- the offer also includes funding for a bug bounty program (asked the security team, but @RaitoBezarius opposed the idea) and a security audit (not clear where it could be meaningfully applied)
- Neighborhoodie could hire a C++ expert to work with us over a couple of months
- For us it’s a trade-off, since accepting contributions also costs precious maintainer time, but this particular setup seems to be worth it
-
@fricklerhandwerk’s wishlist, based on last year’s proposal developed with @tomberek and @Ericson2314:
- primary goal: reduce time required for (incremental) builds and testing, i.e. reduce friction for contributors
- port the build setup to Meson, one derivation per component (can steal from Lix)
- upstream the Rust installer as discussed months ago (can steal from Lix)
- port parser optimizations from Lix
- test and fix NIX_PATH
- add tests for the daemon
- refactor tests to be runnable in the devshell and in NixOS VMs (where possible)
- run store tests in-memory
- run the same store tests on all store types
- maybe automate the Nixpkgs-side testing
-
@Ericson2314: most of the work is probably figuring out what to do, and is barely related to C++
- communication overhead would not be a good use of contributor’s time
-
@Ericson2314: most of the work is probably figuring out what to do, and is barely related to C++
- test evaluator against all stable Nixpkgs releases
- get rid of global configuration, pass structs to library components
- declarative signature specification for builtins
- allow building documentation independent of the binaries
- automatic formatting and linting everywhere
- a bunch of refactorings and clean-ups
- nix-prefetch-url should use the fetcher cache
- make the eval cache available to stable Nix expressions
- separate out built-in fetchers to the level of plugins (and ideally document the plugin mechanism)
- maybe get rid of most of GitHub actions (those really amount to starting a VM and running
nix(-)build
]) - generally simplify the release process
- no additions to the wishlist by the team
- @Ericson2314 will take time over the weekend to help condense this into a statement of work to get approved by STF, and make sure the goals are up to date with current reality of the code base
Improving Nix testing for Nixpkgs releases
-
proposal by @edolstra
- Make a Nix hydra jobset
- Package depending Nix
- Important NixOS tests
- Make a Nix hydra jobset
-
- Build over all supported systems
- Build static binaries and test them
- Cross compile to classical supported systems
- Run i686, misc tests & all installer tests using that specific Nix
- Run library eval tests (normally, ofborg takes care of this for you, but double check it)
- Verify that nixos-enter behave as expected (a catastrophic regression for the stable Nix in general)
- Build Hydra with that Nix and verify it works out of the box
- @Ericson2314: we do that but I wouldn’t call that a release blocker
- Verify that the new Nix’s fetchers work with things like npins, with some interesting cases, e.g. private forges, allRefs = true;, etc.
- Evaluate ALL of nixpkgs with nix-eval-jobs which tests two things: nix-eval-jobs compat and Nixpkgs evaluation ~correctness
-
@Mic92: could have a special branch for bumping Nix versions that Hydra observes
- would run the downstream dependency tests
- when it succeeds, can be merged
-
discussed current state of the Nix release manual
- needs upload rights to releases.nixos.org
- @fricklerhandwerk: who has this access currently, who can share permissions?
- @roberth: we wanted to first document and then automate it, so no one needs to
- @edolstra: can look at the AWS user IDs, but generally this is a question to the infra team
- needs access to Hydra to add jobsets
- need Hydra to build it, because that produces the “fallback paths”
- the release script used to also automatically update those fallback paths in Nixpkgs, currently done manually (would be great to automate again)
- requires signing a tag
-
@Mic92: would be great if we could have more automation for that, e.g. through GitHub Actions
- at least updating
nixVersions.git
in Nixpkgs
- at least updating
- needs upload rights to releases.nixos.org