1
0

721 Commits

Author SHA1 Message Date
091abaea4a Merge branch 'migrate-to-lix' 2025-01-01 11:54:16 +01:00
bea417fe8e flake.nix: Use lix hydra 2024-12-31 20:38:22 +01:00
1f373851d1 flake.nix: Add lix 2024-12-31 19:24:16 +01:00
a6e2d7a78d flake.lock: Update solid-xmpp-alarm 2024-12-17 18:38:39 +01:00
cc89b20a2c pkgs/overrides/xmppc: patch to read password from file 2024-12-16 17:31:57 +01:00
75af9b7383 pkgs/factorio-launcher: Add wrapper to launch factorio 2024-12-09 20:34:07 +01:00
36c6ada07c flake.lock: Update scan-to-gpg 2024-12-09 18:53:17 +01:00
962acece38 hosts/carbon: Fix broken per start script generation 2024-12-09 18:34:32 +01:00
be1fc59843 configuration/desktop: Tune upower tresholds 2024-12-01 20:11:42 +01:00
3cff496e74 Merge remote-tracking branch 'origin/updated-inputs-2024-11-27-02-03' 2024-11-29 19:15:51 +01:00
45e14d65ec hosts/web-2: Upgrade to postgresql 16 2024-11-29 19:14:14 +01:00
Flake Update Bot
c54004b102 Update nixpkgs 2024-11-27-02-03 2024-11-27 03:04:05 +01:00
a76e8cf3c0 hosts/carbon: Add scan-to-gpg 2024-11-24 20:43:27 +01:00
6dc38cf21e hosts/carbon: Add net-printer 2024-11-23 23:00:19 +01:00
dff6bb1a4e configuration/desktop: Add global mic mute shortcut 2024-11-22 09:46:02 +01:00
c63a781dc6 pkgs/clerie-sops: regenerate clerie-sops-config on every call to clerie-sops 2024-11-21 22:31:42 +01:00
0e00c74ba7 configuration/desktop: Handle renamed font in future releases 2024-11-21 13:45:26 +01:00
923229dc00 configuration/common: Allow overriding nix version per host 2024-11-21 13:25:27 +01:00
cfe722a3cb hosts/monitoring-3: Remove some ping targets 2024-11-20 22:31:52 +01:00
9dc9c7aebe hosts/monitoring-3: Remove XMPP Alerter Prometheus scrape target 2024-11-20 22:30:43 +01:00
8e43e4db39 hosts/web-2: Remove nogo2024.clerie.de 2024-11-20 22:23:22 +01:00
113a14cb9b hosts/web-2: Remove iot-data.clerie.de 2024-11-20 22:21:30 +01:00
75f691061b hosts/web-2: Remove tap.clerie.de 2024-11-20 22:18:24 +01:00
11e6ed35cc hosts/web-2: Remove bubblesort.clerie.de 2024-11-20 22:17:39 +01:00
5265e6234e hosts/web-2: Update clerie.de 2024-11-20 22:13:50 +01:00
d946d31c81 configuration/common: Pin nix version to 2.18 2024-11-20 20:40:27 +01:00
5f6c3b9258 configuration/common: Remove nix experimental feature repl-flake 2024-11-20 20:32:41 +01:00
54dc097b44 hosts/carbon: Enable mDNS reflection between net-heimnetz and net-iot 2024-11-12 21:09:45 +01:00
684c5e9ac5 hosts/zinc: Add mumble 2024-11-10 20:05:18 +01:00
6840548833 hosts/carbon: Readvertise prefixes often enough
Advertise current prefixes more often than claimed addresses expire.
Also increased lifetimes for claimed addresses.
2024-11-10 19:52:47 +01:00
bf294bee3a flake.nix: Update harmonia 2024-10-25 15:02:40 +02:00
b779a75969 hosts/zinc: Remove cura 2024-10-25 14:40:34 +02:00
edc2461e5a pkgs/git-pp: Git pull and push in one go 2024-10-25 13:31:16 +02:00
f9ab9b4136 hosts/hydra-1: Migrate to modules harmonia signKeyPaths implementation 2024-10-24 21:01:48 +02:00
5d45d3aac1 configuration/gpg-ssh: Custom gnupg without builtin ccid driver in scdaemon 2024-10-22 18:01:37 +02:00
09f54a05ee hosts/carbon: Do not fall back IPv6 traffic via VPN, if no native IPv6 is available 2024-10-20 17:06:36 +02:00
24472aec49 hosts/monitoring-3: Enable Synapse Monitoring for matrix.fachschaften.org 2024-10-20 16:42:27 +02:00
db3824b5b8 hosts/carbon: Clamp MSS to path MTU 2024-09-23 17:00:33 +02:00
fee4892479 hosts/carbon: Remove broken dhcpv6 profixdelegation 2024-09-23 16:21:07 +02:00
f3cdba6ee4 hosts/carbon: Remove regular reboot 2024-09-16 20:37:05 +02:00
04eb86fe14 pkgs/run-with-docker-group: Add common env vars 2024-09-12 09:44:38 +02:00
Flake Update Bot
a85bccdaec Update nixpkgs 2024-09-12-01-03 2024-09-12 09:30:04 +02:00
e96d95dd0a modules/dhcpcd-prefixdelegation: Add dhcpcd module specifically for prefixdelegation 2024-09-05 12:46:09 +02:00
954c033e06 configuration/desktop: Fix renamed gnome packages 2024-09-05 05:53:54 +02:00
76c88676c9 Merge remote-tracking branch 'origin/updated-inputs-2024-09-02-01-03' 2024-09-05 05:20:43 +02:00
Flake Update Bot
f44e5c990a Update nixpkgs 2024-09-02-01-03 2024-09-02 03:03:57 +02:00
3fe7721847 hosts/web-2: Bind Gitea to IPv6 2024-08-28 08:46:57 +02:00
97d1f68e9c hosts/web-2: Reduce log verbosity of gitea daemon 2024-08-28 08:39:17 +02:00
8f398404d5 configuration/common: Limit journald log retention time 2024-08-28 08:21:26 +02:00
e45e95f1ba flake.lock: Update input bij 2024-08-24 17:33:27 +02:00
a5928d3337 hosts/carbon: Disable dhcpd as it behaves weird 2024-08-24 17:19:38 +02:00
0a97c381ff hosts/monitoring-3: Fix grafana listening address 2024-08-23 17:50:52 +02:00
ae5c16cb28 hosts/carbon: Add net-mgmt 2024-08-20 15:38:43 +02:00
0c840c1fdf hosts/krypton: Allow android usb debugging 2024-08-20 12:29:31 +02:00
7d922716af hosts/carbon: Add fallback reboot 2024-08-16 20:09:50 +02:00
ee5d2330c5 hosts/carbon: Renew delegated IPv6 prefixes on ppp reconnect 2024-08-15 20:03:01 +02:00
60376e7688 hosts/carbon: Remove static IPv6 addressing 2024-08-15 19:40:37 +02:00
ae4de7f03a hosts/carbon: Move net-gastnetz to bridge 2024-08-15 19:36:01 +02:00
df2acebfef hosts/carbon: Enable DHCPv6PD 2024-08-15 19:21:29 +02:00
1157038525 hosts/carbon: Start kea after network setup 2024-08-15 18:43:29 +02:00
fdeddf8fc9 hosts/carbon: Add wg-clerie 2024-08-13 16:13:22 +02:00
91eeec2b2b hosts/carbon: Fix ppp mtu 2024-08-13 12:46:02 +02:00
9bc609fbb3 hosts/carbon: Bootstrap chrony ntp server 2024-08-09 18:04:03 +02:00
def2055775 hosts/carbon: Add net-iot 2024-08-09 18:03:52 +02:00
a6a87883ee pkgs/run-with-docker-group: Add script 2024-08-05 09:59:33 +02:00
43d2172fa7 Merge remote-tracking branch 'origin/updated-inputs-2024-08-02-01-03' 2024-08-04 15:25:02 +02:00
d34c01107b configuration/gpg-ssh: Add openpgp-card-tools 2024-08-04 15:24:21 +02:00
Flake Update Bot
d12d8f38aa Update nixpkgs 2024-08-02-01-03 2024-08-02 03:04:07 +02:00
1707de36c2 pkgs/git-diff-word: Add git shortcut to diff by character 2024-07-31 11:55:03 +02:00
e767e3177e configuration/common: Only force nixpkgs in flake registry 2024-07-30 10:17:10 +02:00
dba711f4a5 hosts/web-2: Add nurausstieg.clerie.de 2024-07-29 18:43:07 +02:00
a5e4b05041 hosts/krypton: Add inkscape to programs 2024-07-23 20:24:28 +02:00
1e096c2e7a configuration/desktop: Add font comfortaa 2024-07-23 20:23:58 +02:00
d628a2cfab flake.lock: Update berlinerbaeder-exporter 2024-07-21 16:10:27 +02:00
7099565aa7 flake.lock: Update berlinerbaeder-exporter 2024-07-21 12:59:58 +02:00
f157cab25c hosts/monitoring-3: Add berlinerbaeder-exporter 2024-07-20 18:51:25 +02:00
6c05f9de4e flake.lock: Update nixos-hardware 2024-07-19 20:36:19 +02:00
6a7a91021e configuration/desktop: Update renamed options 2024-07-19 20:35:53 +02:00
Flake Update Bot
0dde5ce5f2 Update nixpkgs 2024-07-16-01-03 2024-07-16 03:03:57 +02:00
c06364953b pkgs/clerie-update-nixfiles: Merge updates with Update Bot user 2024-07-14 01:08:55 +02:00
e12888edbd hosts/carbon: Move net-lte to seperate file 2024-07-14 00:56:07 +02:00
9102d40958 hosts/carbon: Move MSS clamping to PPP config 2024-07-14 00:51:49 +02:00
38345f6dbe hosts/carbon: Move DNS specific network config to DNS file 2024-07-14 00:49:52 +02:00
090e2d6e48 hosts/carbon: Move net-dsl to seperate file 2024-07-14 00:46:22 +02:00
8e88006abe hosts/carbon: Move net-voip to seperate file 2024-07-14 00:43:47 +02:00
332b70a480 hosts/carbon: Move net-gastnetz to seperate file 2024-07-14 00:37:48 +02:00
f7b3336e41 hosts/carbon: Move net-heimnetz to seperate file 2024-07-14 00:31:13 +02:00
4105528835 hosts/carbon: Move DNS server to seperate file 2024-07-14 00:23:58 +02:00
b860650ead hosts/carbon: Restructure ExecStartPre script for pppd-dtagdsl 2024-07-14 00:14:14 +02:00
d09e80e88e hosts/carbon: Migrate to DTAG DSL 2024-07-14 00:06:41 +02:00
9ddc82b507 pkgs/git-checkout-github-pr: Add script to checkout GitHub PRs in repos 2024-07-11 13:18:45 +02:00
e082168630 Revert "configuration/common: Hotfix OpenSSH CVE-2024-6387"
This reverts commit 9455fefe5d.
2024-07-02 19:53:21 +02:00
79745869b5 flake.lock: Update nixpkgs 2024-07-02 19:52:11 +02:00
c9d937eec7 hosts/web-2: Update nogo2024 2024-07-01 21:35:04 +02:00
9455fefe5d configuration/common: Hotfix OpenSSH CVE-2024-6387 2024-07-01 20:14:19 +02:00
Flake Update Bot
a080f84880 Update nixpkgs 2024-06-26-01-03 2024-06-26 03:03:53 +02:00
e0093a752c hosts/web-2: Update nogo2024 2024-06-22 20:20:20 +02:00
0e4e4f0571 configuration/desktop: Enable fwupd 2024-06-21 11:45:16 +02:00
6ea8a199e7 hosts/web-2: Update nogo2024 2024-06-14 09:49:41 +02:00
4c245ed752 hosts/porter: Remove snowflake proxy 2024-06-10 17:58:37 +02:00
7166a8837c hosts/zinc: Disable systemd stage-1 2024-06-10 17:56:49 +02:00
089c16060c hosts/krypton: Deactivate initrd script that conflicts with systemd stage-1 2024-06-10 17:52:09 +02:00
dc3417e5b8 configuration/common: Enable systemd stage-1 by default 2024-06-10 17:51:16 +02:00
d9936a7d61 hosts/clerie-backup: Remove obsolte borgbackup targets 2024-06-10 14:06:59 +02:00
Flake Update Bot
21072695cd Update nixpkgs 2024-06-09-01-03 2024-06-09 03:04:03 +02:00
24efc2bb52 Merge remote-tracking branch 'origin/updated-inputs-2024-06-04-01-03' 2024-06-06 12:08:33 +02:00
1877755387 hosts/minecraft-2: Remove host 2024-06-06 10:59:55 +02:00
Flake Update Bot
c157229bc5 Update nixpkgs 2024-06-04-01-03 2024-06-04 03:04:10 +02:00
d1f849b41e hosts/storage-2: Enable backups 2024-06-03 21:28:31 +02:00
9399294529 hosts/storage-2: Used yt-dlp 2024-06-03 14:24:23 +02:00
413c8cc52c hosts/web-2: Add nogo2024.clerie.de 2024-05-26 20:41:09 +02:00
985b4d4c17 flake/nixosConfigurations.nix: Generate hostname from host attribute name 2024-05-23 13:51:06 +02:00
a2a84a66bc configuration/desktop: Migrate networkmanager settings to attribute set 2024-05-22 18:00:19 +02:00
5100591978 flake/overlay.nix: Pin nix version for harmonia 2024-05-22 17:52:46 +02:00
2d7c6f5c02 Merge remote-tracking branch 'origin/updated-inputs-2024-05-22-01-03' 2024-05-22 17:24:25 +02:00
37685080b9 hosts/hydra-1: Sign nix cache entries with multiple keys 2024-05-22 17:17:14 +02:00
Flake Update Bot
b383f4dcc8 Update nixpkgs 2024-05-22-01-03 2024-05-22 03:04:17 +02:00
d55dc35882 lib/flake-helper.nix,flake/nixosConfigurations.nix: Move functions to flake directory 2024-05-13 17:39:54 +02:00
2a3281a7c4 lib/flake-helper.nix: Restrcuture host module references 2024-05-13 17:00:03 +02:00
0453d34606 flake/modules.nix seperate out modules from inputs 2024-05-13 16:44:21 +02:00
e777528435 flake.nix: Expose modules in flake 2024-05-13 16:33:20 +02:00
6beb8db05a flake.nix: Move hydraJobs to seperate file 2024-05-13 16:21:47 +02:00
1f7ffd82ba flake.nix: Remove colmena 2024-05-13 16:11:09 +02:00
9210767036 flake.nix: Centralize overlays 2024-05-13 16:05:48 +02:00
c2062145b0 flake.nix: Remove special nixpkgs tracking for krypton 2024-05-13 13:18:10 +02:00
3b0e66dc01 hosts/hydra-1: Serve plain nix store on cache.nix.clerie.de 2024-05-12 17:24:46 +02:00
199e6e1791 hosts/hydra-1: Server nix cache on cache.nix.clerie.de too 2024-05-12 16:46:19 +02:00
e6371e45d8 users/clerie: Remove old ssh key 2024-05-12 16:10:23 +02:00
03213c8389 pkgs/nixfiles: Migrate nixfiles-generate-backup-secrets to clerie-sops-edit 2024-05-12 14:51:54 +02:00
edabc9e892 pkgs/clerie-sops: Remove unnecessary use of cat 2024-05-12 14:42:55 +02:00
d22a3d447b pkgs/clerie-sops: Add actions to clerie-sops-edit 2024-05-12 14:34:00 +02:00
e2b53c9c50 flake.lock: Update nixpkgs 2024-05-12 13:42:58 +02:00
d0bd09896a secrets.nix: Remove age secrets management 2024-05-10 16:23:41 +02:00
e094afc4a0 hosts/web-2: Migrate secrets to sops 2024-05-10 15:36:09 +02:00
f25723941b hosts/palladium: Migrate secrets to sops 2024-05-10 15:27:40 +02:00
1da102386d hosts/krypton: Migrate secrets to sops 2024-05-10 15:23:34 +02:00
1e45b64387 hosts/carbon: Migrate secrets to sops 2024-05-10 15:07:58 +02:00
ba30850a81 hosts/aluminium: Migrate secrets to sops 2024-05-10 15:05:16 +02:00
a7b8569ed8 hosts/zinc: Migrate secrets to sops 2024-05-10 14:53:54 +02:00
27fb1be845 users/clerie: Remove obsolete ssh keys 2024-05-10 14:38:13 +02:00
9fd359f14e hosts/web-2: Remove md.clerie.de 2024-05-10 14:31:16 +02:00
28e1168c7e hosts/web-2: Update clerie.de 2024-05-10 14:20:23 +02:00
9c7c9ab183 hosts/web-2: Fix mime types for gpg and ssh public keys served via clerie.de 2024-05-10 14:07:46 +02:00
8d06e8afac flake.lock: Update nixfiles-krypton 2024-05-08 17:22:14 +02:00
0905083fb2 hosts/clerie-backup: Migrate secrets to sops 2024-05-05 14:18:43 +02:00
3533f7a8fb hosts/minecraft-2: Migrate secrets to sops 2024-05-05 14:07:46 +02:00
972169c339 hosts/backup-4: Migrate secrets to sops 2024-05-04 14:43:33 +02:00
c8c9526241 hosts/storage-2: Migrate secrets to sops 2024-05-02 13:10:21 +02:00
b8e666c075 pkgs/clerie-sops: Properly escape json in clerie-sops-edit 2024-05-02 12:39:12 +02:00
730903d0d8 pkgs/clerie-sops: Do not write back unchanged values in clerie-sops-edit 2024-05-02 12:28:22 +02:00
e413204215 users/clerie: Assign dedicated group 2024-05-02 12:10:39 +02:00
5c42594d5d configuration/gpg-ssh: Enable users to restart pcscd themself 2024-05-02 11:31:54 +02:00
2970a7d892 pkgs/clerie-sops: Add clerie-sops-edit for working with multiline string attributes in json 2024-05-01 17:11:36 +02:00
3371f47f68 hosts/mail-2: Migrate secrets to sops 2024-04-28 12:23:23 +02:00
6c4e2de9bb modules/backup: Lookups passwords in sops too 2024-04-28 12:04:29 +02:00
4cf47229a4 hosts/dn42-il-gw1: Migrate secrets to sops 2024-04-28 11:38:53 +02:00
9ad2b5b776 configuration/common: set vim as default editor 2024-04-28 11:13:42 +02:00
8c46f57946 hosts/osmium: Migrate secrets to sops 2024-04-28 10:57:03 +02:00
67e3aa4ac1 hosts/web-2: Enable repo indexing in gitea 2024-04-28 10:13:49 +02:00
27d4fcd864 configuration/common: Reorganize default programs 2024-04-27 20:12:26 +02:00
e6ed6ef0db hosts/hydra-1: Disable localhost as build machine as it messes with hydra scheduling 2024-04-26 15:49:07 +02:00
8ba55f1049 hosts/hydra-1: Move nix cache config to seperate file 2024-04-22 20:51:23 +02:00
c7769eaecb hosts/hydra-1: Move build machine config to seperate file 2024-04-22 20:47:11 +02:00
2d45cb826b hosts/hydra-1: Move hydra config to seperate file 2024-04-22 20:42:23 +02:00
7ead072e53 configuration/hydra-build-machine: Move build machine related config to common configuration 2024-04-22 20:34:42 +02:00
cf9b4a9cd4 hosts/hydra-1: Fix hydra cannot connect to localhost as buildmachine 2024-04-22 20:19:48 +02:00
2eb575a104 hosts/gatekeeper: Migrate secrets to sops 2024-04-21 19:49:00 +02:00
23cae87333 hosts/dn42-il-gw6: Migrate secrets to sops 2024-04-21 19:31:18 +02:00
2b00410eeb hosts/dn42-il-gw5: Migrate secrets to sops 2024-04-21 19:26:05 +02:00
a588853b79 hosts/dn42-ildix-clerie: Migrate secrets to sops 2024-04-21 19:20:53 +02:00
2775acdb48 hosts/monitoring-3: Migrate secrets to sops 2024-04-21 19:15:15 +02:00
7ad061292d hosts/porter: Migrate secrets to sops 2024-04-21 19:05:49 +02:00
9514d0c72a hosts/nonat: Migrate secrets to sops 2024-04-21 18:56:02 +02:00
42cde57e8d hosts/hydra-2: Migrate secrets to sops 2024-04-21 18:51:40 +02:00
f252ab71eb hosts/hydra-1: Migrate secrets to sops 2024-04-21 18:45:15 +02:00
7e5a2fa2ec hosts/astatine: Migrate secrets to sops 2024-04-21 18:22:36 +02:00
dd1d36345c modules/wg-clerie: Lookup private key in sops too 2024-04-21 18:22:07 +02:00
b5fca78654 hosts/dn42-ildix-service: Remove obsolete age secrets 2024-04-21 15:54:33 +02:00
22512de722 lib/flake-helper.nix: Automatically load sops secrets 2024-04-21 15:51:25 +02:00
63c60391cc pkgs/clerie-sops: Init sops 2024-04-20 23:20:14 +02:00
84b67ee47d hosts/monitoring-3: Enable reloading of prometheus 2024-04-20 17:53:05 +02:00
04ab06218c hosts/dn42-ildix-clerie,hosts/dn42-ildix-service: Add to monitoring and enable auto updates 2024-04-20 15:01:37 +02:00
5ebe26caf8 lib/clerie-monitoring-ids.nix: Add functions to analyse assigned monitoring ids 2024-04-20 14:34:42 +02:00
2cdf09c5ae modules/backup: Speed up backup time by skipping checks and only show the last snapshot 2024-04-20 12:58:16 +02:00
3d68c66b44 configuration/desktop: Add net.clerie.de search domain to NetworkManager 2024-04-19 17:56:34 +02:00
ab4b4918a0 hosts/web-2: Set proper root path for gpg key discovery 2024-04-17 16:20:14 +02:00
95379f15dd users/clerie,hosts/web-2: publish new keys for clerie 2024-04-16 22:28:26 +02:00
e2795716c1 pkgs/ssh-gpg: Execute arbitrary commands with ssh-gpg 2024-04-15 20:01:20 +02:00
a7dbbba01d users/clerie: Add new SSH key for clerie 2024-04-15 19:28:01 +02:00
699fc69bd3 flake.nix: Rollback nixpkgs for chaosevents input because of broken python deps in newer versions 2024-04-15 19:11:07 +02:00
1e54967cfd flake.lock: Update nixpkgs 2024-04-15 19:09:55 +02:00
823d700f1f configuration/gpg-ssh: Enable YubiKey support 2024-04-15 09:13:57 +02:00
2ae649af80 configuration/gpg-ssh: Move GPG and SSH integration to seperate module 2024-04-15 08:44:09 +02:00
66d369bbd9 configuration/desktop: Enable GPG SSH support 2024-04-14 17:57:56 +02:00
af72169172 flake.lock: Update nixpkgs-krypton 2024-04-14 14:08:47 +02:00
d64dea3dc3 configuration/desktop: Disable gnome alert sounds 2024-04-14 09:50:52 +02:00
7622f39258 configuration/common: Use en_US as default locale and use de_DE for formats only 2024-04-09 08:27:23 +02:00
606343b11f configuration/common: add bij to programs 2024-04-08 08:41:05 +02:00
db61a104ff lib/flake-helper.nix: Use fqdn as target host for colmena 2024-04-08 08:17:19 +02:00
128f2360c7 hosts/hydra-1,hosts/hydra-2: Allow git via http in restricted mode 2024-04-08 08:16:29 +02:00
0b7f25e017 hosts/hydra-1,hosts/hydra-2: Allow http as schema in restricted mode and not only as prefix 2024-04-07 20:36:50 +02:00
5aac90a1fa hosts/hydra-1,hosts/hydra-2: Allow github uri in restricted mode 2024-04-07 20:03:10 +02:00
314c1a6e28 configuration/common: Fix missing import for networking.nix 2024-04-07 19:54:40 +02:00
f0d82c45fb hosts/web-2: Add md.clerie.de 2024-04-02 22:14:17 +02:00
df6a540281 hosts/monitoring-3: Fix IPv6 listen addr for Grafana 2024-03-27 19:11:02 +01:00
b348d61013 flake.lock: Update fieldpoc 2024-03-24 14:46:52 +01:00
50066d1122 hosts/web-2: postgresql migrate to ensureDBOwnership 2024-03-24 14:35:31 +01:00
db58f552b2 hosts/web-2: fix systemd service dependencies for chaosevents 2024-03-24 14:20:34 +01:00
0cd3c05a25 hosts/web-2: migrate renamed options for gitea 2024-03-24 14:08:34 +01:00
fe85ab718a hosts/storage-2: migrate renamed options 2024-03-24 13:26:26 +01:00
2927edcb95 modules/clerie-system-upgrade: migrate option type from types.string to types.str 2024-03-24 13:18:27 +01:00
4f96034838 hosts/monitoring-3: add prometheus job for high frequency pings 2024-03-24 13:03:23 +01:00
3c42d25ecd hosts/monitoring-3: migrate renamed options 2024-03-24 13:01:32 +01:00
fa712fa1c5 modules/clerie-system-upgrade: fix systemd unit deps 2024-03-19 19:41:22 +01:00
62dd3b7471 hosts: remove deprecated grub version option 2024-03-19 19:37:43 +01:00
693ca7e925 modules/clerie-gc-dir: remove unneeded systemd timer deps 2024-03-19 18:54:10 +01:00
27b449a95c modules/backup: fix systemd unit deps 2024-03-19 18:51:17 +01:00
02ccc58b9e configuration/desktop: update renamed avahi option 2024-03-19 18:47:31 +01:00
1cd86cdaad configuration/common: add jq and curl as default programs 2024-03-19 18:31:50 +01:00
31c2bf2ede pkgs/clerie-update-nixfiles: use fast-forward as a softer approach to update master (so nothing gets lost) 2024-03-19 18:15:47 +01:00
9bc4ba3b77 pkgs/print-afra: Add script for printing pdf in AfRA 2024-03-19 17:51:59 +01:00
0fb89ef74d pkgs/clerie-update-nixfiles: Add script that merges back nixfiles updates 2024-03-19 17:31:18 +01:00
79d9bffba1 pkgs/clerie-update-nixfiles: switch branch before removing itself 2024-03-17 17:02:32 +01:00
af7bc3dc02 pkgs/clerie-update-nixfiles: implement merge that properly overrides target with the full state of the update branch 2024-03-17 16:59:11 +01:00
7a4177f360 pkgs/nixfiles: rename nixfiles-updated-inputs to clerie-update-nixfiles 2024-03-17 16:14:54 +01:00
23d05a3e5d pkgs/nixfiles: rename nixfiles-system-upgrade to clerie-system-upgrade 2024-03-17 15:50:49 +01:00
059aaa760b pkgs/nixfiles: nixfiles-updated-inputs check if update changes anything 2024-03-17 15:42:14 +01:00
343ce80661 pkgs/nix-remove-result-links: add package 2024-03-17 15:14:12 +01:00
7b67445838 pkgs/chromium-incognito: Use writeShellScriptBin 2024-03-17 14:33:57 +01:00
5b8b8f8cab pkgs/chromium-incognito: add package 2024-03-17 14:24:06 +01:00
a15527caf8 modules/clerie-system-upgrade: add to modules 2024-03-14 20:33:28 +01:00
f011e3fc9e modules/nixfiles/nixfiles-system-upgrade.nix,modules/clerie-system-upgrade: rename module 2024-03-14 20:30:37 +01:00
b98fb3b061 flake.nix: fix syntax 2024-03-14 20:27:20 +01:00
8e9c9f87be modules/gre-tunnel: remove module 2024-03-14 20:15:08 +01:00
f34337159d pkgs/wetter: remove package 2024-03-14 20:12:41 +01:00
52582895cf pkgs/anycast_healthchecker: remove package 2024-03-14 20:03:49 +01:00
1faa4386b1 configuration/common: add template repo to nix registry 2024-03-14 19:41:59 +01:00
59f83dd5af configuration/desktop: hibernate on power button 2024-03-11 20:42:17 +01:00
03b75a9b8a configuration/desktop: gdm settings 2024-03-11 20:28:28 +01:00
c472f5086c configuration/common: Set defaults for gnome shell 2024-03-11 20:07:46 +01:00
521ffac88c configuration/desktop: global touchpad config 2024-03-11 17:20:48 +01:00
07609fb02d hosts/storage-2: add firmware.clerie.de 2024-03-02 16:28:45 +01:00
ffdc95da84 hosts/astatine: Isolate ppp interface 2024-03-01 22:02:36 +01:00
a5c2009bfd hosts/astatine: remove mtu option so client uses mru sent by provider 2024-03-01 22:02:36 +01:00
991b4d6bd1 hosts/astatine: enable remote wireshark capture 2024-03-01 22:02:36 +01:00
70a663b633 hosts/astatine: ppp test 2024-03-01 22:02:36 +01:00
d33293e00a hosts/krypton: Add fractal 2024-02-19 21:16:41 +01:00
295e785bd0 pkgs/nixfiles: Fix typo in nixfiles-updated-inputs 2024-02-18 20:07:23 +01:00
704aba254d pkgs/nixfiles: nixfiles-updated-inputs push update branch 2024-02-18 18:49:29 +01:00
9050a99666 pkgs/nixfiles: nixfiles-updated-inputs use intermediate branch for updating flake inputs 2024-02-18 18:07:38 +01:00
a84ae9372e hosts/minecraft-2,hosts/storage-2: Enable auto update 2024-02-18 16:47:54 +01:00
1efe5aebca flake.lock: Update nixpkgs 2024-02-18 15:07:17 +01:00
15670ff541 hosts/storage-2: Replace prepare script with tmpfiles 2024-02-18 14:58:45 +01:00
692da961d8 hosts/web-2: Remove znc 2024-02-18 14:40:26 +01:00
0118788e82 hosts/web-2: Update chaosevents 2024-02-17 18:55:30 +01:00
63bab26733 flake.lock: Update nixpkgs-krypton 2024-02-13 11:12:34 +01:00
0cf25afdc7 hosts/krypton: Remove archroot mount point 2024-02-13 11:12:11 +01:00
2fe4da7c4a hosts/krypton: add okular 2024-02-12 19:12:03 +01:00
bf7205f2be hosts/web-2: Update clerie.de 2024-02-09 21:28:20 +01:00
204303beee hosts/zinc: add cryptsetup-askpass to .ash_history for faster access 2024-02-07 18:52:14 +01:00
bfdfc7ee68 hosts/zinc: custom network setup in initrd 2024-02-07 18:42:30 +01:00
fe7ccf245b modules/wireguard-initrd: default to mtu of 1280 2024-02-07 18:41:09 +01:00
e0049c72ea host/zinc: enable intel optimisations 2024-02-07 17:36:30 +01:00
bdb78d60c1 hosts/zinc: add cura slicer 2024-02-07 17:36:00 +01:00
022fabb0f7 hosts/zinc: Add programs 2024-02-07 17:35:28 +01:00
7f6bfafbcf hosts/carbon: Set correct MTU 2024-02-07 12:25:52 +01:00
5b3933937e hosts/krypton: add network debug tools 2024-01-30 15:03:06 +01:00
3d644b885a flake.lock: Update nixpkgs-krypton 2024-01-30 10:21:43 +01:00
da76595558 hosts/osmium: Polkit test 2024-01-30 09:53:27 +01:00
2ac1cc6fed hosts/krypton: enable wireshark 2024-01-20 20:58:51 +01:00
bc35fbb0d6 host/monitoring: Use correct variable in alerting rule description 2024-01-15 18:08:23 +01:00
ee148026f7 flake.lock: Update chaosevents input 2024-01-13 21:57:45 +01:00
568d3f8d89 hosts/krypton: Turn on keyboard backlight and display battery levels at cryptsetup askpass 2024-01-08 15:44:28 +01:00
9284723eae hosts/storage-2: Deactivate kraftfuttermischwerk sync 2024-01-05 19:47:37 +01:00
b17c444ae2 hosts/carbon: make router usable without a switch 2023-12-20 18:33:12 +01:00
98de6489f3 modules/nixfiles: Deploy system upgrade unit everywhere so updates can get startet remotely 2023-12-15 20:20:53 +01:00
d05f74ece9 modules/nixfiles: Specify dedicated system update times per host 2023-12-15 18:58:01 +01:00
97cb51e4fb pkgs/nixos-firewall-tool: Remove package as it got upstreamed 2023-12-10 22:59:55 +01:00
cb585b9bd5 modules/nixfiles: Add metric for last update check 2023-12-10 19:51:21 +01:00
671f5925c1 lib/default.nix: Refactor lib loading 2023-12-10 18:27:55 +01:00
9ca9ed3ef3 pkgs/overlay.nix: Refactore overlay to a flake output attribute 2023-12-08 09:06:43 +01:00
0220dbbcdd users/isa: Refactor ssh public key 2023-12-07 20:23:11 +01:00
0ea664287b users/isa: Move to users directory 2023-12-07 20:21:44 +01:00
35d2b3a76c user/criese-nethinks: refactor ssh.pub 2023-12-07 20:18:21 +01:00
a00c276c5c secrets.nix: Document the magic 2023-12-07 20:17:31 +01:00
41a52d55a3 modules/nixfiles: Spread auto upgrade over multiple hours 2023-12-03 14:46:51 +01:00
37c838836e modules/nixfiles: Make nixfiles system upgrade not stop itself during upgrade 2023-12-03 11:28:41 +01:00
421f0d3c90 flake.lock: Update input nixpkgs 2023-12-03 11:04:27 +01:00
b093ae28be flake.lock: Update input nixpkgs-krypton 2023-12-01 18:28:36 +01:00
3168a58878 configuration/common: Add nixfiles-system-upgrade to environment 2023-12-01 18:14:59 +01:00
b37bdf88e1 pkgs/nixfiles: Ask before doing a system upgrade from Hydra 2023-12-01 18:14:25 +01:00
01b1ce3caa pkgs/nixfiles: rename nixfiles-system-sync-to-hydra to nixfiles-system-upgrade 2023-12-01 18:02:44 +01:00
cff95863fd hosts/monitoring-3: Add alert for Synapse 2023-12-01 17:50:54 +01:00
2e68d00ca4 hosts/gatekeeper: update pubkey amy 2023-11-23 17:21:45 +01:00
203032d9f3 hosts/gatekeeper: add amy to wg-clrie 2023-11-22 21:38:31 +01:00
572fb59903 hosts/dn42-il-gw5,hosts/dn42-il-gw6: export routes to looking glass 2023-11-21 15:16:16 +01:00
bbeccff528 flake.lock: update fernglas input 2023-11-20 00:12:08 +01:00
91de3491da flake.lock: update fernglas input 2023-11-19 15:16:41 +01:00
14dfcea486 flake.lock: update nixpkgs 2023-11-07 21:17:33 +01:00
5ad39391cf hosts/schule: remove host 2023-11-07 19:27:01 +01:00
9f77f2594c hosts/dn42-il-gw1,hosts/dn42-il-gw5,hosts/dn42-il-gw6,hosts/nonat: enable auto update 2023-11-05 22:30:31 +01:00
d0c88d4e6a modules/nixfiles: add modules for system hydra sync 2023-11-05 22:26:48 +01:00
b59909b155 pkgs/nixfiles: automatic reboot for system sync to hydra 2023-11-05 18:24:37 +01:00
e711bc69a1 pkgs/nixfiles: add script for installing the last system successfully built by hydra 2023-11-05 17:24:27 +01:00
8e98e29e97 modules/wireguard-initrd: fix udp option for ipproto in ip rule 2023-11-05 15:17:54 +01:00
111ebefd1d pkgs/nixos-firewall-tool: add script to interactively manipulate the NixOS firewall 2023-11-05 14:38:21 +01:00
5fc75da28c hosts/zinc: enforce password for sudo 2023-11-05 13:41:46 +01:00
226e4198e0 hosts/monitoring-3: add synapse monitoring 2023-11-05 13:36:58 +01:00
4d4c5eed8c hosts/monitoring-3: add matrix server ping targets 2023-11-04 14:10:51 +01:00
43335679ed hosts/astatine: add user criese-nethinks 2023-10-29 20:06:30 +01:00
c013c4323a hosts/web-2: add install.nix.clerie.de 2023-10-25 21:45:38 +02:00
0111f67b6d flake.nix: multi system packages 2023-10-25 18:28:37 +02:00
36e6d96d2c hosts/krypton: enable binfmt virt for aarch64-linux 2023-10-25 18:25:15 +02:00
2150b4bfb0 pkgs/nixfiles: nixfiles-auto-install fix syntax of generated flake snipped 2023-10-22 23:01:02 +02:00
4321b00c52 pkgs/nixfiles: nixfiles-auto-install add entry for new host 2023-10-22 22:37:35 +02:00
5d870740b6 hosts/web-2: return known_hosts with proper mime type 2023-10-22 21:58:54 +02:00
793d9300ee pkgs/nixfiles: nixfiles-auto-install fix export of nix config vars 2023-10-21 22:20:09 +02:00
0606e29433 pkgs/nixfiles: nixfiles-auto-install fix shellcheck error 2023-10-21 09:41:48 +02:00
d300f2cbe8 pkgs/nixfiles: nixfiles-auto-install use custom nix config 2023-10-21 01:11:44 +02:00
c68343dea7 pkgs/nixfiles: nixfiles-auto-install add dependencies 2023-10-21 00:42:05 +02:00
71aa9f31a0 pkgs/nixfiles: make nixfiles-auto-install interactive 2023-10-21 00:19:00 +02:00
24b8e750b5 pkgs/nixfiles: move nixfiles-auto-install to pkg 2023-10-20 23:45:43 +02:00
b9af028fa7 pkgs/nixfiles: expose nixfiles-generate-config as pkg 2023-10-20 23:01:02 +02:00
30cc2e4f15 pkgs/nixfiles: update ssh host keys only if they are not empty 2023-10-20 22:14:00 +02:00
4f467299d1 flake.lock: update nixpkgs 2023-10-20 21:21:04 +02:00
219c356e83 hosts/krypton: Update system 2023-10-17 16:45:09 +02:00
18f67dff98 modules/wireguard-initrd: fix routing policy 2023-10-12 22:17:25 +02:00
2e390e9ef9 hosts/web-2: update clerie.de 2023-10-12 22:16:44 +02:00
7ca735fa6d hosts/zinc: make sudo not require a password 2023-09-23 19:36:27 +02:00
e90cde3c14 configuration/desktop: enable pipewire 2023-09-23 19:34:34 +02:00
9d310e9e8f hosts/zinc: enable gnome desktop 2023-09-23 17:55:26 +02:00
04638f4edf configuration/common: split common into seperate files 2023-09-22 21:11:15 +02:00
c2b1697fb5 hosts/zinc: move initrd stuff to seperate file 2023-09-22 21:00:43 +02:00
ac40659050 hosts/zinc: enable 5g modem via usb 2023-09-22 20:55:43 +02:00
3fb56cd9f3 host/zinc: rotate ssh host key 2023-09-22 20:30:35 +02:00
8c81af4f7f configuration/common: use ed25519 host keys for ssh only from now 2023-09-22 17:06:14 +02:00
c46a031b39 modules/wireguard-initrd: add module for wireguard in initrd 2023-09-22 16:56:09 +02:00
08600173b9 hosts/krypton: add fractal-next 2023-09-22 16:32:57 +02:00
975e24b31a hosts/gatekeeper: add VPN connection for zinc initrd 2023-09-22 16:24:46 +02:00
2f22810091 hosts/gatekeeper: add wg-clerie zinc 2023-09-20 21:03:12 +02:00
ef3c2c0174 hosts/zinc: enable wg-clerie 2023-09-20 21:01:40 +02:00
eef227d45a hosts/zinc: add host 2023-09-20 20:35:47 +02:00
362a6fcf7f hosts/web-2: remove prediger workadventure map 2023-09-15 20:44:05 +02:00
1e22756876 hosts/web-2: host fieldpoc documentation 2023-09-15 20:43:09 +02:00
6fced94cb5 hosts/aluminium: enable new wg-clerie module 2023-09-15 20:24:25 +02:00
33b6731c59 hosts/hydra-1: Migrate from nix-serve to harmonia 2023-09-10 10:55:46 +02:00
216c7df6a6 flake: bump nixpkgs version 2023-09-10 10:55:21 +02:00
127ae75544 configuration/common: Handle broken nix caches properly 2023-09-09 18:45:33 +02:00
9c1e96db8d configuration/common: Move web config to seperate file 2023-09-09 18:35:08 +02:00
2be914b485 configuration/common: keep builtime dependencies 2023-09-09 16:39:49 +02:00
a4bf68bd34 configuration/common: Enable repl flake 2023-09-09 16:34:07 +02:00
e2f58fd25c hosts/web-2: Publish mitel-ommclient2 documentation using update-from-hydra 2023-09-09 14:15:24 +02:00
e515212708 hosts/web-2: deactive wetter.clerie.de because it requires nodejs that takes ages to build 2023-09-09 14:13:58 +02:00
b0259542e4 pkgs/update-from-hydra: Add script that updates paths based on hydra builds 2023-09-02 21:47:45 +02:00
491a4c2632 hosts/krypton: Update nixpkgs 2023-09-02 18:02:51 +02:00
437e0f4a35 .gitignore: Wildcard result links 2023-09-02 16:55:36 +02:00
6322949026 pkgs/nixfiles: Package nixfiles utility scripts 2023-09-01 17:23:53 +02:00
cf63ea90ac pkgs/nixfiles: Move utility scripts to pkgs 2023-09-01 16:44:25 +02:00
553542071d hosts/osmium: deploy nixfiles inputs update script 2023-09-01 16:38:34 +02:00
b83055e0af configuration/desktop: custom connectivity check url 2023-08-05 20:03:40 +02:00
e2dbc5244c hosts/krypton: add krita 2023-08-05 16:19:50 +02:00
387412db8e pkgs/nixfiles: add script that updates flake inputs and pushes it to upstream 2023-07-29 12:19:18 +02:00
b946bd19a1 hosts/krypton: update nixpkgs 2023-07-25 22:34:47 +02:00
deea08e0f9 hosts/krypton: update hardware configuration 2023-07-25 21:31:53 +02:00
ddbc04dfd2 modules/wg-clerie: select VPN endpoint based on IP protocol availability 2023-07-25 21:31:22 +02:00
c02a5af8d5 flake.nix: update nixpkgs-krypton 2023-07-16 01:01:17 +02:00
49f1790520 configuration/desktop: enable printing 2023-07-16 01:00:57 +02:00
6a3043d883 hosts/krypton: fix hibernate 2023-07-10 23:57:49 +02:00
7bd65e442a hosts/krypton: update nixpkgs 2023-07-10 23:52:50 +02:00
fcc3f61fbd hosts/hydra-1: use localhost as builder too 2023-07-08 23:29:55 +02:00
c6a1e2531e hosts/krypton: add onlyoffice 2023-07-08 23:01:48 +02:00
b23892df30 flake.nix: update nixfiles-krypton 2023-07-04 22:13:00 +02:00
06ef7a4d80 modules/backup: add command for backup management 2023-07-04 09:02:44 +02:00
25677a9e03 hosts/krypton: add xournalpp 2023-07-02 14:59:50 +02:00
9aa9412ce3 flake.nix: add substituters hints 2023-07-01 16:59:24 +02:00
3d13a0136f modules/backup: add restic cache 2023-07-01 13:08:49 +02:00
9dae541043 modules/clerie-gc-dir: regularly clean up downloads directory 2023-07-01 11:59:12 +02:00
4b40063bc2 modules/nixfiles: package script with writeShellApplication 2023-07-01 00:42:34 +02:00
176075485f hosts/krypton: do not show systemd-boot selector on boot 2023-07-01 00:10:22 +02:00
6a5e1b0a45 hosts/krypton: update nixpkgs 2023-06-30 23:47:43 +02:00
64ace7d041 hosts/krypton: add nixos-hardware for x270 2023-06-30 23:31:13 +02:00
1c52fc0dab flake.nix: colmena requires a nixpkgs with explicitly set system 2023-06-28 18:59:17 +02:00
1ff45a9068 hosts/monitoring-3: remove mail-1 from monitoring 2023-06-28 18:48:44 +02:00
942d226099 modules/backup: support excluding paths 2023-06-28 18:09:03 +02:00
80cc6522da hosts/krypton: enable backup 2023-06-20 20:36:53 +02:00
26f05a217b modules/backup: allow exclusion of paths 2023-06-20 20:35:37 +02:00
5ef293448d hosts/aluminium: add fieldpoc 2023-06-20 18:58:55 +02:00
14bc3b6fe8 hosts/aluminium: add ssh host key 2023-06-20 18:53:01 +02:00
dff3768ef3 hosts/krypton: add wg-clerie 2023-06-20 18:39:28 +02:00
376068a8e0 hosts/krypton: add ssh hostkey 2023-06-20 18:37:42 +02:00
11a5a520d8 modules/wg-clerie: migrate to age secrets 2023-06-20 18:36:28 +02:00
f07dbd3c53 hosts/krypton: do not dare using swap 2023-06-20 11:48:12 +02:00
cf3e4085b9 hosts/clerie: enable serial devices 2023-06-20 11:07:59 +02:00
abfafdd0af configuration/desktop: setup hibernate 2023-06-19 22:45:01 +02:00
3ec434470a configuration/desktop: cleanup config 2023-06-19 22:24:36 +02:00
417a739547 hosts/krypton,configuration/desktop: setup basic gnome environment 2023-06-19 22:20:47 +02:00
b481941eb2 hosts/krypton: add host 2023-06-19 19:45:28 +02:00
1fb973a3f0 flake.lock: update input chaosevents 2023-06-13 18:35:34 +02:00
8936e6a8b5 hosts/web-2: add chaosevent.clerie.de 2023-06-13 17:53:45 +02:00
4715a5340e hosts/astatine: add guest user 2023-05-30 17:34:06 +02:00
5270f493b8 hosts/monitoring-3: Make alerting rules more relsilient against missing scrapes 2023-05-28 12:10:45 +02:00
ad137204c3 hosts/monitoring-3: tune altering rules for backups to reduce false positives 2023-05-25 04:33:43 +02:00
b77e9016d7 host/monitoring-3: add rule for backups that are behind 2023-05-24 08:41:35 +02:00
22bf25715e modules/backup: expose last backup time to monitoring 2023-05-23 20:18:40 +02:00
2205429088 hosts/mail-2: add to backup 2023-05-22 07:46:11 +02:00
eb611f9c57 hosts/mail-2: add to monitoring 2023-05-22 07:02:45 +02:00
22ed8fff6e hosts/mail-2: enable IPv6 in docker 2023-05-21 09:41:32 +02:00
dd20c29c70 hosts/mail-2: enable docker 2023-05-20 17:52:03 +02:00
196fcf30a0 hosts/mail-2: add ssh pubkey 2023-05-20 17:35:39 +02:00
546ff35f33 flake.nix: sorted host configs 2023-05-20 17:34:02 +02:00
919e054d6f host/mail-2: add host 2023-05-20 17:20:33 +02:00
b03421ec96 Fix backup secrets generation script to actually append new secrets to htaccess files 2023-05-19 22:28:38 +02:00
4f01b4a8a1 hosts/clerie-backup,host/backup-4: restore missing htpasswd entries 2023-05-19 20:57:44 +02:00
628cc524a7 hosts/web-2: migrate to clerie-backup 2023-05-19 20:40:14 +02:00
1f21c2b911 Add script for backup secrets generation 2023-05-19 20:38:40 +02:00
b7c8ad09b6 configuration/common: force reigistry pinning for nixpkgs 2023-05-19 16:15:28 +02:00
6e2537341e configuration/common: pin nixpkgs to host version for nix commands 2023-05-19 10:06:47 +02:00
05a2742a91 modules/backup: add backup module using restic 2023-05-16 12:21:11 +02:00
2ab99d861a module/backup: remove backup module commited by accident 2023-05-16 09:48:34 +02:00
5fa2b58c3d hosts/backup-4: fix path to backup htpasswd 2023-05-16 09:28:44 +02:00
d241370821 hosts/clerie-backup,hosts/backup-4: change backup credentials for minecraft-2 2023-05-16 09:27:44 +02:00
98705a218c hosts/storage-2: set secrets permissions for nginx htpasswd 2023-05-16 08:13:12 +02:00
0393d26e71 flake.nix: update nixos-exporter and use provided modules 2023-05-09 11:56:53 +02:00
b4c5dc7c25 hosts/minecraft-2: test restic backup 2023-05-06 18:24:52 +02:00
2feb1b2b4c modules/monitoring: specify custom privateKeyFile path for wg-monitoring 2023-05-06 16:11:49 +02:00
f8328936b9 hosts/astatine: add monitoring secret 2023-05-06 15:40:42 +02:00
398067f533 hosts/monitoring-3: alert on averaged metrics 2023-05-04 14:43:14 +02:00
4834e5b91d hosts/dn42-ildix-service: add lookingglass 2023-05-04 14:35:30 +02:00
e9de141316 hosts/monioring-3: add more ping targets 2023-05-03 16:20:02 +02:00
14d48882ad modules/monitoring: acutally use secrets added for monitoring 2023-05-02 20:55:32 +02:00
a2deec6dfb hosts/web-2: radicale use secrets 2023-05-02 20:52:00 +02:00
bf0a8a31c3 hosts/storage-2: use secrets for basic auth 2023-05-02 20:40:30 +02:00
b60824e796 hosts/monitoring-3: use xmpp password from secrets 2023-05-02 20:27:03 +02:00
9982a4d710 hosts/hydra: use secrets for nix-cache 2023-05-02 20:14:02 +02:00
9d6a7b1c88 hosts/gatekeeper: add vpn secret 2023-05-02 19:57:21 +02:00
a34a637f48 hosts/dn42-il-gw1: migrate peering secrets to age 2023-05-02 19:52:02 +02:00
dcf8bc4035 modules/monitoring: migrate monitoring vpn secrets to age 2023-05-02 19:42:46 +02:00
cb12fb64cb hosts/web-2: expose know_hosts 2023-05-02 18:01:39 +02:00
d068fea2ce Add ssh public host keys 2023-05-02 10:33:56 +02:00
1cd9f1e52d hosts/backup-4: use secrets 2023-05-01 15:34:43 +02:00
809e8652ff secrets.nix: note down what happends 2023-05-01 15:19:59 +02:00
1b8b074dc5 secrets: automatically detect and configure secrets 2023-05-01 15:08:54 +02:00
ad3d98f637 configuration/common: add agenix to environment 2023-05-01 12:29:55 +02:00
bcbb1e364f configuration/common, users/clerie: move user config to seperate directory 2023-05-01 12:23:09 +02:00
d2472c79ee lib/flake-helper.nix: Automatically load secrets from hosts secrets directory 2023-05-01 12:09:47 +02:00
09b043c26c Introduce agenix secrets management 2023-05-01 11:37:33 +02:00
ce766a8f90 configuration/common: add additional ssh key for clerie 2023-04-30 20:58:28 +02:00
33db62362f modules/monitoring-3: expose systemd units 2023-04-30 20:57:42 +02:00
f2d91c9820 hosts/dn42-il-gw1: e1mo endpoind changed 2023-04-30 19:25:02 +02:00
56a34de0cb hosts/clerie-backup,hosts/backup-4: add restic server backup nodes 2023-04-30 19:24:18 +02:00
f8ab76d163 hosts/storage-2: expose media directory via http 2023-04-29 21:03:02 +02:00
c2786dbeb3 hosts/storage-2: cleanup unused services 2023-04-29 18:56:50 +02:00
7570974a67 hosts/clerie-backup: swap backup storage 2023-04-25 14:46:49 +02:00
4647bf8d48 hosts/nonat: add blackbox exporter 2023-04-24 21:00:35 +02:00
c8acc39d8d modules/wg-clerie: add module for public IPv6 vpn 2023-04-23 15:31:54 +02:00
93f1fa77e0 hosts/palladium: prevent borg filling up root partition 2023-04-23 15:00:42 +02:00
882df0098f hosts/monitoring-3: alert for all storage drives when they are full 2023-04-22 18:30:51 +02:00
7d13fb29d1 Define host groups 2023-04-21 23:03:11 +02:00
dcd8c37014 hosts/hydra-1,hosts/hydra-2,hosts/schule: migrate ssh settings 2023-04-21 22:07:54 +02:00
137cebbe9f configuration/common: fix ssh settings option names 2023-04-21 20:41:49 +02:00
de8a485779 hosts/monitoring: use correct instance for backup storage monitoring rule 2023-04-18 22:52:52 +02:00
127d8bbb2e hosts/clerie-backup: remove unused backup repos 2023-04-18 22:46:15 +02:00
6fdbd10054 hosts/backup-4: add repo for krypton 2023-04-18 20:39:35 +02:00
fcb15969e8 hosts/backup-4: remove rsnapshot service 2023-04-18 19:54:15 +02:00
bfa57cd723 hosts/hydra-1: disable localhost build 2023-04-18 17:17:14 +02:00
4326867c4b hosts/osmium: tune garbage collector 2023-04-17 07:06:55 +02:00
d5f82fd794 hosts/hydra-1: allow root login 2023-04-17 06:33:45 +02:00
4ab025cdad flake.nix: Support different system types 2023-04-16 16:37:11 +02:00
4b8a678873 hosts/hydra-*: enable ARM build on hydra 2023-04-16 16:17:13 +02:00
c68004f02e hosts/monitoring-3: add hydra monitoring 2023-04-16 16:01:45 +02:00
24c2e1738a lib/flake-helper: Ignore all hosts which name starts with an underscore for hydra 2023-04-16 15:50:10 +02:00
f62ceb8d2f hosts/osmium: Enable cross compiling 2023-04-16 15:31:30 +02:00
197e13306d configuration/common: Migrate sshd options 2023-04-16 15:31:07 +02:00
b2ca7d4c3c flake: Update nixpkgs 2023-04-16 15:30:32 +02:00
38edb24fca hosts/astatine: add to monitoring 2023-04-04 22:16:08 +02:00
0e4f3cce46 hosts/astatine: add event management vpn 2023-04-04 21:30:56 +02:00
622ea3fc64 hosts/gatekeeper: add vpn for astatine 2023-04-04 21:07:37 +02:00
5206cbac8d hosts/astatine: add host 2023-04-04 21:01:44 +02:00
41cd4792a6 hosts/monitoring-3: Replace InstanceUp alert with KernelChanged 2023-03-25 20:42:17 +01:00
77d10e4835 Update nixos-exporter 2023-03-25 20:02:34 +01:00
7f2025023c Update nixos-exporter 2023-03-23 21:12:25 +01:00
e38180a5f0 Specific nixpkgs per host 2023-03-23 17:09:54 +01:00
d30cbbf99d Unclutter flake 2023-03-23 16:45:30 +01:00
931fe57cf2 Add readme 2023-03-22 23:08:09 +01:00
62d2e6429a hosts/web-2: proper redirects for imprint 2023-03-22 22:51:19 +01:00
fd4e6aeae3 hosts/web-2: implement redirects for blog.clerie.de 2023-03-22 22:41:33 +01:00
c53b3e964b hosts/web-2: add legal.clerie.de 2023-03-22 22:27:36 +01:00
d0afa51964 configuration/common: Apply custom nginx logrotate 2023-03-15 22:50:46 +01:00
2085d8dda8 hosts/web-2: Do not log WebDAV Access 2023-03-15 22:50:08 +01:00
c554108bc7 hosts/web-2: configure logging for ip.clerie.de 2023-03-15 21:00:53 +01:00
60df38c367 configuration/common: Add virtual host to access log 2023-03-15 21:00:23 +01:00
66187e605a hosts/web-2: Tune logging for some vhosts 2023-03-15 20:32:18 +01:00
9de678984c Anonymized nginx access logs 2023-03-15 20:26:44 +01:00
93ec60a43f hosts/web-2: update clerie.de 2023-03-09 21:51:08 +01:00
dbc008769e hosts/dn42-ildix-service: prepare BGP setup 2023-02-28 20:50:26 +01:00
66baa8969f configuration/common: set git config globally 2023-02-28 19:41:03 +01:00
1783a97ccb hosts/dn42-ildix-service: init host 2023-02-28 19:32:24 +01:00
6e62975666 hosts/_iso: fix bash syntax 2023-02-28 19:07:33 +01:00
a06bd77850 modules/nixfiles: remove missing vars 2023-02-27 23:26:50 +01:00
1087715a1b hosts/_iso: add auto install script 2023-02-26 22:32:26 +01:00
98a576a4d7 modules/nixfiles: stage added config 2023-02-26 22:31:53 +01:00
2e15bbd6ed modules/nixfiles: remove install and rebuild wrapper 2023-02-26 22:23:20 +01:00
bdbe54a3f8 hosts/_iso: customize baseName 2023-02-26 19:40:19 +01:00
01a5bcce57 add custom nixos install iso 2023-02-26 18:55:21 +01:00
c22975bdcd hosts/dn42-ildix-clerie: make publicly reachable 2023-02-26 11:10:08 +01:00
deefb9c312 hosts/clerie-backup: replicate to hetzner storage 2023-02-25 23:24:41 +01:00
7103535731 configuration/common: enable fstrim on all hosts 2023-02-25 03:06:08 +01:00
2fd7a4c5aa hosts/monitoring-3: add monitoring of mercury 2023-02-24 23:47:46 +01:00
0a2bb76f40 hosts/hydra-1: use nix-serve-ng 2023-02-24 23:11:21 +01:00
c9bf0c7d1a configuration/common: do not log firewall anymore 2023-02-20 10:11:43 +01:00
ae1f68ac36 hosts/storage-2: add device to syncthing 2023-02-20 10:10:48 +01:00
403a58d266 hosts/storage-2: make music availiable via syncthing 2023-02-18 10:58:43 +01:00
7d04db9809 hosts/web-2: add drop.clerie.de shortlink for sending files 2023-02-17 22:42:13 +01:00
5649fd8b91 hosts/storage-2: prevent youtube-dl downloading tracks again and again and again 2023-02-17 22:02:27 +01:00
4626b87dcb hosts/carbon: make kea retry a couple of time for attaching to interfaces 2023-02-17 20:48:15 +01:00
cc501fc898 hosts/hydra-1: apply workaround for broken nix-serve 2023-02-10 23:32:34 +01:00
39869f4c8b hosts/hydra-2: fix typo in ip address 2023-02-06 14:19:04 +01:00
9849e4868d hosts/monitoring-3: Use solid-xmpp-alarm 2023-02-06 13:38:16 +01:00
8d623692c7 hosts/mail-1: Move monitoring config for manually managed host to config directly 2023-02-06 12:51:20 +01:00
9ee8585716 Replace lib/hosts.nix with an injected special argument containing the nix flake 2023-02-06 12:20:59 +01:00
8748015acc hosts: remove explicit per host configuration/common import 2023-02-05 21:19:05 +01:00
38567829f1 hosts/monitoring-3: alert on out of sync host system 2023-02-04 01:15:07 +01:00
4fffc64c35 hosts/monitoring-3: validate nixos hash versions 2023-02-04 00:57:55 +01:00
6082fb0744 hosts/monitoring-3: split host config to multiple files 2023-02-03 22:28:50 +01:00
0a1311252b hosts/schule: remove mongodb due to license issues 2023-02-03 21:40:51 +01:00
44148007fc hosts/monitoring-3: update changed option names 2023-02-03 21:23:26 +01:00
230cd17208 hosts/carbon: block incoming connections 2023-02-03 01:02:13 +01:00
7f84597b56 modules/clerie-firewall: enable connection tracking 2023-02-03 00:49:56 +01:00
f05567cbce hosts/carbon: enable mss clamping 2023-02-03 00:41:40 +01:00
f2d88ee295 modules/clerie-firewall: add chains for clean forwarding rules 2023-02-03 00:41:15 +01:00
e2200e9516 configuration/router: use nixos-fw chain 2023-02-03 00:16:41 +01:00
ee61ab2b1b Update nixpkgs sources 2023-02-02 23:17:21 +01:00
5bb88492c2 hosts/storage-2: optimize music scraper 2023-01-18 20:40:45 +01:00
820a05b266 modules/monitoring: update nixos exporter package 2023-01-18 17:09:52 +01:00
5a387c3c23 hosts/monitoring-3: update dashboard 2023-01-08 15:23:19 +01:00
cfd746fddb Introduce service levels and change alert routing based on this 2023-01-05 23:16:50 +01:00
30e22dff8d hosts/monitoring-3: use primary fqdn for instance label in prometheus 2023-01-05 22:02:48 +01:00
1dfba9663a activate NixOS monitoring in prometheus 2023-01-02 21:43:43 +01:00
64122a7149 modules/monitoring: add nixos-exporter 2023-01-02 19:10:33 +01:00
fb4e0ecd33 flake.nix: generate nixos systems with functions 2023-01-01 01:24:33 +01:00
1b0b4e2d95 hosts/beryllium: disable firewall 2022-12-30 17:47:12 +01:00
1ba4c66697 hosts/aluminium: use policyrouting for IPv4 too 2022-12-30 17:46:11 +01:00
bba5d8c044 hosts/beryllium: use named routing table 2022-12-29 22:50:34 +01:00
b3ef4e6bde hosts/beryllium: add management tunnel 2022-12-29 17:02:22 +01:00
8e96523837 hosts/beryllium: add host 2022-12-29 16:46:51 +01:00
6d89551808 hosts/storage-2: add bahnansagen 2022-12-29 16:16:13 +01:00
33195da4d7 host/aluminium: assign static management ip 2022-12-28 01:25:12 +01:00
2cfc9f1387 hosts/aluminium: init host 2022-12-28 00:39:35 +01:00
2e9da82d94 hosts/schule: add host 2022-12-09 23:24:09 +01:00
a6b7467aa9 hosts/hydra-1: Propagate own nix-cache when diplaying nix-env commands 2022-12-07 20:19:58 +01:00
91e6a42ea3 hosts/porter: add scholl service proxy 2022-12-05 20:45:00 +01:00
607fdde5fd hosts/web-2: fix data type of meowing 2022-11-29 20:55:48 +01:00
a0406007dd configuration/common: use nix-cache.clerie.de as a substituter 2022-11-19 00:06:33 +01:00
686c587587 hosts/hydra-1: display help page for nix cache 2022-11-18 23:59:00 +01:00
8ddfcf6c17 hosts/hydra-1: add nix-cache.clerie.de 2022-11-13 16:38:18 +01:00
df4e162a9b hosts/web-2: add tap.clerie.de 2022-11-08 17:04:03 +01:00
aef18ccde7 modules/monitoring: fix node exporter interface stats access 2022-11-02 18:47:06 +01:00
273e729eba hosts/carbon: add blackbox exporter 2022-11-02 18:46:24 +01:00
be5b1c1baf hosts/monitoring-3: move to blackbox monitoring 2022-10-31 22:54:06 +01:00
eefd8af665 hosts/storage-2: add share service 2022-10-31 21:46:54 +01:00
5d0c59504c flake.lock: update nixpkgs 2022-10-31 18:25:30 +01:00
02c05983e6 hosts/hydra-1: pin buildmachine user 2022-10-18 07:11:20 +02:00
6dc04a8581 replace fetchGit with pkgs.fetchgit 2022-10-17 23:03:09 +02:00
0b66c298ab configuration/common: add more system packages 2022-10-17 22:14:49 +02:00
ecd2885037 hosts/hydra-1: make ssh key accessible to hydra and pin hydra-2 host key 2022-10-17 21:09:58 +02:00
139fe5a443 configuration/common: enable auto-optimise-store by default 2022-10-16 12:56:07 +02:00
a48547445a hosts/hydra-1: ping remote builder host key 2022-10-16 12:50:16 +02:00
63d0f4b42f hosts/hydra-2: remove ssh command, because it doesn't work 2022-10-15 17:58:59 +02:00
fa025a7a65 hosts/hydra-*: enable distributed builds 2022-10-15 16:04:40 +02:00
701f8bd41f hosts/hydra-2: add host 2022-10-15 13:09:48 +02:00
4027b812a2 hosts/hydra-1: allow hydra to utilize cache 2022-10-14 14:53:39 +02:00
b93e634a04 flake: restructure host defition and add hosts to hydra 2022-10-03 15:26:15 +02:00
2a2e7e0d96 configuration/common: add colmena to global packages 2022-10-03 13:14:39 +02:00
3d48949629 hosts/hydra: add http to restricted mode allow urls 2022-10-02 22:12:19 +02:00
a715d55d96 flake: add packages to flake and add hydra build jobs 2022-10-02 20:38:02 +02:00
f67a810a2b hosts/hydra-1: add hydra service 2022-10-02 17:46:39 +02:00
efe47bacb1 hosts/hydra-1: add new host 2022-10-02 16:51:23 +02:00
89163d4cf3 pkgs/wetter: rename pkg-config 2022-10-02 16:50:31 +02:00
d39e2b94d8 flake: migrate deploy to flake 2022-10-02 16:49:43 +02:00
e9414209f5 hosts/monitoring-3: alert for hosts that just booted 2022-10-02 11:59:37 +02:00
f99779e963 pkgs/prometheus-xmpp-alerts: upstream version got updated, remove override 2022-10-02 11:58:58 +02:00
2f91b7cd75 modules/chisel: Create proper module and lock down service 2022-09-29 19:02:05 +02:00
1d8b007b95 hosts/carbon: Remove from overlay network 2022-09-29 18:15:10 +02:00
1c15fbecee configuration/common: Enable nix flakes 2022-09-29 17:49:25 +02:00
ce10724700 hosts/osmium: Set custom garbage collector interval 2022-09-29 17:44:05 +02:00
75f612a857 hosts/porter: Add snowflake 2022-09-29 17:36:16 +02:00
b016e76f09 hosts/porter: Put chisel behind nginx 2022-09-28 22:47:52 +02:00
ac61842f29 configuration/common: Tweak nginx default vhost 2022-09-28 22:09:16 +02:00
2cd917d56d modules/akne: Fix default value and tweak finished target 2022-09-28 22:07:41 +02:00
05d7d04052 configuration/common: Define a global default virtual host for nginx 2022-09-28 21:09:32 +02:00
cb8a6c998d modules/akne: Make akne work again and make the module usable 2022-09-28 21:08:20 +02:00
d54c8a6853 gatekeeper: Remove host from overlay network 2022-09-28 20:07:14 +02:00
c456f09dbf nonat: Remove host from overlay network 2022-09-28 19:55:37 +02:00
9c4672182a porter: Remove node from overlay network 2022-09-28 19:31:22 +02:00
5a46d7662e gatekeeper: Remove unused firewall rule that blocks all IPv4 DNS traffic as a side effect 2022-09-27 12:04:27 +02:00
4a9db34696 Retire world-dev 2022-09-14 19:48:04 +02:00
fb1c2cd1e8 Quote deploy command correctly 2022-09-14 19:46:15 +02:00
abd589aa73 Alert for full backup storage 2022-09-14 19:38:10 +02:00
018b04b798 Update renamed gitea options 2022-09-11 20:07:19 +02:00
cdbe62e788 Alert for hosts that are up for too long 2022-09-11 17:01:24 +02:00
6d1e848564 Add VPN for evey 2022-08-26 21:44:37 +02:00
601b5fe8c1 Add ping.clerie.de website 2022-08-25 23:22:05 +02:00
fbc60e98b9 Update web-2 2022-08-25 23:21:41 +02:00
d1c7267119 storage-2: Add directory listing service with DAV file upload 2022-08-14 21:04:21 +02:00
3f3fb0fc19 Add redirect from www. to bula22.de 2022-08-14 12:25:13 +02:00
ebc6771a5c Move data to dedicated disk 2022-08-14 12:24:31 +02:00
56788025f4 Add webcam to bula22.de 2022-07-25 20:25:50 +02:00
cc8abd07b8 Add domain bula22.de to web-2 2022-07-25 19:34:00 +02:00
bd00b1f86d Add VPN tunnel 2022-07-25 19:32:55 +02:00
90df3c62aa Add automatiion script for creating backup disks 2022-07-02 00:00:22 +02:00
57223d02ac Add public IPv6 VPN for Bula 2022-07-01 23:09:27 +02:00
525e83b9fd Remove heimnetz IPv6 tunnel 2022-07-01 21:19:19 +02:00
fd1d9a2252 Fix external backup again 2022-06-12 21:51:19 +02:00
5b6cadecbe Update website clerie.de 2022-06-12 21:49:36 +02:00
fcb7057b9d Renumber public IPv6 address 2022-05-26 10:54:01 +02:00
3e35deb089 Use first link local IPv6 address as gateway 2022-05-26 10:41:27 +02:00
e5d1e11b31 Removed unavailiable source 2022-05-26 01:13:12 +02:00
8612c79420 Add tools to partition disk for cases the drive is full again 2022-05-26 01:05:17 +02:00
01c0f82209 Display readable file sizes 2022-05-26 01:04:25 +02:00
bb07c9d88a Restructure unit generation and add more sources 2022-05-26 00:41:57 +02:00
031bd72e17 Provide GPG key using web key directory 2022-04-15 14:03:13 +02:00
5ba4163f95 Adding matrix server to monitoring 2022-04-14 21:12:44 +02:00
17f385aee1 Remove redundant default routes in RAs 2022-04-14 20:59:22 +02:00
c55be6f01a Migrate Heimnetz IPv6 network to native prefix 2022-04-03 13:54:18 +02:00
791c1a8d90 Move DHCP server for gastnetz to carbon too 2022-04-03 13:39:11 +02:00
f93c4a0d11 Enable IPv6 on guest net 2022-04-03 13:28:08 +02:00
82f22ef444 Add lutoma peering 2022-03-22 14:15:46 +01:00
588db80877 Add bird to monitoring 2022-03-22 12:16:28 +01:00
3ff361db44 Add nm check endpoint which simulates a captive portal 2022-03-07 12:30:35 +01:00
0b6168eaae Update wetter 2022-03-05 13:43:24 +01:00
8708e02d35 Add more addresses to ping 2022-02-28 16:33:23 +01:00
2a462cb90a Add user that is allowed to edit wetter database 2022-02-28 15:36:40 +01:00
f8d69b1784 Add captive portal detection service 2022-02-26 16:14:07 +01:00
ad7acad5bd Fix wetter packaging 2022-02-26 13:15:30 +01:00
39b6291cb1 Comment out sass compiler because it breaks building the whole os, therefore no css for this application 2022-02-25 18:05:11 +01:00
911f410292 Migrate renamed options 2022-02-25 10:58:42 +01:00
4e11b294c4 Override the xmpp-alerts source because the current version in nixpkgs is broken 2022-02-25 10:49:07 +01:00
54df2256b9 Allow DNS over TCP 2022-02-12 15:25:56 +01:00
a5f2a58ff0 Enable Kea for Heimnetz 2022-02-12 15:22:57 +01:00
716dfce84d I don't care about industry standarts anymore 2022-02-08 21:03:40 +01:00
8f5a0bad31 Tune unbound cached records a bit to answer faster 2022-02-08 20:56:10 +01:00
2d5f6d6892 Remove rsync from required packages 2022-02-08 20:32:59 +01:00
db4db15086 Fix mount point name for unmount 2022-02-08 20:31:54 +01:00
8127ad8e02 Dirty migration of backup magic to external drive 2022-01-24 19:20:09 +01:00
fca4f238ec Add VoIP Network 2022-01-22 14:13:57 +01:00
2fa35d173e Start backup daily 2022-01-13 13:43:34 +01:00
ebd1aeb05a Introduce new stage 2 backup strategy 2022-01-11 21:31:25 +01:00
9f1d07c119 Assign static IPv6 to palladium 2022-01-11 19:48:43 +01:00
e40273f767 Optimize youtube-dl download options 2022-01-03 20:57:54 +01:00
e6876d95d1 Add mixcloud mirror 2022-01-02 21:55:09 +01:00
3d588080bc Add storage-2 2022-01-02 21:22:05 +01:00
f3ad42da46 Add setup-configuration.nix which is easy to include in new host configurations when deployment is not configured yet 2022-01-02 18:40:55 +01:00
3827c06fdf Add recursive dns server to router 2022-01-02 16:39:27 +01:00
c8884c45bf Do router advertisements right 2022-01-02 00:30:05 +01:00
b37d2bccf9 apply configuration hints to fix my pppoe 2021-12-24 13:15:54 +01:00
bf2aa2ec4f Hotfix: restart more often the broken stuff 2021-12-23 23:12:15 +01:00
c42932db0e Trying out smokeping exporter 2021-12-20 17:49:06 +01:00
835c5e396e Monitor XMPP Notifications 2021-12-20 16:47:57 +01:00
4ea5a21103 Resolve monitoring-3 hostname to loopback 2021-12-20 16:37:31 +01:00
13b12c5286 Yeah, there are cors headers... 2021-12-12 19:06:14 +01:00
2a4f3a2d83 Migrate prediger website to web-2 2021-12-12 18:42:41 +01:00
6df7ca5da6 Migrate radicale config to attribute set 2021-12-12 17:30:08 +01:00
5919287792 Use upstream gitea module now 2021-12-12 17:22:43 +01:00
13f9a3b6a3 Fix changed behaviour of fetchGit 2021-12-12 13:35:13 +01:00
a76916d06d Add backup scripts to version control 2021-12-07 19:48:24 +01:00
f93223a109 Update version string 2021-12-07 19:46:47 +01:00
c8294a848e Tweak backup config 2021-12-07 19:31:17 +01:00
d195436aea show me what broke on deploy 2021-12-07 19:18:01 +01:00
b62198e7a0 Use correct python version 2021-12-07 19:10:14 +01:00
0f62e84479 Make status page public availiable 2021-12-07 19:09:50 +01:00
5b4d3bca76 Use correct python environment 2021-12-07 18:29:16 +01:00
1540443a5b ppp freeze hotfix 2021-12-07 18:15:59 +01:00
bd558481be Enable PPPoE debugging 2021-12-04 10:52:58 +01:00
b0d64acb33 Increased monitoring rule wait for host down 2021-10-23 18:26:08 +02:00
3ea21db30b Improve monitoring rules 2021-10-23 18:14:51 +02:00
00caae0ed3 Move rules to dedicated file 2021-10-22 23:53:42 +02:00
4392302eb4 Add alerting to monitoring 2021-10-22 23:21:26 +02:00
cdcf21427a Add vpn access 2021-10-22 22:00:27 +02:00
e327d80263 Fix module import 2021-08-31 19:16:53 +02:00
b25f5e9411 Remove ard erothek 2021-08-30 21:22:57 +02:00
f01337ee3a Updated papermc version 2021-08-30 21:22:07 +02:00
b3df6d4032 Fix firewall for guest network 2021-08-29 17:43:04 +02:00
57eb487427 tcpdump is extremely useful 2021-08-29 12:45:44 +02:00
2d7483e6fe Use DSL now 2021-08-28 18:01:49 +02:00
c55c0d7367 Restrict guest network 2021-08-19 19:03:34 +02:00
222d538de6 Block IP4 traffic from and to guest network 2021-08-01 14:50:31 +02:00
008a51702a Change to new networking setup and add guest network 2021-08-01 13:32:48 +02:00
6cec90bdfa Deploy chisel on porter 2021-07-23 23:33:03 +02:00
b7798bf8ee Workaround for shitty pulic wifi firewalls 2021-07-11 16:21:35 +02:00
2525c506fc Add debian host mail-1 to monitoring 2021-06-20 16:06:42 +02:00
d43e635f9e Update iot-dat 2021-06-20 16:05:59 +02:00
1cb3143096 Let prometheus scrape temperature values from iot data 2021-06-20 16:05:37 +02:00
4707c565b1 Deploy iot-data 2021-06-19 12:51:38 +02:00
416c19b1c3 Automatic garbage collection 2021-06-18 12:45:26 +02:00
d4d0a5b274 Change minecraft server edition to get current version 2021-06-18 12:38:14 +02:00
c02faca6fc Add minecraft-2 to backup 2021-06-18 12:25:41 +02:00
51a3f6a1df Add akne module for getting self signed certs with acme client 2021-05-15 18:48:38 +02:00
6ee3387680 Add status page to monitoring-3 2021-05-15 18:43:15 +02:00
1caff12782 Switch from gre tunnel to wireguard for heimnetz transport 2021-05-12 10:04:04 +02:00
a3002d2455 Add carbon to monitoring 2021-05-07 21:58:30 +02:00
d8547c2a98 Change monitoring scraping interval to 15s 2021-05-07 16:51:15 +02:00
3a17ce19f9 Add palladium to backup cluster 2021-05-07 16:26:24 +02:00
de13ca0b79 Silence HDDs on palladium 2021-05-01 13:01:08 +02:00
47ebac55cd Enable monitorng on palladium 2021-04-30 23:54:43 +02:00
17e3d37989 Add host palladium 2021-04-30 23:36:48 +02:00
db37daab95 Add ard erothek to web-2 2021-04-30 23:36:26 +02:00
7c13997caa Enable local workadventure backend on world-dev 2021-04-21 22:30:17 +02:00
83467d3f90 Serve workadventure front 2021-04-20 22:28:46 +02:00
c07c8a92c2 tweaking rsync opts 2021-04-11 17:37:27 +02:00
1b1bf2dc37 Remove borgbackup from loaded modules 2021-04-11 17:36:37 +02:00
246be85592 Remove custom borgbackup module 2021-04-11 12:20:48 +02:00
e55c86a037 Prepare clerie-backup for replication 2021-04-11 12:17:47 +02:00
548004b1a1 Add host backup-4 2021-04-11 12:13:41 +02:00
cc38f3aa65 Allow specifying umask for borgbackup repos 2021-04-10 14:59:32 +02:00
5e5a3ad869 Add borgbackup module to customize 2021-04-10 14:52:55 +02:00
b1b57a97ad Add host world-dev 2021-03-27 12:41:14 +01:00
209c0a5477 Add frainz to ildix 2021-03-22 23:20:15 +01:00
8467002912 Add dn42-il-gw6 to monitoring 2021-02-25 17:18:00 +01:00
69fe8fedc7 Add backup repo terra 2021-02-25 17:17:31 +01:00
93f02bf055 Add dn42-il-gw5 to mon+itoring 2021-02-24 13:22:32 +01:00
1e2112bcc0 Add dn42-il-gw1 to monitoring 2021-02-24 13:22:11 +01:00
268 changed files with 11357 additions and 4331 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
result
result*
.Trash-1000

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
# clerie's nixfiles
This repository contains all the configuration for clerie's infrastructure.
[Build Status](https://hydra.clerie.de/jobset/nixfiles/nixfiles#tabs-jobs) | [Installer ISO](https://hydra.clerie.de/job/nixfiles/nixfiles/iso/latest)

View File

@@ -0,0 +1,12 @@
{ ... }:
{
clerie.backup = {
targets = {
cyan.serverName = "cyan.backup.clerie.de";
magenta.serverName = "magenta.backup.clerie.de";
};
};
}

View File

@@ -2,56 +2,17 @@
{
imports = [
../../modules
./backup.nix
./initrd.nix
./locale.nix
./networking.nix
./nix.nix
./programs.nix
./ssh.nix
./systemd.nix
./user.nix
./web.nix
];
networking.domain = "net.clerie.de";
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
console = {
keyMap = "de-latin1";
};
security.sudo.wheelNeedsPassword = false;
nix.trustedUsers = [ "@wheel" ];
users.users.clerie = {
isNormalUser = true;
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnUBblmmVoMMBftn4EnwnzqR12m9zill51LpO124hHb10K2rqxNoq8tYSc2pMkV/3briZovffpe5SzB+m2MnXbtOBstIEXkrPZQ78vaZ/nLh7+eWg30lCmMPwjf2wIjlTXkcbxbsi7FbPW7FsolGkU/0mqGhqK1Xft/g7SnCXIoGPSSrHMXEv5dPPofCa1Z0Un+98wQTVfOSKek6TnIsfLbG01UFQVkN7afE4dqSmMiWwEm2PK9l+OiBA2/QzDpbtu9wsfTol4c192vFEWR9crB2YZ1JlMbjVWHjYmB7NFsS0A6lUOikss0Y+LUWS2/QuM/kqybSo4rasZMAIazM6D clerie"
];
};
environment.systemPackages = with pkgs; [
htop
tmux
];
programs.mtr.enable = true;
services.openssh.enable = true;
services.openssh.passwordAuthentication = false;
services.openssh.challengeResponseAuthentication = false;
services.openssh.permitRootLogin = lib.mkDefault "no";
services.nginx = {
enableReload = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
};
security.acme = {
email = "letsencrypt@clerie.de";
acceptTerms = true;
};
nixpkgs.overlays = [
(import ../../pkgs/overlay.nix)
];
services.fstrim.enable = true;
}

