Compare commits

...

2 commits

Author SHA1 Message Date
Dmitry Voronin e9d48ee21d
Max: Add sway fan control steps. 2024-12-16 07:06:53 +03:00
Dmitry Voronin 5d347afb6c
Home: Disable zapret for ipv6. 2024-12-16 07:06:50 +03:00
6 changed files with 154 additions and 62 deletions

View file

@ -1,49 +1,77 @@
{ {
config, config,
inputs,
lib, lib,
pkgsMaster, pkgs,
... ...
}: let }: let
cfg = config.module.dpi; cfg = config.module.dpi.bypass;
whitelist = lib.optionalString (
(builtins.length cfg.whitelist) != 0
) "--hostlist ${pkgs.writeText "zapret-whitelist" (lib.concatStringsSep "\n" cfg.whitelist)}";
blacklist = lib.optionalString (
(builtins.length cfg.blacklist) != 0
) "--hostlist-exclude ${pkgs.writeText "zapret-blacklist" (lib.concatStringsSep "\n" cfg.blacklist)}";
params = lib.concatStringsSep " " cfg.params;
qnum = toString cfg.qnum;
in { in {
disabledModules = [ "services/networking/zapret.nix" ]; disabledModules = [ "services/networking/zapret.nix" ];
imports = [ "${inputs.nixpkgsMaster}/nixos/modules/services/networking/zapret.nix" ]; # imports = [ "${inputs.nixpkgsMaster}/nixos/modules/services/networking/zapret.nix" ];
config = lib.mkIf cfg.bypass.enable { config = lib.mkIf cfg.enable (lib.mkMerge [
services.zapret = { {
inherit (cfg.bypass) params; systemd.services.zapret = {
enable = true; description = "DPI bypass service";
package = pkgsMaster.zapret; wantedBy = [ "multi-user.target" ];
httpMode = "full"; after = [ "network.target" ];
httpSupport = true; serviceConfig = {
udpSupport = true; ExecStart = "${cfg.package}/bin/nfqws --pidfile=/run/nfqws.pid ${params} ${whitelist} ${blacklist} --qnum=${qnum}";
udpPorts = [ Type = "simple";
"50000:50099" PIDFile = "/run/nfqws.pid";
]; Restart = "always";
whitelist = [ RuntimeMaxSec = "1h"; # This service loves to crash silently or cause network slowdowns. It also restarts instantly. Restarting it at least hourly provided the best experience.
"youtube.com"
"googlevideo.com" # Hardening.
"ytimg.com" DevicePolicy = "closed";
"youtu.be" KeyringMode = "private";
"rutracker.org" PrivateTmp = true;
"rutracker.cc" PrivateMounts = true;
"rutrk.org" ProtectHome = true;
"t-ru.org" ProtectHostname = true;
"medium.com" ProtectKernelModules = true;
"dis.gd" ProtectKernelTunables = true;
"discord.co" ProtectSystem = "strict";
"discord.com" ProtectProc = "invisible";
"discord.dev" RemoveIPC = true;
"discord.gg" RestrictNamespaces = true;
"discord.gift" RestrictRealtime = true;
"discord.media" RestrictSUIDSGID = true;
"discord.new" SystemCallArchitectures = "native";
"discordapp.com"
"discordapp.net"
"discordcdn.com"
"discordstatus.com"
];
}; };
}; };
} }
# Route system traffic via service for specified ports.
(lib.mkIf cfg.configureFirewall {
networking.firewall.extraCommands =
let
httpParams = lib.optionalString (
cfg.httpMode == "first"
) "-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6";
udpPorts = lib.concatStringsSep "," cfg.udpPorts;
in
''
iptables -t mangle -I POSTROUTING -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
''
+ lib.optionalString (cfg.httpSupport) ''
iptables -t mangle -I POSTROUTING -p tcp --dport 80 ${httpParams} -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
''
+ lib.optionalString (cfg.udpSupport) ''
iptables -t mangle -A POSTROUTING -p udp -m multiport --dports ${udpPorts} -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
'';
})
]);
}

View file

@ -2,5 +2,6 @@
text = '' text = ''
# Meta key. Use Mod1 for Alt. # Meta key. Use Mod1 for Alt.
set $mod Mod4 set $mod Mod4
set $sysmod print
''; '';
} }

View file

