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 = "";