Closed blaggacao closed 3 years ago
Thanks for taking the time and give the project a chance, I really appreciate it
We've been using Nix and "Makes" for three years now at Fluid Attacks, it has had many iterations, the entire company now runs on it
A few months ago, we decided to publish Makes to the world, this is what you see here on GitHub, it is still a work in progress so the (public) framework will grow a lot as we finish migrating Fluid Attacks from the internal version of Makes to the Public Makes. We've also polished a lot of edges, gave it a nicer CLI interface, and the NixOS module system
A thin (python) cli-wrapper (./m) is in charge of dependency injection (using nix-build --args...), module evaluation, task inventorization, realization and running.
./m
(https://gitlab.com/fluidattacks/product/-/blob/master/m) is the old (internal) version of Makes :)
m
(https://github.com/fluidattacks/makes/blob/main/src/cli/main/__main__.py) is the public, elegant version of it (this project)
It prioritizes wrapping native tooling (purely) in proximity of developers home turf over (complicated) 2nix approaches. And: no attitude (against flavors, eg using yaml) besides pro-simplicity
I loved this one :heart:, because yes, this is what we strive for: simplicity
I'm (other project) exploring how to ease even more the landscape: https://github.com/kamadorueda/nixpkgs-python
Maybe we'll merge later
Does not use or leverage the flakes (yet?). This seems to involve trade-offs w.r.t. to eval caching, purity and also lack of compatibility for some of flake’s most prominent interfaces, such as inputs managent or fully encapsulated nixConfig.
True, Flakes has its advantajes.
Anyway, we strive for maximum reproducibility and a proof of it is that ALL makes is --option sandbox true
(https://github.com/fluidattacks/makes/blob/939a40963d820ad35a296d00cabe43cdce16eae7/src/cli/main/__main__.py#L140) which is the most strict configuration of Nix possible
We are also architectured around inputs (https://github.com/fluidattacks/makes#inputs) and outputs (https://github.com/fluidattacks/makes#extending-makes), so migrating to Flakes will be very simple once Flakes become the stable Nix
Looking forward for the final article!
We also have a blog: https://fluidattacks.com/blog/
Thank you for the additional info. I wonder how to make makes
nicely blend into a flake-only environment. Do you have any pointers or could you even draft a minimal PoC?
Specifically, I think inputs
and cache
options are somewhat competing.
cache
, because flakes since recently support nixConfig
with any nix config attribute such as extra-subtituters
(example). This functionality doesn't yet work on daemon installs, though.
If you can drop me some rough guidance, I might be able to take it from there.
I wonder how to make makes nicely blend into a flake-only environment. Do you have any pointers or could you even draft a minimal PoC?
I have some ideas around this, I'll draft something
Nice! I'll commission a cron job to refresh this page every minute, from now on. :smile:
I think we can close this. Thx for all the input!
In order to pay fair tribute to the news of this project I wanted to submit a quick review at work and to the broader community.
Please consider giving feedback on it: https://demo.hedgedoc.org/s/TYPHlGRUw
Thanks! I will update it as I learn.