# Programs your configs and scripts call, and your own tools. { config, inputs, pkgs, ... }: let system = pkgs.stdenv.hostPlatform.system; # The "Desktop" half of the control centre's update tile (tools/nixos-update). nixos-update = pkgs.writeShellApplication { name = "nixos-update"; runtimeInputs = with pkgs; [ git jq nvd ]; runtimeEnv.DOT_REPO = config.dot.repoPath; text = builtins.readFile ../../tools/nixos-update; }; # The same tile's "Server" half (tools/server-update): updates and deploys ~/git/srv. server-update = pkgs.writeShellApplication { name = "server-update"; runtimeInputs = with pkgs; [ git nvd openssh ]; text = builtins.readFile ../../tools/server-update; }; # The Network tile's settings window, on its own: the networkmanagerapplet # package also has an autostart entry that would bring nm-applet back to the tray. nm-connection-editor = pkgs.runCommand "nm-connection-editor" { } '' mkdir -p $out/bin $out/share/applications ln -s ${pkgs.networkmanagerapplet}/bin/nm-connection-editor $out/bin/ ln -s ${pkgs.networkmanagerapplet}/share/applications/nm-connection-editor.desktop $out/share/applications/ ''; # Philly's webview (WebKitGTK) closes at once on the NVIDIA driver under # Wayland, with "Error 71 (Protocol error) dispatching to Wayland display", # unless its DMA-BUF renderer is off. Set on the program itself, so it holds # however Philly is started (terminal, fuzzel, or as the folder handler from # an app running as a systemd service, which doesn't get hyprland.lua's env). philly = pkgs.symlinkJoin { name = "philly"; paths = [ inputs.philly.packages.${system}.default ]; nativeBuildInputs = [ pkgs.makeBinaryWrapper ]; postBuild = '' rm $out/bin/philly makeWrapper ${inputs.philly.packages.${system}.default}/bin/philly $out/bin/philly \ --set-default WEBKIT_DISABLE_DMABUF_RENDERER 1 ''; }; in { home.packages = with pkgs; [ # The Hyprland desktop: launcher, bar flyouts, notifications, idle/lock. fuzzel eww dunst libnotify hyprpaper hypridle wl-clipboard playerctl # python3 with PyGObject and python-xlib, for the Waybar/Eww scripts. python3-desktop # Called by the control centre and tray scripts. pulseaudio # pactl bluez # bluetoothctl nm-connection-editor nixos-update server-update solaar # mouse battery fallback (mouse-battery.sh) # Screenshots and screen recording (imsh-shot, imsh-cast; Super+Shift+S/F/R). inputs.imsh-clients.packages.${system}.default # Philly, the file browser (also the handler for folders, in mimeapps.list). philly ]; }