( final: prev: let lib = prev.lib; importScript = (_: path: import (path) { inherit (final) pkgs lib; }); wrapScript = name: text: runtimeInputs: final.runCommand name { nativeBuildInputs = [ final.makeWrapper ]; meta.mainProgram = name; } '' mkdir -p $out/bin cp ${text} $out/bin/${name} wrapProgram $out/bin/${name} \ --suffix PATH : ${lib.makeBinPath runtimeInputs} ''; createScripts = lib.mapAttrs (name: deps: wrapScript name ./${name} deps); myPass = final.pass.withExtensions (ex: with ex; [ pass-otp ]); in with final; createScripts { amd-fan-control = [ bash ]; br = [ ]; bmenu = [ bemenu dhist fish j4-dmenu-desktop jq sway ]; down_meme = [ wl-clipboard yt-dlp libnotify ]; wl-copy-file = [ wl-clipboard fish ]; _diffr = [ diffr ]; _thunar-terminal = [ terminal ]; _sway_idle_toggle = [ swayidle ]; kak-pager = [ fish _diffr ]; kak-man-pager = [ kak-pager ]; helix-pager = [ fish _diffr ]; helix-man-pager = [ helix-pager ]; musmenu = [ mpc-cli wdmenu trash-cli xdg-user-dirs libnotify sd wl-clipboard ]; showkeys = [ ]; # This will not work unless programs.wshowkeys is enabled systemwide terminal = [ alacritty ]; playerctl-status = [ playerctl ]; pass-export = [ pass2csv gnupg sd ]; wpass = [ wdmenu fd myPass sd wl-clipboard wtype ]; screenshotsh = [ capitaine-cursors grim slurp jq sway wl-clipboard xdg-user-dirs ]; volumesh = [ pulseaudio libnotify ]; pulse_sink = [ pulseaudio pamixer wdmenu ]; color_picker = [ grim slurp wl-clipboard libnotify imagemagick ]; dzadd = [ procps libnotify wdmenu jq mpv pqiv python3Packages.deemix mpc-cli mpdDup ]; mpdDup = [ mpc-cli perl ]; readQrCode = [ grim zbar wl-clipboard ]; pint-fmt = [ ]; powerplay-led-idle = [ bash libinput libratbag ]; vrr-fullscreen = [ ]; controller-battery = [ ]; } // lib.mapAttrs importScript { wdmenu = ./wdmenu.nix; wlauncher = ./wlauncher.nix; _gpg-unlock = ./_gpg-unlock.nix; } )