Check out the demo on GitHub!
(Installation is a little DIY if you’re not using Nix,
but there are instructions in the README on how to build.)
Read on if you’re interested in how it works.
I’ve been writingaboutNix for a few years now,
and it has become a staple for all my personal projects.
It solves the thorny problem of setting up reproducible development environments
in a flexible and general way,
while still allowing me to use my tooling the way I want to.
I no longer have to worry about my GitHub Actions having different versions of tools
from my local dev environment, which is a huge relief.
I’ve started making my CI jobs use nix flake check,
which lets me write and run my CI checks using Nix syntax,
further removing any differences between local development and CI.
However, I sometimes have tests that want to use the network,
which usually isn’t allowed.
I recently discovered that you can use __impure = true; to remove the networking sandbox:1
For this to work, you must also set extra-experimental-features = impure-derivations ca-derivations in /etc/nix/nix.conf.2
Just passing a command-line argument doesn’t seem to work in my usage
with Nix 2.13.3 in a multi-user installation.
Since this feature is still experimental,
it’s not widely advertised or documented.
Hopefully this helps you use it for your own tests.
I hacked out a Jupyterkernel for Rob Pike’s ivy language,
an APL-like desk calculator.
This allows using Ivy expressions inside a Jupyter notebook
and inside Visual Studio Code’s notebooks feature.
It’s got rough edges, but it’s good enough for me to quickly do calculations
without leaving Visual Studio Code.
The source is up on GitHub.
(Installation is a little DIY if you’re not using Nix,
but it should go build if you have libzmq installed locally.)
I realized that despite the title,
my blog post Nix From the Ground Up
misses the mark on providing this type of explanation.
While I do think the Nix language is the lowest abstraction layer to learn Nix,
I wanted to zoom in on the core derivation abstraction through a tutorial.
This way, we can better understand how Nix derivations relate to Bash scripts.
I’ve been working on implementing virtual tables
for my zombiezen.com/go/sqlite package.
I hadn’t used virtual tables in SQLite before this,
so to get a feel for the API, I played around with the feature and read up on the documentation.
Since it’s not a feature I’ve seen talked about a lot,
I wanted to share what virtual tables are, why you might want to use them, and what some limitations are.