{
  home.stateVersion = "26.05";

  gtk = {
    enable = true;
    # Global defaults
    font.name = "Global Font";
    theme.name = "Global-Theme";
    iconTheme.name = "Global-Icons";
    cursorTheme.name = "Global-Cursor";

    # Per-version overrides
    gtk2 = {
      font.name = "GTK2-Font";
      theme.name = "GTK2-Theme";
      extraConfig = "gtk-can-change-accels = 1";
    };

    gtk3 = {
      iconTheme.name = "GTK3-Icons";
      cursorTheme.name = "GTK3-Cursor";
      extraConfig = {
        gtk-recent-files-limit = 10;
      };
      extraCss = "window { border: 1px solid red; }";
    };

    gtk4 = {
      font.name = "GTK4-Font";
      extraConfig = {
        gtk-recent-files-limit = 20;
      };
      extraCss = "window { border: 2px solid blue; }";
    };
  };

  nmt.script = ''
    # GTK2 should use overridden font/theme, global icons/cursor
    assertFileExists home-files/.gtkrc-2.0
    assertFileContent home-files/.gtkrc-2.0 \
      ${./gtk-per-version-override-gtk2-expected.conf}

    # GTK3 should use global font/theme, overridden icons/cursor
    assertFileExists home-files/.config/gtk-3.0/settings.ini
    assertFileContent home-files/.config/gtk-3.0/settings.ini \
      ${./gtk-per-version-override-gtk3-expected.ini}
    assertFileExists home-files/.config/gtk-3.0/gtk.css
    assertFileContent home-files/.config/gtk-3.0/gtk.css \
      ${./gtk-per-version-override-gtk3-css-expected.css}

    # GTK4 should use overridden font, global icons/cursor
    assertFileExists home-files/.config/gtk-4.0/settings.ini
    assertFileContent home-files/.config/gtk-4.0/settings.ini \
      ${./gtk-per-version-override-gtk4-expected.ini}
    assertFileExists home-files/.config/gtk-4.0/gtk.css
    assertFileContent home-files/.config/gtk-4.0/gtk.css \
      ${./gtk-per-version-override-gtk4-css-expected.css}
  '';
}
