feat: add nix server provision

This commit is contained in:
eric
2026-03-18 02:44:54 +01:00
parent 6f55289ca4
commit 19f9b0594a
19 changed files with 3114 additions and 30 deletions

117
flake.nix
View File

@@ -1,22 +1,125 @@
{
description = "NodeiWest dev environment module";
description = "NodeiWest company flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
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:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
inputs@{
self,
nixpkgs,
colmena,
disko,
home-manager,
...
}:
let
lib = nixpkgs.lib;
supportedSystems = [
"aarch64-darwin"
"x86_64-darwin"
"x86_64-linux"
];
forAllSystems = lib.genAttrs supportedSystems;
flake = {
homeManagerModules.default = ./modules/home.nix;
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";
};
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 ];
};
};
colmenaHive = colmena.lib.makeHive self.outputs.colmena;
};
}