{ 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-${builtins.substring 0 12 (builtins.hashString "sha256" config.hostname)}"; up = "echo ${config.hostname} > /proc/sys/kernel/hostname"; down = "true"; }; }; }