{
  config,
  marleylib,
  lib,
  ...
}: let
  cfg = config.marleycfg.profiles;

  inherit (marleylib.module) enabled;
in {
  marleyos = lib.mkMerge [
    # Universal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {
      programs = {
        btop = enabled;
        curl = enabled;
        fish = enabled;
        jq = enabled;
        less = enabled;
        neovim = enabled;
        nix-output-monitor = enabled;
        ripgrep = enabled;
        wget = enabled;
      };

      services = {
        openssh = enabled; # required for agenix
      };
    }
    #
    #
    # Graphical Desktop - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (lib.optionalAttrs cfg.desktop {})
    #
    #
    # Server - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (lib.optionalAttrs cfg.server {})
  ];
}
