forked from RCMast3r/hytech_nixos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
135 lines (123 loc) · 5.49 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{
description = "Build image";
nixConfig = {
extra-substituters = [ "https://raspberry-pi-nix.cachix.org" ];
extra-trusted-public-keys = [
"raspberry-pi-nix.cachix.org-1:WmV2rdSangxW0rZjY/tBvBDSaNFQ3DyEQsVw8EvHn9o="
];
};
inputs = rec {
# hytech_data_acq.url = "github:hytech-racing/data_acq/2024-04-27T00_26_50";
hytech_data_acq.url = "github:hytech-racing/data_acq/aero_integrated";
hytech_data_acq.inputs.ht_can_pkg_flake.url = "github:hytech-racing/ht_can/102";
aero_sensor_logger.url = "github:hytech-racing/aero_sensor_logger/8ff36ab9256d6f22ad04aff68c3fabc5f2de796d";
hytech_params_server.url = "github:hytech-racing/HT_params/2024-05-26T15_33_34";
raspberry-pi-nix.url = "github:tstat/raspberry-pi-nix/b39b556e8a1c4bd6f8a59e8719dc1f658f18f255";
nixpkgs.url = "github:NixOS/nixpkgs/8bf65f17d8070a0a490daf5f1c784b87ee73982c";
home-manager.url = "github:nix-community/home-manager/release-23.11";
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, hytech_data_acq, raspberry-pi-nix, nixos-generators, home-manager, hytech_params_server, aero_sensor_logger}: rec {
nixpkg_overlays =
{
nixpkgs.overlays = aero_sensor_logger.overlays.aarch64-linux ++ hytech_params_server.overlays.aarch64-linux ++ hytech_data_acq.overlays.aarch64-linux ++
[
(self: super: {
linux-router = super.linux-router.override {
useQrencode = false;
};
})
];
};
shared_config_modules = [
./modules/shared_config/environment.nix
./modules/shared_config/networking.nix
./modules/shared_config/standard_settings.nix
./modules/shared_config/standard_services.nix
];
tcu_config_modules = [
./modules/linux_router.nix
./modules/hardware_config/tcu_config.nix
];
hytech_service_modules = [
./modules/data_acq.nix
./modules/can_network.nix
./modules/simple_http_server.nix
./modules/param_webserver.nix
];
# shoutout to https://github.com/tstat/raspberry-pi-nix absolute goat
nixosConfigurations.tcu = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit self; };
modules =
tcu_config_modules ++
hytech_service_modules ++
shared_config_modules ++ [
(nixpkg_overlays)
# aero_sensor_logger.nixosModules.aarch64-linux.aero-sensor-logger
home-manager.nixosModules.home-manager
raspberry-pi-nix.nixosModules.raspberry-pi
(
{ config, options, ... }: rec {
nixpkgs.hostPlatform.system = "aarch64-linux";
services.data_writer.mcu-ip = "192.168.1.30";
services.data_writer.recv-ip = "192.168.1.69";
services.data_writer.send-to-mcu-port = 20000;
services.data_writer.recv-from-mcu-port = 20001;
services.linux_router.host-ip = "192.168.203.1";
services.http_server.port = 8001;
services.param_webserver.enable = true;
raspberry-pi-nix.libcamera-overlay.enable = false;
# aero-sensor-logger.enable = true;
# service_names.url-name = ".car";
# service_names.car-ip = "192.168.1.69";
# service_names.car-wifi-ip = services.linux_router.host-ip;
# service_names.dhcp-start = "192.168.1.70";
# service_names.dhcp-end = "192.168.1.200";
# service_names.default-gateway = "192.168.1.1";
# service_names.dhcp-interfaces = [ "end0" ];
}
)
];
};
support_vm_config = {
system = "x86_64-linux";
specialArgs = { inherit self; };
modules =
shared_config_modules ++
hytech_service_modules ++
[
(nixpkg_overlays)
(
{ config, ... }: {
services.data_writer.mcu-ip = "127.0.0.1";
services.data_writer.recv-ip = "127.0.0.1";
services.data_writer.send-to-mcu-port = 20001;
services.data_writer.recv-from-mcu-port = 20002;
service_names.url-name = ".car";
service_names.car-ip = "192.168.86.36";
service_names.dhcp-start = "192.168.86.37";
service_names.dhcp-end = "192.168.86.200";
service_names.default-gateway = "192.168.1.1";
service_names.dhcp-interfaces = [ "enp0s3" ];
services.http_server.port = 8001;
# services.param_webserver.host-recv-ip = "192.168.86.36";
# services.param_webserver.mcu-ip = "192.168.1.30";
# services.param_webserver.param-recv-port = 2002;
# services.param_webserver.param-send-port = 2001;
}
)
];
};
virtualbox_vm_modules = { modules = support_vm_config.modules ++ [ ./modules/vm_config/virtualbox_config.nix ]; };
cc_vm_modules = { modules = support_vm_config.modules ++ [ ./modules/vm_config/basic_vm_hw.nix ]; };
# Use nixos-generate to create the VMs
nixosConfigurations.vbi = nixos-generators.nixosGenerate (support_vm_config // virtualbox_vm_modules // { format = "virtualbox"; });
nixosConfigurations.basic_vm = nixpkgs.lib.nixosSystem (support_vm_config // cc_vm_modules);
images.tcu = nixosConfigurations.tcu.config.system.build.sdImage;
tcu_top = nixosConfigurations.tcu.config.system.build.toplevel;
};
}