Yes, Nix is a pure functional programming language, like Lisp.
The reason for its existence is to allow for reproducible and repeatable builds of packages and configuration. This is the basis for nixpkgs, NixOS and Home Manager.
Your code looks awesome, I'm definitely going to steal some ideas from that, especially the lib.pipe really cleans up a lot of unnecessary bindings I did.
Doing a with import ./utils.nix is also a lot cleaner than nesting let statements.
Somehow I completely missed that split can do match groups..
Oopsie!
I did it in Python today but I did make a completely functional (and way too complicated) algorithm.
Tap for spoiler
The way you handle the do and dont is much cleaner
@F04118F if i had known about match i probably would have gotten stuck also lol but luckily i used split once before and remembered it :) i made an issue in your github, hope thats ok, just to mention this in case you didnt see it on fedi!