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

  inherit (marleylib.module) enabled;
in {
  marleyos = lib.mkMerge [
    # Universal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {
      programs = {
        agenix = enabled;
        bat = enabled;
        curl = enabled;
        eza = enabled;
        figlet = enabled;
        fish = enabled;
        gpg = enabled;
        httpie = enabled;
        hyfetch = enabled;
        journalctl = enabled;
        jq = enabled;
        just = enabled;
        less = enabled;
        man = enabled;
        nh = enabled;
        ripgrep = enabled;
        ssh = enabled;
        starship = enabled;
        systemctl = enabled;
        tmux = enabled;
        wget = enabled;
        zoxide = enabled;
      };
    }
    #
    #
    # Graphical Desktop - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (lib.optionalAttrs cfg.desktop {
      shell.niri = enabled;

      programs = {
        cheat = enabled;
        fzf = enabled;
        gh = enabled;
        glow = enabled;
        nemo = enabled;
        neo = enabled;
        neovim = enabled;
        tea = enabled;
      };

      services = {
        udiskie = enabled;
      };
    })
    #
    #
    # Server - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (lib.optionalAttrs cfg.server {})
  ];
}
