{ lib, config, pkgs, inputs, ... }: let inherit (lib) mkEnableOption mkIf optionals; cfg = config.desktops; in { imports = [ ./hyprland ./sway ./ly.nix ./wayland.nix ]; options.desktops = { enable = mkEnableOption "Enable baseline desktop utils and programs."; wayland = mkEnableOption "Enable wayland desktop components."; ly = mkEnableOption "Install the ly display manager."; hyprland = mkEnableOption "Install the Hyprland desktop."; sway = mkEnableOption "Install the sway desktop."; }; config = mkIf cfg.enable { home-manager.users.${config.user} = { # desktop specific programs home.packages = with pkgs; [ # gtk adwaita-icon-theme # codecs libaacs libavif libbluray libjxl # wayland cage grimblast wl-clipboard wl-clip-persist wl-mirror # xdg libnotify ]; }; # desktop only fonts fonts.packages = (with pkgs; [ corefonts dejavu_fonts fira-code fira-code-symbols jetbrains-mono material-icons nerd-fonts.fira-code noto-fonts noto-fonts-cjk-sans noto-fonts-emoji twemoji-color-font vistafonts ]) ++ (with inputs.apple-fonts.packages.${pkgs.system}; [ sf-pro sf-mono sf-compact ]); fonts.fontconfig = { enable = true; defaultFonts = { serif = [ "Twemoji" "DejaVu Serif" ]; sansSerif = [ "Twemoji" "DejaVu Sans" ]; monospace = [ "Fira Code" "FiraCode Nerd Font Mono" "Font Awesome 6 Pro Regular" "Twemoji" "DejaVu Sans Mono" ]; emoji = [ "Twemoji" "Noto Color Emoji" ]; }; }; }; }