{
  lib,
  config,
  ...
}: let
  cfg = config.marleycfg.profiles;
in {
  options.marleycfg.profiles = {
    desktop = lib.mkEnableOption "graphical desktop profile";
    laptop = lib.mkEnableOption "laptop profile";
    server = lib.mkEnableOption "server profile";
  };

  config = lib.mkIf cfg.server {
    assertions = [
      {
        assertion = cfg.server -> !cfg.desktop;
        message = ''
          The marleycfg.profiles.server and marleycfg.profiles.desktop options
          are mutually exclusive.
        '';
      }
    ];
  };
}
