there is not so much of a difference in this project, but it means adding this project to clan, one less flake input and also more consistency with other projects in clan.
140 lines
4.4 KiB
Nix
140 lines
4.4 KiB
Nix
{
|
|
nixConfig = {
|
|
extra-substituters = [ "https://cache.clan.lol" ];
|
|
extra-trusted-public-keys = [ "cache.clan.lol-1:3KztgSAB5R1M+Dz7vzkBGzXdodizbgLXGXKXlcQLA28=" ];
|
|
};
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
|
|
|
|
virtwl.url = "git+https://github.com/valpackett/wayland-proxy-virtwl?shallow=1&submodules=1&ref=wip";
|
|
virtwl.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
sidebus.url = "git+https://git.clan.lol/clan/sidebus?shallow=1&ref=main";
|
|
sidebus.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
# To override with local checkouts during development, use the --override-input CLI flag!
|
|
muvm-src = {
|
|
url = "github:valpackett/muvm/3ec4c90bbfb6d0111f91b898a7f17deb562f4f92";
|
|
flake = false;
|
|
};
|
|
libkrun-src = {
|
|
url = "github:containers/libkrun/b250ee6fff7d959da3d55bb62ffe09d87248651c";
|
|
flake = false;
|
|
};
|
|
libkrunfw-src = {
|
|
url = "github:containers/libkrunfw/8a8c33f24f72aa6ca017347dc2be45b6fa612af5";
|
|
flake = false;
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
inputs@{
|
|
self,
|
|
nixpkgs,
|
|
flake-parts,
|
|
virtwl,
|
|
sidebus,
|
|
muvm-src,
|
|
libkrun-src,
|
|
libkrunfw-src,
|
|
...
|
|
}:
|
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
|
systems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
];
|
|
|
|
flake = {
|
|
nixosModules.testvm = nixpkgs.lib.modules.importApply ./nixosModules/testvm.nix { inherit virtwl; };
|
|
nixosModules.default = nixpkgs.lib.modules.importApply ./nixosModules/default.nix {
|
|
inherit self virtwl sidebus;
|
|
};
|
|
|
|
templates.musictest = {
|
|
description = "Music player demo VM with MPD and Euphonica";
|
|
path = ./templates/musictest;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
devShells.default = pkgs.callPackage ./devShells {
|
|
libkrun = self'.packages.libkrun;
|
|
muvm = self'.packages.muvm;
|
|
sidebus-broker = sidebus.packages.${system}.sidebus-broker;
|
|
};
|
|
};
|
|
};
|
|
}
|