summary refs log tree commit diff
path: root/nixos/modules/services/networking
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2022-02-18 11:27:25 -0500
committerGitHub <noreply@github.com>2022-02-18 11:27:25 -0500
commitb3c0344c9d7d5dec543844f1ac7c17668e4622bb (patch)
treeef05c9d4f8b052257aa10b9c409d40815fdaf92e /nixos/modules/services/networking
parent95446037866cb8f8a131f8930958135223fa0e96 (diff)
parent6532d3417ea247f5088649027a9719a34ad64406 (diff)
downloadnixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar.gz
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar.bz2
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar.lz
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar.xz
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.tar.zst
nixpkgs-b3c0344c9d7d5dec543844f1ac7c17668e4622bb.zip
Merge pull request #156763 from ratsclub/blocky
nixos/blocky: init
Diffstat (limited to 'nixos/modules/services/networking')
-rw-r--r--nixos/modules/services/networking/blocky.nix40
1 files changed, 40 insertions, 0 deletions
diff --git a/nixos/modules/services/networking/blocky.nix b/nixos/modules/services/networking/blocky.nix
new file mode 100644
index 00000000000..7488e05fc03
--- /dev/null
+++ b/nixos/modules/services/networking/blocky.nix
@@ -0,0 +1,40 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.blocky;
+
+  format = pkgs.formats.yaml { };
+  configFile = format.generate "config.yaml" cfg.settings;
+in
+{
+  options.services.blocky = {
+    enable = mkEnableOption "Fast and lightweight DNS proxy as ad-blocker for local network with many features";
+
+    settings = mkOption {
+      type = format.type;
+      default = { };
+      description = ''
+        Blocky configuration. Refer to
+        <link xlink:href="https://0xerr0r.github.io/blocky/configuration/"/>
+        for details on supported values.
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.blocky = {
+      description = "A DNS proxy and ad-blocker for the local network";
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        DynamicUser = true;
+        ExecStart = "${pkgs.blocky}/bin/blocky --config ${configFile}";
+
+        AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
+        CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
+      };
+    };
+  };
+}