One file for both packaging and devshell with all necessary dependencies installed from the vast nixpkgs repository. Pinning comes built-in, reproducible.
I like mise a lot. As somewhat of a power user I've also found its rough edges though.
One is related to "change tracking" for tasks. Knowing when a task needs to run and when not based on inputs and outputs. I believe it uses mtimes and has somewhat similar problems in doing that reliably as make. For example, it would be nice if deleted files in output dirs would result in a task having to re-run.
Another is that I wish it was also a better task runner for long running foreground tasks. I've had to resort to pairing it up with pitchfork (by the same author but moreso an init system), overmind or hivemind. I think it should have the same set of options as pitchfork. And more controls around interrupt handling or setting delay/wait time after receiving an interrupt.
Yeah change tracking didn’t work at all for me. The only way it works is if I dont define outputs. Haven’t looked into it, but jdx is very receptive to PRs so you might want to open one. I assume it can’t be that hard to fix.
My team at work uses Mise for nearly all repos, regardless of stack (Python backends, React frontings, data science repos). I typically prefer to use Make for this kind of stuff, but they were already using Mise when I joined.
It’s been a fairly pleasant experience overall. I think sometimes it tries to do too much, but it works okay-ish.
The only thing I would recommend to stay away from is the encrypted secrets stuff. That’s way too much of a foot gun.
echo 'use flake' > .envrc && direnv allow
One file for both packaging and devshell with all necessary dependencies installed from the vast nixpkgs repository. Pinning comes built-in, reproducible.
I like mise a lot. As somewhat of a power user I've also found its rough edges though.
One is related to "change tracking" for tasks. Knowing when a task needs to run and when not based on inputs and outputs. I believe it uses mtimes and has somewhat similar problems in doing that reliably as make. For example, it would be nice if deleted files in output dirs would result in a task having to re-run.
Another is that I wish it was also a better task runner for long running foreground tasks. I've had to resort to pairing it up with pitchfork (by the same author but moreso an init system), overmind or hivemind. I think it should have the same set of options as pitchfork. And more controls around interrupt handling or setting delay/wait time after receiving an interrupt.
Yeah change tracking didn’t work at all for me. The only way it works is if I dont define outputs. Haven’t looked into it, but jdx is very receptive to PRs so you might want to open one. I assume it can’t be that hard to fix.
Popular in 2024 (164 points, 37 comments) https://news.ycombinator.com/item?id=40186768
My team at work uses Mise for nearly all repos, regardless of stack (Python backends, React frontings, data science repos). I typically prefer to use Make for this kind of stuff, but they were already using Mise when I joined.
It’s been a fairly pleasant experience overall. I think sometimes it tries to do too much, but it works okay-ish.
The only thing I would recommend to stay away from is the encrypted secrets stuff. That’s way too much of a foot gun.
where does this fit in with make, just, nix (devshell, devenv, ...), direnv, etc.
It basically does replace make/just, nix, direnv in one convenient binary. It’s very pleasant to use.