nix-config/flake.nix

258 lines
9.4 KiB
Nix
Raw Normal View History

2022-04-23 03:01:58 +02:00
{
2022-04-23 13:41:36 +02:00
inputs = {
2022-06-05 12:44:07 +02:00
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
2022-04-23 03:01:58 +02:00
naersk = {
url = github:nix-community/naersk;
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-04-28 14:43:40 +02:00
radio-conf = {
url = github:dump-dvb/radio-conf;
2022-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
2022-04-28 14:43:40 +02:00
};
2022-04-23 03:01:58 +02:00
2022-04-28 14:43:40 +02:00
data-accumulator = {
url = github:dump-dvb/data-accumulator;
2022-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
2022-04-28 14:43:40 +02:00
};
decode-server = {
url = github:dump-dvb/decode-server;
2022-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
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-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
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-05-20 00:57:48 +02:00
wartrammer = {
url = github:dump-dvb/wartrammer-40k;
2022-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
2022-05-20 00:57:48 +02:00
};
2022-05-28 23:11:31 +02:00
clicky-bunty-server = {
url = github:dump-dvb/clicky-bunty-server;
2022-06-06 22:41:04 +02:00
inputs.nixpkgs.follows = "nixpkgs";
2022-05-28 23:11:31 +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
outputs = { self, nixpkgs, naersk, microvm, radio-conf, data-accumulator, decode-server, dvb-api, stops, windshield, docs, wartrammer, clicky-bunty-server, sops-nix, ... }@inputs:
2022-04-30 23:41:24 +02:00
let
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-05-29 01:57:24 +02:00
./modules/data-hoarder/data-accumulator.nix
./modules/data-hoarder/nginx.nix
./modules/data-hoarder/public_api.nix
./modules/data-hoarder/map.nix
./modules/data-hoarder/file_sharing.nix
./modules/data-hoarder/grafana.nix
./modules/data-hoarder/website.nix
./modules/data-hoarder/documentation.nix
./modules/data-hoarder/clicky-bunty.nix
./modules/data-hoarder/secrets.nix
./modules/dump-dvb
sops-nix.nixosModules.sops
2022-05-28 21:24:15 +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-29 00:16:18 +02:00
clicky-bunty-server.overlay."x86_64-linux"
2022-05-28 21:24:15 +02:00
];
dump-dvb.stopsJson = "${stops}/stops.json";
dump-dvb.graphJson = "${stops}/graph.json";
2022-05-28 21:24:15 +02:00
}
];
2022-05-28 06:12:39 +02:00
diskModule = { config, lib, pkgs, ... }: {
system.build.diskImage = import "${nixpkgs}/nixos/lib/make-disk-image.nix" {
name = "${config.networking.hostName}-disk";
2022-05-29 02:39:40 +02:00
partitionTableType = "efi";
additionalSpace = "2G";
2022-05-29 15:35:14 +02:00
copyChannel = false;
config = config // {
boot.growPartition = true;
};
inherit lib pkgs;
postVM = ''
mkdir -p $out/nix-support
echo file binary-dist $diskImage >> $out/nix-support/hydra-build-products
'';
};
2022-05-24 19:04:08 +02:00
};
# function that generates a system with the given number
2022-04-30 23:41:24 +02:00
generate_system = (number:
{
"traffic-stop-box-${toString number}" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
2022-05-29 02:39:40 +02:00
diskModule
sops-nix.nixosModules.sops
2022-05-29 02:39:40 +02:00
./hosts/traffic-stop-boxes/configuration.nix
./hosts/traffic-stop-boxes/hardware-configuration.nix
2022-05-07 23:11:09 +02:00
./hardware/configuration-dell-wyse-3040.nix
2022-05-28 06:12:39 +02:00
./modules/base.nix
2022-05-29 01:57:24 +02:00
./modules/traffic-stop-boxes/radio_wireguard_client.nix
./modules/traffic-stop-boxes/secrets.nix
./modules/traffic-stop-boxes/radio-config.nix
./modules/dump-dvb
2022-04-30 23:41:24 +02:00
{
nixpkgs.overlays = [ radio-conf.overlay."x86_64-linux" decode-server.overlay."x86_64-linux" ];
dump-dvb.systemNumber = number;
dump-dvb.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
# list of accending system numbers
2022-05-14 20:47:17 +02:00
id_list = [ 0 1 2 3 4 ];
2022-04-30 23:41:24 +02:00
# attribute set of all traffic stop boxes
stop_boxes = nixpkgs.lib.foldl (x: y: nixpkgs.lib.mergeAttrs x (generate_system y)) { } 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
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;
mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
mobile-box-disk = self.nixosConfigurations.mobile-box.config.system.build.diskImage;
user-stop-box-wyse-3040-image = self.nixosConfigurations.user-stop-box-wyse-3040.config.system.build.diskImage;
2022-06-09 21:13:37 +02:00
user-stop-box-rpi4-image = self.nixosConfigurations.user-stop-box-rpi4.config.system.build.diskImage;
2022-05-28 21:24:15 +02:00
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
} // (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; });
2022-04-30 23:41:24 +02:00
in
{
2022-04-28 14:43:40 +02:00
defaultPackage."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
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-05-20 14:34:56 +02:00
mobile-box = nixpkgs.lib.nixosSystem {
2022-05-09 16:50:23 +02:00
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
diskModule
2022-05-09 16:50:23 +02:00
./hosts/mobile-box/configuration.nix
./hosts/mobile-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
2022-05-28 06:12:39 +02:00
./modules/base.nix
2022-05-29 01:57:24 +02:00
./modules/traffic-stop-boxes/mobile-box.nix
./modules/dump-dvb
./user-config.nix
sops-nix.nixosModules.sops
2022-05-09 16:50:23 +02:00
{
nixpkgs.overlays = [
radio-conf.overlay."x86_64-linux"
decode-server.overlay."x86_64-linux"
data-accumulator.overlay."x86_64-linux"
2022-05-20 00:57:48 +02:00
wartrammer.overlay."x86_64-linux"
2022-05-09 16:50:23 +02:00
];
dump-dvb.stopsJson = "${stops}/stops.json";
dump-dvb.systemNumber = 130;
2022-05-09 16:50:23 +02:00
}
];
};
2022-05-28 21:24:15 +02:00
data-hoarder = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
2022-05-29 01:57:24 +02:00
modules = [
2022-05-28 21:24:15 +02:00
./hosts/data-hoarder/configuration.nix
./hosts/data-hoarder/hardware-configuration.nix
2022-05-29 01:57:24 +02:00
./modules/data-hoarder/wireguard_server.nix
] ++ 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";
specialArgs = { inherit 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
{
environment.systemPackages = with pkgs; [tcpdump];
}
2022-05-29 01:57:24 +02:00
] ++ data-hoarder-modules;
2022-05-28 21:24:15 +02:00
};
user-stop-box-wyse-3040 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
diskModule
./hosts/user-stop-box/configuration.nix
./hosts/user-stop-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
./modules/base.nix
./modules/dump-dvb
./modules/user-stop-box/user.nix
./user-config.nix
{
nixpkgs.overlays = [ radio-conf.overlay."x86_64-linux" decode-server.overlay."x86_64-linux" ];
dump-dvb.stopsJson = "${stops}/stops.json";
}
];
};
user-stop-box-rpi4 = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit inputs; };
modules = [
diskModule
2022-06-09 21:13:37 +02:00
./hosts/user-stop-box-rpi4/configuration.nix
./hosts/user-stop-box-rpi4/hardware-configuration.nix
./hardware/configuration-rpi-4b.nix
./user-config.nix
2022-06-09 21:13:37 +02:00
./modules/base.nix
./modules/dump-dvb
2022-06-09 21:13:37 +02:00
./modules/user-stop-box/user.nix
{
nixpkgs.overlays = [ radio-conf.overlay."aarch64-linux" decode-server.overlay."aarch64-linux" ];
}
];
2022-06-11 01:19:12 +02:00
};
2022-05-28 21:24:15 +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-05-29 02:39:40 +02:00
staging-data-hoarder."x86_64-linux" = self.nixosConfigurations.staging-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-29 02:39:40 +02:00
traffic-stop-box-0-disk."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.diskImage;
2022-05-08 14:12:31 +02:00
mobile-box."x86_64-linux" = self.nixosConfigurations.mobile-box.config.system.build.toplevel;
user-stop-box-wyse-3040-image."x86_64-linux" = self.nixosConfigurations.user-stop-box-wyse-3040.config.system.build.diskImage;
user-stop-box-rpi4-image."x86_64-linux" = self.nixosConfigurations.user-stop-box-rpi4.config.system.build.diskImage;
sops-binaries."x86_64-linux" = sops-nix.packages."x86_64-linux".sops-install-secrets;
2022-04-29 11:52:57 +02:00
};
2022-04-23 03:01:58 +02:00
};
}