No description
  • C 77.8%
  • CSS 8.4%
  • HTML 6.6%
  • Makefile 4.1%
  • Nix 2.5%
  • Other 0.6%
Find a file
2026-04-17 23:31:31 +01:00
init fix proxy request flood and replace omnisearch branding with RoxySearch 2026-04-04 18:24:41 +01:00
locales Merge remote-tracking branch 'upstream/indev' into roxysearch 2026-04-17 23:31:31 +01:00
src Merge remote-tracking branch 'upstream/indev' into roxysearch 2026-04-17 23:31:31 +01:00
static merge branch indev into roxysearch 2026-04-13 00:46:06 +01:00
templates Merge remote-tracking branch 'upstream/indev' into roxysearch 2026-04-17 23:31:31 +01:00
.gitignore Revert "feat: add nix support" 2026-03-19 21:35:04 -04:00
docker-compose.yml fix: match container port binding to example config 2026-04-05 11:24:58 -04:00
Dockerfile docker: use multi-stage build to reduce image size 2026-03-30 03:01:16 +03:00
example-config.ini feat: setting default locale for instance 2026-04-06 01:56:11 -04:00
flake.lock feat(nix): locale support 2026-04-09 08:45:27 -04:00
flake.nix feat(nix): locale support 2026-04-09 08:45:27 -04:00
LICENSE oopsies 2026-02-23 00:57:21 -05:00
Makefile feat: made version on homepage link to repo 2026-04-03 15:26:01 -04:00
module.nix feat(nix): locale support 2026-04-09 08:45:27 -04:00
README.md Merge remote-tracking branch 'origin/indev' into roxysearch 2026-04-05 17:03:44 +01:00

RoxySearch

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 curl

Debian/Ubuntu

# apt install build-essential libssl-dev 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 shadow

On Alpine, shadow is needed for the user creation process during the install.

Void

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

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;
        }
      ];
    };
  };
}

macOS (Homebrew)

$ brew install libxml2 curl openssl pkg-config

macOS (MacPorts)

# port install libxml2 curl openssl3 pkgconfig

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)

Deploy with Docker Compose

You need Docker or Podman and Docker Compose installed on your system.

Run the container:

$ git clone https://git.bwaaa.monster/omnisearch
$ cd omnisearch
$ docker compose up -d --build

By default it can be reached on port 8087.

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].