71 lines
1.5 KiB
Nix
71 lines
1.5 KiB
Nix
|
{
|
||
|
inputs = {
|
||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||
|
nixos-generators = {
|
||
|
url = "github:nix-community/nixos-generators";
|
||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||
|
};
|
||
|
xc = {
|
||
|
url = "github:joerdav/xc";
|
||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
outputs =
|
||
|
{
|
||
|
nixpkgs,
|
||
|
nixos-generators,
|
||
|
xc,
|
||
|
...
|
||
|
}:
|
||
|
let
|
||
|
pkgsForSystem =
|
||
|
system:
|
||
|
import nixpkgs {
|
||
|
inherit system;
|
||
|
overlays = [ (final: prev: { xc = xc.packages.${system}.xc; }) ];
|
||
|
};
|
||
|
allVMs = [
|
||
|
"x86_64-linux"
|
||
|
"aarch64-linux"
|
||
|
];
|
||
|
forAllVMs =
|
||
|
f:
|
||
|
nixpkgs.lib.genAttrs allVMs (
|
||
|
system:
|
||
|
f {
|
||
|
inherit system;
|
||
|
pkgs = pkgsForSystem system;
|
||
|
}
|
||
|
);
|
||
|
in
|
||
|
{
|
||
|
packages = forAllVMs (
|
||
|
{ system, pkgs }:
|
||
|
{
|
||
|
vm = nixos-generators.nixosGenerate {
|
||
|
format = "qcow-efi";
|
||
|
system = system;
|
||
|
|
||
|
specialArgs = {
|
||
|
pkgs = pkgs;
|
||
|
};
|
||
|
|
||
|
modules = [
|
||
|
# Pin nixpkgs to the flake input, so that the packages installed
|
||
|
# come from the flake inputs.nixpkgs.url.
|
||
|
(
|
||
|
{ ... }:
|
||
|
{
|
||
|
nix.registry.nixpkgs.flake = nixpkgs;
|
||
|
}
|
||
|
)
|
||
|
# Apply the rest of the config.
|
||
|
./configuration.nix
|
||
|
];
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
};
|
||
|
}
|