RSSAmplifier

Blog

Reproducible Thoughts

Notes from the intersection of Gradle, NixOS, and developer productivity — build systems, reproducible environments, and a decade of building software that actually works.

britter.devRSS feed ↗28 posts

Latest posts

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.

The NixOS Configuration Journey

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.

Best Practices for Gradle Dependency Verification

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.

Why Gradle's Rich Console Fails on Nix

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.

Exploring the Dendritic Nix Pattern

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.

Reviewmoji: Five Emojis for Effective Code Reviews

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 jfmt for NixVim: The Path to nixpkgs

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: Better Fork Workflow and Cleaner Output

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.

Leveling Up My Home Lab Backup with Restic

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 Released

gh-get v2.2.0 adds real-time clone progress, accepts any GitHub URL, and introduces a --fork flag.

Packaging a Custom OpenTofu Provider with Nix

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.

Redesigning britter.dev

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.

Declarative tmuxinator Projects with Home Manager

How I wrote a custom Home Manager module to manage tmuxinator projects declaratively - and why I've decided to contribute it upstream.

Packaging kotlin-lsp for NixVim (Part 2)

How a version bump exposed native library dependencies in kotlin-lsp and what it takes to package them on NixOS

Advent of Donations

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.

Packaging kotlin-lsp for NixVim

A short how-to explaining how to package the kotlin-lsp language server with Nix in order to use it with NixVim

Why Agentic AI Tools Struggle with Maven’s Lifecycle Model

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.

Optimizing Gradle Builds with Dockerized Databases, Flyway, and jOOQ

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.

Using `immutables.org` with Gradle the Right Way

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.

OceanSprint 2025: Code, Community, and the Canary Islands

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.

NixOS Meets Enterprise Java: A Cautionary Tale

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.

Optimizing Gradle Build Support in nixpkgs

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.

Enabling Gradle Dependency Verification: A Practical Guide

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.

Choosing Between Gradle Version Catalogs and Dependency Platforms: A Guide for Application Developers

In this blog post we'll break down the differences between Version Catalogs and Platforms.

Fixing Missing libudev Warnings from Gradle on NixOS

Learn how to resolve Gradle's missing libudev warnings on NixOS, ensuring smooth builds and complete telemetry data.

Understanding NixOS Modules and Declaring Options

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.

Wrapping Elephants in Snowflakes

How to build a Gradle project using Nix - 2025 edition.

Hello World!

Exciting News: I’m Going Freelance in 2025! Read more about the services I will be offering.

Reproducible Thoughts · RSS Amplifier