Merge pull request #241680 from 4z3/networking.nftables.checkRulesetRedirects

Changed files
+21 -1
nixos
modules
services
networking
+21 -1
nixos/modules/services/networking/nftables.nix
···
'';
};
+
networking.nftables.checkRulesetRedirects = mkOption {
+
type = types.addCheck (types.attrsOf types.path) (attrs: all types.path.check (attrNames attrs));
+
default = {
+
"/etc/hosts" = config.environment.etc.hosts.source;
+
"/etc/protocols" = config.environment.etc.protocols.source;
+
"/etc/services" = config.environment.etc.services.source;
+
};
+
defaultText = literalExpression ''
+
{
+
"/etc/hosts" = config.environment.etc.hosts.source;
+
"/etc/protocols" = config.environment.etc.protocols.source;
+
"/etc/services" = config.environment.etc.services.source;
+
}
+
'';
+
description = mdDoc ''
+
Set of paths that should be intercepted and rewritten while checking the ruleset
+
using `pkgs.buildPackages.libredirect`.
+
'';
+
};
+
networking.nftables.preCheckRuleset = mkOption {
type = types.lines;
default = "";
···
cp $out ruleset.conf
sed 's|include "${deletionsScriptVar}"||' -i ruleset.conf
${cfg.preCheckRuleset}
-
export NIX_REDIRECTS=/etc/protocols=${pkgs.buildPackages.iana-etc}/etc/protocols:/etc/services=${pkgs.buildPackages.iana-etc}/etc/services
+
export NIX_REDIRECTS=${escapeShellArg (concatStringsSep ":" (mapAttrsToList (n: v: "${n}=${v}") cfg.checkRulesetRedirects))}
LD_PRELOAD="${pkgs.buildPackages.libredirect}/lib/libredirect.so ${pkgs.buildPackages.lklWithFirewall.lib}/lib/liblkl-hijack.so" \
${pkgs.buildPackages.nftables}/bin/nft --check --file ruleset.conf
'';