From 3a842d0beff32a5a647c6b6a4364f83846df81ac Mon Sep 17 00:00:00 2001 From: Minijackson Date: Wed, 23 Jun 2021 10:42:17 +0200 Subject: graphical: set icon and gtk theme --- lib/override-arc-theme.nix | 110 +++++++++++++++++++++++++++++++++++++++++ usecases/desktop/graphical.nix | 22 ++++++++- 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 lib/override-arc-theme.nix diff --git a/lib/override-arc-theme.nix b/lib/override-arc-theme.nix new file mode 100644 index 0000000..614cffd --- /dev/null +++ b/lib/override-arc-theme.nix @@ -0,0 +1,110 @@ +{ lib, themeConfig, ... }: + +let + # Thank you: + # https://github.com/vedard/Arc-Theme-Generator/blob/master/arc-theme-generator.py + colorMapping = with themeConfig.colors; + with import ./theme.nix { inherit lib; }; + let + hex2RgbaPrefix = color: + let rgb = hex2RGB color; + in "rgba(${toString rgb.red}, ${toString rgb.green}, ${toString rgb.blue}"; + in { + "#5294e2" = dominant; # Dominant color + # Same but allows opacity + "rgba(82, 148, 226" = hex2RgbaPrefix dominant; + "#6ba4e7" = dominant; # Dominant color but in icons + + # TODO: this should be slightly lighter + "#4dadd4" = dominant; # Lighter Dominant color + # Same but allows opacity + "rgba(77, 173, 212" = hex2RgbaPrefix dominant; + + #"#252a35" = "#121212"; # Gnome Panel Background + #"#262932" = "#101010"; # Dark WM bordard + "#2f343f" = background0; # Dark Header BG + # Same but allows opacity + "rgba(47, 52, 63" = hex2RgbaPrefix background0; # Dark Header BG + #"#e7e8eb" = "#e8e8e8"; # Light Header BG + "#383c4a" = background; # Dark Background + # Same but allows opacity + "rgba(56, 60, 74" = hex2RgbaPrefix background; + "#d3dae3" = foreground; # Dark Foreground + # Same but allows opacity + "rgba(211, 218, 227" = hex2RgbaPrefix foreground; + "#f5f6f7" = lightBackground; # Light Background + "#3b3e45" = foreground; # Light Foreground + + "#404552" = softBackground; # Dark Base Background (ListBox) + # Same but allows opacity + "rgba(64, 69, 82" = hex2RgbaPrefix softBackground; + "#3c4150" = softBackground; # Sidebars + "#353945" = softBackground; # Dark SideBar Background (Nautilus) + "rgba(53, 57, 69, 0.95)" = background2; # Nautilus SideBar + "#bac3cf" = foreground; # Dark SideBar Foreground (Nautilus) + + "rgba(95, 105, 127, 0.37)" = background2; # Buttons? + "rgba(134, 144, 165, 0.37)" = background3; # Buttons? hover + "#484c59" = background2; # Popover menu button hover + + # Lots of text + "rgba(207, 218, 231" = hex2RgbaPrefix foreground; + # Some more labels (list sorting) + "#b6bcc6" = dimForeground; + # Action icons + "#9699a2" = dimForeground; + # Links + "#a9caf1" = brightBlue; + + # List element Hover / Selected + "#4a85cb" = dimDominant; + + #"#323644" = "#202020"; # Dark Gnome Shell Modal background + + # Light Gnome Shell Foreground + "#5c616c" = foreground; + "rgba(92, 97, 108" = hex2RgbaPrefix foreground; + + #"#2d323d" = "#171717"; # Dark Checkbox Background + #"#5b627b" = "#505050"; # Dark Switch Background + #"#353a47" = "#232323"; # Dark Switch Circle + #"#cfd6e6" = "#dbdbdb"; # Light Switch Background + "#444a58" = background2; # Gtk2 Dark Button Background + "#505666" = background3; # Gtk2 Dark Button-Hover Background + "#3e4351" = background; # Gtk2 Dark Button-insensitive Background + "#2e3340" = background0; # Gtk2 Dark Button-active Background + # More insensitive buttons :'-( + "rgba(68, 74, 88" = hex2RgbaPrefix background0; + + "#4b5162" = background; # Gtk2 Dark Tooltips Background + "#3e4350" = background0; # Gtk2 Dark Insensitive Background + #"#262934" = "#0E0E0E"; # Gtk2 Dark checkbox-unchecked border + #"#2b303b" = "#151515"; # Gtk2 Dark checkbox-unchecked Background + #"#3e434f" = "#282828"; # Gtk2 Dark scrollbar Background + #"#2d303b" = "#151515"; # Gtk2 Dark trough Background + #"#767b87" = "#606060"; # Gtk2 Dark slider Background + #"#303440" = "#191919"; # Gtk2 Dark border insensitive + #"#2b2e39" = "#131313"; # Gtk2 Dark border + "#313541" = background0; # Gtk2 Dark inline toolbar + }; + + #substituteArguments = with lib; concatStrings (foldAttrs (previousColor: newColor: "--replace ${previousColor} ${newColor} ") [] [colorMapping]); + substituteArguments = with lib; + concatStrings + (mapAttrsToList + (previousColor: newColor: "--replace '${previousColor}' '${newColor}' --replace '${toUpper previousColor}' '${newColor}' ") + colorMapping); +in + package: + +package.overrideAttrs (oldAttrs: { + name = if (oldAttrs ? name) + then "gruvbox-${oldAttrs.name}" + else "gruvbox-${oldAttrs.pname}-${oldAttrs.version}"; + postPatch = '' + # For every plaintext file + for file in $(find . -type f -exec grep -Iq . {} \; -and -print); do + substituteInPlace "$file" ${substituteArguments} 2>/dev/null + done + ''; +}) diff --git a/usecases/desktop/graphical.nix b/usecases/desktop/graphical.nix index 258f603..7b898ff 100644 --- a/usecases/desktop/graphical.nix +++ b/usecases/desktop/graphical.nix @@ -1,6 +1,6 @@ inputs: -{ pkgs, ... }: +{ config, lib, pkgs, ... }: { imports = [ @@ -64,6 +64,26 @@ inputs: networking.firewall.allowedUDPPortRanges = [{ from = 1714; to = 1764; }]; home-manager.users.minijackson = { + gtk = + let + override-arc-theme = import ../../lib/override-arc-theme.nix { + inherit lib; + themeConfig = config.theme; + }; + in + { + enable = true; + iconTheme = { + # TODO: properly modify the colors + package = pkgs.arc-icon-theme; + name = "Arc"; + }; + theme = { + package = override-arc-theme pkgs.arc-theme; + name = "Arc-Dark"; + }; + }; + services.kdeconnect = { enable = true; indicator = true; -- cgit v1.2.3