nix-config/flake.nix

150 lines
5.2 KiB
Nix
Raw Normal View History

2022-04-23 03:01:58 +02:00
{
2022-04-23 13:41:36 +02:00
inputs = {
2022-04-23 03:01:58 +02:00
nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
naersk = {
url = github:nix-community/naersk;
inputs.nixpkgs.follows = "nixpkgs";
};
2022-04-23 13:41:36 +02:00
2022-04-28 14:43:40 +02:00
radio-conf = {
url = github:dump-dvb/radio-conf;
};
2022-04-23 03:01:58 +02:00
2022-04-28 14:43:40 +02:00
data-accumulator = {
url = github:dump-dvb/data-accumulator;
inputs.nixpkgs.follows = "nixpkgs";
2022-04-28 20:56:53 +02:00
inputs.naersk.follows = "naersk";
inputs.stops.follows = "stops";
2022-04-28 14:43:40 +02:00
};
decode-server = {
url = github:dump-dvb/decode-server;
inputs.stops.follows = "stops";
2022-04-28 14:43:40 +02:00
};
2022-05-01 13:52:41 +02:00
dvb-api = {
url = github:dump-dvb/dvb-api;
2022-05-09 16:50:23 +02:00
inputs.nixpkgs.follows = "nixpkgs";
inputs.naersk.follows = "naersk";
2022-05-01 13:52:41 +02:00
};
2022-05-02 12:38:16 +02:00
stops = {
url = github:dump-dvb/stop-names;
flake = false;
};
windshield = {
url = github:dump-dvb/windshield;
2022-05-09 16:50:23 +02:00
inputs.nixpkgs.follows = "nixpkgs";
};
docs = {
url = github:dump-dvb/documentation;
inputs.nixpkgs.follows = "nixpkgs";
2022-05-02 12:38:16 +02:00
};
2022-04-28 14:43:40 +02:00
};
2022-04-23 13:41:36 +02:00
2022-05-09 16:50:23 +02:00
outputs = { self, nixpkgs, naersk, radio-conf, data-accumulator, decode-server, dvb-api, stops, windshield, docs, ... }@inputs:
2022-04-30 23:41:24 +02:00
let
generate_system = (number:
{
"traffic-stop-box-${toString number}" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/traffic-stop-box/configuration.nix
2022-05-07 23:11:09 +02:00
./hosts/traffic-stop-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
2022-04-30 23:41:24 +02:00
./modules/gnuradio.nix
./modules/radio_wireguard_client.nix
./modules/numbering.nix
{
nixpkgs.overlays = [ radio-conf.overlay."x86_64-linux" decode-server.overlay."x86_64-linux" ];
dvb-dump.systemNumber = number;
2022-05-02 12:38:16 +02:00
dvb-dump.stopsJson = "${stops}/stops.json";
2022-04-30 23:41:24 +02:00
}
];
};
}
2022-04-28 14:43:40 +02:00
);
2022-04-30 23:41:24 +02:00
# increment this number if you want to add a new system
2022-05-05 19:11:42 +02:00
numberOfSystems = 10;
2022-04-30 23:41:24 +02:00
# list of accending system numbers
2022-05-05 19:11:42 +02:00
#id_list = ((num: if num <= 0 then [ num ] else [ num ] ++ (id_list (num - 1))) (numberOfSystems - 1));
id_list = [ 0 1 2 3 4 5 6 7 8 9 10 ];
2022-04-30 23:41:24 +02:00
# list of nixos systems
list_of_systems = builtins.map generate_system id_list;
# attribute set of all traffic stop boxes
stop_boxes = nixpkgs.lib.foldr (x: y: nixpkgs.lib.mergeAttrs x y) { } list_of_systems;
in
{
2022-04-28 14:43:40 +02:00
defaultPackage."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
packages."x86_64-linux".traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
packages."x86_64-linux".data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
2022-05-06 21:56:41 +02:00
packages."x86_64-linux".mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
packages."x86_64-linux".mobile-box-iso = self.nixosConfigurations.mobile-box.config.system.build.isoImage;
2022-04-28 14:43:40 +02:00
2022-05-06 20:26:49 +02:00
nixosConfigurations = stop_boxes // {
2022-05-09 16:50:23 +02:00
"mobile-box" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-base.nix"
./hosts/mobile-box/configuration.nix
./hosts/mobile-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
./modules/numbering.nix
./modules/mobile-box.nix
{
nixpkgs.overlays = [
radio-conf.overlay."x86_64-linux"
decode-server.overlay."x86_64-linux"
data-accumulator.overlay."x86_64-linux"
];
dvb-dump.stopsJson = "${stops}/stops.json";
dvb-dump.systemNumber = 130;
}
];
};
} //
2022-04-30 23:41:24 +02:00
{
data-hoarder = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/data-hoarder/configuration.nix
./modules/data-accumulator.nix
./modules/nginx.nix
./modules/wireguard_server.nix
2022-05-01 13:52:41 +02:00
./modules/public_api.nix
2022-05-02 12:38:16 +02:00
./modules/map.nix
2022-05-06 20:26:49 +02:00
./modules/file_sharing.nix
2022-05-02 12:38:16 +02:00
./modules/numbering.nix
2022-05-12 20:04:06 +02:00
./modules/grafana.nix
./modules/website.nix
2022-04-30 23:41:24 +02:00
{
2022-05-09 16:50:23 +02:00
nixpkgs.overlays = [
data-accumulator.overlay."x86_64-linux"
dvb-api.overlay."x86_64-linux"
windshield.overlay."x86_64-linux"
docs.overlay."x86_64-linux"
];
2022-05-02 12:38:16 +02:00
dvb-dump.stopsJson = "${stops}/stops.json";
2022-05-12 20:04:06 +02:00
dvb-dump.graphJson = "${stops}/graph.json";
2022-04-30 23:41:24 +02:00
}
];
};
2022-04-23 23:49:00 +02:00
};
2022-04-29 11:52:57 +02:00
2022-04-30 23:41:24 +02:00
hydraJobs = {
2022-04-29 11:52:57 +02:00
data-hoarder."x86_64-linux" = self.nixosConfigurations.data-hoarder.config.system.build.toplevel;
2022-04-29 22:15:32 +02:00
traffic-stop-box-0."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.toplevel;
2022-05-08 14:12:31 +02:00
mobile-box."x86_64-linux" = self.nixosConfigurations.mobile-box.config.system.build.toplevel;
2022-04-29 11:52:57 +02:00
};
2022-04-23 03:01:58 +02:00
};
}
2022-04-29 11:52:57 +02:00