| .husky | ||
| .vscode | ||
| .zed | ||
| archetypes | ||
| assets | ||
| content | ||
| layouts | ||
| static | ||
| .envrc | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| .woodpecker.yml | ||
| config.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
pages
My personal website. Hosted over at https://millironx.com
Notes to self
Nix dev shell
All developer 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, and
direnv will pass the PATH to SourceGit for Mac, but other programs aren't that
smart, 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.
Nix building
Nix building will not work because Hugo reaches out to the internet via content adapters, and that (by intention) is not perfectly reproducable. As such, development tools are installed in a Nix shell, but building has been removed from the Flake. Thankfully, hugomods provides "canonical" Docker images for hugo now.