Files
company-nix/flake.nix
2026-03-18 13:28:51 +01:00

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;
};
}