style: improve theming with global variables

This commit is contained in:
b12f 2024-09-04 22:28:41 +02:00
parent 9fc9b6b5c8
commit 165fa48bfa
Signed by: b12f
GPG key ID: 729956E1124F8F26
16 changed files with 342 additions and 287 deletions

View file

@ -716,7 +716,8 @@
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"openstreetmap": "openstreetmap" "openstreetmap": "openstreetmap",
"themes": "themes"
} }
}, },
"systems": { "systems": {
@ -749,6 +750,21 @@
"type": "github" "type": "github"
} }
}, },
"themes": {
"locked": {
"lastModified": 1715166503,
"narHash": "sha256-eG3+PTzJntnMrO9J2fCtshU+XX18uI8iIjDKU9NkJXA=",
"owner": "RGBCube",
"repo": "ThemeNix",
"rev": "c188d0d729841f71f576dfb544e70c0340bf52a8",
"type": "github"
},
"original": {
"owner": "RGBCube",
"repo": "ThemeNix",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_2"

View file

@ -15,6 +15,8 @@
home-manager.url = "github:nix-community/home-manager/release-24.05"; home-manager.url = "github:nix-community/home-manager/release-24.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
themes.url = "github:RGBCube/ThemeNix";
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
nixos-flake.url = "github:srid/nixos-flake"; nixos-flake.url = "github:srid/nixos-flake";
@ -61,6 +63,7 @@
imports = [ imports = [
inputs.nixos-flake.flakeModule inputs.nixos-flake.flakeModule
./public-keys.nix ./public-keys.nix
./theme.nix
./lib ./lib
./modules ./modules
./hosts ./hosts

View file

@ -1,5 +1,4 @@
{ {
withSystem,
self, self,
inputs, inputs,
... ...
@ -7,6 +6,7 @@
flake = { flake = {
nixosConfigurations = { nixosConfigurations = {
stroopwafel = self.nixos-flake.lib.mkLinuxSystem { stroopwafel = self.nixos-flake.lib.mkLinuxSystem {
nixpkgs.hostPlatform = "x86_64-linux"; nixpkgs.hostPlatform = "x86_64-linux";
imports = [ imports = [
inputs.impermanence.nixosModules.impermanence inputs.impermanence.nixosModules.impermanence

View file

@ -1,20 +1,3 @@
@define-color base00 #1a181a;
@define-color base01 #2d2a2e;
@define-color base02 #303030;
@define-color base03 #949494;
@define-color base04 #d3d1d4;
@define-color base05 #e3e1e4;
@define-color base06 #303030;
@define-color base07 #ff5f5f;
@define-color base08 #f85e84;
@define-color base09 #df5923;
@define-color base0A #e5c463;
@define-color base0B #9ecd6f;
@define-color base0C #ef9062;
@define-color base0D #7accd7;
@define-color base0E #ab9df2;
@define-color base0F #d70000;
* { * {
min-height: 0; min-height: 0;
border: none; border: none;

View file

@ -1,4 +1,4 @@
{ { flake, ...}: with flake.self.theme.with0x; {
env = { env = {
TERM = "xterm-256color"; TERM = "xterm-256color";
}; };
@ -164,8 +164,8 @@
# Default colors # Default colors
primary = { primary = {
background = "0x1a181a"; background = base00;
foreground = "0xe3e1e4"; foreground = base05;
}; };
# Cursor colors # Cursor colors
@ -184,8 +184,8 @@
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
matches = { matches = {
foreground = "0xe5c463"; foreground = base0A;
background = "0x1a181a"; background = base00;
}; };
focused_match = { focused_match = {
foreground = "CellBackground"; foreground = "CellBackground";
@ -203,58 +203,58 @@
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
selection = { selection = {
text = "0x1a181a"; text = base00;
background = "0xf85e84"; background = base08;
}; };
# Normal colors # Normal colors
normal = { normal = {
black = "0x1a181a"; black = base00;
red = "0xf85e84"; red = base08;
green = "0x9ecd6f"; green = base09;
yellow = "0xe5c463"; yellow = base0A;
blue = "0x7accd7"; blue = base0D;
magenta = "0xab9df2"; magenta = base0E;
cyan = "0xef9062"; cyan = base0C;
white = "0xe3e1e4"; white = base05;
}; };
# Bright colors # Bright colors
bright = { bright = {
black = "0x949494"; black = base00;
red = "0xf85e84"; red = base08;
green = "0x9ecd6f"; green = base09;
yellow = "0xe5c463"; yellow = base0A;
blue = "0x7accd7"; blue = base0D;
magenta = "0xab9df2"; magenta = base0E;
cyan = "0xef9062"; cyan = base0C;
white = "0xff5f5f"; white = base07;
}; };
indexed_colors = [ indexed_colors = [
{ {
index = 16; index = 16;
color = "0xdf5923"; color = base09;
} }
{ {
index = 17; index = 17;
color = "0xd70000"; color = base0F;
} }
{ {
index = 18; index = 18;
color = "0x2d2a2e"; color = base01;
} }
{ {
index = 19; index = 19;
color = "0x303030"; color = base02;
} }
{ {
index = 20; index = 20;
color = "0xd3d1d4"; color = base04;
} }
{ {
index = 21; index = 21;
color = "0x303030"; color = base02;
} }
]; ];
}; };

View file

@ -1,4 +1,4 @@
{ args@{
lib, lib,
config, config,
pkgs, pkgs,
@ -111,7 +111,7 @@ in {
home-manager.users."${psCfg.user.name}" = { home-manager.users."${psCfg.user.name}" = {
home.file."xinitrc".source = ./.xinitrc; home.file."xinitrc".source = ./.xinitrc;
xdg.configFile."alacritty/alacritty.toml".source = tomlFormat.generate "alacritty.toml" (import ./alacritty.nix); xdg.configFile."alacritty/alacritty.toml".source = tomlFormat.generate "alacritty.toml" ((import ./alacritty.nix) args);
xdg.configFile."xmodmap".source = ./.config/xmodmap; xdg.configFile."xmodmap".source = ./.config/xmodmap;
xdg.configFile."user-dirs.dirs".source = ./.config/user-dirs.dirs; xdg.configFile."user-dirs.dirs".source = ./.config/user-dirs.dirs;
xdg.configFile."user-dirs.locale".source = ./.config/user-dirs.locale; xdg.configFile."user-dirs.locale".source = ./.config/user-dirs.locale;
@ -119,6 +119,12 @@ in {
xdg.configFile."libinput-gestures.conf".source = ./.config/libinput-gestures.conf; xdg.configFile."libinput-gestures.conf".source = ./.config/libinput-gestures.conf;
xdg.configFile."wallpaper.jpg".source = ./assets/wallpaper.jpg; xdg.configFile."wallpaper.jpg".source = ./assets/wallpaper.jpg;
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = { gtk = {
enable = true; enable = true;
font.name = "Lato"; font.name = "Lato";
@ -136,7 +142,7 @@ in {
gtk-xft-hinting = "1"; gtk-xft-hinting = "1";
gtk-xft-hintstyle = "hintfull"; gtk-xft-hintstyle = "hintfull";
gtk-xft-rgba = "rgb"; gtk-xft-rgba = "rgb";
gtk-application-prefer-dark-theme = "true"; gtk-application-prefer-dark-theme = "1";
}; };
}; };

View file

@ -2,6 +2,7 @@
lib, lib,
config, config,
pkgs, pkgs,
flake,
... ...
}: }:
with lib; let with lib; let
@ -10,20 +11,20 @@ in {
home-manager.users."${psCfg.user.name}" = { home-manager.users."${psCfg.user.name}" = {
services.mako = { services.mako = {
enable = true; enable = true;
extraConfig = '' extraConfig = with flake.self.theme.withHashtag; ''
padding=10 padding=10
margin=5,5,0 margin=5,5,0
default-timeout=5000 default-timeout=5000
background-color=#1a181a background-color=${base00}
text-color=#e3e1e4 text-color=${base05}
border-color=#ff5f5f border-color=${base07}
font=Hack 14 font=Hack 14
[urgency=high] [urgency=high]
background-color=#ff5f5f background-color=${base07}
text-color=#1a181a text-color=${base00}
border-color=#1a181a border-color=${base00}
layer=overlay layer=overlay
font=Hack 14 font=Hack 14
''; '';

View file

@ -1,19 +0,0 @@
## Base16 Burn
# Author: Benjamin Bädorf
set $base00 #1a181a
set $base01 #2d2a2e
set $base02 #303030
set $base03 #949494
set $base04 #d3d1d4
set $base05 #e3e1e4
set $base06 #303030
set $base07 #ff5f5f
set $base08 #f85e84
set $base09 #df5923
set $base0A #e5c463
set $base0B #9ecd6f
set $base0C #ef9062
set $base0D #7accd7
set $base0E #ab9df2
set $base0F #d70000

View file

@ -1,14 +1,12 @@
{ {
pkgs, pkgs,
psCfg, config,
... ...
}: }: with pkgs; ''
with pkgs;
''
# Set shut down, restart and locking features # Set shut down, restart and locking features
'' ''
+ ( + (
if psCfg.core.hibernation.enable if config.pub-solar.core.hibernation.enable
then '' then ''
set $mode_system (e)xit, (l)ock, (h)ibernate, (r)eboot, (Shift+s)hutdown set $mode_system (e)xit, (l)ock, (h)ibernate, (r)eboot, (Shift+s)hutdown
'' ''
@ -24,7 +22,7 @@ with pkgs;
bindsym l exec ${swaylock-bg}/bin/swaylock-bg, mode "default" bindsym l exec ${swaylock-bg}/bin/swaylock-bg, mode "default"
'' ''
+ ( + (
if psCfg.core.hibernation.enable if config.pub-solar.core.hibernation.enable
then '' then ''
bindsym h exec ${systemd}/bin/systemctl hibernate, mode "default" bindsym h exec ${systemd}/bin/systemctl hibernate, mode "default"
'' ''

View file

@ -1,3 +1,21 @@
{ flake, ... }: with flake.self.theme.withHashtag; ''
set $base00 ${base00}
set $base01 ${base01}
set $base02 ${base02}
set $base03 ${base03}
set $base04 ${base04}
set $base05 ${base05}
set $base06 ${base06}
set $base07 ${base07}
set $base08 ${base08}
set $base09 ${base09}
set $base0A ${base0A}
set $base0B ${base0B}
set $base0C ${base0C}
set $base0D ${base0D}
set $base0E ${base0E}
set $base0F ${base0F}
# Border BG Text Ind Child Border # Border BG Text Ind Child Border
client.focused $base00 $base01 $base07 $base0D $base07 client.focused $base00 $base01 $base07 $base0D $base07
client.focused_inactive $base00 $base01 $base07 $base03 $base00 client.focused_inactive $base00 $base01 $base07 $base03 $base00
@ -14,3 +32,4 @@ exec_always import-gtk-settings \
# Workaround to fix cursor scaling, see https://github.com/swaywm/sway/issues/4112 # Workaround to fix cursor scaling, see https://github.com/swaywm/sway/issues/4112
seat seat0 xcursor_theme Adwaita seat seat0 xcursor_theme Adwaita
''

View file

@ -1,41 +1,42 @@
{ args@{
config, config,
pkgs, pkgs,
... ...
}: '' }: let
# Default config for sway applications = builtins.readFile ./config.d/applications.conf;
# custom-keybindings = builtins.readFile ./config.d/custom-keybindings.conf;
# Copy this to ~/.config/sway/config and edit it to your liking. gaps = builtins.readFile ./config.d/gaps.conf;
# mode-system = import ./config.d/mode_system.conf.nix args;
# Read `man 5 sway` for a complete reference. systemd = builtins.readFile ./config.d/systemd.conf;
in ''
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables ### Variables
# #
# Logo key. Use Mod1 for Alt. # Logo key. Use Mod1 for Alt.
set $mod Mod4 set $mod Mod4
# Home row direction keys, like vim # Home row direction keys, like vim
set $left j set $left j
set $down k set $down k
set $up i set $up i
set $right l set $right l
# Your preferred terminal emulator # Your preferred terminal emulator
set $term ${pkgs.alacritty}/bin/alacritty set $term ${pkgs.alacritty}/bin/alacritty
# Your preferred application launcher # Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened # Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on. # on the original workspace that the command was run on.
#set $menu dmenu_path | dmenu | xargs swaymsg exec bemenu-run --no-overlap #set $menu dmenu_path | dmenu | xargs swaymsg exec bemenu-run --no-overlap
default_border pixel 1 default_border pixel 1
### Output configuration ### Key bindings
# #
# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/) # Basics:
output * bg ~/.config/wallpaper.jpg fill #
### Key bindings
#
# Basics:
#
# Start a terminal # Start a terminal
bindsym $mod+Return exec $term bindsym $mod+Return exec $term
@ -55,9 +56,9 @@
# Reload the configuration file # Reload the configuration file
bindsym $mod+F5 reload bindsym $mod+F5 reload
# #
# Moving around: # Moving around:
# #
# Move your focus around # Move your focus around
bindsym $mod+$left focus left bindsym $mod+$left focus left
bindsym $mod+$down focus down bindsym $mod+$down focus down
@ -79,9 +80,9 @@
bindsym $mod+Shift+Down move down bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right bindsym $mod+Shift+Right move right
# #
# Workspaces: # Workspaces:
# #
# Workspace names # Workspace names
@ -140,9 +141,9 @@
bindsym $mod+b workspace back_and_forth bindsym $mod+b workspace back_and_forth
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
# #
# Layout stuff: # Layout stuff:
# #
# Configure border style <normal|1pixel|pixel xx|none|pixel> # Configure border style <normal|1pixel|pixel xx|none|pixel>
default_border pixel 1 default_border pixel 1
default_floating_border normal default_floating_border normal
@ -177,9 +178,9 @@
# Move focus to the parent container # Move focus to the parent container
bindsym $mod+a focus parent bindsym $mod+a focus parent
bindsym $mod+d focus child bindsym $mod+d focus child
# #
# Scratchpad: # Scratchpad:
# #
# Sway has a "scratchpad", which is a bag of holding for windows. # Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later. # You can send windows there and get them back later.
@ -189,10 +190,10 @@
# Show the next scratchpad window or hide the focused scratchpad window. # Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them. # If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show bindsym $mod+minus scratchpad show
# #
# Resizing containers: # Resizing containers:
# #
mode "resize" { mode "resize" {
# left will shrink the containers width # left will shrink the containers width
# right will grow the containers width # right will grow the containers width
# up will shrink the containers height # up will shrink the containers height
@ -211,7 +212,14 @@
# Return to default mode # Return to default mode
bindsym Return mode "default" bindsym Return mode "default"
bindsym Escape mode "default" bindsym Escape mode "default"
} }
bindsym $mod+r mode "resize" bindsym $mod+r mode "resize"
include ~/.config/sway/config.d/*'' ${applications}
${gaps}
${custom-keybindings}
${mode-system}
${systemd}
include ~/.config/sway/config.d/*
''

View file

@ -1,4 +1,4 @@
{ args@{
lib, lib,
config, config,
pkgs, pkgs,
@ -77,14 +77,7 @@ in {
systemd.user.services.xsettingsd = import ./xsettingsd.service.nix {inherit pkgs psCfg;}; systemd.user.services.xsettingsd = import ./xsettingsd.service.nix {inherit pkgs psCfg;};
systemd.user.targets.sway-session = import ./sway-session.target.nix {inherit pkgs psCfg;}; systemd.user.targets.sway-session = import ./sway-session.target.nix {inherit pkgs psCfg;};
xdg.configFile."sway/config".text = import ./config/config.nix {inherit config pkgs;}; xdg.configFile."sway/config".text = import ./config/config.nix args;
xdg.configFile."sway/config.d/colorscheme.conf".source = ./config/config.d/colorscheme.conf;
xdg.configFile."sway/config.d/theme.conf".source = ./config/config.d/theme.conf;
xdg.configFile."sway/config.d/gaps.conf".source = ./config/config.d/gaps.conf;
xdg.configFile."sway/config.d/custom-keybindings.conf".source = ./config/config.d/custom-keybindings.conf;
xdg.configFile."sway/config.d/mode_system.conf".text = import ./config/config.d/mode_system.conf.nix {inherit pkgs psCfg;};
xdg.configFile."sway/config.d/applications.conf".source = ./config/config.d/applications.conf;
xdg.configFile."sway/config.d/systemd.conf".source = ./config/config.d/systemd.conf;
services.swayidle = with pkgs; { services.swayidle = with pkgs; {
enable = true; enable = true;

View file

@ -2,13 +2,14 @@
lib, lib,
config, config,
pkgs, pkgs,
flake,
... ...
}: }:
with lib; let with lib; let
psCfg = config.pub-solar; psCfg = config.pub-solar;
in { in {
home-manager.users."${psCfg.user.name}" = { home-manager.users."${psCfg.user.name}" = {
programs.waybar = { programs.waybar = with flake.self.theme.withHashtag; {
enable = true; enable = true;
settings.main = { settings.main = {
layer = "top"; layer = "top";
@ -88,7 +89,25 @@ in {
}; };
}; };
}; };
style = builtins.readFile ./.config/waybar/style.css; style = ''
@define-color base00 ${base00};
@define-color base01 ${base01};
@define-color base02 ${base02};
@define-color base03 ${base03};
@define-color base04 ${base04};
@define-color base05 ${base05};
@define-color base06 ${base06};
@define-color base07 ${base07};
@define-color base08 ${base08};
@define-color base09 ${base09};
@define-color base0A ${base0A};
@define-color base0B ${base0B};
@define-color base0C ${base0C};
@define-color base0D ${base0D};
@define-color base0E ${base0E};
@define-color base0F ${base0F};
''+ builtins.readFile ./.config/waybar/style.css;
systemd.enable = true; systemd.enable = true;
systemd.target = "sway-session.target"; systemd.target = "sway-session.target";
}; };

View file

@ -2,6 +2,7 @@
lib, lib,
config, config,
pkgs, pkgs,
flake,
... ...
}: }:
with lib; let with lib; let
@ -23,8 +24,8 @@ in {
users.users."${psCfg.user.name}".packages = with pkgs; users.users."${psCfg.user.name}".packages = with pkgs;
[ [
tealdeer
asciinema asciinema
bat
blesh blesh
eza eza
fd fd
@ -73,7 +74,7 @@ in {
# starship.toml has sane defaults that can be changed there # starship.toml has sane defaults that can be changed there
programs.starship = { programs.starship = {
enable = true; enable = true;
settings = import ./starship.toml.nix; settings = import ./starship.toml.nix flake.self.theme.withHashtag;
}; };
programs.bash = import ./bash { programs.bash = import ./bash {

View file

@ -1,20 +1,20 @@
{ theme: with theme; {
format = "$username$hostname$directory($git_branch$git_commit$git_state$git_status)($c$deno$golang$haskell$nodejs$php$python$ruby$rust$terraform[](fg:#F85E84 bg:#000000))($docker_context[](fg:#06969A))($container)$fill(\${custom.triton})$nix_shell$status[ |](fg:#F85E84)$line_break$character"; format = "$username$hostname$directory($git_branch$git_commit$git_state$git_status)($c$deno$golang$haskell$nodejs$php$python$ruby$rust$terraform[](fg:#F85E84 bg:${base00}))($docker_context[](fg:#06969A))($container)$fill(\${custom.triton})$nix_shell$status[ |](fg:#F85E84)$line_break$character";
# Disable the blank line at the start of the prompt # Disable the blank line at the start of the prompt
add_newline = false; add_newline = false;
# You can also replace your username with a neat symbol like  to save some space # You can also replace your username with a neat symbol like  to save some space
username = { username = {
style_user = "bg:#000000 fg:#F85E84"; style_user = "bg:${base00} fg:#F85E84";
style_root = "bg:#F85E84 fg:#000000"; style_root = "bg:#F85E84 fg:${base00}";
format = ''[$user ]($style)''; format = ''[$user ]($style)'';
}; };
hostname = { hostname = {
ssh_symbol = ""; ssh_symbol = "";
trim_at = ""; trim_at = "";
style = "bg:#000000 fg:#F85E84"; style = "bg:${base00} fg:#F85E84";
}; };
character = { character = {

27
theme.nix Normal file
View file

@ -0,0 +1,27 @@
{
inputs,
...
}: {
flake = {
theme = inputs.themes.custom {
"name" = "burn";
"author" = "b12f";
"base00" = "#1a181a";
"base01" = "#2d2a2e";
"base02" = "#303030";
"base03" = "#949494";
"base04" = "#d3d1d4";
"base05" = "#e3e1e4";
"base06" = "#303030";
"base07" = "#ff5f5f";
"base08" = "#f85e84";
"base09" = "#df5923";
"base0A" = "#e5c463";
"base0B" = "#9ecd6f";
"base0C" = "#ef9062";
"base0D" = "#7accd7";
"base0E" = "#ab9df2";
"base0F" = "#d70000";
};
};
}