From c75c11c53dae0e006bf83fbbf6b5c025bc35fb04 Mon Sep 17 00:00:00 2001 From: Ali Rizvi Date: Fri, 21 Jun 2024 22:24:14 -0400 Subject: [PATCH 1/5] stevenblack-blocklist: 3.14.79 -> 3.14.84 --- pkgs/tools/networking/stevenblack-blocklist/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/stevenblack-blocklist/default.nix b/pkgs/tools/networking/stevenblack-blocklist/default.nix index 34f64cb5e480..07c6d33ac136 100644 --- a/pkgs/tools/networking/stevenblack-blocklist/default.nix +++ b/pkgs/tools/networking/stevenblack-blocklist/default.nix @@ -1,7 +1,7 @@ { lib, fetchFromGitHub }: let - version = "3.14.79"; + version = "3.14.84"; in fetchFromGitHub { name = "stevenblack-blocklist-${version}"; @@ -9,7 +9,7 @@ fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - hash = "sha256-MfQGu+Y4/A0GKIu9d//U+yiP0fN/7cWhEo2dut4UvcE="; + hash = "sha256-tahf6mdtmZofwMZfMsuDAqCR/V1qZt6vV+o6t4YTKG0="; meta = with lib; { description = "Unified hosts file with base extensions"; From 65c86d9d3380a50e94e1439648e6ac2bff04d570 Mon Sep 17 00:00:00 2001 From: Ali Rizvi Date: Tue, 25 Jun 2024 16:31:30 -0400 Subject: [PATCH 2/5] stevenblack-blocklist: `stdenvNoCC`, `updateScript` --- .../stevenblack-blocklist/default.nix | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/pkgs/tools/networking/stevenblack-blocklist/default.nix b/pkgs/tools/networking/stevenblack-blocklist/default.nix index 07c6d33ac136..45496f67f8a6 100644 --- a/pkgs/tools/networking/stevenblack-blocklist/default.nix +++ b/pkgs/tools/networking/stevenblack-blocklist/default.nix @@ -1,15 +1,19 @@ -{ lib, fetchFromGitHub }: - -let +{ + lib, + stdenvNoCC, + fetchFromGitHub, + nix-update-script, +}: +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "stevenblack-blocklist"; version = "3.14.84"; -in -fetchFromGitHub { - name = "stevenblack-blocklist-${version}"; - owner = "StevenBlack"; - repo = "hosts"; - rev = version; - hash = "sha256-tahf6mdtmZofwMZfMsuDAqCR/V1qZt6vV+o6t4YTKG0="; + src = fetchFromGitHub { + owner = "StevenBlack"; + repo = "hosts"; + rev = finalAttrs.version; + hash = "sha256-tahf6mdtmZofwMZfMsuDAqCR/V1qZt6vV+o6t4YTKG0="; + }; meta = with lib; { description = "Unified hosts file with base extensions"; @@ -21,4 +25,4 @@ fetchFromGitHub { frontear ]; }; -} +}) From 4299680f26e25cb524d6e4ee2d388e2ace540a6c Mon Sep 17 00:00:00 2001 From: Ali Rizvi Date: Tue, 25 Jun 2024 16:59:37 -0400 Subject: [PATCH 3/5] stevenblack-blocklist: move to `pkgs/by-name/st` --- .../st/stevenblack-blocklist/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{tools/networking/stevenblack-blocklist/default.nix => by-name/st/stevenblack-blocklist/package.nix} (100%) diff --git a/pkgs/tools/networking/stevenblack-blocklist/default.nix b/pkgs/by-name/st/stevenblack-blocklist/package.nix similarity index 100% rename from pkgs/tools/networking/stevenblack-blocklist/default.nix rename to pkgs/by-name/st/stevenblack-blocklist/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fa7df046ea89..3a3702691ea2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13207,8 +13207,6 @@ with pkgs; staticjinja = with python3.pkgs; toPythonApplication staticjinja; - stevenblack-blocklist = callPackage ../tools/networking/stevenblack-blocklist { }; - stress = callPackage ../tools/system/stress { }; stress-ng = callPackage ../tools/system/stress-ng { }; From 24e4ca08643099dfaa787edcac1c55c5ca251a6e Mon Sep 17 00:00:00 2001 From: Ali Rizvi Date: Wed, 26 Jun 2024 17:36:54 -0400 Subject: [PATCH 4/5] stevenblack-blocklist: split files into separate outputs --- .../st/stevenblack-blocklist/package.nix | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/st/stevenblack-blocklist/package.nix b/pkgs/by-name/st/stevenblack-blocklist/package.nix index 45496f67f8a6..eb77d5936486 100644 --- a/pkgs/by-name/st/stevenblack-blocklist/package.nix +++ b/pkgs/by-name/st/stevenblack-blocklist/package.nix @@ -11,10 +11,51 @@ stdenvNoCC.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; - rev = finalAttrs.version; + rev = "refs/tags/${finalAttrs.version}"; hash = "sha256-tahf6mdtmZofwMZfMsuDAqCR/V1qZt6vV+o6t4YTKG0="; }; + outputs = [ + # default src fallback + "out" + + # base hosts file + "ads" + + # extensions only + "fakenews" + "gambling" + "porn" + "social" + ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out $ads $fakenews $gambling $porn $social + + # out + find alternates -type f -not -name "hosts" -exec rm {} + + cp -r alternates $out + install -Dm644 hosts $out + + # ads + install -Dm644 hosts $ads + + # extensions + install -Dm644 alternates/fakenews-only/hosts $fakenews + install -Dm644 alternates/gambling-only/hosts $gambling + install -Dm644 alternates/porn-only/hosts $porn + install -Dm644 alternates/social-only/hosts $social + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + meta = with lib; { description = "Unified hosts file with base extensions"; homepage = "https://github.com/StevenBlack/hosts"; From ab98e84e0dee7899b99fc338277b768acaa74f34 Mon Sep 17 00:00:00 2001 From: Ali Rizvi Date: Wed, 26 Jun 2024 17:37:27 -0400 Subject: [PATCH 5/5] nixos/stevenblack: rework to use distinct package outputs --- nixos/modules/config/stevenblack.nix | 49 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/nixos/modules/config/stevenblack.nix b/nixos/modules/config/stevenblack.nix index 5b85073c6908..95f6c9e73eb3 100644 --- a/nixos/modules/config/stevenblack.nix +++ b/nixos/modules/config/stevenblack.nix @@ -1,34 +1,49 @@ -{ config, lib, pkgs, ... }: - +{ + config, + lib, + pkgs, + ... +}: let - inherit (lib) optionals mkOption mkEnableOption types mkIf elem concatStringsSep maintainers; + inherit (lib) + getOutput + maintainers + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; + cfg = config.networking.stevenblack; - - # needs to be in a specific order - activatedHosts = with cfg; [ ] - ++ optionals (elem "fakenews" block) [ "fakenews" ] - ++ optionals (elem "gambling" block) [ "gambling" ] - ++ optionals (elem "porn" block) [ "porn" ] - ++ optionals (elem "social" block) [ "social" ]; - - hostsPath = "${pkgs.stevenblack-blocklist}/alternates/" + concatStringsSep "-" activatedHosts + "/hosts"; in { options.networking.stevenblack = { enable = mkEnableOption "the stevenblack hosts file blocklist"; + package = mkPackageOption pkgs "stevenblack-blocklist" { }; + block = mkOption { - type = types.listOf (types.enum [ "fakenews" "gambling" "porn" "social" ]); + type = types.listOf ( + types.enum [ + "fakenews" + "gambling" + "porn" + "social" + ] + ); default = [ ]; description = "Additional blocklist extensions."; }; }; config = mkIf cfg.enable { - networking.hostFiles = [ ] - ++ optionals (activatedHosts != [ ]) [ hostsPath ] - ++ optionals (activatedHosts == [ ]) [ "${pkgs.stevenblack-blocklist}/hosts" ]; + networking.hostFiles = map (x: "${getOutput x cfg.package}/hosts") ([ "ads" ] ++ cfg.block); }; - meta.maintainers = [ maintainers.moni maintainers.artturin ]; + meta.maintainers = with maintainers; [ + moni + artturin + frontear + ]; }