{ hostname, ...}: {
  home.file = {
    # https://github.com/davatorium/rofi/blob/next/CONFIG.md
    # Rofi configuration
    ".config/rofi/config.rasi" = {
      enable = true;
      executable = false;
      text = ''
        configuration {
        }
        @theme "gruvbox-dark"
      '';
    };

  # Rofi theme
    ".config/rofi/themes/gruvbox-dark.rasi" = {
      enable = true;
      executable = false;
      text = ''
/* ==========================================================================
   Rofi color theme

   Based on the Gruvbox color scheme for Vim by morhetz
   https://github.com/morhetz/gruvbox

   File: gruvbox-dark.rasi
   Desc: Gruvbox dark color theme for Rofi
   Author: bardisty <b@bah.im>
   Source: https://github.com/bardisty/gruvbox-rofi
   Modified: Mon Feb 12 2018 04:08:43 PST -0800
   ========================================================================== */

* {
    /* Theme settings */
    highlight: bold italic;
    scrollbar: true;

    /* Gruvbox dark colors */
    gruvbox-dark-bg0:          #282828;
    gruvbox-dark-bg0-soft:     #32302f;
    gruvbox-dark-bg3:          #665c54;
    gruvbox-dark-fg0:          #fbf1c7;
    gruvbox-dark-fg1:          #ebdbb2;
    gruvbox-dark-red-dark:     #cc241d;
    gruvbox-dark-red-light:    #fb4934;
    gruvbox-dark-yellow-dark:  #d79921;
    gruvbox-dark-yellow-light: #fabd2f;
    gruvbox-dark-gray:         #a89984;

    /* Theme colors */
    background:                  @gruvbox-dark-bg0;
    background-color:            @background;
    foreground:                  @gruvbox-dark-fg1;
    border-color:                @gruvbox-dark-gray;
    separatorcolor:              @border-color;
    scrollbar-handle:            @border-color;

    normal-background:           @background;
    normal-foreground:           @foreground;
    alternate-normal-background: @gruvbox-dark-bg0-soft;
    alternate-normal-foreground: @foreground;
    selected-normal-background:  @gruvbox-dark-bg3;
    selected-normal-foreground:  @gruvbox-dark-fg0;

    active-background:           @gruvbox-dark-yellow-dark;
    active-foreground:           @background;
    alternate-active-background: @active-background;
    alternate-active-foreground: @active-foreground;
    selected-active-background:  @gruvbox-dark-yellow-light;
    selected-active-foreground:  @active-foreground;

    urgent-background:           @gruvbox-dark-red-dark;
    urgent-foreground:           @background;
    alternate-urgent-background: @urgent-background;
    alternate-urgent-foreground: @urgent-foreground;
    selected-urgent-background:  @gruvbox-dark-red-light;
    selected-urgent-foreground:  @urgent-foreground;
}

@import "gruvbox-common.rasinc"
      '';
    };

  # Rofi theme
    ".config/rofi/themes/gruvbox-common.rasinc" = {
      enable = true;
      executable = false;
      text = ''
/* ==========================================================================
   File: gruvbox-common.rasi
   Desc: Shared rules between all gruvbox themes
   Author: bardisty <b@bah.im>
   Source: https://github.com/bardisty/gruvbox-rofi
   Modified: Mon Feb 12 2018 06:06:47 PST -0800
   ========================================================================== */

window {
    background-color: @background;
    border:           2;
    padding:          2;
}

mainbox {
    border:  0;
    padding: 0;
}

message {
    border:       2px 0 0;
    border-color: @separatorcolor;
    padding:      1px;
}

textbox {
    highlight:  @highlight;
    text-color: @foreground;
}

listview {
    border:       2px solid 0 0;
    padding:      2px 0 0;
    border-color: @separatorcolor;
    spacing:      2px;
    scrollbar:    @scrollbar;
}

element {
    border:  0;
    padding: 2px;
}

element.normal.normal {
    background-color: @normal-background;
    text-color:       @normal-foreground;
}

element.normal.urgent {
    background-color: @urgent-background;
    text-color:       @urgent-foreground;
}

element.normal.active {
    background-color: @active-background;
    text-color:       @active-foreground;
}

element.selected.normal {
    background-color: @selected-normal-background;
    text-color:       @selected-normal-foreground;
}

element.selected.urgent {
    background-color: @selected-urgent-background;
    text-color:       @selected-urgent-foreground;
}

element.selected.active {
    background-color: @selected-active-background;
    text-color:       @selected-active-foreground;
}

element.alternate.normal {
    background-color: @alternate-normal-background;
    text-color:       @alternate-normal-foreground;
}

element.alternate.urgent {
    background-color: @alternate-urgent-background;
    text-color:       @alternate-urgent-foreground;
}

element.alternate.active {
    background-color: @alternate-active-background;
    text-color:       @alternate-active-foreground;
}

scrollbar {
    width:        4px;
    border:       0;
    handle-color: @scrollbar-handle;
    handle-width: 8px;
    padding:      0;
}

mode-switcher {
    border:       2px 0 0;
    border-color: @separatorcolor;
}

inputbar {
    spacing:    0;
    text-color: @normal-foreground;
    padding:    2px;
    children:   [ prompt, textbox-prompt-sep, entry, case-indicator ];
}

case-indicator,
entry,
prompt,
button {
    spacing:    0;
    text-color: @normal-foreground;
}

button.selected {
    background-color: @selected-normal-background;
    text-color:       @selected-normal-foreground;
}

textbox-prompt-sep {
    expand:     false;
    str:        ":";
    text-color: @normal-foreground;
    margin:     0 0.3em 0 0;
}
element-text, element-icon {
    background-color: inherit;
    text-color:       inherit;
}
      '';
    };
  };
}