{ config, lib, pkgs, namespace, ... }: with lib; let name = "glances"; cfg = config.${namespace}.services.${name}; glancesConfig = lib.${namespace}.mkModule { inherit config name; description = "Glances system monitoring web server"; options = { }; moduleConfig = { # Install glances package environment.systemPackages = with pkgs; [ glances ]; # Configure systemd service for glances systemd.services.glances-server = { description = "Glances system monitoring web server"; enable = true; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; path = with pkgs; [ bash glances ]; script = '' glances -w --bind ${cfg.listenAddress} --port ${toString cfg.port} ''; serviceConfig = { Type = "simple"; User = "glances"; Group = "glances"; Restart = "always"; RestartSec = "5"; StandardOutput = "journal"; StandardError = "journal"; }; }; # Create glances user and group users.users.glances = { isSystemUser = true; group = "glances"; description = "Glances monitoring user"; }; users.groups.glances = { }; }; }; in { imports = [ glancesConfig ]; }