{ inputs, pkgs, config, lib, ... }:
let
  spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default;
  themeMap = lib.fix (self: {
    "Catppuccin Mocha" = spicePkgs.themes.catppuccin-mocha;
    "Catppuccin Latte" = spicePkgs.themes.catppuccin-latte;
    "Catppuccin Frappe" = spicePkgs.themes.catppuccin-frappe;
    "Catppuccin Macchiato" = spicePkgs.themes.catppuccin-macchiato;

    default.light = self."Catppuccin Latte";
    default.dark = self."Catppuccin Macchiato";
  });
in
{
  programs.spicetify = {
    enable = true;

    theme = config.satellite.theming.get themeMap;

    enabledExtensions = with spicePkgs.extensions; [
      fullAppDisplayMod
      shuffle # Working shuffle
      keyboardShortcut
      skipStats # Track my skips
      listPlaylistsWithSong # Adds button to show playlists which contain a song
      playlistIntersection # Shows stuff that's in two different playlists
      fullAlbumDate
      bookmark
      trashbin
      groupSession
      wikify # Shows an artist's wikipedia entry
      songStats
      showQueueDuration
      genre
      adblock
      savePlaylists # Adds a button to duplicate playlists
    ];
  };

  # TODO: persistence
}