Site Reliability and Developer Experience Engineer at IOHK.
Views expressed are my own and do not necessarily reflect the view of IOHK.

Currently I focus on Zig and the NixOS ecosystem.

Find me on:

E-Mail: serverkorken ├Ąt gmail dot com


Nix / NixOS


  • ISO 8601 parser
    Born out of chrono issue #244 (open).
  • Learning project: Conway’s Game of Life for the terminal using ncurses


  • embed-dir: A small Zig library for embedding directory trees with @embedFile


  • libGDX tutorials on YouTube
  • libgdx-utils and libgdx-utils-box2d, a support library for libGDX-powered games and applications
    I have not worked on this library in years so I am happy to see it live on in Tommy Ettinger’s fork.


  • Cicero, an if-this-then-that machine on HashiCorp Nomad that is both event- and state-based.
    Input Output This is an IOHK project on which I am the primary author.
    See IOHK’s ci-world repository for our production deployment.
  • Tullia, a sandboxed multi-runtime task DAG runner with Cicero integration.
    Input Output This is an IOHK project on which I am the secondary author.


Involvement in Free and Open Source Projects

Home Manager


  • PR #2644 “broot: use upstream defaults, allow all config options” (merged)
  • PR #2642 “backport to 21.11: kakoune: fix ui options” (merged)
  • PR #2641 “kakoune: fix ui options” (merged)
  • PR #1185 “kakoune: add missing hook name” (merged)
  • PR #1163 “picom: add windowType option” (closed)
  • PR #1162 “kakoune: implement whitespace highlighter” (closed)
  • PR #932 “parcellite: fix GTK theme” (closed)
  • PR #296 “compton: fix syntax error” (merged)
  • PR #56 “zsh: add plugins submodule” (closed)
  • PR #20 “home-environment: interactively inspect non-managed files” (closed)
  • PR #19 “fix home.activation.checkLinkTargets” (closed)
  • PR #16 “browserpass: add module” (merged)
  • PR #3 “home-environment: fix evaluation error on undefined `lang.base`” (closed)
  • PR #2 “fix evaluation error if `programs.git.extraConfig` is null” (closed)
  • issue #122 “dunst process is not picked up => two dunst processes” (closed)
  • issue #84 “blueman-applet: exception on startup” (closed)
  • issue #55 “zsh: plugins” (closed)
  • issue #4 “`home.file.<name>.source` cannot begin with a dot” (closed)

Reviewed or Merged

  • PR #4714 “broot: Add nushell integration” (merged)
  • PR #3273 “broot: fix build” (merged)
  • PR #3272 “urxvt: fix package name” (merged)
  • PR #1289 “sway: add config.bindkeysToCode” (closed)
  • PR #1106 “zsh: support extra settings in oh-my-zsh plugins” (merged)
  • issue #4524 “bug: broot configuration files are generated when not asked to” (closed)
  • issue #4603 “bug: broot config unable to override imports” (closed)


  • PR #5 “remove extraPath option and passthrough user $PATH” (merged)
  • PR #4 “configure using NixOS module” (merged)
  • PR #1 “add command line switch for custom mounts” (merged)
  • issue #3 “9p cache / VM options” (closed)

NixOS / Nixpkgs

  • PR #210705 “ceph: add missing python library” (merged)
  • PR #144458 “mcrcon: 0.7.1 -> 0.7.2” (merged)
  • PR #138801 “document `cargoLock.lockFileContents`” (merged) Input Output
  • PR #137395 “importCargoLock: introduce alternative parameter `lockFileContents`” (merged) Input Output
  • PR #136122 “nixos/syncthing: fix declarative init crash on HTTPS” (merged)
  • PR #136121 “nixos/syncthing: fix escapes interpreted in declarative config” (merged)
  • PR #134946 “fix toRustTarget for windows” (merged) Input Output
  • PR #74781 “buku: fix bukuserver (missing module)” (merged)
  • PR #74552 “GoTTY: 0.0.13 -> 2.0.0-alpha.3” (merged)
  • PR #54197 “nixos/mysql: fix option `ensureDatabases`” (merged)
  • PR #29113 “nixos/mfi: remove dangling reference” (closed)
  • PR #26552 “exa: 2017–04–02 -> 0.6.0” (merged)
  • PR #26541 “browserpass: 2017–04–11 -> 1.0.5” (merged)
  • PR #26215 “mcrcon: init at 0.0.5” (merged)
  • PR #25802 “znapzend service: fix autostart” (merged)
  • PR #25009 “znapzend service: fix reload” (merged)
  • PR #21538 “rename sound.enableMediaKeys to sound.mediaKeys.enable and add sound.mediaKeys.volumeStep” (merged)
  • PR #20020 “add `sound.volumeStep` config option” (closed)
  • issue #17068 “`sound.enableMediaKeys` values in percent instead of hardware value” (closed)
  • issue #20448 “broken package: Ren’Py” (closed)
  • issue #20449 “broken package: Pitivi” (closed)
  • issue #21540 “broken package: Tiled” (closed)
  • issue #22737 “buildRustPackage fails for projects with no dependencies in Cargo.toml” (open)
  • issue #23282 “buildRustPackage is broken” (closed)
  • issue #24438 “znapzend service: reload is broken” (closed)
  • issue #29026 “theme-vertex is broken” (closed)
  • issue #29037 “diffoscope is broken” (closed)
  • issue #29055 “xflux-gui is broken” (closed)


  • issue #8284 “segfault on conflicting packages in profile” (closed) Input Output
  • issue #6083 “nix-shell as root cd’s to /” (closed) Input Output

  • PR #316 “fix git version in example” (merged) Input Output


  • PR #63 “Vulnix Dashboard” (merged) Input Output
  • PR #28 “rebuild: copy store derivations” (merged) Input Output

