aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2024-11-04 12:25:11 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2024-11-04 12:25:11 +0530
commit7eebab21bbb23ae2029980a6ca3016a8872bc240 (patch)
tree6f0c1e9378389fd75ca2b9fe4afbf46a6052060f
parent8c7ee42eedc6fcbc2eaf7ffbc9112835d915bc48 (diff)
Change VM structure, move away from vagrant
-rw-r--r--.gitignore3
-rwxr-xr-xbuild.sh42
-rw-r--r--c_debian/Dockerfile25
-rw-r--r--compose.yaml24
-rw-r--r--debian/Vagrantfile31
-rw-r--r--p_windows11/Vagrantfile53
-rw-r--r--scripts/provision-root.sh8
-rw-r--r--scripts/provision-user.sh9
-rw-r--r--vagrant-libvirt-2.4.gembin136704 -> 0 bytes
9 files changed, 53 insertions, 142 deletions
diff --git a/.gitignore b/.gitignore
index aa27a55..a89285e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
-**/.vagrant
-swapfile
+*.img
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..9b5d342
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+
+if [ "$#" -ne 2 ]; then
+ echo "Usage: $0 [vm_name] [ip_addr:192.168.122.x]"
+ exit
+fi
+
+VM_NAME="$1"
+IP_ADDR="$2"
+AMD_GPU_RENDERNODE="/dev/dri/by-path/pci-0000:05:00.0-render"
+
+set -xe
+
+virt-builder debian-12 \
+ -o imgs/$VM_NAME.img \
+ --size 35G \
+ --hostname $VM_NAME \
+ -m 4096 --smp 4 \
+ --run-command "ssh-keygen -A" \
+ --append-line "/etc/network/interfaces:allow-hotplug enp1s0" \
+ --append-line "/etc/network/interfaces:auto enp1s0" \
+ --append-line "/etc/network/interfaces:iface enp1s0 inet static" \
+ --append-line "/etc/network/interfaces: address $IP_ADDR" \
+ --append-line "/etc/network/interfaces: gateway 192.168.122.1" \
+ --run-command "apt-get update" \
+ --run-command "apt-get install task-mate-desktop spice-vdagent qemu-guest-agent -y" \
+ --run scripts/provision-root.sh \
+ --ssh-inject compromyse:file:"$HOME/.ssh/id_rsa.pub" \
+ --upload "scripts/provision-user.sh:/home/compromyse/install-nix.sh" \
+ --write "/etc/resolv.conf:nameserver 8.8.8.8"
+
+sudo virt-install --import \
+ --os-variant debian12 \
+ --name $VM_NAME \
+ --ram 2048 \
+ --cpu host-passthrough,cache.mode=passthrough \
+ --vcpus 4,sockets=1,cores=2,threads=2 \
+ --disk path=imgs/$VM_NAME.img,format=raw,bus=virtio \
+ --video virtio,model.acceleration.accel3d=yes \
+ --graphics spice,gl.enable=yes,listen=none,gl.rendernode="$AMD_GPU_RENDERNODE" \
+ --noautoconsole \
+ --noreboot
diff --git a/c_debian/Dockerfile b/c_debian/Dockerfile
deleted file mode 100644
index 420ae94..0000000
--- a/c_debian/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-FROM debian:bookworm
-
-COPY scripts/provision-root.sh /provision-root.sh
-RUN bash /provision-root.sh
-RUN rm /provision-root.sh
-
-COPY scripts/provision-docker.sh /tmp/provision-docker.sh
-RUN bash /tmp/provision-docker.sh
-
-USER compromyse
-WORKDIR /home/compromyse
-
-ENV USER=compromyse
-ENV CONFIG=d
-ENV TERM=screen-256color-bce
-
-RUN mkdir ~/.ssh
-RUN --mount=type=secret,id=id_rsa,required sudo cp /run/secrets/id_rsa ~/.ssh/id_rsa
-RUN --mount=type=secret,id=id_rsa_pub,required sudo cp /run/secrets/id_rsa_pub ~/.ssh/id_rsa.pub
-RUN sudo chown compromyse:compromyse ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
-
-COPY scripts/provision-user.sh /tmp/provision-user.sh
-RUN bash /tmp/provision-user.sh
-
-CMD [ "bash" ]
diff --git a/compose.yaml b/compose.yaml
deleted file mode 100644
index d63c308..0000000
--- a/compose.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-services:
- debian:
- container_name: debian
- build:
- context: .
- dockerfile: c_debian/Dockerfile
- secrets:
- - id_rsa
- - id_rsa_pub
-
- stdin_open: true
- tty: true
- volumes:
- - ~/shared:/shared
- deploy:
- resources:
- limits:
- cpus: '14'
-
-secrets:
- id_rsa:
- file: /home/compromyse/.ssh/id_rsa
- id_rsa_pub:
- file: ~/.ssh/id_rsa.pub
diff --git a/debian/Vagrantfile b/debian/Vagrantfile
deleted file mode 100644
index b2d5cba..0000000
--- a/debian/Vagrantfile
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-Vagrant.configure('2') do |config|
- config.vm.box = 'cloud-image/debian-12'
-
- config.vm.box_check_update = false
-
- # config.vm.network 'forwarded_port', guest: 80, host: 8080
- # config.vm.network 'forwarded_port', guest: 80, host: 8080, host_ip: '127.0.0.1'
-
- # config.vm.synced_folder './data', '/data'
- config.vm.synced_folder '~/shared', '/shared', type: '9p', disabled: false, accessmode: 'mapped'
- config.vm.synced_folder '.', '/vagrant', type: '9p', disabled: false, accessmode: 'mapped'
-
- config.vm.provider :libvirt do |libvirt|
- libvirt.cpus = 14
- libvirt.cputopology :sockets => '1', :cores => '7', :threads => '2'
- libvirt.memory = 32768
-
- libvirt.machine_virtual_size = 120
-
- libvirt.cpu_model = 'host-passthrough'
- end
-
- config.vm.provision 'file', source: '~/.ssh/id_rsa', destination: '.ssh/id_rsa'
- config.vm.provision 'file', source: '~/.ssh/id_rsa.pub', destination: '.ssh/id_rsa.pub'
-
- config.vm.provision 'shell', path: '../scripts/provision-root.sh'
- config.vm.provision 'shell', path: '../scripts/provision-user.sh', privileged: false, env: { 'CONFIG': 'v' }
-end
diff --git a/p_windows11/Vagrantfile b/p_windows11/Vagrantfile
deleted file mode 100644
index 38e197c..0000000
--- a/p_windows11/Vagrantfile
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-#
-
-Vagrant.configure('2') do |config|
- config.vm.box = 'valengus/windows11-22h2-x64'
-
- config.vm.box_check_update = false
-
- # config.vm.synced_folder './data', '/data'
- # config.vm.synced_folder '~/shared', '/shared', type: '9p', disabled: false, accessmode: 'mapped'
- # config.vm.synced_folder '.', '/vagrant', type: '9p', accessmode: 'mapped'
-
- config.vm.provider :libvirt do |libvirt|
- libvirt.cpus = 8
- libvirt.cputopology sockets: '1', cores: '4', threads: '2'
- libvirt.memory = 32768
-
- libvirt.video_type = 'vga'
- libvirt.input type: 'mouse', bus: 'virtio'
- libvirt.input type: 'keyboard', bus: 'virtio'
-
- libvirt.graphics_type = 'spice'
- libvirt.graphics_port = '-1'
-
- libvirt.pci bus: '0x01', slot: '0x00', function: '0x00'
- libvirt.pci bus: '0x01', slot: '0x00', function: '0x01'
- libvirt.shmem name: 'looking-glass', type: 'ivshmem-plain', size: '32'
- libvirt.memorybacking :access, mode: 'shared'
- libvirt.memorybacking :source, type: 'memfd'
-
- libvirt.machine_virtual_size = 60
- libvirt.cpu_model = 'host-passthrough'
- end
-
- config.vm.provision 'shell', path: '../scripts/provision-win.bat'
-
- config.trigger.before :up do |t|
- t.info = "Binding to VFIO"
- t.run = {
- path: '../scripts/bind-vfio.sh'
- }
- end
-
- [ :destroy, :halt ].each do |action|
- config.trigger.after action do |t|
- t.info = "Unbinding VFIO"
- t.run = {
- path: '../scripts/unbind-vfio.sh'
- }
- end
- end
-end
diff --git a/scripts/provision-root.sh b/scripts/provision-root.sh
index 224a6f1..4cd8d17 100644
--- a/scripts/provision-root.sh
+++ b/scripts/provision-root.sh
@@ -4,9 +4,11 @@ set -xe
export DEBIAN_FRONTEND=noninteractive
-apt-get update
-apt-get upgrade -y
-
apt-get install -y git curl xz-utils sudo ssh
+useradd compromyse -G sudo -p changeme -s /bin/bash
+mkdir /home/compromyse
+cp -rT /etc/skel /home/compromyse
+chown -R compromyse:compromyse /home/compromyse
+echo "compromyse ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
unset DEBIAN_FRONTEND
diff --git a/scripts/provision-user.sh b/scripts/provision-user.sh
index 44472f4..79d5558 100644
--- a/scripts/provision-user.sh
+++ b/scripts/provision-user.sh
@@ -2,6 +2,8 @@
set -xe
+CONFIG=vm
+
sh <(curl -L https://nixos.org/nix/install) --no-daemon
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
@@ -9,12 +11,11 @@ sh <(curl -L https://nixos.org/nix/install) --no-daemon
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
-nix-shell '<home-manager>' -A install
+nix-shell "<home-manager>" -A install
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
-ssh-keyscan github.com >> ~/.ssh/known_hosts
-git clone git@github.com:compromyse/dotfiles $HOME/.config/home-manager/dotfiles
-git clone git@github.com:tmux-plugins/tpm $HOME/.tmux/plugins/tpm
+git clone https://github.com/compromyse/dotfiles $HOME/.config/home-manager/dotfiles
+git clone https://github.com/tmux-plugins/tpm $HOME/.tmux/plugins/tpm
rm $HOME/.config/home-manager/home.nix
ln -s $HOME/.config/home-manager/dotfiles/machines/$CONFIG/home.nix $HOME/.config/home-manager/home.nix
diff --git a/vagrant-libvirt-2.4.gem b/vagrant-libvirt-2.4.gem
deleted file mode 100644
index b7040cf..0000000
--- a/vagrant-libvirt-2.4.gem
+++ /dev/null
Binary files differ