Files
infra/flake.nix
2024-10-22 18:57:41 +02:00

80 lines
2.1 KiB
Nix

{
description = "Personal Infrastructure stuff?";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
impermanence.url = "github:nix-community/impermanence";
agenix.url = "github:ryantm/agenix";
};
outputs = {self, nixpkgs, impermanence, agenix}:
let
customPackagesModule = {...}: {
nixpkgs.overlays =
[
(super: self: { logo = super.callPackage ./lib/pkgs/logo { }; })
(super: self: { config-archive = super.callPackage ./lib/pkgs/config-archive.nix { }; })
(super: self: { zoekt = super.callPackage ./lib/pkgs/zoekt.nix { }; })
];
};
forAllSystems = fun:
nixpkgs.lib.genAttrs [
"x86_64-linux"
"aarch64-darwin"
] (system: fun system);
in
{
nixosConfigurations = {
fugitive = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
customPackagesModule
impermanence.outputs.nixosModules.impermanence
agenix.nixosModules.default
./lib/systems/fugitive
];
};
outpost = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
agenix.nixosModules.default
./lib/systems/outpost
];
};
monument = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
{
system.image.version = "1";
}
./lib/modules/raspberry.nix
./lib/systems/monument
];
};
};
packages = forAllSystems (system:
let pkgs = nixpkgs.legacyPackages.${system};
in
{
zoekt = pkgs.callPackage ./lib/pkgs/zoekt.nix { };
}
);
devShells = forAllSystems (system:
let pkgs = nixpkgs.legacyPackages.${system};
in
{
default = with pkgs; mkShell {
buildInputs = [ nixos-rebuild agenix.packages.${system}.default ];
};
});
};
}