Commits at f11a7f7733675dab98ed58c232c7a3faa222c1df
f11a7f77Manage tools using Devbox rather than mise-en-place/asdf
Vala, a programming language often(?) used in GTK world, is missing from
mise/asdf registries. I've been feeling itches while using mise/asdf due
to lack of packages. For example, REUSE tool, which I use for most of my
recent projects, does not exist in their registries.
I choose Devbox among the three options:
* devenv
* Nix Flake (without helper tools)
* Devbox
## devenv
This is the first tool I tried. Their website looks good, features
sounds good, and sample Nix file looks okay. Their getting started guide
starts with "devenv init", which creates not only their config file but
touches other toolings' files (`.gitignore` and `.envrc`). "init"
command without manual setup step, especially touching others' files is
big sign of shitty tooling design, but I continued hoping other parts
would be "okay". Unfortunately they weren't.
CLI "search" command emits hundres of warnings, and outputs table does not
check terminal width so it badly wraps and border characters gets in a way
that the output is nearly unreadable.
When I ran its shell command, it paused the execution with a warning
message about binary cache. So devenv by default uses creator's own paid
SaaS? I don't think just using devenv requires paid subscription, but
unclear writing and CLI tries to push Cachix service into users' Nix
config is no-no for me.
The tool seems to be a thin wrapper around Nix: it inherits some of
upstream's bad designs (e.g. absolutely worst error trace, "nix develop"
invokes "bash" regardless of the current shell).
Their website advertise "Version support." but very few selected
packages have that. Everything else relies on Nix's "use latest or die"
versioning schema. Considering devenv's "Language support" is just
import helpers for nixpkgs, this "Version support." feels like a false
advertising.
Half-baked YAML/Nix architecture prevents users from using overlays or
other flakes with "follows" input to reduce duplications. And using
Flake requires running Flake command ("nix develop --no-pure-eval")
instead of their CLI, which completely dismissed the value of their tool
for me. Also reading their docs are uncomfortable given the tool is not
good quality one:
> Many experienced Nix users prefer to use Nix flakes, although devenv
> is considered a superior interface since it's way simpler, but lacks
> integration with existing tooling.
Superior, huh?
There are still features not present in bare Nix/Flake, but I find those
scripts/tasks/tests not useful. If every developer has access to same
toolchains, why not simply write script? (JS or Python or Go or whatever)
Overall, I see no benefits over bare Nix/Flake or mise/asdf.
## Nix Flake
Nix the language is ugly and readability is mediocre (I maintain my
machines using Home Manager and still hard time *parsing* program.)
It's not good at handling toolchain versions and I don't believe people
not using Nix regularly can understand/write even *okay* quality code.
Combined with its worst of the worst debuggability, I mean error trace,
this is not something I'd like to maintain alongside application
development.
But most importantly, they still runs "bash" on "nix develop" even a
user uses zsh or fish. Hard pass.
## Devbox
Actually this was not in my radar initially, but found during figuring
best way to write Flake for monorepo.
It's not a kind of software I like: docs are next to a cloud offering,
docs site hosted on Vercel, corporate site calling nonsense-text-
generators-having-high-chance-of-makes-sense-response "AI" without
defining intelligence or artifical one, allowing JSONC for ".json" file
extension (fuck you M$ for starting this fucking tradition) and not
supporting ".jsonc" file extension.
But the tool itself is good actually.
* Config file is JSON rather than YAML.
* Config schema is concise and straightforward.
* CLI works great. No wrapping tables.
* CLI is fast.
* Structure of their docs website is *great*. I should steal from that.
* Supports versions, really.
It's hard to describe... UX for Devbox is similar to or better than
mise-en-place. Simplicity? No bullshit API design? I don't know.
I find this tool to be simpler to use and easier to understand compared
to other tools, even including non-Nix ones such as asdf, nvm, and mise.
I may encounter problems rooted to Devbox in a future. I may get
frustrated due to mistyping "debvoc" or something. But for now, I
believe Devbox is the best suited for this project (and my other
projects too.)
Shota FUJI
authored at
Shota FUJI
comitted at
4b704338Create a license file
I don't care someone using this for profit or whatever.
This project started because the status quo is terrible.
Shota FUJI
authored at
Shota FUJI
comitted at