dynix/modules/dynamicism/distccd.nix

54 lines
1.3 KiB
Nix

# SPDX-FileCopyrightText: 2026 Qyriad <qyriad@qyriad.me>
#
# SPDX-License-Identifier: EUPL-1.1
{ pkgs, lib, config, ... }:
let
cfg = config.services.distccd;
cliArgs = lib.cli.toCommandLineShellGNU { explicitBool = false; } {
no-detach = true;
daemon = true;
enable-tcp-insecure = true;
port = cfg.port;
# Nulls are handled automatically.
job-lifetime = cfg.jobTimeout;
log-level = cfg.logLevel;
jobs = cfg.maxJobs;
nice = cfg.nice;
stats = cfg.stats.enable;
stats-port = if cfg.stats.enable then cfg.stats.port else null;
zeroconf = cfg.zeroconf;
allow = cfg.allowedClients;
};
startDistccd = pkgs.writeShellApplication {
name = "start-distccd";
runtimeInputs = [ pkgs.distccMasquerade ];
text = ''
${lib.getExe' cfg.package "distccd"} \
${cliArgs}
'';
};
in
{
dynamicism.for.distccd = {
source-options = [
"services.distccd.jobTimeout"
"services.distccd.logLevel"
"services.distccd.maxJobs"
"services.distccd.nice"
];
unitDropins."distccd.service" = pkgs.writeTextFile {
name = "distccd-override.conf";
text = ''
[Service]
ExecStart=
ExecStart=${lib.getExe startDistccd}
'';
passthru.startScript = startDistccd;
};
};
}