Add nixos/configuration.nix

This commit is contained in:
gigirassy
2025-11-10 17:05:16 +01:00
parent 1f992de64d
commit 44a4342cd0
+282
View File
@@ -0,0 +1,282 @@
{ config, pkgs, lib, ... }: {
imports = [
./hardware-configuration.nix
./networking.nix # generated at runtime by nixos-infect
./modules/smart-ipv6-rotator.nix # ipv6 rotator
./modules/watchdog.nix # anubis watchdog to auto-report to abuseipdb
];
environment.systemPackages = with pkgs; [
(lib.hiPrio pkgs.uutils-coreutils-noprefix)
(lib.hiPrio pkgs.uutils-findutils)
(lib.hiPrio pkgs.uutils-diffutils)
fastfetch # fetch stats!
btop
python3Minimal
git
gnuplot
ctop
starship
nftables
];
users.users.nune = {
isNormalUser = true;
description = "Admin user";
createHome = true;
extraGroups = [ "wheel" "docker" ];
shell = pkgs.zsh;
openssh.authorizedKeys.keys = [
"ssh-ed25519 XXXXX" # i know its fine to share but im a goober
];
};
programs.zsh = {
enable = true;
shellAliases = {
ne = "sudo nano /etc/nixos/configuration.nix && sudo nixos-rebuild switch";
ncg = "sudo nix-collect-garbage";
};
};
programs.starship.enable = true;
# enable sudo; keep password requirement by default
security.sudo.enable = true;
security.sudo.wheelNeedsPassword = true;
services.snowflake-proxy = {
enable = true;
capacity = 50;
};
services.yggdrasil = {
enable = true;
persistentKeys = true;
settings = {
Peers = [
"tcp://[2a14:1e00:3:15c::]:65535"
"ws://vpn.itrus.su:7994"
"tls://23.137.249.65:444"
"tcp://[2001:470:1f13:e56::64]:39565"
"tcp://51.15.204.214:12345"
"tcp://[2a0b:4142:e9e::2]:65535"
"tcp://[2a0c:b641:ce0::25d8:c5d6]:65535"
"tls://n.ygg.yt:443"
"tcp://94.159.110.4:65535"
"tcp://[2a0b:4142:ce0::2]:65535"
];
Listen = [
"tls://0.0.0.0:32000"
"tls://[::]:32000"
];
};
};
services.i2pd = {
enable = true;
enableIPv4 = true;
port = 35252;
address = "91.98.126.143" ;
enableIPv6 = true; # if you don't have IPv6, leave false
ifname = "eth0"; # change to your interface
bandwidth = 1000; # limit to 500 KB/s (≈ 4 Mb/s)
share = 50; # allocate 50% of that to transit
notransit = false; # allow transit
floodfill = false; # not acting as floodfill
nat = true; # if behind NAT
};
networking.firewall.enable = true;
networking.firewall.trustedInterfaces = [ "lo" ]; # loopback
networking.firewall.allowedTCPPorts = [ 22 80 443 8080 9091 51413 4001 8013 27905 32000 31311 31312 31313 31314 35252];
networking.firewall.allowedUDPPorts = [ 51413 ]; # Transmission uses UDP for DHT/peer discovery
services.tailscale.enable = true;
services.smart-ipv6-rotator = {
enable = true;
ipv6range = "2a01:4f8:c2c:c398::/64";
rev = "master";
sha256 = "sha256-g2M+obfTGya3bPkNRvpptaBIx0X+94262vEfponycTY=";
};
services.cron = {
enable = true;
systemCronJobs = [
"* * * * * /root/trafficgen.sh >> /var/log/generate_traffic_png.log 2>&1"
"0 */6 * * * docker restart instafix_proxy"
"0 */12 * * * docker system prune -a -f"
"0 */1 * * * /bin/bash -lc 'for i in {1..10}; do [ -d /srv/arti$i/cache/dir_blobs ] && find /srv/arti$i/cache/dir_blobs -mindepth 1 -maxdepth 1 -exec rm -rf {} +; done'" # clear redlib cache
];
};
services.caddy = {
enable = true;
logFormat = ''level INFO'';
logDir = ''/var/log/caddy'';
virtualHosts."fan.blitzw.in".extraConfig = ''
reverse_proxy localhost:10417
'';
virtualHosts."skylib.blitzw.in".extraConfig = ''
reverse_proxy localhost:5081
'';
virtualHosts."tent.blitzw.in".extraConfig = ''
reverse_proxy localhost:5083
'';
virtualHosts."small.blitzw.in".extraConfig = ''
reverse_proxy localhost:5084
'';
virtualHosts."pinata.blitzw.in".extraConfig = ''
reverse_proxy localhost:4100
'';
virtualHosts."tube.blitzw.in".extraConfig = ''
basicauth {
guest $2a$12$7GQIZMMRZ69uz4r918I/SuZ/wqTkk1HFaSC3jeQs.GTPWicekcmtC
}
reverse_proxy 100.76.137.52:33020
'';
virtualHosts."hooligan.srv.blitzw.in".extraConfig = ''
root * /srv/landing
file_server
'';
virtualHosts."mirage.blitzw.in".extraConfig= ''
reverse_proxy localhost:35200 {
header_up X-Real-Ip {remote_host}
header_up X-Http-Version {http.request.proto}
header_up X-Forwarded-Host {host}
header_up Host {host}
header_up Referer {>Referer}
}
'';
virtualHosts."priviblur.blitzw.in".extraConfig= ''
reverse_proxy localhost:24215 {
header_up X-Real-Ip {remote_host}
header_up X-Http-Version {http.request.proto}
header_up X-Forwarded-Host {host}
header_up Host {host}
header_up Referer {>Referer}
}
'';
virtualHosts."genius.blitzw.in".extraConfig=''
reverse_proxy localhost:2006 {
header_up X-Real-Ip {remote_host}
header_up X-Http-Version {http.request.proto}
header_up X-Forwarded-Host {host}
header_up Host {host}
}
'';
virtualHosts."pin.blitzw.in".extraConfig= ''
reverse_proxy localhost:6600
'';
virtualHosts."search.blitzw.in".extraConfig = ''
reverse_proxy localhost:24999
'';
virtualHosts."wikimore.blitzw.in".extraConfig = ''
reverse_proxy localhost:8109
'';
virtualHosts."twitch.blitzw.in".extraConfig = ''
reverse_proxy localhost:5600
'';
virtualHosts."moz.blitzw.in".extraConfig = ''
reverse_proxy localhost:3012
'';
virtualHosts."rl.blitzw.in".extraConfig = ''
respond "301 Moved Permanently" 301
'';
virtualHosts."bilder.blitzw.in".extraConfig = ''
basicauth {
guest $2a$12$7GQIZMMRZ69uz4r918I/SuZ/wqTkk1HFaSC3jeQs.GTPWicekcmtC
}
reverse_proxy localhost:4243
'';
virtualHosts."sc.blitzw.in".extraConfig = ''
basicauth {
guest $2a$08$n0D.stczLfrMFJLleu7i5uAxpmwEs.EvjTlitmEAFvopi5xOqzK4y
}
reverse_proxy localhost:4665
'';
virtualHosts."yt2009.blitzw.in".extraConfig = ''
basicauth {
guest $2a$12$o/yxcMasmTKgCJGVmUNZ4OYYDHL4iPOeMgiZvUZrnoxtTWTnOBDke
}
reverse_proxy localhost:2009
'';
virtualHosts."ladder.blitzw.in".extraConfig = ''
reverse_proxy localhost:28000
'';
virtualHosts."lens.blitzw.in".extraConfig = ''
reverse_proxy localhost:4664
'';
virtualHosts."lf.blitzw.in".extraConfig = ''
basicauth {
lf $2a$12$HBepdgYKEdIEJ.bn0F4xUOHWciPK2mbBEAo2C3XDVD03ljnUmmTz6
}
reverse_proxy localhost:46000
'';
virtualHosts."test.blitzw.in".extraConfig = ''
reverse_proxy localhost:28001
'';
virtualHosts."fxstagram.com".extraConfig = ''
root * /srv/instafix
@root path /
handle @root {
file_server
}
@traffic path /traffic.png
handle @traffic {
file_server
}
handle {
reverse_proxy localhost:3000
}
'';
virtualHosts."fxstagram.com".serverAliases = [ "www.fxstagram.com" "1.fxstagram.com" "2.fxstagram.com" "3.fxstagram.com" ];
};
# ... your other config ...
services.journald.extraConfig = ''
# keep journals on disk (persistent) instead of only in /run
Storage=persistent
# keep more log data before rotation / vacuuming
# adjust these to taste (units: K M G)
RuntimeMaxUse=1G
RuntimeMaxFileSize=100M
SystemMaxUse=4G
SystemMaxFileSize=200M
SystemMaxFiles=100
# optionally keep logs for up to a time limit (if your systemd supports it)
# MaxRetentionSec=90d
'';
# ensure journals are flushed from /run to /var on shutdown so persistence works
systemd.services.systemd-journal-flush.enable = true;
virtualisation.docker.enable = true;
boot.tmp.cleanOnBoot = true;
zramSwap.enable = true;
networking.hostName = "hooligan";
networking.domain = "";
services.openssh = {
enable = true;
permitRootLogin = "no"; # disallow root SSH
passwordAuthentication = false; # disable password auth for SSH entirely
challengeResponseAuthentication = false;
extraConfig = ''
AllowUsers nune
'';
};
users.users.root.openssh.authorizedKeys.keys = [ ];
system.stateVersion = "23.11";
}