View File

@@ -0,0 +1,7 @@
{ lib, ... }:
{
boot.initrd.systemd.enable = lib.mkDefault true;
}

View File

@@ -0,0 +1,26 @@
{ ... }:
{
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
# LC_COLLATE # How to sort stuff
# LC_CTYPE # Character recognition of bytes
# LC_IDENTIFICATION # What to show as system locale
LC_MONETARY = "de_DE.UTF-8"; # Currency formats
# LC_MEASSAGES # General message lang
LC_MEASUREMENT = "de_DE.UTF-8"; # Units used for numbers
LC_NAME = "de_DE.UTF-8"; # Names of persons
# LC_NUMERIC # Punctiation of numbers
LC_PAPER = "de_DE.UTF-8"; # Paper size
LC_TELEPHONE = "de_DE.UTF-8"; # Phone number formats
LC_TIME = "de_DE.UTF-8"; # Time format
};
console = {
keyMap = "de-latin1";
};
}

View File

@@ -0,0 +1,9 @@
{ lib, ... }:
{
networking.domain = "net.clerie.de";
networking.firewall.logRefusedConnections = lib.mkDefault false;
}

View File

@@ -0,0 +1,70 @@
{ lib, pkgs, ... }:
{
clerie.nixfiles.enable = true;
clerie.system-auto-upgrade.enable = true;
nix.settings = {
trusted-users = [ "@wheel" "@guests" ];
auto-optimise-store = true;
# Keep buildtime dependencies
keep-outputs = true;
# Build local, when caches are broken
fallback = true;
};
nix.gc = lib.mkDefault {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
nix.settings = {
experimental-features = [
"flakes"
"nix-command"
];
substituters = [
"https://nix-cache.clerie.de"
];
trusted-public-keys = [
"nix-cache.clerie.de:bAt1GJTS9BOTcXFWj3nURrSlcjqikCev9yDvqArMP5g="
];
};
# Pin current nixpkgs channel and flake registry to the nixpkgs version
# the host got build with
nix.nixPath = lib.mkForce [ "nixpkgs=${lib.cleanSource pkgs.path}" ];
nix.registry = {
"nixpkgs" = lib.mkForce {
from = {
type = "indirect";
id = "nixpkgs";
};
to = {
type = "path";
path = lib.cleanSource pkgs.path;
};
exact = true;
};
"templates" = {
from = {
type = "indirect";
id = "templates";
};
to = {
type = "git";
url = "https://git.clerie.de/clerie/flake-templates.git";
};
};
};
documentation.doc.enable = false;
environment.systemPackages = with pkgs; [
nix-remove-result-links
];
}

View File

@@ -0,0 +1,40 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# My system is fucked
gptfdisk
parted
# Normal usage
htop
tmux
# Deployment
bij
clerie-sops
clerie-sops-edit
sops
# Debugging
jq
curl
];
programs.vim = {
enable = true;
defaultEditor = true;
};
programs.mtr.enable = true;
programs.git.enable = true;
programs.git.config = {
user = {
name = "clerie";
email = "git@clerie.de";
};
};
}

