Snowfall Lib v2 has been released! You can given the new Quickstart Guide a try or head over to the Snowfall Lib Reference if you’d like to dig in to the details. There is also a Migration Guide if you’re coming from v1. This release includes a handful of new features like home-manager support, darwin modules, improved namespace handling, metadata, support for Snowfall Frost, and more .
For everyone else who has no idea what Snowfall Lib is…
Snowfall Lib is a Nix library that helps you wire up your Nix flake outputs. It introduces an opinionated file structure and automatically picks up and exports packages, overlays, modules, shells, systems, and libraries. Because Snowfall Lib handles all of the wiring, there are a lot of quality of life improvements like automatic overlaying of flake packages, easy access to your flake library (and the libraries of your flake’s inputs), as well as package and library namespacing to avoid conflicts.
If this sounds interesting to you, please give the Quickstart Guide a try! More detailed information about how Snowfall Lib expects things to be laid out can be found here: lib.mkFlake
And if you’d like a reference for using Snowfall Lib, I’ve been happily using it to manage my systems, modules, packages, overlays, and flake library for a while here: GitHub - jakehamilton/config: One Nix flake to rule them all.
How would you compare it to https://flake.parts ? Why would I choose your solution over the other?
flake-parts tries to do a lot and I found it to mostly make things more complicated. The thing that I need to happen is for my Nix flake outputs to be wired together from my other files. I want to avoid writing boilerplate as much as possible, but the module system that flake-parts uses tends to favor boilerplate and manual wiring.
Don’t get me wrong, I think flake-parts is neat. I just don’t think that it solves my problem particularly well.
Thank you for making the effort to publish.
Thanks for the effort @jakehamilton
This looks great from a first read.
Since I’m developing my nix stuff in a mono-repo I’m wondering if there is a limitation to use
snowfall within a subflake?
My use-case is that I have a
infra folder that contains all my server/ desktop/ laptop/ VM environment that would greatly benefit from the snowfall structure.
But that is not true for the rest of the monorepo.
Snowfall Lib should work just fine in a sub flake