aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkvmx20
-rw-r--r--kvmxfile7
-rwxr-xr-xprovision/desktop-basic50
-rwxr-xr-xprovision/desktop-full7
-rw-r--r--provision/files/etc/lightdm/lightdm.conf173
-rwxr-xr-xprovision/webserver6
6 files changed, 257 insertions, 6 deletions
diff --git a/kvmx b/kvmx
index 9cec362..5d555dc 100755
--- a/kvmx
+++ b/kvmx
@@ -10,6 +10,9 @@ ACTION="$1"
VM="$2"
GLOBAL_USER_CONFIG_FOLDER="$HOME/.config/kvmx"
+# Alias to be used in config files
+KVMX_BASE="$DIRNAME"
+
# Run spice client
function kvmx_spice {
# https://lists.freedesktop.org/archives/spice-devel/2013-September/014643.html
@@ -162,7 +165,7 @@ function kvmx_rsync {
ORIG="$3"
DEST="$4"
SSH="`cat $SSHFILE`"
- rsync -av "$SSH_COMMAND -p $SSH" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
+ rsync -av -e "$SSH_COMMAND -o Port=$SSH" --rsync-path "sudo rsync" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
}
# List guests
@@ -347,12 +350,21 @@ function kvmx_provision {
exit 1
fi
- if [ -z "$provision_script" ]; then
- echo "$BASENAME: error: parameter provision_script is not configured for $VM."
+ if [ -z "$provision_command" ]; then
+ echo "$BASENAME: error: parameter provision_command is not configured for $VM."
exit 1
fi
- echo "sudo $provision_script" | kvmx_ssh
+ if [ ! -z "$provision_rsync" ]; then
+ SSH="`cat $SSHFILE`"
+ ORIG="`echo $provision_rsync | cut -d ' ' -f 1`"
+ DEST="`echo $provision_rsync | cut -d ' ' -f 2`"
+
+ echo "sudo mkdir -p `dirname $DEST`" | kvmx_ssh
+ rsync -av -e "$SSH_COMMAND -o Port=$SSH" --rsync-path "sudo rsync" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
+ fi
+
+ echo "sudo $provision_command" | kvmx_ssh
}
# Print guest image file name
diff --git a/kvmxfile b/kvmxfile
index d8394c8..70d9f21 100644
--- a/kvmxfile
+++ b/kvmxfile
@@ -7,10 +7,13 @@
# Set this is you want to be able to share folders between host and guest.
shared_folder="."
-shared_folder_mountpoint="/home/user/$VM"
+shared_folder_mountpoint="/home/user/code/$VM"
+
+# Folder to sync during provisioning in the format "/host/folder /guest/folder".
+#provision_rsync="$KVMX_BASE/provision/ /usr/local/share/kvmx/provision/"
# Absolute path for a provision script located inside the guest.
-#provision_script="/home/user/$VM/provision"
+#provision_command="/usr/share/kvmx/provision/desktop-basic"
# Set this if you want to automatically attach an spice client when the machine
# boots.
diff --git a/provision/desktop-basic b/provision/desktop-basic
new file mode 100755
index 0000000..e068cfb
--- /dev/null
+++ b/provision/desktop-basic
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Basic desktop provisioner.
+#
+
+# Parameters
+DIRNAME="`dirname $0`"
+
+# Dependencies
+sudo apt-get update
+sudo apt-get install -y git
+
+# Tools
+git clone --recursive https://git.fluxo.info/rhatto/apps
+apps/inception init
+apps/inception load
+
+# Environment
+sudo apt-get install -y lightdm ratpoison awesome
+sudo apt-get install -y firefox-esr chromium
+
+# Configuration
+sudo cp $DIRNAME/files/etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf
+
+mkdir -p .custom
+
+cat <<-EOF | tee .custom/xsession > /dev/null
+#
+# Custom X11 session config
+#
+WINDOW_MANAGER="ratpoison"
+PROGRAMS="$PROGRAMS terminal"
+
+#
+# Set screen size
+#
+
+# On stretch onwards Virtual-0 was renamed to Virtual-0
+# Modeline determined by running "cvt 1280 780"
+xrandr --newmode "1280x780_60.00" 81.50 1280 1352 1480 1680 780 783 793 810 -hsync +vsync
+xrandr --addmode Virtual-0 1280x780_60.00
+
+# Modeline determined by running "cvt 1368 748"
+xrandr --newmode "1368x748_60.00" 83.00 1368 1440 1576 1784 748 751 761 777 -hsync +vsync
+xrandr --addmode Virtual-0 1368x748_60.00
+
+# Set default modeline
+#xrandr --output Virtual-0 --mode 1368x748_60.00
+xrandr --output Virtual-0 --mode 1280x780_60.00
+EOF
diff --git a/provision/desktop-full b/provision/desktop-full
new file mode 100755
index 0000000..7075b72
--- /dev/null
+++ b/provision/desktop-full
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# Full desktop
+#
+
+# Install cinnamon
+sudo apt-get install -y cinnamon
diff --git a/provision/files/etc/lightdm/lightdm.conf b/provision/files/etc/lightdm/lightdm.conf
new file mode 100644
index 0000000..1fcb471
--- /dev/null
+++ b/provision/files/etc/lightdm/lightdm.conf
@@ -0,0 +1,173 @@
+
+The programs included with the Debian GNU/Linux system are free software;
+the exact distribution terms for each program are described in the
+individual files in /usr/share/doc/*/copyright.
+
+Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
+permitted by applicable law.
+You have new mail.
+#
+# General configuration
+#
+# start-default-seat = True to always start one seat if none are defined in the configuration
+# greeter-user = User to run greeter as
+# minimum-display-number = Minimum display number to use for X servers
+# minimum-vt = First VT to run displays on
+# lock-memory = True to prevent memory from being paged to disk
+# user-authority-in-system-dir = True if session authority should be in the system location
+# guest-account-script = Script to be run to setup guest account
+# logind-check-graphical = True to on start seats that are marked as graphical by logind
+# log-directory = Directory to log information to
+# run-directory = Directory to put running state in
+# cache-directory = Directory to cache to
+# sessions-directory = Directory to find sessions
+# remote-sessions-directory = Directory to find remote sessions
+# greeters-directory = Directory to find greeters
+# backup-logs = True to move add a .old suffix to old log files when opening new ones
+#
+[LightDM]
+#start-default-seat=true
+#greeter-user=lightdm
+#minimum-display-number=0
+#minimum-vt=7
+#lock-memory=true
+#user-authority-in-system-dir=false
+#guest-account-script=guest-account
+#logind-check-graphical=false
+#log-directory=/var/log/lightdm
+#run-directory=/var/run/lightdm
+#cache-directory=/var/cache/lightdm
+#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
+#remote-sessions-directory=/usr/share/lightdm/remote-sessions
+#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters
+#backup-logs=true
+
+#
+# Seat configuration
+#
+# Seat configuration is matched against the seat name glob in the section, for example:
+# [Seat:*] matches all seats and is applied first.
+# [Seat:seat0] matches the seat named "seat0".
+# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
+#
+# type = Seat type (xlocal, xremote, unity)
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
+# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
+# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
+# xserver-config = Config file to pass to X server
+# xserver-layout = Layout to pass to X server
+# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
+# xserver-share = True if the X server is shared for both greeter and session
+# xserver-hostname = Hostname of X server (only for type=xremote)
+# xserver-display-number = Display number of X server (only for type=xremote)
+# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
+# xdmcp-port = XDMCP UDP/IP port to communicate on
+# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
+# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
+# unity-compositor-timeout = Number of seconds to wait for compositor to start
+# greeter-session = Session to load for greeter
+# greeter-hide-users = True to hide the user list
+# greeter-allow-guest = True if the greeter should show a guest login option
+# greeter-show-manual-login = True if the greeter should offer a manual login option
+# greeter-show-remote-login = True if the greeter should offer a remote login option
+# user-session = Session to load for users
+# allow-user-switching = True if allowed to switch users
+# allow-guest = True if guest login is allowed
+# guest-session = Session to load for guests (overrides user-session)
+# session-wrapper = Wrapper script to run session with
+# greeter-wrapper = Wrapper script to run greeter with
+# guest-wrapper = Wrapper script to run guest sessions with
+# display-setup-script = Script to run when starting a greeter session (runs as root)
+# display-stopped-script = Script to run after stopping the display server (runs as root)
+# greeter-setup-script = Script to run when starting a greeter (runs as root)
+# session-setup-script = Script to run when starting a user session (runs as root)
+# session-cleanup-script = Script to run when quitting a user session (runs as root)
+# autologin-guest = True to log in as guest by default
+# autologin-user = User to log in with by default (overrides autologin-guest)
+# autologin-user-timeout = Number of seconds to wait before loading default user
+# autologin-session = Session to load for automatic login (overrides user-session)
+# autologin-in-background = True if autologin session should not be immediately activated
+# exit-on-failure = True if the daemon should exit if this seat fails
+#
+[Seat:*]
+#type=xlocal
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
+#xserver-command=X
+#xmir-command=Xmir
+#xserver-config=
+#xserver-layout=
+#xserver-allow-tcp=false
+#xserver-share=true
+#xserver-hostname=
+#xserver-display-number=
+#xdmcp-manager=
+#xdmcp-port=177
+#xdmcp-key=
+#unity-compositor-command=unity-system-compositor
+#unity-compositor-timeout=60
+#greeter-session=example-gtk-gnome
+#greeter-hide-users=false
+#greeter-allow-guest=true
+#greeter-show-manual-login=false
+#greeter-show-remote-login=true
+#user-session=default
+#allow-user-switching=true
+#allow-guest=true
+#guest-session=
+#session-wrapper=lightdm-session
+#greeter-wrapper=
+#guest-wrapper=
+#display-setup-script=
+#display-stopped-script=
+#greeter-setup-script=
+#session-setup-script=
+#session-cleanup-script=
+#autologin-guest=false
+autologin-user=user
+autologin-user-timeout=0
+#autologin-in-background=false
+#autologin-session=
+#exit-on-failure=false
+
+#
+# XDMCP Server configuration
+#
+# enabled = True if XDMCP connections should be allowed
+# port = UDP/IP port to listen for connections on
+# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
+# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
+# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
+#
+# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively
+# it can be a word and the first 7 characters are used as the key.
+#
+[XDMCPServer]
+#enabled=false
+#port=177
+#listen-address=
+#key=
+#hostname=
+
+#
+# VNC Server configuration
+#
+# enabled = True if VNC connections should be allowed
+# command = Command to run Xvnc server with
+# port = TCP/IP port to listen for connections on
+# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
+# width = Width of display to use
+# height = Height of display to use
+# depth = Color depth of display to use
+#
+[VNCServer]
+#enabled=false
+#command=Xvnc
+#port=5900
+#listen-address=
+#width=1024
+#height=768
+#depth=8
diff --git a/provision/webserver b/provision/webserver
new file mode 100755
index 0000000..1ef545e
--- /dev/null
+++ b/provision/webserver
@@ -0,0 +1,6 @@
+#!/bin/bash
+#
+# Webserver example.
+#
+
+sudo apt-get install -y apache2