2022-04-23 03:01:58 +02:00
|
|
|
{
|
2022-04-23 13:41:36 +02:00
|
|
|
inputs = {
|
2023-03-04 23:59:22 +01:00
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
|
|
|
|
|
|
|
|
# naersk and flake utils are not used by this flake directly, but needed
|
|
|
|
# for the follows in all the other ones.
|
|
|
|
naersk = {
|
|
|
|
url = "github:nix-community/naersk";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
2022-05-14 22:47:54 +02:00
|
|
|
microvm = {
|
2023-02-19 22:28:44 +01:00
|
|
|
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-05-31 18:56:43 +02:00
|
|
|
sops-nix = {
|
2023-02-19 22:28:44 +01:00
|
|
|
url = "github:Mic92/sops-nix";
|
2022-05-31 18:56:43 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-10-04 20:31:27 +02:00
|
|
|
|
2023-03-05 14:07:31 +01:00
|
|
|
## TLMS stuff below
|
2022-10-04 20:31:27 +02:00
|
|
|
documentation-src = {
|
2023-02-19 22:28:44 +01:00
|
|
|
url = "github:tlm-solutions/documentation";
|
2022-10-04 20:31:27 +02:00
|
|
|
flake = false;
|
|
|
|
};
|
2023-02-15 11:17:36 +01:00
|
|
|
|
|
|
|
trekkie = {
|
|
|
|
url = "github:tlm-solutions/trekkie";
|
2023-03-04 23:59:22 +01:00
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
naersk.follows = "naersk";
|
2023-03-05 14:07:31 +01:00
|
|
|
tlms-rs.follows = "tlms-rs";
|
2023-03-04 23:59:22 +01:00
|
|
|
};
|
2023-02-15 11:17:36 +01:00
|
|
|
};
|
2023-02-19 22:28:44 +01:00
|
|
|
|
|
|
|
datacare = {
|
|
|
|
url = "github:tlm-solutions/datacare";
|
2023-03-04 23:59:22 +01:00
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
naersk.follows = "naersk";
|
2023-03-05 14:07:31 +01:00
|
|
|
tlms-rs.follows = "tlms-rs";
|
2023-03-04 23:59:22 +01:00
|
|
|
};
|
2023-02-19 22:28:44 +01:00
|
|
|
};
|
2023-02-24 14:25:30 +01:00
|
|
|
|
|
|
|
kindergarten = {
|
|
|
|
url = "github:tlm-solutions/kindergarten";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2023-03-05 00:00:05 +01:00
|
|
|
|
|
|
|
telegram-decoder = {
|
|
|
|
url = "github:tlm-solutions/telegram-decoder";
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
naersk.follows = "naersk";
|
|
|
|
};
|
|
|
|
};
|
2023-03-05 14:07:31 +01:00
|
|
|
|
|
|
|
gnuradio-decoder = {
|
|
|
|
url = "github:tlm-solutions/gnuradio-decoder";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
data-accumulator = {
|
|
|
|
url = "github:tlm-solutions/data-accumulator";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
inputs.naersk.follows = "naersk";
|
|
|
|
};
|
|
|
|
|
|
|
|
state-api = {
|
|
|
|
url = "github:tlm-solutions/state-api";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
inputs.naersk.follows = "naersk";
|
|
|
|
};
|
|
|
|
|
|
|
|
funnel = {
|
|
|
|
url = "github:tlm-solutions/funnel";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
windshield = {
|
|
|
|
url = "github:tlm-solutions/windshield";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
wartrammer = {
|
|
|
|
url = "github:tlm-solutions/wartrammer-40k";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
inputs.naersk.follows = "naersk";
|
|
|
|
};
|
|
|
|
|
|
|
|
tlms-rs = {
|
|
|
|
url = "github:tlm-solutions/tlms.rs";
|
|
|
|
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
|
2023-03-05 14:07:31 +01:00
|
|
|
, data-accumulator
|
2023-02-19 22:28:44 +01:00
|
|
|
, datacare
|
2023-03-05 14:07:31 +01:00
|
|
|
, documentation-src
|
|
|
|
, funnel
|
|
|
|
, gnuradio-decoder
|
|
|
|
, kindergarten
|
2022-07-06 20:58:15 +02:00
|
|
|
, microvm
|
2022-07-06 22:12:28 +02:00
|
|
|
, nixpkgs
|
2022-07-06 20:58:15 +02:00
|
|
|
, sops-nix
|
2023-03-05 14:07:31 +01:00
|
|
|
, state-api
|
|
|
|
, telegram-decoder
|
2023-02-15 11:17:36 +01:00
|
|
|
, trekkie
|
2023-03-05 14:07:31 +01:00
|
|
|
, wartrammer
|
|
|
|
, windshield
|
2022-07-06 20:58:15 +02:00
|
|
|
, ...
|
|
|
|
}:
|
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-10-02 20:49:31 +02:00
|
|
|
|
2022-05-28 21:24:15 +02:00
|
|
|
data-hoarder-modules = [
|
2022-07-07 15:55:50 +02:00
|
|
|
./modules/data-hoarder
|
2022-12-30 18:29:13 +01:00
|
|
|
./modules/TLMS
|
2023-03-05 14:07:31 +01:00
|
|
|
data-accumulator.nixosModules.default
|
2023-02-19 22:28:44 +01:00
|
|
|
datacare.nixosModules.default
|
2023-03-05 14:07:31 +01:00
|
|
|
funnel.nixosModules.default
|
|
|
|
sops-nix.nixosModules.sops
|
|
|
|
state-api.nixosModules.default
|
2023-02-15 11:17:36 +01:00
|
|
|
trekkie.nixosModules.default
|
2022-05-28 21:24:15 +02:00
|
|
|
{
|
|
|
|
nixpkgs.overlays = [
|
2023-02-19 22:28:44 +01:00
|
|
|
datacare.overlays.default
|
2023-02-24 14:25:30 +01:00
|
|
|
kindergarten.overlays.default
|
2023-02-15 11:17:36 +01:00
|
|
|
trekkie.overlays.default
|
2023-03-05 14:07:31 +01:00
|
|
|
state-api.overlays.default
|
|
|
|
funnel.overlays.default
|
|
|
|
data-accumulator.overlays.default
|
|
|
|
windshield.overlays.default
|
2022-10-02 22:14:34 +02:00
|
|
|
(final: prev: {
|
2022-10-04 20:31:27 +02:00
|
|
|
inherit documentation-src;
|
2022-09-03 22:14:43 +02:00
|
|
|
options-docs = (pkgs.nixosOptionsDoc {
|
2022-12-30 18:29:13 +01:00
|
|
|
options = self.nixosConfigurations.data-hoarder.options.TLMS;
|
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 = [
|
2023-03-05 14:07:31 +01:00
|
|
|
./modules/TLMS
|
|
|
|
telegram-decoder.nixosModules.default
|
|
|
|
gnuradio-decoder.nixosModules.default
|
2022-09-27 01:01:20 +02:00
|
|
|
{
|
|
|
|
nixpkgs.overlays = [
|
2023-03-05 14:07:31 +01:00
|
|
|
telegram-decoder.overlays.default
|
|
|
|
gnuradio-decoder.overlays.default
|
2022-09-27 01:01:20 +02:00
|
|
|
];
|
|
|
|
}
|
2022-09-23 17:26:27 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
# function that generates a system with the given number
|
2022-09-29 19:46:23 +02:00
|
|
|
generate_system = (id: arch:
|
2022-09-23 17:26:27 +02:00
|
|
|
{
|
|
|
|
"traffic-stop-box-${toString id}" = nixpkgs.lib.nixosSystem {
|
|
|
|
system = arch;
|
|
|
|
specialArgs = inputs;
|
|
|
|
modules = [
|
2022-09-29 19:46:23 +02:00
|
|
|
# box-specific config
|
2022-10-02 21:39:37 +02:00
|
|
|
./hosts/traffic-stop-box/${toString id}
|
2022-09-29 19:46:23 +02:00
|
|
|
|
|
|
|
# default modules
|
|
|
|
sops-nix.nixosModules.sops
|
|
|
|
./modules/traffic-stop-box
|
2022-12-30 18:29:13 +01:00
|
|
|
./modules/TLMS
|
2022-09-23 17:26:27 +02:00
|
|
|
{
|
2022-12-30 18:29:13 +01:00
|
|
|
deployment-TLMS.systemNumber = id;
|
2022-04-30 23:41:24 +02:00
|
|
|
}
|
2022-09-29 19:46:23 +02:00
|
|
|
] ++ 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";
|
|
|
|
}
|
2022-08-24 18:48:33 +02:00
|
|
|
{
|
|
|
|
# Zentralwerk
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 1;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
}
|
2022-08-24 18:48:33 +02:00
|
|
|
{
|
|
|
|
# Chemnitz
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 2;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
}
|
|
|
|
{
|
2022-09-23 17:26:27 +02:00
|
|
|
# unused
|
2022-08-22 18:51:00 +02:00
|
|
|
id = 3;
|
|
|
|
arch = "aarch64-linux";
|
|
|
|
}
|
2022-08-30 16:55:40 +02:00
|
|
|
{
|
|
|
|
# Wundstr. 9
|
|
|
|
id = 4;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
}
|
2022-09-22 17:12:56 +02:00
|
|
|
{
|
2022-11-22 09:37:15 +01:00
|
|
|
# Warpzone
|
2022-09-22 17:12:56 +02:00
|
|
|
id = 6;
|
|
|
|
arch = "x86_64-linux";
|
2022-09-26 00:55:23 +02:00
|
|
|
}
|
2022-09-26 21:21:44 +02:00
|
|
|
{
|
|
|
|
id = 7;
|
|
|
|
arch = "x86_64-linux";
|
|
|
|
}
|
2022-11-28 19:24:54 +01:00
|
|
|
{
|
|
|
|
id = 8;
|
|
|
|
arch = "aarch64-linux";
|
|
|
|
}
|
2022-11-28 21:59:29 +01:00
|
|
|
{
|
|
|
|
id = 9;
|
|
|
|
arch = "aarch64-linux";
|
|
|
|
}
|
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-09-29 19:46:23 +02:00
|
|
|
stop_boxes = nixpkgs.lib.foldl (x: y: nixpkgs.lib.mergeAttrs x (generate_system y.id y.arch)) { } id_list;
|
2022-05-14 20:47:17 +02:00
|
|
|
|
2022-05-29 01:57:24 +02:00
|
|
|
packages = {
|
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 {
|
2022-10-04 20:31:27 +02:00
|
|
|
inherit documentation-src;
|
2022-09-04 15:06:02 +02:00
|
|
|
options-docs = (pkgs.nixosOptionsDoc {
|
2022-12-30 18:29:13 +01:00
|
|
|
options = self.nixosConfigurations.data-hoarder.options.TLMS;
|
2022-09-04 15:06:02 +02:00
|
|
|
}).optionsCommonMark;
|
|
|
|
};
|
2022-10-02 20:49:31 +02:00
|
|
|
}
|
|
|
|
// (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; })
|
|
|
|
// (lib.foldl (x: y: lib.mergeAttrs x { "${y.config.system.name}-vm" = y.config.system.build.vm; }) { } (lib.attrValues self.nixosConfigurations));
|
2022-09-25 21:36:26 +02:00
|
|
|
|
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
|
|
|
|
2022-05-28 21:24:15 +02:00
|
|
|
data-hoarder = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
2023-03-05 14:07:31 +01:00
|
|
|
specialArgs = { inherit inputs self; };
|
2022-05-29 01:57:24 +02:00
|
|
|
modules = [
|
2022-07-10 21:58:02 +02:00
|
|
|
microvm.nixosModules.microvm
|
2022-10-02 21:39:37 +02:00
|
|
|
./hosts/data-hoarder
|
2022-05-29 01:57:24 +02:00
|
|
|
] ++ data-hoarder-modules;
|
2022-05-28 06:12:39 +02:00
|
|
|
};
|
2022-10-02 20:49:31 +02:00
|
|
|
|
2022-05-28 21:24:15 +02:00
|
|
|
staging-data-hoarder = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
2023-03-05 14:07:31 +01:00
|
|
|
specialArgs = { inherit inputs self; };
|
2022-05-29 01:57:24 +02:00
|
|
|
modules = [
|
2022-10-02 21:39:37 +02:00
|
|
|
./hosts/staging-data-hoarder
|
2022-05-28 21:24:15 +02:00
|
|
|
microvm.nixosModules.microvm
|
2022-05-29 01:57:24 +02:00
|
|
|
] ++ data-hoarder-modules;
|
2022-05-28 21:24:15 +02:00
|
|
|
};
|
2022-12-07 20:06:46 +01:00
|
|
|
};
|
2022-04-29 11:52:57 +02:00
|
|
|
|
2022-12-21 02:47:45 +01:00
|
|
|
nixosModules."x86_64-linux".watch-me-senpai = import ./modules/watch-me-senpai;
|
2022-12-20 14:56:16 +01:00
|
|
|
|
2022-10-02 22:14:34 +02:00
|
|
|
hydraJobs = (lib.mapAttrs (_name: value: { ${value.config.system.build.toplevel.system} = value.config.system.build.toplevel; }) self.nixosConfigurations) // {
|
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-12-07 23:30:37 +01:00
|
|
|
}
|