2025-09-25 22:29:24 -03:00
|
|
|
{
|
2025-11-03 17:36:02 +01:00
|
|
|
nixConfig = {
|
|
|
|
|
extra-substituters = [ "https://cache.clan.lol" ];
|
|
|
|
|
extra-trusted-public-keys = [ "cache.clan.lol-1:3KztgSAB5R1M+Dz7vzkBGzXdodizbgLXGXKXlcQLA28=" ];
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-25 22:29:24 -03:00
|
|
|
inputs = {
|
2025-10-31 04:44:28 -03:00
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
2026-01-16 15:10:12 +01:00
|
|
|
|
|
|
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
|
|
|
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
|
|
|
|
|
|
2025-11-14 06:20:44 -03:00
|
|
|
sidebus.url = "git+https://git.clan.lol/clan/sidebus?shallow=1&ref=main";
|
|
|
|
|
sidebus.inputs.nixpkgs.follows = "nixpkgs";
|
2026-01-30 06:12:47 -03:00
|
|
|
sidebus.inputs.flake-parts.follows = "flake-parts";
|
2025-11-28 16:19:52 +01:00
|
|
|
|
2025-12-04 23:52:31 -03:00
|
|
|
# To override with local checkouts during development, use the --override-input CLI flag!
|
2025-11-28 16:19:52 +01:00
|
|
|
muvm-src = {
|
2026-01-29 20:54:42 -03:00
|
|
|
url = "github:valpackett/muvm/ae7dbd49aac04e9732a14a424572e99a81eb1298"; # v0.5.0+custom-init
|
2025-11-28 16:19:52 +01:00
|
|
|
flake = false;
|
|
|
|
|
};
|
|
|
|
|
libkrun-src = {
|
2026-01-29 20:54:42 -03:00
|
|
|
url = "github:containers/libkrun/376f25637c49f26231ec92532f31a24b99236aa6"; # v1.17.0
|
2025-11-28 16:19:52 +01:00
|
|
|
flake = false;
|
|
|
|
|
};
|
|
|
|
|
libkrunfw-src = {
|
2026-01-29 20:54:42 -03:00
|
|
|
url = "github:containers/libkrunfw/20484a2e60290acb74c43ccfd6e1ea4caf41d470"; # v5.1.0
|
2025-11-28 16:19:52 +01:00
|
|
|
flake = false;
|
|
|
|
|
};
|
2025-09-25 22:29:24 -03:00
|
|
|
};
|
|
|
|
|
|
2025-12-15 16:12:53 +01:00
|
|
|
outputs =
|
2026-01-16 15:10:12 +01:00
|
|
|
inputs@{
|
2025-12-15 16:12:53 +01:00
|
|
|
self,
|
|
|
|
|
nixpkgs,
|
2026-01-16 15:10:12 +01:00
|
|
|
flake-parts,
|
2025-12-15 16:12:53 +01:00
|
|
|
sidebus,
|
|
|
|
|
muvm-src,
|
|
|
|
|
libkrun-src,
|
|
|
|
|
libkrunfw-src,
|
|
|
|
|
...
|
|
|
|
|
}:
|
2026-01-16 15:10:12 +01:00
|
|
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
|
|
|
|
systems = [
|
|
|
|
|
"x86_64-linux"
|
|
|
|
|
"aarch64-linux"
|
|
|
|
|
];
|
2025-11-03 15:43:47 +01:00
|
|
|
|
2026-01-16 15:10:12 +01:00
|
|
|
flake = {
|
2026-01-30 04:27:46 -03:00
|
|
|
nixosModules.testvm = nixpkgs.lib.modules.importApply ./nixosModules/testvm.nix { };
|
2026-01-16 15:10:12 +01:00
|
|
|
nixosModules.default = nixpkgs.lib.modules.importApply ./nixosModules/default.nix {
|
2026-01-30 04:27:46 -03:00
|
|
|
inherit self sidebus;
|
2025-09-25 22:29:24 -03:00
|
|
|
};
|
|
|
|
|
|
2026-01-16 15:10:12 +01:00
|
|
|
templates.musictest = {
|
|
|
|
|
description = "Music player demo VM with MPD and Euphonica";
|
|
|
|
|
path = ./templates/musictest;
|
|
|
|
|
};
|
2025-11-03 15:45:39 +01:00
|
|
|
|
2026-01-16 15:10:12 +01:00
|
|
|
nixosConfigurations.testvm-x86_64 = nixpkgs.lib.nixosSystem {
|
|
|
|
|
system = "x86_64-linux";
|
|
|
|
|
modules = [
|
|
|
|
|
self.nixosModules.default
|
|
|
|
|
self.nixosModules.testvm
|
|
|
|
|
{ nixpkgs.config.allowUnfree = true; }
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
nixosConfigurations.testvm-aarch64 = nixpkgs.lib.nixosSystem {
|
|
|
|
|
system = "aarch64-linux";
|
|
|
|
|
modules = [
|
|
|
|
|
self.nixosModules.default
|
|
|
|
|
self.nixosModules.testvm
|
|
|
|
|
{ nixpkgs.config.allowUnfree = true; }
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
perSystem =
|
|
|
|
|
{
|
|
|
|
|
pkgs,
|
|
|
|
|
system,
|
|
|
|
|
self',
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
{
|
|
|
|
|
_module.args.pkgs = import nixpkgs {
|
|
|
|
|
inherit system;
|
|
|
|
|
config.allowUnfree = true;
|
2025-11-28 16:19:52 +01:00
|
|
|
};
|
2025-09-25 22:29:24 -03:00
|
|
|
|
2026-01-16 15:10:12 +01:00
|
|
|
checks =
|
|
|
|
|
(pkgs.lib.mapAttrs' (n: pkgs.lib.nameValuePair "package-${n}") self'.packages)
|
|
|
|
|
// (pkgs.lib.mapAttrs' (n: pkgs.lib.nameValuePair "devShell-${n}") self'.devShells)
|
|
|
|
|
// (pkgs.lib.optionalAttrs (system == "x86_64-linux") {
|
|
|
|
|
nixos-testvm = self.nixosConfigurations.testvm-x86_64.config.system.build.toplevel;
|
|
|
|
|
})
|
|
|
|
|
// (pkgs.lib.optionalAttrs (system == "aarch64-linux") {
|
|
|
|
|
nixos-testvm = self.nixosConfigurations.testvm-aarch64.config.system.build.toplevel;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
packages = {
|
|
|
|
|
# Packages support variant parameter: null (default), "sev", or "tdx"
|
|
|
|
|
# To build a variant: packages.libkrunfw.override { variant = "sev"; }
|
|
|
|
|
libkrunfw = pkgs.callPackage ./packages/libkrunfw {
|
|
|
|
|
libkrunfw-src = libkrunfw-src;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
libkrun = pkgs.callPackage ./packages/libkrun {
|
|
|
|
|
libkrunfw = self'.packages.libkrunfw;
|
|
|
|
|
libkrun-src = libkrun-src;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
mesa = pkgs.callPackage ./packages/mesa { };
|
|
|
|
|
|
|
|
|
|
muvm = pkgs.callPackage ./packages/muvm {
|
|
|
|
|
libkrun = self'.packages.libkrun;
|
|
|
|
|
muvm-src = muvm-src;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
munix = pkgs.callPackage ./packages/munix {
|
|
|
|
|
mesa = self'.packages.mesa;
|
|
|
|
|
muvm = self'.packages.muvm;
|
|
|
|
|
sidebus-broker = sidebus.packages.${system}.sidebus-broker;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
sidebus-agent = sidebus.packages.${system}.sidebus-agent;
|
2026-01-30 03:16:06 -03:00
|
|
|
|
|
|
|
|
wl-cross-domain-proxy = pkgs.callPackage ./packages/wl-cross-domain-proxy { };
|
2025-09-25 22:29:24 -03:00
|
|
|
};
|
|
|
|
|
|
2026-01-16 15:10:12 +01:00
|
|
|
devShells.default = pkgs.callPackage ./devShells {
|
|
|
|
|
libkrun = self'.packages.libkrun;
|
|
|
|
|
muvm = self'.packages.muvm;
|
2025-11-14 06:20:44 -03:00
|
|
|
sidebus-broker = sidebus.packages.${system}.sidebus-broker;
|
2025-11-03 17:14:28 +01:00
|
|
|
};
|
|
|
|
|
};
|
2026-01-16 15:10:12 +01:00
|
|
|
};
|
2025-09-25 22:29:24 -03:00
|
|
|
}
|