Unverified Commit e1a589b3 authored by Adam C. Stephens's avatar Adam C. Stephens Committed by GitHub
Browse files

elephant: enable all providers by default (#509578)

parents 1a84eb69 e1b44678
Loading
Loading
Loading
Loading
+33 −63
Original line number Diff line number Diff line
{
  enableArchLinuxPkgs ? false,
  enableDnfPackages ? false,
  enable1password ? false,
  enableBitwarden ? true,
  enableBluetooth ? true,
  enableBookmarks ? true,
  enableCalc ? true,
  enableClipboard ? true,
  enableDesktopApplications ? true,
  enableFiles ? true,
  enableMenus ? true,
  enableNiriActions ? true,
  enableNiriSessions ? true,
  enableProviderList ? true,
  enableRunner ? true,
  enableSnippets ? true,
  enableSymbols ? true,
  enableTodo ? true,
  enableUnicode ? true,
  enableWebsearch ? true,
  enableWindows ? true,
  # list of providers to enable, all are enabled by default
  # e.g. enabledProviders = ["files"] will only install the files provider
  enabledProviders ? null,

  bluez,
  buildGoModule,
@@ -35,38 +17,13 @@
  wl-clipboard,
}:
let
  providerMap = {
    "1password" = enable1password;
    "archlinuxpkgs" = enableArchLinuxPkgs;
    "bitwarden" = enableBitwarden;
    "bluetooth" = enableBluetooth;
    "bookmarks" = enableBookmarks;
    "calc" = enableCalc;
    "clipboard" = enableClipboard;
    "desktopapplications" = enableDesktopApplications;
    "dnfpackages" = enableDnfPackages;
    "files" = enableFiles;
    "menus" = enableMenus;
    "niriactions" = enableNiriActions;
    "nirisessions" = enableNiriSessions;
    "providerlist" = enableProviderList;
    "runner" = enableRunner;
    "snippets" = enableSnippets;
    "symbols" = enableSymbols;
    "todo" = enableTodo;
    "unicode" = enableUnicode;
    "websearch" = enableWebsearch;
    "windows" = enableWindows;
  };

  enabledProviders = lib.filterAttrs (_: enabled: enabled) providerMap;
  enabledProvidersList = lib.concatStringsSep " " (lib.attrNames enabledProviders);
  providerEnabled = provider: (enabledProviders == null) || lib.elem provider enabledProviders;

  runtimeDeps =
    lib.optionals enableFiles [ fd ]
    ++ lib.optionals enableBluetooth [ bluez ]
    ++ lib.optionals enableCalc [ libqalculate ]
    ++ lib.optionals enableClipboard [
    lib.optionals (providerEnabled "files") [ fd ]
    ++ lib.optionals (providerEnabled "bluetooth") [ bluez ]
    ++ lib.optionals (providerEnabled "calc") [ libqalculate ]
    ++ lib.optionals (providerEnabled "clipboard") [
      wl-clipboard
      imagemagick
    ];
@@ -93,11 +50,24 @@ buildGoModule (finalAttrs: {

  subPackages = [ "cmd/elephant" ];

  postBuild = ''
    echo "Building providers: ${enabledProvidersList}"

  postBuild =
    (
      if enabledProviders == null then
        ''
          PROVIDERS=()
          for x in internal/providers/*/; do
            PROVIDERS+=("$(basename "$x")")
          done
        ''
      else
        ''
          PROVIDERS=(${lib.escapeShellArgs enabledProviders})
        ''
    )
    + ''
      echo "Installing providers"
      mkdir -p $out/lib/elephant/providers
    for provider in ${enabledProvidersList}; do
      for provider in "''${PROVIDERS[@]}"; do
        [ -z "$provider" ] && continue
        if [ -d "internal/providers/$provider" ]; then
          echo "Building provider: $provider"