View File

@@ -0,0 +1,16 @@
{ lib, ... }:
{
services.openssh.enable = true;
services.openssh.settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = lib.mkDefault "no";
};
services.openssh.hostKeys = lib.mkForce [
# Only create ed25519 host keys
{ type = "ed25519"; path = "/etc/ssh/ssh_host_ed25519_key"; }
];
}

View File

@@ -0,0 +1,9 @@
{ ... }:
{
services.journald.extraConfig = ''
MaxRetentionSec=7days
'';
}

View File

@@ -0,0 +1,9 @@
{ lib, ... }:
{
security.sudo.wheelNeedsPassword = lib.mkDefault false;
users.groups.guests = {};
}

View File

@@ -0,0 +1,50 @@
{ ... }:
{
services.nginx = {
enableReload = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
commonHttpConfig = ''
server_names_hash_bucket_size 64;
map $remote_addr $remote_addr_anon {
~(?P<ip>\d+\.\d+\.\d+)\. $ip.0;
~(?P<ip>[^:]*:[^:]*(:[^:]*)?): $ip::;
default ::;
}
log_format combined_anon '$remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
log_format vcombined_anon '$host: $remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log vcombined_anon;
'';
virtualHosts = {
"default" = {
default = true;
rejectSSL = true;
locations."/" = {
return = ''200 "Some piece of infrastructure\n"'';
extraConfig = ''
types { } default_type "text/plain; charset=utf-8";
'';
};
};
};
};
services.logrotate.settings.nginx = {
frequency = "daily";
maxage = 14;
};
security.acme = {
defaults.email = "letsencrypt@clerie.de";
acceptTerms = true;
};
}

