{ config, lib, pkgs, ... }: with lib; let cfg = config.services.guix; in { options.services.guix = { enable = mkEnableOption "GNU Guix package manager"; }; config = mkIf cfg.enable { systemd.services.guix-daemon = { description = "Build daemon for GNU Guix"; wantedBy = [ "multi-user.target" ]; serviceConfig = { Restart = "always"; ExecStart = "${pkgs.guix}/bin/guix-daemon --build-users-group=guixbuild"; Environment = null; RemainAfterExit = "yes"; StandardOutput = "syslog"; StandardError = "syslog"; TaskMax = "8192"; }; }; users = { extraUsers = lib.attrs.genAttrs (lib.lists.range 1 10) (n: { name = "guixbuilder${n}"; isSystemUser = true; extraGroups = [ "guixbuild" ]; group = "guixbuild"; description = "Guix build user ${n}"; }); extraGroups = { "guixbuild" = { }; }; }; }; }