Why Gateway API?

Kubernetes Ingress provides a small, portable API for exposing HTTP services. More advanced behavior often depends on controller-specific annotations or custom resources, which makes configurations harder to understand and move between implementations.

Gateway API is a family of Kubernetes APIs for L4 and L7 routing. It is role-oriented, protocol-aware, and expressive enough to describe common routing behavior without hiding it in annotations.

This website repository uses Gateway API together with kubenix. The Kubernetes resources are written as Nix attribute sets and rendered into manifests by the flake.

Why Nix?

Nix is a purely functional package manager designed for reproducibility, declarative environments, and build isolation. It’s not just a package manager - it’s a paradigm shift for building and managing systems, environments, and infrastructure.

Whether you’re building CI pipelines, container images, or local development environments - Nix gives you full control over versions, dependencies, and the build process.

Key Benefits

Reproducible Builds

  • Builds are content-addressed: identical inputs yield identical outputs.
  • No surprises between “it worked on my machine” and production.

Isolated Environments

  • Dependencies are never installed globally.
  • Every build or shell gets its own clean environment.

Atomic Changes & Rollbacks

  • All installations are transactional.
  • Rollback with a single command.
  • Unused packages can be garbage-collected.

Declarative Infrastructure

  • With NixOS, your entire system config is in a Git repo.
  • CI pipelines, Docker images, and VMs can be defined identically across stages.

Build Caching & Remote Builds

  • Efficient reuse of build artifacts.
  • Works with remote builders and binary caches like Cachix.

Go DevShell Example

Create a self-contained dev environment for a Go project - no Go installation required on the host.