diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/adguardhome')
-rw-r--r-- | nixpkgs/pkgs/servers/adguardhome/bins.nix | 31 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/adguardhome/default.nix | 32 | ||||
-rwxr-xr-x | nixpkgs/pkgs/servers/adguardhome/update.sh | 47 |
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" |