aboutsummaryrefslogblamecommitdiff
path: root/modules/nixos/base.nix
blob: 9ed3abc62b233557d9d6611e85eb176d1b0567ec (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                



































                                                            














































                                                                                        
{
  self,
  config,
  pkgs,
  lib,
  ...
}:
{
  boot = {
    kernelPackages = pkgs.linuxPackages_latest;
    kernel.sysctl = {
      "net.ipv4.tcp_congestion_control" = "bbr";
      "net.ipv4.tcp_ecn" = 1;
      "net.ipv4.tcp_fastopen" = 3;
      "net.ipv4.tcp_tw_reuse" = 1;
    };
  };

  networking = {
    useNetworkd = true;
    # Used by systemd-resolved, not directly by resolv.conf.
    nameservers = [
      "8.8.8.8#dns.google"
      "1.0.0.1#cloudflare-dns.com"
    ];
    firewall = {
      enable = true;
      allowPing = true;
      logRefusedConnections = false;
    };
  };

  systemd.network = {
    enable = true;
  };

  services.resolved = {
    enable = true;
    dnssec = "false";
  };

  services.fail2ban = {
    enable = true;
    ignoreIP = [
      "10.100.0.0/24" # wireguard
    ];
    bantime = "1h";
    bantime-increment = {
      enable = true;
      maxtime = "168h";
      factor = "4";
    };
  };

  i18n = {
    defaultLocale = "en_US.UTF-8";
    supportedLocales = [
      "en_US.UTF-8/UTF-8"
    ];
  };

  time.timeZone = "America/Los_Angeles";

  users.motdFile = "/etc/motd";

  environment.etc.motd.text = ''
    Machine  ${config.networking.hostName}
     NixOS   ${config.system.nixos.release}
       @     ${self.shortRev or self.dirtyShortRev}
  '';

  ## disable that slow "building man-cache" step
  documentation.man.generateCaches = lib.mkForce false;

  users = {
    mutableUsers = false;
    users.root.openssh.authorizedKeys.keys = [
      "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINBkozy+X96u5ciX766bJ/AyQ3xm1tXZTIr5+4PVFZFi"
    ];
  };

  security.sudo.wheelNeedsPassword = false;

  environment.systemPackages = with pkgs; [
    curl
    dysk
    fd
    fish
    git
    htop
    jq
    mtr
    pciutils
    powertop
    ripgrep
    tcpdump
    traceroute
    vim
    wireguard-tools
  ];
}