@ -1,24 +1,23 @@
{ ... }: let { ... }: let
brstep = 5; brstep = 5;
mod = "print";
in { in {
text = '' text = ''
bindsym ${mod} input * xkb_switch_layout 0 bindsym $sysmod input * xkb_switch_layout 0
bindsym --to-code ${mod}+a exec 'swayscript network' bindsym --to-code $sysmod+a exec 'swayscript network'
bindsym --to-code ${mod}+c exec 'systemctl reboot -i' bindsym --to-code $sysmod+c exec 'systemctl reboot -i'
bindsym --to-code ${mod}+d exec 'swayscript dnd' bindsym --to-code $sysmod+d exec 'swayscript dnd'
bindsym --to-code ${mod}+g exec 'swayscript gaming' bindsym --to-code $sysmod+g exec 'swayscript gaming'
bindsym --to-code ${mod}+l exec 'powerlimit toggle' bindsym --to-code $sysmod+l exec 'powerlimit toggle'
bindsym --to-code ${mod}+m exec 'swayscript monitor' bindsym --to-code $sysmod+m exec 'swayscript monitor'
bindsym --to-code ${mod}+p exec 'powersave toggle' bindsym --to-code $sysmod+p exec 'powersave toggle'
bindsym --to-code ${mod}+r exec 'swayscript reload' bindsym --to-code $sysmod+r exec 'swayscript reload'
bindsym --to-code ${mod}+v exec 'swayscript vpn' bindsym --to-code $sysmod+v exec 'swayscript vpn'
bindsym --to-code ${mod}+x exec 'systemctl poweroff -i' bindsym --to-code $sysmod+x exec 'systemctl poweroff -i'
bindsym --to-code ${mod}+z exec 'systemctl suspend -i' bindsym --to-code $sysmod+z exec 'systemctl suspend -i'
bindsym --to-code ${mod}+w exec light -A ${toString brstep} bindsym --to-code $sysmod+w exec light -A ${toString brstep}
bindsym XF86MonBrightnessUp exec light -A ${toString brstep} bindsym XF86MonBrightnessUp exec light -A ${toString brstep}
bindsym --to-code ${mod}+s exec light -U ${toString brstep} bindsym --to-code $sysmod+s exec light -U ${toString brstep}
bindsym XF86MonBrightnessDown exec light -U ${toString brstep} bindsym XF86MonBrightnessDown exec light -U ${toString brstep}
''; '';
} }

View file

@ -27,10 +27,21 @@
"--dpi-desync-ttl=1" "--dpi-desync-ttl=1"
"--dpi-desync-autottl=2" "--dpi-desync-autottl=2"
"--dpi-desync-ttl6=1" # "--dpi-desync-ttl6=1"
"--dpi-desync-autottl6=2" # "--dpi-desync-autottl6=2"
"--dpi-desync-any-protocol" # "--dpi-desync-any-protocol"
];
whitelist = [
"youtube.com"
"googlevideo.com"
"ytimg.com"
"youtu.be"
"rutracker.org"
"rutracker.cc"
"rutrk.org"
"t-ru.org"
"medium.com"
]; ];
}; };
amd = { amd = {

View file

@ -1,5 +1,9 @@
# SEE: https://github.com/Sabrina-Fox/WM2-Help # SEE: https://github.com/Sabrina-Fox/WM2-Help
{ ... }: { {
__findFile,
pkgs,
...
}: {
home.nixos.enable = true; home.nixos.enable = true;
user = { user = {
root = true; root = true;
@ -20,8 +24,20 @@
display = { display = {
primary = "eDP-1"; primary = "eDP-1";
}; };
sway.extraConfig = [ sway.extraConfig = let
# wm2fc = "${pkgs.callPackage <package/wm2fc> {}}/bin/wm2fc";
in [
"output eDP-1 scale 1.75" "output eDP-1 scale 1.75"
"bindsym $sysmod+0 exec /run/wrappers/bin/wm2fc 0"
"bindsym $sysmod+9 exec /run/wrappers/bin/wm2fc a"
"bindsym $sysmod+1 exec /run/wrappers/bin/wm2fc 23"
"bindsym $sysmod+2 exec /run/wrappers/bin/wm2fc 46"
"bindsym $sysmod+3 exec /run/wrappers/bin/wm2fc 69"
"bindsym $sysmod+4 exec /run/wrappers/bin/wm2fc 92"
"bindsym $sysmod+5 exec /run/wrappers/bin/wm2fc 115"
"bindsym $sysmod+6 exec /run/wrappers/bin/wm2fc 138"
"bindsym $sysmod+7 exec /run/wrappers/bin/wm2fc 161"
"bindsym $sysmod+8 exec /run/wrappers/bin/wm2fc 184"
]; ];
hwmon = { hwmon = {
file = "temp1_input"; file = "temp1_input";

View file

@ -1,12 +1,49 @@
{ {
lib, lib,
pkgsMaster,
... ...
}: { }: {
options.module.dpi.bypass = { options.module.dpi.bypass = {
enable = lib.mkEnableOption "the DPI bypass."; enable = lib.mkEnableOption "the Zapret DPI bypass service.";
package = lib.mkPackageOption pkgsMaster "zapret" { };
params = lib.mkOption { params = lib.mkOption {
default = [ ]; default = [ ];
type = with lib.types; listOf str; type = with lib.types; listOf str;
}; };
whitelist = lib.mkOption {
default = [ ];
type = with lib.types; listOf str;
};
blacklist = lib.mkOption {
default = [ ];
type = with lib.types; listOf str;
};
qnum = lib.mkOption {
default = 200;
type = lib.types.int;
};
configureFirewall = lib.mkOption {
default = true;
type = lib.types.bool;
};
httpSupport = lib.mkOption {
default = true;
type = lib.types.bool;
};
httpMode = lib.mkOption {
default = "first";
type = lib.types.enum [
"first"
"full"
];
};
udpSupport = lib.mkOption {
default = false;
type = lib.types.bool;
};
udpPorts = lib.mkOption {
default = [ ];
type = with lib.types; listOf str;
};
}; };
} }