server-configuration/flake.nix
2025-03-19 18:18:43 +01:00

101 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 = {
# until the merge is accepted this will have to do
# url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
url = "gitlab:yu-re-ka/nixos-mailserver";
inputs.nixpkgs.follows = "nixpkgs";
};
microvm = {
url = "github:astro/microvm.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
...
} @ inputs: let
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;};
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;};
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;
};
};
};
}