2022-05-20 23:04:15 +02:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
pkgs,
|
2024-07-10 12:57:07 +02:00
|
|
|
lib,
|
2022-05-20 23:04:15 +02:00
|
|
|
...
|
2025-12-27 22:22:54 +01:00
|
|
|
}:
|
|
|
|
|
{
|
2022-05-20 23:04:15 +02:00
|
|
|
imports = [
|
|
|
|
|
./hardware-configuration.nix
|
2023-02-16 08:46:18 +01:00
|
|
|
./matomo.nix
|
2025-12-28 22:34:42 +01:00
|
|
|
./pun-sort.nix
|
2023-03-20 13:14:02 +01:00
|
|
|
./radio.nix
|
2023-03-24 17:00:44 +01:00
|
|
|
./panoptikon.nix
|
2023-10-30 14:26:50 +01:00
|
|
|
./hledger.nix
|
2025-10-02 18:30:08 +02:00
|
|
|
./go-webring.nix
|
2025-09-05 08:05:02 +02:00
|
|
|
./gemini.nix
|
2025-05-28 09:31:50 +02:00
|
|
|
./wallabag.nix
|
2025-12-19 22:44:08 +01:00
|
|
|
./nethack.nix
|
2026-02-17 22:06:37 +01:00
|
|
|
./opencrow.nix
|
2022-05-20 23:04:15 +02:00
|
|
|
];
|
|
|
|
|
|
2023-03-20 13:14:02 +01:00
|
|
|
niveum.passport = {
|
|
|
|
|
enable = true;
|
2025-12-27 22:22:54 +01:00
|
|
|
introductionHTML = '''';
|
2023-03-20 13:14:02 +01:00
|
|
|
virtualHost = "ful.r";
|
|
|
|
|
|
|
|
|
|
services = [
|
|
|
|
|
{
|
|
|
|
|
title = "restic backup";
|
|
|
|
|
description = "This machine backups its state via restic backup.";
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2023-02-22 10:02:55 +01:00
|
|
|
age.secrets = {
|
2023-02-28 16:45:20 +01:00
|
|
|
retiolum-rsa = {
|
2023-07-04 16:28:26 +02:00
|
|
|
file = ../../secrets/ful-retiolum-privateKey-rsa.age;
|
2023-02-28 16:45:20 +01:00
|
|
|
mode = "400";
|
2024-06-03 07:27:01 +02:00
|
|
|
owner = "tinc-retiolum";
|
|
|
|
|
group = "tinc-retiolum";
|
2023-02-28 16:45:20 +01:00
|
|
|
};
|
|
|
|
|
retiolum-ed25519 = {
|
2023-07-04 16:28:26 +02:00
|
|
|
file = ../../secrets/ful-retiolum-privateKey-ed25519.age;
|
2023-02-28 16:45:20 +01:00
|
|
|
mode = "400";
|
2024-06-03 07:27:01 +02:00
|
|
|
owner = "tinc-retiolum";
|
|
|
|
|
group = "tinc-retiolum";
|
2023-02-28 16:45:20 +01:00
|
|
|
};
|
2023-07-04 16:28:26 +02:00
|
|
|
root.file = ../../secrets/ful-root.age;
|
|
|
|
|
restic.file = ../../secrets/restic.age;
|
2023-02-22 10:02:55 +01:00
|
|
|
};
|
|
|
|
|
|
2023-02-16 08:46:18 +01:00
|
|
|
services.restic.backups.niveum = {
|
|
|
|
|
initialize = true;
|
2025-12-25 14:00:03 +01:00
|
|
|
repository = pkgs.lib.niveum.restic.repository;
|
2023-02-16 08:46:18 +01:00
|
|
|
timerConfig = {
|
|
|
|
|
OnCalendar = "daily";
|
|
|
|
|
RandomizedDelaySec = "1h";
|
|
|
|
|
};
|
2023-02-22 10:02:55 +01:00
|
|
|
passwordFile = config.age.secrets.restic.path;
|
2023-02-16 08:46:18 +01:00
|
|
|
paths = [
|
|
|
|
|
config.services.mysqlBackup.location
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2022-05-20 23:04:15 +02:00
|
|
|
networking = {
|
2025-12-27 22:22:54 +01:00
|
|
|
firewall.allowedTCPPorts = [
|
|
|
|
|
80
|
|
|
|
|
443
|
|
|
|
|
];
|
2022-05-20 23:04:15 +02:00
|
|
|
hostName = "ful";
|
|
|
|
|
interfaces.enp0s3.useDHCP = true;
|
2025-12-25 14:00:03 +01:00
|
|
|
retiolum = pkgs.lib.niveum.retiolumAddresses.ful;
|
2022-05-20 23:04:15 +02:00
|
|
|
useDHCP = false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
system.stateVersion = "21.11";
|
|
|
|
|
|
|
|
|
|
services.nginx = {
|
|
|
|
|
enable = true;
|
|
|
|
|
recommendedGzipSettings = true;
|
|
|
|
|
recommendedOptimisation = true;
|
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
|
recommendedTlsSettings = true;
|
|
|
|
|
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
security.acme = {
|
|
|
|
|
acceptTerms = true;
|
2025-12-25 14:00:03 +01:00
|
|
|
defaults.email = pkgs.lib.niveum.kieran.email;
|
2022-05-20 23:04:15 +02:00
|
|
|
};
|
|
|
|
|
|
2023-12-06 14:41:49 +01:00
|
|
|
users.users.root.hashedPasswordFile = config.age.secrets.root.path;
|
2022-05-21 23:06:49 +02:00
|
|
|
|
2025-12-27 22:22:54 +01:00
|
|
|
environment.systemPackages = [
|
|
|
|
|
pkgs.vim
|
|
|
|
|
pkgs.git
|
|
|
|
|
pkgs.tmux
|
|
|
|
|
pkgs.python3
|
|
|
|
|
];
|
2022-10-06 07:16:45 +02:00
|
|
|
|
|
|
|
|
# since 22.05 timeout fails?
|
2023-06-06 19:59:27 +02:00
|
|
|
# systemd.services.systemd-networkd-wait-online.enable = false;
|
2022-05-20 23:04:15 +02:00
|
|
|
}
|