8 Commits
v0.4 ... v0.5

4 changed files with 57 additions and 19 deletions

View File

@ -163,12 +163,8 @@ func generateVM(path, name string, verbose bool) (realpath, reginfo, qcow2 strin
syscall.Unlink("result")
qcow2 = os.Getenv("HOME") + "/appvm/.fake.qcow2"
if _, err = os.Stat(qcow2); os.IsNotExist(err) {
system.System("qemu-img", "create", "-f", "qcow2", qcow2, "512M")
err = os.Chmod(qcow2, 0400) // qemu run with -snapshot, we only need it for create /dev/vda
if err != nil {
return
}
if _, e := os.Stat(qcow2); os.IsNotExist(e) {
system.System("qemu-img", "create", "-f", "qcow2", qcow2, "40M")
}
return

View File

@ -1,5 +1,5 @@
{ pkgs ? import <nixpkgs> {}, ... }:
let
pkgs = import <nixpkgs> {};
virt-manager-without-menu = pkgs.virt-viewer.overrideAttrs(x: {
patches = [
./patches/0001-Remove-menu-bar.patch
@ -31,7 +31,7 @@ buildGoModule rec {
meta = {
description = "Nix-based app VMs";
homepage = "https://code.dumpstack.io/tools/${pname}";
maintainers = [ lib.maintainers.dump_stack ];
maintainers = [ lib.maintainers.dump_stack lib.maintainers.cab404 ];
license = lib.licenses.gpl3;
};
}

View File

@ -4,22 +4,20 @@ Installation
NixOS
-----
First, clone this repo. Then do this:
/etc/nixos/configuration.nix::
virtualisation.libvirtd = {
imports = [
/path/to/repo/nixos
];
virtualizatiom.appvm = {
enable = true;
qemuVerbatimConfig = ''
namespaces = []
user = "${username}"
group = "users"
'';
user = "${username}";
};
users.users."${username}".extraGroups = [ ... "libvirtd" ];
shell::
nix run -f https://code.dumpstack.io/tools/appvm/archive/master.tar.gz -c appvm
This is a temporary solution until appvm is upstreamed to nixpkgs or Nix flakes are released.
Ubuntu 20.04
------

44
nixos/default.nix Normal file
View File

@ -0,0 +1,44 @@
params@{ config, lib, pkgs, ... }:
let
cfg = config.virtualisation.appvm;
appvm = import ../. params;
in with lib; {
options = {
virtualisation.appvm = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
This enables AppVMs and related virtualisation settings.
'';
};
user = mkOption {
type = types.str;
description = ''
AppVM user login. Currenly only AppVMs are supported for a single user only.
'';
};
};
};
config = mkIf cfg.enable {
virtualisation.libvirtd = {
enable = true;
qemuVerbatimConfig = ''
namespaces = []
user = "${cfg.user}"
group = "users"
remember_owner = 0
'';
};
users.users."${cfg.user}" = {
packages = [ appvm ];
extraGroups = [ "libvirtd" ];
};
};
}