{ pkgs, config, lib, ... }: let inherit (lib.meta) getExe getExe'; in { programs.niri.settings.spawn-at-startup = let import-gsettings = pkgs.writeShellScriptBin "import-gsettings" '' # usage: import-gsettings config="''${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini" if [ ! -f "$config" ]; then exit 1; fi gnome_schema="org.gnome.desktop.interface" gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')" icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')" cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')" font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')" ${pkgs.glib}/bin/gsettings set "$gnome_schema" gtk-theme "$gtk_theme" ${pkgs.glib}/bin/gsettings set "$gnome_schema" icon-theme "$icon_theme" ${pkgs.glib}/bin/gsettings set "$gnome_schema" cursor-theme "$cursor_theme" ${pkgs.glib}/bin/gsettings set "$gnome_schema" font-name "$font_name" ''; systemctl = getExe' pkgs.systemd "systemctl"; packageExe' = pkgAttr: getExe' pkgs.${pkgAttr} pkgAttr; packageExe = pkgAttr: getExe pkgs.${pkgAttr}; packageCommand = attr: { command = [ (packageExe attr) ]; }; packageCommand' = attr: { command = [ (packageExe' attr) ]; }; packages' = [ "udiskie" "easyeffects" #"pasystray" ]; packages = [ #"pasystray" #"pavucontrol" #"networkmanagerapplet" ]; packageCommands = let packageCommands' = map packageCommand' packages'; packageCommands'' = map packageCommand packages; in packageCommands' ++ packageCommands''; in packageCommands ++ [ { command = [ "${getExe import-gsettings}" ]; } { command = [ (packageExe' "easyeffects") "-w" ]; } { command = [ "${systemctl}" "--user" "restart" "waybar.service" ]; } { command = [ "${systemctl}" "--user" "restart" "konawall-py.service" ]; } { command = [ "${systemctl}" "--user" "restart" "swaync.service" ]; } { command = [ "${getExe' config.programs.niriswitcher.package "niriswitcher"}" ]; } { command = [ "${getExe' pkgs.dbus "dbus-update-activation-environment"}" "--all" ]; } { command = [ "discord" "--enable-features=WaylandLinuxDrmSyncobj,UseOzonePlatform" "--ozone-platform=wayland" "--enable-wayland-ime" ]; } ]; }