nibylandia/flake.nix

137 lines
4.4 KiB
Nix
Raw Permalink Normal View History

2023-09-03 11:35:16 +00:00
{
description = "Nibylandia configurations";
inputs = {
2024-03-30 18:57:36 +00:00
nixpkgs.url = "github:arachnist/nixpkgs/ar-patchset-unstable";
2023-09-03 11:35:16 +00:00
home-manager.url = "github:nix-community/home-manager";
2023-12-11 06:47:06 +00:00
home-manager.inputs.nixpkgs.follows = "nixpkgs";
2023-09-03 11:35:16 +00:00
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";
2023-12-11 06:47:06 +00:00
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
2023-09-03 11:35:16 +00:00
deploy-rs.url = "github:serokell/deploy-rs";
2023-10-09 12:37:47 +00:00
microvm.url = "github:astro/microvm.nix";
2023-12-11 06:47:06 +00:00
microvm.inputs.nixpkgs.follows = "nixpkgs";
impermanence.url = "github:nix-community/impermanence";
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 = "";
};
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";
};
jovian-nixos = {
2023-12-20 15:13:47 +00:00
url = "github:Jovian-Experiments/Jovian-NixOS";
2023-12-11 06:47:06 +00:00
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
2024-05-06 17:13:43 +00:00
lix = {
2024-05-06 22:19:20 +00:00
url =
"git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1";
2024-05-06 17:13:43 +00:00
flake = false;
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module";
inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-09-03 11:35:16 +00:00
};
outputs = { self, nixpkgs, deploy-rs, ... }@inputs:
2023-10-08 23:21:05 +00:00
let
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;
};
})
];
});
inherit (nixpkgs) lib;
2023-11-30 20:55:15 +00:00
meta = import ./meta.nix;
2023-09-03 11:35:16 +00:00
in {
formatter = forAllSystems (system:
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);
nixosConfigurations = builtins.mapAttrs (name: value:
nixpkgs.lib.nixosSystem {
2023-11-30 20:55:15 +00:00
inherit (value) system;
modules = [
(./nixos/. + "/${name}")
2024-05-06 17:13:43 +00:00
inputs.lix-module.nixosModules.default
{
nixpkgs.system = value.system;
} # need to set this explicitly for colmena
];
extraModules = [ inputs.colmena.nixosModules.deploymentOptions ];
2023-10-19 22:11:57 +00:00
specialArgs = { inherit inputs; };
2023-11-30 20:55:15 +00:00
}) meta.hosts;
deploy.nodes = builtins.mapAttrs (name: value: {
2023-10-08 22:07:57 +00:00
fastConnection = false;
remoteBuild = true;
hostname = value.config.deployment.targetHost;
2023-10-08 22:07:57 +00:00
profiles.system = {
user = "root";
sshUser = "root";
path =
deployPkgs.${value.config.nixpkgs.system}.deploy-rs.lib.activate.nixos
value;
2023-10-08 22:07:57 +00:00
};
}) self.nixosConfigurations;
colmena = {
meta = {
nixpkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
nodeSpecialArgs = builtins.mapAttrs (_: v: v._module.specialArgs)
self.nixosConfigurations;
specialArgs.lib = lib;
2023-10-14 21:24:33 +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;
};
}