yep, more dotfiles

feat: add pds settings

Changed files
+64 -26
nixos
profiles
+8 -1
README.md
···
## Deploy server
-
nixos-anywhere --flake .#weird-row-server <user>@<ip>
+
```bash
+
nixos-anywhere --flake .#weird-row-server user@ip
+
+
nixos-rebuild switch \
+
--flake .#weird-row-server \
+
--target-host 2a01:4f8:c2c:76d2::1 \
+
--use-remote-sudo
+
```
---
+3 -3
flake.lock
···
},
"nixpkgs-unstable": {
"locked": {
-
"lastModified": 1741379970,
-
"narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
+
"lastModified": 1743583204,
+
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f",
+
"rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434",
"type": "github"
},
"original": {
+53 -22
nixos/profiles/server.nix
···
{ self
+
, config
+
, upkgs
, ...
}:
let
-
inherit (self.inputs) srvos;
+
inherit (self.inputs) srvos nixpkgs-unstable agenix;
-
ext-if = "eth0";
+
all-secrets = import ../../secrets;
+
ext-if = "eth0";
+
external-ip = "91.99.55.74";
+
external-netmask = 27;
+
external-gw = "144.x.x.255";
external-ip6 = "2a01:4f8:c2c:76d2::1";
external-netmask6 = 64;
external-gw6 = "fe80::1";
+
+
pds-port = 3001;
+
pds-hostname = "pds.wiro.world";
in
{
imports = [
srvos.nixosModules.server
srvos.nixosModules.hardware-hetzner-cloud
srvos.nixosModules.mixins-terminfo
+
+
agenix.nixosModules.default
+
+
"${nixpkgs-unstable}/nixos/modules/services/web-apps/pds.nix"
];
config = {
+
age.secrets = all-secrets.deploy;
+
boot.loader.grub.enable = true;
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "ext4" ];
···
networking = {
interfaces.${ext-if} = {
-
ipv6.addresses = [{
-
address = external-ip6;
-
prefixLength = external-netmask6;
-
}];
-
};
-
defaultGateway6 = {
-
interface = ext-if;
-
address = external-gw6;
+
ipv4.addresses = [{ address = external-ip; prefixLength = external-netmask; }];
+
ipv6.addresses = [{ address = external-ip6; prefixLength = external-netmask6; }];
};
+
defaultGateway = { interface = ext-if; address = external-gw; };
+
defaultGateway6 = { interface = ext-if; address = external-gw6; };
-
# # Rely on Hetzner firewall instead?
+
# TODO: rely on Hetzner firewall instead?
# firewall.enable = false;
firewall.allowedTCPPorts = [ 22 80 443 ];
};
···
};
# TODO: switch to nightly channel
-
# services.pds = {
-
# enable = true;
-
# pdsadmin.enable = true;
-
# };
+
services.pds = {
+
enable = true;
+
# TODO: not possible with current unstable module import
+
pdsadmin.enable = false;
+
package = upkgs.pds;
+
+
settings = {
+
PDS_HOSTNAME = "pds.wiro.world";
+
PDS_PORT = pds-port;
+
LOG_DESTINATION = "/etc/pds.log";
+
};
+
+
environmentFiles = [
+
config.age.secrets.pds-config.path
+
];
+
};
services.caddy = {
enable = true;
+
globalConfig = ''
+
on_demand_tls {
+
ask http://localhost:${toString pds-port}/tls-check
+
}
+
'';
+
virtualHosts."ping.wiro.world".extraConfig = ''
-
header Content-Type text/html
-
respond <<HTML
-
<html>
-
<head><title>Foo</title></head>
-
<body>Foo</body>
-
</html>
-
HTML 200
+
respond "Hello, World! (from `weird-row-server`)"
'';
+
+
virtualHosts."${pds-hostname}" = {
+
serverAliases = [ "*.${pds-hostname}" ];
+
extraConfig = ''
+
tls { on_demand }
+
reverse_proxy http://localhost:${toString pds-port}
+
'';
+
};
};
security.sudo.wheelNeedsPassword = false;