Allow running the VM as root
This commit is contained in:
parent
0480f0d4a4
commit
cf051abbdf
1 changed files with 49 additions and 49 deletions
|
@ -1,53 +1,53 @@
|
|||
{ config, lib, options, pkgs, ... }:
|
||||
let
|
||||
vmOptions = { };
|
||||
in {
|
||||
options = {
|
||||
virtualisation = {
|
||||
vmVariant = vmOptions;
|
||||
vmVariantWithBootLoader = vmOptions;
|
||||
{ config, lib, options, pkgs, ... }: {
|
||||
options = {
|
||||
virtualisation = {
|
||||
runAsRoot = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
# Replace native `qemu` with `remote-viewer`
|
||||
system.build =
|
||||
{
|
||||
vm =
|
||||
let
|
||||
packageName = "custom-nixos-vm";
|
||||
config = {
|
||||
# Replace native `qemu` with `remote-viewer`
|
||||
system.build =
|
||||
{
|
||||
vm =
|
||||
let
|
||||
packageName = "custom-nixos-vm";
|
||||
|
||||
mergedSystem =
|
||||
with options.system;
|
||||
lib.mergeDefinitions
|
||||
build.loc
|
||||
build.type
|
||||
(lib.lists.forEach
|
||||
(
|
||||
builtins.filter
|
||||
(item:
|
||||
!(lib.path.hasPrefix ./. (/. + item.file)))
|
||||
build.definitionsWithLocations)
|
||||
(item: { inherit (item) file value; }));
|
||||
in
|
||||
lib.mkForce (
|
||||
if (mergedSystem.mergedValue.vm.name == packageName)
|
||||
then
|
||||
mergedSystem.mergedValue.vm
|
||||
else
|
||||
let
|
||||
wrapped = pkgs.writeShellApplication {
|
||||
name = "run-${config.system.name}-vm";
|
||||
text = ''
|
||||
${mergedSystem.mergedValue.vm}/bin/run-${config.system.name}-vm
|
||||
'';
|
||||
};
|
||||
in
|
||||
# Rename package to `nixos-vm`
|
||||
pkgs.symlinkJoin {
|
||||
name = packageName;
|
||||
paths = [ wrapped ];
|
||||
});
|
||||
};
|
||||
};
|
||||
}
|
||||
mergedSystem =
|
||||
with options.system;
|
||||
lib.mergeDefinitions
|
||||
build.loc
|
||||
build.type
|
||||
(lib.lists.forEach
|
||||
(
|
||||
builtins.filter
|
||||
(item:
|
||||
!(lib.path.hasPrefix ./. (/. + item.file)))
|
||||
build.definitionsWithLocations)
|
||||
(item: { inherit (item) file value; }));
|
||||
in
|
||||
lib.mkForce (
|
||||
if (mergedSystem.mergedValue.vm.name == packageName)
|
||||
then
|
||||
mergedSystem.mergedValue.vm
|
||||
else
|
||||
let
|
||||
prefix = lib.concatStringsSep " " (lib.optional config.virtualisation.runAsRoot "sudo");
|
||||
wrapped = pkgs.writeShellApplication {
|
||||
name = "run-${config.system.name}-vm";
|
||||
text = ''
|
||||
${prefix} ${mergedSystem.mergedValue.vm}/bin/run-${config.system.name}-vm
|
||||
'';
|
||||
};
|
||||
in
|
||||
# Rename package to `nixos-vm`
|
||||
pkgs.symlinkJoin {
|
||||
name = packageName;
|
||||
paths = [ wrapped ];
|
||||
});
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue