Nix

Leng is also packaged as a Nix flake.

Running

You can simply run nix run github:cottand/leng to run latest master.

Installing in NixOS via a Module

The leng flake also exports a NixOS module for easy deployment on NixOS machines.

Please refer to Configuration for the options you can use under services.leng.configuration. = ....

In your flake

{
  inputs = {
    # pinned version for safety
    leng.url = "github:cottand/leng/v1.6.0"; 
    leng.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self, leng, ... }: {
    # Use in your outputs
    nixosConfigurations."this-is-a-server-innit" = nixpkgs.lib.nixosSystem {
      modules = [ 
        ./configuration.nix
        leng.nixosModules.default #  <- import leng module
        {
          services.leng = {       # <-- now you can use services.leng!
            enable = true;
            configuration = {
              api = "127.0.0.1:8080";
              metrics.enabled = true;
              blocking.sourcesStore = "/var/lib/leng-sources";
            };
          };
        }
      ];
    };
  };
}

Legacy Nix

Add the following inside your configuration.nix:

{pkgs, lib, ... }: {
  imports = [
    # import leng module
    (builtins.getFlake "github:cottand/leng/v1.6.0").nixosModules.default 
  ];
    
  # now you can use services.leng!
  services.leng = {       
    enable = true;
    configuration = {
      api = "127.0.0.1:8080";
      metrics.enabled = true;
      blocking.sourcesStore = "/var/lib/leng-sources";
    };
  };
  
}

Using leng for local DNS

If you want to use leng to resolve the DNS queries of the machine you are installing it on, you should also add it to the local nameservers:

networking.nameservers = [ "127.0.0.1" ];

Developing

The flake's development shell simply includes Go 1.21+ and a fish shell. You can enter it with nix develop.