This commit is contained in:
Harald Hoyer 2024-01-11 10:26:46 +00:00
parent 66c05f9093
commit 44067d35ff
205 changed files with 9037 additions and 338 deletions

View file

@ -0,0 +1,23 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.desktop.addons.firefox-nordic-theme;
profileDir = ".mozilla/firefox/${config.plusultra.user.name}";
in
{
options.plusultra.desktop.addons.firefox-nordic-theme = with types; {
enable = mkBoolOpt false "Whether to enable the Nordic theme for firefox.";
};
config = mkIf cfg.enable {
plusultra.apps.firefox = {
extraConfig = builtins.readFile
"${pkgs.plusultra.firefox-nordic-theme}/configuration/user.js";
userChrome = ''
@import "${pkgs.plusultra.firefox-nordic-theme}/userChrome.css";
'';
};
};
}

View file

@ -0,0 +1,109 @@
{ lib, pkgs, config, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.desktop.addons.skhd;
mkScript = name: file: pkgs.writeShellApplication {
inherit name;
checkPhase = "";
text = builtins.readFile file;
};
open-iterm2 = mkScript "open-iterm2" ./scripts/open-iterm2.sh;
in
{
options.plusultra.desktop.addons.skhd = {
enable = mkEnableOption "skhd";
};
config = mkIf cfg.enable {
services.skhd = {
enable = true;
skhdConfig = ''
# Movement
shift + cmd - h : yabai -m window --focus west
shift + cmd - j : yabai -m window --focus south
shift + cmd - k : yabai -m window --focus north
shift + cmd - l : yabai -m window --focus east
# Window Movement
lctrl + shift + cmd - h : yabai -m window --swap west
lctrl + shift + cmd - j : yabai -m window --swap south
lctrl + shift + cmd - k : yabai -m window --swap north
lctrl + shift + cmd - l : yabai -m window --swap east
# Window Resize
lctrl + cmd - h : yabai -m window --resize left:-50:0; \
yabai -m window --resize right:-50:0
lctrl + cmd - j : yabai -m window --resize bottom:0:50; \
yabai -m window --resize top:0:50
lctrl + cmd - k : yabai -m window --resize top:0:-50; \
yabai -m window --resize bottom:0:-50
lctrl + cmd - l : yabai -m window --resize right:50:0; \
yabai -m window --resize left:50:0
lctrl + alt - h : yabai -m window --resize left:-10:0; \
yabai -m window --resize right:-10:0
lctrl + alt - j : yabai -m window --resize bottom:0:10; \
yabai -m window --resize top:0:10
lctrl + alt - k : yabai -m window --resize top:0:-10; \
yabai -m window --resize bottom:0:-10
lctrl + alt - l : yabai -m window --resize right:10:0; \
yabai -m window --resize left:10:0
lctrl + cmd - e : yabai -m space --balance
# Move Window To Space
lctrl + shift + cmd - m : yabai -m window --space last; yabai -m space --focus last
lctrl + shift + cmd - p : yabai -m window --space prev; yabai -m space --focus prev
lctrl + shift + cmd - n : yabai -m window --space next; yabai -m space --focus next
lctrl + shift + cmd - 1 : yabai -m window --space 1; yabai -m space --focus 1
lctrl + shift + cmd - 2 : yabai -m window --space 2; yabai -m space --focus 2
lctrl + shift + cmd - 3 : yabai -m window --space 3; yabai -m space --focus 3
lctrl + shift + cmd - 4 : yabai -m window --space 4; yabai -m space --focus 4
# Focus Space
# shift + cmd - m : yabai -m space --focus last
# shift + cmd - p : yabai -m space --focus prev
# shift + cmd - n : yabai -m space --focus next
shift + cmd - 1 : yabai -m space --focus 1
shift + cmd - 2 : yabai -m space --focus 2
shift + cmd - 3 : yabai -m space --focus 3
shift + cmd - 4 : yabai -m space --focus 4
# Insert Direction
lctrl + shift + cmd - v : yabai -m window --insert south
lctrl + shift + cmd - b : yabai -m window --insert east
lctrl + shift + cmd - s : yabai -m window --insert stack
# Floating Windows
# shift + cmd - space : \
# yabai -m window --toggle float; \
# yabai -m window --toggle border
shift + cmd - space : yabai -m window --toggle float
# Terminal
shift + cmd - return : ${open-iterm2}/bin/open-iterm2
# Fullscreen
alt - f : yabai -m window --toggle zoom-fullscreen
shift + alt - f : yabai -m window --toggle native-fullscreen
# Restart Yabai
shift + lctrl + alt - r : \
/usr/bin/env osascript <<< \
"display notification \"Restarting Yabai\" with title \"Yabai\""; \
launchctl kickstart -k "gui/$UID/org.nixos.yabai"
# Restart Spacebar
shift + lctrl + alt - s : \
/usr/bin/env osascript <<< \
"display notification \"Restarting Spacebar\" with title \"Spacebar\""; \
launchctl kickstart -k "gui/$UID/org.nixos.spacebar"
'';
};
};
}

View file

@ -0,0 +1,14 @@
# Detects if iTerm2 is running
if ! pgrep -f "iTerm" > /dev/null 2>&1; then
open -a "/Applications/Nix Apps/iTerm2.app"
else
# Create a new window
script='tell application "iTerm2" to create window with default profile'
! osascript -e "${script}" > /dev/null 2>&1 && {
# Get pids for any app with "iTerm" and kill
while IFS="" read -r pid; do
kill -15 "${pid}"
done < <(pgrep -f "iTerm")
open -a "/Applications/Nix Apps/iTerm2.app"
}
fi

View file

@ -0,0 +1,47 @@
{ lib, pkgs, config, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.desktop.addons.spacebar;
in
{
options.plusultra.desktop.addons.spacebar = {
enable = mkEnableOption "Spacebar";
};
config = mkIf cfg.enable {
services.spacebar = {
enable = true;
package = pkgs.spacebar;
config = {
position = "top";
display = "all";
height = 32;
title = "on";
spaces = "on";
clock = "on";
power = "off";
padding_left = 10;
padding_right = 10;
spacing_left = 10;
spacing_right = 10;
foreground_color = "0xffeceff4";
background_color = "0xff1d2128";
text_font = ''"Hack Nerd Font Mono:Regular:14.0"'';
icon_font = ''"Hack Nerd Font Mono:Regular:20.0"'';
# Shell entries apparently break the whole bar...
# https://github.com/cmacrae/spacebar/issues/104
# right_shell_icon = "";
# right_shell_command = ''"whoami"'';
# right_shell = "on";
};
};
};
}

View file

@ -0,0 +1,77 @@
{ lib
, pkgs
, config
, ...
}:
let
cfg = config.plusultra.desktop.yabai;
inherit (lib) types mkEnableOption mkIf;
inherit (lib.plusultra) mkOpt enabled;
in
{
options.plusultra.desktop.yabai = {
enable = mkEnableOption "Yabai";
enable-scripting-addition = mkOpt types.bool true "Whether to enable the scripting addition for Yabai. (Requires SIP to be disabled)";
};
config = mkIf cfg.enable {
plusultra.desktop.addons = {
skhd = enabled;
spacebar = enabled;
};
services.yabai = {
enable = true;
enableScriptingAddition = cfg.enable-scripting-addition;
config = {
layout = "bsp";
auto_balance = "off";
debug_output = "on";
top_padding = 8;
right_padding = 8;
left_padding = 8;
bottom_padding = 8;
window_gap = 6;
window_topmost = "on";
window_shadow = "float";
# As of macOS Sonoma, window borders break Yabai and cause a bunch of lag.
window_border = "off";
# window_border = "on";
# window_border_width = 5;
# window_border_radius = 14;
# window_border_blur = "off";
# window_border_hidpi = "on";
# insert_feedback_color = "0xffb48ead";
# normal_window_border_color = "0x002e3440";
# active_window_border_color = "0xff5e81ac";
external_bar = "all:${builtins.toString config.services.spacebar.config.height}:0";
# mouse_modifier = "alt";
mouse_modifier = "cmd";
mouse_action1 = "move";
mouse_action2 = "resize";
};
extraConfig = ''
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off
yabai -m rule --add label="App Store" app="^App Store$" manage=off
yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off
yabai -m rule --add label="Calculator" app="^Calculator$" manage=off
yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off
yabai -m rule --add label="mpv" app="^mpv$" manage=off
yabai -m rule --add label="Software Update" title="Software Update" manage=off
yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off
'';
};
};
}