Packaging kotlin-lsp for NixVim (Part 3)
JetBrains reshuffled the whole kotlin-lsp distribution into the IntelliJ platform bundle. Here is what it took to keep the Nix derivation working.
Notes from the intersection of Gradle, NixOS, and developer productivity — build systems, reproducible environments, and a decade of building software that actually works.
JetBrains reshuffled the whole kotlin-lsp distribution into the IntelliJ platform bundle. Here is what it took to keep the Nix derivation working.
How my NixOS configuration grew from a single configuration.nix into a multi-machine flake - one tool at a time, and why I adopted each one when I did.
A set of best practices for setting up and maintaining Gradle dependency verification, distilled from real-world experience at GradleX and a few additional lessons learned along the way.
A walk through the two upstream design choices that combine to silently disable Gradle's rich console auto-detection on Nix: a native-platform cache that doesn't notice patched libraries, and a JDK that can't see /lib64. With the upstream fixes that would address both.
Planning a migration of my NixOS flake configuration to the dendritic pattern: what it is, why I want it, and the pitfalls I found before writing a single line of code.
I prefix every code review comment with one of five emojis to signal what response I expect from the author. Here is the convention.
Packaging the jfmt Java formatter as a native binary for NeoVim: from a JVM wrapper through weeks of reproducibility debugging to a statically-linked GraalVM binary.
gh-get now sets up upstream and origin remotes correctly when forking, hides noisy git progress by default, always prints the destination path, and adds a --verbose flag.
How I migrated from a custom rsync-based sync to a proper restic backup setup that follows the 3-2-1 rule - and the NixOS module I had to write myself.
gh-get v2.2.0 adds real-time clone progress, accepts any GitHub URL, and introduces a --fork flag.
How to build and use a fork of an OpenTofu provider in a Nix devShell using mkProvider and withPlugins, scoped to a project, reproducible, and easy to throw away.
How I went from a generic Astro community template to a custom design system - with a detour through Google Stitch and two days of iterating with Claude.
How I wrote a custom Home Manager module to manage tmuxinator projects declaratively - and why I've decided to contribute it upstream.
How a version bump exposed native library dependencies in kotlin-lsp and what it takes to package them on NixOS
I've decided to donate to open source projects for each day of December 2025 until Christmas. This blog post lists the projects donated to.
A short how-to explaining how to package the kotlin-lsp language server with Nix in order to use it with NixVim
Agentic AI tools often struggle with Apache Maven because its unique lifecycle model clashes with AI’s preference for minimal, incremental work, leading to false negatives and false positives. DAG-based build systems like Gradle align better, ensuring reliable incremental builds and clearer CLI behavior for both AI and humans.
How using a custom Gradle build service and rethinking task dependencies led to faster, cleaner builds in a Java backend project using Docker, Flyway, and jOOQ.
Learn how to correctly configure the immutables.org library in a Gradle project using Kotlin DSL. This post covers annotation processor basics, explains why minimal dependencies matter, and shows how to avoid common pitfalls like runtime pollution from unnecessary artifacts.
A sunny sprint of code and community in Lanzarote. OceanSprint 2025 brought together Nix enthusiasts for a week of collaboration, exploration, and connection—fueled by shared purpose and amazing sponsors.
In this blog post I explore the challenges of running an enterprise Java application on NixOS, highlighting issues with Gradle support and authenticated resources. I share lessons learned, workarounds, and why NixOS remains a powerful choice for managing infrastructure despite these hurdles.
This is another blog post that covers the intersection between Gradle and NixOS. This time we look at an optimization I made to the Gradle build support in nixpkgs.
Dependency verification is a crucial aspect of maintaining the integrity and security of your software projects. This blog post gives a detailed breakdown of the process that leads to a streamlined and maintainable verification setup.
In this blog post we'll break down the differences between Version Catalogs and Platforms.
Learn how to resolve Gradle's missing libudev warnings on NixOS, ensuring smooth builds and complete telemetry data.
In this blog post, we’ll explore the NixOS module system and how to declare options within it, a key skill for writing custom modules or contributing to NixOS.
How to build a Gradle project using Nix - 2025 edition.
Exciting News: I’m Going Freelance in 2025! Read more about the services I will be offering.