update cross-module package references, nuke execOnStart

This commit is contained in:
Reid 2024-12-14 16:40:14 -08:00
parent 6d61976106
commit ff647de9ce
Signed by: reidlab
GPG key ID: DAF5EAF6665839FD
13 changed files with 135 additions and 73 deletions

View file

@ -6,18 +6,18 @@ let
in {
options.modules.desktop.batsignal = {
enable = mkEnableOption "Enable batsignal, a battery notification service";
package = mkOption {
type = types.package;
default = pkgs.batsignal;
};
};
config = mkIf cfg.enable {
modules.desktop.execOnStart = [
# -w 20 -c 10 -d 5 -- set battery levels
# -p -- notify on plug/unplug
# -m 2 -- set interval to 2 seconds
"${lib.getExe cfg.package} -w 20 -c 10 -d 5 -p -m 2"
];
hm.services.batsignal = {
enable = true;
extraArgs = [
# -w 20 -c 10 -d 5 -- set battery levels
# -p -- notify on plug/unplug
# -m 2 -- set interval to 2 seconds
"-w 20" "-c 10" "-d 5" "-p" "-m 2"
];
};
};
}

View file

@ -9,28 +9,28 @@ in {
package = mkOption {
type = types.package;
default = pkgs.clipse;
example = "pkgs.clipse";
};
};
config = mkIf cfg.enable {
# runtime dependencies
user.packages = with pkgs; [ wl-clipboard ];
hm.systemd.user.services.clipse = {
Unit = {
Description = "clipse, a generic clipboard manager";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
modules.desktop.execOnStart = [ "${lib.getExe cfg.package} -listen-shell" ];
hm.wayland.windowManager.hyprland.settings = let
class = "clipse";
in {
windowrulev2 = [
"float, class:^${class}$"
"size 622 652, class:^${class}$"
"center, class:^${class}$"
"stayfocused, class:^${class}$"
"dimaround, class:^${class}$"
];
Install = {
WantedBy = [ "graphical-session.target" ];
};
bind = [
"$mod, V, exec, ${lib.getExe pkgs.wezterm} start --class ${class} -e '${lib.getExe cfg.package}'"
];
Service = {
Type = "simple";
ExecStart = "${lib.getExe cfg.package} -listen-shell";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -9,11 +9,6 @@ in {
type = types.nullOr (types.enum ["x11" "wayland"]);
description = "What display protocol to use";
};
execOnStart = mkOption {
type = types.listOf types.str;
description = "List of commands to run on startup";
default = null;
};
};
config = mkMerge [
@ -57,9 +52,18 @@ in {
SDL_VIDEODRIVER = "wayland";
CLUTTER_BACKEND = "wayland";
};
hm.home.packages = with pkgs; [
wl-clipboard
wl-clipboard-x11 # compat with xclip
];
})
(mkIf (cfg.envProto == "x11") {
services.xserver.excludePackages = [ pkgs.xterm ];
hm.home.packages = with pkgs; [
xclip
];
})
];
}

View file

@ -11,6 +11,7 @@ in {
config = mkIf cfg.enable {
hm.services.dunst = {
enable = true;
settings = with config.colorScheme.palette; {
global = {
follow = "mouse";

View file

@ -9,9 +9,10 @@ in {
};
config = mkIf cfg.enable {
modules.desktop.execOnStart = [ "${pkgs.gammastep}/bin/gammastep-indicator" ];
hm.services.gammastep = {
enable = true;
tray = true;
# portland, oregon
latitude = 45.3112;
longitude = -122.4055;

View file

@ -88,10 +88,10 @@ in {
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
]));
bindr = [ # "bind released"
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
"SUPER, Super_L, exec, ${lib.getExe config.modules.desktop.nwg-drawer.package}"
];
bind = let
screenshotScript = pkgs.writeScript "screenshot" ''
screenshotScript = pkgs.writeShellScript "screenshot" ''
temp_file=$(mktemp)
trap 'rm -f "$temp_file"' EXIT
@ -149,9 +149,10 @@ in {
"$mod, bracketleft, workspace, e-1"
"$mod, bracketright, workspace, e+1"
"$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run"
"$mod, T, exec, ${lib.getExe pkgs.wezterm}"
"$mod, R, exec, ${lib.getExe config.modules.desktop.rofi.package} -show run"
"$mod, T, exec, ${lib.getExe config.modules.software.system.wezterm.package}"
"$mod, L, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
"$mod, V, exec, ${lib.getExe config.modules.software.system.wezterm.package} start --class 'clipse' -e '${lib.getExe config.modules.desktop.clipse.package}'"
# screenshot
# area
@ -164,10 +165,6 @@ in {
", XF86LaunchA, exec, ${screenshotScript} area"
", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20"
", XF86ScreenSaver, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
# alt-tab emulation
# doesnt activate when we let go of alt sadly
"ALT, Tab, exec, ${lib.getExe pkgs.rofi-wayland} -show window"
] ++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
@ -205,7 +202,7 @@ in {
"${lib.getExe pkgs.networkmanagerapplet}" # network applet
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent
"${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing
] ++ config.modules.desktop.execOnStart;
];
env = [
"XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}"
@ -226,15 +223,15 @@ in {
windowrulev2 = [
# TODO: dedupe
# commons
"float, class:org.gnome.FileRoller"
"size 1100 650, class:org.gnome.FileRoller"
"center, class:org.gnome.FileRoller"
"float, class:org.gnome.Loupe"
"size 1100 650, class:org.gnome.Loupe"
"center class:org.gnome.Loupe"
"float, class:com.gabm.satty"
"size 1100 650, class:com.gabm.satty"
"center 1100 650, class:com.gabm.satty"
"float, class:^org.gnome.FileRoller$"
"size 1100 650, class:^org.gnome.FileRoller$"
"center, class:^org.gnome.FileRoller$"
"float, class:^org.gnome.Loupe$"
"size 1100 650, class:^org.gnome.Loupe$"
"center class:^org.gnome.Loupe$"
"float, class:^com.gabm.satty$"
"size 1100 650, class:^com.gabm.satty$"
"center 1100 650, class:^com.gabm.satty$"
"float, initialTitle:^Open Folder$"
"size 1100 650, initialTitle:^Open Folder$"
"center, initialTitle:^Open Folder$"
@ -253,9 +250,14 @@ in {
"float, initialTitle:^File Upload$"
"size 1100 650, initialTitle:^File Upload$"
"center, initialTitle:^File Upload$"
"float, class:^clipse$"
"size 1100 650, class:^clipse$"
"center, class:^clipse$"
# privacy popups
"stayfocused, class:^gcr-prompter"
"dimaround, class:^gcr-prompter"
"stayfocused, class:^clipse$"
"dimaround, class:^clipse$"
"stayfocused, class:^gcr-prompter$"
"dimaround, class:^gcr-prompter$"
"stayfocused, class:^pinentry-"
"dimaround, class:^pinentry-"
"stayfocused, class:^polkit-"
@ -282,9 +284,9 @@ in {
"noborder, initialTitle:^Discord Popout$"
# workspace moving
"workspace 1 silent, class:^firefox"
"workspace 2 silent, class:code"
"workspace 4 silent, class:vesktop"
"workspace 1 silent, class:^firefox$"
"workspace 2 silent, class:^code$"
"workspace 4 silent, class:^vesktop$"
];
layerrule = [

View file

@ -6,9 +6,31 @@ let
in {
options.modules.desktop.nwg-drawer = {
enable = mkEnableOption "Enable nwg-drawer, a GTK based application launcher for wayland";
package = mkOption {
type = types.package;
default = pkgs.nwg-drawer;
example = "pkgs.nwg-drawer";
};
};
config = mkIf cfg.enable {
modules.desktop.execOnStart = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ];
hm.systemd.user.services.nwg-drawer = {
Unit = {
Description = "nwg-drawer, a GTK based application launcher for wayland";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
ExecStart = "${lib.getExe cfg.package} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -6,12 +6,18 @@ let
in {
options.modules.desktop.rofi = {
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
package = mkOption {
type = types.package;
default = pkgs.rofi-wayland-unwrapped;
example = "pkgs.rofi";
};
};
config = mkIf cfg.enable {
hm.programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
package = cfg.package;
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}px";
extraConfig = {
show-icons = true;

View file

@ -14,21 +14,20 @@ in {
default = pkgs.swww;
example = "pkgs.swww";
};
startScript = mkOption {
setScript = mkOption {
type = types.package;
default = pkgs.writeScript "swww-start" ''
default = pkgs.writeShellScript "swww-set" ''
if [ ! -f "${lastWallpaper}" ]; then
echo "$(ls ${wallpapersFolder} | shuf -n 1)" > "${lastWallpaper}"
fi
${cfg.package}/bin/swww-daemon &
${lib.getExe cfg.package} img "${wallpapersFolder}/$(cat ${lastWallpaper})" --transition-type none
'';
};
swapScript = mkOption {
type = types.package;
default = pkgs.writeScript "swww-swap" ''
file=$(ls ${wallpapersFolder} | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '\n' -i -p "select a wallpaper")
default = pkgs.writeShellScript "swww-swap" ''
file=$(ls ${wallpapersFolder} | ${lib.getExe config.modules.desktop.rofi.package} -dmenu -sep '\n' -i -p "select a wallpaper")
wallpaper="${wallpapersFolder}/$file"
[ ! -f "$wallpaper" ] && exit 1
@ -42,6 +41,24 @@ in {
config = mkIf cfg.enable {
hm.home.packages = [ cfg.package ];
modules.desktop.execOnStart = [ "${cfg.startScript}" ];
hm.systemd.user.services.swww = {
Unit = {
Description = "swww, a Solution to your Wayland Wallpaper Woes";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
ExecStart = "${cfg.package}/bin/swww-daemon";
ExecStartPost = "${cfg.setScript}";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -14,10 +14,15 @@ in {
};
config = mkIf cfg.enable {
modules.desktop.execOnStart = [ "${lib.getExe cfg.package}" ];
# enables playerctld bus, required for waybar to read mpris
hm.services.playerctld.enable = true;
hm.programs.waybar = {
enable = true;
# essentially just the service
# peculiar how this is a program
systemd.enable = true;
package = cfg.package;
settings = {
mainBar = {
layer = "top";
@ -70,7 +75,7 @@ in {
];
};
"custom/power" = let
powerSelect = pkgs.writeScript "power-menu" ''
powerSelect = pkgs.writeShellScript "power-menu" ''
cmd=$(echo ' shutdown| reboot| lock| exit desktop environment' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }')
case "$cmd" in
" shutdown")

View file

@ -14,14 +14,11 @@ in {
};
config = mkIf cfg.enable {
modules.desktop.execOnStart = let
path = cfg.sockPath;
script = pkgs.writeScript "launch-wob" ''
rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob}
'';
in [ (toString script) ];
# uhm uh um
# i don't know how the code in home-manager is making the wob socket, but it is
hm.services.wob = {
enable = true;
settings = {
"" = {
timeout = 1000;