server-configuration/flake.nix
2025-03-04 13:45:46 +01:00

102 lines
2.3 KiB
Nix
Executable file

{
description = "Configuration for NAS Server";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
simple-nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
inputs.nixpkgs.follows = "nixpkgs";
};
microvm = {
url = "github:astro/microvm.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
...
} @ inputs: let
lib = import ./lib {
inherit nixpkgs;
inherit self;
};
system = "x86_64-linux";
pkgs = import nixpkgs {inherit system;};
in {
formatter.${system} = pkgs.alejandra;
nixosConfigurations = let
modules = [
inputs.disko.nixosModules.default
inputs.agenix.nixosModules.default
inputs.home-manager.nixosModules.default
inputs.simple-nixos-mailserver.nixosModule
inputs.microvm.nixosModules.host
];
in {
server-vm = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs lib;};
modules =
[
(import ./disko.nix {
lib = pkgs.lib;
swap-size = "16G";
root-disk = "/dev/vda";
raid-disks = [
"vdb"
"vdc"
"vdd"
];
})
./vm-hardware-configuration.nix
./configuration.nix
]
++ modules;
};
server = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs lib;};
modules =
[
(import ./disko.nix {
lib = pkgs.lib;
swap-size = "128G";
root-disk = "/dev/nvme0n1";
raid-disks = [
# "sda"
# "sdb"
# "sdc"
# "sdd"
];
})
./modules/networking-metal.nix
./hardware-configuration.nix
./configuration.nix
]
++ modules;
};
};
};
}