Complete Overhaul of flake.nix

This commit is contained in:
2025-09-05 01:03:12 +02:00
parent 74bf1dc059
commit ebb83a7e8b
19 changed files with 757 additions and 670 deletions

40
home/hyprland/cava.nix Normal file
View File

@@ -0,0 +1,40 @@
{ ... }:
{
programs.cava = {
enable = true;
settings = {
general = {
framerate = 120;
bars = 0;
bar_width = 2;
bar_spacing = 1;
#bar_height = 32;
sensitivity = 90;
autosens = 1;
};
input = {
method = "pipewire";
source = "auto";
sample_rate = 44100;
sample_bits = 16;
};
output = {
channels = "stereo";
mono_option = "average";
reverse = 0;
waveform = 0;
};
smoothing = {
monstercat = 1;
waves = 0;
noise_reduction = 0.77;
};
};
};
}

View File

@@ -1,14 +1,29 @@
{ pkgs, ... }:
{ monitorSetup, ... }:
{
imports = [
./kitty.nix # Terminal
./alacritty.nix
./hyprland.nix
./hypridle.nix
./hyprlock.nix
./hyprpaper.nix
./rofi # App Launcher
./mako.nix # Notifyer
./cava.nix # Music Visualizer
];
programs.waybar =
if monitorSetup == "single" then
import ../../home/hyprland/waybar/single.nix
else if monitorSetup == "dual" then
import ../../home/hyprland/waybar/dual.nix
else
{ };
home.file.".config/waybar" = {
source = ./waybar/configs;
# copy the scripts directory recursively
recursive = true;
};
home.file.".config/hypr/hyprland.conf".enable = false;
}

View File

