# Craige's addiotnal desktop requirements
{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.roles.desktopCraige;
in {
  options.roles.desktopCraige = {
    enable = mkEnableOption "to enable Craige's desktop role.";
  };
  config = mkIf (cfg.enable) {
    environment.systemPackages = with pkgs; [
      ffmpeg-full # record, convert and stream audio and video
      gimp # The GNU Image Manipulation Program
      kdePackages.kasts # Kirigami-based podcast player
      mpd # A flexible, powerful daemon for playing music
      ncmpcpp # A featureful ncurses based MPD client inspired by ncmpc
      nvme-cli # NVM-Express user space tooling for Linux
      pandoc # Conversion between documentation formats
      pavucontrol # PulseAudio Volume Control
      siji # An iconic bitmap font based on Stlarch with additional glyphs
      shared-mime-info # A database of common MIME types
      shotwell # Photo organizer
      sshfs # allows remote filesystems to be mounted over SSH
      taskwarrior # Highly flexible command-line tool to manage TODO lists
      termonad # Terminal emulator configurable in Haskell
      texliveFull # TeX Live environment
      tmate # Instant Terminal Sharing
      tor-browser-bundle-bin # Tor Browser Bundle built by torproject.org
      tuba # Fediverse client
      unzip # An extraction utility for archives compressed in .zip format
      vcsh # Version Control System for $HOME
      yt-dlp # Command-line tool to download videos
    ];
    programs.firefox.policies.ExtensionSettings = {
      "{eceab40b-230a-4560-98ed-185ad010633f}" = {
        install_url = "https://addons.mozilla.org/firefox/downloads/latest/nixos-packages-search-engine/latest.xpi";
        installation_mode = "force_installed";
      }; # package search
    };
  };
}