From 5a1f391af27bca994d9be58afa337320ce6b5a8e Mon Sep 17 00:00:00 2001 From: pagedmov Date: Sun, 20 Oct 2024 02:18:28 -0400 Subject: [PATCH] a lot of work on visuals, overhauled waybar config --- flake.nix | 23 +- modules/home/environment/gtk.nix | 9 + modules/home/environment/hyprland/config.nix | 3 + modules/home/environment/spicetify.nix | 19 ++ modules/home/environment/waybar/settings.nix | 2 +- modules/home/environment/waybar/style.nix | 276 ++++++++++--------- modules/home/home-manager.nix | 4 +- modules/home/programs/kitty.nix | 38 ++- modules/home/scripts/commands/splash.nix | 3 +- modules/sys/environment/stylix.nix | 27 +- modules/sys/software/nixvim/options.nix | 23 +- 11 files changed, 267 insertions(+), 160 deletions(-) diff --git a/flake.nix b/flake.nix index 507e006..ccce216 100644 --- a/flake.nix +++ b/flake.nix @@ -41,12 +41,33 @@ } @ inputs: let system = "x86_64-linux"; username = "pagedmov"; + wallpaper = "${self}/media/wallpapers/cabin-2.jpg"; + + # Base 16 scheme for system colors + scheme = { + "base00" = "151515"; + "base01" = "202020"; + "base02" = "303030"; + "base03" = "505050"; + "base04" = "b0b0b0"; + "base05" = "d0d0d0"; + "base06" = "e0e0e0"; + "base07" = "f5f5f5"; + "base08" = "fb9fb1"; + "base09" = "eda987"; + "base0A" = "ddb26f"; + "base0B" = "acc267"; + "base0C" = "12cfc0"; + "base0D" = "6fc2ef"; + "base0E" = "e1a3ee"; + "base0F" = "deaf8f"; + }; in { nixosConfigurations = { oganesson = nixpkgs.lib.nixosSystem { specialArgs = { host = "oganesson"; - inherit self inputs username; + inherit self inputs scheme wallpaper username; }; inherit system; modules = [ diff --git a/modules/home/environment/gtk.nix b/modules/home/environment/gtk.nix index 5501427..cd4c7ca 100644 --- a/modules/home/environment/gtk.nix +++ b/modules/home/environment/gtk.nix @@ -14,5 +14,14 @@ gtk = { enable = true; + cursorTheme = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 16; + }; + #font = { + # name = "Iosevka Nerd Font"; + # package = pkgs.nerdfonts.override {fonts = ["Iosevka"];}; + #}; }; } diff --git a/modules/home/environment/hyprland/config.nix b/modules/home/environment/hyprland/config.nix index e9a3522..5e59596 100644 --- a/modules/home/environment/hyprland/config.nix +++ b/modules/home/environment/hyprland/config.nix @@ -1,6 +1,7 @@ { username, host, + scheme, ... }: { wayland.windowManager.hyprland = { @@ -57,6 +58,8 @@ gaps_in = 4; gaps_out = 8; border_size = 2; + #"col.inactive_border" = "0xff${scheme.base01}"; + #"col.active_border" = "0xff${scheme.base0F}"; border_part_of_window = false; no_border_on_floating = false; }; diff --git a/modules/home/environment/spicetify.nix b/modules/home/environment/spicetify.nix index 55ca7c8..adf319d 100644 --- a/modules/home/environment/spicetify.nix +++ b/modules/home/environment/spicetify.nix @@ -2,6 +2,7 @@ pkgs, lib, inputs, + scheme, ... }: let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; @@ -20,5 +21,23 @@ in { hidePodcasts shuffle # shuffle+ (special characters are sanitized out of extension names) ]; + #colorScheme = "custom"; + + #customColorScheme = { + # text = scheme.base06; + # subtext = scheme.base04; + # sidebar-text = scheme.base04; + # main = scheme.base00; + # sidebar = scheme.base01; + # shadow = scheme.base01; + # selected-row = scheme.base08; + # button = scheme.base0D; + # button-active = scheme.base0C; + # button-disabled = scheme.base02; + # tab-active = scheme.base0E; + # notification = scheme.base0A; + # notification-error = scheme.base09; + # misc = scheme.base0F; + #}; }; } diff --git a/modules/home/environment/waybar/settings.nix b/modules/home/environment/waybar/settings.nix index 5d559a4..adbb226 100644 --- a/modules/home/environment/waybar/settings.nix +++ b/modules/home/environment/waybar/settings.nix @@ -51,7 +51,7 @@ }; clock = { - format = "{:%I\n%M\n%S}"; + format = "{:%I\n%M}"; interval = 1; rotate = 0; on-click = "/usr/local/bin/ags -t ActivityCenter"; diff --git a/modules/home/environment/waybar/style.nix b/modules/home/environment/waybar/style.nix index e41deaa..1cffef3 100644 --- a/modules/home/environment/waybar/style.nix +++ b/modules/home/environment/waybar/style.nix @@ -1,125 +1,98 @@ -{...}: let - custom = { - font_size = "15px"; # Base font size - font_weight = "bold"; # Base font weight - notification_font_size = "18px"; # Font size for notifications - text_color = "#cccedb"; # Default text color - background_color = "rgba(21, 21, 21, 0.83)"; - border_color = "rgba(255, 255, 255, 0.3)"; - notification_margin_left = "-2px"; - notification_margin_top = "-4px"; - notification_padding_bottom = "12px"; - tooltip_bg = "#1D2021"; - tooltip_color = "#FBF1C7"; - tooltip_border = "#101a24"; - }; -in { +{ +scheme, +... +}: + +let + bg = { + darkester = scheme.base00; + darkest = scheme.base01; + darker = scheme.base02; + dark = scheme.base03; + }; + fg = { + lightester = scheme.base07; + lightest = scheme.base06; + lighter = scheme.base05; + light = scheme.base04; + }; + colors = { + color0 = scheme.base08; + color1 = scheme.base09; + color2 = scheme.base0A; + color3 = scheme.base0B; + color4 = scheme.base0C; + color5 = scheme.base0D; + color6 = scheme.base0E; + color7 = scheme.base0F; + }; +in +{ programs.waybar.style = '' * { font-family: "JetBrains Mono Nerd Font"; - font-weight: ${custom.font_weight}; - font-size: ${custom.font_size}; - } - - #custom-notification { - font-family: "JetBrains Mono Nerd Font"; - font-size: ${custom.notification_font_size}; - color: ${custom.text_color}; - margin-left: ${custom.notification_margin_left}; - margin-top: ${custom.notification_margin_top}; - padding-bottom: ${custom.notification_padding_bottom}; - } - - window#waybar { - background: ${custom.background_color}; - border: 3px solid ${custom.border_color}; - border-radius: 6px; - } - - tooltip { - background: ${custom.tooltip_bg}; - color: ${custom.tooltip_color}; - font-size: 13px; - border-radius: 7px; - border: 2px solid ${custom.tooltip_border}; - } - - #workspaces { - font-weight: normal; - background: rgba(23, 23, 23, 0.0); - color: #2F302D; - border-radius: 9px; - padding-left: 0px; - padding-right: 4px; - padding-top: 1px; - } - - #workspaces button { - font-weight: normal; - background: rgba(23, 23, 23, 0.0); - color: #B1B2BD; - border-radius: 9px; - padding-left: 0px; - padding-right: 4px; - margin-right: -4px; - margin-top: -10px; - } - - #workspaces button.active { - color: ${custom.text_color}; - font-weight: normal; - padding-left: 0px; - padding-right: 4px; - transition: all 0.3s ease; - } - - #taskbar button { - box-shadow: none; - font-size: 4px; - padding: 0px; - border-radius: 9px; - margin-top: 3px; - margin-bottom: 3px; - margin-left: 3px; - margin-right: 3px; - color: #A1BDCE; - } - - #taskbar button.active { - background: #C8C8C8; - color: #C8C8C8; - margin-left: 10px; - margin-right: 10px; - border-radius: 3px; - } - - #tray menu * { font-weight: bold; - font-size: 13px; - color: #FBF1C7; - } - - #tray { - padding: 0px; + font-size: 14; } #battery { font-weight: normal; font-size: 22px; color: #a6d189; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } - #clock { - color: ${custom.text_color}; - font-size: 15px; - font-weight: 900; - font-family: "CaskaydiaCove Nerd Font Mono"; - background: rgba(23, 23, 23, 0.0); + #tray menu * { + font-weight: bold; + font-size: 13px; + color: #FBF1C7; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } - #backlight-slider slider, + #taskbar button { + box-shadow: none; + font-size: 4px; + border-radius: 9px; + color: #A1BDCE; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; + } + + tooltip { + background: #${bg.darkester}; + color: #${fg.lighter}; + font-size: 13px; + border-radius: 7px; + border: 2px solid #${bg.dark}; + background: #${bg.darkest}; + } + + window#waybar { + opacity: 0.85; + background: #${bg.darkester}; + border: 2px solid #${bg.dark}; + border-radius: 6px; + } + + #workspaces { + font-weight: normal; + color: transparent; + margin-left: -5px; + margin-top: 0px; + border: 0px; + border-radius: 6px; + } + + + + #backlight-slider slider, #pulseaudio-slider slider { - background: #A1BDCE; + background: #${colors.color3}; background-color: transparent; box-shadow: none; } @@ -128,11 +101,8 @@ in { #pulseaudio-slider trough { min-width: 9px; min-height: 90px; - margin-bottom: -4px; border-radius: 8px; background: #343434; - margin-left: -4px; - margin-right: -4px; } #backlight-slider highlight, @@ -141,59 +111,99 @@ in { background-color: #2096C0; } - #custom-mouse { - font-size: 14px; - margin-bottom: 6px; - background: #161320; + #pulseaudio { + font-weight: normal; + font-size: 18px; + color: #${colors.color3}; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + margin: 4px; + margin-bottom: 0px; + border: 2px solid @unfocused_borders; + border-bottom: 2px solid #151515; + border-radius: 6px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + } + + #network { + font-size: 19px; + color: #${colors.color4}; + background: #${bg.darkest}; + margin: 4px; + margin-top: 0; + border: 2px solid @unfocused_borders; + border-top: 2px solid #151515; + border-radius: 6px; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + } + + #clock { + color: #${colors.color6}; + font-size: 15px; + font-weight: 900; + font-family: "CaskaydiaCove Nerd Font Mono"; + background: #${bg.darkest}; + margin: 4px; + border-radius: 6px; + border: 2px solid @unfocused_borders; + border-radius: 6px; + } + + #custom-notification { + font-family: "JetBrains Mono Nerd Font"; + font-size: 21px; + color: #${colors.color7}; + background: #${bg.darkest}; + margin: 4px; + border: 2px solid @unfocused_borders; + border-radius: 6px; } #custom-power { font-size: 15px; color: #FFFFFF; background: rgba(22, 19, 32, 0.9); - margin: 6px 0px; - padding-left: 4px; - padding-right: 4px; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } #backlight { - color: ${custom.text_color}; + color: #${fg.lighter}; font-weight: normal; font-size: 19px; - margin: 0px; - padding-left: 0px; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } #custom-spacer { opacity: 0.0; - padding-top: 3px; } #tray menu separator { min-height: 10px; } - #pulseaudio { - font-weight: normal; - font-size: 18px; - color: ${custom.text_color}; - } #cpu { font-weight: normal; font-size: 22px; - color: ${custom.text_color}; + color: #${fg.lighter}; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } #memory { font-weight: normal; font-size: 22px; - color: ${custom.text_color}; - } - - #network { - font-size: 19px; - color: ${custom.text_color}; + color: #${fg.lighter}; + background: #${bg.darkest}; + border: 2px solid #${bg.dark}; + border-radius: 6px; } ''; } diff --git a/modules/home/home-manager.nix b/modules/home/home-manager.nix index 0616f36..34e7b16 100644 --- a/modules/home/home-manager.nix +++ b/modules/home/home-manager.nix @@ -4,6 +4,8 @@ self, inputs, username, + wallpaper, + scheme, config, ... }: let @@ -14,7 +16,7 @@ in { useUserPackages = true; useGlobalPkgs = true; backupFileExtension = "backup"; - extraSpecialArgs = {inherit self inputs host username nur;}; + extraSpecialArgs = {inherit self inputs host wallpaper scheme username nur;}; users.${username} = { dconf.settings = { "org/virt-manager/virt-manager/connections" = { diff --git a/modules/home/programs/kitty.nix b/modules/home/programs/kitty.nix index ff41a34..3382abb 100644 --- a/modules/home/programs/kitty.nix +++ b/modules/home/programs/kitty.nix @@ -1,4 +1,4 @@ -{pkgs, ...}: { +{pkgs, scheme, ...}: { programs.kitty = { enable = true; @@ -30,5 +30,41 @@ "ctrl+shift+left" = "no_op"; "ctrl+shift+right" = "no_op"; }; + + extraConfig = '' + background #${scheme.base00} + foreground #${scheme.base05} + selection_background #${scheme.base05} + selection_foreground #${scheme.base00} + url_color #${scheme.base04} + cursor #${scheme.base05} + active_border_color #${scheme.base03} + inactive_border_color #${scheme.base01} + active_tab_background #${scheme.base00} + active_tab_foreground #${scheme.base05} + inactive_tab_background #${scheme.base01} + inactive_tab_foreground #${scheme.base04} + tab_bar_background #${scheme.base01} + + # normal + color0 #${scheme.base01} + color1 #${scheme.base08} + color2 #${scheme.base0B} + color3 #${scheme.base0A} + color4 #${scheme.base0D} + color5 #${scheme.base0E} + color6 #${scheme.base0C} + color7 #${scheme.base05} + + # bright + color8 #${scheme.base03} + color9 #${scheme.base09} + color10 #${scheme.base01} + color11 #${scheme.base02} + color12 #${scheme.base04} + color13 #${scheme.base06} + color14 #${scheme.base0F} + color15 #${scheme.base07} + ''; }; } diff --git a/modules/home/scripts/commands/splash.nix b/modules/home/scripts/commands/splash.nix index fa56640..7640a3b 100644 --- a/modules/home/scripts/commands/splash.nix +++ b/modules/home/scripts/commands/splash.nix @@ -7,6 +7,7 @@ pkgs.writeShellScriptBin "splash" '' echo "NixOS kernel ver. $(uname -a | awk '{print $3}') x86_64 GNU/Linux" date +"%A %B %-d %Y" - echo -e "\033[38;2;0;180;205m$(toilet -t -f Slant.flf glasshouse)\033[0m" + echo + echo " NixOS" | toilet -f 3d | lolcat -S 25 echo '' diff --git a/modules/sys/environment/stylix.nix b/modules/sys/environment/stylix.nix index 170e828..c242b0e 100644 --- a/modules/sys/environment/stylix.nix +++ b/modules/sys/environment/stylix.nix @@ -1,32 +1,14 @@ { pkgs, - self, - lib, + scheme, + wallpaper, ... }: -let - wallpaper = "${self}/media/wallpapers/sine.png"; - - # Generate base16 color scheme from wallpaper - scheme_string_step1 = pkgs.runCommand "scheme_string" { }'' - ${pkgs.flavours}/bin/flavours generate dark ${wallpaper} --stdout | sed 's/"//g' | sed 's/://' | tail -n 16 > $out - ''; - scheme_string = builtins.readFile scheme_string_step1; - scheme_list = lib.filter (x: x != "") (lib.splitString "\n" scheme_string); - scheme_set = lib.lists.foldl' (acc: line: - let - splitLine = lib.splitString " " line; - key = builtins.elemAt splitLine 0; - value = builtins.elemAt splitLine 1; - in - acc // { "${key}" = value; } - ) {} scheme_list; -in { stylix = { enable = true; - base16Scheme = "${pkgs.base16-schemes}/share/themes/chalk.yaml"; + base16Scheme = scheme; image = wallpaper; polarity = "dark"; autoEnable = true; @@ -35,6 +17,9 @@ in console.enable = true; feh.enable = true; grub.enable = true; + gtk.enable = true; + nixos-icons.enable = true; + nixvim.enable = true; }; cursor = { package = pkgs.bibata-cursors; diff --git a/modules/sys/software/nixvim/options.nix b/modules/sys/software/nixvim/options.nix index 9548d20..7da45ce 100644 --- a/modules/sys/software/nixvim/options.nix +++ b/modules/sys/software/nixvim/options.nix @@ -1,7 +1,28 @@ -{ config, ... }: +{ scheme, config, ... }: { programs.nixvim = { + colorschemes.base16 = { + enable = true; + colorscheme = { + base00 = "#${scheme.base00}"; + base01 = "#${scheme.base01}"; + base02 = "#${scheme.base02}"; + base03 = "#${scheme.base03}"; + base04 = "#${scheme.base04}"; + base05 = "#${scheme.base05}"; + base06 = "#${scheme.base06}"; + base07 = "#${scheme.base07}"; + base08 = "#${scheme.base08}"; + base09 = "#${scheme.base09}"; + base0A = "#${scheme.base0A}"; + base0B = "#${scheme.base0B}"; + base0C = "#${scheme.base0C}"; + base0D = "#${scheme.base0D}"; + base0E = "#${scheme.base0E}"; + base0F = "#${scheme.base0F}"; + }; + }; enable = true; diagnostics.signs = false; extraConfigLua = ''