nix/flake.nix
2024-08-29 09:19:46 +02:00

112 lines
2.7 KiB
Nix

{
# Source of inspiration:
# - https://github.com/BonusPlay/sysconf/blob/master/flake.nix
# - https://github.com/NixOS/infra/blob/master/build/flake.nix
description = "Pazpi's systems";
inputs = {
# NixOS related inputs
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
colmena = {
url = "github:zhaofengli/colmena";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
nixos-hardware,
lix-module,
agenix,
colmena,
home-manager,
}@inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
lib = nixpkgs.lib;
in
{
# used with: `nix fmt`
formatter.${system} = pkgs.nixfmt-rfc-style;
nixosConfigurations = (import ./hosts inputs);
colmena =
lib.recursiveUpdate
(builtins.mapAttrs (k: v: { imports = v._module.args.modules; }) self.nixosConfigurations)
{
meta = {
nixpkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ ];
};
nodeNixpkgs = builtins.mapAttrs (_: v: v.pkgs) self.nixosConfigurations;
nodeSpecialArgs = builtins.mapAttrs (_: v: v._module.specialArgs) self.nixosConfigurations;
};
defaults = {
imports = [ ./modules ];
deployment.targetUser = "pazpi";
};
arr.deployment = {
targetHost = "192.168.1.189";
targetUser = lib.mkForce "root";
tags = [
"lxc"
"bacco"
];
};
metrics.deployment = {
targetHost = "192.168.1.152";
targetUser = lib.mkForce "root";
tags = [
"lxc"
"bacco"
];
};
deadbeef.deployment = {
allowLocalDeployment = true;
targetHost = null;
tags = [ "local" ];
};
};
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [
agenix.packages.${system}.agenix
colmena.packages.${system}.colmena
];
};
};
}