2023-09-03 11:35:16 +00:00
|
|
|
{
|
|
|
|
description = "Nibylandia configurations";
|
|
|
|
|
|
|
|
inputs = {
|
2023-10-25 15:53:53 +00:00
|
|
|
# nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
2023-10-27 04:07:03 +00:00
|
|
|
nixpkgs.url =
|
2023-10-30 17:46:04 +00:00
|
|
|
# "github:arachnist/nixpkgs/klipper-firmwares-package-overrides";
|
2023-10-30 14:31:12 +00:00
|
|
|
"github:arachnist/nixpkgs/ar-patchset-unstable";
|
|
|
|
# "git+file:/home/ar/scm/nixpkgs";
|
2023-09-03 11:35:16 +00:00
|
|
|
home-manager.url = "github:nix-community/home-manager";
|
|
|
|
nix-colors.url = "github:misterio77/nix-colors";
|
|
|
|
nix-formatter-pack.url = "github:Gerschtli/nix-formatter-pack";
|
|
|
|
nix-index-database.url = "github:Mic92/nix-index-database";
|
|
|
|
deploy-rs.url = "github:serokell/deploy-rs";
|
2023-10-09 12:37:47 +00:00
|
|
|
microvm.url = "github:astro/microvm.nix";
|
2023-10-25 15:53:53 +00:00
|
|
|
impermanence.url = "github:nix-community/impermanence";
|
2023-10-19 20:45:14 +00:00
|
|
|
colmena = {
|
|
|
|
url = "github:zhaofengli/colmena/main";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2023-09-03 11:35:16 +00:00
|
|
|
agenix = {
|
|
|
|
url = "github:ryantm/agenix";
|
|
|
|
inputs.darwin.follows = "";
|
|
|
|
};
|
2023-10-08 16:11:54 +00:00
|
|
|
lanzaboote = {
|
|
|
|
url = "github:nix-community/lanzaboote";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2023-10-14 21:24:33 +00:00
|
|
|
simple-nixos-mailserver = {
|
|
|
|
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2023-09-03 11:35:16 +00:00
|
|
|
};
|
|
|
|
|
2023-10-20 18:08:26 +00:00
|
|
|
outputs = { self, nixpkgs, deploy-rs, ... }@inputs:
|
2023-10-08 23:21:05 +00:00
|
|
|
let
|
2023-10-14 23:29:23 +00:00
|
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
|
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
2023-10-08 23:21:05 +00:00
|
|
|
pkgsForDeploy =
|
|
|
|
forAllSystems (system: import nixpkgs { inherit system; });
|
|
|
|
deployPkgs = forAllSystems (system:
|
|
|
|
let pkgs = pkgsForDeploy.${system};
|
|
|
|
in import nixpkgs {
|
|
|
|
inherit system;
|
|
|
|
overlays = [
|
|
|
|
deploy-rs.overlay
|
|
|
|
(self: super: {
|
|
|
|
deploy-rs = {
|
|
|
|
inherit (pkgs) deploy-rs;
|
|
|
|
inherit (super.deploy-rs) lib;
|
|
|
|
};
|
|
|
|
})
|
|
|
|
];
|
|
|
|
});
|
2023-10-19 20:45:14 +00:00
|
|
|
inherit (nixpkgs) lib;
|
2023-09-03 11:35:16 +00:00
|
|
|
in {
|
|
|
|
formatter = forAllSystems (system:
|
2023-10-20 18:08:26 +00:00
|
|
|
inputs.nix-formatter-pack.lib.mkFormatter {
|
2023-09-03 11:35:16 +00:00
|
|
|
inherit nixpkgs system;
|
|
|
|
|
|
|
|
config = {
|
|
|
|
tools = {
|
|
|
|
deadnix = {
|
|
|
|
enable = true;
|
|
|
|
noLambdaPatternNames = true;
|
|
|
|
noLambdaArg = true;
|
|
|
|
};
|
|
|
|
statix.enable = true;
|
|
|
|
nixfmt.enable = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
2023-10-14 21:24:33 +00:00
|
|
|
overlays = import ./overlays;
|
|
|
|
|
2023-10-20 17:24:57 +00:00
|
|
|
nixosModules = lib.mapAttrs' (name: value:
|
|
|
|
lib.nameValuePair (builtins.replaceStrings [ ".nix" ] [ "" ] name) {
|
|
|
|
imports = [ (./modules/. + "/${name}") ];
|
|
|
|
}) (builtins.readDir ./modules);
|
2023-10-14 23:29:23 +00:00
|
|
|
|
2023-10-19 22:38:46 +00:00
|
|
|
nixosConfigurations = builtins.mapAttrs (name: value:
|
|
|
|
nixpkgs.lib.nixosSystem {
|
2023-10-20 17:53:32 +00:00
|
|
|
system = builtins.readFile (./nixos/. + "/${name}/system");
|
|
|
|
modules = [ (./nixos/. + "/${name}") ];
|
2023-10-19 20:45:14 +00:00
|
|
|
extraModules = [ inputs.colmena.nixosModules.deploymentOptions ];
|
2023-10-19 22:11:57 +00:00
|
|
|
specialArgs = { inherit inputs; };
|
2023-10-20 17:53:32 +00:00
|
|
|
}) (builtins.readDir ./nixos);
|
2023-09-18 20:42:25 +00:00
|
|
|
|
2023-10-19 20:45:14 +00:00
|
|
|
deploy.nodes = builtins.mapAttrs (name: value: {
|
2023-10-08 22:07:57 +00:00
|
|
|
fastConnection = false;
|
|
|
|
remoteBuild = true;
|
2023-10-19 20:45:14 +00:00
|
|
|
hostname = value.config.deployment.targetHost;
|
2023-10-08 22:07:57 +00:00
|
|
|
profiles.system = {
|
|
|
|
user = "root";
|
|
|
|
sshUser = "root";
|
2023-10-19 20:45:14 +00:00
|
|
|
path =
|
|
|
|
deployPkgs.${value.config.nixpkgs.system}.deploy-rs.lib.activate.nixos
|
|
|
|
value;
|
2023-10-08 22:07:57 +00:00
|
|
|
};
|
2023-10-19 20:45:14 +00:00
|
|
|
}) self.nixosConfigurations;
|
|
|
|
|
|
|
|
colmena = {
|
|
|
|
meta = {
|
|
|
|
nixpkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
|
|
|
|
nodeNixpkgs =
|
|
|
|
builtins.mapAttrs (_: v: v.pkgs) self.nixosConfigurations;
|
|
|
|
nodeSpecialArgs = builtins.mapAttrs (_: v: v._module.specialArgs)
|
|
|
|
self.nixosConfigurations;
|
|
|
|
specialArgs.lib = lib;
|
2023-10-14 21:24:33 +00:00
|
|
|
};
|
2023-10-19 20:45:14 +00:00
|
|
|
} // builtins.mapAttrs (_: v: { imports = v._module.args.modules; })
|
|
|
|
self.nixosConfigurations;
|
2023-10-14 21:24:33 +00:00
|
|
|
|
2023-09-03 11:35:16 +00:00
|
|
|
checks = builtins.mapAttrs
|
|
|
|
(system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
|
|
|
};
|
|
|
|
}
|