Files
omnixy/modules/themes/tokyo-night.nix
theArctesian 8ceb61f208 Fix remaining deprecation warnings
- Fixed MySQL -> MariaDB package name
- Fixed Kitty theme -> themeFile in tokyo-night.nix
- Fixed Mako settings structure in tokyo-night.nix
- Converted individual mako options to settings.* structure
2025-09-29 19:23:17 -07:00

303 lines
8.6 KiB
Nix

{ config, pkgs, lib, inputs, ... }:
let
cfg = config.omnixy;
# Use nix-colors if available and configured, otherwise fallback to manual colors
useNixColors = cfg.colorScheme != null;
colorScheme = cfg.colorScheme;
# Manual Tokyo Night colors as fallback
manualColors = {
bg = "#1a1b26";
fg = "#c0caf5";
accent = "#7aa2f7";
red = "#f7768e";
green = "#9ece6a";
yellow = "#e0af68";
blue = "#7aa2f7";
magenta = "#bb9af7";
cyan = "#7dcfff";
white = "#c0caf5";
black = "#15161e";
};
# Helper function to get color from scheme or fallback
getColor = name: fallback:
if useNixColors && colorScheme ? colors && colorScheme.colors ? ${name}
then "#${colorScheme.colors.${name}}"
else fallback;
in
{
# Tokyo Night theme configuration
config = {
# Set theme wallpaper
omnixy.desktop.wallpaper = ./wallpapers/tokyo-night/1-scenery-pink-lakeside-sunset-lake-landscape-scenic-panorama-7680x3215-144.png;
# Hyprland theme colors
environment.etc."omnixy/hyprland/theme.conf".text = ''
general {
col.active_border = rgba(7aa2f7ee) rgba(c4a7e7ee) 45deg
col.inactive_border = rgba(414868aa)
}
decoration {
col.shadow = rgba(1a1b26ee)
}
'';
# Color palette - use nix-colors if available
environment.variables = {
OMNIXY_THEME = "tokyo-night";
OMNIXY_THEME_BG = getColor "base00" manualColors.bg;
OMNIXY_THEME_FG = getColor "base05" manualColors.fg;
OMNIXY_THEME_ACCENT = getColor "base0D" manualColors.accent;
};
# Home-manager theme configuration
home-manager.users.${config.omnixy.user or "user"} = {
# Alacritty theme - dynamic colors based on nix-colors or fallback
programs.alacritty.settings.colors = {
primary = {
background = getColor "base00" manualColors.bg;
foreground = getColor "base05" manualColors.fg;
};
normal = {
black = getColor "base00" manualColors.black;
red = getColor "base08" manualColors.red;
green = getColor "base0B" manualColors.green;
yellow = getColor "base0A" manualColors.yellow;
blue = getColor "base0D" manualColors.blue;
magenta = getColor "base0E" manualColors.magenta;
cyan = getColor "base0C" manualColors.cyan;
white = getColor "base05" manualColors.white;
};
bright = {
black = getColor "base03" "#414868";
red = getColor "base08" manualColors.red;
green = getColor "base0B" manualColors.green;
yellow = getColor "base0A" manualColors.yellow;
blue = getColor "base0D" manualColors.blue;
magenta = getColor "base0E" manualColors.magenta;
cyan = getColor "base0C" manualColors.cyan;
white = getColor "base07" manualColors.fg;
};
indexed_colors = [
{ index = 16; color = getColor "base09" "#ff9e64"; }
{ index = 17; color = getColor "base0F" "#db4b4b"; }
];
};
# Kitty theme
programs.kitty = {
themeFile = "Tokyo Night";
settings = {
background = "#1a1b26";
foreground = "#c0caf5";
selection_background = "#33467c";
selection_foreground = "#c0caf5";
cursor = "#c0caf5";
cursor_text_color = "#1a1b26";
# Black
color0 = "#15161e";
color8 = "#414868";
# Red
color1 = "#f7768e";
color9 = "#f7768e";
# Green
color2 = "#9ece6a";
color10 = "#9ece6a";
# Yellow
color3 = "#e0af68";
color11 = "#e0af68";
# Blue
color4 = "#7aa2f7";
color12 = "#7aa2f7";
# Magenta
color5 = "#bb9af7";
color13 = "#bb9af7";
# Cyan
color6 = "#7dcfff";
color14 = "#7dcfff";
# White
color7 = "#a9b1d6";
color15 = "#c0caf5";
};
};
# VS Code theme
programs.vscode.profiles.default.userSettings = {
"workbench.colorTheme" = "Tokyo Night";
"editor.tokenColorCustomizations" = {
"[Tokyo Night]" = {
"textMateRules" = [];
};
};
"workbench.colorCustomizations" = {
"[Tokyo Night]" = {
"editor.background" = "#1a1b26";
"editor.foreground" = "#c0caf5";
"sideBar.background" = "#16161e";
"sideBar.foreground" = "#a9b1d6";
"activityBar.background" = "#16161e";
"activityBar.foreground" = "#c0caf5";
};
};
};
# GTK theme
gtk = {
theme = {
name = "Tokyo-Night";
package = pkgs.tokyo-night-gtk or (pkgs.adw-gtk3.overrideAttrs (oldAttrs: {
pname = "tokyo-night-gtk";
postInstall = (oldAttrs.postInstall or "") + ''
# Customize colors for Tokyo Night
sed -i 's/#1e1e2e/#1a1b26/g' $out/share/themes/*/gtk-3.0/gtk.css
sed -i 's/#cdd6f4/#c0caf5/g' $out/share/themes/*/gtk-3.0/gtk.css
'';
}));
};
};
# Rofi/Wofi theme
programs.rofi = {
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
"*" = {
background = mkLiteral "#1a1b26";
foreground = mkLiteral "#c0caf5";
selected = mkLiteral "#33467c";
active = mkLiteral "#7aa2f7";
urgent = mkLiteral "#f7768e";
};
};
};
# Starship theme adjustments
programs.starship.settings = {
palette = "tokyo-night";
palettes.tokyo-night = {
bg = "#1a1b26";
fg = "#c0caf5";
black = "#15161e";
red = "#f7768e";
green = "#9ece6a";
yellow = "#e0af68";
blue = "#7aa2f7";
magenta = "#bb9af7";
cyan = "#7dcfff";
white = "#a9b1d6";
};
character = {
success_symbol = "[](green)";
error_symbol = "[](red)";
};
directory = {
style = "blue";
truncation_length = 3;
};
git_branch = {
style = "magenta";
symbol = " ";
};
git_status = {
style = "red";
};
};
# Neovim theme
programs.neovim.plugins = with pkgs.vimPlugins; [
{
plugin = tokyonight-nvim;
type = "lua";
config = ''
vim.cmd[[colorscheme tokyonight-night]]
'';
}
];
# Bat theme
programs.bat.config.theme = "TwoDark"; # Close to Tokyo Night
# btop theme
programs.btop.settings.color_theme = "tokyo-night";
# Lazygit theme
programs.lazygit.settings = {
gui.theme = {
activeBorderColor = [ "#7aa2f7" "bold" ];
inactiveBorderColor = [ "#414868" ];
selectedLineBgColor = [ "#33467c" ];
selectedRangeBgColor = [ "#33467c" ];
cherryPickedCommitBgColor = [ "#33467c" ];
cherryPickedCommitFgColor = [ "#7aa2f7" ];
unstagedChangesColor = [ "#f7768e" ];
defaultFgColor = [ "#c0caf5" ];
};
};
# Firefox theme
programs.firefox.profiles.default = {
userChrome = ''
/* Tokyo Night theme for Firefox */
:root {
--toolbar-bgcolor: #1a1b26 !important;
--toolbar-color: #c0caf5 !important;
--toolbarbutton-hover-background: #33467c !important;
--toolbarbutton-active-background: #414868 !important;
--urlbar-focused-bg-color: #1a1b26 !important;
--urlbar-focused-color: #c0caf5 !important;
--tab-selected-bgcolor: #33467c !important;
--tab-selected-color: #c0caf5 !important;
}
'';
};
# Mako notification theme
services.mako = {
settings = {
background-color = "#1a1b26";
text-color = "#c0caf5";
border-color = "#7aa2f7";
progress-color = "#7aa2f7";
default-timeout = 5000;
border-radius = 10;
border-size = 2;
font = "JetBrainsMono Nerd Font 10";
padding = "10";
margin = "20";
};
};
};
# Wallpaper
environment.systemPackages = with pkgs; [
(writeShellScriptBin "set-wallpaper" ''
#!/usr/bin/env bash
# Set Tokyo Night themed wallpaper
echo "Wallpaper functionality disabled - add wallpaper manually with swww"
echo "Usage: swww img /path/to/wallpaper.jpg --transition-type wipe --transition-angle 30"
'')
];
};
}