Newer
Older
skyworks-Nix-infra / flake.nix
{
  description = "Skyworks infrastructure";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";

    disko = {
      url = "github:nix-community/disko";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    agenix = {
      url = "github:ryantm/agenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    deploy-rs = {
      url = "github:serokell/deploy-rs";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, disko, agenix, deploy-rs, ... }:
  let
    commonModules = [
      agenix.nixosModules.default
      ./modules/common.nix
      ./modules/users.nix
      ./modules/ssh.nix
      ./modules/monitoring.nix
      ./modules/influxdb.nix
    ];
  in {
    nixosConfigurations = {
      skydick = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = commonModules ++ [
          disko.nixosModules.disko
          ./hosts/skydick/disko.nix
          ./hosts/skydick/datapool.nix
          ./hosts/skydick/default.nix
        ];
      };

      xlab-gateway = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = commonModules ++ [
          disko.nixosModules.disko
          ./hosts/xlab-gateway/disko.nix
          ./hosts/xlab-gateway/default.nix
        ];
      };
    };

    deploy.nodes = {
      skydick = {
        hostname = "10.0.1.1";
        sshUser = "ldx";
        profiles.system = {
          user = "root";
          path = deploy-rs.lib.x86_64-linux.activate.nixos
            self.nixosConfigurations.skydick;
        };
      };

      xlab-gateway = {
        hostname = "10.253.254.1";
        sshUser = "ldx";
        profiles.system = {
          user = "root";
          path = deploy-rs.lib.x86_64-linux.activate.nixos
            self.nixosConfigurations.xlab-gateway;
        };
      };
    };

    checks = builtins.mapAttrs
      (system: deployLib: deployLib.deployChecks self.deploy)
      deploy-rs.lib;
  };
}