feat(users/Profpatsch): add a example for omega search
Uses xapian under the hood to index the contents, then makes it searchable with a CGI binary on http://localhost:8080 We could in theory index every -doc output this way to get local documentation search for the current system (similar to `man-db`). Change-Id: I2588c8f100841cfbed570bb65d376b79747c06ee Reviewed-on: https://cl.tvl.fyi/c/depot/+/12710 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
1cc4200b3e
commit
84e9c7f104
1 changed files with 62 additions and 0 deletions
62
users/Profpatsch/omega.nix
Normal file
62
users/Profpatsch/omega.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{ depot, pkgs, lib, ... }:
|
||||
let
|
||||
|
||||
# fix: https://github.com/NixOS/nixpkgs/pull/352144
|
||||
omega-templates = pkgs.stdenv.mkDerivation {
|
||||
name = "omega-templates";
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
src = pkgs.xapian-omega.src;
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/omega
|
||||
mv templates $out/share/omega
|
||||
'';
|
||||
};
|
||||
|
||||
omega-test = pkgs.stdenv.mkDerivation {
|
||||
name = "omega-test";
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir localhost
|
||||
ln -sT localhost localhost:8080
|
||||
mkdir ./default
|
||||
cp -r ${lib.getOutput "doc" pkgs.tipidee}/share/doc/tipidee ./default/tipidee
|
||||
cp -r ${lib.getOutput "doc" pkgs.tipidee}/share/doc/tipidee ./localhost/tipidee
|
||||
|
||||
ln -sT ${pkgs.writers.writeText "omega.conf" ''
|
||||
database_dir ./omega.db
|
||||
log_dir /tmp/omega.log
|
||||
template_dir ${omega-templates}/share/omega/templates
|
||||
''} omega.conf
|
||||
|
||||
${pkgs.tipidee}/bin/tipidee-config -o tipidee.cdb -i ${pkgs.writers.writeText "tipidee.conf" ''
|
||||
domain localhost
|
||||
cgi /omega
|
||||
''}
|
||||
|
||||
cp ${pkgs.xapian-omega}/lib/xapian-omega/bin/omega ./localhost
|
||||
|
||||
mkdir omega.db
|
||||
${pkgs.xapian-omega}/bin/omindex --db ./omega.db/default --url / ./default
|
||||
|
||||
mkdir -p $out
|
||||
cp -r ./* $out
|
||||
'';
|
||||
};
|
||||
|
||||
run-omega = pkgs.writers.writeBash "run-omega" ''
|
||||
cd ${omega-test}
|
||||
emptyenv -p \
|
||||
${pkgs.s6-networking}/bin/s6-tcpserver 127.0.0.1 8080 \
|
||||
${pkgs.s6-networking}/bin/s6-tcpserver-access \
|
||||
${pkgs.tipidee}/bin/tipideed -f tipidee.cdb
|
||||
'';
|
||||
|
||||
|
||||
in
|
||||
{
|
||||
inherit
|
||||
run-omega
|
||||
omega-test
|
||||
;
|
||||
}
|
||||
|
Loading…
Reference in a new issue