OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
main @ 58 LINES
 
[ HISTORY ]  [ UP ]
 

{
  lib,
  config,
  ...
}: let
  inherit (lib) mkOption mkEnableOption elem types;
  inherit (config.ooknet.server) services domain;
  authentikEnabled = elem "authentik" services;
in {
  options.ooknet.server.authentik = {
    enable = mkEnableOption "Authentik SSO" // {default = authentikEnabled;};

    domain = mkOption {
      type = types.str;
      default = "auth.${domain}";
      description = "Domain for Authentik portal";
    };

    port = mkOption {
      type = types.port;
      default = 9000;
      description = "Port for Authentik server";
    };

    stateDir = mkOption {
      type = types.path;
      default = "/var/lib/authentik";
      description = "State directory for Authentik";
    };

    postgres = {
      port = mkOption {
        type = types.port;
        default = 5432;
        description = "PostgreSQL port";
      };

      database = mkOption {
        type = types.str;
        default = "authentik";
      };

      user = mkOption {
        type = types.str;
        default = "authentik";
      };
    };

    redis = {
      port = mkOption {
        type = types.port;
        default = 6380;
        description = "Redis port for Authentik";
      };
    };
  };
}

{
  lib,
  config,
  ...
}: let
  inherit (lib) mkOption mkEnableOption elem
 types;
  inherit (config.ooknet.server) services do
main;
  authentikEnabled = elem "authentik" servic
es;
in {
  options.ooknet.server.authentik = {
    enable = mkEnableOption "Authentik SSO" 
// {default = authentikEnabled;};

    domain = mkOption {
      type = types.str;
      default = "auth.${domain}";
      description = "Domain for Authentik po
rtal";
    };

    port = mkOption {
      type = types.port;
      default = 9000;
      description = "Port for Authentik serv
er";
    };

    stateDir = mkOption {
      type = types.path;
      default = "/var/lib/authentik";
      description = "State directory for Aut
hentik";
    };

    postgres = {
      port = mkOption {
        type = types.port;
        default = 5432;
        description = "PostgreSQL port";
      };

      database = mkOption {
        type = types.str;
        default = "authentik";
      };

      user = mkOption {
        type = types.str;
        default = "authentik";
      };
    };

    redis = {
      port = mkOption {
        type = types.port;
        default = 6380;
        description = "Redis port for Authen
tik";
      };
    };
  };
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET