summary refs log tree commit diff
path: root/nixos/modules/config/stevenblack.nix
blob: 7e6235169847a338ac948be054a6a42eef6d50dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ config, lib, pkgs, ... }:

let
  inherit (lib) optionals mkOption mkEnableOption types mkIf elem concatStringsSep maintainers mdDoc;
  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 (mdDoc "the stevenblack hosts file blocklist");

    block = mkOption {
      type = types.listOf (types.enum [ "fakenews" "gambling" "porn" "social" ]);
      default = [ ];
      description = mdDoc "Additional blocklist extensions.";
    };
  };

  config = mkIf cfg.enable {
    networking.hostFiles = [ ]
      ++ optionals (activatedHosts != [ ]) [ hostsPath ]
      ++ optionals (activatedHosts == [ ]) [ "${pkgs.stevenblack-blocklist}/hosts" ];
  };

  meta.maintainers = [ maintainers.moni maintainers.artturin ];
}