Styles, waybar, timezones

This commit is contained in:
installer 2025-01-24 13:20:01 -08:00
parent d61d707fa2
commit 5c46112d7c
7 changed files with 674 additions and 263 deletions

View File

@ -13,6 +13,7 @@ with lib;
{ {
imports = [ imports = [
./waybar.nix ./waybar.nix
./swaync.nix
]; ];
home-manager.users.${username}.wayland.windowManager.hyprland = { home-manager.users.${username}.wayland.windowManager.hyprland = {
@ -43,7 +44,9 @@ with lib;
exec-once = killall -q waybar;sleep .5 && waybar exec-once = killall -q waybar;sleep .5 && waybar
exec-once = killall -q swaync;sleep .5 && swaync exec-once = killall -q swaync;sleep .5 && swaync
exec-once = nm-applet --indicator exec-once = nm-applet --indicator
exec-once = blueman-applet
exec-once = lxqt-policykit-agent exec-once = lxqt-policykit-agent
exec-once = [workspace special silent] foot
exec-once = sleep 1.5 && swww img /home/${username}/Pictures/Wallpapers/pink-desert.jpeg exec-once = sleep 1.5 && swww img /home/${username}/Pictures/Wallpapers/pink-desert.jpeg
${builtins.toString config.desktop.hostMonitorSettings} ${builtins.toString config.desktop.hostMonitorSettings}
exec-once = ${terminal} exec-once = ${terminal}
@ -101,6 +104,7 @@ with lib;
animation = border, 1, 1, liner animation = border, 1, 1, liner
animation = fade, 1, 10, default animation = fade, 1, 10, default
animation = workspaces, 1, 5, wind animation = workspaces, 1, 5, wind
animation = specialWorkspace, 1, 4, default, slidefadevert 20%
} }
decoration { decoration {
rounding = 10 rounding = 10
@ -120,6 +124,9 @@ with lib;
pseudotile = true pseudotile = true
preserve_split = true preserve_split = true
} }
bind = ${modifier}SHIFT,Q,exit,
bind = ${modifier},ESCAPE,killactive,
bind = ${modifier},GRAVE,toggleSpecialWorkspace
bind = ${modifier},Return,exec,${terminal} bind = ${modifier},Return,exec,${terminal}
bind = ${modifier}SHIFT,Return,exec,rofi-launcher bind = ${modifier}SHIFT,Return,exec,rofi-launcher
bind = ${modifier}SHIFT,W,exec,web-search bind = ${modifier}SHIFT,W,exec,web-search
@ -135,12 +142,10 @@ with lib;
bind = ${modifier}SHIFT,G,exec,godot4 bind = ${modifier}SHIFT,G,exec,godot4
bind = ${modifier},T,exec,thunar bind = ${modifier},T,exec,thunar
bind = ${modifier},M,exec,spotify bind = ${modifier},M,exec,spotify
bind = ${modifier},Q,killactive,
bind = ${modifier},P,pseudo, bind = ${modifier},P,pseudo,
bind = ${modifier}SHIFT,I,togglesplit, bind = ${modifier}SHIFT,I,togglesplit,
bind = ${modifier},F,fullscreen, bind = ${modifier},F,fullscreen,
bind = ${modifier}SHIFT,F,togglefloating, bind = ${modifier}SHIFT,F,togglefloating,
bind = ${modifier}SHIFT,C,exit,
bind = ${modifier}SHIFT,left,movewindow,l bind = ${modifier}SHIFT,left,movewindow,l
bind = ${modifier}SHIFT,right,movewindow,r bind = ${modifier}SHIFT,right,movewindow,r
bind = ${modifier}SHIFT,up,movewindow,u bind = ${modifier}SHIFT,up,movewindow,u

View File

@ -0,0 +1,314 @@
{ config, username, ... }:
{
home-manager.users.${username}.home.file = {
".config/swaync/config.json".text = ''
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"positionX": "right",
"positionY": "top",
"control-center-margin-top": 10,
"control-center-margin-bottom": 10,
"control-center-margin-right": 10,
"control-center-margin-left": 10,
"notification-icon-size": 64,
"notification-body-image-height": 100,
"notification-body-image-width": 200,
"timeout": 10,
"timeout-low": 5,
"timeout-critical": 0,
"fit-to-screen": false,
"control-center-width": 500,
"control-center-height": 1025,
"notification-window-width": 500,
"keyboard-shortcuts": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": false,
"hide-on-action": true,
"script-fail-notify": true,
"widgets": [
"title",
"mpris",
"volume",
"backlight",
"dnd",
"notifications"
],
"widget-config": {
"title": {
"text": "Notification Center",
"clear-all-button": true,
"button-text": "󰆴 Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"label": {
"max-lines": 1,
"text": "Notification Center"
},
"mpris": {
"image-size": 96,
"image-radius": 7
},
"volume": {
"label": "󰕾"
},
"backlight": {
"label": "󰃟"
},
}
}
'';
".config/swaync/style.css".text = ''
* {
font-family: JetBrainsMono Nerd Font Mono;
font-weight: bold;
}
.control-center .notification-row:focus,
.control-center .notification-row:hover {
opacity: 0.9;
background: #${config.lib.stylix.colors.base00}
}
.notification-row {
outline: none;
margin: 10px;
padding: 0;
}
.notification {
background: transparent;
padding: 0;
margin: 0px;
}
.notification-content {
background: #${config.lib.stylix.colors.base00};
padding: 10px;
border-radius: 5px;
border: 2px solid #${config.lib.stylix.colors.base0D};
margin: 0;
}
.notification-default-action {
margin: 0;
padding: 0;
border-radius: 5px;
}
.close-button {
background: #${config.lib.stylix.colors.base08};
color: #${config.lib.stylix.colors.base00};
text-shadow: none;
padding: 0;
border-radius: 5px;
margin-top: 5px;
margin-right: 5px;
}
.close-button:hover {
box-shadow: none;
background: #${config.lib.stylix.colors.base0D};
transition: all .15s ease-in-out;
border: none
}
.notification-action {
border: 2px solid #${config.lib.stylix.colors.base0D};
border-top: none;
border-radius: 5px;
}
.notification-default-action:hover,
.notification-action:hover {
color: #${config.lib.stylix.colors.base0B};
background: #${config.lib.stylix.colors.base0B}
}
.notification-default-action {
border-radius: 5px;
margin: 0px;
}
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px
}
.notification-action:first-child {
border-bottom-left-radius: 10px;
background: #${config.lib.stylix.colors.base00}
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
background: #${config.lib.stylix.colors.base00}
}
.inline-reply {
margin-top: 8px
}
.inline-reply-entry {
background: #${config.lib.stylix.colors.base00};
color: #${config.lib.stylix.colors.base05};
caret-color: #${config.lib.stylix.colors.base05};
border: 1px solid #${config.lib.stylix.colors.base09};
border-radius: 5px
}
.inline-reply-button {
margin-left: 4px;
background: #${config.lib.stylix.colors.base00};
border: 1px solid #${config.lib.stylix.colors.base09};
border-radius: 5px;
color: #${config.lib.stylix.colors.base05}
}
.inline-reply-button:disabled {
background: initial;
color: #${config.lib.stylix.colors.base03};
border: 1px solid transparent
}
.inline-reply-button:hover {
background: #${config.lib.stylix.colors.base00}
}
.body-image {
margin-top: 6px;
background-color: #${config.lib.stylix.colors.base05};
border-radius: 5px
}
.summary {
font-size: 16px;
font-weight: 700;
background: transparent;
color: rgba(158, 206, 106, 1);
text-shadow: none
}
.time {
font-size: 16px;
font-weight: 700;
background: transparent;
color: #${config.lib.stylix.colors.base05};
text-shadow: none;
margin-right: 18px
}
.body {
font-size: 15px;
font-weight: 400;
background: transparent;
color: #${config.lib.stylix.colors.base05};
text-shadow: none
}
.control-center {
background: #${config.lib.stylix.colors.base00};
border: 2px solid #${config.lib.stylix.colors.base0C};
border-radius: 5px;
}
.control-center-list {
background: transparent
}
.control-center-list-placeholder {
opacity: .5
}
.floating-notifications {
background: transparent
}
.blank-window {
background: alpha(black, 0)
}
.widget-title {
color: #${config.lib.stylix.colors.base0B};
background: #${config.lib.stylix.colors.base00};
padding: 5px 10px;
margin: 10px 10px 5px 10px;
font-size: 1.5rem;
border-radius: 5px;
}
.widget-title>button {
font-size: 1rem;
color: #${config.lib.stylix.colors.base05};
text-shadow: none;
background: #${config.lib.stylix.colors.base00};
box-shadow: none;
border-radius: 5px;
}
.widget-title>button:hover {
background: #${config.lib.stylix.colors.base08};
color: #${config.lib.stylix.colors.base00};
}
.widget-dnd {
background: #${config.lib.stylix.colors.base00};
padding: 5px 10px;
margin: 10px 10px 5px 10px;
border-radius: 5px;
font-size: large;
color: #${config.lib.stylix.colors.base0B};
}
.widget-dnd>switch {
border-radius: 5px;
/* border: 1px solid #${config.lib.stylix.colors.base0B}; */
background: #${config.lib.stylix.colors.base0B};
}
.widget-dnd>switch:checked {
background: #${config.lib.stylix.colors.base08};
border: 1px solid #${config.lib.stylix.colors.base08};
}
.widget-dnd>switch slider {
background: #${config.lib.stylix.colors.base00};
border-radius: 5px
}
.widget-dnd>switch:checked slider {
background: #${config.lib.stylix.colors.base00};
border-radius: 5px
}
.widget-label {
margin: 10px 10px 5px 10px;
}
.widget-label>label {
font-size: 1rem;
color: #${config.lib.stylix.colors.base05};
}
.widget-mpris {
color: #${config.lib.stylix.colors.base05};
padding: 5px 10px;
margin: 10px 10px 5px 10px;
border-radius: 5px;
}
.widget-mpris > box > button {
border-radius: 5px;
}
.widget-mpris-player {
padding: 5px 10px;
margin: 10px
}
.widget-mpris-title {
font-weight: 700;
font-size: 1.25rem
}
.widget-mpris-subtitle {
font-size: 1.1rem
}
.widget-menubar>box>.menu-button-bar>button {
border: none;
background: transparent
}
.topbar-buttons>button {
border: none;
background: transparent
}
.widget-volume {
background: #${config.lib.stylix.colors.base01};
padding: 5px;
margin: 10px 10px 5px 10px;
border-radius: 5px;
font-size: x-large;
color: #${config.lib.stylix.colors.base05};
}
.widget-volume>box>button {
background: #${config.lib.stylix.colors.base0B};
border: none
}
.per-app-volume {
background-color: #${config.lib.stylix.colors.base00};
padding: 4px 8px 8px;
margin: 0 8px 8px;
border-radius: 5px;
}
.widget-backlight {
background: #${config.lib.stylix.colors.base01};
padding: 5px;
margin: 10px 10px 5px 10px;
border-radius: 5px;
font-size: x-large;
color: #${config.lib.stylix.colors.base05}
}
'';
};
}

