1{
2 description = "Clover infrastructure prototype";
3
4 inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
5
6 outputs = { self, nixpkgs, ... }: {
7 packages.x86_64-linux.dashboard = nixpkgs.legacyPackages.x86_64-linux.callPackage ./nixos/dashboard.nix { };
8 packages.x86_64-linux.dashboard-image = self.packages.x86_64-linux.dashboard.image;
9 packages.x86_64-linux.installer = self.nixosConfigurations.installer.config.system.build.isoImage;
10
11 packages.aarch64-darwin.qemu = nixpkgs.legacyPackages.aarch64-darwin.qemu;
12
13 nixosConfigurations.installer = nixpkgs.lib.nixosSystem {
14 system = "x86_64-linux";
15 modules = [
16 "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
17 ./nixos/zenith-network.nix
18 ({ lib, pkgs, ... }: {
19 networking.hostName = "infra-2-installer";
20 networking.networkmanager.enable = lib.mkForce false;
21 boot.zfs.forceImportRoot = false;
22 users.users.root.openssh.authorizedKeys.keys = [ (lib.fileContents ./config/admin.pub) ];
23 services.openssh.enable = true;
24 services.openssh.settings = {
25 PasswordAuthentication = false;
26 KbdInteractiveAuthentication = false;
27 };
28 nix.settings.experimental-features = [ "nix-command" "flakes" ];
29 environment.etc."infra-2".source = self;
30 environment.systemPackages = [
31 (pkgs.callPackage ./nixos/pkl.nix { }) pkgs.python3 pkgs.rsync
32 ];
33 isoImage.storeContents = [ self.packages.x86_64-linux.dashboard-image ];
34 })
35 ];
36 };
37
38 nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
39 system = "x86_64-linux";
40 modules = [ ./nixos/configuration.nix ./nixos/vm.nix ];
41 };
42
43 nixosConfigurations.zenith = nixpkgs.lib.nixosSystem {
44 system = "x86_64-linux";
45 modules = [ ./nixos/configuration.nix ./nixos/zenith.nix ./nixos/hardware-configuration.nix ];
46 };
47 };
48}