{ description = "NodeiWest company flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; colmena.url = "github:zhaofengli/colmena"; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, colmena, disko, home-manager, ... }: let lib = nixpkgs.lib; supportedSystems = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ]; forAllSystems = lib.genAttrs supportedSystems; mkPkgs = system: import nixpkgs { inherit system; }; mkHost = name: nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs self; }; modules = [ disko.nixosModules.disko home-manager.nixosModules.home-manager self.nixosModules.common ./hosts/${name}/configuration.nix ]; }; in { homeManagerModules.default = ./modules/home.nix; homeManagerModules.helpers = ./modules/helpers/home.nix; nixosModules.common = ./modules/nixos/common.nix; packages = forAllSystems ( system: let pkgs = mkPkgs system; nodeiwestHelper = pkgs.callPackage ./pkgs/helpers { }; in { colmena = colmena.packages.${system}.colmena; nodeiwest-helper = nodeiwestHelper; default = colmena.packages.${system}.colmena; } ); apps = forAllSystems (system: { colmena = { type = "app"; program = "${colmena.packages.${system}.colmena}/bin/colmena"; }; nodeiwest-helper = { type = "app"; program = "${self.packages.${system}.nodeiwest-helper}/bin/nodeiwest"; }; default = self.apps.${system}.colmena; }); nixosConfigurations = { vps1 = mkHost "vps1"; lab = mkHost "lab"; }; colmena = { meta = { nixpkgs = mkPkgs "x86_64-linux"; specialArgs = { inherit inputs self; }; }; defaults = { name, ... }: { networking.hostName = name; imports = [ disko.nixosModules.disko home-manager.nixosModules.home-manager self.nixosModules.common ]; }; vps1 = { deployment = { targetHost = "100.101.167.118"; targetUser = "root"; tags = [ "company" "edge" ]; }; imports = [ ./hosts/vps1/configuration.nix ]; }; lab = { deployment = { targetHost = "100.101.167.118"; targetUser = "root"; tags = [ "company" "manager" ]; }; imports = [ ./hosts/lab/configuration.nix ]; }; }; colmenaHive = colmena.lib.makeHive self.outputs.colmena; }; }