{
  lib,
  pkgs,
  config,
  ...
}:
let
  inherit (lib) mkOption types;
  inherit (pkgs.liminix.services) oneshot;
in
{
  options = {
    hostname = mkOption {
      description = ''
        System hostname of the device, as returned by gethostname(2). May or
        may not correspond to any name it's reachable at on any network.
      '';
      default = "liminix";
      type = types.nonEmptyStr;
    };
  };
  config = {
    services.hostname = oneshot {
      name = "hostname";
      up = "echo ${config.hostname} > /proc/sys/kernel/hostname";
      down = "true";
    };
  };
}