Compare commits
No commits in common. "2ac966be4984552638bf136ec20d758bff63b152" and "75728e1b810516d884a24e8ac5d3629fec968063" have entirely different histories.
2ac966be49
...
75728e1b81
17 changed files with 588 additions and 972 deletions
|
@ -14,6 +14,17 @@
|
|||
dpi-aware = "auto";
|
||||
font = "monospace:size=14";
|
||||
};
|
||||
colors = let
|
||||
inherit (osConfig.theme.scheme) palette;
|
||||
in {
|
||||
background = "${palette.base00}ff";
|
||||
text = "${palette.base05}ff";
|
||||
input = "${palette.base05}ff";
|
||||
selection = "${palette.base02}ff";
|
||||
selection-text = "${palette.base07}ff";
|
||||
selection-match = "${palette.base0D}ff";
|
||||
border = "${palette.base0E}ff";
|
||||
};
|
||||
border.width = 5;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,8 +1,18 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
isDark = osConfig.theme.scheme.variant == "dark";
|
||||
in {
|
||||
home.pointerCursor = {
|
||||
inherit (osConfig.theme.cursorTheme) name package size;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
|
@ -14,6 +24,7 @@
|
|||
|
||||
gtk3.extraConfig = {
|
||||
gtk-decoration-layout = ":menu";
|
||||
gtk-application-prefer-dark-theme = isDark;
|
||||
};
|
||||
|
||||
gtk4.extraConfig = {
|
||||
|
@ -21,5 +32,21 @@
|
|||
};
|
||||
|
||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
|
||||
iconTheme = {
|
||||
inherit (osConfig.theme.gtk.iconTheme) name package;
|
||||
};
|
||||
|
||||
theme = lib.mkIf (!osConfig.services.xserver.desktopManager.gnome.enable) {
|
||||
inherit (osConfig.theme.gtk.theme) name package;
|
||||
};
|
||||
};
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme =
|
||||
if isDark
|
||||
then "prefer-dark"
|
||||
else "default";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,17 +1,68 @@
|
|||
_: {
|
||||
{
|
||||
osConfig,
|
||||
lib,
|
||||
lib',
|
||||
...
|
||||
}: let
|
||||
inherit (osConfig.theme.scheme) palette;
|
||||
inherit (lib) mkIf mkMerge;
|
||||
inherit (lib') rgba;
|
||||
in {
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
font = "Inter 12";
|
||||
selection-notification = true;
|
||||
options = mkMerge [
|
||||
{
|
||||
font = "Inter 12";
|
||||
selection-notification = true;
|
||||
|
||||
selection-clipboard = "clipboard";
|
||||
adjust-open = "best-fit";
|
||||
pages-per-row = "1";
|
||||
scroll-page-aware = "true";
|
||||
scroll-full-overlap = "0.01";
|
||||
scroll-step = "100";
|
||||
zoom-min = "10";
|
||||
};
|
||||
selection-clipboard = "clipboard";
|
||||
adjust-open = "best-fit";
|
||||
pages-per-row = "1";
|
||||
scroll-page-aware = "true";
|
||||
scroll-full-overlap = "0.01";
|
||||
scroll-step = "100";
|
||||
zoom-min = "10";
|
||||
}
|
||||
(mkIf osConfig.theme.enable {
|
||||
default-fg = palette.base05;
|
||||
default-bg = palette.base00;
|
||||
|
||||
completion-bg = palette.base02;
|
||||
completion-fg = palette.base05;
|
||||
completion-highlight-bg = palette.base03;
|
||||
completion-highlight-fg = palette.base05;
|
||||
completion-group-bg = palette.base02;
|
||||
completion-group-fg = palette.base0D;
|
||||
|
||||
statusbar-fg = palette.base05;
|
||||
statusbar-bg = palette.base02;
|
||||
|
||||
notification-bg = palette.base02;
|
||||
notification-fg = palette.base05;
|
||||
notification-error-bg = palette.base02;
|
||||
notification-error-fg = palette.base08;
|
||||
notification-warning-bg = palette.base02;
|
||||
notification-warning-fg = palette.base0A;
|
||||
|
||||
inputbar-fg = palette.base05;
|
||||
inputbar-bg = palette.base02;
|
||||
|
||||
recolor = true;
|
||||
recolor-lightcolor = palette.base00;
|
||||
recolor-darkcolor = palette.base05;
|
||||
|
||||
index-fg = palette.base05;
|
||||
index-bg = palette.base00;
|
||||
index-active-fg = palette.base05;
|
||||
index-active-bg = palette.base02;
|
||||
|
||||
render-loading-bg = palette.base00;
|
||||
render-loading-fg = palette.base05;
|
||||
|
||||
highlight-color = rgba lib palette.base03 ".5";
|
||||
highlight-fg = rgba lib palette.base0E ".5";
|
||||
highlight-active-color = rgba lib palette.base0E ".5";
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
inherit (lib) mkMerge mkIf;
|
||||
in {
|
||||
imports = [./binds.nix];
|
||||
|
||||
xdg.portal = {
|
||||
|
@ -19,78 +22,85 @@
|
|||
};
|
||||
};
|
||||
|
||||
programs.niri = {
|
||||
settings = {
|
||||
input = {
|
||||
power-key-handling.enable = false;
|
||||
keyboard.xkb = {
|
||||
layout = "us";
|
||||
options = "compose:ralt";
|
||||
};
|
||||
};
|
||||
|
||||
prefer-no-csd = true;
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
layout = {
|
||||
focus-ring = {
|
||||
enable = true;
|
||||
};
|
||||
always-center-single-column = true;
|
||||
};
|
||||
|
||||
# https://github.com/sodiboo/system/blob/2978f4d79c51a5bd7e38a9cd75e3ec9046aa7e75/niri.mod.nix#L418-L434
|
||||
outputs = let
|
||||
cfg = config.programs.niri.settings.outputs;
|
||||
in {
|
||||
"HDMI-A-1" = {
|
||||
mode = {
|
||||
width = 1920;
|
||||
height = 1080;
|
||||
refresh = 60.0;
|
||||
programs.niri = mkMerge [
|
||||
{
|
||||
settings = {
|
||||
input = {
|
||||
power-key-handling.enable = false;
|
||||
keyboard.xkb = {
|
||||
layout = "us";
|
||||
options = "compose:ralt";
|
||||
};
|
||||
position.x = -cfg."HDMI-A-1".mode.width;
|
||||
position.y = 0;
|
||||
};
|
||||
"DP-1" = {
|
||||
mode = {
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
refresh = 144.0;
|
||||
|
||||
prefer-no-csd = true;
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
layout = {
|
||||
focus-ring = {
|
||||
enable = true;
|
||||
};
|
||||
position.x = 0;
|
||||
position.y = 0;
|
||||
always-center-single-column = true;
|
||||
};
|
||||
|
||||
# https://github.com/sodiboo/system/blob/2978f4d79c51a5bd7e38a9cd75e3ec9046aa7e75/niri.mod.nix#L418-L434
|
||||
outputs = let
|
||||
cfg = config.programs.niri.settings.outputs;
|
||||
in {
|
||||
"HDMI-A-1" = {
|
||||
mode = {
|
||||
width = 1920;
|
||||
height = 1080;
|
||||
refresh = 60.0;
|
||||
};
|
||||
position.x = -cfg."HDMI-A-1".mode.width;
|
||||
position.y = 0;
|
||||
};
|
||||
"DP-1" = {
|
||||
mode = {
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
refresh = 144.0;
|
||||
};
|
||||
position.x = 0;
|
||||
position.y = 0;
|
||||
};
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
draw-border-with-background = false;
|
||||
geometry-corner-radius = let
|
||||
r = 8.0;
|
||||
in {
|
||||
top-left = r;
|
||||
top-right = r;
|
||||
bottom-left = r;
|
||||
bottom-right = r;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
{app-id = "foot";}
|
||||
];
|
||||
default-column-width = {proportion = 0.5;};
|
||||
}
|
||||
];
|
||||
|
||||
environment = {
|
||||
"NIXOS_OZONE_WL" = "1";
|
||||
"DISPLAY" = ":0";
|
||||
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # https://wiki.archlinux.org/title/Sway#Java_applications
|
||||
};
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
draw-border-with-background = false;
|
||||
geometry-corner-radius = let
|
||||
r = 8.0;
|
||||
in {
|
||||
top-left = r;
|
||||
top-right = r;
|
||||
bottom-left = r;
|
||||
bottom-right = r;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
{app-id = "foot";}
|
||||
];
|
||||
default-column-width = {proportion = 0.5;};
|
||||
}
|
||||
];
|
||||
|
||||
environment = {
|
||||
"NIXOS_OZONE_WL" = "1";
|
||||
"DISPLAY" = ":0";
|
||||
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # https://wiki.archlinux.org/title/Sway#Java_applications
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
(mkIf osConfig.theme.enable (let
|
||||
inherit (osConfig.theme.scheme) palette;
|
||||
in {
|
||||
settings.layout.focus-ring.active.color = palette.base0E;
|
||||
}))
|
||||
];
|
||||
|
||||
# copied from https://github.com/linyinfeng/dotfiles/blob/c00fe3b1562ad947672863a43e455bc2f01a56b6/home-manager/profiles/niri/default.nix#L594-L611
|
||||
systemd.user.services.xwayland-satellite = {
|
||||
|
|
37
home/programs/plasma/default.nix
Normal file
37
home/programs/plasma/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
];
|
||||
rograms.plasma = {
|
||||
enable = true;
|
||||
workspace = {
|
||||
lookAndFeel = "org.kde.breezedark.desktop";
|
||||
inherit (config.theme) wallpaper;
|
||||
};
|
||||
|
||||
input = {
|
||||
touchpads = [
|
||||
{
|
||||
enable = true;
|
||||
naturalScroll = true;
|
||||
vendorId = "093a";
|
||||
productId = "0274";
|
||||
name = "PIXA3854:00 093A:0274 Touchpad";
|
||||
}
|
||||
];
|
||||
keyboard = {
|
||||
options = [
|
||||
"compose:ralt"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
qalculate-qt
|
||||
];
|
||||
}
|
|
@ -1,24 +1,64 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
osConfig,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkMerge mkIf;
|
||||
in {
|
||||
# requires `security.pam.services.swaylock = { };` at the system level or else
|
||||
# unlock will not work.
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
|
||||
settings = {
|
||||
clock = true;
|
||||
timestr = "%H:%M";
|
||||
settings = mkMerge [
|
||||
{
|
||||
clock = true;
|
||||
timestr = "%H:%M";
|
||||
|
||||
indicator = true;
|
||||
indicator-radius = 111;
|
||||
indicator-thickness = 9;
|
||||
indicator = true;
|
||||
indicator-radius = 111;
|
||||
indicator-thickness = 9;
|
||||
|
||||
screenshots = true;
|
||||
effect-blur = "7x5";
|
||||
effect-vignette = "0.75:0.75";
|
||||
effect-pixelate = 5;
|
||||
screenshots = true;
|
||||
effect-blur = "7x5";
|
||||
effect-vignette = "0.75:0.75";
|
||||
effect-pixelate = 5;
|
||||
|
||||
ignore-empty-password = false; # needed for PAM to work with fprintd / password
|
||||
};
|
||||
ignore-empty-password = false; # needed for PAM to work with fprintd / password
|
||||
}
|
||||
(mkIf
|
||||
osConfig.theme.enable
|
||||
(let
|
||||
inherit (osConfig.theme.scheme) palette;
|
||||
in {
|
||||
inside-color = palette.base01;
|
||||
inside-clear-color = palette.base0C;
|
||||
inside-caps-lock-color = palette.base09;
|
||||
inside-ver-color = palette.base0D;
|
||||
inside-wrong-color = palette.base08;
|
||||
key-hl-color = palette.base0B;
|
||||
layout-bg-color = palette.base00;
|
||||
layout-border-color = palette.base05;
|
||||
layout-text-color = palette.base07;
|
||||
line-color = palette.base00;
|
||||
line-clear-color = palette.base0C;
|
||||
line-caps-lock-color = palette.base09;
|
||||
line-ver-color = palette.base0D;
|
||||
line-wrong-color = palette.base08;
|
||||
ring-color = palette.base02;
|
||||
ring-clear-color = palette.base0C;
|
||||
ring-caps-lock-color = palette.base09;
|
||||
ring-ver-color = palette.base0D;
|
||||
ring-wrong-color = palette.base08;
|
||||
separator-color = palette.base02;
|
||||
text-color = palette.base07;
|
||||
text-clear-color = palette.base04;
|
||||
text-caps-lock-color = palette.base04;
|
||||
text-ver-color = palette.base04;
|
||||
text-wrong-color = palette.base04;
|
||||
}))
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,174 +1,152 @@
|
|||
{
|
||||
osConfig,
|
||||
pkgs,
|
||||
lib,
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) getExe mkMerge mkIf;
|
||||
inherit (builtins) readFile;
|
||||
inherit (lib) getExe;
|
||||
in {
|
||||
imports = [./style.nix];
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
style = readFile ./style.css;
|
||||
settings = {
|
||||
mainBar = mkMerge [
|
||||
{
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 30;
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 30;
|
||||
|
||||
margin-top = 6;
|
||||
margin-left = 6;
|
||||
margin-right = 6;
|
||||
margin-bottom = 0;
|
||||
margin-top = 6;
|
||||
margin-left = 6;
|
||||
margin-right = 6;
|
||||
margin-bottom = 0;
|
||||
|
||||
modules-left = ["niri/workspaces" "niri/window"];
|
||||
modules-center = ["group/clock"];
|
||||
modules-right =
|
||||
["tray" "group/status" "group/power"]
|
||||
++ lib.optional config.services.swaync.enable "custom/notification";
|
||||
modules-left = ["niri/workspaces" "niri/window"];
|
||||
modules-center = ["group/clock"];
|
||||
modules-right = ["tray" "group/status" "group/power"];
|
||||
|
||||
battery = {
|
||||
interval = 10;
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}% - {time}";
|
||||
format-full = " {capacity}% - Full";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
max-length = 25;
|
||||
battery = {
|
||||
interval = 10;
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}% - {time}";
|
||||
format-full = " {capacity}% - Full";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
max-length = 25;
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-bluetooth = "{icon} {volume}%";
|
||||
format-muted = " ";
|
||||
format-icons = {
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo" = "";
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo-muted" = "";
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
phone-muted = "";
|
||||
portable = "";
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
scroll-step = 1;
|
||||
on-click = "pavucontrol";
|
||||
ignored-sinks = [
|
||||
"Easy Effects Sink"
|
||||
"niri/window" = {
|
||||
icon = true;
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-bluetooth = "{icon} {volume}%";
|
||||
format-muted = " ";
|
||||
format-icons = {
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo" = "";
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo-muted" = "";
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
phone-muted = "";
|
||||
portable = "";
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
scroll-step = 1;
|
||||
on-click = "pavucontrol";
|
||||
ignored-sinks = [
|
||||
"Easy Effects Sink"
|
||||
];
|
||||
};
|
||||
|
||||
"power-profiles-daemon" = {
|
||||
format-icons = {
|
||||
default = "";
|
||||
performance = "";
|
||||
balanced = "";
|
||||
power-saver = "";
|
||||
};
|
||||
"power-profiles-daemon" = {
|
||||
format-icons = {
|
||||
default = "";
|
||||
performance = "";
|
||||
balanced = "";
|
||||
power-saver = "";
|
||||
};
|
||||
};
|
||||
|
||||
"group/status" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"pulseaudio"
|
||||
"power-profiles-daemon"
|
||||
"network"
|
||||
"battery"
|
||||
];
|
||||
};
|
||||
"group/status" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"pulseaudio"
|
||||
"power-profiles-daemon"
|
||||
"network"
|
||||
"battery"
|
||||
];
|
||||
};
|
||||
|
||||
"group/power" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"custom/power"
|
||||
];
|
||||
};
|
||||
"group/power" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"custom/power"
|
||||
];
|
||||
};
|
||||
|
||||
"group/clock" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"clock#time"
|
||||
"clock#date"
|
||||
];
|
||||
};
|
||||
"group/clock" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"clock#time"
|
||||
"clock#date"
|
||||
];
|
||||
};
|
||||
|
||||
"custom/power" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
on-click = getExe pkgs.wlogout;
|
||||
};
|
||||
"custom/power" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
on-click = getExe pkgs.wlogout;
|
||||
};
|
||||
|
||||
"clock#date" = {
|
||||
format = "{:%D}";
|
||||
tooltip-format = "<tt><big>{calendar}</big></tt>";
|
||||
};
|
||||
"clock#date" = {
|
||||
format = "{:%D}";
|
||||
tooltip-format = "<tt><big>{calendar}</big></tt>";
|
||||
};
|
||||
|
||||
"clock#time" = {
|
||||
format = "{:%H:%M}";
|
||||
tooltip-format = "{tz_list}";
|
||||
timezones = [
|
||||
osConfig.time.timeZone
|
||||
"US/Eastern"
|
||||
];
|
||||
};
|
||||
"clock#time" = {
|
||||
format = "{:%H:%M}";
|
||||
tooltip-format = "{tz_list}";
|
||||
timezones = [
|
||||
osConfig.time.timeZone
|
||||
"US/Eastern"
|
||||
];
|
||||
};
|
||||
|
||||
network = {
|
||||
interface = "wlp1s0";
|
||||
format = "{ifname}";
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "{ipaddr}/{cidr} ";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-wifi = "{essid} ({signalStrength}%)";
|
||||
tooltip-format-ethernet = "{ifname} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
}
|
||||
(mkIf osConfig.programs.niri.enable {
|
||||
"niri/window" = {
|
||||
icon = true;
|
||||
};
|
||||
})
|
||||
(mkIf config.services.swaync.enable {
|
||||
"custom/notification" = {
|
||||
tooltip = false;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
notification = "";
|
||||
none = "";
|
||||
dnd-notification = "";
|
||||
dnd-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "swaync-client -t -sw";
|
||||
};
|
||||
})
|
||||
];
|
||||
network = {
|
||||
interface = "wlp1s0";
|
||||
format = "{ifname}";
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "{ipaddr}/{cidr} ";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-wifi = "{essid} ({signalStrength}%)";
|
||||
tooltip-format-ethernet = "{ifname} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
border-radius: 2em;
|
||||
font-family: "Symbols Nerd Font", Inter, sans-serif;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
background: alpha(
|
||||
@base00,
|
||||
0.9999999
|
||||
); /* niri issue workaround, thanks https://github.com/oatmealine/nix-config/blob/bfdddd2cb36ef659bcddc28e0dbb542b6db8b3bc/modules/desktop/themes/catppuccin/waybar.css#L14 */
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
.modules-right box {
|
||||
background: @base02;
|
||||
padding: 0.15em 0.25em;
|
||||
border-radius: 1em;
|
||||
margin: 0 0.25em;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0;
|
||||
background: @base02;
|
||||
}
|
||||
|
||||
#workspaces button:nth-child(1) {
|
||||
border-top-left-radius: 1em;
|
||||
border-bottom-left-radius: 1em;
|
||||
}
|
||||
#workspaces button:nth-last-child(1) {
|
||||
border-top-right-radius: 1em;
|
||||
border-bottom-right-radius: 1em;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 0.5em;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background: @base0E;
|
||||
color: @base02;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background: @base08;
|
||||
}
|
||||
|
||||
#window {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
#battery,
|
||||
#clock,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#tray,
|
||||
#power-profiles-daemon {
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
padding: 0 1.2em;
|
||||
color: @base08;
|
||||
}
|
||||
|
||||
#custom-notification {
|
||||
padding: 0 1.2em;
|
||||
}
|
106
home/programs/waybar/style.nix
Normal file
106
home/programs/waybar/style.nix
Normal file
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
lib,
|
||||
osConfig,
|
||||
...
|
||||
}: let
|
||||
inherit (osConfig.theme.scheme) palette;
|
||||
inherit (lib) mapAttrsToList concatLines optionalString;
|
||||
|
||||
generateGtkColors = palette: (concatLines
|
||||
(mapAttrsToList
|
||||
(name: color: "@define-color ${name} ${color};")
|
||||
palette));
|
||||
in {
|
||||
programs.waybar.style =
|
||||
optionalString osConfig.theme.enable generateGtkColors palette
|
||||
+ ''
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
border-radius: 2em;
|
||||
font-family: "Symbols Nerd Font", Inter, sans-serif;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
background: alpha(
|
||||
@base00,
|
||||
0.9999999
|
||||
); /* niri issue workaround, thanks https://github.com/oatmealine/nix-config/blob/bfdddd2cb36ef659bcddc28e0dbb542b6db8b3bc/modules/desktop/themes/catppuccin/waybar.css#L14 */
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
.modules-right box {
|
||||
background: @base02;
|
||||
padding: 0.15em 0.25em;
|
||||
border-radius: 1em;
|
||||
margin: 0 0.25em;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0;
|
||||
background: @base02;
|
||||
}
|
||||
|
||||
#workspaces button:nth-child(1) {
|
||||
border-top-left-radius: 1em;
|
||||
border-bottom-left-radius: 1em;
|
||||
}
|
||||
#workspaces button:nth-last-child(1) {
|
||||
border-top-right-radius: 1em;
|
||||
border-bottom-right-radius: 1em;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 0.5em;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background: @base0E;
|
||||
color: @base02;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background: @base08;
|
||||
}
|
||||
|
||||
#window {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
#battery,
|
||||
#clock,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#tray,
|
||||
#power-profiles-daemon {
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
|
||||
#custom-power {
|
||||
padding: 0 1.2em;
|
||||
color: @base08;
|
||||
}
|
||||
'';
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
osConfig,
|
||||
lib,
|
||||
lib',
|
||||
...
|
||||
}: let
|
||||
inherit (lib) optionalString;
|
||||
inherit (builtins) readFile;
|
||||
in {
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
style = readFile ./style.css;
|
||||
settings = {
|
||||
positionX = "right";
|
||||
positionY = "top";
|
||||
layer = "overlay";
|
||||
control-center-layer = "top";
|
||||
layer-shell = true;
|
||||
cssPriority = "application";
|
||||
control-center-margin-top = 0;
|
||||
control-center-margin-bottom = 0;
|
||||
control-center-margin-right = 0;
|
||||
control-center-margin-left = 0;
|
||||
notification-2fa-action = true;
|
||||
notification-inline-replies = false;
|
||||
notification-icon-size = 64;
|
||||
notification-body-image-height = 100;
|
||||
notification-body-image-width = 200;
|
||||
};
|
||||
};
|
||||
# systemd.user.services.swaync.Service.Environment = "WAYLAND_DISPLAY=wayland-1";
|
||||
systemd.user.services.swaync.Unit.ConditionEnvironment = lib.mkForce "";
|
||||
}
|
|
@ -1,450 +0,0 @@
|
|||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
transition:
|
||||
background 200ms,
|
||||
border-radius 200ms; /* exclude color from transition so it looks more natural */
|
||||
}
|
||||
|
||||
trough highlight {
|
||||
background: @base05;
|
||||
}
|
||||
|
||||
scale trough {
|
||||
margin: 0rem 1rem;
|
||||
background-color: @base02;
|
||||
min-height: 8px;
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
slider {
|
||||
background-color: @base0D;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow:
|
||||
0 0 8px 0 rgba(0, 0, 0, 0.8),
|
||||
inset 0 0 0 1px @base02;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @base00;
|
||||
color: @base05;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @base08;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time {
|
||||
color: @base03;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base02;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @base00;
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:hover {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:active {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow:
|
||||
0 0 8px 0 rgba(0, 0, 0, 0.8),
|
||||
inset 0 0 0 1px @base02;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @base00;
|
||||
color: @base05;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title > label {
|
||||
color: @base05;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base04;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @base08;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time {
|
||||
color: @base03;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base00;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base02;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @base00;
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:active {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base04;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: @base0D;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
background: @base02;
|
||||
border: 1px solid @base03;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: @base0C;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: @base0C;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: @base02;
|
||||
border: 1px solid @base03;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: @base0C;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: @base03;
|
||||
border-radius: 8px;
|
||||
border: 1px solid @base03;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-player {
|
||||
background: @base02;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-subtitle {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > button > label {
|
||||
font-size: 3rem;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > :last-child {
|
||||
color: @base08;
|
||||
}
|
||||
|
||||
.power-buttons button:hover,
|
||||
.powermode-buttons button:hover,
|
||||
.screenshot-buttons button:hover {
|
||||
background: @base02;
|
||||
}
|
||||
|
||||
.control-center .widget-label > label {
|
||||
color: @base05;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button label {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-volume label {
|
||||
font-size: 1.5rem;
|
||||
color: @base0C;
|
||||
}
|
||||
|
||||
.widget-volume trough highlight {
|
||||
background: @base0C;
|
||||
}
|
||||
|
||||
.widget-backlight trough highlight {
|
||||
background: @base0A;
|
||||
}
|
||||
|
||||
.widget-backlight label {
|
||||
font-size: 1.5rem;
|
||||
color: @base0A;
|
||||
}
|
||||
|
||||
.widget-backlight .KB {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
padding-right: 0.5rem;
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf;
|
||||
in {
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
|
@ -13,6 +14,33 @@ in {
|
|||
font = "monospace:size=14";
|
||||
shell = "${lib.getExe config.programs.fish.package}";
|
||||
};
|
||||
colors = mkIf osConfig.theme.enable (let
|
||||
inherit (lib) mapAttrs;
|
||||
inherit (lib.strings) removePrefix;
|
||||
# because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
|
||||
palette = mapAttrs (_: color: removePrefix "#" color) osConfig.theme.scheme.palette;
|
||||
in {
|
||||
background = palette.base00;
|
||||
foreground = palette.base05;
|
||||
|
||||
regular0 = palette.base01;
|
||||
regular1 = palette.base08;
|
||||
regular2 = palette.base0B;
|
||||
regular3 = palette.base0A;
|
||||
regular4 = palette.base0D;
|
||||
regular5 = palette.base0E;
|
||||
regular6 = palette.base0C;
|
||||
regular7 = palette.base06;
|
||||
|
||||
bright0 = palette.base02;
|
||||
bright1 = palette.base08;
|
||||
bright2 = palette.base0B;
|
||||
bright3 = palette.base0A;
|
||||
bright4 = palette.base0D;
|
||||
bright5 = palette.base0E;
|
||||
bright6 = palette.base0C;
|
||||
bright7 = palette.base07;
|
||||
});
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
_: {
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
programs.gnome-terminal = {
|
||||
enable = true;
|
||||
showMenubar = true;
|
||||
|
@ -10,6 +14,14 @@ _: {
|
|||
boldIsBright = true;
|
||||
visibleName = "default";
|
||||
font = "Intel One Mono 14";
|
||||
colors = let
|
||||
inherit (inputs.basix.schemeData.base16.${config.theme.scheme}) palette;
|
||||
in {
|
||||
backgroundColor = "#${palette.base00}";
|
||||
foregroundColor = builtins.trace "#${palette.base05}" "#${palette.base05}";
|
||||
|
||||
palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") palette);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
37
home/terminal/emulators/konsole.nix
Normal file
37
home/terminal/emulators/konsole.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.konsole = let
|
||||
inherit (config.theme) scheme;
|
||||
schemeData = inputs.basix.schemeData.base16.${scheme};
|
||||
in {
|
||||
enable = true;
|
||||
defaultProfile = "default";
|
||||
profiles = {
|
||||
default = {
|
||||
font = {
|
||||
name = "monospace";
|
||||
size = 14;
|
||||
};
|
||||
colorScheme = schemeData.name;
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
"MainWindow" = {
|
||||
"MenuBar" = "Disabled";
|
||||
"ToolBarsMovable" = "Disabled";
|
||||
};
|
||||
"KonsoleWindow" = {
|
||||
"ShowMenuBarByDefault" = "false";
|
||||
};
|
||||
};
|
||||
|
||||
customColorSchemes = {
|
||||
"${schemeData.name}" = pkgs.lib.mkKonsoleColorScheme schemeData;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -35,7 +35,6 @@ in {
|
|||
|
||||
"${home}/programs/niri"
|
||||
"${home}/programs/waybar"
|
||||
"${home}/services/swaync"
|
||||
"${home}/programs/fuzzel.nix"
|
||||
"${home}/programs/swaybg.nix"
|
||||
"${home}/programs/swaylock.nix"
|
||||
|
|
|
@ -50,11 +50,6 @@ let
|
|||
''
|
||||
magick ${path} -gaussian-blur 0x12 "$out"
|
||||
'';
|
||||
|
||||
generateGtkColors = lib: palette: (lib.concatLines
|
||||
(lib.mapAttrsToList
|
||||
(name: color: "@define-color ${name} ${color};")
|
||||
palette));
|
||||
in {
|
||||
inherit blurImage generateGtkColors rgba;
|
||||
inherit blurImage rgba;
|
||||
}
|
||||
|
|
|
@ -2,13 +2,11 @@
|
|||
inputs,
|
||||
config,
|
||||
lib,
|
||||
lib',
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkEnableOption mkOption mkIf attrNames;
|
||||
inherit (lib.types) path package enum;
|
||||
inherit (lib') generateGtkColors;
|
||||
cfg = config.theme;
|
||||
in {
|
||||
imports = [./gtk.nix];
|
||||
|
@ -23,6 +21,14 @@ in {
|
|||
default = "catppuccin-macchiato";
|
||||
};
|
||||
|
||||
scheme = mkOption {
|
||||
description = ''
|
||||
Resolved scheme from the tinted-theming library.
|
||||
'';
|
||||
readOnly = true;
|
||||
type = lib.types.attrs;
|
||||
};
|
||||
|
||||
wallpaper = mkOption {
|
||||
description = ''
|
||||
Location of the wallpaper that will be used throughout the system.
|
||||
|
@ -57,154 +63,7 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
config = let
|
||||
config.theme = mkIf cfg.enable {
|
||||
scheme = inputs.basix.schemeData.base16.${config.theme.schemeName};
|
||||
in
|
||||
mkIf cfg.enable
|
||||
{
|
||||
home-manager.users.nezia = {
|
||||
home.pointerCursor = {
|
||||
inherit (config.theme.cursorTheme) name package size;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
iconTheme = {
|
||||
inherit (config.theme.gtk.iconTheme) name package;
|
||||
};
|
||||
|
||||
theme = lib.mkIf (!config.services.xserver.desktopManager.gnome.enable) {
|
||||
inherit (config.theme.gtk.theme) name package;
|
||||
};
|
||||
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = scheme.variant == "dark";
|
||||
};
|
||||
};
|
||||
|
||||
services.swaync.style =
|
||||
generateGtkColors lib scheme.palette;
|
||||
|
||||
programs = {
|
||||
niri = {
|
||||
settings.layout.focus-ring.active.color = scheme.palette.base0E;
|
||||
};
|
||||
|
||||
foot.settings.colors = let
|
||||
inherit (lib.strings) removePrefix;
|
||||
# because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
|
||||
palette = builtins.mapAttrs (_: color: removePrefix "#" color) scheme.palette;
|
||||
in {
|
||||
background = palette.base00;
|
||||
foreground = palette.base05;
|
||||
|
||||
regular0 = palette.base01;
|
||||
regular1 = palette.base08;
|
||||
regular2 = palette.base0B;
|
||||
regular3 = palette.base0A;
|
||||
regular4 = palette.base0D;
|
||||
regular5 = palette.base0E;
|
||||
regular6 = palette.base0C;
|
||||
regular7 = palette.base06;
|
||||
|
||||
bright0 = palette.base02;
|
||||
bright1 = palette.base08;
|
||||
bright2 = palette.base0B;
|
||||
bright3 = palette.base0A;
|
||||
bright4 = palette.base0D;
|
||||
bright5 = palette.base0E;
|
||||
bright6 = palette.base0C;
|
||||
bright7 = palette.base07;
|
||||
};
|
||||
|
||||
waybar.style =
|
||||
generateGtkColors lib scheme.palette;
|
||||
fuzzel.settings.colors = {
|
||||
background = "${scheme.palette.base00}ff";
|
||||
text = "${scheme.palette.base05}ff";
|
||||
input = "${scheme.palette.base05}ff";
|
||||
selection = "${scheme.palette.base02}ff";
|
||||
selection-text = "${scheme.palette.base07}ff";
|
||||
selection-match = "${scheme.palette.base0D}ff";
|
||||
border = "${scheme.palette.base0E}ff";
|
||||
};
|
||||
|
||||
swaylock.settings = {
|
||||
inside-color = scheme.palette.base01;
|
||||
inside-clear-color = scheme.palette.base0C;
|
||||
inside-caps-lock-color = scheme.palette.base09;
|
||||
inside-ver-color = scheme.palette.base0D;
|
||||
inside-wrong-color = scheme.palette.base08;
|
||||
key-hl-color = scheme.palette.base0B;
|
||||
layout-bg-color = scheme.palette.base00;
|
||||
layout-border-color = scheme.palette.base05;
|
||||
layout-text-color = scheme.palette.base07;
|
||||
line-color = scheme.palette.base00;
|
||||
line-clear-color = scheme.palette.base0C;
|
||||
line-caps-lock-color = scheme.palette.base09;
|
||||
line-ver-color = scheme.palette.base0D;
|
||||
line-wrong-color = scheme.palette.base08;
|
||||
ring-color = scheme.palette.base02;
|
||||
ring-clear-color = scheme.palette.base0C;
|
||||
ring-caps-lock-color = scheme.palette.base09;
|
||||
ring-ver-color = scheme.palette.base0D;
|
||||
ring-wrong-color = scheme.palette.base08;
|
||||
separator-color = scheme.palette.base02;
|
||||
text-color = scheme.palette.base07;
|
||||
text-clear-color = scheme.palette.base04;
|
||||
text-caps-lock-color = scheme.palette.base04;
|
||||
text-ver-color = scheme.palette.base04;
|
||||
text-wrong-color = scheme.palette.base04;
|
||||
};
|
||||
|
||||
zathura.options = {
|
||||
default-fg = scheme.palette.base05;
|
||||
default-bg = scheme.palette.base00;
|
||||
|
||||
completion-bg = scheme.palette.base02;
|
||||
completion-fg = scheme.palette.base05;
|
||||
completion-highlight-bg = scheme.palette.base03;
|
||||
completion-highlight-fg = scheme.palette.base05;
|
||||
completion-group-bg = scheme.palette.base02;
|
||||
completion-group-fg = scheme.palette.base0D;
|
||||
|
||||
statusbar-fg = scheme.palette.base05;
|
||||
statusbar-bg = scheme.palette.base02;
|
||||
|
||||
notification-bg = scheme.palette.base02;
|
||||
notification-fg = scheme.palette.base05;
|
||||
notification-error-bg = scheme.palette.base02;
|
||||
notification-error-fg = scheme.palette.base08;
|
||||
notification-warning-bg = scheme.palette.base02;
|
||||
notification-warning-fg = scheme.palette.base0A;
|
||||
|
||||
inputbar-fg = scheme.palette.base05;
|
||||
inputbar-bg = scheme.palette.base02;
|
||||
|
||||
recolor = true;
|
||||
recolor-lightcolor = scheme.palette.base00;
|
||||
recolor-darkcolor = scheme.palette.base05;
|
||||
|
||||
index-fg = scheme.palette.base05;
|
||||
index-bg = scheme.palette.base00;
|
||||
index-active-fg = scheme.palette.base05;
|
||||
index-active-bg = scheme.palette.base02;
|
||||
|
||||
render-loading-bg = scheme.palette.base00;
|
||||
render-loading-fg = scheme.palette.base05;
|
||||
|
||||
highlight-color = lib'.rgba lib scheme.palette.base03 ".5";
|
||||
highlight-fg = lib'.rgba lib scheme.palette.base0E ".5";
|
||||
highlight-active-color = lib'.rgba lib scheme.palette.base0E ".5";
|
||||
};
|
||||
|
||||
gnome-terminal.profile = {
|
||||
"4621184a-b921-42cf-80a0-7784516606f2".colors = {
|
||||
backgroundColor = "#${scheme.palette.base00}";
|
||||
foregroundColor = "#${scheme.palette.base05}" "#${scheme.palette.base05}";
|
||||
palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") scheme.palette);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue