summary refs log tree commit diff
path: root/modules/base-server.nix
blob: ccf4a776105cbb2589c6a291ad2c607c7ccd4dd0 (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
101
102
103
104
105
106
107
108
109
110
111
112
{
  config,
  pkgs,
  lib,
  ...
}:

{
  imports = [
    ./base.nix
    ./users/chris.nix
  ];
  documentation.nixos.enable = false;
  documentation.enable = false;
  documentation.info.enable = false;
  documentation.man.enable = false;

  environment.variables.BROWSER = "echo";

  time.timeZone = lib.mkDefault "UTC";
  systemd = {
    enableEmergencyMode = false;
    watchdog = {
      runtimeTime = "20s";
      rebootTime = "30s";
    };

    sleep.extraConfig = ''
      AllowSuspend=no
      AllowHibernation=no
    '';
  };

  #systemd.services.NetworkManager-wait-online.enable = false;
  #systemd.network.wait-online.enable = false;

  # My servers always use /dev/vda as boot disk...
  boot = {
    kernelPackages = pkgs.linuxPackages_latest;
    loader = {
      grub = {
        devices = lib.mkIf (config.fileSystems ? "/boot") [ "nodev" ];
        # EFI
        efiSupport = config.fileSystems ? "/boot" && config.fileSystems."/boot".fsType == "vfat";
        efiInstallAsRemovable = config.fileSystems ? "/boot" && config.fileSystems."/boot".fsType == "vfat";
      };
      timeout = 1;
    };
  };

  networking = {
    hostName = lib.mkDefault "Rory-nix-base-server";
    networkmanager.enable = false;
    wireless.enable = false;
    enableIPv6 = false;
    firewall = {
      enable = false;
      allowedTCPPorts = [ 22 ];
    };

    useDHCP = false;
    nameservers = [
      "10.10.0.4"
      "10.10.0.5"
      "1.1.1.1"
      "1.0.0.1"
      "8.8.8.8"
      "8.4.4.8"
    ];
    defaultGateway = lib.mkDefault "192.168.1.1";
  };

  hardware.pulseaudio.enable = false;

  # This shaves off half a gigabyte of disk space...
  hardware.enableAllFirmware = false;
  hardware.enableRedistributableFirmware = false;

  services = {
    promtail = {
      enable = true;
      configuration = {
        server = {
          http_listen_port = 3031;
          grpc_listen_port = 0;
        };
        positions = {
          filename = "/tmp/positions.yaml";
        };
        clients = [ { url = "https://loki.regional.seian.cloud/loki/api/v1/push"; } ];
        scrape_configs = [
          {
            job_name = "journal";
            journal = {
              max_age = "12h";
              labels = {
                job = "systemd-journal";
                host = "${toString config.networking.hostName}";
              };
            };
            relabel_configs = [
              {
                source_labels = [ "__journal__systemd_unit" ];
                target_label = "unit";
              }
            ];
          }
        ];
      };
    };
  };
}