No description
Find a file
2026-03-18 13:10:25 -04:00
init Fix runit script 2026-03-18 11:07:41 -04:00
src Surface blocked search engine responses 2026-03-18 11:23:51 -04:00
static fix: minor visual tweak on the new engine warning 2026-03-18 11:37:15 -04:00
templates Surface blocked search engine responses 2026-03-18 11:23:51 -04:00
.gitignore feat: add nix support 2026-03-18 13:08:19 -04:00
example-config.ini feature: moved domain for opensearch to config 2026-03-18 04:10:30 -04:00
flake.lock feat: add nix support 2026-03-18 13:08:19 -04:00
flake.nix feat: add nix support 2026-03-18 13:08:19 -04:00
LICENSE oopsies 2026-02-23 00:57:21 -05:00
Makefile fix: added install step for runit on artix 2026-03-18 11:11:09 -04:00
module.nix feat: add nix support 2026-03-18 13:08:19 -04:00
README.md docs: reorder README 2026-03-18 13:10:25 -04:00

OmniSearch

A modern lightweight metasearch engine with a clean design written in C.

Disclaimer

I request that none of this code, in part or in full, be hosted on GitHub, SourceForge, or any other proprietary platform. This request is made out of respect for both me, the developer and for you, the user.

Configuration

Create a config.ini, there is an example included in the root. Or if you installed omnisearch, edit the installed config file.

Dependencies

  • libxml2
  • libcurl (may be replaced in the future with curl-impersonate)
  • beaker (source)

First Setup

Depending on your system, you may first need to install libcurl and libxml2.

Arch Linux

# pacman -S libxml2 libcurl

Debian/Ubuntu

# apt install libxml2-dev libcurl4-openssl-dev

Fedora

# dnf install libxml2-devel libcurl-devel

openSUSE

# zypper install libxml2-devel libcurl-devel

Alpine

# apk add libxml2-dev curl-dev

Void

# xbps-install -S libxml2-devel libcurl-devel

macOS (Homebrew)

$ brew install libxml2 curl openssl pkg-config

macOS (MacPorts)

# port install libxml2 curl openssl3 pkgconfig

Nixos

Add the flake to your inputs and import the module. That is all you need. Here's an example of using the modules in a flake:

# flake.nix
{
  inputs = { 
    omnisearch = {
      url = "git+https://git.bwaaa.monster/omnisearch";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, omnisearch, ... }: {
    nixosConfigurations.mySystem = nixpkgs.lib.nixosSystem {
      modules = [
        omnisearch.nixosModules.default
        {
          services.omnisearch.enable = true;
        }
      ];
    };
  };
}

On macOS the build uses pkg-config to discover libxml2, libcurl and OpenSSL flags.

Install libbeaker:

$ git clone https://git.bwaaa.monster/beaker
$ cd beaker
$ make
# make install

On macOS beaker installs to /usr/local/ by default and installs libbeaker.dylib.

And then install omnisearch:

$ git clone https://git.bwaaa.monster/omnisearch
$ cd omnisearch
$ make
# make install-<init>

Replace <init> with your init system (openrc, systemd, runit, s6, dinit, launchd). On macOS, use install-launchd.

Hosting

Run it normally behind a reverse proxy (like nginx)

Customisation

To make your own changes while still being able to receive upstream updates:

$ git checkout -b my-changes

Make your changes in the cloned folder, then periodically merge upstream:

$ git fetch origin
$ git merge origin/master

If there are conflicts in the files you modified, resolve them manually. You should also make the changes to the cloned repository, and then run the install command again if you installed omnisearch. Changes made directly to the configuration/assets folder will be overwritten on reinstall.

Contribution

Generate a patch with git format-patch HEAD~1 and email to gabriel@bwaaa.monster, beginning the subject line with [PATCH omnisearch]

If you are sending a revised version of a previous patch, please use [PATCH omnisearch v2, v3, etc].