{ pkgs, lib, ... }: let commandFiles = lib.attrNames ( lib.filterAttrs (name: type: type == "regular" && name != "default.nix" && lib.hasSuffix ".nix" name) (builtins.readDir ./.) ); commands = map (file: pkgs.callPackage (./. + "/${file}") { }) commandFiles; palette = pkgs.symlinkJoin { name = "palette"; paths = commands; }; in { home.packages = [ (pkgs.writers.writeBashBin "open-palette" '' set -eu choice=$(${pkgs.coreutils}/bin/ls ${palette}/bin | ${pkgs.rofi}/bin/rofi -dmenu -i -p palette) exec "${palette}/bin/$choice" '') ]; }