85 lines
1.7 KiB
Nix
85 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.services.zero-cache;
|
|
inherit (lib)
|
|
mkEnableOption
|
|
mkIf
|
|
;
|
|
|
|
litestream = pkgs.buildGoModule rec {
|
|
pname = "litestream-zero";
|
|
version = "0.3.13+z0.0.6";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "rocicorp";
|
|
repo = "litestream";
|
|
rev = "zero@v0.0.6";
|
|
sha256 = "sha256-sBKmz2fBoYzYi1kUVeiugLBLPdqHc+fXCBkI8Cttakg=";
|
|
};
|
|
|
|
vendorHash = "sha256-PlfDJbhzbH/ZgtQ35KcB6HtPEDTDgss7Lv8BcKT/Dgg=";
|
|
|
|
ldflags = [
|
|
"-s"
|
|
"-w"
|
|
"-X main.Version=${version}"
|
|
|
|
# nix does not like to build with this
|
|
# "-extldflags '-static'"
|
|
|
|
];
|
|
|
|
doCheck = false;
|
|
|
|
tags = [
|
|
"osusergo"
|
|
"netgo"
|
|
"sqlite_omit_load_extension"
|
|
];
|
|
|
|
subPackages = [ "cmd/litestream" ];
|
|
};
|
|
|
|
zero-cache = pkgs.buildNpmPackage rec {
|
|
name = "zero-cache";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "rocicorp";
|
|
repo = "mono";
|
|
rev = "zero/v0.23.2025081401";
|
|
hash = "sha256-NQcG/vnfUmle/6eNXXmnMqzNvniK8R/mO5RYdMX9pnE=";
|
|
};
|
|
|
|
npmDepsHash = "sha256-9vX9eODN8AfcLcMSjm6KzAAUmPIHfe2BILt0juya5us=";
|
|
makeCacheWritable = true;
|
|
npmFlags = [ "--legacy-peer-deps" ];
|
|
};
|
|
|
|
in
|
|
{
|
|
options = {
|
|
services.zero-cache = {
|
|
enable = mkEnableOption "Zero-cache, the server component of the Zero sync engine.";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
systemd.services.zero-cache = {
|
|
description = "Zero Cache";
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${zero-cache}/bin/zero-cache";
|
|
RemainAfterExit = true;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|