@@ -7,7 +7,8 @@ let
theme = "-theme $HOME/.config/rofi/custom.rasi";
menu = "rofi -show drun ${theme}";
filebrowser = "rofi -show filebrowser ${theme}";
power = "rofi -show p -modi p:rofi-power-menu";
power = "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi";
apps = "rofi -show window ${theme}";
in
{
home.packages = with pkgs; [
@@ -92,8 +93,8 @@ in
general = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 8;
gaps_out = 16;
gaps_in = 4;
gaps_out = 0;
border_size = 4;
"col.active_border" = "$green";
@@ -106,10 +107,10 @@ in
};
decoration = {
rounding = 12;
rounding = 1;
shadow = {
enabled = true;
enabled = false;
range = 16;
render_power = 4;
ignore_window = true;
@@ -182,27 +183,36 @@ in
"nofocus, class:^(xwaylandvideobridge)$"
];
# See further https://wiki.hypr.land/Configuring/Workspace-Rules/
exec-once = [
"waybar &"
"hyprpaper &"
"[workspace 8] obsidian"
"[workspace 1] floorp"
"[workspace 2] spotify"
"[workspace 2] kitty --class=cava-terminal -e cava"
"[workspace 3] thunderbird"
"[workspace 9] kitty"
];
# Keybindings
bind = [
# Application Bindings
"${super}, Q, exec, ${terminal}"
"${super}, C, killactive, "
"${super}, M, exit, "
"${super}, E, exec, ${fileManager}"
"${super}, V, togglefloating, "
"${super}, O, exec, obsidian"
"${super}, I, exec, floorp"
"${super}, G, exec, thunderbird"
# Lock Screen
"${super}, M, exit, "
# Rofi bindings
"${super}, f, exec, ${filebrowser}"
"${super}, A, exec, ${apps}"
"${super}, R, exec, ${menu}"
"${super}, S, exec, ${power}"
"${super}, F, exec, ${filebrowser}"
"${super}, P, pseudo, " # dwindle
"${super}, J, togglesplit, " # dwindle
"${super}, O, exec, obsidian"
"${super}, I, exec, firefox"
"${super}, G, exec, thunderbird"
# Move focus with mainMod + arrow keys
"${super}, left, movefocus, l"
@@ -210,6 +220,12 @@ in
"${super}, up, movefocus, u"
"${super}, down, movefocus, d"
# Window Modifiers
"${super}, P, pseudo, " # dwindle
"${super}, J, togglesplit, " # dwindle
"${super}, V, togglefloating, " # dwindle
"${super}, C, killactive, "
# Switch workspaces with mainMod + [0-9]
"${super}, 1, workspace, 1"
"${super}, 2, workspace, 2"
@@ -249,7 +265,7 @@ in
bindl = [
#", XF86AudioMute, exec, amixer set Master toggle
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMute, exec, pamixer -t"
", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles
", XF86AudioNext, exec, playerctl next"
", XF86AudioPrev, exec, playerctl previous"
@@ -257,12 +273,10 @@ in
bindle = [
# Multi Media Control
", XF86AudioRaiseVolume, exec, vol --up"
", XF86AudioLowerVolume, exec, vol --down"
", XF86AudioRaiseVolume, exec, pamixer -i 5"
", XF86AudioLowerVolume, exec, pamixer -d 5"
", XF86MonBrightnessUp, exec, bri --up"
", XF86MonBrightnessDown, exec, bri --down"
", XF86Search, exec, ${menu}"
];
bindm = [

View File

@@ -52,9 +52,12 @@ window {
/* properties for all widgets */
enabled: true;
border-radius: 12px;
border-radius: 1px;
cursor: "default";
background-color: @base;
border: 4px;
border-color: @yellow;
}
/* Main Box */
@@ -72,7 +75,7 @@ imagebox {
background-color: transparent;
background-image: url("~/.config/rofi/background.png", height);
orientation: vertical;
children: [ "inputbar", "dummy", "mode-switcher" ];
children: [ "inputbar", "weatherelement", "dummy", "mode-switcher" ];
}
listbox {
@@ -83,6 +86,13 @@ listbox {
children: [ "message", "listview" ];
}
weatherelement {
border-radius: 20px;
background-color: transparent;
text-color: @peach;
str: "Hello This is text";
}
dummy {
background-color: transparent;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 KiB

View File

@@ -0,0 +1,162 @@
* {
rosewater: #f5e0dc;
flamingo: #f2cdcd;
pink: #f5c2e7;
mauve: #cba6f7;
red: #f38ba8;
maroon: #eba0ac;
peach: #fab387;
yellow: #f9e2af;
green: #a6e3a1;
teal: #94e2d5;
sky: #89dceb;
sapphire: #74c7ec;
blue: #89b4fa;
lavender: #b4befe;
text: #cdd6f4;
subtext1: #bac2de;
subtext0: #a6adc8;
overlay2: #9399b2;
overlay1: #7f849c;
overlay0: #6c7086;
surface2: #585b70;
surface1: #45475a;
surface0: #313244;
base: #1e1e2e;
mantle: #181825;
crust: #11111b;
}
configuration {
font: "Icomoon-Feather 12";
show-icons: true;
}
/*
USE_BUTTONS=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 1000px;
x-offset: 0px;
y-offset: 0px;
padding: 0px;
border: 4px solid;
border-radius: 2px;
border-color: @blue;
cursor: "default";
background-color: @base;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @blue;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 20px;
padding: 100px 40px;
background-color: transparent;
background-image: url("~/.config/rofi/power.jpg", width);
children: [ "textbox-prompt-colon", "prompt"];
}
dummy {
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: " System";
padding: 15px;
border: 0px 0px 0px 10px;
border-radius: 100% 100% 0px 100%;
border-color: @peach;
background-color: @crust;
text-color: @text;
}
prompt {
enabled: true;
padding: 15px;
border: 0px;
border-radius: 0px 100% 100% 100%;
border-color: @blue;
background-color: @crust;
text-color: @text;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 6;
lines: 1;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 30px;
margin: 30px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 35px 10px;
border-radius: 5%;
background-color: @crust;
text-color: @text;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element selected.normal {
background-color: @crust;
text-color: @sapphire;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 15px;
border-radius: 0px;
background-color: @crust;
text-color: @yellow;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -1,201 +0,0 @@
{
pkgs,
config,
...
}:
{
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
output = [ "DP-1" ];
modules-left = [
"hyprland/workspaces"
"mpris"
];
modules-center = [ ];
modules-right = [
"network"
"memory"
"cpu"
"clock"
];
# Widgets
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "<span color='grey'>{status_icon} {dynamic}</span>";
max-length = 100;
player-icons = {
default = "";
mpv = "🎵";
};
status-icons = {
paused = "";
};
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "󰈀 ";
tooltip-format = "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
};
cpu = {
interval = 1;
format = "{icon}";
rotate = 270;
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
clock = {
format = "{:%I:%M %p}";
rotate = 0;
on-click = "/usr/local/bin/ags -t ActivityCenter";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
};
secondBar = {
layer = "top";
position = "top";
height = 30;
output = [
"HDMI-A-2"
];
modules-left = [
"hyprland/workspaces"
];
modules-center = [
];
modules-right = [
"network"
];
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
"custom/weather" = {
exec = "~/.config/waybar/weather.py waybar";
restart-interval = 900;
return-type = "json";
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "{bandwidthTotalBits} 󰈀 {bandwidthUpBits} 󰶣 {bandwidthDownBits} 󰶡 ";
tooltip-format = "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
};
};
};
home.file.".config/waybar" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
}

View File

@@ -0,0 +1,188 @@
{
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
output = [ "DP-1" ];
modules-left = [
"hyprland/workspaces"
"mpris"
];
modules-center = [ ];
modules-right = [
"network"
"memory"
"cpu"
"clock"
];
# Widgets
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "<span color='grey'>{status_icon} {dynamic}</span>";
max-length = 100;
player-icons = {
default = "";
mpv = "🎵";
};
status-icons = {
paused = "";
};
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "󰈀 ";
tooltip-format = "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
};
cpu = {
interval = 1;
format = "{icon}";
rotate = 270;
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
clock = {
format = "{:%I:%M %p}";
rotate = 0;
on-click = "/usr/local/bin/ags -t ActivityCenter";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
};
secondBar = {
layer = "top";
position = "top";
height = 30;
output = [
"HDMI-A-2"
];
modules-left = [
"hyprland/workspaces"
];
modules-center = [
];
modules-right = [
"network"
];
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
"custom/weather" = {
exec = "~/.config/waybar/weather.py waybar";
restart-interval = 900;
return-type = "json";
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "{bandwidthTotalBits} 󰈀 {bandwidthUpBits} 󰶣 {bandwidthDownBits} 󰶡 ";
tooltip-format = "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
};
};
}

View File

@@ -1,163 +0,0 @@
{
pkgs,
config,
...
}:
{
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
output = [
"eDP-1"
"DP-1"
"HDMI-A-1"
"Virtual-1"
];
modules-left = [
"hyprland/workspaces"
"mpris"
];
modules-center = [
"custom/weather"
];
modules-right = [
"network"
"memory"
"cpu"
"clock"
];
# Widgets
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "<span color='grey'>{status_icon} {dynamic}</span>";
max-length = 100;
player-icons = {
default = "";
mpv = "🎵";
};
status-icons = {
paused = "";
};
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "󰈀 ";
tooltip-format = "Network = <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
};
cpu = {
interval = 1;
format = "{icon}";
rotate = 270;
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
clock = {
format = "{:%I:%M %p}";
rotate = 0;
on-click = "/usr/local/bin/ags -t ActivityCenter";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
# Custom Widgets
"custom/weather" = {
exec = "python3 ~/.config/waybar/weather.py waybar";
restart-interval = 900;
return-type = "json";
};
};
};
};
home.file.".config/waybar" = {
source = ./configs;
# copy the scripts directory recursively
recursive = true;
};
}

View File

@@ -0,0 +1,150 @@
{
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
output = [
"eDP-1"
"DP-1"
"HDMI-A-1"
"Virtual-1"
];
modules-left = [
"hyprland/workspaces"
"mpris"
];
modules-center = [
"custom/weather"
];
modules-right = [
"network"
"memory"
"cpu"
"clock"
];
# Widgets
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "<span color='grey'>{status_icon} {dynamic}</span>";
max-length = 100;
player-icons = {
default = "";
mpv = "🎵";
};
status-icons = {
paused = "";
};
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
default = "";
active = "";
};
};
network = {
tooltip = true;
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
];
rotate = 0;
format-ethernet = "󰈀 ";
tooltip-format = "Network = <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>";
format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = " ";
tooltip-format-disconnected = "Disconnected";
on-click = "/usr/local/bin/ags -t ControlPanel";
interval = 2;
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
};
cpu = {
interval = 1;
format = "{icon}";
rotate = 270;
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
clock = {
format = "{:%I:%M %p}";
rotate = 0;
on-click = "/usr/local/bin/ags -t ActivityCenter";
tooltip-format = "<tt>{calendar}</tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
# Custom Widgets
"custom/weather" = {
exec = "python3 ~/.config/waybar/weather.py waybar";
restart-interval = 900;
return-type = "json";
};
};
};
}