{ config, lib, ... }: let inherit (lib) mkDefault mkIf mkMerge mkOption recursiveUpdate types ; role = config.ataraxia.defaults.role; in { options.ataraxia.defaults = { role = mkOption { type = types.enum [ "none" "base" "server" "desktop" ]; default = "none"; }; }; config = let baseRole = { }; serverRole = recursiveUpdate baseRole { }; desktopRole = recursiveUpdate baseRole { ataraxia.defaults.sound.enable = mkDefault true; }; in mkMerge [ (mkIf (role == "base") baseRole) (mkIf (role == "server") serverRole) (mkIf (role == "desktop") desktopRole) ]; }