{
  inputs,
  system,
  nix-rice,
}:
let
  pkgs = inputs.nixpkgs.legacyPackages.${system};
  inherit (nix-rice) kitty-themes;
  inherit (nix-rice.palette) toRGBShortHex toRGBHex;
  theme = kitty-themes.parseTheme ./pal.conf;
in
rec {
  palette = theme // {
    normal = {
      black = theme.color0;
      red = theme.color1;
      green = theme.color2;
      yellow = theme.color3;
      blue = theme.color4;
      magenta = theme.color5;
      cyan = theme.color6;
      white = theme.color7;
    };
    bright = {
      black = theme.color8;
      red = theme.color9;
      green = theme.color10;
      yellow = theme.color11;
      blue = theme.color12;
      magenta = theme.color13;
      cyan = theme.color14;
      white = theme.color15;
    };
    util = {
      fg = theme.foreground;
      bg = theme.background;
      fg_sel = theme.selection_foreground;
      bg_sel = theme.selection_background;
      inherit (theme) cursor;
      # url = theme.url_color;
    };
    hex = toRGBHex palette;
    shortHex = toRGBShortHex palette;
  };

  fonts =
    let
      sans = {
        name = "Inria Sans";
        size = 12;
        package = pkgs.inriafonts;
      };
      serif = {
        name = "Inria Serif";
        size = 12;
        package = pkgs.inriafonts;
      };
      monospace = {
        name = "Fira Code";
        size = 10;
        package = pkgs.fira-code;
      };
      emoji = {
        name = "Twitter Color Emoji";
        size = 12;
        package = pkgs.twemoji-color-font;
      };
    in
    {
      inherit
        sans
        serif
        monospace
        emoji
        ;
      pkgs = [
        sans.package
        serif.package
        monospace.package
        emoji.package
        pkgs.meslo-lgs-nf
      ];
    };

  icons =
    let
      package = pkgs.papirus-icon-theme;
    in
    {
      inherit package;
      name = "Papirus-Dark";
      pkgs = [
        package
      ];
    };

  gtk-theme = {
    name = "nix-rice";
    package = pkgs.callPackage ./gtk-theme.nix { } { palette = toRGBShortHex palette; };
  };

  borders = {
    thickness = 6;
    rounding = 0;
    gaps_in = 32;
    gaps_out = 72;
  };

  bg = rec {
    src =
      let
        name = "wallpaper.jpg";
      in
      builtins.path {
        inherit name;
        path = ./${name};
        sha256 = "2db3f9d0397fbd4746ada297bd14c0c7d3e22c7d4e894968fcfece90bbfb902a";
      };
    image = pkgs.callPackage ./wallpaper.nix { } {
      palette = toRGBShortHex palette;
      wallpaper = src;
    };
  };

  cursor = {
    package = pkgs.afterglow-cursors-recolored.override {
      themeVariants = [ "Dracula" ];
      draculaColorVariants = [ "Orange" ];
    };
    name = "Afterglow-Recolored-Dracula-Orange";
  };

  plymouth = {
    theme = "starship";
    font = "${fonts.sans.package}/share/fonts/truetype/InriaSans-Regular.ttf";
    themePackages = [
      inputs.hudcore.packages.${pkgs.system}.default
    ];
  };
}
