{
  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 ];
}
