142 lines
3.2 KiB
Nix
142 lines
3.2 KiB
Nix
{
|
|
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;
|
|
};
|
|
}
|