about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/adguardhome
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/adguardhome')
-rw-r--r--nixpkgs/pkgs/servers/adguardhome/bins.nix31
-rw-r--r--nixpkgs/pkgs/servers/adguardhome/default.nix32
-rwxr-xr-xnixpkgs/pkgs/servers/adguardhome/update.sh47
3 files changed, 110 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/adguardhome/bins.nix b/nixpkgs/pkgs/servers/adguardhome/bins.nix
new file mode 100644
index 000000000000..a47a8d33f434
--- /dev/null
+++ b/nixpkgs/pkgs/servers/adguardhome/bins.nix
@@ -0,0 +1,31 @@
+{ fetchurl, fetchzip }:
+{
+x86_64-darwin = fetchzip {
+  sha256 = "sha256-jIrzE1Je2dhMJuq3k8KL1VoHru5qaUAJCR3kumE9aO0=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_darwin_amd64.zip";
+};
+aarch64-darwin = fetchzip {
+  sha256 = "sha256-9BgGGCP8n+5Op+S1/yT/kdMvmiNgKkkXLQmqF2plJZY=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_darwin_arm64.zip";
+};
+i686-linux = fetchurl {
+  sha256 = "sha256-yPxLYXtH4bwQk2M2VTS5aJWTJciNaeXRRAcMBHuvkcA=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_386.tar.gz";
+};
+x86_64-linux = fetchurl {
+  sha256 = "sha256-sG64t1x70uKk844dT1g9GzJ+DgHuv7sUEBaVqoEmWOw=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_amd64.tar.gz";
+};
+aarch64-linux = fetchurl {
+  sha256 = "sha256-rUSfo1uJGbxx1n/VcLyq5zqiDo4g0caCpVcL2uZUSkE=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_arm64.tar.gz";
+};
+armv6l-linux = fetchurl {
+  sha256 = "sha256-ruICFAGEMXDeLvoOxHg2oEaYDHkoGZI+SozDXmmD9VU=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_armv6.tar.gz";
+};
+armv7l-linux = fetchurl {
+  sha256 = "sha256-mTGufMIKkj2R7QuNWKSKMt9KdwlZe9ORtJK5hIaeH/E=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_armv7.tar.gz";
+};
+}
diff --git a/nixpkgs/pkgs/servers/adguardhome/default.nix b/nixpkgs/pkgs/servers/adguardhome/default.nix
new file mode 100644
index 000000000000..44940468dc81
--- /dev/null
+++ b/nixpkgs/pkgs/servers/adguardhome/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, fetchzip, nixosTests }:
+
+let
+  inherit (stdenv.hostPlatform) system;
+  sources = import ./bins.nix { inherit fetchurl fetchzip; };
+in
+
+stdenv.mkDerivation rec {
+  pname = "adguardhome";
+  version = "0.107.36";
+  src = sources.${system} or (throw "Source for ${pname} is not available for ${system}");
+
+  installPhase = ''
+    install -m755 -D ./AdGuardHome $out/bin/adguardhome
+  '';
+
+  passthru = {
+    updateScript = ./update.sh;
+    schema_version = 24;
+    tests.adguardhome = nixosTests.adguardhome;
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/AdguardTeam/AdGuardHome";
+    description = "Network-wide ads & trackers blocking DNS server";
+    platforms = builtins.attrNames sources;
+    maintainers = with maintainers; [ numkem iagoq rhoriguchi ];
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = licenses.gpl3Only;
+    mainProgram = "adguardhome";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/adguardhome/update.sh b/nixpkgs/pkgs/servers/adguardhome/update.sh
new file mode 100755
index 000000000000..b7defa8113fa
--- /dev/null
+++ b/nixpkgs/pkgs/servers/adguardhome/update.sh
@@ -0,0 +1,47 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p curl gnugrep nix-prefetch jq
+
+# This file is based on /pkgs/servers/gotify/update.sh
+
+set -euo pipefail
+
+dirname="$(dirname "$0")"
+bins="$dirname/bins.nix"
+
+latest_release=$(curl --silent https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest)
+version=$(jq -r '.tag_name' <<<"$latest_release")
+
+echo "got version $version"
+
+schema_version=$(curl --silent "https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/${version}/internal/home/upgrade.go" \
+    | grep -Po '(?<=const currentSchemaVersion = )[[:digit:]]+$')
+
+echo "got schema_version $schema_version"
+
+declare -A systems
+systems[linux_386]=i686-linux
+systems[linux_amd64]=x86_64-linux
+systems[linux_arm64]=aarch64-linux
+systems[linux_armv6]=armv6l-linux
+systems[linux_armv7]=armv7l-linux
+systems[darwin_amd64]=x86_64-darwin
+systems[darwin_arm64]=aarch64-darwin
+
+echo '{ fetchurl, fetchzip }:' > "$bins"
+echo '{' >> "$bins"
+
+for asset in $(curl --silent https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest | jq -c '.assets[]') ; do
+    url="$(jq -r '.browser_download_url' <<< "$asset")"
+    adg_system="$(grep -Eo '(darwin|linux)_(386|amd64|arm64|armv6|armv7)' <<< "$url" || true)"
+    if [ -n "$adg_system" ]; then
+        fetch="$(grep '\.zip$' <<< "$url" > /dev/null && echo fetchzip || echo fetchurl)"
+        nix_system=${systems[$adg_system]}
+        nix_src="$(nix-prefetch -s --output nix $fetch --url $url)"
+        echo "$nix_system = $fetch $nix_src;" >> $bins
+    fi
+done
+
+echo '}' >> "$bins"
+
+sed -i -r -e "s/version\s*?=\s*?.*?;/version = \"${version#v}\";/" "$dirname/default.nix"
+sed -i -r -e "s/schema_version\s*?=\s*?.*?;/schema_version = ${schema_version};/" "$dirname/default.nix"