From ebd4183584aad95d1d6e1ebc5e0af77b7633332c Mon Sep 17 00:00:00 2001
From: DerGrumpf
Date: Sun, 5 Apr 2026 19:32:42 +0200
Subject: [PATCH] Merged sketchybar config into declaritive Nix Repo
---
flake.nix | 12 +-
home/default.nix | 65 ++---
home/desktop/default.nix | 38 +--
home/desktop/hyprland/default.nix | 50 ++--
home/desktop/rofi/default.nix | 20 +-
home/desktop/sketchybar.nix | 8 -
home/desktop/sketchybar/default.nix | 32 +++
home/desktop/sketchybar/plugins/battery.sh | 28 ++
home/desktop/sketchybar/plugins/clock.sh | 7 +
home/desktop/sketchybar/plugins/front_app.sh | 10 +
home/desktop/sketchybar/plugins/space.sh | 7 +
home/desktop/sketchybar/plugins/volume.sh | 20 ++
home/desktop/sketchybar/sketchybar.lua | 278 +++++++++++++++++++
home/desktop/sketchybar/sketchybarrc | 7 +
home/desktop/waybar/default.nix | 21 +-
home/neovim/molten.nix | 4 +-
home/packages.nix | 2 +-
home/shell.nix | 94 +++----
18 files changed, 515 insertions(+), 188 deletions(-)
delete mode 100644 home/desktop/sketchybar.nix
create mode 100644 home/desktop/sketchybar/default.nix
create mode 100755 home/desktop/sketchybar/plugins/battery.sh
create mode 100755 home/desktop/sketchybar/plugins/clock.sh
create mode 100755 home/desktop/sketchybar/plugins/front_app.sh
create mode 100755 home/desktop/sketchybar/plugins/space.sh
create mode 100755 home/desktop/sketchybar/plugins/volume.sh
create mode 100755 home/desktop/sketchybar/sketchybar.lua
create mode 100755 home/desktop/sketchybar/sketchybarrc
diff --git a/flake.nix b/flake.nix
index c8765a3..f6f5908 100644
--- a/flake.nix
+++ b/flake.nix
@@ -85,12 +85,16 @@
{
home-manager.extraSpecialArgs = {
inherit inputs primaryUser self;
+ isDarwin = false;
};
home-manager.users.${primaryUser} = import ./home;
}
inputs.sops-nix.nixosModules.sops
];
- specialArgs = { inherit inputs primaryUser self hostName; };
+ specialArgs = {
+ inherit inputs primaryUser self hostName;
+ isDarwin = false;
+ };
};
mkDarwin = hostName:
@@ -105,12 +109,16 @@
{
home-manager.extraSpecialArgs = {
inherit inputs primaryUser self;
+ isDarwin = true;
};
home-manager.users.${primaryUser} = import ./home;
}
inputs.sops-nix.darwinModules.sops
];
- specialArgs = { inherit inputs primaryUser self hostName; };
+ specialArgs = {
+ inherit inputs primaryUser self hostName;
+ isDarwin = true;
+ };
};
in {
nixosConfigurations."cyper-desktop" = mkNixos "cyper-desktop";
diff --git a/home/default.nix b/home/default.nix
index e3dc032..6b1b366 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -1,34 +1,20 @@
-{
- config,
- primaryUser,
- inputs,
- self,
- pkgs,
- lib,
- ...
-}:
-{
+{ config, primaryUser, inputs, self, lib, isDarwin, ... }: {
imports = [
-
./packages.nix
./git.nix
./shell.nix
-
+ ./xdg.nix
./neovim
./python.nix
-
./nixcord.nix
-
./spicetify.nix
-
./floorp.nix
./obsidian.nix
-
- ./desktop
- ./xdg.nix
inputs.sops-nix.homeManagerModules.sops
+ ] ++ lib.optionals (!isDarwin) [ ./desktop ] ++ lib.optionals isDarwin [
+ ./desktop/sketchybar
+ inputs.catppuccin.homeModules.catppuccin
];
-
nixpkgs.config.allowUnfree = true;
catppuccin = {
@@ -40,14 +26,14 @@
fzf.enable = true;
bat.enable = true;
- element-desktop = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ element-desktop = lib.mkIf (!isDarwin) {
enable = true;
accent = "green";
};
btop.enable = true;
- cava = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ cava = lib.mkIf (!isDarwin) {
enable = true;
transparent = true;
};
@@ -57,31 +43,31 @@
yazi.enable = true;
fish.enable = true;
- cursors = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ cursors = lib.mkIf (!isDarwin) {
enable = true;
accent = "sapphire";
};
- hyprland = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
+ hyprland = lib.mkIf (!isDarwin) { enable = true; };
- hyprlock = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ hyprlock = lib.mkIf (!isDarwin) {
enable = true;
useDefaultConfig = false;
};
- waybar = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ waybar = lib.mkIf (!isDarwin) {
enable = true;
mode = "createLink";
};
- mako.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
- mpv.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
- newsboat.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
- mangohud.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
+ mako.enable = lib.mkIf (!isDarwin) true;
+ mpv.enable = lib.mkIf (!isDarwin) true;
+ newsboat.enable = lib.mkIf (!isDarwin) true;
+ mangohud.enable = lib.mkIf (!isDarwin) true;
- gtk.icon.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
+ gtk.icon.enable = lib.mkIf (!isDarwin) true;
- kvantum = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
+ kvantum = lib.mkIf (!isDarwin) {
enable = true;
apply = true;
};
@@ -90,7 +76,7 @@
home = {
username = primaryUser;
stateVersion = "26.05";
- sessionVariables = lib.mkIf (!pkgs.stdenv.isDarwin) {
+ sessionVariables = lib.mkIf (!isDarwin) {
GROQ_API_KEY = config.sops.secrets.GROQ_API_KEY.path;
OPENWEATHER_API_KEY = config.sops.secrets.OPENWEATHER_API_KEY.path;
};
@@ -111,18 +97,19 @@
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 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 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 12a6125..69fad73 100644
--- a/home/desktop/default.nix
+++ b/home/desktop/default.nix
@@ -1,32 +1,24 @@
-{
- pkgs,
- inputs,
- lib,
- ...
-}:
-{
- imports = [
- inputs.catppuccin.homeModules.catppuccin
- ./hyprland
- ./rofi
- ./waybar
- ./gtk.nix
- ./qt.nix
- ./sketchybar.nix
- ];
+{ pkgs, inputs, lib, system, ... }:
+let isDarwin = builtins.match ".*-darwin" system != null;
+in {
+ imports = [ inputs.catppuccin.homeModules.catppuccin ]
+ ++ lib.optionals (!isDarwin) [
+ ./hyprland
+ ./rofi
+ ./waybar
+ ./gtk.nix
+ ./qt.nix
+ ] ++ lib.optionals isDarwin [ ./sketchybar.nix ];
- _module.args.compositor = if pkgs.stdenv.isDarwin then "quartz" else "hyprland";
+ _module.args.compositor = if isDarwin then "quartz" else "hyprland";
- home = lib.mkIf (!pkgs.stdenv.isDarwin) {
- packages = with pkgs; [
- waypaper
- awww
- ];
+ home = lib.mkIf (!isDarwin) {
+ packages = with pkgs; [ waypaper awww ];
file.".config/waypaper/config.ini".source = ./waypaper.ini;
};
# TODO: Qutebrowser install
- programs = lib.mkIf (!pkgs.stdenv.isDarwin) {
+ programs = lib.mkIf (!isDarwin) {
mangohud = {
enable = true;
settings = {
diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix
index a427864..15b91ca 100644
--- a/home/desktop/hyprland/default.nix
+++ b/home/desktop/hyprland/default.nix
@@ -1,23 +1,17 @@
-{ inputs, pkgs, ... }:
+{ inputs, pkgs, lib, ... }:
let
- package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
super = "SUPER";
terminal = "kitty";
fileManager = "yazi";
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 -theme $HOME/.config/rofi/power.rasi";
+ power =
+ "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi";
apps = "rofi -show window ${theme}";
-in
-{
+in lib.mkIf (!pkgs.stdenv.isDarwin) {
- imports = [
- ./hypridle.nix
- ./hyprlock.nix
- ./mako.nix
- ./portal.nix
- ];
+ imports = [ ./hypridle.nix ./hyprlock.nix ./mako.nix ./portal.nix ];
home.packages = with pkgs; [
catppuccin-cursors.mochaDark
@@ -29,12 +23,12 @@ in
playerctl
];
- systemd.user.targets.hyprland-session.Unit.Wants = [
- "xdg-desktop-autostart.target"
- ];
+ systemd.user.targets.hyprland-session.Unit.Wants =
+ [ "xdg-desktop-autostart.target" ];
wayland.windowManager.hyprland = {
- inherit package;
+ package =
+ inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
enable = true;
xwayland.enable = true;
@@ -45,10 +39,12 @@ in
enableXdgAutostart = false;
};
- plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
- #hyprbars
- # hyprexpo
- ];
+ plugins =
+ with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system};
+ [
+ #hyprbars
+ # hyprexpo
+ ];
settings = {
env = [
@@ -69,10 +65,8 @@ in
"XCURSOR_SIZE,24"
];
- monitor = [
- "DP-1, 1920x1080@60, 1920x0, 1"
- "HDMI-A-2, 1920x1080@60, 0x0, 1"
- ];
+ monitor =
+ [ "DP-1, 1920x1080@60, 1920x0, 1" "HDMI-A-2, 1920x1080@60, 0x0, 1" ];
input = {
kb_layout = "de";
@@ -126,7 +120,7 @@ in
size = 1;
passes = 3;
new_optimizations = 1;
- noise = 0.04;
+ noise = 4.0e-2;
};
};
@@ -195,10 +189,7 @@ in
# "noblur, class:^(org\\.gnome\\.|io\\.github\\.|org\\.gtk\\.)"
# ];
- exec-once = [
- "awww-daemon & disown"
- "waybar &"
- ];
+ exec-once = [ "awww-daemon & disown" "waybar &" ];
# Keybindings
bind = [
@@ -270,7 +261,8 @@ in
"${super}, mouse_up, workspace, e-1"
# Screenshot
- ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')''
+ ''
+ ${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')''
"${super}, U, exec, grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')"
];
diff --git a/home/desktop/rofi/default.nix b/home/desktop/rofi/default.nix
index b69adda..a3b80dd 100644
--- a/home/desktop/rofi/default.nix
+++ b/home/desktop/rofi/default.nix
@@ -1,31 +1,21 @@
-{
- pkgs,
- ...
-}:
-{
+{ pkgs, lib, ... }: {
+ home.packages =
+ lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ rofi-power-menu rofi-calc ]);
- home.packages = with pkgs; [
- rofi-power-menu
- rofi-calc
- ];
-
- programs.rofi = {
+ programs.rofi = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
cycle = true;
package = pkgs.rofi;
font = "FiraCode Nerd Font Mono 12";
-
location = "center";
terminal = "${pkgs.kitty}/bin/kitty";
-
};
- home.file = {
+ home.file = lib.mkIf (!pkgs.stdenv.isDarwin) {
".config/rofi/background.png".source = ./background.png;
".config/rofi/custom.rasi".source = ./custom.rasi;
".config/rofi/power.jpg".source = ./power.jpg;
".config/rofi/power.rasi".source = ./power.rasi;
".config/rofi/smoking_girl.png".source = ./smoking_girl.png;
};
-
}
diff --git a/home/desktop/sketchybar.nix b/home/desktop/sketchybar.nix
deleted file mode 100644
index f632114..0000000
--- a/home/desktop/sketchybar.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ pkgs, lib, ... }:
-{
- programs.sketchybar = lib.mkIf pkgs.stdenv.isDarwin {
- enable = true;
- configType = "lua";
- sbarLuaPackage = pkgs.sbarlua;
- };
-}
diff --git a/home/desktop/sketchybar/default.nix b/home/desktop/sketchybar/default.nix
new file mode 100644
index 0000000..d6bfd60
--- /dev/null
+++ b/home/desktop/sketchybar/default.nix
@@ -0,0 +1,32 @@
+{ pkgs, lib, isDarwin, ... }: {
+ programs.sketchybar = lib.mkIf isDarwin {
+ enable = true;
+ configType = "lua";
+ sbarLuaPackage = pkgs.sbarlua;
+ };
+
+ home.file = lib.mkIf isDarwin {
+ ".config/sketchybar/sketchybar.lua".source = ./sketchybar.lua;
+ ".config/sketchybar/sketchybarrc".source = ./sketchybarrc;
+ ".config/sketchybar/plugins/battery.sh" = {
+ source = ./plugins/battery.sh;
+ executable = true;
+ };
+ ".config/sketchybar/plugins/clock.sh" = {
+ source = ./plugins/clock.sh;
+ executable = true;
+ };
+ ".config/sketchybar/plugins/front_app.sh" = {
+ source = ./plugins/front_app.sh;
+ executable = true;
+ };
+ ".config/sketchybar/plugins/space.sh" = {
+ source = ./plugins/space.sh;
+ executable = true;
+ };
+ ".config/sketchybar/plugins/volume.sh" = {
+ source = ./plugins/volume.sh;
+ executable = true;
+ };
+ };
+}
diff --git a/home/desktop/sketchybar/plugins/battery.sh b/home/desktop/sketchybar/plugins/battery.sh
new file mode 100755
index 0000000..440d2d8
--- /dev/null
+++ b/home/desktop/sketchybar/plugins/battery.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+PERCENTAGE="$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)"
+CHARGING="$(pmset -g batt | grep 'AC Power')"
+
+if [ "$PERCENTAGE" = "" ]; then
+ exit 0
+fi
+
+case "${PERCENTAGE}" in
+ 9[0-9]|100) ICON=" "
+ ;;
+ [6-8][0-9]) ICON=" "
+ ;;
+ [3-5][0-9]) ICON=" "
+ ;;
+ [1-2][0-9]) ICON=" "
+ ;;
+ *) ICON=" "
+esac
+
+if [[ "$CHARGING" != "" ]]; then
+ ICON=""
+fi
+
+# The item invoking this script (name $NAME) will get its icon and label
+# updated with the current battery status
+sketchybar --set "$NAME" icon="$ICON" label="${PERCENTAGE}%"
diff --git a/home/desktop/sketchybar/plugins/clock.sh b/home/desktop/sketchybar/plugins/clock.sh
new file mode 100755
index 0000000..b5612f5
--- /dev/null
+++ b/home/desktop/sketchybar/plugins/clock.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# The $NAME variable is passed from sketchybar and holds the name of
+# the item invoking this script:
+# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
+
+sketchybar --set "$NAME" label="$(date '+%a %d %b %H:%M:%S')"
diff --git a/home/desktop/sketchybar/plugins/front_app.sh b/home/desktop/sketchybar/plugins/front_app.sh
new file mode 100755
index 0000000..fb6d0b3
--- /dev/null
+++ b/home/desktop/sketchybar/plugins/front_app.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Some events send additional information specific to the event in the $INFO
+# variable. E.g. the front_app_switched event sends the name of the newly
+# focused application in the $INFO variable:
+# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
+
+if [ "$SENDER" = "front_app_switched" ]; then
+ sketchybar --set "$NAME" label="$INFO"
+fi
diff --git a/home/desktop/sketchybar/plugins/space.sh b/home/desktop/sketchybar/plugins/space.sh
new file mode 100755
index 0000000..f2ab768
--- /dev/null
+++ b/home/desktop/sketchybar/plugins/space.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# The $SELECTED variable is available for space components and indicates if
+# the space invoking this script (with name: $NAME) is currently selected:
+# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
+
+sketchybar --set "$NAME" icon.highlight="$SELECTED"
diff --git a/home/desktop/sketchybar/plugins/volume.sh b/home/desktop/sketchybar/plugins/volume.sh
new file mode 100755
index 0000000..6e69a5d
--- /dev/null
+++ b/home/desktop/sketchybar/plugins/volume.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# The volume_change event supplies a $INFO variable in which the current volume
+# percentage is passed to the script.
+
+if [ "$SENDER" = "volume_change" ]; then
+ VOLUME="$INFO"
+
+ case "$VOLUME" in
+ [6-9][0-9]|100) ICON=""
+ ;;
+ [3-5][0-9]) ICON=""
+ ;;
+ [1-9]|[1-2][0-9]) ICON=""
+ ;;
+ *) ICON=""
+ esac
+
+ sketchybar --set "$NAME" icon="$ICON" label="$VOLUME%"
+fi
diff --git a/home/desktop/sketchybar/sketchybar.lua b/home/desktop/sketchybar/sketchybar.lua
new file mode 100755
index 0000000..9b31860
--- /dev/null
+++ b/home/desktop/sketchybar/sketchybar.lua
@@ -0,0 +1,278 @@
+-- Main configuration file: sketchybar.lua
+-- Save this in ~/.config/sketchybar/
+
+-- SketchyBar Lua API
+sbar = require("sketchybar")
+
+-- Colors (Catppuccin Mocha theme)
+local colors = {
+ text = 0xffcdd6f4,
+ bg = 0xff1e1e2e,
+ accent = 0xff74c7ec,
+ green = 0xffa6e3a1,
+ rosewater = 0xfff5e0dc,
+ flamingo = 0xfff2cdcd,
+ pink = 0xfff5c2e7,
+ mauve = 0xffcba6f7,
+ red = 0xfff38ba8,
+ maroon = 0xffeba0ac,
+ peach = 0xfffab387,
+ yellow = 0xfff9e2af,
+ teal = 0xff94e2d5,
+ sky = 0xff89dceb,
+ sapphire = 0xff74c7ec,
+ blue = 0xff89b4fa,
+ lavender = 0xffb4befe,
+ subtext1 = 0xffbac2de,
+ subtext0 = 0xffa6adc8,
+ overlay2 = 0xff9399b2,
+ overlay1 = 0xff7f849c,
+ overlay0 = 0xff6c7086,
+ surface2 = 0xff585b70,
+ surface1 = 0xff45475a,
+ surface0 = 0xff313244,
+ base = 0xff1e1e2e,
+ mantle = 0xff181825,
+ crust = 0xff11111b,
+}
+
+-- Default styles
+sbar.default({
+ icon = {
+ color = colors.text,
+ font = "Hack Nerd Font:Bold:14.0",
+ padding_right = 4,
+ },
+ label = {
+ color = colors.text,
+ font = "Hack Nerd Font:Bold:14.0",
+ },
+ padding_right = 20,
+ popup = {
+ background = {
+ border_width = 2,
+ corner_radius = 9,
+ border_color = colors.accent,
+ color = colors.bg,
+ padding_right = 12,
+ },
+ },
+})
+
+-- Bar configuration
+sbar.bar({
+ height = 32,
+ position = "top",
+ y_offset = 6,
+ padding_left = 12,
+ padding_right = 12,
+ margin = 12,
+ color = colors.bg,
+ border_color = colors.accent,
+ border_width = 2,
+ corner_radius = 60,
+})
+
+-- Apple logo menu
+local apple_logo = sbar.add("item", "apple.logo", {
+ icon = {
+ string = " ",
+ padding_left = 6,
+ font = "Hack Nerd Font:Bold:20.0",
+ },
+ label = { drawing = false },
+ padding_left = 0,
+ click_script = "sketchybar -m --set $NAME popup.drawing=toggle",
+ popup = {
+ y_offset = 8,
+ },
+})
+
+sbar.add("item", "apple.about", {
+ position = "popup.apple.logo",
+ icon = " ",
+ label = "About",
+ click_script = 'osascript -e \'tell application "System Events" to tell process "Finder" to click menu item "About This Mac" of menu 1 of menu bar item "Apple" of menu bar 1\'; sketchybar -m --set apple.logo popup.drawing=off',
+ padding_left = 8,
+ padding_right = 8,
+})
+
+sbar.add("item", "apple.preferences", {
+ position = "popup.apple.logo",
+ icon = " ",
+ label = "Preferences",
+ click_script = "open -a 'System Preferences'; sketchybar -m --set apple.logo popup.drawing=off",
+ padding_left = 8,
+ padding_right = 8,
+})
+
+sbar.add("item", "apple.activity", {
+ position = "popup.apple.logo",
+ icon = " ",
+ label = "Activity",
+ click_script = "open -a 'Activity Monitor'; sketchybar -m --set apple.logo popup.drawing=off",
+ padding_left = 8,
+ padding_right = 8,
+})
+
+sbar.add("item", "apple.lock", {
+ position = "popup.apple.logo",
+ icon = " ",
+ label = "Lock Screen",
+ click_script = "pmset displaysleepnow; sketchybar -m --set apple.logo popup.drawing=off",
+ padding_left = 8,
+ padding_right = 8,
+})
+
+-- Spaces
+local space_icons = { " ", " ", " ", " ", " ", " ", "7", "8", "9", "10" }
+for i = 1, #space_icons do
+ local space = sbar.add("space", "space." .. i, {
+ space = i,
+ icon = {
+ string = space_icons[i],
+ padding_left = 2,
+ padding_right = 2,
+ highlight_color = colors.green,
+ },
+ label = { drawing = false },
+ padding_right = 4,
+ script = "$CONFIG_DIR/plugins/space.lua",
+ click_script = "yabai -m space --focus " .. i,
+ })
+
+ space:subscribe("space_change", function(env)
+ local selected = env.SELECTED == "true"
+ sbar.set(env.NAME, { icon = { highlight = selected } })
+ end)
+end
+
+-- Front app
+local front_app = sbar.add("item", "front_app", {
+ position = "center",
+ icon = " ",
+ script = "$CONFIG_DIR/plugins/front_app.lua",
+})
+
+front_app:subscribe("front_app_switched", function(env)
+ sbar.set(env.NAME, { label = env.INFO })
+end)
+
+-- Clock
+local clock = sbar.add("item", "clock", {
+ position = "right",
+ icon = " ",
+ padding_right = 0,
+ update_freq = 1,
+ script = "$CONFIG_DIR/plugins/clock.lua",
+})
+
+clock:subscribe("routine", function()
+ sbar.exec("date '+%a %d %b %H:%M:%S'", function(date)
+ sbar.set("clock", { label = date })
+ end)
+end)
+
+-- Battery
+local battery = sbar.add("item", "battery", {
+ position = "right",
+ update_freq = 1,
+ script = "$CONFIG_DIR/plugins/battery.lua",
+})
+
+battery:subscribe({ "routine", "system_woke", "power_source_change" }, function()
+ sbar.exec("pmset -g batt", function(batt_info)
+ local percentage = batt_info:match("(%d+)%%")
+ local charging = batt_info:match("AC Power") ~= nil
+
+ if not percentage then
+ return
+ end
+
+ local icon = " "
+ local pct = tonumber(percentage)
+
+ if pct >= 90 then
+ icon = " "
+ elseif pct >= 60 then
+ icon = " "
+ elseif pct >= 30 then
+ icon = " "
+ elseif pct >= 10 then
+ icon = " "
+ else
+ icon = " "
+ end
+
+ if charging then
+ icon = ""
+ end
+
+ sbar.set("battery", {
+ icon = icon,
+ label = percentage .. "%",
+ })
+ end)
+end)
+
+-- Volume
+local volume = sbar.add("item", "volume", {
+ position = "right",
+ script = "$CONFIG_DIR/plugins/volume.lua",
+})
+
+volume:subscribe("volume_change", function(env)
+ local vol = tonumber(env.INFO)
+ local icon = ""
+
+ if vol >= 60 then
+ icon = ""
+ elseif vol >= 30 then
+ icon = ""
+ elseif vol >= 1 then
+ icon = ""
+ end
+
+ sbar.set(env.NAME, {
+ icon = icon,
+ label = vol .. "%",
+ })
+end)
+
+-- WiFi
+local wifi = sbar.add("item", "wifi", {
+ position = "right",
+ update_freq = 10,
+})
+
+wifi:subscribe("routine", function()
+ -- Check if WiFi is active
+ sbar.exec("ifconfig en0 | grep 'status: active'", function(status)
+ local icon = " " -- Off
+
+ if status and status ~= "" then
+ -- WiFi is active, check if connected to network
+ sbar.exec("ifconfig en0 | grep 'inet '", function(inet)
+ if inet and inet ~= "" then
+ icon = " " -- Connected
+ else
+ icon = " " -- Disconnected
+ end
+ sbar.set("wifi", {
+ icon = icon,
+ label = "",
+ })
+ end)
+ else
+ -- WiFi is off
+ sbar.set("wifi", {
+ icon = icon,
+ label = "",
+ })
+ end
+ end)
+end)
+
+-- Run the bar
+sbar.hotload(true)
+sbar.update()
diff --git a/home/desktop/sketchybar/sketchybarrc b/home/desktop/sketchybar/sketchybarrc
new file mode 100755
index 0000000..d64ec0c
--- /dev/null
+++ b/home/desktop/sketchybar/sketchybarrc
@@ -0,0 +1,7 @@
+#!/usr/bin/env lua
+
+-- Load the sketchybar lua module
+package.cpath = package.cpath .. ";/Users/" .. os.getenv("USER") .. "/.local/share/sketchybar_lua/?.so"
+
+-- Load your main config
+dofile(os.getenv("HOME") .. "/.config/sketchybar/sketchybar.lua")
diff --git a/home/desktop/waybar/default.nix b/home/desktop/waybar/default.nix
index abb663d..cef685f 100644
--- a/home/desktop/waybar/default.nix
+++ b/home/desktop/waybar/default.nix
@@ -1,18 +1,13 @@
-{
- pkgs,
- compositor ? "hyprland",
- ...
-}:
-{
-
- programs.waybar = {
+{ pkgs, lib, compositor ? "hyprland", ... }: {
+ programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) ({
enable = true;
package = pkgs.waybar;
- }
- // (import ./dual.nix { inherit compositor; });
- home = {
- packages = with pkgs; [ cava ];
- file.".config/waybar" = {
+ } // (import ./dual.nix { inherit compositor; }));
+
+ home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ cava ]);
+
+ home.file = lib.mkIf (!pkgs.stdenv.isDarwin) {
+ ".config/waybar" = {
source = ./configs;
recursive = true;
};
diff --git a/home/neovim/molten.nix b/home/neovim/molten.nix
index 6b816ff..0636bab 100644
--- a/home/neovim/molten.nix
+++ b/home/neovim/molten.nix
@@ -1,5 +1,5 @@
-{ pkgs, ... }: {
- programs.nixvim = {
+{ isDarwin, lib, ... }: {
+ programs.nixvim = lib.mkIf (!isDarwin) {
plugins.molten = {
enable = true;
python3Dependencies = p:
diff --git a/home/packages.nix b/home/packages.nix
index 5ebbd2a..b4a17ef 100644
--- a/home/packages.nix
+++ b/home/packages.nix
@@ -13,7 +13,6 @@
# GUI
openscad
- blender
fstl
# PDF Tools
@@ -60,6 +59,7 @@
thunderbird
xonotic
irssi
+ blender
] ++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ];
};
}
diff --git a/home/shell.nix b/home/shell.nix
index 0b8f8e9..8e70d85 100644
--- a/home/shell.nix
+++ b/home/shell.nix
@@ -1,5 +1,4 @@
-{ pkgs, ... }:
-{
+{ pkgs, ... }: {
home.packages = with pkgs; [
eza # ls replacement
tdf # terminal pdf viewer
@@ -41,32 +40,31 @@
tab_bar_min_tabs = 1;
tab_bar_edge = "bottom";
tab_bar_style = "custom"; # Should be changed to custom
- tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}";
+ tab_title_template =
+ "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}";
- symbol_map =
- let
- mappings = [
- "U+23FB-U+23FE"
- "U+2B58"
- "U+E200-U+E2A9"
- "U+E0A0-U+E0A3"
- "U+E0B0-U+E0BF"
- "U+E0C0-U+E0C8"
- "U+E0CC-U+E0CF"
- "U+E0D0-U+E0D2"
- "U+E0D4"
- "U+E700-U+E7C5"
- "U+F000-U+F2E0"
- "U+2665"
- "U+26A1"
- "U+F400-U+F4A8"
- "U+F67C"
- "U+E000-U+E00A"
- "U+F300-U+F313"
- "U+E5FA-U+E62B"
- ];
- in
- (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono";
+ symbol_map = let
+ mappings = [
+ "U+23FB-U+23FE"
+ "U+2B58"
+ "U+E200-U+E2A9"
+ "U+E0A0-U+E0A3"
+ "U+E0B0-U+E0BF"
+ "U+E0C0-U+E0C8"
+ "U+E0CC-U+E0CF"
+ "U+E0D0-U+E0D2"
+ "U+E0D4"
+ "U+E700-U+E7C5"
+ "U+F000-U+F2E0"
+ "U+2665"
+ "U+26A1"
+ "U+F400-U+F4A8"
+ "U+F67C"
+ "U+E000-U+E00A"
+ "U+F300-U+F313"
+ "U+E5FA-U+E62B"
+ ];
+ in (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono";
};
};
@@ -77,24 +75,15 @@
urls = [
{
url = "https://www.tagesschau.de/xml/rss2";
- tags = [
- "news"
- "de"
- ];
+ tags = [ "news" "de" ];
}
{
url = "https://www.spiegel.de/schlagzeilen/index.rss";
- tags = [
- "news"
- "de"
- ];
+ tags = [ "news" "de" ];
}
{
url = "https://www.focus.de/rss";
- tags = [
- "news"
- "de"
- ];
+ tags = [ "news" "de" ];
}
{
url = "https://feeds.feedburner.com/blogspot/rkEL";
@@ -103,9 +92,7 @@
];
};
- programs.cava = {
- enable = true;
- };
+ programs.cava = { enable = true; };
programs.yazi = {
enable = true;
@@ -113,13 +100,7 @@
enableZshIntegration = true;
enableFishIntegration = true;
- settings = {
- ration = [
- 1
- 3
- 4
- ];
- };
+ settings = { ration = [ 1 3 4 ]; };
};
programs.fzf = {
@@ -128,7 +109,8 @@
enableZshIntegration = true;
enableFishIntegration = true;
defaultCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
- fileWidgetCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
+ fileWidgetCommand =
+ "fd --type f --strip-cwd-prefix --hidden --exclude .git";
defaultOptions = [
"--height 100%"
"--border sharp"
@@ -189,11 +171,10 @@
cat = "bat --color=always --style=numbers";
grep = "rg";
cp = "rsync -ah --progress";
- nix-switch =
- if pkgs.stdenv.isDarwin then
- "darwin-rebuild switch --flake ~/.config/nix#(hostname -s)"
- else
- "sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s)";
+ nix-switch = if pkgs.stdenv.isDarwin then
+ "sudo darwin-rebuild switch --flake ~/.config/nix#(hostname -s)"
+ else
+ "sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s)";
};
interactiveShellInit = ''
@@ -249,7 +230,8 @@
# Git status module settings
git_status = {
- format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
+ format =
+ "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
style = "bold #a6e3a1";
conflicted = "";
untracked = "";