{ config, lib, pkgs, imports, boot, self, ... }: # Role for headless servers # covers raspi's, sbc, NUC etc, anything # that is headless and minimal for running services with lib; { config = { # Enable monitoring for remote scraiping mySystem.services.promMonitoring.enable = true; mySystem.services.rebootRequiredCheck.enable = true; mySystem.security.wheelNeedsSudoPassword = false; mySystem.services.cockpit.enable = true; mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ name = config.networking.hostName; group = "servers"; url = "icmp://${config.networking.hostName}.l.trux.dev"; interval = "30s"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; nix.settings = { # TODO factor out into mySystem # Avoid disk full issues max-free = lib.mkDefault (1000 * 1000 * 1000); min-free = lib.mkDefault (128 * 1000 * 1000); }; services.logrotate.enable = mkDefault true; environment.noXlibs = mkDefault true; documentation = { enable = mkDefault false; doc.enable = mkDefault false; info.enable = mkDefault false; man.enable = mkDefault false; nixos.enable = mkDefault false; }; programs.command-not-found.enable = mkDefault false; sound.enable = false; hardware.pulseaudio.enable = false; services.udisks2.enable = mkDefault false; # xdg = { # autostart.enable = mkDefault false; # icons.enable = mkDefault false; # mime.enable = mkDefault true; # sounds.enable = mkDefault false; # }; }; }