View File

@@ -0,0 +1,19 @@
{ ... }:
{
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse = {
enable = true;
};
};
}

View File

@@ -0,0 +1,19 @@
{ ... }:
{
imports = [
./audio.nix
./firmware.nix
./fonts.nix
./gnome.nix
./inputs.nix
./networking.nix
./polkit.nix
./power.nix
./printing.nix
./ssh.nix
./xserver.nix
];
security.sudo.wheelNeedsPassword = true;
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
services.fwupd.enable = true;
}

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
fonts.enableDefaultPackages = true;
fonts.packages = with pkgs; [
roboto
roboto-mono
noto-fonts
noto-fonts-emoji
comfortaa
] ++ (if pkgs ? "noto-fonts-cjk-sans" then [ pkgs.noto-fonts-cjk-sans ] else [ pkgs.noto-fonts-cjk ]);
}

View File

@@ -0,0 +1,61 @@
{ pkgs, ... }:
{
services.gnome = {
tracker-miners.enable = false;
tracker.enable = false;
};
environment.gnome.excludePackages = with pkgs; [
baobab
epiphany
gnome-calendar
gnome-clocks
gnome-console
gnome-contacts
gnome-logs
gnome-maps
gnome-music
gnome-tour
gnome-photos
gnome-weather
gnome-connections
simple-scan
yelp
geary
];
environment.systemPackages = with pkgs; [
evolution
gnome-terminal
gnome-tweaks
];
services.gnome.evolution-data-server.enable = true;
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/desktop/calendar" = {
show-weekdate = true;
};
"org/gnome/desktop/interface" = {
enable-hot-corners = false;
show-battery-percentage = true;
};
"org/gnome/desktop/notifications" = {
show-in-lock-screen = false;
};
"org/gnome/desktop/sound" = {
event-sounds = false;
};
"org/gnome/gnome-system-monitor" = {
network-in-bits = true;
network-total-in-bits = true;
};
};
}
];
};
}

View File

@@ -0,0 +1,43 @@
{ ... }:
{
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/desktop/peripherals/touchpad" = {
disable-while-typing = false;
edge-scrolling-enabled = false;
natural-scroll = true;
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"
];
mic-mute = [ "<Control>Print" ];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
name = "Terminal";
binding = "<Primary><Alt>t";
command = "gnome-terminal";
};
};
}
];
gdm.databases = [
{
settings = {
"org/gnome/desktop/peripherals/touchpad" = {
disable-while-typing = false;
edge-scrolling-enabled = false;
natural-scroll = true;
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
};
}
];
};
}

View File

@@ -0,0 +1,14 @@
{ ... }:
{
networking.networkmanager.settings = {
connectivity = {
uri = "http://ping.clerie.de/nm-check.txt";
};
global-dns = {
searches = "net.clerie.de";
};
};
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
security.polkit.enable = true;
}

View File

@@ -0,0 +1,42 @@
{ lib, config, ... }:
{
boot.resumeDevice = lib.optionalString ((lib.length config.swapDevices) > 0) (lib.head config.swapDevices).device;
services.logind = {
lidSwitch = "suspend-then-hibernate";
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=30m
'';
services.upower = {
percentageLow = 20;
percentageCritical = 10;
percentageAction = 8;
};
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
power-saver-profile-on-low-battery = false;
sleep-inactive-ac-type = "nothing";
};
};
}
];
gdm.databases = [
{
settings = {
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
power-saver-profile-on-low-battery = false;
sleep-inactive-ac-type = "nothing";
};
};
}
];
};
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
services.printing.enable = true;
services.avahi.enable = true;
services.avahi.nssmdns4 = true;
}

View File

@@ -0,0 +1,34 @@
{ pkgs, ... }:
{
imports = [
../../configuration/gpg-ssh
];
programs.gnupg.agent = {
pinentryPackage = pkgs.pinentry-gtk2;
};
# Do not disable ssh-agent of gnome-keyring, because
# gnupg ssh-agent can't handle normal SSH keys properly
/*
# Disable ssh-agent of gnome-keyring
nixpkgs.overlays = [
(final: prev: {
gnome = prev.gnome // {
gnome-keyring = prev.runCommand "gnome-keyring-ssh-disabled-autostart" {} ''
mkdir -p $out
# Symlink all gnome-keyring binaries
${final.xorg.lndir}/bin/lndir -silent ${prev.gnome.gnome-keyring} $out
# Disable autostart for ssh
rm $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
cat ${prev.gnome.gnome-keyring}/etc/xdg/autostart/gnome-keyring-ssh.desktop > $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
echo "Hidden=true" >> $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
'';
};
})
];
*/
}

View File

@@ -0,0 +1,11 @@
{ pkgs, ... }:
{
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.xserver.excludePackages = with pkgs; [
xterm
];
}

View File

@@ -0,0 +1,51 @@
{ pkgs, lib, ... }:
let
custom_gnupg = pkgs.gnupg.overrideAttrs (final: prev: {
configureFlags = prev.configureFlags ++ [
# Make sure scdaemon never ever again tries to use its own ccid driver
"--disable-ccid-driver"
];
});
in {
programs.gnupg.package = custom_gnupg;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = lib.mkDefault pkgs.pinentry-curses;
};
environment.systemPackages = with pkgs; [
custom_gnupg
yubikey-personalization
openpgp-card-tools
# Add wrapper around ssh that takes the gnupg ssh-agent
# instead of gnome-keyring
ssh-gpg
];
services.pcscd.enable = true;
# pcscd sometimes breaks and seem to need a manual restart
# so we allow users to restart that service themself
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if (
action.id == "org.freedesktop.systemd1.manage-units"
&& action.lookup("unit") == "pcscd.service"
&& action.lookup("verb") == "restart"
&& subject.isInGroup("users")
) {
return polkit.Result.YES;
}
});
'';
services.udev.packages = with pkgs; [
yubikey-personalization
];
}

View File

@@ -0,0 +1,8 @@
{ ... }:
{
networking.useDHCP = false;
networking.defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
networking.defaultGateway = { address = "172.31.1.1"; interface = "ens3"; };
networking.nameservers = [ "2a01:4ff:ff00::add:2" "2a01:4ff:ff00::add:1" "185.12.64.2" "185.12.64.1" ];
}

View File

@@ -0,0 +1,16 @@
{ ... }:
{
# Allow Hydra to fetch remote URLs in restricted mode
nix.settings.allowed-uris = "http: https: git+https: github:";
services.openssh.settings= {
PermitRootLogin = "yes";
};
users.extraUsers.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMv8Lbca/CR4das3HJ2F/sQ9dA7kdGS1hSVTt5lX4diP root@hydra-1"
];
}

View File

@@ -3,6 +3,7 @@
{
environment.systemPackages = with pkgs; [
wireguard-tools
tcpdump
];
boot.kernel.sysctl = {
@@ -19,10 +20,8 @@
networking.firewall.extraCommands = ''
# Open fireall for OSPF
ip6tables -A INPUT -p ospfigp -j ACCEPT
iptables -A INPUT -p ospfigp -j ACCEPT
ip46tables -A nixos-fw -p ospfigp -j nixos-fw-accept
# Open firewall for GRE
ip6tables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
ip46tables -A nixos-fw -p gre -j nixos-fw-accept
'';
}

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env bash
DEPLOY_HOST=$1
DEPLOY_ADDRESS=$2
DEPLOY_PORT=$3
if [ -z $DEPLOY_HOST ]; then
exit 1
fi
cmd=" \
nixos-rebuild switch \
-I nixos-config=hosts/${DEPLOY_HOST}/configuration.nix \
"
if [ -z $DEPLOY_ADDRESS ] || [ $DEPLOY_ADDRESS = "-" ]; then
DEPLOY_ADDRESS="clerie@${DEPLOY_HOST}.net.clerie.de"
fi
if [ $DEPLOY_ADDRESS != "localhost" ]; then
cmd="${cmd} \
--target-host ${DEPLOY_ADDRESS} \
--build-host localhost \
--use-remote-sudo \
"
fi
if [ -n "$DEPLOY_PORT" ]; then
cmd="NIX_SSHOPTS=\"-p $DEPLOY_PORT\" ${cmd}"
fi
eval ${cmd}

757
flake.lock generated Normal file
View File

@@ -0,0 +1,757 @@
{
"nodes": {
"berlinerbaeder-exporter": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1721567085,
"narHash": "sha256-CxWzsNy2dy4zvn2Wi91C/PF+Wyxi3JLOPudc5FoZrhg=",
"ref": "refs/heads/main",
"rev": "0c3142cc8f6396fce7cb4c5fe14137d831315986",
"revCount": 11,
"type": "git",
"url": "https://git.clerie.de/clerie/berlinerbaeder-exporter.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/berlinerbaeder-exporter.git"
}
},
"bij": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1724513039,
"narHash": "sha256-YdBuRgXEU9CcxPd2EjuvDKcfgxL1kk9Gv8nFVVjIros=",
"ref": "refs/heads/main",
"rev": "202f4a1a5791c74a9b7d69a4e63e631bdbe36ba6",
"revCount": 4,
"type": "git",
"url": "https://git.clerie.de/clerie/bij.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/bij.git"
}
},
"chaosevents": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1708189846,
"narHash": "sha256-7vVQOvB8cD3AqEGmDsBSnnk1vsGfQ8aObTWGvjturDo=",
"ref": "refs/heads/main",
"rev": "ae351c9685ee8491d471e9ad3bc907ac6d999ae5",
"revCount": 6,
"type": "git",
"url": "https://git.clerie.de/clerie/chaosevents.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/chaosevents.git"
}
},
"fernglas": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1700408128,
"narHash": "sha256-PLb/q8kIq0wOinkgADHNY6uOB3b3lXQEbLu6ToIFPsU=",
"owner": "wobcom",
"repo": "fernglas",
"rev": "407325681e3ad344f6fd05334984a40074aa6347",
"type": "github"
},
"original": {
"owner": "wobcom",
"repo": "fernglas",
"type": "github"
}
},
"fieldpoc": {
"inputs": {
"mitel-ommclient2": "mitel-ommclient2",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1711287766,
"narHash": "sha256-2roymGPfsQZC1Lg/i3iffBQ8c86DLEXmuoKQIlbOg5o=",
"ref": "refs/heads/main",
"rev": "f707f212378f9d8de103ac96abcd9d377a2605a8",
"revCount": 56,
"type": "git",
"url": "https://git.clerie.de/clerie/fieldpoc.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/fieldpoc.git"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"harmonia",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"ssh-to-age",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709336216,
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github"
}
},
"harmonia": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1727121740,
"narHash": "sha256-72nDVSvUfZsLa2HbyricOpA0Eb8gxs/VST25b6DNBpM=",
"owner": "nix-community",
"repo": "harmonia",
"rev": "ff44006a30f93ac40d76c786e15149d901946c2b",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "harmonia-v1.0.2",
"repo": "harmonia",
"type": "github"
}
},
"hydra": {
"inputs": {
"lix": "lix",
"nix-eval-jobs": "nix-eval-jobs",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1733503045,
"narHash": "sha256-VoMam8Zzbk+X6dIYwH2f9NqItL6g9YDhQvGybzSl8xQ=",
"ref": "refs/heads/main",
"rev": "eccf01d4fef67f87b6383f96c73781bd08b686ac",
"revCount": 4230,
"type": "git",
"url": "https://git.lix.systems/lix-project/hydra.git"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/hydra.git"
}
},
"lix": {
"inputs": {
"flake-compat": "flake-compat",
"nix2container": "nix2container",
"nixpkgs": [
"hydra",
"nixpkgs"
],
"nixpkgs-regression": "nixpkgs-regression",
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1732112222,
"narHash": "sha256-H7GN4++a4vE49SUNojZx+FSk4mmpb2ifJUtJMJHProI=",
"ref": "refs/heads/main",
"rev": "66f6dbda32959dd5cf3a9aaba15af72d037ab7ff",
"revCount": 16513,
"type": "git",
"url": "https://git.lix.systems/lix-project/lix"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/lix"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": "lix_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1732605668,
"narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=",
"ref": "stable",
"rev": "96824d606a6656650bbe436366bc89d5ee3a6573",
"revCount": 113,
"type": "git",
"url": "https://git.lix.systems/lix-project/nixos-module.git"
},
"original": {
"ref": "stable",
"type": "git",
"url": "https://git.lix.systems/lix-project/nixos-module.git"
}
},
"lix_2": {
"flake": false,
"locked": {
"lastModified": 1729298361,
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
}
},
"mitel-ommclient2": {
"inputs": {
"nixpkgs": [
"fieldpoc",
"nixpkgs"
]
},
"locked": {
"lastModified": 1687019250,
"narHash": "sha256-cN9ZuQ/1irnoYg013v1ZDn15MHcFXhxILGhRNDGd794=",
"ref": "refs/heads/main",
"rev": "a11629f543a8b43451cecc46600a78cbb6af015a",
"revCount": 70,
"type": "git",
"url": "https://git.clerie.de/clerie/mitel_ommclient2.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/mitel_ommclient2.git"
}
},
"nix-eval-jobs": {
"inputs": {
"flake-parts": "flake-parts_2",
"lix": [
"hydra",
"lix"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"hydra",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1732351635,
"narHash": "sha256-H94CcQ3yamG5+RMxtxXllR02YIlxQ5WD/8PcolO9yEA=",
"ref": "refs/heads/main",
"rev": "dfc286ca3dc49118c30d8d6205d6d6af76c62b7a",
"revCount": 617,
"type": "git",
"url": "https://git.lix.systems/lix-project/nix-eval-jobs"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/nix-eval-jobs"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1731952509,
"narHash": "sha256-p4gB3Rhw8R6Ak4eMl8pqjCPOLCZRqaehZxdZ/mbFClM=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "7b5f051df789b6b20d259924d349a9ba3319b226",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix2container": {
"flake": false,
"locked": {
"lastModified": 1724996935,
"narHash": "sha256-njRK9vvZ1JJsP8oV2OgkBrpJhgQezI03S7gzskCcHos=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "fa6bb0a1159f55d071ba99331355955ae30b3401",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
"nixos-exporter": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1683625533,
"narHash": "sha256-GvKE97JdQuEZ697TLSMRTNABbVJfGVnJ0vfzK4AIFyI=",
"ref": "refs/heads/main",
"rev": "5e86139ee4af27f84228708fd32903bb0c4230f0",
"revCount": 19,
"type": "git",
"url": "https://git.clerie.de/clerie/nixos-exporter.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/nixos-exporter.git"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1721413321,
"narHash": "sha256-0GdiQScDceUrVGbxYpV819LHesK3szHOhJ09e6sgES4=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "ab165a8a6cd12781d76fe9cbccb9e975d0fb634f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1686501370,
"narHash": "sha256-G0WuM9fqTPRc2URKP9Lgi5nhZMqsfHGrdEbrLvAPJcg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "75a5ebf473cd60148ba9aec0d219f72e5cf52519",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1713434076,
"narHash": "sha256-+/p5edwlkqKZc6GDAQl+92Hoe1f3NNbUF9uj+X9H3pU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8494ae076b7878d61a7d2d25e89a847fe8f8364c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1665732960,
"narHash": "sha256-WBZ+uSHKFyjvd0w4inbm0cNExYTn8lpYFcHEes8tmec=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4428e23312933a196724da2df7ab78eb5e67a88e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1732521221,
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nurausstieg": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1722174167,
"narHash": "sha256-u9ef1BNaXHEnuQEFgqqBLEVZqd5T/sqRBysN71gFOKg=",
"ref": "refs/heads/main",
"rev": "7f2e0febf3a430e4ba4f6cf1cf1c5ca10c5dd04d",
"revCount": 20,
"type": "git",
"url": "https://git.clerie.de/clerie/nurausstieg.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/nurausstieg.git"
}
},
"pre-commit-hooks": {
"flake": false,
"locked": {
"lastModified": 1726745158,
"narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"berlinerbaeder-exporter": "berlinerbaeder-exporter",
"bij": "bij",
"chaosevents": "chaosevents",
"fernglas": "fernglas",
"fieldpoc": "fieldpoc",
"harmonia": "harmonia",
"hydra": "hydra",
"lix-module": "lix-module",
"nixos-exporter": "nixos-exporter",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nurausstieg": "nurausstieg",
"scan-to-gpg": "scan-to-gpg",
"solid-xmpp-alarm": "solid-xmpp-alarm",
"sops-nix": "sops-nix",
"ssh-to-age": "ssh-to-age"
}
},
"scan-to-gpg": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1733765838,
"narHash": "sha256-piKf5W1vUl4y36WuW/192LMXBJyATBF83T9YEz9K3/Y=",
"ref": "refs/heads/main",
"rev": "b0c07f95146d85a7b62a84fb2a62a773a5942733",
"revCount": 17,
"type": "git",
"url": "https://git.clerie.de/clerie/scan-to-gpg.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/scan-to-gpg.git"
}
},
"solid-xmpp-alarm": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734450899,
"narHash": "sha256-SyUOl5YUl/nlZNNM2/vSuFWFdxOCKmTO4BxjIxwVcjQ=",
"ref": "refs/heads/main",
"rev": "4bfa8ec27b99e774906c82e6d51d13b32a3ff161",
"revCount": 6,
"type": "git",
"url": "https://git.clerie.de/clerie/solid-xmpp-alarm.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/solid-xmpp-alarm.git"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1713532771,
"narHash": "sha256-vfKxhYVMzG2tg48/1rewBoSLCrKIjQsG1j7Nm/Y2gf4=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "a929a011a09db735abc45a8a45d1ff7fdee62755",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"ssh-to-age": {
"inputs": {
"flake-parts": "flake-parts_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1712553767,
"narHash": "sha256-hg6lBgxmTJ2hc1EFUoiA6BLA2QZGIfoBIxub9FK3x6M=",
"owner": "Mic92",
"repo": "ssh-to-age",
"rev": "5842a0023432eca39537060f38cbff7c9c2123c7",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "ssh-to-age",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"harmonia",
"nixpkgs"
]
},
"locked": {
"lastModified": 1711963903,
"narHash": "sha256-N3QDhoaX+paWXHbEXZapqd1r95mdshxToGowtjtYkGI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49dc4a92b02b8e68798abd99184f228243b6e3ac",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1732292307,
"narHash": "sha256-5WSng844vXt8uytT5djmqBCkopyle6ciFgteuA9bJpw=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "705df92694af7093dfbb27109ce16d828a79155f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

169
flake.nix Normal file
View File

@@ -0,0 +1,169 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
berlinerbaeder-exporter = {
url = "git+https://git.clerie.de/clerie/berlinerbaeder-exporter.git";
inputs.nixpkgs.follows = "nixpkgs";
};
bij = {
url = "git+https://git.clerie.de/clerie/bij.git";
inputs.nixpkgs.follows = "nixpkgs";
};
chaosevents = {
url = "git+https://git.clerie.de/clerie/chaosevents.git";
#inputs.nixpkgs.follows = "nixpkgs";
};
fernglas = {
url = "github:wobcom/fernglas";
inputs.nixpkgs.follows = "nixpkgs";
};
harmonia = {
url = "github:nix-community/harmonia/harmonia-v1.0.2";
inputs.nixpkgs.follows = "nixpkgs";
};
hydra = {
url = "git+https://git.lix.systems/lix-project/hydra.git";
inputs.nixpkgs.follows = "nixpkgs";
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module.git?ref=stable";
inputs.nixpkgs.follows = "nixpkgs";
};
fieldpoc.url = "git+https://git.clerie.de/clerie/fieldpoc.git";
nixos-exporter = {
url = "git+https://git.clerie.de/clerie/nixos-exporter.git";
inputs.nixpkgs.follows = "nixpkgs";
};
nurausstieg = {
url = "git+https://git.clerie.de/clerie/nurausstieg.git";
inputs.nixpkgs.follows = "nixpkgs";
};
scan-to-gpg = {
url = "git+https://git.clerie.de/clerie/scan-to-gpg.git";
inputs.nixpkgs.follows = "nixpkgs";
};
solid-xmpp-alarm = {
url = "git+https://git.clerie.de/clerie/solid-xmpp-alarm.git";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
ssh-to-age = {
url = "github:Mic92/ssh-to-age";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixos-hardware, chaosevents, fernglas, nixos-exporter, solid-xmpp-alarm, ssh-to-age, ... }@inputs: let
lib = import ./lib inputs;
helper = lib.flake-helper;
localNixpkgs = import ./flake/nixpkgs.nix inputs;
in {
clerie.hosts = {
aluminium = {
group = "event";
};
astatine = {
group = "event";
modules = [
./users/criese-nethinks
./users/isa
];
};
backup-4 = {};
beryllium = {
group = "event";
};
carbon = {};
clerie-backup = {};
dn42-il-gw1 = {};
dn42-il-gw5 = {};
dn42-il-gw6 = {};
dn42-ildix-clerie = {};
dn42-ildix-service = {};
gatekeeper = {};
hydra-1 = {};
hydra-2 = {};
krypton = {
modules = [
nixos-hardware.nixosModules.lenovo-thinkpad-x270
];
};
mail-2 = {};
monitoring-3 = {};
nonat = {};
osmium = {};
palladium = {};
porter = {};
storage-2 = {};
web-2 = {};
zinc = {
modules = [
nixos-hardware.nixosModules.common-cpu-intel
];
};
# nixfiles-auto-install: add new host above
_iso = {};
};
nixosConfigurations = import ./flake/nixosConfigurations.nix inputs;
nixosModules = {
nixfilesInputs = import ./flake/modules.nix inputs;
clerie = import ./modules;
default = self.nixosModules.clerie;
};
overlays = {
nixfilesInputs = import ./flake/overlay.nix inputs;
clerie = import ./pkgs/overlay.nix;
default = self.overlays.clerie;
};
packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: let
pkgs = localNixpkgs.${system};
in {
inherit (pkgs)
clerie-keys
clerie-system-upgrade
clerie-merge-nixfiles-update
clerie-update-nixfiles
clerie-sops
clerie-sops-config
clerie-sops-edit
chromium-incognito
factorio-launcher
git-checkout-github-pr
git-diff-word
git-pp
harmonia
iot-data
nix-remove-result-links
nixfiles-auto-install
nixfiles-generate-config
nixfiles-generate-backup-secrets
nixfiles-update-ssh-host-keys
print-afra
run-with-docker-group
ssh-gpg
update-from-hydra
uptimestatus
xmppc;
});
inherit lib self;
hydraJobs = import ./flake/hydraJobs.nix inputs;
nixConfig = {
extra-substituters = [
"https://nix-cache.clerie.de"
];
extra-trusted-public-keys = [
"nix-cache.clerie.de:bAt1GJTS9BOTcXFWj3nURrSlcjqikCev9yDvqArMP5g="
];
};
};
}

