mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-03-25 21:30:52 +01:00
161 lines
4.6 KiB
Nix
161 lines
4.6 KiB
Nix
{ pkgs, ... }:
|
|
|
|
{
|
|
imports =
|
|
[
|
|
./hardware.nix
|
|
./home-julien.nix
|
|
../../users/julien.nix
|
|
../../users/default.nix
|
|
];
|
|
|
|
boot.loader.systemd-boot.enable = true;
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
|
|
deployment.buildOnTarget = true;
|
|
|
|
networking.hostName = "lambda";
|
|
|
|
time.timeZone = "Europe/Paris";
|
|
|
|
environment.systemPackages = [ pkgs.tailscale ];
|
|
services.tailscale.enable = true;
|
|
networking.firewall.checkReversePath = "loose";
|
|
|
|
services.nginx.enable = true;
|
|
services.nginx.recommendedGzipSettings = true;
|
|
services.nginx.recommendedOptimisation = true;
|
|
services.nginx.recommendedProxySettings = true;
|
|
services.nginx.recommendedTlsSettings = true;
|
|
|
|
services.uptime-kuma = {
|
|
enable = true;
|
|
package = pkgs.unstable.uptime-kuma;
|
|
settings = {
|
|
NODE_EXTRA_CA_CERTS = "/etc/ssl/certs/ca-certificates.crt";
|
|
};
|
|
};
|
|
|
|
services.ntfy-sh =
|
|
{
|
|
enable = true;
|
|
package = pkgs.unstable.ntfy-sh;
|
|
settings = {
|
|
listen-http = ":8081";
|
|
behind-proxy = true;
|
|
upstream-base-url = "https://ntfy.sh";
|
|
base-url = "https://notifications.julienmalka.me";
|
|
auth-file = "/srv/ntfy/user.db";
|
|
auth-default-access = "deny-all";
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts."status.julienmalka.me" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:3001";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
security.acme.certs."uptime.luj".server = "https://ca.luj/acme/acme/directory";
|
|
|
|
services.nginx.virtualHosts."uptime.luj" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:3001";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts."notifications.julienmalka.me" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:8081";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
networking.nameservers = [ "9.9.9.9" ];
|
|
|
|
services.grafana.enable = true;
|
|
services.grafana.settings.server.http_port = 3000;
|
|
services.victoriametrics.enable = true;
|
|
|
|
services.nginx.virtualHosts."monitoring.julienmalka.me" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:3000";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
|
|
security.acme.certs."prometheus.luj".server = "https://ca.luj/acme/acme/directory";
|
|
services.nginx.virtualHosts."prometheus.luj" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:8428";
|
|
extraConfig = ''
|
|
allow 100.10.10.0/8;
|
|
deny all;
|
|
'';
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
security.acme.acceptTerms = true;
|
|
security.acme.defaults.email = "julien@malka.sh";
|
|
|
|
|
|
security.pki.certificates = [
|
|
''-----BEGIN CERTIFICATE-----
|
|
MIIByzCCAXKgAwIBAgIQAcJCOR+99m5v3dHWQw5m9jAKBggqhkjOPQQDAjAwMRIw
|
|
EAYDVQQKEwlTYXVtb25OZXQxGjAYBgNVBAMTEVNhdW1vbk5ldCBSb290IENBMB4X
|
|
DTIyMDQyNDIwMDE1MFoXDTMyMDQyMTIwMDE1MFowODESMBAGA1UEChMJU2F1bW9u
|
|
TmV0MSIwIAYDVQQDExlTYXVtb25OZXQgSW50ZXJtZWRpYXRlIENBMFkwEwYHKoZI
|
|
zj0CAQYIKoZIzj0DAQcDQgAE5Sk6vYJcYlh4aW0vAN84MWr84TTVTTdsM2s8skH6
|
|
7fDsqNMb7FMwUMEAFwQRiADjYy3saU2Dogh2ESuB1dDFFqNmMGQwDgYDVR0PAQH/
|
|
BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFO5iTfZiutpsM7ja
|
|
mP3yuMIy6iNTMB8GA1UdIwQYMBaAFBWOQHe4eAeothQTmTNKiG/pAowGMAoGCCqG
|
|
SM49BAMCA0cAMEQCICu8u19I7RMfnQ7t3QXHP5fdUm/fX/puqF+jYSf9SZEoAiBc
|
|
oVcd0OfuAExWHhOMUZ0OV4bws9WCax333I+Pg4nDNw==
|
|
-----END CERTIFICATE-----''
|
|
''-----BEGIN CERTIFICATE-----
|
|
MIIBpTCCAUqgAwIBAgIRALevKnnElllot/cRNGjnUqUwCgYIKoZIzj0EAwIwMDES
|
|
MBAGA1UEChMJU2F1bW9uTmV0MRowGAYDVQQDExFTYXVtb25OZXQgUm9vdCBDQTAe
|
|
Fw0yMjA0MjQyMDAxNDlaFw0zMjA0MjEyMDAxNDlaMDAxEjAQBgNVBAoTCVNhdW1v
|
|
bk5ldDEaMBgGA1UEAxMRU2F1bW9uTmV0IFJvb3QgQ0EwWTATBgcqhkjOPQIBBggq
|
|
hkjOPQMBBwNCAAQG356Ui437dBTSOiJILKjVkwrJMsXN3eba/T1N+IJeqRBfigo7
|
|
BW9YZfs1xIbMZ5wL0Zc/DsSEo5xCC7j4YaXro0UwQzAOBgNVHQ8BAf8EBAMCAQYw
|
|
EgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQUFY5Ad7h4B6i2FBOZM0qIb+kC
|
|
jAYwCgYIKoZIzj0EAwIDSQAwRgIhALdsEqiRa4ak5Cnin6Tjnel5uOiHSjoC6LKf
|
|
VfXtULncAiEA2gmqdr+ugFz5tvPdKwanroTiMTUMhhCRYVlQlyTApyQ=
|
|
-----END CERTIFICATE-----''
|
|
];
|
|
|
|
|
|
services.openssh = {
|
|
enable = true;
|
|
ports = [ 45 ];
|
|
settings.PermitRootLogin = "yes";
|
|
openFirewall = true;
|
|
};
|
|
|
|
|
|
users.users.root.openssh.authorizedKeys.keys = [
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM9Uzb7szWlux7HuxLZej9cBR5MhLz/vaAPPfSoozt2k julien@enigma.local"
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGa+7n7kNzb86pTqaMn554KiPrkHRGeTJ0asY1NjSbpr julien@tower"
|
|
];
|
|
|
|
networking.firewall.allowedTCPPorts = [ 443 80 8428 ];
|
|
networking.firewall.allowedUDPPorts = [ 443 80 8428 ];
|
|
system.stateVersion = "22.11";
|
|
}
|