diff --git a/flake.lock b/flake.lock
index 7f8c39a..bca1abf 100644
--- a/flake.lock
+++ b/flake.lock
@@ -188,11 +188,11 @@
]
},
"locked": {
- "lastModified": 1775247674,
- "narHash": "sha256-MCaiC3iWarAsmu8KJXgJHb1H8lf+BD9gymvxkbmNVdc=",
+ "lastModified": 1775360939,
+ "narHash": "sha256-XUBlSgUFdvTh6+K5LcI5mJu5F5L8scmJDMRiZM484TM=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "03bdcf84f092956943dcf9ef164481e463512716",
+ "rev": "2097a5c82bdc099c6135eae4b111b78124604554",
"type": "github"
},
"original": {
@@ -301,11 +301,11 @@
"xdph": "xdph"
},
"locked": {
- "lastModified": 1775165818,
- "narHash": "sha256-Bkb1ha9bB8IiWIBW2Z6shj2Erqx08VH1I9ljYl8zxGU=",
+ "lastModified": 1775343634,
+ "narHash": "sha256-y5X04LWh/RDH7FE3y1xEDD+RP8mkfGGiXXZ9u0hky2g=",
"owner": "hyprwm",
"repo": "Hyprland",
- "rev": "f25473b21b45ab8ded4a0dbba69eb6b6660d568e",
+ "rev": "3a7bd8fea2ca9711da5523dc185c05ea30ec0f35",
"type": "github"
},
"original": {
@@ -656,11 +656,11 @@
"nixpkgs-nixcord": "nixpkgs-nixcord"
},
"locked": {
- "lastModified": 1775215862,
- "narHash": "sha256-YoFvBMHRE4jCUoAk73bsUOo20j1sQV2NQm4BgQCKqSA=",
+ "lastModified": 1775318803,
+ "narHash": "sha256-oas+Aq3lRrasp8N8RA6JF1ATj7Nn4S3NynaR4qlZY3A=",
"owner": "kaylorben",
"repo": "nixcord",
- "rev": "164e25500dcda5261d23242788ece7ab4f0a4619",
+ "rev": "cad6925837d79126d8557955901c926ce96df2c3",
"type": "github"
},
"original": {
@@ -725,11 +725,11 @@
"systems": "systems_3"
},
"locked": {
- "lastModified": 1774802402,
- "narHash": "sha256-L1UJ/zxKTyyaGGmytH6OYlgQ0HGSMhvPkvU+iz4Mkb8=",
+ "lastModified": 1775307257,
+ "narHash": "sha256-y9hEecHH4ennFwIcw1n480YCGh73DkEmizmQnyXuvgg=",
"owner": "nix-community",
"repo": "nixvim",
- "rev": "cbd8536a05d1aae2593cb5c9ace1010c8c5845cb",
+ "rev": "2e008bb941f72379d5b935d5bfe70ed8b7c793ff",
"type": "github"
},
"original": {
@@ -784,11 +784,11 @@
]
},
"locked": {
- "lastModified": 1775188331,
- "narHash": "sha256-/0BoSi0Dg0ON7IW0oscM12WSPBaMSCn36XTt0lHZoy8=",
+ "lastModified": 1775365543,
+ "narHash": "sha256-f50qrK0WwZ9z5EdaMGWOTtALgSF7yb7XwuE7LjCuDmw=",
"owner": "Mic92",
"repo": "sops-nix",
- "rev": "8f093d0d2f08f37317778bd94db5951d6cce6c46",
+ "rev": "a4ee2de76efb759fe8d4868c33dec9937897916f",
"type": "github"
},
"original": {
diff --git a/home/default.nix b/home/default.nix
index b58f1e5..e3dc032 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -1,4 +1,13 @@
-{ config, primaryUser, inputs, self, pkgs, lib, ... }: {
+{
+ config,
+ primaryUser,
+ inputs,
+ self,
+ pkgs,
+ lib,
+ ...
+}:
+{
imports = [
./packages.nix
@@ -16,9 +25,11 @@
./obsidian.nix
./desktop
-
+ ./xdg.nix
inputs.sops-nix.homeManagerModules.sops
- ] ++ lib.optionals (!pkgs.stdenv.isDarwin) [ ./xdg.nix ];
+ ];
+
+ nixpkgs.config.allowUnfree = true;
catppuccin = {
enable = false;
@@ -100,19 +111,18 @@
sops = {
defaultSopsFile = ../secrets/secrets.yaml;
defaultSopsFormat = "yaml";
- age.keyFile = if pkgs.stdenv.isDarwin then
- "/Users/${primaryUser}/.config/nix/secrets/keys.txt"
- else
- "/home/${primaryUser}/.config/nix/secrets/keys.txt";
+ age.keyFile =
+ if pkgs.stdenv.isDarwin then
+ "/Users/${primaryUser}/.config/nix/secrets/keys.txt"
+ else
+ "/home/${primaryUser}/.config/nix/secrets/keys.txt";
secrets = {
GROQ_API_KEY = { };
OPENWEATHER_API_KEY = { };
ssh_private_key = {
- path = if pkgs.stdenv.isDarwin then
- "/Users/${primaryUser}/.ssh/ssh"
- else
- "/home/${primaryUser}/.ssh/ssh";
+ path =
+ if pkgs.stdenv.isDarwin then "/Users/${primaryUser}/.ssh/ssh" else "/home/${primaryUser}/.ssh/ssh";
mode = "0600";
};
};
diff --git a/home/desktop/default.nix b/home/desktop/default.nix
index 4272ba6..12a6125 100644
--- a/home/desktop/default.nix
+++ b/home/desktop/default.nix
@@ -1,23 +1,32 @@
-{ pkgs, inputs, ... }: {
- imports = [ inputs.catppuccin.homeModules.catppuccin ]
- ++ pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [
- ./hyprland
- ./rofi
- ./waybar
- ./gtk.nix
- ./qt.nix
- ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ ./sketchybar.nix ];
+{
+ pkgs,
+ inputs,
+ lib,
+ ...
+}:
+{
+ imports = [
+ inputs.catppuccin.homeModules.catppuccin
+ ./hyprland
+ ./rofi
+ ./waybar
+ ./gtk.nix
+ ./qt.nix
+ ./sketchybar.nix
+ ];
- _module.args.compositor =
- if pkgs.stdenv.isDarwin then "quartz" else "hyprland";
+ _module.args.compositor = if pkgs.stdenv.isDarwin then "quartz" else "hyprland";
- home = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
- packages = with pkgs; [ waypaper swww ];
+ home = lib.mkIf (!pkgs.stdenv.isDarwin) {
+ packages = with pkgs; [
+ waypaper
+ awww
+ ];
file.".config/waypaper/config.ini".source = ./waypaper.ini;
};
# TODO: Qutebrowser install
- programs = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ programs = lib.mkIf (!pkgs.stdenv.isDarwin) {
mangohud = {
enable = true;
settings = {
diff --git a/home/desktop/gtk.nix b/home/desktop/gtk.nix
index 1fcdc58..92f07f5 100644
--- a/home/desktop/gtk.nix
+++ b/home/desktop/gtk.nix
@@ -4,7 +4,7 @@ let
theme_name = "Catppuccin-GTK-Dark";
in
{
- home = {
+ home = lib.mkIf (!pkgs.stdenv.isDarwin) {
packages = with pkgs; [
adwaita-icon-theme
];
@@ -20,7 +20,7 @@ in
".config/gtk-4.0/assets".source = "${theme}/share/themes/${theme_name}/gtk-4.0/assets";
};
};
- gtk = {
+ gtk = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
font = {
name = "FiraCode Nerd Font Propo";
@@ -41,7 +41,7 @@ in
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
};
- dconf = {
+ dconf = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
settings = {
"org/gnome/desktop/interface" = {
diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix
index 222edbd..a427864 100644
--- a/home/desktop/hyprland/default.nix
+++ b/home/desktop/hyprland/default.nix
@@ -196,7 +196,7 @@ in
# ];
exec-once = [
- "swww-daemon & disown"
+ "awww-daemon & disown"
"waybar &"
];
diff --git a/home/desktop/qt.nix b/home/desktop/qt.nix
index 1ef26f5..c74d202 100644
--- a/home/desktop/qt.nix
+++ b/home/desktop/qt.nix
@@ -1,12 +1,15 @@
-{ pkgs, ... }:
+{ pkgs, lib, ... }:
{
- qt = {
+ qt = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
style.name = "kvantum";
platformTheme.name = "kvantum";
};
- home.packages = with pkgs; [
- kdePackages.qt6ct
- kdePackages.qtstyleplugin-kvantum
- ];
+ home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (
+ with pkgs;
+ [
+ kdePackages.qt6ct
+ kdePackages.qtstyleplugin-kvantum
+ ]
+ );
}
diff --git a/home/desktop/sketchybar.nix b/home/desktop/sketchybar.nix
index 90d3ae4..f632114 100644
--- a/home/desktop/sketchybar.nix
+++ b/home/desktop/sketchybar.nix
@@ -1,5 +1,6 @@
-{ pkgs, ... }: {
- programs.sketchybar = {
+{ pkgs, lib, ... }:
+{
+ programs.sketchybar = lib.mkIf pkgs.stdenv.isDarwin {
enable = true;
configType = "lua";
sbarLuaPackage = pkgs.sbarlua;
diff --git a/home/desktop/waybar/configs/mako.sh b/home/desktop/waybar/configs/mako.sh
new file mode 100644
index 0000000..6e53428
--- /dev/null
+++ b/home/desktop/waybar/configs/mako.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+if makoctl mode | grep -q do-not-disturb; then
+ echo '{"text":"","class":"disabled"}'
+else
+ echo '{"text":"","class":"enabled"}'
+fi
diff --git a/home/desktop/waybar/waybar/common.nix b/home/desktop/waybar/waybar/common.nix
new file mode 100644
index 0000000..fb5a64f
--- /dev/null
+++ b/home/desktop/waybar/waybar/common.nix
@@ -0,0 +1,181 @@
+{
+ widgets = {
+ "group/media" = {
+ orientation = "horizontal";
+
+ modules = [
+ "mpris"
+ "custom/cava"
+ "wireplumber"
+ ];
+ };
+
+ mpris = {
+ format = "{player_icon}";
+ format-paused = "{status_icon}";
+ max-length = 100;
+ player-icons = {
+ default = "||";
+ mpv = "||";
+ };
+ status-icons = {
+ paused = "▶";
+ };
+ };
+
+ "custom/cava" = {
+ exec = "sh ~/.config/waybar/cava.sh";
+ format = "{} ♪";
+ on-click = "hyprctl dispatch focuswindow class:spotify";
+ };
+
+ wireplumber = {
+ format = "{volume}%";
+ format-muted = "";
+ max-volume = 110;
+ scroll-step = 0.2;
+ };
+
+ "group/hardware" = {
+ orientation = "horizontal";
+ modules = [
+ "cpu"
+ "network"
+ "memory"
+ "disk"
+ "temperature"
+ ];
+ };
+
+ network = {
+ # Wifi
+ tooltip = true;
+ format-wifi = "{icon} ";
+ format-icons = [
+ ""
+ ""
+ ""
+ ];
+ rotate = 0;
+
+ # Ethernet
+ format-ethernet = "⇵{bandwidthTotalBits}";
+ tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}\nCurrent : {bandwidthTotalBits}\nUp : {bandwidthUpBits}\nDown : {bandwidthDownBits}";
+ format-linked = " {ifname} (No IP)";
+ format-disconnected = " ";
+ tooltip-format-disconnected = "Disconnected";
+ interval = 2;
+ };
+
+ memory = {
+ interval = 1;
+ #rotate = 270;
+ format = "{icon} {percentage}%";
+ format-icons = [
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ];
+ max-length = 10;
+ };
+
+ cpu = {
+ interval = 1;
+ format = "{icon} {usage}%";
+ #rotate = 270;
+ format-icons = [
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ];
+ };
+
+ temperature = {
+ format = " {temperatureC}°C";
+ thermal-zone = 0;
+ hwmon-path = "/sys/class/thermal/thermal_zone1/temp";
+ critical-threshold = 80;
+ };
+
+ disk = {
+ format = " {percentage_free}%";
+ tooltip = true;
+ tooltip-format = "{free} / {total} ({percentage_free})";
+ };
+
+ clock = {
+ format = "{:%a %b %d, %I:%M %p}";
+ rotate = 0;
+ on-click = " ";
+ tooltip-format = "{calendar}";
+ calendar = {
+ mode = "month";
+ mode-mon-col = 3;
+ on-scroll = 1;
+ on-click-right = "mode";
+ format = {
+ months = "{}";
+ weekdays = "{}";
+ today = "{}";
+ };
+ };
+ 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/nixicon" = {
+ format = " ";
+ on-click = "rofi -show drun -theme $HOME/.config/rofi/custom.rasi";
+ tooltip = false;
+ };
+
+ "custom/weather" = {
+ format = "{}";
+ return-type = "json";
+ exec = ''
+ curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en" | jq -c '{text: "\(.name) \(.main.temp)C°"}'
+ '';
+ interval = 120;
+ on-click = ''
+ data=$(curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en")
+ city=$(echo "$data" | jq -r '.name')
+ temp=$(echo "$data" | jq -r '.main.temp')
+ feels=$(echo "$data" | jq -r '.main.feels_like')
+ humidity=$(echo "$data" | jq -r '.main.humidity')
+ wind=$(echo "$data" | jq -r '.wind.speed')
+ clouds=$(echo "$data" | jq -r '.clouds.all')
+ sunrise=$(echo "$data" | jq -r '.sys.sunrise | strftime("%H:%M")')
+ sunset=$(echo "$data" | jq -r '.sys.sunset | strftime("%H:%M")')
+ notify-send "$city" "Temperature: $temp °C\nFeels Like: $feels °C\nHumidity: $humidity%\nWind: $wind m/s\nClouds: $clouds%\nSunrise at: $sunrise\nSunset at: $sunset" -u normal --icon="$HOME/Pictures/Avatar/avatar_weather_no_bg.png"
+ '';
+ };
+
+ "custom/wallpaper" = {
+ format = "【{} 】";
+ exec = "basename $(swww query | grep -oP 'image: \\K.*')";
+ interval = 5;
+ on-click = "waypaper";
+ tooltip = true;
+ tooltip-format = "{}";
+ max-length = 30;
+ };
+ };
+
+}
diff --git a/home/desktop/waybar/waybar/configs/cava.sh b/home/desktop/waybar/waybar/configs/cava.sh
new file mode 100644
index 0000000..a12dac4
--- /dev/null
+++ b/home/desktop/waybar/waybar/configs/cava.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# Not my own work. Credit to original author
+
+#----- Optimized bars animation without much CPU usage increase --------
+bar="▁▂▃▄▅▆▇█"
+dict="s/;//g"
+
+# Calculate the length of the bar outside the loop
+bar_length=${#bar}
+
+# Create dictionary to replace char with bar
+for ((i = 0; i < bar_length; i++)); do
+ dict+=";s/$i/${bar:$i:1}/g"
+done
+
+# Create cava config
+config_file="/tmp/bar_cava_config"
+cat >"$config_file" <
+
+
+
diff --git a/home/desktop/waybar/waybar/configs/style.css b/home/desktop/waybar/waybar/configs/style.css
new file mode 100644
index 0000000..a8d969e
--- /dev/null
+++ b/home/desktop/waybar/waybar/configs/style.css
@@ -0,0 +1,191 @@
+@import "catppuccin.css";
+
+* {
+ border: none;
+ font-family: "FiraCode Nerd Font";
+ font-size: 15px;
+ min-height: 10px;
+}
+
+window#waybar {
+ background: @crust;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/* - Genera rules for visible modules -- */
+#media,
+#clock,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#network,
+#custom-wallpaper,
+#media,
+#custom-weather {
+ color: @crust;
+ margin-top: 6px;
+ margin-bottom: 6px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+}
+
+/* Separation to the left */
+#custom-nixicon,
+#cpu {
+ margin-left: 5px;
+ border-top-left-radius: 10px;
+ border-bottom-left-radius: 10px;
+}
+
+/* Separation to the rigth */
+#clock,
+#temperature {
+ margin-right: 20px;
+ border-top-right-radius: 10px;
+ border-bottom-right-radius: 10px;
+}
+
+/* -- Specific styles -- */
+
+#custom-nixicon {
+ background-image: url("nix-snowflake.svg");
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ min-height: 24px;
+ min-width: 24px;
+
+ padding: 0px;
+ padding-right: 15px;
+ padding-left: 10px;
+ margin-top: 6px;
+ margin-bottom: 6px;
+ margin-left: 15px;
+}
+
+/* Hardware Group */
+#clock {
+ background: @yellow;
+}
+
+#cpu {
+ background: @blue;
+}
+
+#memory {
+ background: @red;
+}
+
+#disk {
+ background: @peach;
+}
+
+#temperature {
+ background: @sky;
+}
+
+#network {
+ background: @lavender;
+ padding-right: 13px;
+}
+
+/* Workspace */
+#workspaces {
+ border-radius: 10px;
+ margin: 6px 5px;
+ padding: 0px 6px;
+}
+
+#workspaces button {
+ color: @text;
+ background: transparent;
+ padding: 4px 4px;
+ transition: color 0.3s ease, text-shadow 0.3s ease, transform 0.3s ease;
+ border: none;
+}
+
+#workspaces button.occupied {
+ color: @red;
+}
+
+#workspaces button.active {
+ color: @green;
+ text-shadow: 0 0 4px @green;
+}
+
+#workspaces button:hover {
+ color: @teal;
+ border: none;
+}
+
+#workspaces button.active:hover {}
+
+
+
+/* Media Group */
+#media {
+ background: @overlay2;
+ border-radius: 10px;
+ color: @crust;
+ margin-left: 20px;
+}
+
+#custom-cava {
+ color: @sky;
+}
+
+#wireplumber, #custom-cava, #mpris {
+ margin-left: 10px;
+ margin-right: 5px;
+}
+
+#wireplumber {
+ margin-right: 5px;
+}
+
+
+/* Weather */
+#custom-weather {
+ background: @sky;
+ color: @crust;
+ border-radius: 10px;
+ margin-right: 20px;
+}
+
+#custom-mako {
+ color: @red;
+ margin-top: 6px;
+ margin-bottom: 6px;
+ padding-left: 6px;
+ padding-right: 6px;
+}
+
+#custom-mako.enabled {
+ color: @red;
+}
+
+#custom-mako.disabled {
+ color: @overlay1;
+}
+
+/* SwayNC */
+#custom-notification {
+ font-family: "NotoSansMono Nerd Font";
+ background: @green;
+ border-radius: 10px;
+ padding-left: 10px;
+ padding-right: 5px;
+}
+
+/* Wallpaper */
+#custom-wallpaper {
+ background: @red;
+ color: @mantle;
+ border-radius: 10px;
+ margin-left: 5px;
+}
diff --git a/home/desktop/waybar/waybar/configs/style.min.css b/home/desktop/waybar/waybar/configs/style.min.css
new file mode 100644
index 0000000..dc25e86
--- /dev/null
+++ b/home/desktop/waybar/waybar/configs/style.min.css
@@ -0,0 +1 @@
+*{border:none;min-height:10px;font-family:FiraCode Nerd Font;font-size:15px}window#waybar{background:@crust}window#waybar.hidden{opacity:.2} #media,#clock,#cpu,#memory,#disk,#temperature,#network,#custom-wallpaper,#media,#custom-weather{color:@crust;margin-top:6px;margin-bottom:6px;padding-left:10px;padding-right:10px;transition:none}#custom-nixicon,#cpu{border-top-left-radius:10px;border-bottom-left-radius:10px;margin-left:5px}#clock,#temperature{border-top-right-radius:10px;border-bottom-right-radius:10px;margin-right:20px}#custom-nixicon{background-image:url(nix-snowflake.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;min-width:24px;min-height:24px;margin-top:6px;margin-bottom:6px;margin-left:15px;padding:0 15px 0 10px}#clock{background:@yellow}#cpu{background:@blue}#memory{background:@red}#disk{background:@peach}#temperature{background:@sky}#network{background:@lavender;padding-right:13px}#workspaces{border-radius:10px;margin:6px 5px;padding:0 6px}#workspaces button{color:@text;background:0 0;border:none;padding:4px;transition:color .3s,text-shadow .3s,transform .3s}#workspaces button.occupied{color:@red}#workspaces button.active{color:@green;text-shadow:0 0 4px @green}#workspaces button:hover{color:@teal;border:none}#media{background:@overlay2;color:@crust;border-radius:10px;margin-left:20px}#custom-cava{color:@green}#wireplumber,#custom-cava,#mpris{margin-left:10px;margin-right:5px}#wireplumber{margin-right:5px}#custom-weather{background:@sky;color:@crust;border-radius:10px;margin-right:20px}#custom-notification{background:@green;border-radius:10px;padding-left:10px;padding-right:5px;font-family:NotoSansMono Nerd Font}#custom-wallpaper{background:@red;color:@mantle;border-radius:10px;margin-left:5px}
diff --git a/home/desktop/waybar/waybar/default.nix b/home/desktop/waybar/waybar/default.nix
new file mode 100644
index 0000000..abb663d
--- /dev/null
+++ b/home/desktop/waybar/waybar/default.nix
@@ -0,0 +1,20 @@
+{
+ pkgs,
+ compositor ? "hyprland",
+ ...
+}:
+{
+
+ programs.waybar = {
+ enable = true;
+ package = pkgs.waybar;
+ }
+ // (import ./dual.nix { inherit compositor; });
+ home = {
+ packages = with pkgs; [ cava ];
+ file.".config/waybar" = {
+ source = ./configs;
+ recursive = true;
+ };
+ };
+}
diff --git a/home/desktop/waybar/waybar/dual.nix b/home/desktop/waybar/waybar/dual.nix
new file mode 100644
index 0000000..a0ccabb
--- /dev/null
+++ b/home/desktop/waybar/waybar/dual.nix
@@ -0,0 +1,51 @@
+{
+ compositor ? "hyprland",
+}:
+let
+ common = import ./common.nix;
+ wm = if compositor == "hyprland" then import ./hyprland-wm.nix else import ./niri-wm.nix;
+ workspaceModule = if compositor == "hyprland" then "hyprland/workspaces" else "niri/workspaces";
+ notificationModule = if compositor == "hyprland" then "custom/mako" else "custom/swaync";
+in
+{
+ enable = true;
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 30;
+ output = [ "DP-1" ];
+ modules-left = [
+ "custom/nixicon"
+ "clock"
+ ];
+ modules-center = [
+ workspaceModule
+ notificationModule
+ ];
+ modules-right = [
+ "group/hardware"
+ ];
+ }
+ // common.widgets
+ // wm.widgets;
+
+ secondBar = {
+ layer = "top";
+ position = "top";
+ height = 30;
+ output = [ "HDMI-A-2" ];
+ modules-left = [
+ "group/media"
+ "custom/wallpaper"
+ ];
+ modules-center = [
+ workspaceModule
+ ];
+ modules-right = [ "custom/weather" ];
+ }
+ // common.widgets
+ // wm.widgets;
+ };
+
+}
diff --git a/home/desktop/waybar/waybar/hyprland-wm.nix b/home/desktop/waybar/waybar/hyprland-wm.nix
new file mode 100644
index 0000000..5e5a3f2
--- /dev/null
+++ b/home/desktop/waybar/waybar/hyprland-wm.nix
@@ -0,0 +1,19 @@
+{
+ widgets = {
+ "hyprland/workspaces" = {
+ format = "{icon}";
+ format-icons = {
+ default = " ";
+ active = " ";
+ };
+ };
+ "custom/mako" = {
+ tooltip = false;
+ format = "{}";
+ return-type = "json";
+ exec = "sh ~/.config/waybar/mako.sh";
+ on-click = "makoctl mode -t do-not-disturb";
+ interval = 1;
+ };
+ };
+}
diff --git a/home/desktop/waybar/waybar/niri-wm.nix b/home/desktop/waybar/waybar/niri-wm.nix
new file mode 100644
index 0000000..ac653aa
--- /dev/null
+++ b/home/desktop/waybar/waybar/niri-wm.nix
@@ -0,0 +1,31 @@
+{
+ widgets = {
+ "niri/workspaces" = {
+ format = "{icon}";
+ format-icons = {
+ default = "";
+ active = "";
+ };
+ };
+ "custom/swaync" = {
+ tooltip = false;
+ format = "{icon}";
+ format-icons = {
+ notification = "";
+ none = " ";
+ dnd-notification = "";
+ dnd-none = " ";
+ inhibited-notification = "";
+ inhibited-none = " ";
+ dnd-inhibited-notification = "";
+ dnd-inhibited-none = " ";
+ };
+ return-type = "json";
+ exec-if = "which swaync-client";
+ exec = "swaync-client -swb";
+ on-click = "swaync-client -t -sw";
+ on-click-right = "swaync-client -d -sw";
+ escape = true;
+ };
+ };
+}
diff --git a/home/fastfetch.jsonc b/home/fastfetch.jsonc
index 052e1d9..02f7a01 100644
--- a/home/fastfetch.jsonc
+++ b/home/fastfetch.jsonc
@@ -4,9 +4,9 @@
"type": "kitty-icat",
"source": "~/Pictures/Avatar/avatar_no_bg.png",
// "height": 15,
- "width": 36,
+ "width": 32,
"padding": {
- "top": 0,
+ "top": 2,
"left": 0
}
},
@@ -23,22 +23,22 @@
},
{
"type": "cpu",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "green"
},
{
"type": "gpu",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "green"
},
{
"type": "disk",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "green"
},
{
"type": "memory",
- "key": "└ └",
+ "key": "└ ",
"keyColor": "green"
},
{
@@ -52,53 +52,54 @@
},
{
"type": "os",
- "key": " OS",
+ "key": "❄ OS",
"keyColor": "yellow"
},
{
"type": "kernel",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "yellow"
},
{
"type": "bios",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "yellow"
},
{
"type": "packages",
- "key": "│ ├",
+ "key": "├ ",
"keyColor": "yellow"
},
{
"type": "shell",
- "key": "└ └",
+ "key": "└ ",
"keyColor": "yellow"
},
"break",
{
- "type": "de",
- "key": " DE",
+ "type": "wm",
+ "key": " WM",
+ "format": "{pretty-name}",
"keyColor": "blue"
},
{
"type": "lm",
- "key": "│ ├",
+ "key": "├ ",
+ "keyColor": "blue"
+ },
+ {
+ "type": "font",
+ "key": "├ ",
"keyColor": "blue"
},
{
- "type": "wm",
- "key": "│ ├",
- "keyColor": "blue"
- },
- {
- "type": "wmtheme",
- "key": "│ ├",
+ "type": "icons",
+ "key": "├ ",
"keyColor": "blue"
},
{
"type": "terminal",
- "key": "└ └",
+ "key": "└ ",
"keyColor": "blue"
},
{
@@ -112,53 +113,26 @@
},
{
"type": "command",
- "key": " OS Age ",
+ "key": "├ OS Age ",
"keyColor": "magenta",
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
},
{
"type": "uptime",
- "key": " Uptime ",
+ "key": "├ Uptime ",
"keyColor": "magenta"
},
{
"type": "datetime",
- "key": " DateTime ",
- "keyColor": "magenta"
+ "key": "├ Date Time ",
+ "keyColor": "magenta",
+ "format": "{11}.{4}.{1} {14}:{17}:{20}",
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
- {
- "type": "custom",
- "format": "\u001b[90m┌─────────────────────Networking─────────────────────┐"
- },
- {
- "type": "publicip",
- "key": " Public ",
- "keyColor": "magenta"
- },
- {
- "type": "localip",
- "key": " Local ",
- "keyColor": "magenta"
- },
- {
- "type": "dns",
- "key": " DNS ",
- "keyColor": "magenta"
- },
- {
- "type": "netio",
- "key": " Net I/O ",
- "keyColor": "magenta"
- },
- {
- "type": "custom",
- "format": "\u001b[90m└────────────────────────────────────────────────────┘"
- },
{
"type": "colors",
"paddingLeft": 2,
diff --git a/home/neovim/default.nix b/home/neovim/default.nix
index 2ae855d..9fe2f9f 100644
--- a/home/neovim/default.nix
+++ b/home/neovim/default.nix
@@ -15,13 +15,13 @@
./avante.nix
./openscad.nix
./molten.nix
- ./live-server.nix
./which-key.nix
];
home.packages = with pkgs; [
nil
biome
+ gdb
];
programs.nixvim = {
diff --git a/home/neovim/lint.nix b/home/neovim/lint.nix
index ac178c6..c7d6642 100644
--- a/home/neovim/lint.nix
+++ b/home/neovim/lint.nix
@@ -35,7 +35,6 @@
lua54Packages.luacheck
statix
ruff
- nodePackages.eslint
clippy
];
};
diff --git a/home/neovim/live-server.nix b/home/neovim/live-server.nix
index 20a13f1..c4df6ee 100644
--- a/home/neovim/live-server.nix
+++ b/home/neovim/live-server.nix
@@ -1,14 +1,17 @@
-{ pkgs, ... }: {
+# TODO: Remove; nodePackages is unmaintained inside nixpkgs
+{ pkgs, ... }:
+{
# Live Server: Auto-reload browser for web development
# Uses browser-sync for live reload functionality
programs.nixvim = {
- keymaps = [{
- mode = "n";
- key = "ls";
- action =
- "terminal browser-sync start --server --files '*.html, *.css, *.js' --no-notify";
- options.desc = "Start live server (browser-sync)";
- }];
+ keymaps = [
+ {
+ mode = "n";
+ key = "ls";
+ action = "terminal browser-sync start --server --files '*.html, *.css, *.js' --no-notify";
+ options.desc = "Start live server (browser-sync)";
+ }
+ ];
extraPackages = with pkgs; [ nodePackages.browser-sync ];
};
diff --git a/home/neovim/openscad.nix b/home/neovim/openscad.nix
index b4934ab..06d207d 100644
--- a/home/neovim/openscad.nix
+++ b/home/neovim/openscad.nix
@@ -1,4 +1,5 @@
-{ pkgs, ... }: {
+{ pkgs, ... }:
+{
# OpenSCAD: 3D modeling language support with syntax highlighting,
# cheatsheet, snippets, offline manual and fuzzy help
programs.nixvim = {
@@ -8,13 +9,12 @@
settings = {
fuzzy_finder = "fzf";
auto_open = true;
- cheatsheet_toggle_key = "os";
+ cheatsheet_toggle_key = "";
default_mappings = true;
- exec_openscad_trig_key = "oo";
- help_manual_trig_key = "om";
- help_trig_key = "oh";
- top_toggle = "oc";
-
+ exec_openscad_trig_key = "";
+ help_manual_trig_key = "";
+ help_trig_key = "";
+ top_toggle = "";
};
};
@@ -25,4 +25,5 @@
fzf
];
};
+
}
diff --git a/home/xdg.nix b/home/xdg.nix
index e6ddaf7..97c171c 100644
--- a/home/xdg.nix
+++ b/home/xdg.nix
@@ -1,4 +1,9 @@
-{ pkgs, config, ... }:
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
let
browser = [ "floorp.desktop" ];
@@ -44,7 +49,7 @@ let
};
in
{
- xdg = {
+ xdg = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
cacheHome = config.home.homeDirectory + "/.local/cache";
diff --git a/nixos/default.nix b/nixos/default.nix
index 3422670..3a59d81 100644
--- a/nixos/default.nix
+++ b/nixos/default.nix
@@ -1,4 +1,10 @@
-{ pkgs, inputs, primaryUser, ... }: {
+{
+ pkgs,
+ inputs,
+ primaryUser,
+ ...
+}:
+{
imports = [
./fonts.nix
./sops.nix
@@ -34,12 +40,19 @@
# nix config
nix = {
settings = {
- experimental-features = [ "nix-command" "flakes" ];
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
max-jobs = "auto";
cores = 0;
- substituters =
- [ "https://hyprland.cachix.org" "https://nix-community.cachix.org" ];
+ substituters = [
+ "https://cache.nixos.org"
+ "https://hyprland.cachix.org"
+ "https://nix-community.cachix.org"
+ ];
trusted-public-keys = [
+ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
@@ -61,14 +74,15 @@
info.enable = false; # Skip info pages
};
- nixpkgs.config = { allowUnfree = true; };
+ nixpkgs.config = {
+ allowUnfree = true;
+ };
programs = {
fish.enable = true;
hyprland = {
enable = true;
- package =
- inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
+ package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
steam.enable = true;
dconf.enable = true;
@@ -94,6 +108,11 @@
shell = pkgs.fish;
isNormalUser = true;
openssh.authorizedKeys.keyFiles = [ ../secrets/ssh-key ];
- extraGroups = [ "wheel" "video" "audio" "libvirtd" ];
+ extraGroups = [
+ "wheel"
+ "video"
+ "audio"
+ "libvirtd"
+ ];
};
}