Godot, Nvim, C#, and GDscript

I’ve been playing around with Godot 4.4/4.5 for a while now, but using the integrated editor is quite frustrating compared to a real code editor or IDE. There are some vim plugins out there, but I wanted a more lightweight solution. So I looked into configuring Neovim and it ended up being simpler than I expected. Nvim I build my nvim using nix with nvf. I added treesitter and grammars via nix: { config.vim.treesitter = { enable = true; grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ gdscript gdshader godot-resource ]; }; } For the gdscript treesitter grammar, I used lua: ...

January 11, 2026 · 2 min

MonoGame: Shader Compilation on Linux

Recently I started learning how to make games, and I decided to follow MonoGame’s phenomenal guide to making 2D games, on linux, as my daily driver is a thinkpad running NixOS. After I set up .NET 8/9 and neovim / Visual Studio Code, it was smooth sailing until Chapter 24: Shaders. Currently, building shaders with the MGCB (MonoGame Content Builder) tool and loading them with Content.Load<Effect>() requires emulation via wine. There is another way to build shaders without MGCB, so I’ll list both methods below. ...

July 30, 2025 · 5 min

Deploying Docker Containers with Nix

I’ve slowly been migrating my ansible-based homelab provisioning setup to NixOS. I was worried at first since I wasn’t sure how well it’d support docker and docker-compose, but it’s been almost* flawless so far. The magic lies in virtualisation.oci-containers.containers. Setup The first thing we need to do is enable an oci backend, either docker or podman. I’m used to docker so I went with the rootless version. # virtualization.nix {...}: { virtualisation = { docker.rootless.enable = true; docker.rootless.setSocketVariable = true; docker.autoPrune.enable = true; containerd.enable = true; oci-containers.backend = "docker"; # defaults to podman }; environment.sessionVariables = { DOCKER_HOST = "unix:///run/docker.sock"; # fix for rootless docker }; } [!NOTE] There is the virtualisation.docker.rootless.setSocketVariable option but it didn’t work for me, so I set DOCKER_HOST manually. ...

February 25, 2025 · 3 min