feat: consolidate Kanagawa theme and refine Walker and Limine styling

This commit is contained in:
kiri committed 2026-09-09 21:46:36 +02:00
1 parent 748c2060a4
commit abca5c2d75
15 files changed
+346 -241

No files matched your search

+277
View File
@@ -0,0 +1,277 @@
{ config, lib, ... }:
let
palette = (import ./_kanagawa-palette.nix).palette;
hex = lib.removePrefix "#";
cursor = {
name = "phinger-cursors-light";
size = 24;
};
in
{
flake.modules.nixos.theme =
{ pkgs, ... }:
{
home-manager.sharedModules = [ config.flake.modules.homeManager.theme ];
environment.systemPackages = [ pkgs.phinger-cursors ];
};
flake.modules.homeManager.theme =
{ pkgs, ... }:
let
version = "unstable-2025-10-23";
src = pkgs.fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Kanagawa-GKT-Theme";
rev = "55ca4ba249eba21f861b9866b71ab41bb8930318";
hash = "sha256-UdMoMx2DoovcxSp/zBZ3PRv/Qpj+prd0uPm1gmdak2E=";
};
kanagawaGtkTheme = pkgs.stdenvNoCC.mkDerivation {
pname = "kanagawa-gtk-theme";
inherit src version;
nativeBuildInputs = [ pkgs.sassc ];
installPhase = ''
runHook preInstall
mkdir -p "$out/share/themes"
bash ./themes/install.sh \
--dest "$out/share/themes" \
--name Kanagawa \
--color dark
rm -r "$out/share/themes/Kanagawa-Dark/gtk-2.0"
runHook postInstall
'';
};
in
{
home.pointerCursor = cursor // {
enable = true;
package = pkgs.phinger-cursors;
dotIcons.enable = false;
gtk.enable = true;
};
gtk = {
enable = true;
theme = {
name = "Kanagawa-Dark";
package = kanagawaGtkTheme;
};
gtk4.theme = null;
iconTheme = {
name = "Kanagawa";
package = pkgs.kanagawa-icon-theme.overrideAttrs (_: {
inherit src version;
});
};
};
qt = {
enable = true;
platformTheme.name = "gtk3";
};
xdg.systemDirs.data = [
"${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
];
};
flake.modules.nixos.limine =
{ config, pkgs, ... }:
let
terminalPalette = palette.terminal;
mkPalette = colors: lib.concatStringsSep ";" (map hex colors);
in
{
boot.loader.limine.style = {
wallpapers = [ pkgs.nixos-artwork.wallpapers.simple-dark-gray-bootloader.gnomeFilePath ];
wallpaperStyle = "stretched";
backdrop = hex palette.secondaryBackground;
graphicalTerminal = {
# TT is transparency: let the boot wallpaper show through the terminal.
background = "FF${hex palette.background}";
foreground = hex palette.foreground;
brightForeground = hex palette.selectionForeground;
brightBackground = hex palette.selectionBackground;
palette = mkPalette [
terminalPalette.color0
terminalPalette.color1
terminalPalette.color2
terminalPalette.color3
terminalPalette.color4
terminalPalette.color5
terminalPalette.color6
terminalPalette.color7
];
brightPalette = mkPalette [
terminalPalette.color8
terminalPalette.color9
terminalPalette.color10
terminalPalette.color11
terminalPalette.color12
terminalPalette.color13
terminalPalette.color14
terminalPalette.color15
];
font = {
scale = "2x2";
spacing = 1;
};
margin = 64;
marginGradient = 0;
};
interface = {
branding = config.networking.hostName;
brandingColor = hex palette.accents.blue;
};
};
};
flake.modules.nixos.sddm = { pkgs, ... }: {
services.displayManager.sddm = {
theme = "${
pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; }
}/share/sddm/themes/sddm-astronaut-theme";
extraPackages = [ pkgs.kdePackages.qtmultimedia ];
settings.Theme = {
CursorTheme = cursor.name;
CursorSize = cursor.size;
};
};
};
flake.modules.nixos.plymouth = { pkgs, ... }: {
boot.plymouth = {
theme = "spinner_alt";
themePackages = [ pkgs.adi1090x-plymouth-themes ];
};
};
flake.modules.homeManager.terminal-kitty = {
programs.kitty = {
settings = {
bold_font = "postscript_name=JetBrainsMono-Bold";
bold_italic_font = "postscript_name=JetBrainsMono-BoldItalic";
};
font = {
name = "JetBrains Mono";
size = 11;
};
extraConfig = ''
# Nerd Fonts v3.4.0
symbol_map U+e000-U+e00a,U+e0a0-U+e0a2,U+e0a3,U+e0b0-U+e0b3,U+e0b4-U+e0c8,U+e0ca,U+e0cc-U+e0d7,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b7,U+e700-U+e8ef,U+ea60-U+ec1e,U+ed00-U+efce,U+f000-U+f2ff,U+f300-U+f381,U+f400-U+f533,U+f0001-U+f1af0 Symbols Nerd Font Mono
## name: Kanagawa Wave
## license: MIT
## author: Tommaso Laurenzi
## upstream: https://github.com/rebelot/kanagawa.nvim/
background ${palette.background}
foreground ${palette.foreground}
selection_background ${palette.selectionBackground}
selection_foreground ${palette.selectionForeground}
url_color ${palette.url}
cursor ${palette.cursor}
active_tab_background ${palette.background}
active_tab_foreground ${palette.selectionForeground}
inactive_tab_background ${palette.background}
inactive_tab_foreground ${palette.muted}
color0 ${palette.terminal.color0}
color1 ${palette.terminal.color1}
color2 ${palette.terminal.color2}
color3 ${palette.terminal.color3}
color4 ${palette.terminal.color4}
color5 ${palette.terminal.color5}
color6 ${palette.terminal.color6}
color7 ${palette.terminal.color7}
color8 ${palette.terminal.color8}
color9 ${palette.terminal.color9}
color10 ${palette.terminal.color10}
color11 ${palette.terminal.color11}
color12 ${palette.terminal.color12}
color13 ${palette.terminal.color13}
color14 ${palette.terminal.color14}
color15 ${palette.terminal.color15}
color16 ${palette.terminal.color16}
color17 ${palette.terminal.color17}
'';
};
};
flake.modules.homeManager.niri = {
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
wayland.windowManager.niri.settings.layout.border = {
active-color = palette.accents.blue;
inactive-color = palette.subtleBorder;
urgent-color = palette.accents.red;
};
};
flake.modules.homeManager.ai = {
xdg.configFile."herdr/config.toml".text = lib.mkAfter ''
[theme]
name = "kanagawa"
auto_switch = false
'';
};
flake.modules.homeManager.noctalia =
{ config, ... }:
let
wallpaper = "${config.home.homeDirectory}/media/images/wallpapers/green-leaves.png";
in
{
programs.noctalia.settings = {
shell.font_family = "Lexend";
theme = {
builtin = "Kanagawa";
community_palette = "Kanagawa Paper";
wallpaper_scheme = "m3-content";
};
wallpaper = {
default.path = wallpaper;
last.path = wallpaper;
};
};
};
flake.modules.homeManager.neovim = { pkgs, ... }: {
wrappers.neovim.specs.theme = {
data = pkgs.vimPlugins.kanagawa-nvim;
before = [ "INIT_MAIN" ];
config = ''
require("kanagawa").setup({
dimInactive = true,
colors = {
theme = {
all = {
ui = { bg_gutter = "none" },
},
},
},
})
vim.cmd.colorscheme("kanagawa-wave")
'';
};
};
flake.modules.homeManager.walker = {
programs.walker.themes.constellation.style = lib.mkAfter ''
@define-color window_bg_color ${palette.background};
@define-color accent_bg_color ${palette.selectionBackground};
@define-color theme_fg_color ${palette.foreground};
@define-color error_bg_color ${palette.terminal.color1};
@define-color error_fg_color ${palette.foreground};
'';
};
}
-4
View File
@@ -123,10 +123,6 @@ in
xdg.configFile."herdr/config.toml".text = ''
onboarding = false
[theme]
name = "kanagawa"
auto_switch = false
[ui]
agent_panel_sort = "spaces"
+2 -49
View File
@@ -1,10 +1,4 @@
{ lib, ... }:
let
palette = (import ./_kanagawa.nix).palette;
hex = lib.removePrefix "#";
terminalPalette = palette.terminal;
mkPalette = colors: lib.concatStringsSep ";" (map hex colors);
in
{ ... }:
{
flake.modules.nixos.limine =
{ config, lib, ... }:
@@ -26,48 +20,7 @@ in
maxGenerations = 10;
resolution = interfaceResolution;
style = {
backdrop = hex palette.secondaryBackground;
graphicalTerminal = {
background = "00${hex palette.background}";
foreground = hex palette.foreground;
brightForeground = hex palette.selectionForeground;
brightBackground = hex palette.selectionBackground;
palette = mkPalette [
terminalPalette.color0
terminalPalette.color1
terminalPalette.color2
terminalPalette.color3
terminalPalette.color4
terminalPalette.color5
terminalPalette.color6
terminalPalette.color7
];
brightPalette = mkPalette [
terminalPalette.color8
terminalPalette.color9
terminalPalette.color10
terminalPalette.color11
terminalPalette.color12
terminalPalette.color13
terminalPalette.color14
terminalPalette.color15
];
font = {
scale = "2x2";
spacing = 1;
};
margin = 64;
marginGradient = 24;
};
interface = {
branding = config.networking.hostName;
brandingColor = hex palette.accents.blue;
resolution = interfaceResolution;
};
};
style.interface.resolution = interfaceResolution;
};
};
};
-4
View File
@@ -171,10 +171,6 @@ in
ui = {
lazy = true;
data = with pkgs.vimPlugins; [
{
data = kanagawa-nvim;
lazy = false;
}
render-markdown-nvim
lualine-nvim
gitsigns-nvim
@@ -1,15 +1,3 @@
require("kanagawa").setup({
dimInactive = true,
colors = {
theme = {
all = {
ui = { bg_gutter = "none" },
},
},
},
})
vim.cmd.colorscheme("kanagawa-wave")
require("lz.n").load({
{
"lualine.nvim",
@@ -34,7 +22,7 @@ require("lz.n").load({
require("lualine").setup({
options = {
theme = "kanagawa",
theme = "auto",
component_separators = "",
section_separators = "",
globalstatus = true,
+1 -10
View File
@@ -3,7 +3,6 @@
...
}:
let
kanagawa = import ../_kanagawa.nix;
hmModules = config.flake.modules.homeManager;
in
{
@@ -28,7 +27,6 @@ in
...
}:
let
palette = kanagawa.palette;
swapMonitorWorkspaces = import ./_shortcuts.nix { inherit pkgs; };
machine = config.facts.machine;
in
@@ -46,8 +44,6 @@ in
++ [ swapMonitorWorkspaces ];
};
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
wayland.windowManager.niri = {
enable = true;
settings = {
@@ -104,12 +100,7 @@ in
focus-ring.off = { };
default-column-width.proportion = 1. / 2.;
border = {
width = 3;
active-color = palette.accents.blue;
inactive-color = palette.subtleBorder;
urgent-color = palette.accents.red;
};
border.width = 3;
};
debug.honor-xdg-activation-with-invalid-serial = true;
-7
View File
@@ -9,7 +9,6 @@
}:
let
homeDir = config.home.homeDirectory;
wallpaper = "${homeDir}/media/images/wallpapers/green-leaves.png";
in
{
desktop.autostart = [ [ (lib.getExe config.programs.noctalia.package) ] ];
@@ -85,7 +84,6 @@
};
shell = {
font_family = "Lexend";
polkit_agent = true;
# Handy provides recording feedback; omit microphone activity popups/indicators.
privacy.mic_filter_regex = ".*";
@@ -99,9 +97,6 @@
};
theme = {
builtin = "Kanagawa";
community_palette = "Kanagawa Paper";
wallpaper_scheme = "m3-content";
templates = {
enable_builtin_templates = false;
enable_community_templates = false;
@@ -110,8 +105,6 @@
wallpaper = {
directory = "${homeDir}/media/images/wallpapers";
default.path = wallpaper;
last.path = wallpaper;
};
weather.refresh_minutes = 15;
+1 -3
View File
@@ -1,7 +1,7 @@
{ ... }:
{
flake.modules.nixos.plymouth =
{ pkgs, ... }:
{ ... }:
{
boot = {
consoleLogLevel = 3;
@@ -16,8 +16,6 @@
plymouth = {
enable = true;
theme = "spinner_alt";
themePackages = [ pkgs.adi1090x-plymouth-themes ];
};
};
};
+7 -20
View File
@@ -1,23 +1,10 @@
{
flake.modules.nixos.sddm =
{
pkgs,
...
}:
{
services.displayManager.sddm = {
enable = true;
enableHidpi = true;
wayland.enable = true;
wayland.compositor = "kwin";
theme = "${
pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; }
}/share/sddm/themes/sddm-astronaut-theme";
extraPackages = [ pkgs.kdePackages.qtmultimedia ];
settings.Theme = {
CursorTheme = "phinger-cursors-light";
CursorSize = 24;
};
};
flake.modules.nixos.sddm = {
services.displayManager.sddm = {
enable = true;
enableHidpi = true;
wayland.enable = true;
wayland.compositor = "kwin";
};
};
}
-50
View File
@@ -6,8 +6,6 @@ in
flake.modules.homeManager.terminal-kitty =
{ pkgs, ... }:
let
theme = import ./_kanagawa.nix;
palette = theme.palette;
kitty = pkgs.symlinkJoin {
name = "kitty-single";
paths = [ pkgs.kitty ];
@@ -24,13 +22,7 @@ in
programs.kitty = {
enable = true;
package = kitty;
font = {
name = "JetBrains Mono";
size = 11;
};
settings = {
bold_font = "postscript_name=JetBrainsMono-Bold";
bold_italic_font = "postscript_name=JetBrainsMono-BoldItalic";
disable_ligatures = "always";
scrollback_lines = 10000;
enable_audio_bell = false;
@@ -39,48 +31,6 @@ in
update_check_interval = 0;
};
keybindings."shift+enter" = "send_text all \\x0a";
extraConfig = ''
# Nerd Fonts v3.4.0
symbol_map U+e000-U+e00a,U+e0a0-U+e0a2,U+e0a3,U+e0b0-U+e0b3,U+e0b4-U+e0c8,U+e0ca,U+e0cc-U+e0d7,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b7,U+e700-U+e8ef,U+ea60-U+ec1e,U+ed00-U+efce,U+f000-U+f2ff,U+f300-U+f381,U+f400-U+f533,U+f0001-U+f1af0 Symbols Nerd Font Mono
## name: ${theme.displayName}
## license: MIT
## author: Tommaso Laurenzi
## upstream: https://github.com/rebelot/kanagawa.nvim/
background ${palette.background}
foreground ${palette.foreground}
selection_background ${palette.selectionBackground}
selection_foreground ${palette.selectionForeground}
url_color ${palette.url}
cursor ${palette.cursor}
active_tab_background ${palette.background}
active_tab_foreground ${palette.selectionForeground}
inactive_tab_background ${palette.background}
inactive_tab_foreground ${palette.muted}
color0 ${palette.terminal.color0}
color1 ${palette.terminal.color1}
color2 ${palette.terminal.color2}
color3 ${palette.terminal.color3}
color4 ${palette.terminal.color4}
color5 ${palette.terminal.color5}
color6 ${palette.terminal.color6}
color7 ${palette.terminal.color7}
color8 ${palette.terminal.color8}
color9 ${palette.terminal.color9}
color10 ${palette.terminal.color10}
color11 ${palette.terminal.color11}
color12 ${palette.terminal.color12}
color13 ${palette.terminal.color13}
color14 ${palette.terminal.color14}
color15 ${palette.terminal.color15}
color16 ${palette.terminal.color16}
color17 ${palette.terminal.color17}
'';
};
systemd.user.services.kitty-daemon = {
Unit = {
+2 -80
View File
@@ -1,80 +1,2 @@
{ config, ... }:
let
cursor = {
name = "phinger-cursors-light";
size = 24;
};
in
{
flake.modules.nixos.theme =
{ pkgs, ... }:
{
home-manager.sharedModules = [ config.flake.modules.homeManager.theme ];
environment.systemPackages = [ pkgs.phinger-cursors ];
};
flake.modules.homeManager.theme =
{ pkgs, ... }:
let
version = "unstable-2025-10-23";
src = pkgs.fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Kanagawa-GKT-Theme";
rev = "55ca4ba249eba21f861b9866b71ab41bb8930318";
hash = "sha256-UdMoMx2DoovcxSp/zBZ3PRv/Qpj+prd0uPm1gmdak2E=";
};
kanagawaGtkTheme = pkgs.stdenvNoCC.mkDerivation {
pname = "kanagawa-gtk-theme";
inherit src version;
nativeBuildInputs = [ pkgs.sassc ];
installPhase = ''
runHook preInstall
mkdir -p "$out/share/themes"
bash ./themes/install.sh \
--dest "$out/share/themes" \
--name Kanagawa \
--color dark
rm -r "$out/share/themes/Kanagawa-Dark/gtk-2.0"
runHook postInstall
'';
};
in
{
home.pointerCursor = cursor // {
enable = true;
package = pkgs.phinger-cursors;
dotIcons.enable = false;
gtk.enable = true;
};
gtk = {
enable = true;
theme = {
name = "Kanagawa-Dark";
package = kanagawaGtkTheme;
};
gtk4.theme = null;
iconTheme = {
name = "Kanagawa";
package = pkgs.kanagawa-icon-theme.overrideAttrs (_: {
inherit src version;
});
};
};
qt = {
enable = true;
platformTheme.name = "gtk3";
};
xdg.systemDirs.data = [
"${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
];
};
}
# Select a complete theme module: plugins, assets and behavior as well as colors.
{ imports = [ ./_themes/kanagawa.nix ]; }
+28
View File
@@ -129,6 +129,34 @@
enable = true;
runAsService = true;
config.theme = "constellation";
themes.constellation = {
layouts.layout =
lib.replaceStrings
[ ''<property name="height-request">570</property>'' ]
[ ''<property name="height-request">460</property>'' ]
(builtins.readFile "${inputs.walker}/resources/themes/default/layout.xml");
style = lib.mkBefore (
builtins.readFile "${inputs.walker}/resources/themes/default/style.css"
+ ''
.box-wrapper {
padding: 10px;
border-radius: 10px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
}
.search-container, .item-box, .preview { border-radius: 6px; }
.input { padding: 8px 10px; }
.item-box { padding: 5px 8px; }
.large-icons { -gtk-icon-size: 24px; }
.item-image-text { font-size: 24px; }
.item-subtext { opacity: 0.75; }
.item-quick-activation { padding: 3px 5px; }
.keybinds { padding-top: 6px; }
.keybind-bind { opacity: 0.65; }
''
);
};
config.providers = {
default = walkerDefaults.providers.default ++ [ "menus:projects" ];
prefixes = walkerDefaults.providers.prefixes ++ [