15
flake/hydraJobs.nix Normal file
View File

@@ -0,0 +1,15 @@
{ self
, nixpkgs
, ...
}@inputs:
let
buildHosts = hosts: builtins.mapAttrs (name: host: host.config.system.build.toplevel) (nixpkgs.lib.filterAttrs (name: host: (builtins.substring 0 1 name) != "_") hosts);
in {
inherit (self)
packages;
nixosConfigurations = buildHosts self.nixosConfigurations;
iso = self.nixosConfigurations._iso.config.system.build.isoImage;
}

23
flake/modules.nix Normal file
View File

@@ -0,0 +1,23 @@
{ self
, fernglas
, fieldpoc
, lix-module
, nixos-exporter
, scan-to-gpg
, solid-xmpp-alarm
, sops-nix
, ...
}@inputs:
{ ... }:
{
imports = [
fernglas.nixosModules.default
fieldpoc.nixosModules.default
lix-module.nixosModules.default
nixos-exporter.nixosModules.default
scan-to-gpg.nixosModules.scan-to-gpg
solid-xmpp-alarm.nixosModules.solid-xmpp-alarm
sops-nix.nixosModules.sops
];
}

View File

@@ -0,0 +1,68 @@
{ self
, nixpkgs
, ...
}@inputs:
let
generateNixosSystem = {
name,
system ? "x86_64-linux",
group ? null,
modules ? [],
}: let
localNixpkgs = nixpkgs.lib.attrByPath [ "nixpkgs-${name}" ] nixpkgs inputs;
in localNixpkgs.lib.nixosSystem {
system = system;
modules = modules ++ [
self.nixosModules.nixfilesInputs
self.nixosModules.clerie
({ config, lib, ... }: {
# Set hostname
networking.hostName = lib.mkDefault name;
# Apply overlays
nixpkgs.overlays = [
self.overlays.nixfilesInputs
self.overlays.clerie
];
/*
Make the contents of the flake availiable to modules.
Useful for having the monitoring server scraping the
target config from all other servers automatically.
*/
_module.args = {
inputs = inputs;
_nixfiles = self;
};
# Expose host group to monitoring
clerie.monitoring = nixpkgs.lib.attrsets.optionalAttrs (group != null) { serviceLevel = group; };
# Automatically load secrets from sops file for host
sops.defaultSopsFile = ../hosts + "/${name}/secrets.json";
sops.secrets = let
secretFile = config.sops.defaultSopsFile;
secretNames = builtins.filter (name: name != "sops") (builtins.attrNames (builtins.fromJSON (builtins.readFile secretFile)));
secrets = if builtins.pathExists secretFile then
lib.listToAttrs (builtins.map (name: lib.nameValuePair name {}) secretNames)
else
{};
in
secrets;
})
# Config to be applied to every host
../configuration/common
../users/clerie
# Host specific config
(../hosts + "/${name}/configuration.nix")
];
};
mapToNixosConfigurations = hosts: builtins.mapAttrs (name: host: generateNixosSystem ({ inherit name; } // host)) hosts;
in
mapToNixosConfigurations self.clerie.hosts

17
flake/nixpkgs.nix Normal file
View File

@@ -0,0 +1,17 @@
{ self
, nixpkgs
, ...
}@inputs:
let
mkNixpkgs = { system, ... }@args:
import nixpkgs {
inherit system;
overlays = [
self.overlays.nixfilesInputs
self.overlays.clerie
];
};
in
nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: mkNixpkgs { inherit system; })

30
flake/overlay.nix Normal file
View File

@@ -0,0 +1,30 @@
{ self
, berlinerbaeder-exporter
, bij
, chaosevents
, harmonia
, hydra
, nurausstieg
, scan-to-gpg
, ssh-to-age
, ...
}@inputs:
final: prev: {
inherit (berlinerbaeder-exporter.packages.${final.system})
berlinerbaeder-exporter;
inherit (bij.packages.${final.system})
bij;
inherit (chaosevents.packages.${final.system})
chaosevents;
harmonia = harmonia.packages.${final.system}.harmonia.override {
nixForHarmonia = final.nixVersions.nix_2_23;
};
inherit (hydra.packages.${final.system})
hydra;
inherit (nurausstieg.packages.${final.system})
nurausstieg;
inherit (scan-to-gpg.packages.${final.system})
scan-to-gpg;
inherit (ssh-to-age.packages.${final.system})
ssh-to-age;
}

View File

@@ -0,0 +1,15 @@
{ pkgs, lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/cd-dvd/installation-cd-base.nix")
../../configuration/gpg-ssh
];
networking.hostName = "isowo";
isoImage.isoBaseName = "nixos-isowo";
environment.systemPackages = with pkgs; [
nixfiles-auto-install
];
}

View File

@@ -0,0 +1,37 @@
{ config, pkgs, lib, ... }:
{
imports =
[
./hardware-configuration.nix
./fieldpoc.nix
];
boot.kernelParams = [ "console=ttyS0,115200n8" ];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.extraConfig = "
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial
";
services.wg-clerie = {
enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8106/128" ];
ipv4s = [ "10.20.30.106/32" ];
privateKeyFile = "/var/src/secrets/wireguard/wg-clerie";
};
clerie.monitoring = {
enable = true;
id = "212";
pubkey = "P1ONelxezvkcLJFyvuCVeIUd3uewPIlONfKk9y6h9QE=";
serviceLevel = "event";
privateKeyFile = "/var/src/secrets/wireguard/wg-monitoring";
};
system.stateVersion = "22.11";
}

View File

@@ -0,0 +1,32 @@
{ config, pkgs, ... }:
{
networking.interfaces.enp3s0.ipv4.addresses = [ { address = "10.42.132.1"; prefixLength = 24; } ];
networking.firewall.trustedInterfaces = [ "enp3s0" ];
services.fieldpoc = {
enable = true;
ommIp = "10.42.132.2";
ommUser = "omm";
ommPasswordPath = config.sops.secrets.fieldpoc-ommpassword.path;
sipsecretPath = config.sops.secrets.fieldpoc-sipsecret.path;
dhcp = {
enable = true;
interface = "enp3s0";
subnet = "10.42.132.0/24";
pool = "10.42.132.200 - 10.42.132.250";
router = "10.42.132.1";
dnsServers = "10.42.10.8";
omm = "10.42.132.2";
reservations = [
{
name = "omm";
macAddress = "00:30:42:1b:8c:7c";
ipAddress = "10.42.132.2";
}
];
};
};
}

View File

@@ -0,0 +1,35 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "ehci_pci" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/33e8b880-8074-4f12-8aaf-24d7ab190e0a";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,27 @@
{
"fieldpoc-ommpassword": "ENC[AES256_GCM,data:F856G4jZjbj7RQ==,iv:svnlwqEPMDHHlSSv5Anv7w7TlDjHUBmKqiBL+IBV+1w=,tag:fnySgzaHzf2paWEBwD4DYg==,type:str]",
"fieldpoc-sipsecret": "ENC[AES256_GCM,data:ysnHLFHPbOcgTfoAmZy+3Q==,iv:6G66WDGzuyfTzezVK0uwY5Ihv22dR7x7g/A1fvxUhjk=,tag:WUVNU6Bw5u0kyHpyFsKmaw==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age12nr9jt7u04ef0uf3h3pmh5wsw0t5ax7flwtk0t57zhsqj7s0lvnqxdgtu4",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2SVJHaWVpVFRtZ0tiTElr\ndk5jem4xbm1rTDdkNFdEanR3eGljak4ySUFrCkVSKzhOMzB6elR6WlFtaW5vTXZK\nVE1TZ0pLcmo5alJnL2thVWVvRmV5YjgKLS0tIFJUY3pVKzhoSDNpQ0Z4TC9vdmNL\nc0RlZ1pVUmhIMjRPd1ltZFBlMXZhZncKgtH6HYaK9GLPmwHpIRXwwyhWLqHVvhDV\nRCusRPXi7vpl9Codn/gKa1yhtS+Nbrftpfibcf4Zpp6tbICBJw6Chw==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-05-10T12:55:36Z",
"mac": "ENC[AES256_GCM,data:rYVMHm97fym9o88cF6IjPsOl1ZgIafIlvw3BhS3y1tFKuiIAmsqL+DvD+yy8oLz2atvyxIdcKihDRNoriC6V80WZg2jqedSbkK0QQHng8z+9KE0SAfoacuJqb/SMULOPVvW81Zhox3Y0fbSVdO3WScx7Z0czNBZ0JGWVObRFbHY=,iv:97/B4g0JTHLlyR9yV8xqhhDnkDDfS9VhsXFb8v3pMVs=,tag:No47WYn/Uk6R2mq2j2gpzw==,type:str]",
"pgp": [
{
"created_at": "2024-05-10T12:54:53Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nyZ8fqDq6Dw==\n=LtRd\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

1
hosts/aluminium/ssh.pub Normal file
View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICm4kHCK4ACXtZt9ziBXnykiR1onPQtbmfAKU/fcqr8G

View File

@@ -0,0 +1,45 @@
{ config, pkgs, lib, ... }:
{
imports =
[
./hardware-configuration.nix
./ppp.nix
./programs.nix
./users.nix
];
boot.kernelParams = [ "console=ttyS0,115200n8" ];
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
boot.loader.grub.extraConfig = "
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial
";
#networking.firewall.enable = false;
services.wg-clerie = {
enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ];
ipv4s = [ "10.20.30.108/32" ];
};
clerie.monitoring = {
enable = true;
id = "214";
pubkey = "I4xh3t6vIcNyntZkewXX56eWrEd3J0hhaYV45xj6uVU=";
serviceLevel = "event";
};
system.stateVersion = "23.05";
}

View File

@@ -0,0 +1,33 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "ohci_pci" "ehci_pci" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ff68d582-80b9-4c3b-8b9a-bbe7089e882d";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

90
hosts/astatine/ppp.nix Normal file
View File

@@ -0,0 +1,90 @@
{ pkgs, ... }:
{
# Make space for VLAN header in containing ethernet segment
networking.interfaces."enp1s0".mtu = 1518;
## DSL-Uplink
networking.vlans."enp1s0.7" = {
id = 7;
interface = "enp1s0";
};
services.pppd = {
enable = true;
peers.lns-test = {
config = ''
plugin pppoe.so enp1s0.7
user "criese#regiotest@bsa-vdsl"
ifname ppp-lns-test
persist
maxfail 0
holdoff 5
noipdefault
lcp-echo-interval 20
lcp-echo-failure 3
hide-password
nodefaultroute
+ipv6
debug
'';
};
};
/*
networking.interfaces.lo.useDHCP = true;
networking.interfaces.ppp-lns-test.useDHCP = true;
networking.dhcpcd = {
enable = true;
extraConfig = ''
interface ppp-lns-test
ipv6rs
ia_pd 0 lo/0
'';
};*/
environment.etc."ppp/ip-up" = {
text = ''
#! ${pkgs.runtimeShell} -e
${pkgs.iproute2}/bin/ip route flush table 20001 || true
${pkgs.iproute2}/bin/ip route add default dev ppp-lns-test table 20001
'';
mode = "555";
};
environment.etc."ppp/ip-down" = {
text = ''
#! ${pkgs.runtimeShell} -e
${pkgs.iproute2}/bin/ip route flush table 20001 || true
'';
mode = "555";
};
environment.etc."ppp/ipv6-up" = {
text = ''
#! ${pkgs.runtimeShell} -e
${pkgs.iproute2}/bin/ip -6 route flush table 20001 || true
${pkgs.iproute2}/bin/ip -6 route add default dev ppp-lns-test table 20001
'';
mode = "555";
};
environment.etc."ppp/ipv6-down" = {
text = ''
#! ${pkgs.runtimeShell} -e
${pkgs.iproute2}/bin/ip -6 route flush table 20001 || true
'';
mode = "555";
};
petabyte.policyrouting = {
enable = true;
rules4 = [
{ rule = "from 212.218.16.237/32 lookup 20001"; prio = 19000; }
{ rule = "from 212.218.16.237/32 unreachable"; prio = 19001; }
];
};
}

View File

@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
tcpdump # for remote wireshark
];
}

View File

@@ -0,0 +1,27 @@
{
"wg-clerie": "ENC[AES256_GCM,data:DbchcO6GTmSFyoHrRAkfu2flaKYrQHPk+rIerekYO4Cto9sqaWLgaSigpS8=,iv:no1xNRVqsKzAN6ssYA0Ir+utOM9tg8OBUT9PY2v0HPA=,tag:lZj1wEPFWHaf52N7YHEQKQ==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:dTKKeieaGvECkHUpATLorhOgr9Re5CAH25y1WTcSqJZDsvnwD4CBbqMv2QQ=,iv:u1n1wyAW5aNcVYfGN8BmrEhIhtA3EfRDBNu65IdBZMI=,tag:RJYgOpel9uy6dC72MmqS5A==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1fffvnazdv3ys9ww8v4g832hv5nkvnk6d728syerzvpgskfmfkq8q00whpv",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMQUF5dkRwdXRmUkJ1SXN5\nLzdOVkhWYUJGdFd4Qklsa1BXeVZlTGx0eDE0ClZmYWNLMEVzaVVXWGkwQUt5ZHF5\nS1c5OU9PWjBTelM5R2phNFdVNncxUUkKLS0tIDlwSXFyZWNVT1dtdGU5dVFSRHNE\nUUpJZHJZRTd6TnBUU2dCWW90UTRVb0UKCWrHWmQTNhez16wgEKj4EQA4+UBRmGQn\n+NHSjBCMBmmTdHb05nENYVK515Z0T/60+9N3VlNyHWS9IgC3mZRUBg==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-21T16:03:13Z",
"mac": "ENC[AES256_GCM,data:fA8fhOZbX30TYgwZXB7sQDNmck0JRDyAnEXf5nCYtli/Qvs78fTs4DdC08VOpOni8uAVARkFsGSo6Fjo/MpTSDVA8VNYZig/we/bWF+LQlEMCmiqwOI1R6eQ3GPxcRXltlO2aPPlT9BpLwIVZjGGjIsmjpVE8xjkCbLUUqj+UxY=,iv:fHLyw96QLVRrAQky2kR7TDDxf8CNXDV9lVQ5RETzJEI=,tag:y+cG9u3d6vCUmPyNMDRWpA==,type:str]",
"pgp": [
{
"created_at": "2024-04-21T16:02:41Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nVAPIsf93xA==\n=nhxm\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

1
hosts/astatine/ssh.pub Normal file
View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOQegq2ZQx0fNVHlITNHdZoSAh5jsaDyv3Sej3a8Y4j3

10
hosts/astatine/users.nix Normal file
View File

@@ -0,0 +1,10 @@
{ ... }:
{
users.users.criese-nethinks = {
extraGroups = [
"wheel"
];
};
}

13
hosts/backup-4/backup.nix Normal file
View File

@@ -0,0 +1,13 @@
{ ... }:
{
services.borgbackup.repos = {
krypton = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDV3GpgaDqgTlWX0//DQ7AedYo0sD4e37OHl4/OqU7C+YfIuzaC8+KRfugTQS4R8UBKuxFHJC867aHq2rxIfKzKFtmyVPT7ywbpgNW3FDugQZ5MdPo8eHV19jnaZ9jkhUpJmMzayW+hU0GxT1fEXzSaewJknY3afdTKAi3dM+7LAcxVa82qwwArNuH06wrthU9eyva2QWMeZ6aEzzZgSxxrLQZFIXRtA81JcFmjL1IwxepDyUsbTj31Wmvf4n6YI6wxY9QhKyS4bahlnQmW0CpKwX6lKtGRRMVilTZLKa0aR0z15ltPE5h1USUnxiyo5YVB+1QA8luCnQAzIeZODEc3um8AfH4Z83MqU802K8yRmjJUhkoezJwRjewJito3Pfc4TOC2pdo7Na9bb5omTz7jiTRDvQkysWSZGyd22Vsl48tVuRTve/VkhBZuqOwH9yqBz5rl2hG7GHOiHD40kjxq+fJW8vge1hdu1TEQK8ubn1Cod/GuvuWFMTAwagYrJs0= clerie@krypton" ];
path = "/mnt/backup-4/krypton";
};
};
# fix borgbackup primary grouping
users.users.borg.group = "borg";
}

View File

@@ -0,0 +1,32 @@
{ config, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
../../configuration/proxmox-vm
./backup.nix
./restic-server.nix
];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda";
networking.useDHCP = false;
networking.interfaces.ens18.ipv6.addresses = [ { address = "2001:638:904:ffcb::c"; prefixLength = 64; } ];
networking.defaultGateway6 = { address = "2001:638:904:ffcb::1"; interface = "ens18"; };
networking.nameservers = [ "2001:638:904:ffcc::3" "2001:638:904:ffcc::4" "141.24.40.3" "141.24.40.4" ];
services.nginx.enable = true;
networking.firewall.allowedTCPPorts = [ 80 443 ];
clerie.monitoring = {
enable = true;
id = "205";
pubkey = "CLEF5hLdjwPqfU1oaM16fusJ705iNzUBxYsb4/YuGw4=";
};
system.stateVersion = "21.03";
}

View File

@@ -8,13 +8,18 @@
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/472ace36-d152-4139-9ea8-76f104e619d3";
{ device = "/dev/disk/by-uuid/eb9bcb35-4f34-4cd6-b1b3-3a86de40571b";
fsType = "ext4";
};
fileSystems."/mnt/backup-4" =
{ device = "/dev/disk/by-uuid/f4d2a27d-664b-45f7-abc2-adf6691ad363";
fsType = "ext4";
};

View File

@@ -0,0 +1,29 @@
{ ... }:
{
services.restic.server = {
enable = true;
privateRepos = true;
dataDir = "/mnt/backup-4/magenta";
listenAddress = "[::1]:43242";
};
# restic rest server does not support --htpasswd-file in the current version of nixpkgs
# until then we copy the secrets to the common location
sops.secrets.restic-server-magenta-htpasswd = {
path = "/mnt/backup-4/magenta/.htpasswd";
owner = "restic";
group = "restic";
};
services.nginx.virtualHosts."magenta.backup.clerie.de" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://[::1]:43242/";
extraConfig = ''
client_max_body_size 10G;
'';
};
};
}

View File

