Omnom

Omnom is a webpage bookmarking and snapshotting service.

Try the service in a VM

  1. Install Nix
    Arch Linux
    Bash
    $ pacman --sync --refresh --noconfirm curl git jq nix
    Debian
    Bash
    $ apt install --yes curl git jq nix
    Ubuntu
    Bash
    $ apt install --yes curl git jq nix
  2. Download a configuration file
    # default.nix
    {
      ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { },
    }:
    ngipkgs.demo-vm (
      let
        port = 8080;
      in
      {
        services.omnom = {
          enable = true;
          openFirewall = true;
          inherit port;
          settings = {
            server.address = "0.0.0.0:${toString port}";
          };
        };
      }
    
    )
    
  3. Enable binary substituters
    Bash
    $ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/
    trusted-public-keys = cache.nixos.org-1:6nchdd59x431o0gwypbmraurkbj16zpmqfgspcdshjy= ngi.cachix.org-1:n+cal72roc3qqulxihpv+tw5t42whxmmhpragkrsrow='
  4. Build and run a virtual machine
    Arch Linux, Debian Sid/Trixie and Ubuntu 25.04
    Bash
    $ nix-build ./default.nix && ./result
    Ubuntu 24.04
    Bash
    $ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)
    $ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result"
  5. Usage Instructions Deployment for demo purposes

Options

services.omnom
services.omnom.dataDir

The directory where Omnom stores its data files.

Type:
absolute path
Default:
"/var/lib/omnom"
services.omnom.enable

Whether to enable Omnom, a webpage bookmarking and snapshotting service.

Type:
boolean
Default:
false
services.omnom.group

The Omnom service group.

Type:
non-empty string
Default:
"omnom"
services.omnom.openFirewall

Whether to open ports in the firewall.

Type:
boolean
Default:
false
services.omnom.package

The omnom package to use.

Type:
package
Default:
pkgs.omnom
services.omnom.passwordFile

File containing the password for the SMTP user.

Type:
null or absolute path
Default:
null
services.omnom.port

The Omnom service port.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
7331
services.omnom.settings

Configuration options for the /etc/omnom/config.yml file.

Type:
YAML 1.1 value
Default:
{ }
services.omnom.settings.activitypub.privkey

ActivityPub private key. Will be generated, by default.

Type:
absolute path
Default:
"${config.services.omnom.dataDir}/private.pem"
services.omnom.settings.activitypub.pubkey

ActivityPub public key. Will be generated, by default.

Type:
absolute path
Default:
"${config.services.omnom.dataDir}/public.pem"
services.omnom.settings.app.debug

Whether to enable debug mode.

Type:
boolean
Default:
false
services.omnom.settings.app.disable_signup

Whether to enable restricting user creation.

Type:
boolean
Default:
false
services.omnom.settings.app.results_per_page

Number of results per page.

Type:
signed integer
Default:
20
services.omnom.settings.db.connection

Database connection URI.

Type:
string
Default:
"${config.services.omnom.dataDir}/db.sqlite3"
services.omnom.settings.db.type

Database type.

Type:
value "sqlite" (singular enum)
Default:
"sqlite"
services.omnom.settings.server.address

Server address.

Type:
string
Default:
"127.0.0.1:${config.services.omnom.port}"
services.omnom.settings.server.secure_cookie

Whether to limit cookies to a secure channel.

Type:
boolean
Default:
true
services.omnom.settings.smtp.connection_timeout

Connection timeout duration in seconds.

Type:
signed integer
Default:
5
services.omnom.settings.smtp.host

SMTP server hostname.

Type:
string
Default:
""
services.omnom.settings.smtp.port

SMTP server port address.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
25
services.omnom.settings.smtp.send_timeout

Send timeout duration in seconds.

Type:
signed integer
Default:
10
services.omnom.settings.smtp.sender

Omnom sender e-mail.

Type:
string
Default:
"Omnom "
services.omnom.settings.smtp.tls

Whether to enable Whether TLS encryption should be used..

Type:
boolean
Default:
false
services.omnom.settings.smtp.tls_allow_insecure

Whether to enable Whether to allow insecure TLS..

Type:
boolean
Default:
false
services.omnom.settings.storage.type

Storage type.

Type:
string
Default:
"fs"
services.omnom.user

The Omnom service user.

Type:
non-empty string
Default:
"omnom"

Examples

base
{ ... }:
{
  services.omnom = {
    enable = true;
    openFirewall = true;

    port = 8080;

    settings = {
      app = {
        disable_signup = true; # restrict CLI user-creation
        results_per_page = 50;
      };
      smtp = {
        tls = true;
        host = "127.0.0.1";
        port = 1025;
        username = "testUser";
      };
    };

    #Contains password for SMIP User
    passwordFile = "/etc/secrets/omnom.key";
  };
}

This project is funded by NLnet through these subgrants:

Related links: