docs: Add notes on Flake npm weirdness [ci skip]

This commit is contained in:
Thomas A. Christensen II 2024-12-16 22:12:19 -06:00
parent f3fba04398
commit e1bfbf4b7c
Signed by: millironx
GPG key ID: 19A2EF3A3C0C18A9

View file

@ -1,3 +1,32 @@
# millironx.github.io
# pages
My personal website. Now hosted over at https://millironx.com
[![status-badge](https://woodpecker.millironx.com/api/badges/30/status.svg?branch=master)](https://woodpecker.millironx.com/repos/30/branches/master)
My personal website. Hosted over at <https://millironx.com>
## Notes to self
All dependencies are now bundled as a Nix Flake. The only trouble with this is
that npm packages don't play well with Nix (and especially Flakes), so npm
packages are specified twice: once in `package{-lock}.json` and then again in
`node*.nix`.
Compounding this, there are formatters and commit hooks that require npm to be
functional. So, to develop right now requires allowing direnv to setup the Nix
development shell, then immediately installing npm packages via `npm ci`. VSCode
(with extensions) and Zed are smart enough to figure out how to use direnv, but
other programs (like SourceGit) not so much, so you'll need to launch those
programs from inside a direnv shell to make sure they have Prettier, Husky, and
all that jazz to execute the hooks.
Last compounding factors: if `node_modules` is present in the root directory,
then node2nix won't create a correct derivation, so `node_modules` will need to
be temporarily deleted after modifying any npm packages, then as soon as
node2nix is happy, then immediately run `npm ci` to get the commit hooks working
again. Oh, and also, I renamed the `default.nix` file generated by node2nix to
node.nix to avoid giving direnv any wrong impressions about what derivation to
run.
Yes, hopefully I can get completely away from npm here soon, but this is a minor
inconvenience considering how (not) often I install new packages into this site,
and really discourages me from contributing to the website obesity crisis.