dotfiles/nixos/logical/pennyworth.nix

111 lines
3.0 KiB
Nix
Raw Normal View History

2016-04-14 14:02:16 +02:00
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, lib, ... }:
2020-05-21 17:39:38 +02:00
let
sslforward = proxyPass: {
forceSSL = true;
enableACME = true;
locations."/" = {
inherit proxyPass;
proxyWebsockets = true;
};
};
vpn = import ../vpn.nix;
2021-05-29 18:05:31 +02:00
in {
2016-04-14 14:02:16 +02:00
imports = [
2020-05-21 17:39:38 +02:00
../physical/hetznercloud.nix
../roles/server.nix
2021-01-03 22:06:31 +01:00
../modules/muflax-blog.nix
../services/backup.nix
../services/email.nix
2016-04-14 14:02:16 +02:00
];
2020-05-21 17:39:38 +02:00
system.stateVersion = "19.03";
2021-05-29 18:05:31 +02:00
2018-03-11 18:28:25 +01:00
services.nginx.enable = true;
services.yorick = {
2021-05-29 18:05:31 +02:00
public = {
enable = true;
vhost = "pub.yori.cc";
};
website = {
enable = true;
vhost = "yorickvanpelt.nl";
};
git = {
enable = true;
vhost = "git.yori.cc";
};
muflax-church = {
enable = true;
vhost = "muflax.church";
};
2020-05-21 17:39:38 +02:00
};
services.muflax-blog = {
enable = true;
2021-05-29 18:05:31 +02:00
web-server = { port = 9001; };
hidden-service = {
hostname = "muflax65ngodyewp.onion";
2018-03-11 23:17:55 +01:00
private_key = "/root/keys/http.muflax.key";
};
};
2020-05-21 17:39:38 +02:00
services.nginx.commonHttpConfig = ''
access_log off;
'';
services.nginx.virtualHosts = {
"yori.cc" = {
enableACME = true;
forceSSL = true;
globalRedirect = "yorickvanpelt.nl";
2018-05-25 00:27:43 +02:00
};
2021-05-29 18:05:31 +02:00
"yorickvanpelt.nl".locations."/p1".return =
"301 https://git.yori.cc/yorick/meterkast";
2020-05-21 17:39:38 +02:00
"grafana.yori.cc" = sslforward "http://${vpn.ips.frumar}:3000";
"ubiquiti.yori.cc" = sslforward "https://${vpn.ips.woodhouse}:8443";
"prometheus.yori.cc" = {
# only over vpn
2021-05-29 18:05:31 +02:00
listen = [{
addr = "10.209.0.1";
port = 80;
}];
2020-05-21 17:39:38 +02:00
locations."/".proxyPass = "http://10.209.0.3:9090";
};
"pub.yori.cc".locations."/muflax/".extraConfig = ''
rewrite ^/muflax/(.*)$ https://alt.muflax.church/$1 permanent;
'';
2021-10-18 14:42:53 +02:00
"plex.yori.cc" = (sslforward "http://${vpn.ips.frumar}:32400") // {
extraConfig = ''
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
proxy_http_version 1.1;
proxy_buffering off;
'';
};
"media.yori.cc" = sslforward "http://${vpn.ips.frumar}:32001";
2018-05-25 00:27:43 +02:00
};
2018-03-11 23:17:55 +01:00
deployment.keyys = [ <yori-nix/keys/http.muflax.key> ];
2020-05-21 17:39:38 +02:00
networking.firewall.allowedUDPPorts = [ 31790 ]; # wg
2021-05-29 18:05:31 +02:00
networking.wireguard.interfaces.wg-y.peers = lib.mkForce (lib.mapAttrsToList
(machine: publicKey: {
2020-05-21 17:39:38 +02:00
inherit publicKey;
allowedIPs = [ "${vpn.ips.${machine}}/32" ];
}) vpn.keys);
2021-05-29 18:05:31 +02:00
services.prometheus.exporters.wireguard = { enable = true; };
2021-01-03 19:00:33 +01:00
networking.firewall.interfaces.wg-y.allowedTCPPorts = [ 9586 ];
2020-05-21 17:39:38 +02:00
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
environment.noXlibs = true;
users.users.yorick.packages = with pkgs; [
2021-05-29 18:05:31 +02:00
python2
sshfs-fuse
weechat
ripgrep
2020-05-21 17:39:38 +02:00
];
2021-01-03 22:06:31 +01:00
2016-04-14 14:02:16 +02:00
}