@@ -0,0 +1,27 @@
{
"restic-server-magenta-htpasswd": "ENC[AES256_GCM,data:QxdmemBB/iuU+fvc2QRRkbOHO5Ef8ZJqfTdFCnlOqKog5krZ2oIpURuttH9YeggJXV2Cr+kJDGI0b9Ca6BtCkOhahfWicTeFhuODJsSyZJqzw36Ba8pX3nIpqoa7StTydK1Dx5chOi2g8oB4895SvWqDa/qP10yDtBQAYURHYfodb9/tiKzfjJAGDlqsR2h+qmdbAkvR3/oAquBO8Nb493G2sixs20XIG85moYv6l0MPnZtWEXhDT8lM5tw0PCgpSfYaUeMWnmFuzFBj3MQSo3zAjGPeOSYVFlbwbLqFWL507z0dlRgzsxMYB1F4OL38nOpO2CP2/VvbidgbQZjKCfiHMJtWLQfzZIfNEhcF8kq2uhhOwRSKN3G7u1/ezzu+9UlUVMV6PY2jjbZHJ79Knu5SJ3KqphygjjIhdHufqI03BP/aJa0QkE/mGg9is3H0myW5rG9ElA1C4stF,iv:1Ue/H48af3ECUZ5GC0hrMMBfOuCZSuX9wOSAd5XG7Fk=,tag:HchM/ZJEDG4pWQdDanC9cA==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:lCuE2EgUo3ER9NNg1rD24Z4cZS+VZ4KmDojnfCsb/LyBsfyu6uOJ4IVtxOE=,iv:KHRP1pXYXk8Fi23cjUZVUUadu9yWoJ2ddxj2fMJJYE0=,tag:TiFlekXM7WLLHAPlmYbP8w==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1yx7pqg8hz68487k92kgwhdzuc4cuym7l567a5adel9gtvp8l7qeqlg9zr4",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpdFREUEVzb2JFd3hSaG9y\neVA2a2Fodko0OTI4ZGM0NlZxRmNtYmFDY1hVCm9ncXdWYTJlSU1FSG1WdlNBZ3VW\nM2VtRmZiWldzalRsRWJ0UkV1L1hSMkEKLS0tIGVLQU9kQXhZbC9SUW9CS2JnWGlJ\nQ3RoeXVkRXNkUWNaZ0VQOW1hcEJnNjAKHgZ48PERJlfkkh2TyCLl52zUZY674BXW\n4zPtmhZrb4xlExetINrOd4hZtL7S7qn5GnTxhoxvCddeU+JPPsfWoQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-06-03T18:16:25Z",
"mac": "ENC[AES256_GCM,data:hWCI1hWTbbasov9Si0JDI39rUuBOEqrz+qxTKrNN4S/r9Ktofrk46b3rxSQF3+bC03HrbCMLk9/7XkvIFJXQj5pa9I1aG8MuMbgF0Z8Ft/uNdHPUUyLJwo/4aav4zXVpdg7zNtPdwjk66pw7iRO5XBmYgnQlnXotHM6S9s7RzuA=,iv:VJmLD1SImGtreceQP+DofnzOGp3sm12iCzbPsqzw6SI=,tag:aUryi0xUG7sd/EOmqrMQCg==,type:str]",
"pgp": [
{
"created_at": "2024-05-04T12:30:52Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nu0LyQcg=\n=EO+v\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

1
hosts/backup-4/ssh.pub Normal file
View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILUaAo7yYjuVpWadxPqrUGrZWwLNltvc+PfOT8z36Eip

View File

@@ -0,0 +1,67 @@
{ config, pkgs, lib, ... }:
{
imports =
[
./hardware-configuration.nix
];
boot.kernelParams = [ "console=ttyS0,115200n8" ];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.extraConfig = "
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial
";
networking.hostName = "beryllium";
networking.firewall.enable = false;
networking.iproute2.enable = true;
networking.iproute2.rttablesExtraConfig = ''
200 wg-clerie
'';
petabyte.policyrouting = {
enable = true;
rules6 = [
{ rule = "from 2a01:4f8:c0c:15f1::8107/128 lookup wg-clerie"; prio = 20000; }
{ rule = "from 2a01:4f8:c0c:15f1::8107/128 unreachable"; prio = 20001; }
];
rules4 = [
{ rule = "from 10.20.30.107/32 lookup wg-clerie"; prio = 20000; }
{ rule = "from 10.20.30.107/32 unreachable"; prio = 20001; }
];
};
networking.wireguard.enable = true;
networking.wireguard.interfaces = {
wg-clerie = {
ips = [ "2a01:4f8:c0c:15f1::8107/128" "10.20.30.107/32" ];
table = "wg-clerie";
peers = [
{
endpoint = "vpn.clerie.de:51820";
persistentKeepalive = 25;
allowedIPs = [ "0.0.0.0/0" "::/0" "10.20.30.0/24" "2a01:4f8:c0c:15f1::/113" ];
publicKey = "2p1Jqs3bkXbXHFWE6vp1yxHIFoUaZQEARS2nJzbkuBA=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg-clerie";
};
};
clerie.monitoring = {
enable = true;
id = "213";
pubkey = "hMIr7fgfZwSjNufRaMtq+7MDxfwN3XLJ4ZlmSOoFrz4=";
serviceLevel ="event";
privateKeyFile = "/var/src/secrets/wireguard/wg-monitoring";
};
system.stateVersion = "22.11";
}

View File

@@ -0,0 +1,37 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/b6ea0f34-629b-42b4-a01b-28e37abf1248";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp8s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -4,14 +4,27 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/router
./dns.nix
./mdns.nix
./net-dsl.nix
./net-gastnetz.nix
./net-heimnetz.nix
./net-iot.nix
./net-lte.nix
./net-mgmt.nix
./net-printer.nix
./net-voip.nix
./ntp.nix
./ppp.nix
./scan-to-gpg.nix
./wg-clerie.nix
];
boot.kernelParams = [ "console=ttyS0,115200n8" ];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.extraConfig = "
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
@@ -19,238 +32,50 @@
terminal_output serial
";
networking.hostName = "carbon";
networking.useDHCP = false;
# Local Router IPs
networking.interfaces.lo.ipv6.addresses = [
{ address = "fd00:152:152:104::1"; prefixLength = 64; }
{ address = "fd00:152:152::1"; prefixLength = 128; } # Anycast
];
networking.interfaces.lo.ipv4.addresses = [
{ address = "10.152.104.1"; prefixLength = 24; }
{ address = "10.152.0.1"; prefixLength = 32; } # Anycast
];
# Network
## Uplink
networking.interfaces.enp1s0.useDHCP = true;
## Local Network
networking.interfaces.enp2s0.ipv6.addresses = [
{ address = "fd00:152:152:4::1"; prefixLength = 64; }
{ address = "2a01:4f8:1c0c:8221::1"; prefixLength = 64; } # public IPs for local network
];
networking.interfaces.enp2s0.ipv4.addresses = [
{ address = "10.152.4.1"; prefixLength = 24; }
];
networking.nat = {
enableIPv6 = true;
enable = true;
externalInterface = "enp1s0";
internalIPv6s = [ "fd00:152:152::/48" ];
internalIPs = [ "10.152.0.0/16" ];
externalInterface = "ppp-dtagdsl";
internalIPv6s = [ "fd00:152:152::/48" "fd00:3214:9453:4920::/64"];
internalIPs = [ "10.152.0.0/16" "192.168.32.0/24" ];
};
networking.wireguard.enable = true;
networking.wireguard.interfaces = {
wg-gatekeeper4 = {
ips = [ "fe80::127:2/64" "169.254.127.2/24" ];
peers = [ {
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "78.47.183.82:50127";
publicKey = "y+Bk5eIHgmnq9xuBDD+fk/OIkKRZU6AE4ISx4RdDDyg=";
persistentKeepalive = 25;
} ];
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-gatekeeper4";
};
wg-porter4 = {
ips = [ "fe80::138:2/64" "169.254.138.2/24" ];
peers = [ {
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "5.45.100.191:50138";
publicKey = "aP6optNE7nVk6coo+USkSDtB62rAc/isfofRML9V2HM=";
persistentKeepalive = 25;
} ];
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-porter4";
};
};
services.radvd.enable = true;
clerie.gre-tunnel = {
services.kea.dhcp4 = {
enable = true;
ipv6= {
gre-gatekeeper6 = {
remote = "fd00:152:152:101::1";
local = (lib.head config.networking.interfaces.lo.ipv6.addresses).address;
address = "fd00:153:153:201::2/64";
settings = {
interfaces-config = {
service-sockets-max-retries = 15;
service-sockets-retry-wait-time = 2000;
};
};
ipv4 = {
gre-gatekeeper4 = {
remote = "10.152.101.1";
local = (lib.head config.networking.interfaces.lo.ipv4.addresses).address;
address = "10.153.201.2/24";
lease-database = {
name = "/var/lib/kea/dhcp4.leases";
persist = true;
type = "memfile";
};
};
};
# Routing tables
# Table: 10000
# - primary routes
# Table: 11000
# - ospf routes
# Table: 20101
# - default route to gatekeeper
#
# We will never use main table anymore
petabyte.policyrouting = {
enable = true;
rules6 = [
# main routes first except default route
{ rule = "lookup main suppress_prefixlength 0"; prio = 10000; }
# Prefixes defaulting to gatekeeper
{ rule = "from 2a01:4f8:1c0c:8221::/64 lookup 20101"; prio = 20000; }
{ rule = "from 2a01:4f8:1c0c:8221::/64 unreachable"; prio = 20001; }
# Everything else defaulting to main table after this
systemd.services.kea-dhcp4-server = {
after = [
"network-setup.service"
];
rules4 = [
# main routes first except default route
{ rule = "lookup main suppress_prefixlength 0"; prio = 10000; }
# Prefixes defaulting to gatekeeper
#{ rule = "from xxx lookup 20101"; prio = 20000; }
# Everything else defaulting to main table after this
requires = [
"network-setup.service"
];
};
services.bird2.enable = true;
services.bird2.config = ''
router id ${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address };
clerie.firewall.enable = true;
ipv6 table gatekeeper6;
ipv4 table gatekeeper4;
protocol static static_gatekeeper_6 {
ipv6 {
table gatekeeper6;
};
route ::/0 via fd00:153:153:201::1;
}
protocol static static_gatekeeper_4 {
ipv4 {
table gatekeeper4;
};
route 0.0.0.0/0 via 10.153.201.1;
}
protocol kernel kernel_gatekeeper_6 {
ipv6 {
table gatekeeper6;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv6.addresses).address };
accept;
};
import none;
};
kernel table 20101;
}
protocol kernel kernel_gatekeeper_4 {
ipv4 {
table gatekeeper4;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address };
accept;
};
import none;
};
kernel table 20101;
}
ipv6 table ospf6;
ipv4 table ospf4;
protocol direct direct_lo {
interface "lo";
ipv6 {
table ospf6;
};
ipv4 {
table ospf4;
};
}
protocol direct direct_enp2s0 {
interface "enp2s0";
ipv6 {
table ospf6;
};
ipv4 {
table ospf4;
};
}
protocol kernel kernel_ospf6 {
ipv6 {
table ospf6;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv6.addresses).address };
accept;
};
import none;
};
}
protocol kernel kernel_ospf4 {
ipv4 {
table ospf4;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address };
accept;
};
import none;
};
}
protocol ospf v3 ospf_6 {
ipv6 {
table ospf6;
import all;
export all;
};
area 0 {
interface "wg-gatekeeper4" {
cost 80;
type pointopoint;
};
interface "wg-porter4" {
cost 80;
type pointopoint;
};
};
}
protocol ospf v3 ospf_4 {
ipv4 {
table ospf4;
import all;
export all;
};
area 0 {
interface "wg-gatekeeper4" {
cost 80;
type pointopoint;
};
interface "wg-porter4" {
cost 80;
type pointopoint;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.monitoring = {
enable = true;
id = "104";
pubkey = "sro9DUSMtVr5xV2o3GTgg+0vmLj+bRc8fN+3pIr6+HY=";
blackbox = true;
};
system.stateVersion = "21.03";
}

34
hosts/carbon/dns.nix Normal file
View File

@@ -0,0 +1,34 @@
{ ... }:
{
# Loopbacks for DNS resolver IPs
networking.interfaces.lo.ipv6.addresses = [
{ address = "fd00:152:152::1"; prefixLength = 128; } # Anycast
];
networking.interfaces.lo.ipv4.addresses = [
{ address = "10.152.0.1"; prefixLength = 32; } # Anycast
];
networking.firewall.allowedUDPPorts = [ 53 ];
networking.firewall.allowedTCPPorts = [ 53 ];
services.unbound = {
enable = true;
resolveLocalQueries = false;
settings = {
server = {
interface = [ "fd00:152:152::1" "10.152.0.1" ];
access-control = [ "::/0 allow" "0.0.0.0/0 allow" ];
prefer-ip6 = true;
prefetch = true;
serve-expired = true;
serve-expired-ttl-reset = true;
};
};
};
# Use Anycast Nameservers
networking.nameservers = [ "fd00:152:152::1" "10.152.0.1" ];
}

17
hosts/carbon/mdns.nix Normal file
View File

@@ -0,0 +1,17 @@
{ pkgs, ... }:
{
services.avahi = {
enable = true;
nssmdns4 = true;
allowInterfaces = [
"net-heimnetz"
"net-iot"
];
reflector = true;
};
}

19
hosts/carbon/net-dsl.nix Normal file
View File

@@ -0,0 +1,19 @@
{ ... }:
{
## DSL-Uplink
networking.vlans."enp1s0.7" = {
id = 7;
interface = "enp1s0";
};
networking.vlans."enp3s0.7" = {
id = 7;
interface = "enp3s0";
};
networking.bridges."net-dsl".interfaces = [
"enp1s0.7"
"enp3s0.7"
];
}

View File

@@ -0,0 +1,69 @@
{ ... }:
{
## Gastnetz
networking.vlans."enp1s0.202" = {
id = 202;
interface = "enp1s0";
};
networking.bridges."net-gastnetz".interfaces = [
"enp1s0.202"
];
networking.interfaces."net-gastnetz".ipv6.addresses = [
{ address = "fd00:3214:9453:4920::1"; prefixLength = 64; }
];
networking.interfaces."net-gastnetz".ipv4.addresses = [
{ address = "192.168.32.1"; prefixLength = 24; }
];
services.radvd.config = ''
interface net-gastnetz {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvValidLifetime 300;
AdvPreferredLifetime 120;
};
RDNSS 2620:fe::fe 2620:fe::9 {}; # Quad 9
};
'';
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "net-gastnetz" ];
};
subnet4 = [
# Gastnetz
{
id = 202;
subnet = "192.168.32.0/24";
pools = [
{
pool = "192.168.32.100 - 192.168.32.240";
}
];
option-data = [
{
name = "routers";
data = "192.168.32.1";
}
{
name = "domain-name-servers";
data = "9.9.9.9,149.112.112.112"; # Quad 9
}
];
}
];
};
};
# net-gastnetz can only access internet
clerie.firewall.extraForwardFilterCommands = ''
ip46tables -A forward-filter -i net-gastnetz -o ppp-dtagdsl -j ACCEPT
ip46tables -A forward-filter -i net-gastnetz -j DROP
ip46tables -A forward-filter -o net-gastnetz -j DROP
'';
}

View File

@@ -0,0 +1,69 @@
{ ... }:
{
## Heimnetz
networking.vlans."enp1s0.201" = {
id = 201;
interface = "enp1s0";
};
networking.bridges."net-heimnetz".interfaces = [
"enp1s0.201"
"enp2s0"
];
networking.interfaces."net-heimnetz".ipv6.addresses = [
{ address = "fe80::1"; prefixLength = 64; }
{ address = "fd00:152:152:4::1"; prefixLength = 64; }
];
networking.interfaces."net-heimnetz".ipv4.addresses = [
{ address = "10.152.4.1"; prefixLength = 24; }
];
services.radvd.config = ''
interface net-heimnetz {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvValidLifetime 300;
AdvPreferredLifetime 120;
};
RDNSS fd00:152:152::1 {};
DNSSL net.clerie.de {};
};
'';
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "net-heimnetz" ];
};
subnet4 = [
# Heimnetz
{
id = 201;
subnet = "10.152.4.0/24";
pools = [
{
pool = "10.152.4.100 - 10.152.4.240";
}
];
option-data = [
{
name = "routers";
data = "10.152.4.1";
}
{
name = "domain-name-servers";
data = "10.152.0.1";
}
{
name = "domain-name";
data = "net.clerie.de";
}
];
}
];
};
};
}

80
hosts/carbon/net-iot.nix Normal file
View File

@@ -0,0 +1,80 @@
{ ... }:
{
networking.vlans."enp1s0.205" = {
id = 205;
interface = "enp1s0";
};
networking.bridges."net-iot".interfaces = [
"enp1s0.205"
];
networking.interfaces."net-iot".ipv6.addresses = [
{ address = "fe80::1"; prefixLength = 64; }
{ address = "fd00:152:152:205::1"; prefixLength = 64; }
];
networking.interfaces."net-iot".ipv4.addresses = [
{ address = "10.152.205.1"; prefixLength = 24; }
];
# Enable NTP
networking.firewall.interfaces."net-iot".allowedUDPPorts = [ 123 ];
services.radvd.config = ''
interface net-iot {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvValidLifetime 300;
AdvPreferredLifetime 120;
};
RDNSS fd00:152:152::1 {};
DNSSL iot.clerie.de {};
};
'';
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "net-iot" ];
};
subnet4 = [
{
id = 205;
subnet = "10.152.205.0/24";
pools = [
{
pool = "10.152.205.100 - 10.152.205.240";
}
];
option-data = [
{
name = "routers";
data = "10.152.205.1";
}
{
name = "domain-name-servers";
data = "10.152.0.1";
}
{
name = "domain-name";
data = "iot.clerie.de";
}
{
name = "time-servers";
data = "10.152.0.1";
}
];
}
];
};
};
clerie.firewall.extraForwardFilterCommands = ''
# Allow access from Heimnetz to IOT devices
ip46tables -A forward-filter -i net-heimnetz -o net-iot -j ACCEPT
ip46tables -A forward-filter -i net-iot -j DROP
ip46tables -A forward-filter -o net-iot -j DROP
'';
}

11
hosts/carbon/net-lte.nix Normal file
View File

@@ -0,0 +1,11 @@
{ ... }:
{
## LTE-Uplink
networking.vlans."enp1s0.102" = {
id = 102;
interface = "enp1s0";
};
}

63
hosts/carbon/net-mgmt.nix Normal file
View File

@@ -0,0 +1,63 @@
{ ... }:
{
networking.vlans."enp1s0.203" = {
id = 203;
interface = "enp1s0";
};
networking.bridges."net-mgmt".interfaces = [
"enp1s0.203"
];
networking.interfaces."net-mgmt".ipv6.addresses = [
{ address = "fe80::1"; prefixLength = 64; }
{ address = "fd00:152:152:203::1"; prefixLength = 64; }
];
networking.interfaces."net-mgmt".ipv4.addresses = [
{ address = "10.152.203.1"; prefixLength = 24; }
];
services.radvd.config = ''
interface net-mgmt {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvValidLifetime 300;
AdvPreferredLifetime 120;
};
};
'';
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "net-mgmt" ];
};
subnet4 = [
{
id = 203;
subnet = "10.152.203.0/24";
pools = [
{
pool = "10.152.203.100 - 10.152.203.240";
}
];
option-data = [
{
name = "routers";
data = "10.152.203.1";
}
];
}
];
};
};
clerie.firewall.extraForwardFilterCommands = ''
# Allow access from Heimnetz to MGMT network
ip46tables -A forward-filter -i net-heimnetz -o net-mgmt -j ACCEPT
ip46tables -A forward-filter -i net-mgmt -j DROP
ip46tables -A forward-filter -o net-mgmt -j DROP
'';
}

View File

@@ -0,0 +1,51 @@
{ ... }:
{
networking.vlans."enp1s0.206" = {
id = 206;
interface = "enp1s0";
};
networking.bridges."net-printer".interfaces = [
"enp1s0.206"
];
networking.interfaces."net-printer".ipv4.addresses = [
{ address = "10.152.206.1"; prefixLength = 24; }
];
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "net-printer" ];
};
subnet4 = [
{
id = 206;
subnet = "10.152.206.0/24";
pools = [
{
pool = "10.152.206.100 - 10.152.206.240";
}
];
option-data = [
{
name = "routers";
data = "10.152.206.1";
}
];
}
];
};
};
# Enable scan-to-gpg
networking.firewall.interfaces."net-printer".allowedTCPPorts = [ 2121 ];
networking.firewall.interfaces."net-printer".allowedTCPPortRanges = [ { from = 2130; to = 2134; } ];
clerie.firewall.extraForwardFilterCommands = ''
# Allow access from Heimnetz to printer
ip46tables -A forward-filter -i net-heimnetz -o net-printer -j ACCEPT
ip46tables -A forward-filter -i net-printer -j DROP
ip46tables -A forward-filter -o net-printer -j DROP
'';
}

105
hosts/carbon/net-voip.nix Normal file
View File

@@ -0,0 +1,105 @@
{ ... }:
{
## VoIP
networking.vlans."enp1s0.204" = {
id = 204;
interface = "enp1s0";
};
networking.interfaces."enp1s0.204".ipv4.addresses = [
{ address = "10.152.33.1"; prefixLength = 24; }
];
services.kea.dhcp4 = {
settings = {
interfaces-config = {
interfaces = [ "enp1s0.204" ];
};
option-def = [
{
space = "dhcp4";
name = "vendor-encapsulated-options";
code = 43;
type = "empty";
encapsulate = "sipdect";
}
{
space = "sipdect";
name = "ommip1";
code = 10;
type = "ipv4-address";
}
{
space = "sipdect";
name = "ommip2";
code = 19;
type = "ipv4-address";
}
{
space = "sipdect";
name = "syslogip";
code = 14;
type = "ipv4-address";
}
{
space = "sipdect";
name = "syslogport";
code = 15;
type = "int16";
}
{
space = "dhcp4";
name = "magic_str";
code = 224;
type = "string";
}
];
subnet4 = [
# VoIP
{
id = 204;
subnet = "10.152.33.0/24";
pools = [
{
pool = "10.152.33.10 - 10.152.33.200";
}
];
option-data = [
{
name = "routers";
data = "10.152.33.1";
}
];
reservations = [
{
hostname = "iridium";
hw-address = "00:30:42:1B:8C:7C";
ip-address = "10.152.33.11";
option-data = [
{
name = "host-name";
data = "iridium";
}
{
name = "vendor-encapsulated-options";
}
{
space = "sipdect";
name = "ommip1";
data = "10.152.33.11";
}
{
name = "magic_str";
data = "OpenMobilitySIP-DECT";
}
];
}
];
}
];
};
};
}

15
hosts/carbon/ntp.nix Normal file
View File

@@ -0,0 +1,15 @@
{ ... }:
{
services.chrony = {
enable = true;
extraConfig = ''
# Enable NTP server mode
allow
bindaddress fd00:152:152::1
bindaddress 10.152.0.1
'';
};
}

63
hosts/carbon/ppp.nix Normal file
View File

@@ -0,0 +1,63 @@
{ config, pkgs, lib, ... }:
{
services.pppd = {
enable = true;
peers.dtagdsl = {
config = ''
plugin pppoe.so net-dsl
user "''${PPPD_DTAGDSL_USERNAME}"
ifname ppp-dtagdsl
persist
maxfail 0
holdoff 5
noipdefault
lcp-echo-interval 20
lcp-echo-failure 3
mtu 1492
hide-password
defaultroute
+ipv6
debug
'';
};
};
environment.etc."ppp/peers/dtagdsl".enable = false;
systemd.services."pppd-dtagdsl".serviceConfig = let
preStart = ''
mkdir -p /etc/ppp/peers
# Created files only readable by root
umask u=rw,g=,o=
# Copy config and substitute username
rm -f /etc/ppp/peers/dtagdsl
${pkgs.envsubst}/bin/envsubst -i "${config.environment.etc."ppp/peers/dtagdsl".source}" > /etc/ppp/peers/dtagdsl
# Copy login secrets
rm -f /etc/ppp/pap-secrets
cat ${config.sops.secrets.pppd-dtagdsl-secrets.path} > /etc/ppp/pap-secrets
rm -f /etc/ppp/chap-secrets
cat ${config.sops.secrets.pppd-dtagdsl-secrets.path} > /etc/ppp/chap-secrets
'';
preStartFile = pkgs.writeShellApplication {
name = "pppd-dtagdsl-pre-start";
text = preStart;
};
in {
EnvironmentFile = config.sops.secrets.pppd-dtagdsl-username.path;
ExecStartPre = [
# "+" marks script to be executed without priviledge restrictions
"+${lib.getExe preStartFile}"
];
};
clerie.firewall.extraForwardMangleCommands = ''
ip46tables -t mangle -A forward-mangle -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
'';
}

View File

@@ -0,0 +1,11 @@
{ pkgs, ... }:
{
services.scan-to-gpg = {
enable = true;
gpgkey = "${pkgs.clerie-keys}/gpg/clerie@clerie.de.asc";
};
users.users."clerie".extraGroups = [ "scan-to-gpg" ];
}

29
hosts/carbon/secrets.json Normal file
View File

