This repository has no description
1.8 kB
63 lines
1{
2 lib,
3 rustPlatform,
4 fetchFromGitHub,
5 installShellFiles,
6 pkg-config,
7 openssl,
8}:
9
10rustPlatform.buildRustPackage {
11 pname = "tincr";
12 version = "0-unstable-2026-10-18";
13
14 # Our fork's integration branch: upstream main + tunnel-address gate + the
15 # UDP-blackhole-after-ENETUNREACH fix, until Mic92/tincr#140 lands.
16 src = fetchFromGitHub {
17 owner = "Lassulus";
18 repo = "tincr";
19 rev = "830364917ef24008bed34c838d7796f0c004e577";
20 hash = "sha256-H71omFpIXx/0OeTtjRDam7UVK3JCtHgwFQ/M1VdGCbU=";
21 };
22
23 cargoHash = "sha256-3kVlB537Oe1yvmMNoCnuNkBgYqxFLvnBbc97uKGmb3g=";
24
25 # Just the deployable bin crates; --workspace would pull tinc-ffi's cc.
26 cargoBuildFlags = [
27 "-p"
28 "tincd"
29 "-p"
30 "tinc-tools"
31 ];
32
33 # netns tests need bwrap+userns the build sandbox lacks.
34 doCheck = false;
35
36 # The repo's .cargo/config.toml builds x86_64-linux for x86-64-v3 (AVX2),
37 # which dies with SIGILL on pre-Haswell CPUs (icarus, shodan: Ivy Bridge).
38 # An env RUSTFLAGS replaces those target rustflags (cargo doesn't merge
39 # them): keep the frame pointers, drop the CPU floor. Same as upstream's
40 # nix/tincd.nix baselineCpu; the AEAD is OpenSSL with runtime dispatch.
41 env.RUSTFLAGS = "-C force-frame-pointers=yes";
42
43 # tinc-crypto's ChaPoly backend links openssl-sys against system openssl.
44 nativeBuildInputs = [
45 installShellFiles
46 pkg-config
47 ];
48 buildInputs = [ openssl ];
49
50 postInstall = ''
51 installManPage man/*.[0-9]
52 '';
53
54 passthru.updateScript = ./update.sh;
55
56 meta = {
57 description = "Drop-in Rust rewrite of tinc 1.1 VPN (SPTPS-only, Ed25519)";
58 homepage = "https://github.com/Mic92/tincr";
59 license = lib.licenses.gpl2Plus;
60 mainProgram = "tincd";
61 platforms = lib.platforms.linux ++ lib.platforms.darwin;
62 };
63}