View File

@ -12,266 +12,276 @@ let
in in
with lib; with lib;
{ {
# Configure & Theme Waybar
home-manager.users.${username}.programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-center = [ "hyprland/workspaces" ];
modules-left = [
"custom/startmenu"
"hyprland/window"
"pulseaudio"
"cpu"
"memory"
"idle_inhibitor"
];
modules-right = [
"custom/hyprbindings"
"custom/notification"
"custom/exit"
"battery"
"tray"
"clock"
];
"hyprland/workspaces" = { # Configure & Theme Waybar
format = "{name}"; home-manager.users.${username} = {
format-icons = { home.packages = with pkgs; [
default = " "; (writeShellScriptBin "task-waybar" ''
active = " "; sleep 0.1
urgent = " "; ${pkgs.swaynotificationcenter}/bin/swaync-client -t &
}; '')
on-scroll-up = "hyprctl dispatch workspace e+1"; ];
on-scroll-down = "hyprctl dispatch workspace e-1"; programs.waybar = {
}; enable = true;
"clock" = { package = pkgs.waybar;
format = if clock24h == true then '' {:L%H:%M}'' else '' {:L%I:%M %p}''; settings = [
tooltip = true; {
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>"; layer = "top";
}; position = "top";
"hyprland/window" = { modules-center = [ "hyprland/workspaces" ];
max-length = 22; modules-left = [
separate-outputs = false; "custom/startmenu"
rewrite = { "hyprland/window"
"" = " 🙈 No Windows? "; "pulseaudio"
}; "cpu"
}; "memory"
"memory" = { "idle_inhibitor"
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
]; ];
format-ethernet = " {bandwidthDownOctets}"; modules-right = [
format-wifi = "{icon} {signalStrength}%"; "custom/hyprbindings"
format-disconnected = "󰤮"; "custom/notification"
tooltip = false; "custom/exit"
}; "battery"
"tray" = { "tray"
spacing = 12; "clock"
}; ];
"pulseaudio" = {
format = "{icon} {volume}% {format_source}"; "hyprland/workspaces" = {
format-bluetooth = "{volume}% {icon} {format_source}"; format = "{name}";
format-bluetooth-muted = " {icon} {format_source}"; format-icons = {
format-muted = " {format_source}"; default = " ";
format-source = " {volume}%"; active = " ";
format-source-muted = ""; urgent = " ";
format-icons = { };
headphone = ""; on-scroll-up = "hyprctl dispatch workspace e+1";
hands-free = ""; on-scroll-down = "hyprctl dispatch workspace e-1";
headset = ""; };
phone = ""; "clock" = {
portable = ""; interval = 1;
car = ""; format = if clock24h == true then '' {:L%H:%M}'' else '' {:L%I:%M:%S %p}'';
default = [ tooltip = true;
"" tooltip-format = "<big>{:%A, %d %B %Y }</big>\n<tt><small>{calendar}</small></tt>";
"" };
"" "hyprland/window" = {
max-length = 22;
separate-outputs = false;
rewrite = {
"" = " 🙈 No Windows? ";
};
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
]; ];
format-ethernet = " {bandwidthDownOctets}";
format-wifi = "{icon} {signalStrength}%";
format-disconnected = "󰤮";
tooltip = false;
}; };
on-click = "sleep 0.1 && pavucontrol"; "tray" = {
}; spacing = 12;
"custom/exit" = {
tooltip = false;
format = "";
on-click = "sleep 0.1 && wlogout";
};
"custom/startmenu" = {
tooltip = false;
format = "";
# exec = "rofi -show drun";
on-click = "sleep 0.1 && rofi-launcher";
};
"custom/hyprbindings" = {
tooltip = false;
format = "󱕴";
on-click = "sleep 0.1 && list-hypr-bindings";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
}; };
tooltip = "true"; "pulseaudio" = {
}; format = "{icon} {volume}% {format_source}";
"custom/notification" = { format-bluetooth = "{volume}% {icon} {format_source}";
tooltip = false; format-bluetooth-muted = " {icon} {format_source}";
format = "{icon} {}"; format-muted = " {format_source}";
format-icons = { format-source = " {volume}%";
notification = "<span foreground='red'><sup></sup></span>"; format-source-muted = "";
none = ""; format-icons = {
dnd-notification = "<span foreground='red'><sup></sup></span>"; headphone = "";
dnd-none = ""; hands-free = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>"; headset = "";
inhibited-none = ""; phone = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>"; portable = "";
dnd-inhibited-none = ""; car = "";
default = [
""
""
""
];
};
on-click = "sleep 0.1 && pavucontrol";
}; };
return-type = "json"; "custom/exit" = {
exec-if = "which swaync-client"; tooltip = false;
exec = "swaync-client -swb"; format = "";
on-click = "sleep 0.1 && task-waybar"; on-click = "sleep 0.1 && wlogout";
escape = true; };
}; "custom/startmenu" = {
"battery" = { tooltip = false;
states = { format = "";
warning = 30; # exec = "rofi -show drun";
critical = 15; on-click = "sleep 0.1 && rofi-launcher";
};
"custom/hyprbindings" = {
tooltip = false;
format = "󱕴";
on-click = "sleep 0.1 && list-hypr-bindings";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
tooltip = "true";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && task-waybar";
escape = true;
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
on-click = "";
tooltip = false;
}; };
format = "{icon} {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
on-click = "";
tooltip = false;
};
}
];
style = concatStrings [
''
* {
font-family: JetBrainsMono Nerd Font Mono;
font-size: 16px;
border-radius: 0px;
border: none;
min-height: 0px;
} }
window#waybar { ];
background: rgba(0,0,0,0); style = concatStrings [
} ''
#workspaces { * {
color: #${config.lib.stylix.colors.base00}; font-family: JetBrainsMono Nerd Font Mono;
background: #${config.lib.stylix.colors.base01}; font-size: 16px;
margin: 4px 4px; border-radius: 0px;
padding: 5px 5px; border: none;
border-radius: 16px; min-height: 0px;
} }
#workspaces button { window#waybar {
font-weight: bold; background: transparent;
padding: 0px 5px; }
margin: 0px 3px; #workspaces {
border-radius: 16px; color: #${config.lib.stylix.colors.base00};
color: #${config.lib.stylix.colors.base00}; background: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D}); margin: 4px 4px;
opacity: 0.5; padding: 5px 5px;
transition: ${betterTransition}; border-radius: 16px;
} }
#workspaces button.active { #workspaces button {
font-weight: bold; font-weight: bold;
padding: 0px 5px; padding: 0px 5px;
margin: 0px 3px; margin: 0px 3px;
border-radius: 16px; border-radius: 16px;
color: #${config.lib.stylix.colors.base00}; color: #${config.lib.stylix.colors.base0E};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D}); background: #${config.lib.stylix.colors.base00};
transition: ${betterTransition}; opacity: 0.5;
opacity: 1.0; transition: ${betterTransition};
min-width: 40px; }
} #workspaces button.active {
#workspaces button:hover { font-weight: bold;
font-weight: bold; padding: 0px 5px;
border-radius: 16px; margin: 0px 3px;
color: #${config.lib.stylix.colors.base00}; border-radius: 16px;
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D}); color: #${config.lib.stylix.colors.base0E};
opacity: 0.8; background: #${config.lib.stylix.colors.base00};;
transition: ${betterTransition}; transition: ${betterTransition};
} opacity: 1.0;
tooltip { min-width: 40px;
background: #${config.lib.stylix.colors.base00}; }
border: 1px solid #${config.lib.stylix.colors.base08}; #workspaces button:hover {
border-radius: 12px; font-weight: bold;
} border-radius: 16px;
tooltip label { color: #${config.lib.stylix.colors.base00};
color: #${config.lib.stylix.colors.base08}; background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
} opacity: 0.8;
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor { transition: ${betterTransition};
font-weight: bold; }
margin: 4px 0px; tooltip {
margin-left: 7px; background: #${config.lib.stylix.colors.base00};
padding: 0px 18px; border: 1px solid #${config.lib.stylix.colors.base08};
background: #${config.lib.stylix.colors.base04}; border-radius: 12px;
color: #${config.lib.stylix.colors.base00}; }
border-radius: 24px 10px 24px 10px; tooltip label {
} color: #${config.lib.stylix.colors.base08};
#custom-startmenu { }
color: #${config.lib.stylix.colors.base0B}; #window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
background: #${config.lib.stylix.colors.base02}; font-weight: bold;
font-size: 28px; margin: 4px 0px;
margin: 0px; margin-left: 7px;
padding: 0px 30px 0px 15px; padding: 0px 18px;
border-radius: 0px 0px 40px 0px; color: #${config.lib.stylix.colors.base06};
} background: #${config.lib.stylix.colors.base02};
#custom-hyprbindings, #network, #battery, border-radius: 24px 10px 24px 10px;
#custom-notification, #tray, #custom-exit { }
font-weight: bold; #custom-startmenu {
background: #${config.lib.stylix.colors.base0F}; color: #${config.lib.stylix.colors.base0B};
color: #${config.lib.stylix.colors.base00}; background: #${config.lib.stylix.colors.base02};
margin: 4px 0px; font-size: 28px;
margin-right: 7px; margin: 0px;
border-radius: 10px 24px 10px 24px; padding: 0px 30px 0px 15px;
padding: 0px 18px; border-radius: 0px 0px 40px 0px;
} }
#clock { #custom-hyprbindings, #network, #battery,
font-weight: bold; #custom-notification, #tray, #custom-exit {
color: #0D0E15; font-weight: bold;
background: linear-gradient(90deg, #${config.lib.stylix.colors.base0E}, #${config.lib.stylix.colors.base0C}); color: #${config.lib.stylix.colors.base0D};
margin: 0px; background: #${config.lib.stylix.colors.base02};
padding: 0px 15px 0px 30px; margin: 4px 0px;
border-radius: 0px 0px 0px 40px; margin-right: 7px;
} border-radius: 10px 24px 10px 24px;
'' padding: 0px 18px;
]; }
#clock {
font-weight: bold;
color: #${config.lib.stylix.colors.base0B};
background: #${config.lib.stylix.colors.base02};
margin: 0px;
padding: 0px 15px 0px 30px;
border-radius: 0px 0px 0px 40px;
}
''
];
};
}; };
} }

