nix-config/flake.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

813 lines
22 KiB
Nix
Raw Permalink Normal View History

{
description = "C3D2 NixOS configurations";
nixConfig = {
2023-04-03 20:34:04 +02:00
extra-substituters = [ "https://nix-cache.hq.c3d2.de" ];
extra-trusted-public-keys = [ "nix-cache.hq.c3d2.de:KZRGGnwOYzys6pxgM8jlur36RmkJQ/y8y62e52fj1ps=" ];
};
2020-06-11 07:50:42 +02:00
inputs = {
# use sandro's fork full with cherry-picked fixes
2023-12-06 23:41:52 +01:00
nixos.url = "github:SuperSandro2000/nixpkgs/nixos-23.11";
nixos-unstable.url = "github:SuperSandro2000/nixpkgs/nixos-unstable";
2022-05-31 12:47:58 +02:00
nixos-hardware.url = "github:nixos/nixos-hardware";
2022-09-14 23:16:06 +02:00
affection-src = {
url = "git+https://gitea.nek0.eu/nek0/affection";
inputs = {
nixpkgs.follows = "nixos";
2022-09-17 17:52:56 +02:00
flake-utils.follows = "flake-utils";
2022-09-14 23:16:06 +02:00
};
};
2022-12-17 00:47:47 +01:00
alert2muc = {
url = "git+https://gitea.c3d2.de/astro/alert2muc";
2022-12-17 20:07:45 +01:00
inputs = {
naersk.follows = "naersk";
nixpkgs.follows = "nixos";
utils.follows = "flake-utils";
};
2022-12-17 00:47:47 +01:00
};
bevy-mandelbrot = {
# url = "github:matelab/bevy_mandelbrot";
url = "git+https://gitea.c3d2.de/astro/bevy-mandelbrot.git?ref=main";
inputs = {
naersk.follows = "naersk";
2022-09-17 17:52:56 +02:00
nixpkgs.follows = "nixos";
2022-09-14 23:16:06 +02:00
rust-overlay.follows = "rust-overlay";
};
};
bevy-julia = {
# url = "github:matelab/bevy_julia";
url = "git+https://gitea.c3d2.de/astro/bevy-julia.git?ref=main";
inputs = {
nixpkgs.follows = "nixos";
2022-12-17 20:07:45 +01:00
naersk.follows = "naersk";
rust-overlay.follows = "rust-overlay";
};
};
buzzrelay = {
url = "github:astro/buzzrelay";
inputs = {
naersk.follows = "naersk";
nixpkgs.follows = "nixos";
utils.follows = "flake-utils";
};
};
2022-11-03 20:49:26 +01:00
caveman = {
url = "git+https://gitea.c3d2.de/astro/caveman.git?ref=main";
inputs = {
nixpkgs.follows = "nixos";
utils.follows = "flake-utils";
fenix.follows = "fenix";
naersk.follows = "naersk";
};
};
c3d2-user-module = {
2023-04-24 23:11:42 +02:00
url = "git+https://gitea.c3d2.de/c3d2/nix-user-module.git";
inputs = {
nixos-modules.follows = "nixos-modules";
2024-01-09 22:00:03 +01:00
nixpkgs.follows = "nixos";
};
};
deployment = {
2023-04-24 23:11:42 +02:00
url = "git+https://gitea.c3d2.de/c3d2/deployment.git";
inputs = {
zentralwerk.follows = "zentralwerk";
};
};
2023-05-08 23:33:12 +02:00
disko = {
2023-07-19 01:09:30 +02:00
url = "github:nix-community/disko";
2023-05-08 23:33:12 +02:00
inputs.nixpkgs.follows = "nixos";
};
2022-05-31 12:47:58 +02:00
fenix = {
2023-03-01 22:25:30 +01:00
url = "github:nix-community/fenix/monthly";
2022-07-24 03:58:12 +02:00
inputs.nixpkgs.follows = "nixos";
2022-05-31 12:47:58 +02:00
};
2022-08-18 23:59:07 +02:00
flake-utils.url = "github:numtide/flake-utils";
2022-05-31 12:47:58 +02:00
heliwatch = {
url = "git+https://gitea.c3d2.de/astro/heliwatch.git";
2022-04-17 22:45:05 +02:00
inputs = {
2022-05-31 12:47:58 +02:00
fenix.follows = "fenix";
2022-07-24 03:58:12 +02:00
nixpkgs.follows = "nixos";
2022-05-31 12:47:58 +02:00
naersk.follows = "naersk";
2022-09-03 01:26:45 +02:00
utils.follows = "flake-utils";
2022-04-17 22:45:05 +02:00
};
};
2022-05-31 12:47:58 +02:00
microvm = {
2023-06-07 14:32:22 +02:00
url = "github:astro/microvm.nix";
2022-08-18 23:59:07 +02:00
inputs = {
flake-utils.follows = "flake-utils";
2023-03-01 19:25:55 +01:00
nixpkgs.follows = "nixos";
2022-08-18 23:59:07 +02:00
};
2022-04-24 21:56:45 +02:00
};
2022-05-31 12:47:58 +02:00
naersk = {
url = "github:nix-community/naersk";
2022-09-17 17:52:56 +02:00
inputs = {
nixpkgs.follows = "nixos";
};
2022-05-31 12:47:58 +02:00
};
2023-05-23 01:20:14 +02:00
nix-cache-cut = {
url = "github:astro/nix-cache-cut";
inputs = {
naersk.follows = "naersk";
nixpkgs.follows = "nixos";
utils.follows = "flake-utils";
};
};
nixos-modules = {
2023-09-07 21:07:30 +02:00
# NOTE: mirrored to https://gitea.c3d2.de/c3d2/nixos-modules
# If there are questions, things should be added or changed, contact sandro
url = "github:SuperSandro2000/nixos-modules";
2024-01-09 22:00:03 +01:00
inputs = {
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixos";
};
};
oparl-scraper = {
url = "github:offenesdresden/ratsinfo-scraper/oparl";
flake = false;
};
2022-05-31 12:47:58 +02:00
openwrt = {
url = "git+https://git.openwrt.org/openwrt/openwrt.git?ref=openwrt-21.02";
flake = false;
};
openwrt-imagebuilder = {
url = "github:astro/nix-openwrt-imagebuilder";
2022-04-17 22:45:05 +02:00
inputs = {
2022-07-24 03:58:12 +02:00
nixpkgs.follows = "nixos";
2022-05-31 12:47:58 +02:00
};
};
2022-09-14 23:16:06 +02:00
rust-overlay = {
flake.lock: Update Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13) → 'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15) • Updated input 'harmonia': 'github:nix-community/harmonia/caa5aff87f4455510b4c6270bcda36e3b6b0ceec' (2023-03-03) → 'github:nix-community/harmonia/42a8d180f11d3f10ac73781aea9f10293b0a9d21' (2023-03-13) • Added input 'harmonia/treefmt-nix': 'github:numtide/treefmt-nix/5ec73d38dde4c766a9ae19840fc6afa724096f00' (2023-03-12) • Added input 'harmonia/treefmt-nix/nixpkgs': follows 'harmonia/nixpkgs' • Updated input 'microvm': 'github:astro/microvm.nix/108f0c561eb4b140cac1ac7da7ba72867f62d174' (2023-03-08) → 'github:astro/microvm.nix/55667b89c0f2b60c8d95a203f3784d2dca2ea31a' (2023-03-12) • Updated input 'nixos': 'github:SuperSandro2000/nixpkgs/ab3b0f1358d7bd0b0e5f66148afbc11d611008c9' (2023-03-10) → 'github:SuperSandro2000/nixpkgs/cf18e4acce5f1ef1bee6f8f45890e56da1025155' (2023-03-18) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/556101ff85bd6e20900ec73ee525b935154bc8ea' (2023-03-09) → 'github:nixos/nixos-hardware/994584bb26ffa1deeaf56099601ef4bcc487273e' (2023-03-17) • Updated input 'nixos-modules': 'github:SuperSandro2000/nixos-modules/1de01ed1323441eb508bdc6f4c1aca6797f88381' (2023-02-22) → 'github:SuperSandro2000/nixos-modules/7f5c771b83a25b042023b166743e2d63be43c9c1' (2023-03-17) • Updated input 'openwrt-imagebuilder': 'github:astro/nix-openwrt-imagebuilder/b895a4184f9a5f283d7d38882058e242e8a33645' (2023-03-10) → 'github:astro/nix-openwrt-imagebuilder/7b1f44a2804d3c577b28ceca19ee3be852e05d27' (2023-03-17) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/1c8200cdc4c830d937fbf8b19e1f3e83daf3370a' (2023-03-11) → 'github:oxalica/rust-overlay/41872ef6ee3d14236c345a5c528d679533e045dd' (2023-03-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/1568702de0d2488c1e77011a9044de7fadec80c4' (2023-03-10) → 'github:Mic92/sops-nix/9e98f7a442b0e318de9cce757675c2ab922bdf2b' (2023-03-12) • Updated input 'ticker': 'git+https://gitea.c3d2.de/astro/ticker.git?ref=refs%2fheads%2fmaster&rev=7a464e77e10eeb1297c4dc24f2ee6dcd4940f21b' (2022-12-21) → 'git+https://gitea.c3d2.de/astro/ticker.git?ref=refs%2fheads%2fmaster&rev=1a55ead24d7a4cda98010e9016e83fd8bec18a55' (2023-03-17)
2023-03-18 01:13:31 +01:00
url = "github:oxalica/rust-overlay/stable";
2022-09-14 23:16:06 +02:00
inputs = {
2022-09-17 17:52:56 +02:00
flake-utils.follows = "flake-utils";
2022-09-14 23:16:06 +02:00
nixpkgs.follows = "nixos";
};
};
2022-05-31 12:47:58 +02:00
scrapers = {
url = "git+https://gitea.c3d2.de/astro/scrapers.git";
flake = false;
};
skyflake = {
url = "github:astro/skyflake";
inputs = {
microvm.follows = "microvm";
nixpkgs.follows = "nixos";
2023-05-23 01:20:14 +02:00
nix-cache-cut.follows = "nix-cache-cut";
};
};
2022-09-19 23:57:54 +02:00
sshlogd = {
url = "git+https://gitea.c3d2.de/astro/sshlogd.git?ref=main";
inputs = {
utils.follows = "flake-utils";
naersk.follows = "naersk";
nixpkgs.follows = "nixos";
fenix.follows = "fenix";
};
};
2022-12-27 03:40:34 +01:00
# deprecated
secrets.url = "git+ssh://gitea@gitea.c3d2.de/c3d2-admins/secrets.git";
2022-04-17 22:45:05 +02:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs = {
2022-07-24 03:58:12 +02:00
nixpkgs.follows = "nixos";
flake.lock: Update Flake lock file updates: • Updated input 'affection-src': 'git+https://gitea.nek0.eu/nek0/affection?ref=refs%2fheads%2fmaster&rev=b56ed86e45b2a8cdf811f2659644192a69ab5818' (2022-09-14) → 'git+https://gitea.nek0.eu/nek0/affection?ref=refs%2fheads%2fmaster&rev=5bef189c308df9dda1449a8305a7092fb5c77827' (2022-12-01) • Updated input 'caveman': 'git+https://gitea.c3d2.de/astro/caveman.git?ref=main&rev=404767d88b4a383b594b0a259ca6187861bf6b89' (2022-11-29) → 'git+https://gitea.c3d2.de/astro/caveman.git?ref=main&rev=908fb9c8d3d2b0fbe5a17895639ef478f81e3f8d' (2022-12-03) • Updated input 'fenix': 'github:nix-community/fenix/bba229a06ca03938a1abd4ce6361bf9bf4f651cd' (2022-11-30) → 'github:nix-community/fenix/cb671e285ffc9a6f549bc6ac0f6c497e96f1f3ef' (2022-12-05) • Updated input 'fenix/rust-analyzer-src': 'github:rust-lang/rust-analyzer/398a71affb05aeeea1991044ec9ca1229e68f0f3' (2022-11-29) → 'github:rust-lang/rust-analyzer/a2beeb8dbb5f4596f8c6f28a09c20355ea4c4628' (2022-12-04) • Updated input 'harmonia': 'github:helsinki-systems/harmonia/20114c21d1c902a8f5ad7be7744df241a784a06d' (2022-11-21) → 'github:helsinki-systems/harmonia/634dc577437ab4e1c4071e5fb0f62325ff1a0df7' (2022-12-04) • Updated input 'microvm': 'github:astro/microvm.nix/c21a70fe1ac05ccdfceff6506625e9d44cd91da5' (2022-11-24) → 'github:astro/microvm.nix/e2a1bf59987544faec4d27ce5700e5ef96201a5f' (2022-12-01) • Updated input 'nixos': 'github:SuperSandro2000/nixpkgs/07e0bf5ccddcabe20d2b3bd89aaace918a4a6402' (2022-11-30) → 'github:SuperSandro2000/nixpkgs/0992478bb4eeaa1c9b28ad433dd683e12037de2e' (2022-12-04) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/7883883d135ce5b7eae5dce4bfa12262b85c1c46' (2022-11-28) → 'github:nixos/nixos-hardware/9d87bc030a0bf3f00e953dbf095a7d8e852dab6b' (2022-12-04) • Updated input 'nixos-unstable': 'github:nixos/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27) → 'github:nixos/nixpkgs/61a8a98e6d557e6dd7ed0cdb54c3a3e3bbc5e25c' (2022-12-03) • Updated input 'nixos-unstable-simd': 'github:SuperSandro2000/nixpkgs/9f915b466b047207d391a8b651f2949cc528e1b6' (2022-12-04) → 'github:SuperSandro2000/nixpkgs/2e4dc4db26662d1aebfb6028d5aa7c5aef4bd523' (2022-12-05) • Updated input 'openwrt': 'git+https://git.openwrt.org/openwrt/openwrt.git?ref=openwrt-21.02&rev=b33090a0faf73d5d03e96c132c413776d6ed8b87' (2022-11-27) → 'git+https://git.openwrt.org/openwrt/openwrt.git?ref=openwrt-21.02&rev=be3b061d7bbf425c95ef9108a37c51747c0025e9' (2022-12-04) • Updated input 'openwrt-imagebuilder': 'github:astro/nix-openwrt-imagebuilder/e3e2f451ce6255dce904427c83b11ef2a6eba755' (2022-11-30) → 'github:astro/nix-openwrt-imagebuilder/10a85914617f218942b7f5daa36ef619f495c372' (2022-12-05) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/3158e47f6b85a288d12948aeb9a048e0ed4434d6' (2022-11-30) → 'github:oxalica/rust-overlay/18823e511bc85ed27bfabe33cccecb389f9aa92d' (2022-12-05) • Updated input 'skyflake': 'github:astro/skyflake/54853b3efeaf57ab08cee76680fe0e2d5c144fe7' (2022-11-30) → 'github:astro/skyflake/c78a3e8f64930bf5c48b0f75e577e4294d8750c6' (2022-12-04) • Updated input 'sops-nix': 'github:Mic92/sops-nix/8295b8139ef7baadeb90c5cad7a40c4c9297ebf7' (2022-11-29) → 'github:Mic92/sops-nix/da98a111623101c64474a14983d83dad8f09f93d' (2022-12-04) • Removed input 'sops-nix/nixpkgs-22_05' • Added input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/86370507cb20c905800527539fc049a2bf09c667' (2022-12-04)
2022-12-05 23:51:03 +01:00
nixpkgs-stable.follows = "nixos";
2022-04-17 22:45:05 +02:00
};
};
2022-05-31 12:47:58 +02:00
spacemsg = {
url = "github:astro/spacemsg";
flake = false;
};
ticker = {
url = "git+https://gitea.c3d2.de/astro/ticker.git";
2022-07-16 01:05:49 +02:00
inputs = {
2022-12-20 20:00:04 +01:00
fenix.follows = "fenix";
2023-05-23 01:20:14 +02:00
naersk.follows = "naersk";
2022-12-20 20:00:04 +01:00
nixpkgs.follows = "nixos";
utils.follows = "flake-utils";
2022-07-16 01:05:49 +02:00
};
2022-05-31 12:47:58 +02:00
};
tigger = {
url = "github:astro/tigger";
flake = false;
};
tracer = {
# url = "git+https://gitea.nek0.eu/nek0/tracer";
url = "git+https://gitea.c3d2.de/astro/tracer";
inputs = {
2022-09-14 23:16:06 +02:00
affection-src.follows = "affection-src";
nixpkgs.follows = "nixos";
flake-utils.follows = "flake-utils";
};
2022-09-01 21:28:20 +02:00
};
2022-05-31 12:47:58 +02:00
yammat = {
2023-04-24 23:11:42 +02:00
url = "git+https://gitea.c3d2.de/c3d2/yammat.git";
2022-07-24 03:58:12 +02:00
inputs.nixpkgs.follows = "nixos";
2022-05-12 02:58:47 +02:00
};
2022-05-31 12:47:58 +02:00
zentralwerk = {
url = "git+https://gitea.c3d2.de/zentralwerk/network.git";
inputs = {
2022-07-24 03:58:12 +02:00
nixpkgs.follows = "nixos";
2022-05-31 12:47:58 +02:00
openwrt.follows = "openwrt";
openwrt-imagebuilder.follows = "openwrt-imagebuilder";
};
};
2020-06-11 07:50:42 +02:00
};
2020-04-15 19:00:56 +02:00
2024-03-14 19:03:49 +01:00
outputs = inputs@{ self, alert2muc, c3d2-user-module, deployment, disko, fenix, heliwatch, microvm, naersk, nixos, nixos-hardware, nixos-modules, buzzrelay, caveman, oparl-scraper, scrapers, secrets, skyflake, sshlogd, sops-nix, spacemsg, ticker, tigger, yammat, zentralwerk, ... }:
2021-02-22 12:31:58 +01:00
let
2022-07-24 03:58:12 +02:00
inherit (nixos) lib;
2022-07-16 01:00:45 +02:00
2023-04-11 00:24:56 +02:00
inherit (import ./lib/network.nix { inherit lib zentralwerk; }) hostRegistry;
2022-12-27 00:06:49 +01:00
libC = {
2023-05-25 22:39:57 +02:00
inherit (import ./lib/nginx.nix {}) defaultListen hqNetworkOnly;
};
2023-04-11 00:23:59 +02:00
overlayList = [
self.overlays
];
2022-12-27 02:53:45 +01:00
2023-04-22 23:03:14 +02:00
ssh-public-keys = import ./ssh-public-keys.nix;
2022-12-04 20:53:20 +01:00
# Our custom NixOS builder
nixosSystem' =
2023-05-23 01:20:25 +02:00
{ nixos ? inputs.nixos
, modules
2022-12-04 20:53:20 +01:00
, system ? "x86_64-linux"
}@args:
2023-05-23 01:20:25 +02:00
{ inherit args; } // nixos.lib.nixosSystem {
inherit system;
2022-12-04 20:53:20 +01:00
modules = [
{
_module.args = {
2023-04-22 23:03:14 +02:00
inherit hostRegistry libC nixos ssh-public-keys zentralwerk;
2022-12-04 20:53:20 +01:00
};
2022-12-27 02:53:45 +01:00
nixpkgs.overlays = overlayList;
}
2022-12-04 20:53:20 +01:00
self.nixosModules.c3d2
] ++ modules;
};
in {
overlays = import ./overlays {
2023-12-04 03:10:52 +01:00
inherit (inputs)
fenix naersk rust-overlay
bevy-julia bevy-mandelbrot tracer;
};
2021-02-26 20:22:15 +01:00
2022-12-27 02:53:45 +01:00
legacyPackages = lib.attrsets.mapAttrs (_: pkgs: pkgs.appendOverlays overlayList) nixos.legacyPackages;
2023-03-10 15:03:27 +01:00
packages = import ./packages.nix { inherit hostRegistry inputs lib microvm self; };
2022-12-04 20:53:20 +01:00
nixosConfigurations = {
activity-relay = nixosSystem' {
modules = [
self.nixosModules.microvm
./modules/activity-relay.nix
./hosts/activity-relay
];
};
2022-07-23 00:06:12 +02:00
auth = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/auth
2022-07-23 00:06:12 +02:00
];
};
2020-08-04 17:15:07 +02:00
2022-12-26 22:46:35 +01:00
blogs = nixosSystem' {
2022-08-05 19:08:22 +02:00
modules = [
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/blogs
2023-04-29 23:31:22 +02:00
{
2023-04-29 23:37:39 +02:00
nixpkgs.overlays = [
fenix.overlays.default
naersk.overlay
];
2023-04-29 23:31:22 +02:00
}
2022-08-05 19:08:22 +02:00
];
};
2022-12-27 00:06:49 +01:00
2022-12-26 22:46:35 +01:00
broker = nixosSystem' {
2021-03-05 01:16:57 +01:00
modules = [
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/broker
2021-03-05 01:16:57 +01:00
];
2021-02-26 20:22:15 +01:00
};
2022-12-26 22:46:35 +01:00
buzzrelay = nixosSystem' {
2022-07-16 20:38:23 +02:00
modules = [
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
buzzrelay.nixosModules.default
./hosts/buzzrelay
2022-07-16 20:38:23 +02:00
];
};
2022-12-26 22:46:35 +01:00
c3d2-web = nixosSystem' {
2021-10-02 20:28:30 +02:00
modules = [
2022-06-20 22:10:23 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/c3d2-web
];
2021-02-22 13:21:31 +01:00
};
2022-12-26 22:46:35 +01:00
caveman = nixosSystem' {
2022-06-21 22:00:17 +02:00
modules = [
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
caveman.nixosModule
./hosts/caveman
2022-06-21 22:00:17 +02:00
];
};
2022-12-26 22:46:35 +01:00
dacbert = nixosSystem' {
2021-09-23 19:34:09 +02:00
modules = [
2022-12-26 22:46:35 +01:00
nixos-hardware.nixosModules.raspberry-pi-4
self.nixosModules.rpi-netboot
./hosts/dacbert
2021-09-23 19:34:09 +02:00
];
2022-12-26 22:46:35 +01:00
system = "aarch64-linux";
2021-02-22 13:21:31 +01:00
};
2020-08-04 17:15:07 +02:00
2022-12-26 22:46:35 +01:00
dn42 = nixosSystem' {
2021-09-23 03:32:17 +02:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/dn42
2021-09-23 03:32:17 +02:00
];
};
2024-01-28 00:18:40 +01:00
knot = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/knot
];
};
2023-01-29 22:45:13 +01:00
drone = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/drone
];
};
2022-12-26 22:46:35 +01:00
freifunk = nixosSystem' {
2021-09-27 22:19:24 +02:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/freifunk
2021-09-27 22:19:24 +02:00
];
};
2022-12-26 22:46:35 +01:00
ftp = nixosSystem' {
2022-03-13 23:49:12 +01:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/ftp
2022-03-13 23:49:12 +01:00
];
2022-09-26 22:45:34 +02:00
};
2022-12-26 22:46:35 +01:00
gitea = nixosSystem' {
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/gitea
];
2022-03-13 23:49:12 +01:00
};
2022-12-26 22:46:35 +01:00
glotzbert = nixosSystem' {
2021-03-06 01:13:27 +01:00
modules = [
2023-05-20 02:45:56 +02:00
nixos-hardware.nixosModules.common-cpu-intel # also includes iGPU
2023-05-20 02:03:07 +02:00
./hosts/glotzbert
2021-03-06 01:13:27 +01:00
];
};
2022-12-26 22:46:35 +01:00
gnunet = nixosSystem' {
2021-03-06 02:57:35 +01:00
modules = [
self.nixosModules.cluster-options
2023-11-11 03:05:22 +01:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/gnunet
2021-03-06 02:57:35 +01:00
];
};
2022-12-26 22:46:35 +01:00
grafana = nixosSystem' {
2021-03-11 15:59:00 +01:00
modules = [
2022-06-16 23:17:10 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/grafana
2021-03-11 15:59:00 +01:00
];
};
2022-12-26 22:46:35 +01:00
hedgedoc = nixosSystem' {
2021-03-11 16:40:39 +01:00
modules = [
2022-06-18 02:09:33 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/hedgedoc
2021-03-11 16:40:39 +01:00
];
};
2023-04-07 01:42:21 +02:00
home-assistant = nixosSystem' {
nixos = inputs.nixos-unstable;
2023-04-07 01:42:21 +02:00
modules = [
self.nixosModules.microvm
./hosts/home-assistant
];
};
2021-03-12 21:45:12 +01:00
hydra = nixosSystem' {
modules = [
self.nixosModules.cluster
2023-11-13 00:13:40 +01:00
# skyflake.nixosModules.default
2022-05-05 22:34:51 +02:00
./hosts/hydra
2021-03-12 21:45:12 +01:00
];
};
2023-05-20 01:53:53 +02:00
iso = nixosSystem' {
modules = [
({ modulesPath, ... }: {
imports = lib.singleton "${modulesPath}/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix";
})
];
};
iso-minimal = nixosSystem' {
modules = [
({ modulesPath, ... }: {
imports = lib.singleton "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix";
})
];
};
2022-12-26 22:46:35 +01:00
jabber = nixosSystem' {
2021-06-23 21:59:10 +02:00
modules = [
2022-06-16 22:23:36 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/jabber
2021-06-23 21:59:10 +02:00
];
};
2022-12-26 22:46:35 +01:00
mailtngbert = nixosSystem' {
modules = [
2022-06-16 23:48:49 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/mailtngbert
];
};
2023-03-24 01:56:38 +01:00
matrix = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/matrix
];
};
2022-12-26 22:46:35 +01:00
mastodon = nixosSystem' {
2021-10-06 02:55:30 +02:00
modules = [
2022-06-18 02:42:41 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/mastodon
2021-10-06 02:55:30 +02:00
];
};
2022-12-26 22:46:35 +01:00
matemat = nixosSystem' {
2021-10-07 23:00:50 +02:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/matemat
yammat.nixosModule
2021-10-07 23:00:50 +02:00
];
};
2022-12-26 22:46:35 +01:00
mediawiki = nixosSystem' {
2021-10-15 02:07:50 +02:00
modules = [
2022-06-18 02:43:11 +02:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/mediawiki
2021-10-15 02:07:50 +02:00
];
};
2023-09-12 21:18:36 +02:00
mobilizon = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/mobilizon
];
};
2021-10-18 03:46:25 +02:00
2022-12-26 22:46:35 +01:00
mucbot = nixosSystem' {
2021-12-24 03:18:20 +01:00
modules = [
2022-12-26 22:46:35 +01:00
"${tigger}/module.nix"
2022-12-27 02:54:01 +01:00
{
# TODO: migrate to sops
nixpkgs.overlays = [ secrets.overlays.mucbot ];
}
2022-12-26 22:46:35 +01:00
./hosts/mucbot
self.nixosModules.cluster-options
2023-11-10 23:49:10 +01:00
self.nixosModules.microvm
2021-12-24 03:18:20 +01:00
];
};
2022-12-26 22:46:35 +01:00
network-homepage = nixosSystem' {
2022-11-24 18:48:34 +01:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/network-homepage
2022-11-24 18:48:34 +01:00
];
};
2022-12-26 22:46:35 +01:00
nfsroot = nixosSystem' {
2022-06-18 01:07:43 +02:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/nfsroot
{
_module.args.tftproots = nixos.lib.filterAttrs (name: _:
builtins.match ".+-tftproot" name != null
) self.packages.x86_64-linux;
}
2022-06-18 01:07:43 +02:00
];
};
2022-12-26 22:46:35 +01:00
nncp = nixosSystem' {
2022-05-14 20:33:56 +02:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
./hosts/nncp
2022-05-14 20:33:56 +02:00
];
};
2022-05-28 00:12:18 +02:00
oparl = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/oparl
{
_module.args = { inherit oparl-scraper; };
}
2022-05-28 00:12:18 +02:00
];
};
2022-12-26 22:46:35 +01:00
owncast = nixosSystem' {
2022-06-01 20:46:47 +02:00
modules = [
self.nixosModules.cluster-options
2023-11-11 04:24:58 +01:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/owncast
2022-06-01 20:46:47 +02:00
];
};
2023-04-29 23:26:10 +02:00
pipebert = nixosSystem' {
modules = [
./hosts/pipebert
];
};
2023-12-16 18:15:28 +01:00
pretalx = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/pretalx
];
};
2022-12-26 22:46:35 +01:00
prometheus = nixosSystem' {
2022-09-05 22:17:11 +02:00
modules = [
2023-01-03 00:20:16 +01:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
alert2muc.nixosModules.default
./hosts/prometheus
2022-09-05 22:17:11 +02:00
];
};
2022-12-26 22:46:35 +01:00
pulsebert = nixosSystem' {
2022-06-07 20:15:09 +02:00
modules = [
2022-12-26 22:46:35 +01:00
./hosts/pulsebert
# build: outputs.nixosConfigurations.pulsebert.config.system.build.sdImage
# run: unzstd -cd result/sd-image/nixos-sd-image-*-aarch64-linux.img.zst | pv -br | sudo dd bs=4M of=/dev/sdX
"${inputs.nixos}/nixos/modules/installer/sd-card/sd-image-aarch64-new-kernel.nix"
{
2022-12-26 22:46:35 +01:00
nixpkgs = {
hostPlatform = "aarch64-linux";
# buildPlatform = "x86_64-linux";
};
}
];
2022-06-07 20:15:09 +02:00
};
2022-12-26 22:46:35 +01:00
public-access-proxy = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/public-access-proxy
];
};
radiobert = nixosSystem' {
modules = [
./hosts/radiobert
2023-04-29 23:31:28 +02:00
{
nixpkgs.overlays = [ heliwatch.overlay ];
}
2022-12-26 22:46:35 +01:00
];
system = "aarch64-linux";
};
2022-06-08 22:55:35 +02:00
riscbert = nixosSystem' {
modules = [
nixos-hardware.nixosModules.starfive-visionfive-v1
2022-06-08 22:55:35 +02:00
./hosts/riscbert
2022-10-13 20:03:37 +02:00
{
nixpkgs.crossSystem = {
config = "riscv64-unknown-linux-gnu";
system = "riscv64-linux";
};
}
2022-06-08 22:55:35 +02:00
];
2022-09-05 04:18:00 +02:00
system = "x86_64-linux";
2022-06-08 22:55:35 +02:00
};
2022-12-26 22:46:35 +01:00
rpi-netboot = nixosSystem' {
2022-06-23 18:38:42 +02:00
modules = [
2022-12-26 22:46:35 +01:00
nixos-hardware.nixosModules.raspberry-pi-4
self.nixosModules.rpi-netboot
./hosts/rpi-netboot
2022-06-23 18:38:42 +02:00
];
2022-12-26 22:46:35 +01:00
system = "aarch64-linux";
2022-06-23 18:38:42 +02:00
};
2022-12-26 22:46:35 +01:00
scrape = nixosSystem' {
2022-09-15 20:32:50 +02:00
modules = [
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/scrape
{
_module.args = { inherit scrapers; };
2022-12-27 02:54:01 +01:00
# TODO: migrate to sops
nixpkgs.overlays = [ secrets.overlays.scrape ];
2022-12-26 22:46:35 +01:00
}
2022-09-15 20:32:50 +02:00
];
};
2022-09-19 23:57:54 +02:00
2022-12-26 22:46:35 +01:00
sdrweb = nixosSystem' {
2022-09-19 23:57:54 +02:00
modules = [
2023-11-11 01:23:43 +01:00
./hosts/sdrweb
2022-12-27 02:54:01 +01:00
{
# TODO: migrate to sops
nixpkgs.overlays = [ secrets.overlays.mucbot ];
}
2022-12-26 22:46:35 +01:00
heliwatch.nixosModules.heliwatch
2023-11-11 01:23:43 +01:00
self.nixosModules.microvm
self.nixosModules.cluster-options
2022-09-19 23:57:54 +02:00
];
};
2022-10-22 21:38:12 +02:00
2022-12-26 22:46:35 +01:00
server8 = nixosSystem' {
2022-10-22 21:38:12 +02:00
modules = [
2022-12-26 22:46:35 +01:00
./hosts/server8
2023-11-13 02:35:52 +01:00
self.nixosModules.cluster-network
self.nixosModules.cluster
2023-11-13 00:13:40 +01:00
# skyflake.nixosModules.default
2022-12-26 22:46:35 +01:00
{ _module.args = { inherit self; }; }
2022-10-22 21:38:12 +02:00
];
};
2022-12-26 22:46:35 +01:00
server9 = nixosSystem' {
2022-11-03 20:49:26 +01:00
modules = [
2022-12-26 22:46:35 +01:00
./hosts/server9
self.nixosModules.microvm-host
2023-11-13 02:35:52 +01:00
self.nixosModules.cluster-network
self.nixosModules.cluster
2023-11-13 00:13:40 +01:00
# skyflake.nixosModules.default
2022-12-26 22:46:35 +01:00
{ _module.args = { inherit self; }; }
2022-11-03 20:49:26 +01:00
];
};
2022-12-26 22:46:35 +01:00
server10 = nixosSystem' {
2022-11-21 19:39:38 +01:00
modules = [
2022-12-26 22:46:35 +01:00
./hosts/server10
self.nixosModules.microvm-host
2023-11-13 02:35:52 +01:00
self.nixosModules.cluster-network
self.nixosModules.cluster
2023-11-13 00:13:40 +01:00
# skyflake.nixosModules.default
2022-12-26 22:46:35 +01:00
{ _module.args = { inherit self; }; }
2022-11-21 19:39:38 +01:00
];
};
2022-11-27 01:14:30 +01:00
2022-12-26 22:46:35 +01:00
spaceapi = nixosSystem' {
2022-11-27 01:14:30 +01:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
"${spacemsg}/spaceapi/module.nix"
./hosts/spaceapi
2022-11-27 01:14:30 +01:00
];
};
2022-11-30 00:34:54 +01:00
2022-12-26 22:46:35 +01:00
sshlog = nixosSystem' {
2022-11-30 00:34:54 +01:00
modules = [
self.nixosModules.cluster-options
2023-11-11 02:34:12 +01:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
sshlogd.nixosModule
2023-11-11 04:25:36 +01:00
./hosts/sshlog
2022-11-30 00:34:54 +01:00
];
};
2022-12-19 20:57:43 +01:00
2022-12-26 22:46:35 +01:00
stream = nixosSystem' {
2022-12-19 20:57:43 +01:00
modules = [
self.nixosModules.cluster-options
2023-11-11 04:23:03 +01:00
self.nixosModules.microvm
2022-12-26 22:46:35 +01:00
./hosts/stream
2022-12-19 20:57:43 +01:00
];
};
2022-12-20 13:43:27 +01:00
2022-12-26 22:46:35 +01:00
ticker = nixosSystem' {
2022-12-20 13:43:27 +01:00
modules = [
2022-12-26 22:46:35 +01:00
self.nixosModules.microvm
2022-12-20 13:43:27 +01:00
ticker.nixosModules.ticker
2022-12-26 22:46:35 +01:00
./hosts/ticker
2022-12-20 13:43:27 +01:00
];
};
2023-12-16 18:15:28 +01:00
vaultwarden = nixosSystem' {
modules = [
self.nixosModules.microvm
./hosts/vaultwarden
];
};
2020-08-04 17:15:07 +02:00
};
2022-01-13 18:38:36 +01:00
nixosModules = {
2022-01-18 21:44:17 +01:00
c3d2 = {
2022-01-16 00:09:17 +01:00
imports = [
2024-01-06 17:23:46 +01:00
# adds config.system.build.isoImage which can be used to build an iso for any system
# which is very useful to get its networking configuration
# ({ config, modulesPath, ... }: {
# imports = lib.singleton "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix";
# isoImage.edition = lib.mkForce config.networking.hostName;
# })
2024-01-06 17:23:46 +01:00
2023-05-20 04:23:56 +02:00
c3d2-user-module.nixosModule
disko.nixosModules.disko
nixos-modules.nixosModule
sops-nix.nixosModules.default
2023-05-20 04:23:56 +02:00
./config
2022-10-31 20:30:25 +01:00
./modules/audio-server.nix
./modules/autoupdate.nix
./modules/backup.nix
2023-05-19 21:38:16 +02:00
./modules/baremetal.nix
2022-01-16 00:09:17 +01:00
./modules/c3d2.nix
2023-05-08 23:32:47 +02:00
./modules/disko.nix
2023-05-20 04:23:56 +02:00
./modules/pi-sensors.nix
2023-01-07 23:36:25 +01:00
./modules/plume.nix
2022-10-31 20:30:25 +01:00
./modules/stats.nix
2022-01-16 00:09:17 +01:00
];
2022-09-28 21:10:09 +02:00
c3d2.nncp.neigh = import ./modules/nncp-relays.nix;
2022-01-16 00:09:17 +01:00
};
cluster = ./modules/cluster;
cluster-network = ./modules/cluster/network.nix;
2023-05-20 02:04:03 +02:00
cluster-options.imports = [
deployment.nixosModules.deployment-options
./modules/microvm-defaults.nix
2023-05-20 02:04:03 +02:00
];
microvm.imports = [
microvm.nixosModules.microvm
./modules/microvm-defaults.nix
./modules/microvm.nix
];
microvm-host.imports = [
2024-01-06 16:21:54 +01:00
microvm.nixosModules.host
./modules/microvm-host.nix
];
rpi-netboot = ./modules/rpi-netboot.nix;
2022-01-13 18:38:36 +01:00
};
2021-11-10 00:33:29 +01:00
# `nix develop`
devShell = lib.mapAttrs (system: sopsPkgs:
2022-07-31 18:08:28 +02:00
with nixos.legacyPackages.${system};
mkShell {
sopsPGPKeyDirs = [ "./keys" ];
nativeBuildInputs = [
2023-05-16 23:16:20 +02:00
apacheHttpd
sopsPkgs.sops-import-keys-hook
];
}
) sops-nix.packages;
hydraJobs =
lib.mapAttrs (_: nixos.lib.hydraJob) (
2022-12-04 20:53:20 +01:00
let
2023-05-20 01:53:53 +02:00
getBuildEntryPoint = name: nixosSystem:
let
2023-05-20 01:53:53 +02:00
cfg = if (lib.hasPrefix "iso" name) then
nixosSystem.config.system.build.isoImage
else
nixosSystem.config.microvm.declaredRunner or nixosSystem.config.system.build.toplevel;
in
if nixosSystem.config.nixpkgs.system == "aarch64-linux" then
# increase timeout for chromium
lib.recursiveUpdate cfg { meta.timeout = 24 * 60 * 60; }
else
cfg;
2022-12-04 20:53:20 +01:00
in
lib.mapAttrs getBuildEntryPoint self.nixosConfigurations
2023-05-20 00:38:55 +02:00
# NOTE: left here to have the code as reference if we need something like in the future, eg. on a stable update
2023-06-05 21:10:44 +02:00
# // lib.mapAttrs' (hostname: nixosSystem: let
# hostname' = hostname + "-23-05";
# in lib.nameValuePair
# hostname' # job display name
# (getBuildEntryPoint hostname' (nixosSystem' (nixosSystem.args // (with nixosSystem.args; {
# modules = modules ++ [
# # {
# # simd.enable = lib.mkForce true;
# # }
# ];
# nixos = inputs.nixos-23-05;
# }))))
# ) self.nixosConfigurations
// nixos.lib.filterAttrs (name: attr:
2022-12-04 11:23:44 +01:00
(builtins.match ".+-tftproot" name != null && lib.isDerivation attr)
) self.packages.aarch64-linux
);
2021-02-22 12:31:58 +01:00
};
}