@@ -0,0 +1,29 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:+k5MgBrj/psMCE1T2jDtCCJI9Q7L+wJ3j83inNkeGp3LSUjoAPtBp4YoyL4=,iv:C19g/Lqi+cWAyiJBMNDtgLc3SDNI9bMBrBPWn+26mVY=,tag:9zIoawuGeGCMbOX1HKR/sQ==,type:str]",
"pppd-dtagdsl-username": "ENC[AES256_GCM,data:JC7EyyMoN0p5YwnS9W5I0G5Omhk5usw28UiJrCfifGr+2FUgMrtFYAHQdrtWAELvYNBQDPgrHMmQjGQLhpqqK0hH,iv:/q+Fm63GVBApGInyS8i39V/lo6iv+I2omVh47deq+o8=,tag:LkR+1zTDNWuYkhH2iWT7SA==,type:str]",
"pppd-dtagdsl-secrets": "ENC[AES256_GCM,data:c5pOb8It1py/9NXNTgLvt9zmsBVbSLHJt4iXWiNA+Osvomw3r7pgoO/JJh9ujomPMnOlDwN7g+pJ,iv:W36gA8E1mWchN6+8hdMdt2epv/RdS91T5ANB/JTcHCE=,tag:7eZ3fZkjERCVJCXYrABnlQ==,type:str]",
"wg-clerie": "ENC[AES256_GCM,data:OEZg8ZoLAdVhKkvB0ai13ID3gPnVUU/xkOjZ4KiJ9MnRbcFu5HBd7Nw6iNwh,iv:edPuaehya2ZvYKkiBqNUbXVDAxAT6yNgETnWtd6it94=,tag:cX12szdQfAcC6cij6zk6Dw==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age16mln27e2p58gu6dpxfclttmuzfnq39mv62kthjpps33g3nl3scfq449857",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3Rkd5WFE3aE5EQzY5ZXV4\nbXVGYmxTdVg1ekRpVjlRUnozY2tMTGloL21RCktjZW95OU9ZZ2owTCtMR1NxaXJn\na2VYS2ttb3VhSjNXOG84UUJtYU04QjAKLS0tIGd3aHM0RldFYnVFdDRVS0Vhc3BF\nckJhYmN6a1FJUC9ibks1cGlRaU1zbFkKE4ClunQ3XGAILwluC6iYFs+rlR02PdhK\njOmPbOlS0aNG0hoC7Z6aetgpj689AkJgl68QVcyvm+ecHH7TOT7l1A==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-08-13T14:06:43Z",
"mac": "ENC[AES256_GCM,data:yGKY0fi3KQWGHBeyNtQ8EJ6561dKRZ5aAjO9zq3odDtX75i2RSjORIlNjBsVvegBzeo8AkwwnzxNPt2sHl6MKDZfEsysWAi8Wolh4UvHk087AnR/uKvtG6t4uUaNIWej2DEzxUtTQ8QP1afsdqGCf0vZVruNcJ4u2xiQbN2vJPc=,iv:CDXJ5/P+h0Enq/0EL1su1Mw55FVYLy4XPSoUCkRkt+U=,tag:AvRfEDYMBunyIQIVCPbXag==,type:str]",
"pgp": [
{
"created_at": "2024-05-10T13:05:56Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nYLcwaMzwBw==\n=CejJ\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

1
hosts/carbon/ssh.pub Normal file
View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGdyTanEqCieqt81Ri8xHnw1dyK3i8srDi1F+xIb3Js3

View File

@@ -0,0 +1,10 @@
{ ... }:
{
services.wg-clerie = {
enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8111/128" ];
ipv4s = [ "10.20.30.111/32" ];
defaultViaVPN = false;
};
}

View File

@@ -4,64 +4,109 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/proxmox-vm
./restic-server.nix
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda";
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
networking.hostName = "clerie-backup";
networking.useDHCP = false;
networking.interfaces.ens18.ipv6.addresses = [ { address = "2001:638:904:ffc1::6"; prefixLength = 64; } ];
networking.defaultGateway6 = { address = "2001:638:904:ffc1::1"; interface = "ens18"; };
networking.nameservers = [ "2001:638:904:ffcc::3" "2001:638:904:ffcc::4" "141.24.40.3" "141.24.40.4" ];
services.nginx.enable = true;
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.borgbackup.repos = {
clerie = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnUBblmmVoMMBftn4EnwnzqR12m9zill51LpO124hHb10K2rqxNoq8tYSc2pMkV/3briZovffpe5SzB+m2MnXbtOBstIEXkrPZQ78vaZ/nLh7+eWg30lCmMPwjf2wIjlTXkcbxbsi7FbPW7FsolGkU/0mqGhqK1Xft/g7SnCXIoGPSSrHMXEv5dPPofCa1Z0Un+98wQTVfOSKek6TnIsfLbG01UFQVkN7afE4dqSmMiWwEm2PK9l+OiBA2/QzDpbtu9wsfTol4c192vFEWR9crB2YZ1JlMbjVWHjYmB7NFsS0A6lUOikss0Y+LUWS2/QuM/kqybSo4rasZMAIazM6D clerie" ];
path = "/mnt/clerie-backup/clerie";
};
cosima = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2x5h7F3rRy8G8r6twd549TRyIB/WsKOxJWIcUbAc3FFOIvbtXyT/zR91K58usZzcVdZjobyLa9aNfJNvA3ez2dO0PaqoRLg9Bgq44/bd6492N4ALROAgbmMwuTwA3gq2TYrWUCICGlYvBv7eVoSKrGECw4IZkAgoXu/pucz9yi10ccsu+cfZxuBRZtn5QmRIo8uhyGcjhtk9obB0JkUrGrubJRhxUazEH5j+bn/DHmYpmIyRV/82YvA+GR3B/PODF0fi7sFoeBQefCPTCHftYROB1P7G70wvO9rC9xTWSGPVeM7PmtArRKxOX89yqhVuHr2hWrPLLFMbY3wMNVKD5 cosima" ];
path = "/mnt/clerie-backup/cosima";
};
krypton = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDV3GpgaDqgTlWX0//DQ7AedYo0sD4e37OHl4/OqU7C+YfIuzaC8+KRfugTQS4R8UBKuxFHJC867aHq2rxIfKzKFtmyVPT7ywbpgNW3FDugQZ5MdPo8eHV19jnaZ9jkhUpJmMzayW+hU0GxT1fEXzSaewJknY3afdTKAi3dM+7LAcxVa82qwwArNuH06wrthU9eyva2QWMeZ6aEzzZgSxxrLQZFIXRtA81JcFmjL1IwxepDyUsbTj31Wmvf4n6YI6wxY9QhKyS4bahlnQmW0CpKwX6lKtGRRMVilTZLKa0aR0z15ltPE5h1USUnxiyo5YVB+1QA8luCnQAzIeZODEc3um8AfH4Z83MqU802K8yRmjJUhkoezJwRjewJito3Pfc4TOC2pdo7Na9bb5omTz7jiTRDvQkysWSZGyd22Vsl48tVuRTve/VkhBZuqOwH9yqBz5rl2hG7GHOiHD40kjxq+fJW8vge1hdu1TEQK8ubn1Cod/GuvuWFMTAwagYrJs0= clerie@krypton" ];
path = "/mnt/clerie-backup/krypton";
};
mail-1 = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqsAeI+iZ89MpkjNpLViJjC0FxHPVokpVVeU1IqD3KqhF70dqf3IuJSnhCfW4i2RPkwVwLkT1WsUmnI3Pp3izreBL+Y/RA2jG/x0380It/6RBwFtZA+6E7OgQtwca6APYIPSjlQnEfRrQV0Kz16qBZZRjo/VG20rDxUSiS+bPk5ar3JFjCSf4DnikeWR5u5brL6nFnHaiw7PbRTytdeb3y/g1TdBceLE0ISLtA/LJqlaRo5dKeDv69Loet65TA66PpCR3wp3yROaLVx7IF+Pr+x4WO6XMKjlaOjWygdW9zJ3fKa3pEhtzlcYHczDVLXyGszsKvUoRioP3m1GQY3gg7 root@mail-1" ];
path = "/mnt/clerie-backup/mail-1";
};
uberspace-ceea = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiUWufpvAj/Rdxt/frAjs5Q4+/lzaN2jmf5+W3Gazjzw+CH+Agplux6op+LlzF7kAA32yP+lwQto8Rz92NzReDssXd+0JhgAAHrSMrPOPnQbZrierKOfVvDOteklEM4k5JXqZ+xHIMtNomuMV3wCFc18nvwc8t95pDBOI/HwzAwn2mGhVBod0CNXZs8EyMeQJNKLCRwpUrddOX6fz5x/fbPYO4KB3iPkC0X+e/d5SuBvrmwFdnpr2RkCboMPdd6i/0AsY4MLdMV54arS9Ed2jaFKqYCQR5wRdLxndn+aByyVQHQxVU0gVfO9+53NOgiVzhOFzXm6K2KcC/HZR5uj1r ceea@olbers.uberspace.de" ];
path = "/mnt/clerie-backup/uberspace-ceea";
};
uberspace-cleriebl = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA+E9Hguv/KPvBMAQ8L+Gn9YqbZwhUpGfHEIYSl2+NvvLWWQy9ayQJ1bgqshK/DUsMVH54jMTiGpI18I+MUT4J4+Ww9O2pT7ZnQbPyk6EuHSMZM+9iHoLR7szaxXDKaD9CD1qguB5/wsGQGyB5OvZoCwQsCZgkMGgU+egOnHKipacsgYhI8RSzRxKkNnUK4L4Xea+7RqSIBM4gtZcc2uqkwrIPIZwi4Xs7aH4ibO6B0exEY1SYEkJGD/u9hA9zDv2jkykodBKmSZlf8L/e5JWjDj+PHjlsbn9tfH6GdWf/rNynt4E9QStqetnMvWKZIBCNXs9O/URJU4+lWFbamIwJ cleriebl@johnson.uberspace.de" ];
path = "/mnt/clerie-backup/uberspace-cleriebl";
};
uberspace-clerieda = {
authorizedKeys = [ "" ];
path = "/mnt/clerie-backup/uberspace-cleriemx";
};
uberspace-cleriewi = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAeU+YezmGNNnntAkOL143NlkADi6ekEcaW9yf9yegdkDxwyIyxaWC89B110kRkNe+6KP+LDwrp9vnFJZjst8Gv+dMs0h9U0IdUafhO7TcbbkqynqmtzIwiSGsLby2K9XOYTMlAa2JOfeNScPWccZ8KgXsIBqRGjo3yQfCHXZu9U/8CGXvYPsTGY5QYNeAw5Uaikuf565GHy4ROx2BN7LGug9lK42Hfv8i1lhCLi7wkhQ0EPGBRPkscjz/0Kb2iABMzyUf6uMrDJX/usKrChxkLfidIM9C5YR1E+wXlmy9lijuNP85NpXUEyVTAp9/XLCp1vskfCjsBLO0l+40XNIt cleriewi@biela.uberspace.de" ];
path = "/mnt/clerie-backup/uberspace-cleriewi";
};
web-1 = {
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN7oldAaDoRJbY0/QdNSb9wCM0ART3UrW+ay7WhsrZoOl3GN+YLE5sPkCxbQRxbb7q/lacXdnlSlCoCZ2k/y1EbITX3BT5e5XAAsF1QElPokvI/tKFH5XakosaXP/di7hhVfzEC2ELiuUBuz8dycaskSGblYhSSea9Y3+o2JeNgLokBL7RcJkcSr5JkMeW3M1dd8obmL6NHY1802ehT6cIgZ7+fY+5UsU3YeAIQUPBRrVnwuroN6K3oPMhKKMPP9bCvI/ZAX/+/VrxECuVMz2MF8inq37J9E8xJ9kyIq5gYA9SWEGImm2O9vlA6XIRT/2W05aRyZSwbw6WBSm6Q2pb web-1" ];
path = "/mnt/clerie-backup/web-1";
};
# fix borgbackup primary grouping
users.users.borg.group = "borg";
services.borgbackup.jobs = {
backup-replication-hetzner = {
paths = [
"/mnt/clerie-backup"
];
doInit = true;
repo = "u275370-sub2@u275370.your-storagebox.de:./clerie-backup/" ;
encryption = {
mode = "none";
};
environment = { BORG_RSH = "ssh -p 23 -i /var/src/secrets/ssh/borg-backup-replication-hetzner"; };
compression = "auto,lzma";
startAt = "*-*-* 04:07:00";
};
web-2 = {
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKC1pw7u/LcriXMt9mRhjjw7IvKh3Hfj2R6sZbybk5x6 web-2"];
path = "/mnt/clerie-backup/web-2";
backup-replication-palladium = {
paths = [
"/mnt/clerie-backup"
];
doInit = true;
repo = "borg@palladium.net.clerie.de:." ;
encryption = {
mode = "none";
};
environment = { BORG_RSH = "ssh -i /var/src/secrets/ssh/borg-backup-replication-palladium"; };
compression = "auto,lzma";
startAt = "*-*-* 06:23:00";
};
backup-replication-external-drive = {
paths = [
"/mnt/clerie-backup"
];
doInit = true;
repo = "borg@palladium.net.clerie.de:." ;
encryption = {
mode = "none";
};
environment = {
BORG_RSH = "ssh -i /var/src/secrets/ssh/borg-backup-replication-external-drive";
BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK = "yes";
BORG_RELOCATED_REPO_ACCESS_IS_OK = "yes";
};
compression = "auto,lzma";
startAt = "*-*-* 08:37:00";
};
};
users.users.backup-replication = {
isNormalUser = true;
group = "backup-replication";
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8kCLiDfVFKgoNvEoMb34jp2n1lQG+k7wigzc4qGmrROlWkJ46/Ym4UrSeQJAd6hwHTcKTZkeOrqDAjZZ+jlidpncJHT5VMW5Ah965pxbBq6Qh1Yz5tKj7nLAQ/+bwEH4qqBFNd796876n3pY/FqhwAHWONqWhLKzMXpFursMSITUPmRXcaPwJrgS9DIYspZ9bBhhRSdQ5N1SiGtaszOQwdevLnNYqdtFOBG4rt9SO6IBIHtaiTIHrrMGS2Lt3NMwkq+O+N+TGaKLjbwqtfUPfPOCmY0XH12OawjxHP9hZ+WH3dPtcu5p+VORciSybPvyh9qzXUrDeO4HDuii2GEFU8JFELYXdT/qBwdIMp82tkgww0zKbTJuc0y/9eR7LCXop4OALhR8+8xWDI9c1ccxu3T7S7zUI1OmTlR9i8rx85D4sz2dtp1jirDoW2KVuIdwe6G3NLfTL95FZRmveEQM3MO8MPpfzZ4EvaMbiQQd/c4VAmGovtSLQhySTpT6qSv0= root@backup-4"
#"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRANmJ2LYUr0Mavz/JJ7j+7p1zkqvizf6ZLt5XOJ2fj0enDuK7Dc5fxiESLGYTsLRVWuY4hNXVIL7aeJUj1LPf6LEX87APP4hb95t+TFxcES87tFfnFO48eiBbSd25Av2jmHGb6/wY2viYBxfk/vrLjPR6RgICqFsWFcz20bsWmc48FdzXYJCGJfKjHiW+Ut95VL+M/AlGBQHo33FNDyPXV4zh+MeWVkOFicwfh0k+4NH7Psj5n93m9szAlz306t5YZ32HnhSlvObkMk1Ugy6AzPKXrgKBu11pmatf7sFRx1ikYGUiKiezGjatt/8lYZfE8rQKQjwH+6LPt3ZPv06ncfKpH2vbZfonM0KhSsm1OIhJTse+X7ZMxizO6QqYM+BRJJGMbhH1g+6kFRsdlwakHNPE9YvG4NxZ1NxWTUr6F0gPhUEy61LkTnznt3ct1hgQR02KDQ+9i8PvaYeIIzZzRKufv4tV7OZkDLbN97tvAMkgpLjF+8fCg3qjn2Lckzc= root@palladium"
];
};
users.groups.backup-replication = {};
environment.systemPackages = with pkgs; [
bindfs
];
fileSystems."/clerie-backup-replication" = {
device = "/mnt/clerie-backup";
fsType = "fuse.bindfs";
options = [
"ro"
"force-user=backup-replication"
"force-group=backup-replication"
"perms=0000:ug=rD"
];
};
clerie.monitoring = {

View File

@@ -9,8 +9,8 @@
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
@@ -19,10 +19,18 @@
};
fileSystems."/mnt/clerie-backup" =
{ device = "/dev/disk/by-uuid/69de70f0-9b46-47f3-9ac7-348f57934d55";
{ device = "/dev/disk/by-uuid/69e75b00-23e1-4775-98a6-061a79d806cf";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -0,0 +1,29 @@
{ ... }:
{
services.restic.server = {
enable = true;
privateRepos = true;
dataDir = "/mnt/clerie-backup/cyan";
listenAddress = "[::1]:43242";
};
# restic rest server does not support --htpasswd-file in the current version of nixpkgs
# until then we copy the secrets to the common location
sops.secrets.restic-server-cyan-htpasswd = {
path = "/mnt/clerie-backup/cyan/.htpasswd";
owner = "restic";
group = "restic";
};
services.nginx.virtualHosts."cyan.backup.clerie.de" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://[::1]:43242/";
extraConfig = ''
client_max_body_size 10G;
'';
};
};
}

View File

@@ -0,0 +1,27 @@
{
"restic-server-cyan-htpasswd": "ENC[AES256_GCM,data:ZKrEv/bU1X+iO7GLlxsM8HhUy6B2+EXRA8JO2X8E8X5nt8Ydwa+wAqTea3hGyW/QNFrNg/nnAFaVg+VNa6UEqOuF0eg4Nf0LOYTtTpNt4uqDHomfFpvFxDfVCbk4a3fnjnJzk51XnZqeVlvuH2JKg9uD6QzTghTuZfysdGePZdD4WRfY+qHsZg2jREgA26WKsRnD1zU4ZnbRAA1s0Lzf5gG4kFciIzovt0x5MYEiVERFeM+HG1a117EvSlsijPNJVLTaFRLTVOlTOYLKXt4KcRJq9KwoZR/LgEz++rUE4DN5f7iQs+Sb9epH9sV/V06R6AKE5ZFcyi5Y+ipt8B4sWX8PQUeFxNlpljXHro8szGNnLnSxxieg10SEwfIEw+nTGVMHToUpvybzdoI4VPUHZGF+kpqv8ejEzhrKZXyPrd7ZCWGDsTdl8gGSefimpEUR8IwuPqImgu2UU8gT,iv:Y/G/odtZ4enBtNc2Wj7bZjsJ3nur5huYAqlu1PgnWlo=,tag:tg3ut7R2jJd+TVvYHIiTdA==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:rOpBlDt9K//zlgWo1Bw9IX5jmpLbnit5zi60Ulz8f6tHwqVsKJv5NkxYc9A=,iv:Jlo0QZP6R1CEE20iLa7M/LV/ZX2/33oMv/FzBBo6nvY=,tag:Ttqo7BKd6RuUiMksW6rZnw==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1px682xeu0xfkr49qdqe95er040p2vv3ugekk04e36jj2wqs7tyfs8mhclh",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0UCtUZ3NZQWxOK1FUNDhL\nbWhaanN2OEJIVmpMOURzWU1vcGhuODdtcDJnCm9Nb01NaVVpWDJ6Q3JCbXRkRUJP\nUVdFaGVScUdxRnlpSnRNOG1RalNRaFUKLS0tICs0cW1WR0JMUmdaVWVzdTh2bjFm\nenBzaERpb1hCS1E3TUo3cmxpZFUxWmcKcLL5/YTGyZEVLwHSpbEI5XfWGklkI7h+\n0uhCww8Wh23EpUYFslZ0Nnbf5HX5/Z34qBwf20cvN8eLToTAQvTdeg==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-06-03T18:16:18Z",
"mac": "ENC[AES256_GCM,data:kWeyNv82yc6H+FJjhTh8vkuxjZ4YFEqmZbqzZr+pEXxXeMUEGi9hr7cauGDNxnRMgWJz9KG1M4tzUyEK8rfVQWLc+Wcf/5Pjsxn1Zg0yJiJAxVFV7AcvGdKUeQuBKgOT5L+Z5+cFdvq9+CU/0M+6/e8jB6OdQWcuy0emBaCut4U=,iv:3w5arXHKapwwo7kgLtHcKfO+dhH22opVP+fjagize0c=,tag:+cCaX2FUG+5UYqutE9IsAA==,type:str]",
"pgp": [
{
"created_at": "2024-05-05T12:12:27Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA5OzEzXewpmPAQ//UhUFxM0YiI1MJgzlBj6Re5rfRYIgQlU033+RK+IBMdJl\njK13jjXYD7bRGlkYWNQbUYk6SWIvU+mvrXdKzXvYsNwK8j99JMRz9pOuScj8o+qs\nZ8pv5ILFXiRBxHbGsxPJQG84tNmSdVQDe3E+ief+t7Gdzui4D6TNGKnciHX4jhN6\nFNng09P4c/DmKLc6r1gRc6UvY5UGkgzVQpvSOkHHI68xGsSzQbZCEeCQGLGmZYyU\nC2ocGWK/9SjPBGMu4LeVlrGACJGMcAuVQKDHRqIlLsla1kbbzzLKOk/6JTenDRak\nC+rzU7fm4jnr2nvAqc6aiG3cqwIdJlaxzy7J9O9lXiAaj0sDBlrf7JEmpbQHKwmP\n9uFhZCMOOcHhVnksLUbEYLrZetK50KOLEjIIc9WIJ0X34QGRkwgbiKE3FGKxHRpC\nmgOSzZWy2VdEnWifu65x2mlFc6iFsHCpdpCl4Hs+DUH2tHi3f2o4rmHUBI8ys6zt\nm/UqSs2w6mftyCIGO+bvpMkJ2EVL1lrQBvL6Oh3u80S5ra4aKVOKui2TiFeQitBA\ntXZPW1EtkmLUsYZD7kUpFn+uInJqNhdoXJPb1D+jqlafT0+xLFXOAgJJ7RerFiCR\n4bi+6h0Z5ybUXp3klboMEWLROpcJ0Z0tgTBL8SlwmzYr6/mDiXgwWTCRa3fv2HqF\nAgwDvZ9WSAhwutIBEAC5+q2rg7IJ+90/TMshrybw+390znLedu8t4ubEIuklzEnK\niUW181+/pbY9gC5H2OQt2A693PLE6/gbdhkned6f3fmLUfbBQeoGRup54f7LWtQU\nwV7CbskhuglKxBgi3WKv0mDYGEOK88h566M/UkC3GBMzNYJjRji6+G9/xVJ4V27d\n7dWBo1mv73QvnmAzOFApJkXi7TGZQzgoUa4kt/bglrkkHZIDYVt5o4JNnXDTI4Fw\nj046WYrQAgqEOujg5nzhtHk+4MVYv6YCA8LPVojVoU4wHuIJZOOZGCk9yLZKagW1\nyQpJTq7XT/cOfb4+nV8cTt3W36ak6yR8/2zcW4Ys40p8pRAgisQv9k1dFuYKGhAg\nJiTBYbw0znp+g89YCljlVC8sx61Dl4fd2WzzYIlq8YzE3RXlBTPE4Vc2obu40pVY\nrwOyYgOzzR2wwjuuPhekvrmwSAURXyxNcGBxKb7OWEP7m+O17UQMC9icICloPaUh\nW9hVmGWmLJfV9bjAtcJuKrMGOJkrg2jsqi4YZW9L+f19TrfFuobbK96zR0mT6hJl\n5zJQn0oo0s3gL2764qT6EeS7iSYaiWB/Dx0JCHr/ecp2+8LzWhmZk7kogAH78J16\nnwUUI1IDDo10JX5/zblfJrsPE8Yk11ToNOhMD484HZ/a1Sydr6IUPI5g0A2yP4UC\nDAM1GWv08EiACgEP+wdQpiVH14ZpfC06VMpDM9BwshMgbHLKP8rJqm6TS1VEx72K\nqMjpSYpw8W5J7M6NGEoXaC59VXuxOQWFX7m2Sgi6Yzo8YhdEiOutGxmD2snuhc7I\nSoYKehsTlm9tjIcLZy1B9TM8JCS9V6yJVkpoNCbaSFfdw4idz02hevOGyzxEA2T1\nlNNij9H+nkw6KCN9Ckt1inhwDfo4B2vZT4fkb46+hqNDJx+1Xh4LIzToN2YvLJZl\nR/eptlV3Xr3EMOba0r3RL/dz4vf0djEXdSyfw/pBKa9i4aGUuwMfx5o9qAieikTv\nUYrejwfXLCAwDDd1b/ieECZ6iE5gnfZtO5aLxRHgl2nD3Wr5lWBrmuATRusvbDpC\nsz2OuiaHm8ivx51n1MweyikBBilDMXIbgXc9pGIGxGdICKypZkJVR1tFBy4Ovjm3\nfpuO+hXeeRa1PFgyh4s8eaZL42v3OAu3lWLbKeXRtui6PC5w8hw0m/8YVooufLm2\nkh8qMKwB/oev52NJZTfi28fZXdSMsdFJ5nWXUoMAelcgOJ3Mu5Rwc3/ro/PqAN/i\nHel9MZVfGBAgRU3x36i2/fVDM1olCqCTYEz3Z4916TKJq2PWRQ+Y8z5eTxl0h3Nu\nGJBTOMDyemEVVcY8HLTG15iudhX2pilTgM5aXQQukKHFoZBHDUu1FQEraMa81GgB\nCQIQj/dOVj3MymQYdSl6n1LCN2UjBEm9AX1Js8v6nY7tLHJo9etTKt57M3xuUCTi\n1VJIXwLWQskI+LPRlyJj63j2cSWs3KrAeigLe8SFb1v7JUYj7aYm9LTawcevSsPr\n69m9Y2zRBg==\n=lDcq\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBsTlqDyK726hwhX8lbs9EhMrkf3LsKIm5Ya3k39C7VZ

View File

@@ -4,17 +4,13 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/proxmox-vm
../../configuration/dn42
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda";
networking.hostName = "dn42-il-gw1";
networking.useDHCP = false;
networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:1::1"; prefixLength = 64; } ];
# VM Nat Netz mercury
@@ -49,28 +45,28 @@
publicKey = "ObF+xGC6DdddJer0IUw6nzC0RqzeKWwEiQU0ieowzhg=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg0197";
privateKeyFile = config.sops.secrets.wg0197.path;
};
# e1mo
wg0565 = {
ips = [
"fe80::43:43:1/128"
# peer fe80::43:1/128
"fe80::2574/128"
# peer fe80::565/128
];
postSetup = ''
ip -6 route flush dev wg0565
ip addr del dev wg0565 fe80::43:43:1/128 && ip addr add dev wg0565 fe80::43:43:1/128 peer fe80::43:1/128
ip addr del dev wg0565 fe80::2574/128 && ip addr add dev wg0565 fe80::2574/128 peer fe80::565/128
'';
listenPort = 50565;
allowedIPsAsRoutes = false;
peers = [
{
allowedIPs = [ "fe80::/10" "fd00::/8" ];
endpoint = "de-fra1.dn42.net.dont-break.it:22574";
publicKey = "shGS36iaWgcJL1FVLhZHPxLHkPETIy2FFdgmNyx1DSk=";
endpoint = "dn42-nbg1.net.dont-break.it:22574";
publicKey = "qYaDuYYVpuFqy7KyC5PmJavqs0a7GtyuES8VwugdPSQ=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg0565";
privateKeyFile = config.sops.secrets.wg0565.path;
};
# fooker
wg1271 = {
@@ -91,7 +87,7 @@
publicKey = "xxPjHWVzePinOOMnuhwGAI3PKY9pvpifIvIbPu3IwQw=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg1271";
privateKeyFile = config.sops.secrets.wg1271.path;
};
wg1272 = {
ips = [
@@ -111,7 +107,7 @@
publicKey = "Iae2R4B7VVsloKWK8T1j1vLMuxpP4dVDUdzEg/YpAjE=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg1272";
privateKeyFile = config.sops.secrets.wg1272.path;
};
# margau
wg1280 = {
@@ -128,7 +124,7 @@
publicKey = "CEge9jdHQArzdniUiWyB3IUZOjGiew3gPmz/MOf4ahU=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg1280";
privateKeyFile = config.sops.secrets.wg1280.path;
};
# perflyst
wg1302 = {
@@ -149,7 +145,27 @@
publicKey = "TSPvvpMY8dCFk6gd58aYtkibtqUn8EzIF6dXP52b3y8=";
}
];
privateKeyFile = "/var/src/secrets/wireguard/wg1302";
privateKeyFile = config.sops.secrets.wg1302.path;
};
# lutoma
wg4719 = {
ips = [
#"fe80::1/128"
# peer fe80::acab/128
];
postSetup = ''
ip addr add dev wg4719 fe80::1/128 peer fe80::acab/128
'';
listenPort = 54719;
allowedIPsAsRoutes = false;
peers = [
{
allowedIPs = [ "fe80::/10" "fd00::/8" ];
endpoint = "[2603:c020:8001:ed42::42]:42546";
publicKey = "MkVyCgIq0BOStFIu2/Wl91ofFuRvnG3ZqTWFfVs/VlQ=";
}
];
privateKeyFile = config.sops.secrets.wg4719.path;
};
};
@@ -277,8 +293,8 @@
}
protocol bgp peer_0565 from bgp_peer {
neighbor fe80::43:1%wg0565 as 4242420565;
source address fd80::43:43:1;
neighbor fe80::565%wg0565 as 4242420565;
source address fe80::2574;
}
protocol bgp peer_1271_north from bgp_peer {
@@ -301,10 +317,26 @@
source address fe80::a14e;
}
protocol bgp peer_4719 from bgp_peer {
neighbor fe80::acab%wg4719 as 64719;
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true;
};
clerie.monitoring = {
enable = true;
id = "301";
pubkey = "kTuC3/rLr4Qb3C4oEn1ecB/vS78poxmu6/Id3Rc1VGY=";
bird = true;
};
system.stateVersion = "21.03";
}

View File

@@ -0,0 +1,33 @@
{
"wg0197": "ENC[AES256_GCM,data:1QJ5GXLMLIOj6xNC4sMnShjyB1wqfTkhkPTlLJz6AJxMjA0BsBZvZ1Pdln4=,iv:nVRIQB8/Ged616ELhkGnDyAz6A+3HQ55+yG0vf0f7aQ=,tag:GtI8ICMCih1tN4Xoc+8RdQ==,type:str]",
"wg0565": "ENC[AES256_GCM,data:kLgKOGDA+kPDB0SZ/yU7Ax7NYn28LiVT2W6zSsc0APfyoZWW6nF0fUQFv4s=,iv:6zjLGAOROifubQUMxRLvoFzN6GRYob841rzNiVyrt84=,tag:Gh15/ROPYiqqobcJcTzmGQ==,type:str]",
"wg1271": "ENC[AES256_GCM,data:NPcFMxVNpwoPkLsb6NvZVxGxw+Og3RzlYx7TAL9nT95x6I8aDRpOnR5tY5w=,iv:gYuem6vX+jRQvirrt3lZQb5gKnN/z32W/MgmGuzQ/Ks=,tag:I9qZJSNKFEM3Vx4Yugxy1w==,type:str]",
"wg1272": "ENC[AES256_GCM,data:LU6jtNkNn2Xs+0OH8cD1HJnbHsNNnqlY83lDFa11/dHwVgdFxMtDXMqIMEc=,iv:/A8rWGR6jExa4ms7jTYC0eZVGCvlKw1I58Co41gw3TU=,tag:tIBRkQzFFpEEzflnDrpcOA==,type:str]",
"wg1280": "ENC[AES256_GCM,data:F4KLY6jiZNl52ko32nM0iTER0DyHvaCSmxeYAKB0MLUD8l9u1Ugk6kYZnUc=,iv:XcaxnvxM1kE/ahNFX+BH7Jmr9q2Py1vHHqOjFUqs5O8=,tag:a1up4gGFqyHz2lmDRJl3bA==,type:str]",
"wg1302": "ENC[AES256_GCM,data:+MzuBPg3ql0/MEnpVvhQTsPIkKB9xnHN9Fk4VlZwK4ijKl+26d6oTSM7/R0=,iv:bPPmhenQLaKTGaDo4rBlKkrXrS1YysRuntbKq6zi2aQ=,tag:lztaTfDGT4kAq+HZMLl0Dw==,type:str]",
"wg4719": "ENC[AES256_GCM,data:hoOOCUGdYFaAQZ6wkgmQl65M1qArvXa826IeJl+BUGf7UX0vxx9J0C2epTE=,iv:+1JcOgzClehkE0Ihd2mmoenPk51OBZMF0bMqapWah/c=,tag:xI5FU+GJU6BER9/n04ccLA==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:aw11Ygfll6llabXkuxtbTcCn1eb4NZX1IwArcXoRJCJSgwDrQZ3HLatov3w=,iv:J2VD5XS+BrIKeFb0NW1UYZUuGPkbjFmooZ93PVK31gw=,tag:2XLSa/2s6LRq3L7UdrTs/g==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1f0hscql4f4w7vyukzeu693xfedsl596dpjekc23q77ylp92zsvcqf9u75t",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3QWdFYjFjTmRVRlV3U3p4\nTSsyc1E0dWtiYjNtVkV2SXJEWkxnTDhLN1Y0Cng4aGlidjhydUVGaFcvK215aGdq\nN0FGajYwa1lPUCsva0tmNkErUGtlOWsKLS0tIG9pLzJEUDA2WWUzd1kzSVZrdVRX\nbUxjQzBCd3p0R1dWTTJaRmZNQjJEUVkKPz6OUQHpYrhRxMdQzpZRR3exVqkG2JvX\nI32PwvbeQK8cgpYwKLGar8U8aiPPm0Y64pID1wedDsNZzLqLOrS3wQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-28T09:28:04Z",
"mac": "ENC[AES256_GCM,data:PHdhyie0Ya/nN9Kqj4z+zPyyKZFvGkznkv8Uf3LNSdPKWVtXARZc8Xodm4MjI2HvooryyyMFHkW75Aln02Rlvk3R8oI7rfFZC7s2P+LotumsYgRFf0JOUMxsxOtKW0ehuLy83Bw0rMJQo1gzTgBykcvdc2pkMmALF/vU/1VqgJ4=,iv:0JwcY0Q+8VAiVHYjynhcpsobQXOkK8EBe3QUJ8YUwFE=,tag:9xAcoxAPGxTvHVBydf3u9Q==,type:str]",
"pgp": [
{
"created_at": "2024-04-28T09:25:37Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nfgAAnS4=\n=Ew+/\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINbpzEFngWD8gZpGKvOdo5CVMPlaDCylNKorf/ZN93rT

View File

@@ -4,17 +4,13 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/proxmox-vm
../../configuration/dn42
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda";
networking.hostName = "dn42-il-gw5";
networking.useDHCP = false;
# VM Nat Netz mercury
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.25"; prefixLength = 24; } ];
@@ -159,10 +155,43 @@
neighbor fd81:edb3:71d8:ffff::14 as 4242422953;
}
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::5;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true;
startAt = "*-*-* 06:22:00";
};
clerie.monitoring = {
enable = true;
id = "305";
pubkey = "DRJ4FFqNCRgxzmD+k4WKVKJiKKTxTm5Uupcz04j1Ag8=";
bird = true;
};
system.stateVersion = "21.03";
}

