diff --git a/flake.lock b/flake.lock index 3d23032..5de3a73 100644 --- a/flake.lock +++ b/flake.lock @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1717316182, - "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=", + "lastModified": 1717525419, + "narHash": "sha256-5z2422pzWnPXHgq2ms8lcCfttM0dz+hg+x1pCcNkAws=", "owner": "nix-community", "repo": "home-manager", - "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af", + "rev": "a7117efb3725e6197dd95424136f79147aa35e5b", "type": "github" }, "original": { @@ -264,11 +264,11 @@ ] }, "locked": { - "lastModified": 1717436515, - "narHash": "sha256-pIBO+eSRLeaWKINbhVJ04vPYZRzkwe5hRLzpWVjgcmo=", + "lastModified": 1717529594, + "narHash": "sha256-dFQvNdceeclgUwE2iLHZUpWnSp+D3ywrCtarHYaw2Yw=", "owner": "grafana", "repo": "loki", - "rev": "47f0236ea8f33a67a0a1abf6e6d6b3582661c4ba", + "rev": "8be8364435bb83dd134580ba6fc1f0bdb5474356", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1717427132, - "narHash": "sha256-wfywzgALSyKTfn/1fbHeSMg1QK9YHO/zMnVzNBN49uA=", + "lastModified": 1717516428, + "narHash": "sha256-66DUWcQhBv6q4wyw7TxU9EUzslivh/NebMDnSsomgAs=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "5d7499a492d5c41e943c7521b7d95d561cf1f606", + "rev": "5bedc36baf6a9f3c5534d8bab8378185d9622e45", "type": "github" }, "original": { @@ -325,11 +325,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1717364286, - "narHash": "sha256-+Oc54rm7Rx6XQJ1+fz3BF/8srzYCQLc+d24ad+HMVnU=", + "lastModified": 1717452440, + "narHash": "sha256-W1h9wu7Sd5uVZVnpfY84/iEJs1vZUScxKLWE/LaYuYA=", "owner": "neovim", "repo": "neovim", - "rev": "3a1515bfee59710b4da9bfdf0fc4ecb5b13a00db", + "rev": "e20c5fba2c77b7e7ea93363abc987d913e5f9f58", "type": "github" }, "original": { @@ -555,11 +555,11 @@ }, "unstable": { "locked": { - "lastModified": 1717444812, - "narHash": "sha256-4M7ZMqKn9bDKG4m1tdVDYLTvD3IXvqam5oOIQ/V/R8w=", + "lastModified": 1717538961, + "narHash": "sha256-IqIAhq8Pz0sKjb9mRZrHCyGIStRZ0eQzWlp7WA/Yrf0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "23eb799048bbcef423f5a93a2864c0987cd2368e", + "rev": "1f3cfae3d51c84c7dc7a56b644b162f22568665a", "type": "github" }, "original": { diff --git a/modules/sketchybar/default.nix b/modules/sketchybar/default.nix new file mode 100644 index 0000000..e33c5a3 --- /dev/null +++ b/modules/sketchybar/default.nix @@ -0,0 +1,19 @@ +{ pkgs +, ... +}: + +with pkgs; +{ + environment.systemPackages = [ + sketchybar + sketchybar-app-font + ]; + services.sketchybar = { + enable = true; + config = '' + sketchybar --bar height=36 + sketchybar --update + echo "sketchybar configuration loaded.." + ''; + }; +} diff --git a/modules/sketchybar/sketchybarrc b/modules/sketchybar/sketchybarrc new file mode 100644 index 0000000..d1917f7 --- /dev/null +++ b/modules/sketchybar/sketchybarrc @@ -0,0 +1,93 @@ +#!/usr/bin/env zsh + +# This is a demo config to showcase some of the most important commands. +# It is meant to be changed and configured, as it is intentionally kept sparse. +# For a (much) more advanced configuration example see my dotfiles: +# https://github.com/FelixKratz/dotfiles + +PLUGIN_DIR="$CONFIG_DIR/plugins" + +##### Bar Appearance ##### +# Configuring the general appearance of the bar. +# These are only some of the options available. For all options see: +# https://felixkratz.github.io/SketchyBar/config/bar +# If you are looking for other colors, see the color picker: +# https://felixkratz.github.io/SketchyBar/config/tricks#color-picker + +sketchybar --bar position=top height=40 blur_radius=30 color=0x40000000 + +##### Changing Defaults ##### +# We now change some default values, which are applied to all further items. +# For a full list of all available item properties see: +# https://felixkratz.github.io/SketchyBar/config/items + +default=( + padding_left=5 + padding_right=5 + icon.font="JetBrainsMono Nerd Font:Bold:17.0" + label.font="JetBrainsMono Nerd Font:14.0" + icon.color=0xffffffff + label.color=0xffffffff + icon.padding_left=4 + icon.padding_right=4 + label.padding_left=4 + label.padding_right=4 +) +sketchybar --default "${default[@]}" + +##### Adding Mission Control Space Indicators ##### +# Let's add some mission control spaces: +# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item +# to indicate active and available mission control spaces. + +SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10") +for i in "${!SPACE_ICONS[@]}" +do + sid="$(($i+1))" + space=( + space="$sid" + icon="${SPACE_ICONS[i]}" + icon.padding_left=7 + icon.padding_right=7 + background.color=0x40ffffff + background.corner_radius=5 + background.height=25 + label.drawing=off + script="$PLUGIN_DIR/space.sh" + click_script="yabai -m space --focus $sid" + ) + sketchybar --add space space."$sid" left --set space."$sid" "${space[@]}" +done + +##### Adding Left Items ##### +# We add some regular items to the left side of the bar, where +# only the properties deviating from the current defaults need to be set + +sketchybar --add item chevron left \ + --set chevron icon= label.drawing=off \ + --add item front_app left \ + --set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \ + --subscribe front_app front_app_switched + +##### Adding Right Items ##### +# In the same way as the left items we can add items to the right side. +# Additional position (e.g. center) are available, see: +# https://felixkratz.github.io/SketchyBar/config/items#adding-items-to-sketchybar + +# Some items refresh on a fixed cycle, e.g. the clock runs its script once +# every 10s. Other items respond to events they subscribe to, e.g. the +# volume.sh script is only executed once an actual change in system audio +# volume is registered. More info about the event system can be found here: +# https://felixkratz.github.io/SketchyBar/config/events + +sketchybar --add item clock right \ + --set clock update_freq=10 icon= script="$PLUGIN_DIR/clock.sh" \ + --add item volume right \ + --set volume script="$PLUGIN_DIR/volume.sh" \ + --subscribe volume volume_change \ + --add item battery right \ + --set battery update_freq=120 script="$PLUGIN_DIR/battery.sh" \ + --subscribe battery system_woke power_source_change + +##### Force all scripts to run the first time (never do this in a script) ##### +sketchybar --update