89 lines
2.3 KiB
Nix
89 lines
2.3 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
dots,
|
|
home-dir,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.custom.gui.sketchybar;
|
|
sketchybar = lib.getExe pkgs.sketchybar;
|
|
lua = pkgs.lua5_4.withPackages (
|
|
ps: with ps; [
|
|
pkgs.custom.sbarlua
|
|
pkgs.custom.promise-lua
|
|
luafilesystem
|
|
]
|
|
);
|
|
in
|
|
{
|
|
options.custom.gui = with lib; {
|
|
sketchybar = {
|
|
enable = mkEnableOption "Enable sketchybar";
|
|
logFile = mkOption {
|
|
type = types.str;
|
|
default = "${home-dir}/Library/Logs/sketchybar.log";
|
|
description = "Filepath of log output";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
services.sketchybar = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [
|
|
custom.sk-utils
|
|
# sketchybar-app-font
|
|
];
|
|
};
|
|
|
|
hm.home.shellAliases = {
|
|
restart-sketchybar = ''launchctl kickstart -k gui/"$(id -u)"/org.nixos.sketchybar'';
|
|
};
|
|
|
|
hm.home.packages = with pkgs; [
|
|
sketchybar-app-font
|
|
custom.sk-utils
|
|
];
|
|
|
|
hm.xdg.configFile = {
|
|
"sketchybar/sketchybarrc" = {
|
|
executable = true;
|
|
text = # Lua
|
|
''
|
|
#!${lua}/bin/lua
|
|
|
|
-- Add the sketchybar module to the package cpath (the module could be
|
|
-- installed into the default search path then this would not be needed)
|
|
package.path = "${dots}/config/sketchybar/?.lua;${dots}/config/sketchybar/?/?.lua;${dots}/config/sketchybar/?/init.lua;" .. package.path
|
|
|
|
sbar = require("sketchybar")
|
|
sbar.exec("killall sketchyhelper || sketchyhelper git.felix.sketchyhelper >/dev/null 2>&1 &")
|
|
sbar.begin_config()
|
|
require("init")
|
|
sbar.hotload(true)
|
|
sbar.end_config()
|
|
sbar.event_loop()
|
|
'';
|
|
};
|
|
};
|
|
|
|
services.aerospace.settings.exec-on-workspace-change = lib.mkIf config.custom.aerospace.enable [
|
|
"/bin/bash"
|
|
"-c"
|
|
"${sketchybar} --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE PREV_WORKSPACE=$AEROSPACE_PREV_WORKSPACE"
|
|
];
|
|
|
|
launchd.user.agents.sketchybar.serviceConfig = {
|
|
StandardErrorPath = cfg.logFile;
|
|
StandardOutPath = cfg.logFile;
|
|
KeepAlive = lib.mkForce {
|
|
PathState = {
|
|
"/run/current-system/sw/bin/sketchybar" = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|