From 386e3f23cfd5c415e059567cb3fb51fbd3652ebc Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Tue, 2 Dec 2025 11:14:16 +0800 Subject: [PATCH 01/14] add packcc@master --- default.nix | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/default.nix b/default.nix index 3b4f9f2..2e174a8 100644 --- a/default.nix +++ b/default.nix @@ -15,6 +15,58 @@ let unity_test_with_color = pkgs.unity-test.overrideAttrs { env.NIX_CFLAGS_COMPILE = "-DUNITY_OUTPUT_COLOR=1"; }; + libcello_debug = pkgs.libcello.overrideAttrs (prevAttrs: { + separateDebugInfo = true; + postInstall = '' + mkdir -p $out/lib/pkgconfig + cat >$out/lib/pkgconfig/libcello.pc < Date: Tue, 2 Dec 2025 17:30:46 +0800 Subject: [PATCH 02/14] add extralib --- default.nix | 4 ++++ pkgs/e/extralib/package.nix | 46 +++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 pkgs/e/extralib/package.nix diff --git a/default.nix b/default.nix index 2e174a8..c9fdcd3 100644 --- a/default.nix +++ b/default.nix @@ -71,6 +71,9 @@ let pkgs = pkgs; }; cetcd = callPackage ./pkgs/c/cetcd/package.nix {}; + extralib = callPackage ./pkgs/e/extralib/package.nix { + pkgs = pkgs; + }; in { xbuild = xbuild; @@ -83,4 +86,5 @@ in cetcd = cetcd; libcello_debug = libcello_debug; packcc = packcc_main; + extralib = extralib; } diff --git a/pkgs/e/extralib/package.nix b/pkgs/e/extralib/package.nix new file mode 100644 index 0000000..038b8d5 --- /dev/null +++ b/pkgs/e/extralib/package.nix @@ -0,0 +1,46 @@ +{ + lib, + stdenv, + pkgs +}: + +let + meta = with lib; { + description = "Extralib for build X cloud Engine"; + platforms = lib.platforms.unix; + }; + pname = "extralib"; + version = "0.0.1"; +in +stdenv.mkDerivation (finalAttrs: { + pname = pname; + version = version; + + src = builtins.fetchGit { + url = "ssh://forgejo@gitea.shenrs.eu/nexa/extralibs.git"; + rev = "9bd63d624b18049f68acddfd14a64e6d98bbb9fe"; + }; + + nativeBuildInputs = [ + pkgs.meson + pkgs.ninja + ]; + + postInstall = '' + mkdir -p $out/lib/pkgconfig + cat >$out/lib/pkgconfig/extralibs.pc < Date: Tue, 2 Dec 2025 17:41:27 +0800 Subject: [PATCH 03/14] fix lib name --- pkgs/e/extralib/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/e/extralib/package.nix b/pkgs/e/extralib/package.nix index 038b8d5..394928c 100644 --- a/pkgs/e/extralib/package.nix +++ b/pkgs/e/extralib/package.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: { Name: ${pname} Description: ${meta.description} Version: ${version} - Libs: -L\''${libdir} -lzlog + Libs: -L\''${libdir} -lextra Cflags: -I\''${includedir} EOF ''; From 3bc72b826a5d38120df24ee7910bb991eae4d3e7 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Wed, 3 Dec 2025 11:44:49 +0800 Subject: [PATCH 04/14] remove extralib --- default.nix | 4 ---- pkgs/e/extralib/package.nix | 46 ------------------------------------- 2 files changed, 50 deletions(-) delete mode 100644 pkgs/e/extralib/package.nix diff --git a/default.nix b/default.nix index c9fdcd3..2e174a8 100644 --- a/default.nix +++ b/default.nix @@ -71,9 +71,6 @@ let pkgs = pkgs; }; cetcd = callPackage ./pkgs/c/cetcd/package.nix {}; - extralib = callPackage ./pkgs/e/extralib/package.nix { - pkgs = pkgs; - }; in { xbuild = xbuild; @@ -86,5 +83,4 @@ in cetcd = cetcd; libcello_debug = libcello_debug; packcc = packcc_main; - extralib = extralib; } diff --git a/pkgs/e/extralib/package.nix b/pkgs/e/extralib/package.nix deleted file mode 100644 index 394928c..0000000 --- a/pkgs/e/extralib/package.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - stdenv, - pkgs -}: - -let - meta = with lib; { - description = "Extralib for build X cloud Engine"; - platforms = lib.platforms.unix; - }; - pname = "extralib"; - version = "0.0.1"; -in -stdenv.mkDerivation (finalAttrs: { - pname = pname; - version = version; - - src = builtins.fetchGit { - url = "ssh://forgejo@gitea.shenrs.eu/nexa/extralibs.git"; - rev = "9bd63d624b18049f68acddfd14a64e6d98bbb9fe"; - }; - - nativeBuildInputs = [ - pkgs.meson - pkgs.ninja - ]; - - postInstall = '' - mkdir -p $out/lib/pkgconfig - cat >$out/lib/pkgconfig/extralibs.pc < Date: Fri, 5 Dec 2025 17:12:02 +0800 Subject: [PATCH 05/14] add struct2json --- default.nix | 4 ++++ flake.lock | 6 +++--- pkgs/s/struct2json/package.nix | 37 ++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 pkgs/s/struct2json/package.nix diff --git a/default.nix b/default.nix index 2e174a8..38a8ea3 100644 --- a/default.nix +++ b/default.nix @@ -71,6 +71,9 @@ let pkgs = pkgs; }; cetcd = callPackage ./pkgs/c/cetcd/package.nix {}; + struct2json = callPackage ./pkgs/s/struct2json/package.nix { + pkgs = pkgs; + }; in { xbuild = xbuild; @@ -83,4 +86,5 @@ in cetcd = cetcd; libcello_debug = libcello_debug; packcc = packcc_main; + struct2json = struct2json; } diff --git a/flake.lock b/flake.lock index 171c4ba..cb8f9c1 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1762111121, - "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "lastModified": 1764667669, + "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "rev": "418468ac9527e799809c900eda37cbff999199b6", "type": "github" }, "original": { diff --git a/pkgs/s/struct2json/package.nix b/pkgs/s/struct2json/package.nix new file mode 100644 index 0000000..fb57172 --- /dev/null +++ b/pkgs/s/struct2json/package.nix @@ -0,0 +1,37 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + pkgs, +}: + +let + meta = with lib; { + description = "convert c struct to json"; + homepage = "https://github.com/armink/struct2json"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + }; + pname = "struct2json"; + version = "1.0.0"; +in +stdenv.mkDerivation (finalAttrs: { + pname = pname; + version = version; + + src = fetchFromGitHub { + owner = "shen390s"; + repo = "struct2json"; + rev = "master"; + hash = "sha256-2J3JFrUc0FSX5U+vmyc5Ccmb7ONqiRprZj+QoRtwius="; + }; + + nativeBuildInputs = [ + pkgs.meson + pkgs.ninja + pkgs.pkgconf + ]; + + inherit meta; +}) From 6cd85782d948aaa7dbe40499e0230b816efa8795 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Fri, 5 Dec 2025 17:15:42 +0800 Subject: [PATCH 06/14] update struct2json --- pkgs/s/struct2json/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/s/struct2json/package.nix b/pkgs/s/struct2json/package.nix index fb57172..38d0b7b 100644 --- a/pkgs/s/struct2json/package.nix +++ b/pkgs/s/struct2json/package.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "shen390s"; repo = "struct2json"; rev = "master"; - hash = "sha256-2J3JFrUc0FSX5U+vmyc5Ccmb7ONqiRprZj+QoRtwius="; + hash = "sha256-oPMHKCbEuh0Z2zHHmSEec/m2nBv+CwGz9E6Sc5vfMbM="; }; nativeBuildInputs = [ From 597aa03bdb99a95853744acd349f113a9cd2b3cd Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Fri, 5 Dec 2025 17:17:44 +0800 Subject: [PATCH 07/14] update struct2json --- pkgs/s/struct2json/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/s/struct2json/package.nix b/pkgs/s/struct2json/package.nix index 38d0b7b..b26f60b 100644 --- a/pkgs/s/struct2json/package.nix +++ b/pkgs/s/struct2json/package.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "shen390s"; repo = "struct2json"; rev = "master"; - hash = "sha256-oPMHKCbEuh0Z2zHHmSEec/m2nBv+CwGz9E6Sc5vfMbM="; + hash = "sha256-ZCJC6NmdL4EASlJYlWym3rjPK6qaKGtZMQhY0GIqTTU="; }; nativeBuildInputs = [ From 27e9f00c690adea74266a58cdb9d2174bc7b2780 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Wed, 24 Dec 2025 15:34:48 +0800 Subject: [PATCH 08/14] enable debug for capnpc --- pkgs/c/capnpc/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/c/capnpc/package.nix b/pkgs/c/capnpc/package.nix index d91de40..e7d9a76 100644 --- a/pkgs/c/capnpc/package.nix +++ b/pkgs/c/capnpc/package.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation { ''; configurePhase = '' - cmake --preset=ci-linux_x86_64 -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=$out + cmake --preset=ci-linux_x86_64 -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$out ''; buildPhase = '' From 828497661dbef0721ca1aceb0b76fd71086a720b Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Wed, 24 Dec 2025 15:46:35 +0800 Subject: [PATCH 09/14] enable debug for capnpc --- pkgs/c/capnpc/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/c/capnpc/package.nix b/pkgs/c/capnpc/package.nix index e7d9a76..48bb58e 100644 --- a/pkgs/c/capnpc/package.nix +++ b/pkgs/c/capnpc/package.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation { ''; configurePhase = '' - cmake --preset=ci-linux_x86_64 -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$out + cmake --preset=ci-linux_x86_64 -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$out ''; buildPhase = '' From d6e6711f401446ebfec291ad1a3fbb58fd33720d Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Thu, 22 Jan 2026 14:42:49 +0800 Subject: [PATCH 10/14] fix ttf fonts --- default.nix | 2 ++ pkgs/f/fonts/package.nix | 61 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 pkgs/f/fonts/package.nix diff --git a/default.nix b/default.nix index 38a8ea3..63ec7a0 100644 --- a/default.nix +++ b/default.nix @@ -74,6 +74,7 @@ let struct2json = callPackage ./pkgs/s/struct2json/package.nix { pkgs = pkgs; }; + my-ttf-fonts = callPackage ./pkgs/f/fonts/package.nix {}; in { xbuild = xbuild; @@ -87,4 +88,5 @@ in libcello_debug = libcello_debug; packcc = packcc_main; struct2json = struct2json; + my-ttf-fonts = my-ttf-fonts; } diff --git a/pkgs/f/fonts/package.nix b/pkgs/f/fonts/package.nix new file mode 100644 index 0000000..3f02acd --- /dev/null +++ b/pkgs/f/fonts/package.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenv, +# fetchFromGitea, +# fetchFromGitHub, +# fetchgit, + pkgs? import {}, + pkg-config, +}: + +let + meta = with lib; { + description = "Some true type fonts"; + homepage = "https://github.com/shen390s/my-ttf-fonts"; + license = lib.licenses.asl20; + platforms = lib.platforms.unix; + }; + pname = "my-ttf-fonts"; + version = "1.0"; + mysource = pkgs.runCommand "download-fonts" { + nativeBuiltInputs = [ pkgs.curl ]; + outputHash = "sha256-JMWxG0lCkzXhuBoBtEk8N0g6qrLRJo0WGki9A+yTbhU="; + outputHashAlgo = "sha256"; + outputHashMode = "flat"; + } '' + ${pkgs.curl}/bin/curl --output $out \ + --location \ + --max-redirs 20 \ + --retry 3 \ + --disable-epsv \ + --cookie-jar cookies \ + --insecure \ + --user-agent curl/8.17.0 -C - --fail \ + https://gitee.com/shen390s/my-ttf-fonts/archive/refs/tags/v1.0.tar.gz + ''; +in +stdenv.mkDerivation (finalAttrs: { + pname = pname; + version = version; + + src = mysource; + + unpackPhase = '' + tar -zxvf $src + ''; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + _fontdir="${pname}-v${version}" + if [ -d $_fontdir/fonts/truetype ]; then + ls $_fontdir/fonts/truetype/* + cp -r $_fontdir/fonts/truetype/*.ttf $out/share/fonts/truetype/ + cp -r $_fontdir/fonts/truetype/*.ttc $out/share/fonts/truetype/ + else + echo "No fonts found in $_fontdir/fonts/truetype" + exit 0 + fi + ''; + + inherit meta; +}) From 7eb8e54aeac0203eba66dc0b7fc8d55c2a68944c Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Tue, 3 Feb 2026 10:52:33 +0800 Subject: [PATCH 11/14] fix packcc hash --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 63ec7a0..9be3b31 100644 --- a/default.nix +++ b/default.nix @@ -39,7 +39,7 @@ let owner = "arithy"; repo = "packcc"; rev = "main"; - hash = "sha256-oE9rdZmEEd8op5jkAzqEyD5rcZatn3IKIIJiQhGsqoc="; + hash = "sha256-zkrpPGLylgPpV1iyXosVbsbn2qt8/+WnBeK/w1WtwBk="; }; nativeBuildInputs = [ From 0286e0d6454dec4c00815085022f19d4c0ebe73b Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Fri, 27 Mar 2026 11:35:17 +0800 Subject: [PATCH 12/14] add gost-ctl --- default.nix | 2 + pkgs/g/gost-ctl/gost-ctl | 174 ++++++++++++++++++++++++++++++++++++ pkgs/g/gost-ctl/package.nix | 28 ++++++ 3 files changed, 204 insertions(+) create mode 100755 pkgs/g/gost-ctl/gost-ctl create mode 100644 pkgs/g/gost-ctl/package.nix diff --git a/default.nix b/default.nix index 9be3b31..31019c3 100644 --- a/default.nix +++ b/default.nix @@ -3,6 +3,7 @@ with pkgs; let cedro = callPackage ./pkgs/c/cedro/package.nix {}; capnpc = callPackage ./pkgs/c/capnpc/package.nix {}; + gost-ctl = callPackage ./pkgs/g/gost-ctl/package.nix {}; xbuild = callPackage ./pkgs/x/xbuild/package.nix { pkgs = pkgs; cedro = cedro; @@ -80,6 +81,7 @@ in xbuild = xbuild; capnpc = capnpc; cedro = cedro; + gost-ctl = gost-ctl; zlog_with_pkgconf = zlog_with_pkgconf; tinylog = tinylog; unity_test_with_color = unity_test_with_color; diff --git a/pkgs/g/gost-ctl/gost-ctl b/pkgs/g/gost-ctl/gost-ctl new file mode 100755 index 0000000..dc69718 --- /dev/null +++ b/pkgs/g/gost-ctl/gost-ctl @@ -0,0 +1,174 @@ +#!/bin/bash +# gost-ctl — manage the GOST proxy tunnel and container network attachments +# +# Usage: gost-ctl [args] +# +# Commands: +# start Start gost-tunnel service and watcher +# stop Stop gost-tunnel service and watcher +# restart Restart gost-tunnel service +# attach Attach a container to the bridge (idempotent) +# detach Detach a container from the bridge +# status Show tunnel, bridge, and container status +# +# Config resolution (first match wins): +# $GOST_TUNNEL_CONFIG env var → /etc/gost-tunnel/env → .env in script dir + +set -e + +# ─── Config ───────────────────────────────────────────────────────────────── + +CONFIG_FILE="${GOST_TUNNEL_CONFIG:-/etc/gost-tunnel/env}" +if [ ! -f "$CONFIG_FILE" ]; then + CONFIG_FILE="$(dirname "$(realpath "$0")")/.env" +fi +if [ ! -f "$CONFIG_FILE" ]; then + echo "ERROR: config not found. Set GOST_TUNNEL_CONFIG or place .env next to gost-ctl" + exit 1 +fi +# shellcheck source=/dev/null +source "$CONFIG_FILE" + +# ─── Helpers ──────────────────────────────────────────────────────────────── + +log() { echo "[$(date '+%H:%M:%S')] $*"; } + +require_root() { + [ "$(id -u)" -eq 0 ] || { echo "ERROR: gost-ctl must be run as root"; exit 1; } +} + +# ─── Commands ─────────────────────────────────────────────────────────────── + +cmd_start() { + systemctl start gost-tunnel gost-tunnel-watcher + log "gost-tunnel started" +} + +cmd_stop() { + systemctl stop gost-tunnel-watcher gost-tunnel + log "gost-tunnel stopped" +} + +cmd_restart() { + systemctl restart gost-tunnel + log "gost-tunnel restarted" +} + +cmd_attach() { + require_root + local cname="$1" cip="$2" + [ -n "$cname" ] && [ -n "$cip" ] \ + || { echo "Usage: gost-ctl attach "; exit 1; } + + local veth_h="veth-${cname}-h" veth_c="veth-${cname}-c" + + # Idempotency: skip if already attached + if ip link show "$veth_h" >/dev/null 2>&1; then + log "$cname already attached (veth exists), skipping." + return 0 + fi + + # Wait for container PID + local pid + for i in $(seq 1 30); do + pid=$(docker inspect -f '{{.State.Pid}}' "$cname" 2>/dev/null) + [[ "$pid" =~ ^[0-9]+$ ]] && [ "$pid" -gt 0 ] && break + log "Waiting for $cname PID... ($i/30)"; sleep 1 + done + [[ "$pid" =~ ^[0-9]+$ ]] && [ "$pid" -gt 0 ] \ + || { log "ERROR: $cname PID not found"; docker logs "$cname"; exit 1; } + + log "$cname PID: $pid" + mkdir -p /var/run/netns + ln -sfT "/proc/$pid/ns/net" "/var/run/netns/$cname" + + ip link add "$veth_h" type veth peer name "$veth_c" + ip link set "$veth_h" master "$BRIDGE_NAME" + ip link set "$veth_h" up + ip link set "$veth_c" netns "$cname" + ip netns exec "$cname" ip link set "$veth_c" name eth0 + ip netns exec "$cname" ip link set lo up + ip netns exec "$cname" ip link set eth0 up + ip netns exec "$cname" ip addr add "${cip}/24" dev eth0 + ip netns exec "$cname" ip route add default via "$BRIDGE_IP" + log "$cname attached at $cip via $BRIDGE_IP" +} + +cmd_detach() { + require_root + local cname="$1" + [ -n "$cname" ] || { echo "Usage: gost-ctl detach "; exit 1; } + + local veth_h="veth-${cname}-h" + if ip link del "$veth_h" 2>/dev/null; then + log "$cname veth removed" + else + log "$cname veth not found (already detached?)" + fi + rm -f "/var/run/netns/$cname" + log "$cname detached" +} + +cmd_status() { + echo "" + local svc_state watcher_state + svc_state=$(systemctl is-active gost-tunnel 2>/dev/null || echo "inactive") + watcher_state=$(systemctl is-active gost-tunnel-watcher 2>/dev/null || echo "inactive") + echo "Service: $svc_state" + echo "Watcher: $watcher_state" + + if ip link show "$TUN_NAME" >/dev/null 2>&1; then + local tun_addr + tun_addr=$(ip -4 addr show "$TUN_NAME" | awk '/inet /{print $2}' | head -1) + echo "TUN: $TUN_NAME UP ${tun_addr:-}" + else + echo "TUN: $TUN_NAME DOWN" + fi + + if ip link show "$BRIDGE_NAME" >/dev/null 2>&1; then + local br_addr + br_addr=$(ip -4 addr show "$BRIDGE_NAME" | awk '/inet /{print $2}' | head -1) + echo "Bridge: $BRIDGE_NAME UP ${br_addr:-}" + else + echo "Bridge: $BRIDGE_NAME DOWN" + fi + + echo "" + echo "Attached containers:" + local found=0 + for veth in $(ip link show 2>/dev/null | grep -oP 'veth-\S+-h' | sort -u); do + local cname="${veth#veth-}"; cname="${cname%-h}" + local cip + cip=$(ip netns exec "$cname" ip -4 addr show eth0 2>/dev/null \ + | awk '/inet /{print $2}' | head -1 || echo "") + local link_state + link_state=$(ip link show "$veth" 2>/dev/null | grep -oP '(?<=state )\S+' | head -1) + printf " %-16s %-18s %s\n" "$cname" "$cip" "$veth ${link_state:-?}" + found=1 + done + [ "$found" -eq 0 ] && echo " (none)" + echo "" +} + +# ─── Dispatch ─────────────────────────────────────────────────────────────── + +case "${1:-}" in + start) cmd_start ;; + stop) cmd_stop ;; + restart) cmd_restart ;; + attach) shift; cmd_attach "$@" ;; + detach) shift; cmd_detach "$@" ;; + status) cmd_status ;; + *) + echo "Usage: gost-ctl [args]" + echo "" + echo "Commands:" + echo " start Start gost-tunnel service and watcher" + echo " stop Stop gost-tunnel service and watcher" + echo " restart Restart gost-tunnel service" + echo " attach Attach container to bridge" + echo " detach Detach container from bridge" + echo " status Show tunnel and container status" + exit 1 + ;; +esac diff --git a/pkgs/g/gost-ctl/package.nix b/pkgs/g/gost-ctl/package.nix new file mode 100644 index 0000000..4c6df37 --- /dev/null +++ b/pkgs/g/gost-ctl/package.nix @@ -0,0 +1,28 @@ +# xbuild.nix +{ + lib, + stdenv, + pkgs, + ... +}: + +let + gost-ctl=stdenv.mkDerivation { + pname = "gost-ctl"; + version = "0.0.1"; + + src = ./.; + + nativeBuildInputs = [ + pkgs.gost + ]; + + installPhase = '' + mkdir -p $out/bin + cp gost-ctl $out/bin + chmod +x $out/bin/gost-ctl + ''; + }; + +in + gost-ctl From d14037ffd66887ce83a68a565c6010901817118c Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Fri, 27 Mar 2026 21:04:40 +0800 Subject: [PATCH 13/14] add norouter --- .gitignore | 1 + default.nix | 2 ++ pkgs/n/norouter/package.nix | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 .gitignore create mode 100644 pkgs/n/norouter/package.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/default.nix b/default.nix index 31019c3..8223628 100644 --- a/default.nix +++ b/default.nix @@ -4,6 +4,7 @@ let cedro = callPackage ./pkgs/c/cedro/package.nix {}; capnpc = callPackage ./pkgs/c/capnpc/package.nix {}; gost-ctl = callPackage ./pkgs/g/gost-ctl/package.nix {}; + norouter = callPackage ./pkgs/n/norouter/package.nix {}; xbuild = callPackage ./pkgs/x/xbuild/package.nix { pkgs = pkgs; cedro = cedro; @@ -82,6 +83,7 @@ in capnpc = capnpc; cedro = cedro; gost-ctl = gost-ctl; + norouter = norouter; zlog_with_pkgconf = zlog_with_pkgconf; tinylog = tinylog; unity_test_with_color = unity_test_with_color; diff --git a/pkgs/n/norouter/package.nix b/pkgs/n/norouter/package.nix new file mode 100644 index 0000000..e2cf540 --- /dev/null +++ b/pkgs/n/norouter/package.nix @@ -0,0 +1,25 @@ +{ stdenvNoCC, lib, fetchurl, autoPatchelfHook, zlib, openssl }: + +stdenvNoCC.mkDerivation rec { + pname = "norouter"; + version = "0.6.5"; + + src = fetchurl { + url = "https://github.com/${pname}/${pname}/releases/download/v${version}/${pname}-Linux-x86_64.tgz"; + hash = "sha256-kNAzGBuYLLHITGJAerH27kj8MjmxjII63ORym//rJEk="; + }; + + nativeBuildInputs = [ autoPatchelfHook ]; + buildInputs = [ zlib openssl ]; # Add required libraries + + dontUnpack = true; + + configurePhase = '' + cat $src |gzip -dc |tar xf - + ''; + + installPhase = '' + mkdir -p $out/bin + cp norouter $out/bin + ''; +} From 82f1a75c9831c9a1edf3a2c2103cca67f7eeef87 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Sat, 4 Apr 2026 17:10:38 +0800 Subject: [PATCH 14/14] add claude-gate --- default.nix | 4 ++++ pkgs/c/claude-gate/package.nix | 43 ++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 pkgs/c/claude-gate/package.nix diff --git a/default.nix b/default.nix index 8223628..9b0e833 100644 --- a/default.nix +++ b/default.nix @@ -72,6 +72,9 @@ let uem = callPackage ./pkgs/u/uem/package.nix { pkgs = pkgs; }; + claude-gate = callPackage ./pkgs/c/claude-gate/package.nix { + pkgs = pkgs; + }; cetcd = callPackage ./pkgs/c/cetcd/package.nix {}; struct2json = callPackage ./pkgs/s/struct2json/package.nix { pkgs = pkgs; @@ -93,4 +96,5 @@ in packcc = packcc_main; struct2json = struct2json; my-ttf-fonts = my-ttf-fonts; + claude-gate = claude-gate; } diff --git a/pkgs/c/claude-gate/package.nix b/pkgs/c/claude-gate/package.nix new file mode 100644 index 0000000..8a89b53 --- /dev/null +++ b/pkgs/c/claude-gate/package.nix @@ -0,0 +1,43 @@ +# claude-gate +{ + lib, + stdenv, + fetchFromGitHub, + pkgs, + ... +}: + +stdenv.mkDerivation { + pname = "claude-gate"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "shen390s"; + repo = "claude-gate"; + rev = "master"; + sha256 = "sha256-StvSYsWLbGQCXpzlOaXjd7VRn/8l+u3CVIiK1nyVGqU="; + }; + + nativeBuildInputs = [ + pkgs.go + pkgs.gcc + pkgs.gnumake + ]; + + env = { + GOPROXY = "https://goproxy.cn"; + }; + + buildPhase = '' + HOME=$TMPDIR + GOCACHE=$TMPDIR/gocache + GOPATH=$TMPDIR/go + export HOME GOCACHE GOPATH + make build + ''; + + installPhase = '' + mkdir -p $out/bin + cp claude-gate $out/bin + ''; +}