Cardano Node

  • PR #4489 “add cicero CI actions” (merged) Input Output
  • PR #4518 “fix nix impurity” (merged) Input Output

Cardano DB Sync

  • PR #1280 “add CI action for Cicero” (merged) Input Output

Cardano Ledger

  • PR #3137 “modernize tullia CI setup” (merged) Input Output
  • PR #3097 “add cicero CI” (merged) Input Output

Cardano Ogmios

  • PR #5 “add cicero CI action” (merged) Input Output

Cardano Addresses

  • PR #205 “add tullia tasks and cicero action for CI” (closed) Input Output

Cardano Base

  • PR #339 “CI improvements” (merged) Input Output
  • PR #323 “add std flake and tullia” (merged) Input Output


  • issue #1 “Inconsistent behavior on new keys in RHS” (closed) Input Output


  • PR #183 “fix container stats endpoint response handling” (merged) Input Output


  • PR #207 “add FontSize to `opts.Label`” (merged) Input Output
  • PR #206 “add label to `opts.GraphLink`” (merged) Input Output


  • PR #33 “support tab-based indentation” (merged)


  • PR #89 “add map method” (open)
  • PR #87 “add serialization support for Trees” (merged)


  • PR #480 “StorageService::restore() takes immutable receiver” (merged)


  • PR #1 “fetch yew from” (merged)


  • issue #33 “escaped curly brace emitted twice” (closed)
  • issue #4 “parse error with <style> tag” (closed)


  • PR #254 “transparent StackView layers” (merged)
  • PR #107 “return length and width from utils::prefix(_length)” (merged)
  • PR #106 “Text Style” (closed)
  • PR #105 “add shell.nix file for Nix users” (merged)


  • issue #841 “selection is off by one when selecting char by char starting from multi-cursors with one-char selection” (open)
  • issue #808 “special characters confuse SpawnMultiCursor” (closed)
  • issue #807 “selection jumps with multiple cursors” (closed)
  • issue #804 “PageUp / PageDown sometimes get stuck” (closed)
  • issue #803 “VCS plugin fails to install” (closed)
  • issue #799 “characters lost after multi-cursor undo” (closed)
  • issue #798 “index out of range after failed undo with multiple cursors” (closed)


  • PR #4267 “Fix CUE comment options” (merged)


  • issue #4797 “std.os.setsockopt broken with libc” (closed)

Zig Language Server

  • issue #330 “Nix package build broken” (closed)


  • PR #2 “define error set for all sqlite errors” (merged) Input Output
  • PR #1 “fix method self parameter type” (merged) Input Output


  • issue #467 “Sort files first” (closed)


  • PR #3151 “added Polyline#setVertices(float[])” (merged)
  • PR #2976 “fix #2974 GeometryUtils#polygonArea(float[], int, int)” (merged)
  • PR #2945 “libgdx-utils as 3rd party extension” (closed)
  • PR #2572 “added missing setMaxLength(..) to GWT RopeJoint” (merged)
  • PR #2571 “added missing methods to GWT WeldJoint” (merged)
  • PR #2328 “fixed PolygonRegionLoader GWT compatibility and error report” (merged)
  • PR #2316 “set empty Gdx.* fields and made get[Component]() methods work in headless backend” (merged)
  • PR #1692 “added FileHandle#listFiles(FilenameFilter)” (closed)
  • PR #1665 “merged old and new PolygonRegionLoader” (merged)
  • PR #1602 “added PolygonRegionLoader for the AssetManager” (merged)
  • PR #861 “rewrote InterpolationTest” (merged)
  • issue #3057 “com.badlogic.gdx.reflect.Method is missing annotation methods” (closed)
  • issue #2974 “GeometryUtils#polygonArea(..) is broken” (closed)
  • issue #2947 “ProgressBar#setAnimateDuration(float) is broken” (closed)
  • issue #2943 “missing ClassReflection#isArray(Class)” (closed)
  • issue #2777 “ScrollPane offsets widget by bar size” (closed)
  • issue #2710 “Box2DDebugRenderer draws incorrectly positioned AABBs for CircleShapes” (closed)
  • issue #2345 “FileHandle#exists() doesn’t close resource on iOS” (closed)
  • issue #1951 “ProgressBar requires knobBefore” (closed)


  • PR #4 “fix image links” (merged)
  • PR #3 “fix multi-monitor if some are disabled” (merged)


  • issue #2231 “`on target delete delete source` does not delete object extending abstract type” (closed)
  • issue #2232 “`constraint expression` from parent type is not checked on link target deletion” (closed)


  • issue #1123 “cmd/cue: various errors related to conflicting defaults” (open) Input Output


  • issue #247 “Infinite loop with bind:selectedValue on multi selects” (closed)


  • PR #131 “fixed links to” (merged)

  • PR #7 “fixed ArcadeRS 1.6 code” (merged)