about summary refs log tree commit diff
path: root/configuration.nix
blob: f2487ef9ea97c8713200a93a2873a3e1176d7043 (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# Overall configuration
# Copyright (C) 2022-2024  Nguyễn Gia Phong
#
# This file is part of loang configuration.
#
# Loang configuration is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Loang configuration is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with loang configuration.  If not, see <https://www.gnu.org/licenses/>.

{ pkgs, ... }:
{
  environment = {
    enableAllTerminfo = true;
    systemPackages = with pkgs; [ git htop man-pages rsync vim ];
  };

  fileSystems."/mnt/nas" = {
    device = "172.16.129.228:/nas/4905";
    options = [ "nfsvers=3" ];
    fsType = "nfs";
  };

  imports = [
    ./access.nix
    ./automation.nix
    ./dbms.nix
    ./dns.nix
    ./fail2ban.nix
    ./irc.nix
    ./git.nix
    ./mail.nix
    ./matrix.nix
    ./music.nix
    ./push.nix
    ./static.nix
    ./status.nix
    ./vpsadminos.nix
    ./wikiwiki.nix
    ./vpn.nix
  ];

  networking = {
    domain = "loang.net";
    hostName = "brno";

    nftables = {
      enable = true;
      ruleset = ''
        table inet filter {
          # https://openai.com/gptbot-ranges.txt
          set gptbot_ipv4 {
            type ipv4_addr
            flags interval
            elements = {
              20.15.240.64/28,
              20.15.240.80/28,
              20.15.240.96/28,
              20.15.240.176/28,
              20.15.241.0/28,
              20.15.242.128/28,
              20.15.242.144/28,
              20.15.242.192/28,
              40.83.2.64/28
            }
          }

          chain output {
            type filter hook output priority 0
            policy accept
            ip daddr @gptbot_ipv4 counter reject
          }

          chain input {
            type filter hook output priority 0
            policy accept
            ip saddr @gptbot_ipv4 counter reject
          }
        }
      '';
    };
  };

  nix.package = pkgs.lix;
  system.stateVersion = "22.05";

  systemd.extraConfig = ''
    DefaultTimeoutStartSec=900s
  '';

  time.timeZone = "UTC";
}