View File

@ -1,5 +1,6 @@
{ {
lib, lib,
pkgs,
config, config,
username, username,
... ...
@ -27,5 +28,32 @@ in
useDHCP = lib.mkDefault true; useDHCP = lib.mkDefault true;
wireguard.enable = true; wireguard.enable = true;
}; };
# Fix for automatic-timezoned not working currently (Jan 2025)
systemd.services.set-timezone = {
description = "Kludgily set the timezone based on IP, with an API request to some sketchasaurus website.";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.writeShellScript "set-timezone.sh" ''
IP=$(${pkgs.curl}/bin/curl -s https://api.ipify.org)
/run/current-system/sw/bin/logger "Got IP $IP."
${pkgs.curl}/bin/curl "https://api.ipgeolocation.io/timezone?apiKey=2309807339f84c26a2cb8cb44c31e183&ip=$IP" > /tmp/tz
TZ=$(${pkgs.jq}/bin/jq -r .timezone < /tmp/tz)
timedatectl set-timezone $TZ
/run/current-system/sw/bin/logger "Set timezone to $TZ."
''}";
Restart = "no";
StandardOutput = "journal";
StandardError = "journal";
};
};
}; };
} }

View File

@ -20,12 +20,47 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
stylix = { stylix = {
enable = true; enable = true;
image = ./wallpapers/mountainscapedark.jpg;
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
autoEnable = true; autoEnable = true;
image = ./wallpapers/biking-sunset.jpg;
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
opacity.terminal = 0.8;
cursor.package = pkgs.bibata-cursors;
cursor.name = "Bibata-Modern-Ice";
cursor.size = 24;
fonts = {
monospace = {
package = pkgs.nerd-fonts.jetbrains-mono;
name = "JetBrainsMono Nerd Font Mono";
};
sansSerif = {
package = pkgs.montserrat;
name = "Montserrat";
};
serif = {
package = pkgs.montserrat;
name = "Montserrat";
};
sizes = {
applications = 12;
terminal = 15;
desktop = 11;
popups = 12;
};
};
};
fonts = {
packages = with pkgs; [
noto-fonts-emoji
noto-fonts-cjk-sans
font-awesome
material-icons
];
}; };
home-manager.users.${username}.stylix = { home-manager.users.${username}.stylix = {
targets.kitty.enable = true; targets = {
kitty.enable = true;
foot.enable = true;
};
autoEnable = true; autoEnable = true;
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -47,11 +47,10 @@ in
hardware = { hardware = {
bluetooth = { bluetooth = {
enable = true; enable = true;
powerOnBoot = true;
settings = { settings = {
General = { General = {
AutoEnable = false; AutoEnable = true;
ControllerMode = "bredr";
Experimental = "true";
}; # https://reddit.com/r/NixOS/comments/1aoteqb/keychron_k1_pro_bluetooth_nixos_wkde_install/kq49q9r/?context=3 }; # https://reddit.com/r/NixOS/comments/1aoteqb/keychron_k1_pro_bluetooth_nixos_wkde_install/kq49q9r/?context=3
}; };
}; };
@ -70,6 +69,7 @@ in
# interval = "weekly"; # interval = "weekly";
# }; # };
# }; # };
blueman.enable = true;
devmon.enable = true; devmon.enable = true;
fwupd.enable = true; fwupd.enable = true;
geoclue2 = { geoclue2 = {
@ -82,7 +82,17 @@ in
enable = true; enable = true;
}; };
}; };
# NixOS system programs
programs = {
thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
foot.enable = true;
};
home-manager.users.${username} = home-manager.users.${username} =
{ {
pkgs, pkgs,
@ -91,10 +101,19 @@ in
... ...
}: }:
{ {
programs.kitty.enable = true; # Home-manager programs
programs = {
kitty.enable = true;
};
home.packages = with pkgs; [ home.packages = with pkgs; [
# GUI Apps
firefox firefox
filezilla filezilla
spotify
# Utilities
networkmanagerapplet
swaynotificationcenter
]; ];
xdg = { xdg = {
mimeApps = mimeApps =