2022-04-23 03:01:58 +02:00
|
|
|
{
|
2022-04-23 13:41:36 +02:00
|
|
|
inputs = {
|
2022-07-06 19:59:25 +02:00
|
|
|
dump-dvb = {
|
|
|
|
url = github:dump-dvb/dump-dvb.nix;
|
2022-06-06 22:41:04 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
2022-04-23 03:01:58 +02:00
|
|
|
};
|
2022-04-23 13:41:36 +02:00
|
|
|
|
2022-05-14 22:47:54 +02:00
|
|
|
microvm = {
|
|
|
|
url = github:astro/microvm.nix;
|
2022-06-06 22:41:04 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
2022-05-14 22:47:54 +02:00
|
|
|
};
|
|
|
|
|
2022-07-06 22:12:28 +02:00
|
|
|
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
|
2022-05-31 18:56:43 +02:00
|
|
|
|
|
|
|
sops-nix = {
|
|
|
|
url = github:Mic92/sops-nix;
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-04-28 14:43:40 +02:00
|
|
|
};
|
2022-04-23 13:41:36 +02:00
|
|
|
|
2022-07-06 20:58:15 +02:00
|
|
|
outputs =
|
|
|
|
inputs@{ self
|
|
|
|
, dump-dvb
|
|
|
|
, microvm
|
2022-07-06 22:12:28 +02:00
|
|
|
, nixpkgs
|
2022-07-06 20:58:15 +02:00
|
|
|
, sops-nix
|
|
|
|
, ...
|
|
|
|
}:
|
2022-04-30 23:41:24 +02:00
|
|
|
let
|
2022-05-14 01:33:50 +02:00
|
|
|
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
|
|
|
lib = pkgs.lib;
|
2022-05-28 06:12:39 +02:00
|
|
|
|
2022-05-28 21:24:15 +02:00
|
|
|
data-hoarder-modules = [
|
|
|
|
./modules/base.nix
|
2022-07-07 15:55:50 +02:00
|
|
|
./modules/data-hoarder
|
2022-06-09 20:11:05 +02:00
|
|
|
./modules/dump-dvb
|
2022-05-31 18:56:43 +02:00
|
|
|
sops-nix.nixosModules.sops
|
2022-07-06 20:58:15 +02:00
|
|
|
dump-dvb.nixosModules.default
|
2022-05-28 21:24:15 +02:00
|
|
|
{
|
|
|
|
nixpkgs.overlays = [
|
2022-07-06 19:59:25 +02:00
|
|
|
dump-dvb.overlays.default
|
2022-09-03 22:14:43 +02:00
|
|
|
(final: pref: {
|
|
|
|
options-docs = (pkgs.nixosOptionsDoc {
|
2022-09-04 15:06:02 +02:00
|
|
|
options = self.nixosConfigurations.data-hoarder.options.dump-dvb;
|
2022-09-03 22:14:43 +02:00
|
|
|
}).optionsCommonMark;
|
|
|
|
})
|
2022-05-28 21:24:15 +02:00
|
|
|
];
|
|
|
|
}
|
|
|
|
];
|
2022-05-28 06:12:39 +02:00
|
|
|
|
2022-09-23 17:26:27 +02:00
|
|
|
stop-box-modules = [
|
2022-05-31 18:56:43 +02:00
|
|
|
sops-nix.nixosModules.sops
|
2022-07-06 20:58:15 +02:00
|
|
|
dump-dvb.nixosModules.default
|
2022-08-22 18:51:00 +02:00
|
|
|
./hosts/traffic-stop-box
|
2022-05-28 06:12:39 +02:00
|
|
|
./modules/base.nix
|
2022-06-09 20:11:05 +02:00
|
|
|
./modules/dump-dvb
|
2022-04-30 23:41:24 +02:00
|
|
|
{
|
2022-07-06 19:59:25 +02:00
|
|
|
nixpkgs.overlays = [
|
|
|
|
dump-dvb.overlays.default
|
|
|
|
];
|
2022-09-23 17:26:27 +02:00
|
|
|
}
|
|
|
|
];
|
|
|
|
|
|
|
|
# function that generates a system with the given number
|
|
|
|
generate_system = (id: arch: extraModules:
|
|
|
|
{
|
|
|
|
"traffic-stop-box-${toString id}" = nixpkgs.lib.nixosSystem {
|
|
|
|
system = arch;
|
|
|
|
specialArgs = inputs;
|
|
|
|
modules = [
|
|
|
|
{
|
2022-08-22 18:51:00 +02:00
|
|
|
dump-dvb.systemNumber = id;
|
2022-04-30 23:41:24 +02:00
|
|
|
}
|
2022-09-23 17:26:27 +02:00
|
|
|
] ++ extraModules ++ stop-box-modules;
|
2022-04-30 23:41:24 +02:00
|
|
|
};
|
|
|
|
}
|
2022-04-28 14:43:40 +02:00
|
|
|
);
|
|
|
|
|
2022-08-22 18:51:00 +02:00
|
|
|
id_list = [
|
2022-08-24 18:48:33 +02:00
|
|
|
{
|
|
|
|
# Barkhausen Bau
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 0;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
2022-08-24 18:47:03 +02:00
|
|
|
./hardware/dell-wyse-3040.nix
|
2022-09-10 15:50:09 +02:00
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-08-22 18:51:00 +02:00
|
|
|
];
|
|
|
|
}
|
2022-08-24 18:48:33 +02:00
|
|
|
{
|
|
|
|
# Zentralwerk
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 1;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
2022-08-24 18:47:03 +02:00
|
|
|
./hardware/dell-wyse-3040.nix
|
2022-09-10 15:50:09 +02:00
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-08-22 18:51:00 +02:00
|
|
|
];
|
|
|
|
}
|
2022-08-24 18:48:33 +02:00
|
|
|
{
|
|
|
|
# Chemnitz
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 2;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
2022-08-24 18:47:03 +02:00
|
|
|
./hardware/dell-wyse-3040.nix
|
2022-09-10 15:50:09 +02:00
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-08-22 18:51:00 +02:00
|
|
|
];
|
|
|
|
}
|
|
|
|
{
|
2022-09-23 17:26:27 +02:00
|
|
|
# unused
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 3;
|
|
|
|
arch = "aarch64-linux";
|
|
|
|
extraModules = [
|
2022-08-24 18:47:03 +02:00
|
|
|
./hardware/rpi-3b-4b.nix
|
2022-08-22 18:51:00 +02:00
|
|
|
];
|
|
|
|
}
|
2022-08-30 16:55:40 +02:00
|
|
|
{
|
|
|
|
# Wundstr. 9
|
|
|
|
id = 4;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
|
|
|
./hardware/dell-wyse-3040.nix
|
2022-09-10 15:50:09 +02:00
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-09-10 19:26:10 +02:00
|
|
|
{
|
|
|
|
|
|
|
|
networking = nixpkgs.lib.mkForce {
|
|
|
|
useDHCP = false;
|
|
|
|
defaultGateway = "141.30.30.129";
|
|
|
|
nameservers = [ "141.30.1.1" ];
|
|
|
|
interfaces.enp1s0 = {
|
|
|
|
useDHCP = false;
|
|
|
|
ipv4.addresses = [
|
|
|
|
{
|
|
|
|
address = "141.30.30.149";
|
|
|
|
prefixLength = 25;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
2022-08-30 16:55:40 +02:00
|
|
|
];
|
|
|
|
}
|
2022-09-22 17:12:56 +02:00
|
|
|
{
|
|
|
|
id = 6;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
|
|
|
./hardware/dell-wyse-3040.nix
|
2022-09-26 01:36:05 +02:00
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-09-27 00:17:11 +02:00
|
|
|
{
|
2022-09-27 00:28:30 +02:00
|
|
|
users.users.root.openssh.authorizedKeys.keys = [
|
|
|
|
"sk-ssh-ed25519@openssh.com aaaagnnrlxnzac1lzdi1nte5qg9wzw5zc2guy29taaaaili3ylty7fwvohtwx8511v+gbtlzzmuv505fi1pj53v6aaaabhnzado="
|
|
|
|
"sk-ssh-ed25519@openssh.com aaaagnnrlxnzac1lzdi1nte5qg9wzw5zc2guy29taaaaipzbd00cbfpxzuc8eb6sljaafnf1hgs6vci1rzcncyocaaaabhnzado="
|
2022-09-27 00:17:11 +02:00
|
|
|
];
|
|
|
|
}
|
2022-09-26 00:55:23 +02:00
|
|
|
];
|
|
|
|
}
|
2022-09-26 21:21:44 +02:00
|
|
|
{
|
|
|
|
id = 7;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
extraModules = [
|
|
|
|
./hardware/dell-wyse-3040.nix
|
|
|
|
dump-dvb.nixosModules.disk-module
|
2022-09-27 00:17:11 +02:00
|
|
|
{
|
2022-09-27 00:28:30 +02:00
|
|
|
users.users.root.openssh.authorizedKeys.keys = [
|
|
|
|
"sk-ssh-ed25519@openssh.com aaaagnnrlxnzac1lzdi1nte5qg9wzw5zc2guy29taaaaili3ylty7fwvohtwx8511v+gbtlzzmuv505fi1pj53v6aaaabhnzado="
|
|
|
|
"sk-ssh-ed25519@openssh.com aaaagnnrlxnzac1lzdi1nte5qg9wzw5zc2guy29taaaaipzbd00cbfpxzuc8eb6sljaafnf1hgs6vci1rzcncyocaaaabhnzado="
|
2022-09-27 00:17:11 +02:00
|
|
|
];
|
|
|
|
}
|
2022-09-26 21:21:44 +02:00
|
|
|
];
|
|
|
|
}
|
2022-08-22 18:51:00 +02:00
|
|
|
];
|
2022-05-30 20:50:18 +02:00
|
|
|
|
2022-04-30 23:41:24 +02:00
|
|
|
# attribute set of all traffic stop boxes
|
2022-08-24 15:26:19 +02:00
|
|
|
stop_boxes = nixpkgs.lib.foldl (x: y: nixpkgs.lib.mergeAttrs x (generate_system y.id y.arch y.extraModules)) { } id_list;
|
2022-05-14 20:47:17 +02:00
|
|
|
|
2022-05-29 01:57:24 +02:00
|
|
|
packages = {
|
2022-06-26 00:01:56 +02:00
|
|
|
default = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
2022-05-28 21:24:15 +02:00
|
|
|
traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
2022-06-05 19:09:35 +02:00
|
|
|
staging-data-hoarder = self.nixosConfigurations.staging-data-hoarder.config.system.build.vm;
|
2022-05-28 21:24:15 +02:00
|
|
|
data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
|
2022-09-25 21:36:26 +02:00
|
|
|
mobile-box-dresden-vm = self.nixosConfigurations.mobile-box-dresden.config.system.build.vm;
|
|
|
|
mobile-box-dresden-disk = self.nixosConfigurations.mobile-box-dresden.config.system.build.diskImage;
|
|
|
|
mobile-box-muenster-vm = self.nixosConfigurations.mobile-box-muenster.config.system.build.vm;
|
|
|
|
mobile-box-muenster-disk = self.nixosConfigurations.mobile-box-muenster.config.system.build.diskImage;
|
2022-05-28 21:24:15 +02:00
|
|
|
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
|
2022-08-22 18:51:00 +02:00
|
|
|
data-hoarder-microvm = self.nixosConfigurations.data-hoarder.config.microvm.declaredRunner;
|
2022-09-04 15:06:02 +02:00
|
|
|
docs = pkgs.callPackage ./pkgs/documentation.nix {
|
|
|
|
options-docs = (pkgs.nixosOptionsDoc {
|
|
|
|
options = self.nixosConfigurations.data-hoarder.options.dump-dvb;
|
|
|
|
}).optionsCommonMark;
|
|
|
|
};
|
2022-05-30 20:50:18 +02:00
|
|
|
} // (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; });
|
2022-09-25 21:36:26 +02:00
|
|
|
|
|
|
|
mobile-box-modules = [
|
|
|
|
dump-dvb.nixosModules.disk-module
|
|
|
|
dump-dvb.nixosModules.default
|
|
|
|
./hosts/mobile-box/configuration.nix
|
|
|
|
./hosts/mobile-box/hardware-configuration.nix
|
|
|
|
./hardware/dell-wyse-3040.nix
|
|
|
|
./modules/base.nix
|
|
|
|
./modules/user-stop-box/user.nix
|
|
|
|
./modules/dump-dvb
|
|
|
|
sops-nix.nixosModules.sops
|
|
|
|
];
|
2022-04-30 23:41:24 +02:00
|
|
|
in
|
|
|
|
{
|
2022-05-14 20:47:17 +02:00
|
|
|
packages."x86_64-linux" = packages;
|
2022-04-28 14:43:40 +02:00
|
|
|
|
2022-05-28 06:12:39 +02:00
|
|
|
nixosConfigurations = stop_boxes // {
|
2022-09-25 21:36:26 +02:00
|
|
|
mobile-box-dresden = nixpkgs.lib.nixosSystem {
|
2022-05-09 16:50:23 +02:00
|
|
|
system = "x86_64-linux";
|
2022-09-03 18:46:35 +02:00
|
|
|
specialArgs = inputs;
|
2022-09-26 01:36:05 +02:00
|
|
|
modules = mobile-box-modules ++ [
|
|
|
|
./modules/mobile-box/dresden.nix
|
2022-05-09 16:50:23 +02:00
|
|
|
{
|
2022-09-25 21:36:26 +02:00
|
|
|
dump-dvb.telegramDecoder.configFile = "${self}/configs/mobile_box_dresden.json";
|
2022-05-09 16:50:23 +02:00
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
2022-09-25 21:36:26 +02:00
|
|
|
mobile-box-muenster = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
|
|
|
specialArgs = inputs;
|
2022-09-26 01:36:05 +02:00
|
|
|
modules = mobile-box-modules ++ [
|
|
|
|
./modules/mobile-box/muenster.nix
|
2022-09-25 21:36:26 +02:00
|
|
|
{
|
|
|
|
dump-dvb.telegramDecoder.configFile = "${self}/configs/mobile_box_muenster.json";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-05-28 21:24:15 +02:00
|
|
|
data-hoarder = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
2022-09-03 18:46:35 +02:00
|
|
|
specialArgs = inputs;
|
2022-05-29 01:57:24 +02:00
|
|
|
modules = [
|
2022-07-10 21:58:02 +02:00
|
|
|
microvm.nixosModules.microvm
|
2022-05-28 21:24:15 +02:00
|
|
|
./hosts/data-hoarder/configuration.nix
|
2022-08-22 17:17:58 +02:00
|
|
|
./hosts/data-hoarder/wireguard_server.nix
|
2022-05-29 01:57:24 +02:00
|
|
|
] ++ data-hoarder-modules;
|
2022-05-28 06:12:39 +02:00
|
|
|
};
|
2022-05-28 21:24:15 +02:00
|
|
|
staging-data-hoarder = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
2022-09-03 18:46:35 +02:00
|
|
|
specialArgs = inputs;
|
2022-05-29 01:57:24 +02:00
|
|
|
modules = [
|
2022-05-28 21:24:15 +02:00
|
|
|
./hosts/staging/configuration.nix
|
|
|
|
microvm.nixosModules.microvm
|
2022-06-14 21:00:00 +02:00
|
|
|
{
|
2022-06-26 00:01:56 +02:00
|
|
|
environment.systemPackages = with pkgs; [ tcpdump ];
|
2022-06-14 21:00:00 +02:00
|
|
|
}
|
2022-05-29 01:57:24 +02:00
|
|
|
] ++ data-hoarder-modules;
|
2022-05-28 21:24:15 +02:00
|
|
|
};
|
2022-09-16 19:30:47 +02:00
|
|
|
display = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
|
|
|
specialArgs = inputs;
|
|
|
|
modules = [
|
|
|
|
dump-dvb.nixosModules.default
|
|
|
|
dump-dvb.nixosModules.disk-module
|
|
|
|
./hosts/display
|
|
|
|
./modules/base.nix
|
|
|
|
./hardware/dell-wyse-3040.nix
|
|
|
|
];
|
|
|
|
};
|
2022-05-28 21:24:15 +02:00
|
|
|
};
|
2022-04-29 11:52:57 +02:00
|
|
|
|
2022-09-04 20:28:08 +02:00
|
|
|
hydraJobs = (lib.mapAttrs (name: value: { ${value.config.system.build.toplevel.system} = value.config.system.build.toplevel; }) self.nixosConfigurations) // {
|
2022-08-24 15:01:35 +02:00
|
|
|
traffic-stop-box-3-disk."aarch64-linux" = self.nixosConfigurations.traffic-stop-box-3.config.system.build.sdImage;
|
2022-09-25 21:36:26 +02:00
|
|
|
mobile-box-disk."x86_64-linux" = self.nixosConfigurations.mobile-box-dresden.config.system.build.diskImage;
|
2022-09-16 19:30:47 +02:00
|
|
|
display-disk."x86_64-linux" = self.nixosConfigurations.display.config.system.build.diskImage;
|
2022-05-31 18:56:43 +02:00
|
|
|
sops-binaries."x86_64-linux" = sops-nix.packages."x86_64-linux".sops-install-secrets;
|
2022-04-29 11:52:57 +02:00
|
|
|
};
|
2022-08-24 18:48:33 +02:00
|
|
|
};
|
2022-04-23 03:01:58 +02:00
|
|
|
}
|