From 9142fe53c649a9776c61b8418b7a3d6a57051281 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Wed, 16 Dec 2020 16:51:48 +0000 Subject: [PATCH 01/20] Remove donate --- .github/workflows/donate.yml | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .github/workflows/donate.yml diff --git a/.github/workflows/donate.yml b/.github/workflows/donate.yml deleted file mode 100644 index e090757..0000000 --- a/.github/workflows/donate.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: donate - -on: - issues: - types: [opened, closed] - schedule: - - cron: '35 * * * *' # for updating balance - -jobs: - comment: - runs-on: ubuntu-latest - steps: - - env: - # https://github.com/jollheef/donate/blob/master/dashboard/whitelist.go - DASHBOARD_ACCESS_TOKEN: ${{ secrets.DONATE_DASHBOARD_ACCESS_TOKEN }} - # the scope is current repository only - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TOOL: "https://github.com/jollheef/donate/archive/master.tar.gz" - run: | - curl -L https://nixos.org/nix/install | sh - . ~/.nix-profile/etc/profile.d/nix.sh - # Use latest stable nixpkgs channel - nix-channel --add https://nixos.org/channels/nixos-20.03 nixpkgs - nix-channel --update - nix run -f $TOOL -c donate-ci From 33facb2321fb8f2a014a2773615c66a839549631 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Thu, 4 Nov 2021 13:24:32 +0000 Subject: [PATCH 02/20] Update go-libvirt Resolves #26 --- go.mod | 12 ++++++------ go.sum | 62 +++++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 94122a9..3738f16 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,14 @@ module code.dumpstack.io/tools/appvm -go 1.14 +go 1.16 require ( github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect - github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect - github.com/digitalocean/go-libvirt v0.0.0-20190715144809-7b622097a793 - github.com/go-cmd/cmd v1.1.0 - github.com/hanwen/go-fuse/v2 v2.0.3 + github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect + github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968 + github.com/go-cmd/cmd v1.3.1 + github.com/hanwen/go-fuse/v2 v2.1.0 github.com/jollheef/go-system v0.0.0-20160710075518-6ed6b1d2b8db - github.com/olekukonko/tablewriter v0.0.4 + github.com/olekukonko/tablewriter v0.0.5 gopkg.in/alecthomas/kingpin.v2 v2.2.6 ) diff --git a/go.sum b/go.sum index 4d5d887..2afb797 100644 --- a/go.sum +++ b/go.sum @@ -1,36 +1,62 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a h1:E/8AP5dFtMhl5KPJz66Kt9G0n+7Sn41Fy1wv9/jHOrc= +github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/digitalocean/go-libvirt v0.0.0-20190715144809-7b622097a793 h1:+ItaX1GKKT70bYwazNtWeYz8QBfirNC85J70psPGgN0= -github.com/digitalocean/go-libvirt v0.0.0-20190715144809-7b622097a793/go.mod h1:PRcPVAAma6zcLpFd4GZrjR/MRpood3TamjKI2m/z/Uw= -github.com/go-cmd/cmd v1.1.0 h1:LxXflJCRKNZgoKl/0TJdzIDSGFdik3zxaeyL1yXCTsI= -github.com/go-cmd/cmd v1.1.0/go.mod h1:bkfdaV0aMvVwTINGdkU5jlQEd9gF0z4irQutl37pOd8= -github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg= -github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968 h1:ZdYBqLPrXioo+1Z97PWaTK4+jRcS45BI6JlepKtkPKI= +github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968/go.mod h1:o129ljs6alsIQTc8d6eweihqpmmrbxZ2g1jhgjhPykI= +github.com/go-cmd/cmd v1.3.1 h1:Scpez/YLL7xBmc1KRxDtHNXnamzQWqF4Sqy9SHnIMfE= +github.com/go-cmd/cmd v1.3.1/go.mod h1:VZqpYlBauogsSkJrj8NzQM6r/tztSewD/PfHCVjTdnA= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/hanwen/go-fuse v1.0.0 h1:GxS9Zrn6c35/BnfiVsZVWmsG803xwE7eVRDvcf/BEVc= github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= -github.com/hanwen/go-fuse/v2 v2.0.3 h1:kpV28BKeSyVgZREItBLnaVBvOEwv2PuhNdKetwnvNHo= -github.com/hanwen/go-fuse/v2 v2.0.3/go.mod h1:0EQM6aH2ctVpvZ6a+onrQ/vaykxh2GH7hy3e13vzTUY= +github.com/hanwen/go-fuse/v2 v2.1.0 h1:+32ffteETaLYClUj0a3aHjZ1hOPxxaNEHiZiujuDaek= +github.com/hanwen/go-fuse/v2 v2.1.0/go.mod h1:oRyA5eK+pvJyv5otpO/DgccS8y/RvYMaO00GgRLGryc= github.com/jollheef/go-system v0.0.0-20160710075518-6ed6b1d2b8db h1:HGcWru24Gt24VFEsX7mxKtO+/NnKCuQ0LYtardulWMc= github.com/jollheef/go-system v0.0.0-20160710075518-6ed6b1d2b8db/go.mod h1:Cj2JA+Wov6pwK3QTq2PuRXkZ5UM+DT3apJtBDUS8zKE= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From f063f2a90c17b6a02a37170454632861c327949f Mon Sep 17 00:00:00 2001 From: ilian Date: Mon, 20 Dec 2021 00:56:42 +0100 Subject: [PATCH 03/20] docs/installation: fix typo --- docs/installation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.rst b/docs/installation.rst index e392108..8dfa5dd 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -12,7 +12,7 @@ First, clone this repo. Then do this: /path/to/repo/nixos ]; - virtualizatiom.appvm = { + virtualisation.appvm = { enable = true; user = "${username}"; }; From 2560e852df74e415ec78ad1a62e3f2277d167337 Mon Sep 17 00:00:00 2001 From: ilian Date: Mon, 20 Dec 2021 01:03:02 +0100 Subject: [PATCH 04/20] Remove deprecated goPackagePath attribute Building otherwise fails with the following error: `goPackagePath` is not needed with `buildGoModule` --- default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/default.nix b/default.nix index eb41ede..6625b76 100644 --- a/default.nix +++ b/default.nix @@ -16,8 +16,6 @@ buildGoModule rec { buildInputs = [ makeWrapper ]; - goPackagePath = "code.dumpstack.io/tools/${pname}"; - src = ./.; vendorSha256 = "1aimli23jdqv8rifsn22qfbj2c0nc0s5czsd8qprhnr4hcsbdnkf"; From c6159a7925651cb54141383dfe872e4f3d810385 Mon Sep 17 00:00:00 2001 From: ilian Date: Mon, 20 Dec 2021 01:07:44 +0100 Subject: [PATCH 05/20] Update vendorSha256 --- default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 6625b76..ab9a87c 100644 --- a/default.nix +++ b/default.nix @@ -18,8 +18,7 @@ buildGoModule rec { src = ./.; - vendorSha256 = "1aimli23jdqv8rifsn22qfbj2c0nc0s5czsd8qprhnr4hcsbdnkf"; - modSha256 = "${vendorSha256}"; # backward compatibility + vendorSha256 = "sha256-8eU+Mf5dxL/bAMMShXvj8I1Kdd4ysBTWvgYIXwLStPI="; postFixup = '' wrapProgram $out/bin/appvm \ From 575332187704c051cb6d7a6168931145033c1b14 Mon Sep 17 00:00:00 2001 From: ilian Date: Mon, 20 Dec 2021 11:34:53 +0100 Subject: [PATCH 06/20] Fix 9p mount of /nix/store This fixes the following error during stage 1: 9pnet_virtio: no channels available for device nix-store --- xml.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xml.go b/xml.go index 929c0e8..90d9eb4 100644 --- a/xml.go +++ b/xml.go @@ -93,7 +93,7 @@ var xmlTmpl = ` - + From a3bd38c2432291802838da6e6a9488cb8c3ac05c Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 20 Dec 2021 13:42:40 +0000 Subject: [PATCH 07/20] gofmt --- appvm.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/appvm.go b/appvm.go index 25a7216..c4f1ba2 100644 --- a/appvm.go +++ b/appvm.go @@ -31,13 +31,12 @@ import ( kingpin "gopkg.in/alecthomas/kingpin.v2" ) - type networkModel int const ( - networkOffline networkModel = iota - networkQemu networkModel = iota - networkLibvirt networkModel = iota + networkOffline networkModel = iota + networkQemu networkModel = iota + networkLibvirt networkModel = iota ) func list(l *libvirt.Libvirt) { @@ -433,7 +432,7 @@ func parseNetworkModel(flagOffline bool, flagNetworking string) networkModel { if flagNetworking == "qemu" { return networkQemu } - return networkQemu // qemu is the default network model + return networkQemu // qemu is the default network model } var configDir = os.Getenv("HOME") + "/.config/appvm/" From 84374314a29345f0cbd47febe2ab7d529e13246a Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 20 Dec 2021 13:44:20 +0000 Subject: [PATCH 08/20] Use per-VM qcow2, remove it after the start --- appvm.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appvm.go b/appvm.go index c4f1ba2..19f88b2 100644 --- a/appvm.go +++ b/appvm.go @@ -161,7 +161,7 @@ func generateVM(path, name string, verbose bool) (realpath, reginfo, qcow2 strin syscall.Unlink("result") - qcow2 = os.Getenv("HOME") + "/appvm/.fake.qcow2" + qcow2 = os.Getenv("HOME") + "/appvm/." + name + ".fake.qcow2" if _, e := os.Stat(qcow2); os.IsNotExist(e) { system.System("qemu-img", "create", "-f", "qcow2", qcow2, "40M") } @@ -177,7 +177,7 @@ func isRunning(l *libvirt.Libvirt, name string) bool { func generateAppVM(l *libvirt.Libvirt, nixName, vmName, appvmPath, sharedDir string, - verbose bool, network networkModel, gui bool) (err error) { + verbose bool, network networkModel, gui bool) (qcow2 string, err error) { realpath, reginfo, qcow2, err := generateVM(appvmPath, nixName, verbose) if err != nil { @@ -270,8 +270,9 @@ func start(l *libvirt.Libvirt, name string, verbose bool, network networkModel, go stupidProgressBar() } - err := generateAppVM(l, name, vmName, appvmPath, sharedDir, + qcow2, err := generateAppVM(l, name, vmName, appvmPath, sharedDir, verbose, network, gui) + defer os.Remove(qcow2) if err != nil { log.Fatal(err) } From d698f058ffa27c4ae61bf7b81fb657301ca2c851 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 20 Dec 2021 13:47:03 +0000 Subject: [PATCH 09/20] Fix display manager configuration for 21.11 --- base.nix.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base.nix.go b/base.nix.go index 6e2fa1a..41db997 100644 --- a/base.nix.go +++ b/base.nix.go @@ -16,8 +16,8 @@ var base_nix = ` services.xserver = { enable = true; desktopManager.xterm.enable = false; - displayManager.lightdm = { - enable = true; + displayManager = { + lightdm.enable = true; autoLogin = { enable = true; user = "user"; From ce92ddf1b90961a4eaf87f4c383473c766681a53 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 20 Dec 2021 13:48:24 +0000 Subject: [PATCH 10/20] Make sure xmonad always uses the latest libc --- base.nix.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/base.nix.go b/base.nix.go index 41db997..ed3c26b 100644 --- a/base.nix.go +++ b/base.nix.go @@ -51,8 +51,7 @@ startup = do systemd.services.home-user-build-xmonad = { description = "Link xmonad configuration"; serviceConfig = { - ConditionFileNotEmpty = "!/home/user/.xmonad/xmonad.hs"; - ExecStart = "/bin/sh -c 'mkdir -p /home/user/.xmonad && ln -s /etc/xmonad.hs /home/user/.xmonad/xmonad.hs'"; + ExecStart = "/bin/sh -c 'mkdir -p /home/user/.xmonad && ln -sf /etc/xmonad.hs /home/user/.xmonad/xmonad.hs && /run/current-system/sw/bin/xmonad --recompile'"; RemainAfterExit = "yes"; User = "user"; Restart = "on-failure"; From 467f74f19aca5e6f9a62f28196e123e94e3151ed Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 23 May 2022 19:10:39 +0000 Subject: [PATCH 11/20] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a41034d..92a21d0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ [![Documentation Status](https://readthedocs.org/projects/appvm/badge/?version=latest)](https://appvm.readthedocs.io/en/latest/?badge=latest) -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R8W2UQPZ5X5JE&source=url) -[![Donate](https://img.shields.io/badge/Donate-BitCoin-green.svg)](https://blockchair.com/bitcoin/address/bc1q23fyuq7kmngrgqgp6yq9hk8a5q460f39m8nv87) # Nix application VMs: security through virtualization From 17f17be7846d872e7e26d5cb6759a52ea4113587 Mon Sep 17 00:00:00 2001 From: Jonas Heinrich Date: Mon, 23 May 2022 19:30:06 +0200 Subject: [PATCH 12/20] fix ethernet device pci slot conflict --- xml.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xml.go b/xml.go index 90d9eb4..0c13e99 100644 --- a/xml.go +++ b/xml.go @@ -35,7 +35,7 @@ var qemuParamsDefault = ` var qemuParamsWithNetwork = ` - + From 4ac4969b6679050939b5b0a4a3a74da943cef3f1 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:12:05 +0000 Subject: [PATCH 13/20] Add label to filesystem of QEMU image --- appvm.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/appvm.go b/appvm.go index 19f88b2..b4dc9a0 100644 --- a/appvm.go +++ b/appvm.go @@ -161,9 +161,13 @@ func generateVM(path, name string, verbose bool) (realpath, reginfo, qcow2 strin syscall.Unlink("result") + tmpraw := os.Getenv("HOME") + "/appvm/." + name + ".tmp.raw" qcow2 = os.Getenv("HOME") + "/appvm/." + name + ".fake.qcow2" if _, e := os.Stat(qcow2); os.IsNotExist(e) { - system.System("qemu-img", "create", "-f", "qcow2", qcow2, "40M") + system.System("qemu-img", "create", "-f", "raw", tmpraw, "40M") + system.System("mkfs.ext4", "-L", "nixos", tmpraw) + system.System("qemu-img", "convert", "-f", "raw", "-O", "qcow2", tmpraw, qcow2) + system.System("rm", tmpraw) } return From 6ac189e1e894819100f337223b5ffa0171195954 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:14:32 +0000 Subject: [PATCH 14/20] Replace deprecated defaultConfig with def in xmonad config --- base.nix.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base.nix.go b/base.nix.go index ed3c26b..3514626 100644 --- a/base.nix.go +++ b/base.nix.go @@ -37,7 +37,7 @@ var base_nix = ` environment.etc."xmonad.hs".text = '' import XMonad -main = xmonad defaultConfig +main = xmonad def { workspaces = [ "" ] , borderWidth = 0 , startupHook = startup From 7b09716347add3acb196eee6f5775291cfb9092f Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:33:55 +0000 Subject: [PATCH 15/20] Update documentation (appvm is now available in nixpkgs) --- docs/installation.rst | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 8dfa5dd..4073d36 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -4,21 +4,11 @@ Installation NixOS ----- -First, clone this repo. Then do this: - -/etc/nixos/configuration.nix:: - - imports = [ - /path/to/repo/nixos - ]; - virtualisation.appvm = { enable = true; user = "${username}"; }; -This is a temporary solution until appvm is upstreamed to nixpkgs or Nix flakes are released. - Ubuntu 20.04 ------ From 9a410f75d803b245af8249079d555af96cb4e5e1 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:34:55 +0000 Subject: [PATCH 16/20] Sync patches with nixpkgs --- patches/0001-Remove-menu-bar.patch | 31 ++++-------- patches/0002-Do-not-grab-keyboard-mouse.patch | 22 ++------- ...ame-of-appvm-applications-as-a-title.patch | 30 ++++-------- ...e-title-application-name-as-subtitle.patch | 48 ++++--------------- 4 files changed, 31 insertions(+), 100 deletions(-) diff --git a/patches/0001-Remove-menu-bar.patch b/patches/0001-Remove-menu-bar.patch index 20a0b8c..5a15686 100644 --- a/patches/0001-Remove-menu-bar.patch +++ b/patches/0001-Remove-menu-bar.patch @@ -1,25 +1,12 @@ -From c26580442a4ac18f805b1795ec250d6cf5857a49 Mon Sep 17 00:00:00 2001 -From: Mikhail Klementev -Date: Wed, 22 Jan 2020 00:25:16 +0000 -Subject: [PATCH 1/4] Remove menu bar - ---- - src/resources/ui/virt-viewer.ui | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - diff --git a/src/resources/ui/virt-viewer.ui b/src/resources/ui/virt-viewer.ui -index 93471a4..b029ad7 100644 +index 430f879..68856fc 100644 --- a/src/resources/ui/virt-viewer.ui +++ b/src/resources/ui/virt-viewer.ui -@@ -18,7 +18,7 @@ - False - - -- True -+ False - False - - --- -2.23.1 - +@@ -137,7 +137,6 @@ + + + +- True + False + True + diff --git a/patches/0002-Do-not-grab-keyboard-mouse.patch b/patches/0002-Do-not-grab-keyboard-mouse.patch index cec5b31..012c37b 100644 --- a/patches/0002-Do-not-grab-keyboard-mouse.patch +++ b/patches/0002-Do-not-grab-keyboard-mouse.patch @@ -1,20 +1,11 @@ -From eac430d01f486e15b55d6fa992e77ded77bb4b1a Mon Sep 17 00:00:00 2001 -From: Mikhail Klementev -Date: Wed, 22 Jan 2020 00:41:34 +0000 -Subject: [PATCH 2/4] Do not grab keyboard/mouse - ---- - src/virt-viewer-display-spice.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c -index 311178b..8e68de2 100644 +index 2265f02..1d60d81 100644 --- a/src/virt-viewer-display-spice.c +++ b/src/virt-viewer-display-spice.c -@@ -307,8 +307,8 @@ virt_viewer_display_spice_new(VirtViewerSessionSpice *session, - gtk_container_add(GTK_CONTAINER(self), GTK_WIDGET(self->priv->display)); - gtk_widget_show(GTK_WIDGET(self->priv->display)); - g_object_set(self->priv->display, +@@ -317,8 +317,8 @@ virt_viewer_display_spice_new(VirtViewerSessionSpice *session, + gtk_container_add(GTK_CONTAINER(self), GTK_WIDGET(self->display)); + gtk_widget_show(GTK_WIDGET(self->display)); + g_object_set(self->display, - "grab-keyboard", TRUE, - "grab-mouse", TRUE, + "grab-keyboard", FALSE, @@ -22,6 +13,3 @@ index 311178b..8e68de2 100644 "resize-guest", FALSE, "scaling", TRUE, NULL); --- -2.23.1 - diff --git a/patches/0003-Use-name-of-appvm-applications-as-a-title.patch b/patches/0003-Use-name-of-appvm-applications-as-a-title.patch index 44c7d05..51a47bb 100644 --- a/patches/0003-Use-name-of-appvm-applications-as-a-title.patch +++ b/patches/0003-Use-name-of-appvm-applications-as-a-title.patch @@ -1,26 +1,14 @@ -From c5b51c0a540af34499f2b2a49cb64599c06ba293 Mon Sep 17 00:00:00 2001 -From: Mikhail Klementev -Date: Wed, 22 Jan 2020 01:24:57 +0000 -Subject: [PATCH 3/4] Use name of appvm applications as a title - ---- - src/virt-viewer-window.c | 3 +++ - 1 file changed, 3 insertions(+) - diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c -index 4c08423..cc8a440 100644 +index fe740ce..d45fd4f 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c -@@ -1362,6 +1362,9 @@ virt_viewer_window_update_title(VirtViewerWindow *self) - - if (!ungrab && !priv->subtitle) - title = g_strdup(g_get_application_name()); -+ else if (g_str_has_prefix(priv->subtitle, "appvm_")) +@@ -1342,6 +1342,9 @@ virt_viewer_window_update_title(VirtViewerWindow *self) + grabhint, + g_get_application_name()); + } ++ } else if (g_str_has_prefix(self->subtitle, "appvm_")) { + /* Use name of the application as a title */ -+ title = g_strdup_printf(_("%s"), &priv->subtitle[strlen("appvm_")]); - else ++ title = g_strdup_printf(_("%s"), &self->subtitle[strlen("appvm_")]); + } else if (self->subtitle) { /* translators: - * This is " - " --- -2.23.1 - + * This is " - " diff --git a/patches/0004-Use-title-application-name-as-subtitle.patch b/patches/0004-Use-title-application-name-as-subtitle.patch index 05219c1..3c51786 100644 --- a/patches/0004-Use-title-application-name-as-subtitle.patch +++ b/patches/0004-Use-title-application-name-as-subtitle.patch @@ -1,44 +1,12 @@ -From 8e95408365b57c64a738381d132ecdc844013afb Mon Sep 17 00:00:00 2001 -From: Mikhail Klementev -Date: Wed, 22 Jan 2020 02:27:26 +0000 -Subject: [PATCH 4/4] Use title (application name) as subtitle - ---- - src/virt-viewer-app.c | 21 ++------------------- - 1 file changed, 2 insertions(+), 19 deletions(-) - diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c -index 343b1af..8267f82 100644 +index b977b7b..36bce34 100644 --- a/src/virt-viewer-app.c +++ b/src/virt-viewer-app.c -@@ -718,25 +718,8 @@ virt_viewer_app_set_window_subtitle(VirtViewerApp *app, - gchar *subtitle = NULL; - const gchar *title = virt_viewer_app_get_title(app); +@@ -976,6 +976,7 @@ virt_viewer_app_set_window_subtitle(VirtViewerApp *app, + *d = '%'; + } else + subtitle = g_strdup_printf("%s (%s)", title, desc); ++ subtitle = g_strdup_printf("%s", title); + g_free(desc); + } -- if (title != NULL) { -- VirtViewerDisplay *display = virt_viewer_window_get_display(window); -- gchar *d = strstr(title, "%d"); -- gchar *desc = NULL; -- -- if (display && VIRT_VIEWER_IS_DISPLAY_VTE(display)) { -- g_object_get(display, "name", &desc, NULL); -- } else { -- desc = g_strdup_printf("%d", nth + 1); -- } -- -- if (d != NULL) { -- *d = '\0'; -- subtitle = g_strdup_printf("%s%s%s", title, desc, d + 2); -- *d = '%'; -- } else -- subtitle = g_strdup_printf("%s (%s)", title, desc); -- g_free(desc); -- } -+ if (title != NULL) -+ subtitle = g_strdup_printf("%s", title); - - g_object_set(window, "subtitle", subtitle, NULL); - g_free(subtitle); --- -2.23.1 - From 921da44d09d85a9796bbd249ec7b3d17cf1b86ca Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:39:34 +0000 Subject: [PATCH 17/20] Sync *.nix with nixpkgs changes --- default.nix | 2 +- shell.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index ab9a87c..c360527 100644 --- a/default.nix +++ b/default.nix @@ -18,7 +18,7 @@ buildGoModule rec { src = ./.; - vendorSha256 = "sha256-8eU+Mf5dxL/bAMMShXvj8I1Kdd4ysBTWvgYIXwLStPI="; + vendorHash = "sha256-8eU+Mf5dxL/bAMMShXvj8I1Kdd4ysBTWvgYIXwLStPI="; postFixup = '' wrapProgram $out/bin/appvm \ diff --git a/shell.nix b/shell.nix index 39c8cc8..4ae6feb 100644 --- a/shell.nix +++ b/shell.nix @@ -1,4 +1,4 @@ { pkgs ? import {} }: with pkgs; mkShell { - buildInputs = [ go gocode virt-viewer virtmanager ]; + buildInputs = [ go virt-viewer virtmanager ]; } From 2e87dbf424411f9ab741ac15652442b9548683de Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:47:54 +0000 Subject: [PATCH 18/20] Keep upstream virt-viewer patches --- default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index c360527..1459660 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,7 @@ { pkgs ? import {}, ... }: let - virt-manager-without-menu = pkgs.virt-viewer.overrideAttrs(x: { - patches = [ + virt-manager-without-menu = pkgs.virt-viewer.overrideAttrs (oldAttrs: { + patches = oldAttrs.patches ++ [ ./patches/0001-Remove-menu-bar.patch ./patches/0002-Do-not-grab-keyboard-mouse.patch ./patches/0003-Use-name-of-appvm-applications-as-a-title.patch From 902ce18661e0a27db017b24eb04d65f6121733ea Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:48:17 +0000 Subject: [PATCH 19/20] Remove macOS workflow --- .github/workflows/macos.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 3aacb98..0000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: macOS - -on: [push] - -jobs: - build: - name: Build - runs-on: macOS-latest - steps: - - uses: actions/checkout@v1 - - - name: Fetch dependencies - run: go get -d ./... - - - name: Build - run: go build From ef856f9e1f49eeabfdf51971fa683b22c0b17295 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 21 Apr 2025 17:49:02 +0000 Subject: [PATCH 20/20] Fix shell.nix --- shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index 4ae6feb..c25b0e3 100644 --- a/shell.nix +++ b/shell.nix @@ -1,4 +1,4 @@ { pkgs ? import {} }: with pkgs; mkShell { - buildInputs = [ go virt-viewer virtmanager ]; + buildInputs = [ go virt-viewer virt-manager ]; }