{ config, pkgs, lib, ... }:
with lib;
let
  afws = pkgs.callPackage ./afws { inherit pkgs; };
in
{
  options.services.afws = {
    enable = mkOption {
      type = types.bool;
      default = false;
      description = "Enable AFWS server";
    };
  };

  config = mkIf config.services.afws.enable {
    systemd.services.afws = {
      description = "AFWS server";
      wantedBy = [ "multi-user.target" ];
      serviceConfig = {
        User = "afws";
        Group = "afws";
        ExecStart = "${afws}/bin/afws_server";
      };
      path = [ pkgs.nix pkgs.git ];
    };

    users.users.afws = {
      name = "afws";
      group = "afws";
      description = "AFWS server user";
      isSystemUser = true;
      createHome = false;
      home = "/var/lib/afws";
      useDefaultShell = true;
    };
    users.extraGroups.afws = {};
  };
}