From 99892e9bfb144dbb3aa2b2dae336e7472206c9e1 Mon Sep 17 00:00:00 2001 From: linsui Date: Sat, 18 Feb 2023 20:59:30 +0800 Subject: [PATCH] sing-geosite: init at 20230202101858 --- pkgs/data/misc/sing-geosite/default.nix | 50 +++++++++++++++++++++++++ pkgs/data/misc/sing-geosite/main.go | 19 ++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 71 insertions(+) create mode 100644 pkgs/data/misc/sing-geosite/default.nix create mode 100644 pkgs/data/misc/sing-geosite/main.go diff --git a/pkgs/data/misc/sing-geosite/default.nix b/pkgs/data/misc/sing-geosite/default.nix new file mode 100644 index 00000000000..55ba01c6155 --- /dev/null +++ b/pkgs/data/misc/sing-geosite/default.nix @@ -0,0 +1,50 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, substituteAll +, v2ray-domain-list-community +}: + +let + patch = substituteAll { + src = ./main.go; + geosite_data = "${v2ray-domain-list-community}/share/v2ray/geosite.dat"; + }; +in +buildGoModule rec { + pname = "sing-geosite"; + inherit (v2ray-domain-list-community) version; + + src = fetchFromGitHub { + owner = "SagerNet"; + repo = "sing-geosite"; + rev = "4a32d56c1705f77668beb5828df0b0a051efdeb9"; + hash = "sha256-P/EBcwJI2G9327BNi84R+q6BABx9DEKpN6ETTp8Q4NU="; + }; + + vendorHash = "sha256-uQOmUXT2wd40DwwTCMnFFKd47eu+BPBDjiCGtUNFoKY="; + + patchPhase = '' + sed -i -e '/func main()/,/^}/d' -e '/"io"/a "io/ioutil"' main.go + cat ${patch} >> main.go + ''; + + buildPhase = '' + runHook preBuild + go run -v . + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -Dm644 geosite.db $out/share/sing-box/geosite.db + runHook postInstall + ''; + + meta = with lib; { + description = "community managed domain list"; + homepage = "https://github.com/SagerNet/sing-geosite"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ linsui ]; + }; +} diff --git a/pkgs/data/misc/sing-geosite/main.go b/pkgs/data/misc/sing-geosite/main.go new file mode 100644 index 00000000000..d059d99ffe1 --- /dev/null +++ b/pkgs/data/misc/sing-geosite/main.go @@ -0,0 +1,19 @@ +func main() { + outputFile, err := os.Create("geosite.db") + if err != nil { + panic(err) + } + defer outputFile.Close() + vData, err := ioutil.ReadFile("@geosite_data@") + if err != nil { + panic(err) + } + domainMap, err := parse(vData) + if err != nil { + panic(err) + } + err = geosite.Write(outputFile, domainMap) + if err != nil { + panic(err) + } +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5ce382334ef..f84cc61e152 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11957,6 +11957,8 @@ with pkgs; sing-box = callPackage ../tools/networking/sing-box { }; + sing-geosite = callPackage ../data/misc/sing-geosite { }; + sipcalc = callPackage ../tools/networking/sipcalc { }; skribilo = callPackage ../tools/typesetting/skribilo {