View File

@@ -0,0 +1,26 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:1tXtGSt4efVLWDJBv+YTW7G9e9FWWNk7eP92uAwXQs/wBiiD8rg8HGWxD44=,iv:nQfYtyIJRm+K/slCIQljVt6FBkyyXgmHt8Jf41wGJaU=,tag:vyAa5DqOttQ6I/3qr8gJaQ==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age17a24csx3mdehmlcpmmqg209j57jkxkznjy0603ltxaws2fvwzapqm2r002",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkWGszcUF2dUJQMmpQdHZ4\ncXhQSGRzZlhPcVVhRUlpejNleHMrOVVGVnpJClpmb0RIM3dpTzFzYVNJSjkraU4v\naFZVUnBGRFQ3VjNwSTRsNUhQT1dYOUEKLS0tIGYrVkRWV1JwTnFZYkJVYmhSWkJO\nOGhJSktyVWdTQTE1ZFhqL2NRZmpScjAKM/BBc28TgTVOuaToHDyLMuuKsxeAlYHU\nsvmVQfOH8G54DGS9iAh8R9yVlMWvGZ6TzG8Pjxba3GNZcnwHrnmpyg==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-21T17:22:54Z",
"mac": "ENC[AES256_GCM,data:7CBfWGDo4hfji5h5/d7vq1MVx8RLtgN1JJKLGayFaUQG3TRk3paBcQ6/w1JlzpTMhKVYiCZHmMJW4M8a+/sNIEw1hVqfvMqfCyS8E4u7Ap/NQkV8rLq7X5W6WxWhBVUh/vjnEUBxAJf3WgWbaUxwCNxbffmVVtf4cCCGum/WL4k=,iv:PHDJfXXovDTfkJ9lyrMtxu5+try1zKOjdSKljTDNi2o=,tag:VdJ51XBhvP4MmlHrOlIwTw==,type:str]",
"pgp": [
{
"created_at": "2024-04-21T17:22:43Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nasrxAXRCag==\n=RSoI\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHCgFELN24kkb40/Pv2aOwhfqoqbCEdQPBTND7nTw1hd

View File

@@ -4,17 +4,13 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/proxmox-vm
../../configuration/dn42
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda";
networking.hostName = "dn42-il-gw6";
networking.useDHCP = false;
networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:6::1"; prefixLength = 64; } ];
# IPv6 Uplink
@@ -159,10 +155,43 @@
neighbor fd81:edb3:71d8:ffff::14 as 4242422953;
}
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::6;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true;
startAt = "*-*-* 07:22:00";
};
clerie.monitoring = {
enable = true;
id = "306";
pubkey = "5+/S3Fj0HknkKgUTgtmDhS7MoHZ2Ygsi/+eij+Gnf34=";
bird = true;
};
system.stateVersion = "21.03";
}

View File

@@ -0,0 +1,26 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:qqia7se7/bjSXQUxR7O0Xr5oJmnWp9vu/gwJqYdmsJlgG2IctIT1miUZheE=,iv:QzMBjOfwh7zMysJHMf18StonFGIvDZ/zQZ3QbJpeoss=,tag:VjaNTlcyPh9NgqjBTHY2eQ==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1syldhpzgdu099cke2lexq6g9mtx7pa6k7jtt33jrxyhgpysf2d7qw5mzjf",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwZUxqV3BNbFU0SjRhWHpB\nbXc4bnhHUHdYckxyWlZ0K1pjbkh5cVRvT0ZzClVOVGhxSkhwMG5yMjREWnduQlY4\nbmRjaXlqKzduanNjRzI4TGpUQmd6dHMKLS0tIE5sYnlodmZrZWxxRnF5QlhUL2Vs\nVlJqSnNHVVZFdlhLaldva0FiYjcyRnMKp2YCzfnio2zZNnMD5viaxVRjfJapia41\n7UrJmMTrD40Bnw3DA66JWPzxHLIASF0Vb7x1blTozcRgST72JL6NIw==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-21T17:27:03Z",
"mac": "ENC[AES256_GCM,data:r3Gi8RQ5IUS0/qGDpiK+Xyc1K8y/hYg6rPEfLr1bLQgJvn+PkZj/KH8mJnGGUVydWPZnVwMUcwUkhOndPhJEhD1xtRG8cN7BerpGmlS/Hj8MBfC+MPcT4Dr87NIhWlLV/bVn14t6S3a7YWmT8Oq5Ka5UhNeHp98cbrDpv7ROuqw=,iv:QEUbLIcBDdt9I7/Lv+loCFJIh63cEjhta3kyFnXG9Yk=,tag:5974Ps9Ez8n+J7SkjZ2mUg==,type:str]",
"pgp": [
{
"created_at": "2024-04-21T17:26:54Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nYlzveIE=\n=i377\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGI7h8xpVDM0BsY+XGwp8kX1XKn82Cg0lhd1M4Eldsp5

View File

@@ -4,16 +4,12 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/proxmox-vm
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda";
networking.hostName = "dn42-ildix-clerie";
networking.useDHCP = false;
# VM Nat Netz mercury
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.27"; prefixLength = 24; } ];
@@ -22,6 +18,10 @@
# Route to dn42-ildix-service
networking.interfaces.ens19.ipv6.routes = [ { address = "fd81:edb3:71d8::"; prefixLength = 48; via = "fd81:edb3:71d8:ffff:2953::1"; } ];
# public address
networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffcb::4"; prefixLength = 64; } ];
networking.defaultGateway6 = { address = "2001:638:904:ffcb::1"; interface = "ens20"; };
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
networking.nameservers = [ "2001:638:904:ffcc::3" "2001:638:904:ffcc::4" "141.24.40.3" "141.24.40.4" ];
@@ -110,24 +110,26 @@
neighbor fd81:edb3:71d8:ffff:3929::1 as 4242423929;
}
protocol bgp peer_2619_frainz_dn42 from bgp_peer {
neighbor fd81:edb3:71d8:ffff:2619::1 as 4242422619;
}
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422953;
graceful restart on;
neighbor fd81:edb3:71d8:ffff:2953::1 as 4242422953;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff::13;
multihop 64;
rr client;
ipv6 {
table master6;
next hop keep;
import keep filtered;
add paths tx;
import filter {
if net ~ [fd81:edb3:71d8::/48{48,128}] then bgp_path.prepend(4242422953);
if net ~ [fd81:edb3:71d8::/48{48,64}] then accept;
reject;
};
export filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
accept;
};
};
}
@@ -137,5 +139,17 @@
}
'';
clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true;
};
clerie.monitoring = {
enable = true;
id = "399";
pubkey = "K7NkCFKSnMIgC0D5wejSpty56AYacfxE+feMsfWtHSo=";
bird = true;
};
system.stateVersion = "21.03";
}

View File

@@ -0,0 +1,26 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:LGm+hg215dTJBPfwr6KXUl6jhKBOgNV+eglyBZVa//M6A44iGmk8AAITUgI=,iv:zcQQAY/cG/DGG5nGPLAcfPZXy7IiWAREVVIZiMf5zz0=,tag:M9P6UlpB2xurMfRn7TEl4Q==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1r44rs8ujkc3xmz07d9m7as8rg054fqmpmdt0fr4xd3tltk2zwcps98jm74",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyYk14c3RPQzZXTkhlb0hS\ndWE4YlNIM0Ira0JTT0tRd3N0bUNRT1hGczFFCkRLa0twUmxaYyswaUR3R003Syta\nNXpTMkxLWFhLWnVKaDlXMnM1ZlBWck0KLS0tIGpoNWgrRnJmOG5XT1YyL0x6Zk9T\nOVZ0eDdYa3BzQ1pBR1JaSnR3Q1h5eUEKQXrtxKZRwTbfiqVYFM6u8F7rIsk/fCQb\nsZ1fPSIhVI8colyzHDhZOEc95RC5FgbfZdOP5EPKPgEGgo/HtWetOg==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-21T17:19:22Z",
"mac": "ENC[AES256_GCM,data:urrl88PONhdSQfnRxp79tJ0cShuD6I7BiwQj+7nVNT1YDZ0PlIRWCZWlrw0CIYp7pkWzE5UHLnVSPNDX8Pf99bWJqdo3kfnkxhcSAlOn0kTQVGVtRzxmFNYdu3Mvtni+ebHJzB92u6376j1YPhyjPPC7D1yV/8FG/MaHo/HMZ2Y=,iv:Ajrf94TeZ7W49PvOM4GiNip1YazqIoIb1KfTgahgdZA=,tag:HIoDNm9/b+6K/WOaH9eCaQ==,type:str]",
"pgp": [
{
"created_at": "2024-04-21T17:19:13Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\n+57tfsT79Q==\n=rtgK\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANa33GhY8tK+rGFKjrEbaw289bMqh1Aazyo04B//27t

View File

@@ -0,0 +1,62 @@
{ config, lib, ... }:
{
networking.firewall.allowedTCPPorts = [ 179 ];
# something doesn't work right
services.bird2.enable = false;
services.bird2.config = ''
router id ${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address};
ipv6 table bgp6;
protocol static {
ipv6 {
table bgp6;
};
route fd81:edb3:71d8::/48 via "lo";
}
protocol kernel {
ipv6 {
table bgp6;
export filter {
krt_prefsrc=${(lib.head config.networking.interfaces.lo.ipv6.addresses).address};
accept;
};
import none;
};
}
template bgp ildix {
local as 4242422953;
graceful restart on;
source address fd81:edb3:71d8:ffff:2953::1;
ipv6 {
table bgp6;
next hop self;
import keep filtered;
import filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
};
export filter {
if net ~ [fd81:edb3:71d8::/48{48,64}] then accept;
reject;
};
};
}
protocol bgp peer_ildix_clerie from ildix {
neighbor fd81:edb3:71d8:ffff::13 as 4242422953;
}
protocol bgp peer_ildix_nex from ildix {
neighbor fd81:edb3:71d8:ffff::14 as 4242422953;
}
protocol device {
scan time 10;
}
'';
}

View File

@@ -0,0 +1,53 @@
{ config, pkgs, lib, ... }:
{
imports =
[
./hardware-configuration.nix
../../configuration/proxmox-vm
./bird.nix
./fernglas.nix
];
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
networking.useDHCP = false;
networking.interfaces.lo.ipv6.addresses = [
{ address = "fd81:edb3:71d8::1"; prefixLength = 128; }
{ address = "fd81:edb3:71d8::53"; prefixLength = 128; }
];
# VM Nat Netz mercury
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.28"; prefixLength = 24; } ];
# ildix peering lan
networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2953::1"; prefixLength = 64; } ];
# IPv6 Uplink
networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffc9::c"; prefixLength = 64; } ];
networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens20"; };
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
networking.nameservers = [ "2001:638:904:ffcc::3" "2001:638:904:ffcc::4" "141.24.40.3" "141.24.40.4" ];
services.nginx.enable = true;
networking.firewall.allowedTCPPorts = [ 80 443 ];
clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true;
};
clerie.monitoring = {
enable = true;
id = "391";
pubkey = "Rfu2JLxAk0seAZgt43sOEAF69Z9uQaOjeNgM4jJF0h4=";
};
system.stateVersion = "23.05";
}

View File

@@ -0,0 +1,37 @@
{ config, lib, inputs, ... }:
{
networking.firewall.allowedTCPPorts = [ 3000 1179 ];
services.fernglas = {
enable = true;
settings = {
api.bind = "[::1]:3000";
collectors = [
{
collector_type = "Bgp";
bind = "[::]:1179";
default_peer_config = {
asn = 4242422953;
router_id = "${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address}";
route_state = "Accepted";
add_path = true;
};
}
];
};
};
services.nginx.virtualHosts = {
"lg.ildix.clerie.de" = {
enableACME = true;
forceSSL = true;
locations."/" = {
root = inputs.fernglas.packages."x86_64-linux"."fernglas-frontend";
};
locations."/api/" = {
proxyPass = "http://${config.services.fernglas.settings.api.bind}";
};
};
};
}

View File

@@ -0,0 +1,34 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/5f2174f2-981a-468b-967e-1c1b6a32b8a3";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
# networking.interfaces.ens19.useDHCP = lib.mkDefault true;
# networking.interfaces.ens20.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,26 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:kG/PCFQv4pRaup3sKOZNkwoJQ5Fdo/k5UUTh8/fedq87gA8yF7esZySUYc4=,iv:JYlaGotwiIiXVnfz98pjL1j2YwNtgoTmmk//9bABqz4=,tag:v7Csuvn1EjOxWnD2YHQ7kA==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1d3scmrwmhl5wzfq632sjg679kae3vsn8q5lmx05xrltnh5jt0yls6xnm00",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvM1hpMUJ4d2xvUWgxcFRs\nTGwyYW5vQWdwL1JObm1BR3J4OFB2Z09HQkIwCnh1TVlvUFNmOXVvdFZLL1AwNC9p\nNUxMV3ZsMW53RElXcU0veGQ2NCtyQmsKLS0tIG01Q3lIbDR0ZEQ2dDlONlhlSGho\nbU1LdzZlOGtmVmJKQjNiTE5RWVlyakkK2dm5BQ2P1cZVpFKLtARm1E9aoGM9j351\nbYmmdtTnXrgVM0rZuexiM+G+3MjZEFvGI+RkrFcGcY3WSKy0OQSlfg==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-20T21:14:46Z",
"mac": "ENC[AES256_GCM,data:WdiOdmBc6EabnWM5Wkxj3W7a+qDJr4wQQEMR39bZabTMuW+8Y/p/eX5YxUL7U6XisI5c6JPIGcGYU7gaLWSvQ9uh6eFn/NZm+3WmyVXzAUjYDC2I8pm9DKAbPUU95zMmgSQDGJYr8ZFzfTDFepCn1poaxJ7TDpfD7tUfaDwDq34=,iv:vm6BHsXkb9pjKDeI/oXU7lYg4uHuFhE9g5s/JXDu5/o=,tag:hGGz8JKjBZ84Nx/3xT+p4Q==,type:str]",
"pgp": [
{
"created_at": "2024-04-20T21:14:21Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\nRZi1vIZRrA==\n=EbyO\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKbqGg6BF4MLSgDIe0Q0EsaogXPlYKHCNKWvfIXkNq7L

View File

@@ -4,26 +4,13 @@
imports =
[
./hardware-configuration.nix
../../configuration/common
../../configuration/router
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda";
networking.hostName = "gatekeeper";
networking.useDHCP = false;
# Local Router IPs
networking.interfaces.lo.ipv6.addresses = [
{ address = "fd00:152:152:101::1"; prefixLength = 64; }
{ address = "fd00:152:152::1"; prefixLength = 128; } # Anycast
];
networking.interfaces.lo.ipv4.addresses = [
{ address = "10.152.101.1"; prefixLength = 24; }
{ address = "10.152.0.1"; prefixLength = 32; } # Anycast
];
# Network
networking.interfaces.ens3.ipv4.addresses = [ { address = "78.47.183.82"; prefixLength = 32; } ];
networking.interfaces.ens3.ipv6.addresses = [ { address = "2a01:4f8:c0c:15f1::1"; prefixLength = 64; } ];
@@ -40,38 +27,6 @@
networking.wireguard.enable = true;
networking.wireguard.interfaces = {
wg-carbon4 = {
ips = [ "fe80::127:1/64" "169.254.127.1/24" ];
peers = [ {
allowedIPs = [ "0.0.0.0/0" "::/0" ];
publicKey = "5EVyQC0y704asO4SwsGbAoFGKusuO4a6IJ2bS/5bcTI=";
} ];
listenPort = 50127;
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-carbon4";
};
wg-porter6 = {
ips = [ "fe80::101:1/64" "169.254.101.1/24" ];
peers = [ {
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "[2a03:4000:6:48d::1]:50101";
publicKey = "Jr1GBeNWrYjz7QyiI8XSOSRo/kGsCCtGGAzxmM5Hkn0=";
} ];
listenPort = 50101;
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-porter6";
};
wg-nonat6 = {
ips = [ "fe80::128:1/64" "169.254.128.1/24" ];
peers = [ {
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "[2001:638:904:ffca::6]:50128";
publicKey = "0GGDyPj/0uMaba9pmOyj+Sx+3jMivpRdpTJhadl6bS8=";
} ];
listenPort = 50128;
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-nonat6";
};
wg-vpn = {
ips = [ "2a01:4f8:c0c:15f1::8001/113" "10.20.30.1/24" ];
peers = [
@@ -86,32 +41,87 @@
publicKey = "QGQHWwDE1XIeiReFcacLxin4Dqlz1pBXvttFnzBMJSY=";
}
{
# nexus
# ceasium
allowedIPs = [ "2a01:4f8:c0c:15f1::8012/128" "10.20.30.12/32" ];
publicKey = "tEJzPPEJkoTPkhzTWyFDZ+5U146ovHA/4Mv3JButSAQ=";
publicKey = "tvWpYlaS3ItTWH9CZv4SHzXToIblJP2j+Mt1V+3cegM=";
}
{
# terra
allowedIPs = [ "2a01:4f8:c0c:15f1::8014/128" "10.20.30.14/32" ];
publicKey = "peZ94x44sMRNqNxcaN+DI2UMwVFzugZjnnbqbxWcBEs=";
}
{
# e1mo
allowedIPs = [ "2a01:4f8:c0c:15f1::8015/128" "10.20.30.15/32" ];
publicKey = "j+ao/TTTE2hThdqBtLQuC67QSaKXMhhWTky6MzkhrxY=";
}
{
# jannik
allowedIPs = [ "2a01:4f8:c0c:15f1::8016/128" "10.20.30.16/32" ];
publicKey = "V6Kc++QmJ4RkLSWvcLj/KgbIafvi7URV6dOgFnKSAwM=";
}
{
# evey
allowedIPs = [ "2a01:4f8:c0c:15f1::8017/128" "10.20.30.17/32" ];
publicKey = "DD18B0plaYuhHK+yJ1nlEv6EmM+Krw/alXmz+X3SI18=";
}
{
# amy
allowedIPs = [ "2a01:4f8:c0c:15f1::8018/128" "10.20.30.18/32" ];
publicKey = "tXO6qzYGTcuiMZhfTF2Af1qoIdpv3EqqepldrjVm9hI=";
}
{
# palladium
allowedIPs = [ "2a01:4f8:c0c:15f1::8103/128" "10.20.30.103/32" ];
publicKey = "kxn69ynVyPJeShsAlVz5Xnd7U74GmCAw181b0+/qj3k=";
}
#{
# allowedIPs = [ "2a01:4f8:c0c:15f1::8104/128" "10.20.30.104/32" ];
# publicKey = "k1eQINwZPRdIEhND5sKAcHMxEpz/Z+B/2ZCdLhHCG3w=";
#}
{
allowedIPs = [ "2a01:4f8:c0c:15f1::8104/128" "10.20.30.104/32" ];
publicKey = "k1eQINwZPRdIEhND5sKAcHMxEpz/Z+B/2ZCdLhHCG3w=";
# vcp-bula-mon
allowedIPs = [ "2a01:4f8:c0c:15f1::8105/128" "10.20.30.105/32" ];
publicKey = "6gi04ExLQnpwxmTzQwQz3AsPS+ujKmANh6+o0nAzJwM=";
}
{
# aluminium
allowedIPs = [ "2a01:4f8:c0c:15f1::8106/128" "10.20.30.106/32" ];
publicKey = "kuUeStBuU6d8PGFHFhP5pEvy0nuZ0TmScI8w7MOt0is=";
}
{
# beryllium
allowedIPs = [ "2a01:4f8:c0c:15f1::8107/128" "10.20.30.107/32" ];
publicKey = "SReFUcvw/4fLSkFGjkhDRyY9wyMCcjJ4Yiczt9X64Eo=";
}
{
# astatine
allowedIPs = [ "2a01:4f8:c0c:15f1::8108/128" "10.20.30.108/32" ];
publicKey = "4b4M+we+476AV/fQ3lOmDbHFA0vvb3LwOEPVvNpuGm0=";
}
{
# zinc
allowedIPs = [ "2a01:4f8:c0c:15f1::8109/128" "10.20.30.109/32" ];
publicKey = "syHX6PO1N3Annv5t2W8bdAo/kMoYenzrcPrUHxkIBEE=";
}
{
# zinc-initrd
allowedIPs = [ "2a01:4f8:c0c:15f1::8110/128" "10.20.30.110/32" ];
publicKey = "kn6ZtViagKGSyfQJQW6csQE/5r7uKlbC1rbInlQ33xs=";
}
{
# carbon
allowedIPs = [ "2a01:4f8:c0c:15f1::8111/128" "10.20.30.111/32" ];
publicKey = "o6qxGKIoW2ZSFhXeNRXd4G9BRFeYyjZsrUPulB3KhTI=";
}
];
listenPort = 51820;
allowedIPsAsRoutes = false;
privateKeyFile = "/var/src/secrets/wireguard/wg-vpn";
privateKeyFile = config.sops.secrets.wg-vpn.path;
};
};
networking.firewall.allowedUDPPorts = [ 50101 50127 50128 51820 ];
networking.firewall.allowedUDPPorts = [ 51820 ];
clerie.nginx-port-forward = {
enable = true;
@@ -123,133 +133,13 @@
host = "nonat.net.clerie.de";
port = 22;
};
# riese
tcpPorts."25566" = {
host = "minecraft-2.net.clerie.de";
port = 25566;
};
# chaos
tcpPorts."25568" = {
host = "minecraft-2.net.clerie.de";
port = 25568;
};
# aerilon
tcpPorts."25569" = {
host = "minecraft-2.net.clerie.de";
port = 25565;
};
};
clerie.gre-tunnel = {
enable = true;
ipv6= {
gre-carbon6 = {
remote = "fd00:152:152:104::1";
local = (lib.head config.networking.interfaces.lo.ipv6.addresses).address;
address = "fd00:153:153:201::1/64";
};
};
ipv4 = {
gre-carbon4 = {
remote = "10.152.104.1";
local = (lib.head config.networking.interfaces.lo.ipv4.addresses).address;
address = "10.153.201.1/24";
};
};
};
services.bird2.enable = true;
services.bird2.config = ''
router id ${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address };
ipv6 table ospf6;
ipv4 table ospf4;
protocol direct {
interface "lo";
ipv6 {
table ospf6;
};
ipv4 {
table ospf4;
};
}
protocol kernel kernel_ospf6 {
ipv6 {
table ospf6;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv6.addresses).address };
accept;
};
import none;
};
}
protocol kernel kernel_ospf4 {
ipv4 {
table ospf4;
export filter {
krt_prefsrc=${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address };
accept;
};
import none;
};
}
protocol ospf v3 ospf_6 {
ipv6 {
table ospf6;
import all;
export all;
};
area 0 {
interface "wg-carbon4" {
cost 80;
type pointopoint;
};
interface "wg-porter6" {
cost 80;
type pointopoint;
};
interface "wg-nonat6" {
cost 80;
type pointopoint;
};
};
}
protocol ospf v3 ospf_4 {
ipv4 {
table ospf4;
import all;
export all;
};
area 0 {
interface "wg-carbon4" {
cost 80;
type pointopoint;
};
interface "wg-porter6" {
cost 80;
type pointopoint;
};
interface "wg-nonat6" {
cost 80;
type pointopoint;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.monitoring = {
enable = true;
id = "101";
pubkey = "H9Pvx/BzwEMM7acT9mioT8zBD2Yn13L82EKKqdAfeGM=";
blackbox = true;
};
system.stateVersion = "21.03";

View File

@@ -0,0 +1,27 @@
{
"wg-monitoring": "ENC[AES256_GCM,data:90tdQSEYHcJy95AhDX0AT4HrXJK2BNqaeZMSZ7t43NlW/CJjOsfgcgO6EIY=,iv:B/RFe6bBBo5lielWMMCOnVlXrf7eooJFcerG30vxsFk=,tag:FOuPPWE5eP8BgWXni/3BlA==,type:str]",
"wg-vpn": "ENC[AES256_GCM,data:aFGd3R6hfiilCScRtmgS8jMLPQv++yisf1YNYnyARdL+KfW7RvvtGq4egpI=,iv:63WCUk52GdZYv2J8HX+dV8sCP7zKrjolIxGGosxJqg4=,tag:bJwvHiRQHD2FexwRF1hugw==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age10npthg6ycgv6s40vynhj5ryaug2delh96fqcvjnc8nw2ccmjga7suxm7xe",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOcDJvYU4vdFJ4T0duWXR4\nVG15SFFZVDRSQXBDaFgxOGM5NTltK0ozblVZCmJXc3JOV1RQMFV4cGpvUnRIbGZv\nMmJiOGFIYTFqc0FVaEFHZnJjU1dUUDgKLS0tIFV6Ulp4ellVQzBsVkRjL0dIdGJ4\nRE02ZFpxNU9IMit0UHdIK2dHOVdXekkKTIGrO7fngsJMTMiKb5KSMh1BCtwTVQCG\nofSx9j9Bd2gz6MPz7Rrft4B67eliHQ78yHJbVvxO9m3cwHM3fv0AdQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-21T17:40:19Z",
"mac": "ENC[AES256_GCM,data:xt8AFwN+Y8x2kWQVH5MPEPzzWm5m4kgkt+mYKoFbRpfdA6FVnlhl+W+jmZlDz6Hbh6Dkk3cDvD3A3PpvYqsctll6mkjWQLBKphhnZIsGHzAHgdn+cpJ7VAPvWO4iEPjv5ChrPo2JAOKvQcJDooG7yWGB3ltzBqBWCH6TlZ2qxD4=,iv:4HxXa0tWiweHoYG2c7VrLoKgphRX3WRaAFQC98iAVJ4=,tag:y3VBdl2QpEOn1Z5IPS2aVA==,type:str]",
"pgp": [
{
"created_at": "2024-04-21T17:38:49Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\n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\n99G317yXDA==\n=3IUP\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

Some files were not shown because too many files have changed in this diff Show More