diff --git a/Makefile b/Makefile
index b46170b..8a07863 100644
--- a/Makefile
+++ b/Makefile
@@ -35,6 +35,7 @@ ANACONDA_VERSION := $(call spec_version,anaconda/anaconda.spec)
FIRSTBOOT_VERSION := $(call spec_version,firstboot/firstboot.spec)
QBSLOGOS_VERSION := $(call spec_version,qubes-logos/qubes-logos.spec)
QBSRELEASE_VERSION := $(call spec_version,qubes-release/qubes-release.spec)
+LORAXQBS_VERSION := $(call spec_version,lorax-templates-qubes/lorax-templates-qubes.spec)
PUNGI_OPTS := --nosource --nodebuginfo --nogreedy --all-stages
ifdef QUBES_RELEASE
@@ -55,10 +56,10 @@ help:
echo; \
exit 0;
-.PHONY: rpms rpms_anaconda rpms_firstboot rpms_logos rpms_release \
- update-repo update-repo-testing clean
+.PHONY: rpms rpms_anaconda rpms_firstboot rpms_logos rpms_release rpms_lorax \
+ update-repo update-repo-testing clean iso
-rpms: rpms_anaconda rpms_firstboot rpms_logos rpms_release
+rpms: rpms_anaconda rpms_firstboot rpms_logos rpms_release rpms_lorax
rpm --addsign `ls -d rpm/x86_64/*.rpm rpm/i686/*.rpm rpm/noarch/*.rpm 2>/dev/null`
rpms-dom0: rpms
@@ -68,6 +69,9 @@ rpms-vm:
rpm/SOURCES/anaconda-$(ANACONDA_VERSION).tar.bz2: anaconda anaconda/anaconda.spec
$(call package,anaconda,$(ANACONDA_VERSION))
+rpm/SOURCES/lorax-templates-qubes-$(LORAXQBS_VERSION).tar.bz2: lorax-templates-qubes lorax-templates-qubes/lorax-templates-qubes.spec
+ $(call package,lorax-templates-qubes,$(LORAXQBS_VERSION))
+
rpm/SOURCES/firstboot-$(FIRSTBOOT_VERSION).tar.bz2: firstboot firstboot/firstboot.spec
$(call package,firstboot,$(FIRSTBOOT_VERSION))
@@ -80,6 +84,9 @@ rpm/SOURCES/qubes-release-$(QBSRELEASE_VERSION).tar.bz2: qubes-release qubes-rel
rpms_anaconda: rpm/SOURCES/anaconda-$(ANACONDA_VERSION).tar.bz2
rpmbuild $(RPMBUILD_DEFINES) -bb anaconda/anaconda.spec
+rpms_lorax: rpm/SOURCES/lorax-templates-qubes-$(LORAXQBS_VERSION).tar.bz2
+ rpmbuild $(RPMBUILD_DEFINES) -bb lorax-templates-qubes/lorax-templates-qubes.spec
+
rpms_firstboot: rpm/SOURCES/firstboot-$(FIRSTBOOT_VERSION).tar.bz2
rpmbuild $(RPMBUILD_DEFINES) -bb firstboot/firstboot.spec
@@ -92,6 +99,7 @@ rpms_release: rpm/SOURCES/qubes-release-$(QBSRELEASE_VERSION).tar.bz2
RPMS = rpm/noarch/qubes-logos-$(QBSLOGOS_VERSION)-*.rpm \
rpm/noarch/qubes-release-$(QBSRELEASE_VERSION)-*.rpm \
rpm/noarch/qubes-release-notes-$(QBSRELEASE_VERSION)-*.rpm \
+ rpm/noarch/lorax-templates-qubes-$(LORAXQBS_VERSION)-*.rpm \
rpm/x86_64/anaconda-$(ANACONDA_VERSION)-*.rpm \
rpm/x86_64/firstboot-$(FIRSTBOOT_VERSION)-*.rpm
diff --git a/lorax-templates-qubes/lorax-templates-qubes.spec b/lorax-templates-qubes/lorax-templates-qubes.spec
new file mode 100644
index 0000000..f14b196
--- /dev/null
+++ b/lorax-templates-qubes/lorax-templates-qubes.spec
@@ -0,0 +1,47 @@
+Name: lorax-templates-qubes
+Version: 0.2
+Release: 1%{?dist}
+Summary: Lorax templates for Qubes installation ISO
+
+Group: Applications/System
+License: GPLv2+
+URL: http://www.qubes-os.org/
+Source0: %{name}-%{version}.tar.bz2
+
+#BuildRequires:
+Requires: lorax
+BuildArch: noarch
+
+%description
+Lorax templates for Qubes installation ISO.
+
+%prep
+%setup -q
+
+
+%build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/usr/share/lorax-qubes
+cp -r templates/* $RPM_BUILD_ROOT/usr/share/lorax-qubes/
+
+%post
+# pungi does not allow to specify alternative config, so must override the default one
+if [ -r /etc/lorax/lorax.conf -a ! -r /etc/lorax/lorax-pre-qubes.conf ]; then
+ mv /etc/lorax/lorax.conf /etc/lorax/lorax-pre-qubes.conf
+fi
+
+cat > /etc/lorax/lorax.conf << EOF
+# Lorax configuration file
+[lorax]
+sharedir: /usr/share/lorax-qubes
+EOF
+
+%files
+%defattr(-,root,root,-)
+/usr/share/lorax-qubes
+
+
+%changelog
+
diff --git a/lorax-templates-qubes/templates/appliance/libvirt.tmpl b/lorax-templates-qubes/templates/appliance/libvirt.tmpl
new file mode 100644
index 0000000..a739e63
--- /dev/null
+++ b/lorax-templates-qubes/templates/appliance/libvirt.tmpl
@@ -0,0 +1,35 @@
+
+
+ ${name}
+
+
+
+ ${arch}
+
+
+
+
+%for disk, letter in zip(disks, xrange(97, 123)):
+
+%endfor
+
+
+ ${vcpus}
+ ${memory}
+%for net in networks:
+
+%endfor
+
+
+
+
+%for disk in disks:
+
+ %if disk.checksum:
+ ${disk.checksum}
+ %endif
+
+%endfor
+
+
+
diff --git a/lorax-templates-qubes/templates/arm.tmpl b/lorax-templates-qubes/templates/arm.tmpl
new file mode 100644
index 0000000..fdf5326
--- /dev/null
+++ b/lorax-templates-qubes/templates/arm.tmpl
@@ -0,0 +1,92 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, outroot, arch"/>
+<%
+configdir="tmp/config_files/uboot"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="boot"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+
+# different platforms use different kernel load addresses.
+# include a 'baseline' kernel for no 'flavor'.
+kernelAddress = { 'baseline' : '0x00008000',
+ 'highbank' : '0x00008000',
+ 'imx' : '0x90008000',
+ 'kirkwood' : '0x00008000',
+ 'mvebu' : '0x00008000',
+ 'omap' : '0x80008000',
+ 'tegra' : '0x00008000',
+ }
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+# Add platforms to treeinfo for Beaker support.
+treeinfo ${basearch} platforms highbank,imx,mvebu,omap,tegra
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ installkernel images-${kernel.flavor}-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-${kernel.flavor}-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+
+ %if doupgrade:
+ ## install upgrade image
+ installupgradeinitrd images-${kernel.flavor}-${basearch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade-${kernel.flavor}.img
+ %endif
+
+ ## create U-Boot wrapped images
+
+ runcmd mkimage \
+ -A arm -O linux -T ramdisk -C none \
+ -a 0 -e 0 \
+ -n "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/initrd-${kernel.flavor}.img \
+ ${outroot}/${KERNELDIR}/uInitrd-${kernel.flavor}
+
+ runcmd mkimage \
+ -A arm -O linux -T kernel -C none \
+ -a ${kernelAddress[kernel.flavor]} -e ${kernelAddress[kernel.flavor]} \
+ -n "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/vmlinuz-${kernel.flavor} \
+ ${outroot}/${KERNELDIR}/uImage-${kernel.flavor}
+
+ treeinfo images-${kernel.flavor}-${basearch} uimage ${KERNELDIR}/uImage-${kernel.flavor}
+ treeinfo images-${kernel.flavor}-${basearch} uinitrd ${KERNELDIR}/uInitrd-${kernel.flavor}
+
+ %else:
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+ %if doupgrade:
+ ## install upgrade image
+ installupgradeinitrd images-${basearch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+ %endif
+
+ ## create U-Boot wrapped images
+
+ runcmd mkimage \
+ -A arm -O linux -T ramdisk -C none \
+ -a 0 -e 0 \
+ -n "${product.name} ${product.version} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/initrd.img \
+ ${outroot}/${KERNELDIR}/uInitrd
+
+ runcmd mkimage \
+ -A arm -O linux -T kernel -C none \
+ -a ${kernelAddress['baseline']} -e ${kernelAddress['baseline']} \
+ -n "${product.name} ${product.version} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/vmlinuz \
+ ${outroot}/${KERNELDIR}/uImage
+
+ treeinfo images-${basearch} uimage ${KERNELDIR}/uImage
+ treeinfo images-${basearch} uinitrd ${KERNELDIR}/uInitrd
+
+ %endif
+%endfor
+
+
+## FIXME: ARM may need some extra boot config
+
diff --git a/lorax-templates-qubes/templates/config_files/common/bash_history b/lorax-templates-qubes/templates/config_files/common/bash_history
new file mode 100644
index 0000000..11ecdfc
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/bash_history
@@ -0,0 +1,8 @@
+kill -USR2 `cat /var/run/anaconda.pid`
+kill -HUP `cat /var/run/anaconda.pid`
+udevadm info --export-db | less
+tail -f /tmp/storage.log
+echo b > /proc/sysrq-trigger
+dmsetup table
+multipath -d
+HOME=/root chroot /mnt/sysimage bash -l -i
diff --git a/lorax-templates-qubes/templates/config_files/common/i18n b/lorax-templates-qubes/templates/config_files/common/i18n
new file mode 100644
index 0000000..5366b7f
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/i18n
@@ -0,0 +1 @@
+SYSFONT="latarcyrheb-sun16"
diff --git a/lorax-templates-qubes/templates/config_files/common/libuser.conf b/lorax-templates-qubes/templates/config_files/common/libuser.conf
new file mode 100644
index 0000000..a7a0ef0
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/libuser.conf
@@ -0,0 +1,10 @@
+[defaults]
+skeleton = /mnt/sysimage/etc/skel
+mailspooldir = /mnt/sysimage/var/mail
+crypt_style = md5
+modules = files shadow
+create_modules = files shadow
+[files]
+directory = /mnt/sysimage/etc
+[shadow]
+directory = /mnt/sysimage/etc
diff --git a/lorax-templates-qubes/templates/config_files/common/org.gnome.desktop.wm.keybindings.gschema.override b/lorax-templates-qubes/templates/config_files/common/org.gnome.desktop.wm.keybindings.gschema.override
new file mode 100644
index 0000000..f0965a9
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/org.gnome.desktop.wm.keybindings.gschema.override
@@ -0,0 +1,21 @@
+[org.gnome.desktop.wm.keybindings]
+ switch-to-workspace-left=[]
+ switch-to-workspace-right=[]
+ switch-to-workspace-up=[]
+ switch-to-workspace-down=[]
+ switch-group=[]
+ switch-windows=[]
+ switch-panels=[]
+ cycle-group=[]
+ cycle-windows=[]
+ cycle-panels=[]
+ activate-window-menu=[]
+ toggle-maximized=[]
+ maximize=[]
+ unmaximize=[]
+ begin-move=[]
+ begin-resize=[]
+ move-to-workspace-left=[]
+ move-to-workspace-right=[]
+ move-to-workspace-up=[]
+ move-to-workspace-down=[]
diff --git a/lorax-templates-qubes/templates/config_files/common/pam.sshd b/lorax-templates-qubes/templates/config_files/common/pam.sshd
new file mode 100644
index 0000000..88c019f
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/pam.sshd
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth required pam_env.so
+auth sufficient pam_unix.so likeauth nullok
+auth required pam_deny.so
+account required pam_unix.so
+password sufficient pam_unix.so nullok use_authtok md5 shadow
+password required pam_deny.so
+session required pam_limits.so
+session required pam_unix.so
diff --git a/lorax-templates-qubes/templates/config_files/common/profile b/lorax-templates-qubes/templates/config_files/common/profile
new file mode 100644
index 0000000..00a475e
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/profile
@@ -0,0 +1,3 @@
+PS1="[anaconda \u@\h \W]\\$ "
+PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin
+export PATH PS1
diff --git a/lorax-templates-qubes/templates/config_files/common/resolv.conf b/lorax-templates-qubes/templates/config_files/common/resolv.conf
new file mode 100644
index 0000000..e69de29
diff --git a/lorax-templates-qubes/templates/config_files/common/rsyslog.conf b/lorax-templates-qubes/templates/config_files/common/rsyslog.conf
new file mode 100644
index 0000000..e568e53
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/rsyslog.conf
@@ -0,0 +1,49 @@
+#### MODULES ####
+$ModLoad imuxsock.so # provides support for local system logging
+$SystemLogRateLimitInterval 0 # disables message dropping, we need all of them
+$ModLoad imklog.so # provides kernel logging support
+
+$ModLoad imfile
+$InputFileName /tmp/X.log
+$InputFileTag xserver:
+$InputFileStateFile xserver-statefile
+$InputFileFacility local1
+$InputRunFileMonitor
+$InputFileName /tmp/anaconda-tb-all.log
+$InputFileTag anaconda-tb:
+$InputFileStateFile anaconda-tb-statefile
+$InputFileFacility local1
+$InputRunFileMonitor
+
+#### GLOBAL DIRECTIVES ####
+# Use default timestamp format
+$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
+
+#### TEMPLATES ####
+
+$template anaconda_tty4, "%syslogseverity-text:::uppercase% %programname%:%msg%\n"
+$template anaconda_syslog, "%timestamp:8:$:date-rfc3164%,%timestamp:1:3:date-subseconds% %syslogseverity-text:::uppercase% %programname%:%msg%\n"
+$template virtio_ForwardFormat, "<%PRI%>%TIMESTAMP:::date-rfc3339% localhost %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\n"
+
+#### RULES ####
+# log everything except anaconda-specific records from local1 (those are stored
+# directly into files via python logging)
+*.*;\
+authpriv.none;\
+local1.none /tmp/syslog;anaconda_syslog
+ & /dev/tty4;anaconda_tty4
+
+# ### begin forwarding rule ###
+# The statement between the begin ... end define a SINGLE forwarding
+# rule. They belong together, do NOT split them. If you create multiple
+# forwarding rules, duplicate the whole block!
+#
+# An on-disk queue is created for this action. If the remote host is
+# down, messages are spooled to disk and sent when it is up again.
+$ActionQueueMaxDiskSpace 1m # space limit (use as much as possible)
+$ActionQueueSaveOnShutdown off # do not save messages to disk on shutdown
+$ActionQueueType LinkedList # run asynchronously
+$ActionResumeRetryCount -1 # infinite retries if host is down
+# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
+# ### end of the forwarding rule ###
+
diff --git a/lorax-templates-qubes/templates/config_files/common/selinux.config b/lorax-templates-qubes/templates/config_files/common/selinux.config
new file mode 100644
index 0000000..eac67ab
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/selinux.config
@@ -0,0 +1,2 @@
+SELINUX=permissive
+SELINUXTYPE=targeted
diff --git a/lorax-templates-qubes/templates/config_files/common/sshd_config.anaconda b/lorax-templates-qubes/templates/config_files/common/sshd_config.anaconda
new file mode 100644
index 0000000..088569d
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/sshd_config.anaconda
@@ -0,0 +1,17 @@
+Port 22
+HostKey /etc/ssh/ssh_host_key
+HostKey /etc/ssh/ssh_host_rsa_key
+HostKey /etc/ssh/ssh_host_dsa_key
+PermitRootLogin yes
+IgnoreRhosts yes
+StrictModes yes
+X11Forwarding yes
+X11DisplayOffset 10
+PrintMotd yes
+XAuthLocation /bin/xauth
+KeepAlive yes
+SyslogFacility AUTHPRIV
+RSAAuthentication yes
+PasswordAuthentication yes
+PermitEmptyPasswords yes
+PermitUserEnvironment yes
diff --git a/lorax-templates-qubes/templates/config_files/common/sysctl.conf b/lorax-templates-qubes/templates/config_files/common/sysctl.conf
new file mode 100644
index 0000000..a95dfc6
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/common/sysctl.conf
@@ -0,0 +1 @@
+kernel.printk=1
diff --git a/lorax-templates-qubes/templates/config_files/ppc/bootinfo.txt b/lorax-templates-qubes/templates/config_files/ppc/bootinfo.txt
new file mode 100644
index 0000000..ac766d4
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/bootinfo.txt
@@ -0,0 +1,169 @@
+ Linux
+Linux
+boot &device;:\ppc\chrp\yaboot
+
+ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
+FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00
diff --git a/lorax-templates-qubes/templates/config_files/ppc/magic b/lorax-templates-qubes/templates/config_files/ppc/magic
new file mode 100644
index 0000000..387727c
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/magic
@@ -0,0 +1,81 @@
+#
+# Example magic file for mkhybrid
+#
+# The "message" for the offset MUST be 4 characters for the CREATOR
+# and 4 characters for the TYPE - white space is optional between them.
+# Any other characters on this line are ignored. Continuation lines (starting
+# with '>') are also ignored i.e. only the initial offset lines are used.
+#
+# The continuation lines are given here, but they do not need to exist.
+
+#
+# James Pearson 20/5/98
+
+# off type test message
+
+# GIF
+0 string GIF8 8BIM GIFf
+>4 string 7a \b, version 8%s,
+>4 string 9a \b, version 8%s,
+>6 leshort >0 %hd x
+>8 leshort >0 %hd,
+#>10 byte &0x80 color mapped,
+#>10 byte&0x07 =0x00 2 colors
+#>10 byte&0x07 =0x01 4 colors
+#>10 byte&0x07 =0x02 8 colors
+#>10 byte&0x07 =0x03 16 colors
+#>10 byte&0x07 =0x04 32 colors
+#>10 byte&0x07 =0x05 64 colors
+#>10 byte&0x07 =0x06 128 colors
+#>10 byte&0x07 =0x07 256 colors
+
+# JPEG images
+#
+0 ubeshort 0xffd8 8BIM JPEG image data
+
+# StuffIt
+#
+0 string SIT! SIT!SIT!
+
+# standard unix compress
+0 string \037\235 LZIV ZIVU
+>2 byte&0x80 >0 block compressed
+>2 byte&0x1f x %d bits
+
+# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
+0 string \037\213 GNUz ZIVU gzip compressed data
+>2 byte <8 \b, reserved method,
+>2 byte 8 \b, deflated,
+>3 byte &0x01 ASCII,
+>3 byte &0x02 continuation,
+>3 byte &0x04 extra field,
+>3 byte &0x08 original filename,
+>3 byte &0x10 comment,
+>3 byte &0x20 encrypted,
+>4 ledate x last modified: %s,
+>8 byte 2 max compression,
+>8 byte 4 max speed,
+>9 byte =0x00 os: MS-DOS
+>9 byte =0x01 os: Amiga
+>9 byte =0x02 os: VMS
+>9 byte =0x03 os: Unix
+>9 byte =0x05 os: Atari
+>9 byte =0x06 os: OS/2
+>9 byte =0x07 os: MacOS
+>9 byte =0x0A os: Tops/20
+>9 byte =0x0B os: Win/32
+
+# Postscript
+0 string %! ASPSTEXT
+>2 string PS-Adobe- conforming
+>>11 string >\0 at level %.3s
+>>>15 string EPS - type %s
+>>>15 string Query - type %s
+>>>15 string ExitServer - type %s
+# Some PCs have the annoying habit of adding a ^D as a document separator
+0 string \004%! ASPS TEXT PostScript document text
+>3 string PS-Adobe- conforming
+>>12 string >\0 at level %.3s
+>>>16 string EPS - type %s
+>>>16 string Query - type %s
+>>>16 string ExitServer - type %s
diff --git a/lorax-templates-qubes/templates/config_files/ppc/mapping b/lorax-templates-qubes/templates/config_files/ppc/mapping
new file mode 100644
index 0000000..cf83076
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/mapping
@@ -0,0 +1,27 @@
+# Example filename mapping file
+#
+# yaboot Raw 'UNIX' 'boot' "Bootstrap"
+# vmlinux Raw 'UNIX' 'boot' "Bootstrap"
+#
+# EXTN XLate CREATOR TYPE Comment
+COPYING Ascii 'ttxt' 'ttro' "Text File"
+CREDITS Ascii 'ttxt' 'ttro' "Text File"
+README Ascii 'ttxt' 'ttro' "Text File"
+RPM-GPG-KEY Ascii 'ttxt' 'ttro' "Text File"
+RELEASE_NOTES Ascii 'ttxt' 'ttro' "Text File"
+.b Raw 'chrp' 'tbxi' "Macintosh Toolbox ROM file"
+.gif Raw '8BIM' 'GIFf' "Gif File"
+.jpg Raw '8BIM' 'JPEG' "Jpeg File"
+.tif Raw '8BIM' 'TIFF' "Photoshop TIFF image"
+.hqx Ascii 'BnHq' 'TEXT' "BinHex file"
+.doc Raw 'MSWD' 'WDBN' "Word file"
+.mov Raw 'TVOD' 'MooV' "QuickTime Movie"
+.html Ascii 'MOSS' 'TEXT' "HTML File"
+.htm Ascii 'MOSS' 'TEXT' "HTML File"
+.conf Ascii 'ttxt' 'TEXT' "config file"
+.txt Ascii 'ttxt' 'TEXT' "Text File"
+.tbxi Raw 'chrp' 'tbxi' "Macintosh Toolbox ROM file"
+.sea Raw 'aust' 'APPL' "Self Expanding Archive"
+.sit Raw 'SIT!' 'SITD' "Stuffit Expander file"
+* Raw '????' '????' "Unknown"
+
diff --git a/lorax-templates-qubes/templates/config_files/ppc/ofboot.b b/lorax-templates-qubes/templates/config_files/ppc/ofboot.b
new file mode 100644
index 0000000..c811894
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/ofboot.b
@@ -0,0 +1,74 @@
+
+
+MacRISC MacRISC3 MacRISC4
+
+
+
+Boot Chooser
+
+
+
+" screen" output
+load-base release-load-area
+" /cpus/@0" find-package if
+ " 64-bit" rot get-package-property 0= if
+ 2drop
+ " boot cd:,\ppc\mac\yaboot conf=cd:,\ppc\ppc64\yaboot.conf" eval
+ else
+ " boot cd:,\ppc\mac\yaboot conf=cd:,\ppc\ppc32\yaboot.conf" eval
+ then
+then
+
+
+
+1010
+000000000000F8FEACF6000000000000
+0000000000F5FFFFFEFEF50000000000
+00000000002BFAFEFAFCF70000000000
+0000000000F65D5857812B0000000000
+0000000000F5350B2F88560000000000
+0000000000F6335708F8FE0000000000
+00000000005600F600F5FD8100000000
+00000000F9F8000000F5FAFFF8000000
+000000008100F5F50000F6FEFE000000
+000000F8F700F500F50000FCFFF70000
+00000088F70000F50000F5FCFF2B0000
+0000002F582A00F5000008ADE02C0000
+00090B0A35A62B0000002D3B350A0000
+000A0A0B0B3BF60000505E0B0A0B0A00
+002E350B0B2F87FAFCF45F0B2E090000
+00000007335FF82BF72B575907000000
+000000000000ACFFFF81000000000000
+000000000081FFFFFFFF810000000000
+0000000000FBFFFFFFFFAC0000000000
+000000000081DFDFDFFFFB0000000000
+000000000081DD5F83FFFD0000000000
+000000000081DDDF5EACFF0000000000
+0000000000FDF981F981FFFF00000000
+00000000FFACF9F9F981FFFFAC000000
+00000000FFF98181F9F981FFFF000000
+000000ACACF981F981F9F9FFFFAC0000
+000000FFACF9F981F9F981FFFFFB0000
+00000083DFFBF981F9F95EFFFFFC0000
+005F5F5FDDFFFBF9F9F983DDDD5F0000
+005F5F5F5FDD81F9F9E7DF5F5F5F5F00
+0083DD5F5F83FFFFFFFFDF5F835F0000
+000000FBDDDFACFBACFBDFDFFB000000
+000000000000FFFFFFFF000000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFFFF00000000
+00000000FFFFFFFFFFFFFFFFFF000000
+00000000FFFFFFFFFFFFFFFFFF000000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
+00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFF000000
+
+
diff --git a/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.3264 b/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.3264
new file mode 100644
index 0000000..7aa6305
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.3264
@@ -0,0 +1,16 @@
+init-message = "\nWelcome to the @PRODUCT@ @VERSION@ installer!\nUse 'linux32' for 32-bit kernel.\n\n"
+timeout=6000
+default=linux
+
+image=/ppc/ppc64/vmlinuz
+ label=linux64
+ alias=linux
+ initrd=/ppc/ppc64/ramdisk.image.gz
+ read-only
+ append="@ROOT@"
+
+image=/ppc/ppc32/vmlinuz
+ label=linux32
+ initrd=/ppc/ppc32/ramdisk.image.gz
+ read-only
+ append="@ROOT@"
diff --git a/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.in b/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.in
new file mode 100644
index 0000000..0a6bafc
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/ppc/yaboot.conf.in
@@ -0,0 +1,9 @@
+init-message = "\nWelcome to the @BITS@-bit @PRODUCT@ @VERSION@ installer!\nHit for boot options.\n\n"
+timeout=6000
+default=linux
+
+image=/ppc/ppc@BITS@/vmlinuz
+ label=linux
+ initrd=/ppc/ppc@BITS@/initrd.img
+ read-only
+ append="@ROOT@"
diff --git a/lorax-templates-qubes/templates/config_files/s390/generic.ins b/lorax-templates-qubes/templates/config_files/s390/generic.ins
new file mode 100644
index 0000000..a690f2e
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/s390/generic.ins
@@ -0,0 +1,5 @@
+* minimal lpar ins file
+images/kernel.img 0x00000000
+images/initrd.img @INITRD_LOAD_ADDRESS@
+images/generic.prm 0x00010480
+images/initrd.addrsize 0x00010408
diff --git a/lorax-templates-qubes/templates/config_files/s390/generic.prm b/lorax-templates-qubes/templates/config_files/s390/generic.prm
new file mode 100644
index 0000000..2044dd3
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/s390/generic.prm
@@ -0,0 +1 @@
+ro ramdisk_size=40000 cio_ignore=all,!0.0.0009
diff --git a/lorax-templates-qubes/templates/config_files/s390/redhat.exec b/lorax-templates-qubes/templates/config_files/s390/redhat.exec
new file mode 100644
index 0000000..f1e5931
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/s390/redhat.exec
@@ -0,0 +1,9 @@
+/* */
+'CL RDR'
+'PURGE RDR ALL'
+'SPOOL PUNCH * RDR'
+'PUNCH KERNEL IMG A (NOH'
+'PUNCH GENERIC PRM A (NOH'
+'PUNCH INITRD IMG A (NOH'
+'CH RDR ALL KEEP NOHOLD'
+'I 00C'
diff --git a/lorax-templates-qubes/templates/config_files/sparc/boot.msg b/lorax-templates-qubes/templates/config_files/sparc/boot.msg
new file mode 100644
index 0000000..f9cfb8a
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/sparc/boot.msg
@@ -0,0 +1,9 @@
+[H[J
+ Welcome to @PRODUCT@ @VERSION@!
+
+ - To install in graphical mode, press the [7m[m key.
+
+ - To install in text mode, type: [7mlinux text [m.
+
+ - To enter rescue mode type: [7mlinux rescue [m.
+
diff --git a/lorax-templates-qubes/templates/config_files/sparc/silo.conf b/lorax-templates-qubes/templates/config_files/sparc/silo.conf
new file mode 100644
index 0000000..846c569
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/sparc/silo.conf
@@ -0,0 +1,18 @@
+partition=1
+default=linux
+read-write
+timeout=100
+message=/boot/boot.msg
+image[sun4u]=/boot/vmlinuz
+ label=linux
+ alias=install
+ append="@ROOT@"
+ initrd=/boot/initrd.img
+image[sun4u]=/boot/vmlinuz
+ label=text
+ append="@ROOT@ text"
+ initrd=/boot/initrd.img
+image[sun4u]=/boot/vmlinuz
+ label=ks
+ append="@ROOT@ ks"
+ initrd=/boot/initrd.img
diff --git a/lorax-templates-qubes/templates/config_files/x86/boot.msg b/lorax-templates-qubes/templates/config_files/x86/boot.msg
new file mode 100644
index 0000000..ff54899
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/x86/boot.msg
@@ -0,0 +1,5 @@
+
+splash.lss
+
+ - Press the 0107 key to begin the installation process.
+
diff --git a/lorax-templates-qubes/templates/config_files/x86/grub.conf b/lorax-templates-qubes/templates/config_files/x86/grub.conf
new file mode 100644
index 0000000..d1ce3be
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/x86/grub.conf
@@ -0,0 +1,13 @@
+#debug --graphics
+default=0
+splashimage=@SPLASHPATH@
+timeout 5
+hiddenmenu
+title @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@
+ initrd @INITRDPATH@
+title Test this media & start @PRODUCT@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ quiet rd.live.check
+ initrd @INITRDPATH@
diff --git a/lorax-templates-qubes/templates/config_files/x86/grub2-efi.cfg b/lorax-templates-qubes/templates/config_files/x86/grub2-efi.cfg
new file mode 100644
index 0000000..f21d085
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/x86/grub2-efi.cfg
@@ -0,0 +1,31 @@
+set default="0"
+
+function load_video {
+ insmod efi_gop
+ insmod efi_uga
+ insmod video_bochs
+ insmod video_cirrus
+ insmod all_video
+}
+
+load_video
+set gfxpayload=keep
+insmod gzio
+insmod part_gpt
+insmod ext2
+
+set timeout=5
+### END /etc/grub.d/00_header ###
+
+search --no-floppy --set=root -l '@ISOLABEL@'
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry '@PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@
+ initrdefi @INITRDPATH@
+}
+menuentry 'Test this media & start @PRODUCT@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ quiet rd.live.check
+ initrdefi @INITRDPATH@
+}
+
diff --git a/lorax-templates-qubes/templates/config_files/x86/isolinux.cfg b/lorax-templates-qubes/templates/config_files/x86/isolinux.cfg
new file mode 100644
index 0000000..bc5a2f6
--- /dev/null
+++ b/lorax-templates-qubes/templates/config_files/x86/isolinux.cfg
@@ -0,0 +1,108 @@
+default vesamenu.c32
+timeout 600
+
+display boot.msg
+
+# Clear the screen when exiting the menu, instead of leaving the menu displayed.
+# For vesamenu, this means the graphical background is still displayed without
+# the menu itself for as long as the screen remains in graphics mode.
+menu clear
+menu background splash.png
+menu title @PRODUCT@ @VERSION@
+menu vshift 8
+menu rows 18
+menu margin 8
+#menu hidden
+menu helpmsgrow 15
+menu tabmsgrow 13
+
+# Border Area
+menu color border * #00000000 #00000000 none
+
+# Selected item
+menu color sel 0 #ffffffff #00000000 none
+
+# Title bar
+menu color title 0 #ff7ba3d0 #00000000 none
+
+# Press [Tab] message
+menu color tabmsg 0 #ff3a6496 #00000000 none
+
+# Unselected menu item
+menu color unsel 0 #84b8ffff #00000000 none
+
+# Selected hotkey
+menu color hotsel 0 #84b8ffff #00000000 none
+
+# Unselected hotkey
+menu color hotkey 0 #ffffffff #00000000 none
+
+# Help text
+menu color help 0 #ffffffff #00000000 none
+
+# A scrollbar of some type? Not sure.
+menu color scrollbar 0 #ffffffff #ff355594 none
+
+# Timeout msg
+menu color timeout 0 #ffffffff #00000000 none
+menu color timeout_msg 0 #ffffffff #00000000 none
+
+# Command prompt text
+menu color cmdmark 0 #84b8ffff #00000000 none
+menu color cmdline 0 #ffffffff #00000000 none
+
+# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
+
+menu tabmsg Press Tab for full configuration options on menu items.
+menu separator # insert an empty line
+menu separator # insert an empty line
+label linux
+ menu label ^Install @PRODUCT@
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ quiet
+label check
+ menu label Test this ^media & install @PRODUCT@
+ menu default
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ quiet rd.live.check
+menu separator # insert an empty line
+# utilities submenu
+menu begin ^Troubleshooting
+ menu title Troubleshooting
+label vesa
+ menu indent count 5
+ menu label Install @PRODUCT@ in ^basic graphics mode
+ text help
+ Try this option out if you're having trouble installing
+ @PRODUCT@.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ xdriver=vesa nomodeset quiet
+label rescue
+ menu indent count 5
+ menu label ^Rescue a @PRODUCT@ system
+ text help
+ If the system will not boot, this lets you access files
+ and edit config files to try to get it booting again.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ rescue quiet
+label memtest
+ menu label Run a ^memory test
+ text help
+ If your system is having issues, a problem with your
+ system's memory may be the cause. Use this utility to
+ see if the memory is working correctly.
+ endtext
+ kernel memtest
+menu separator # insert an empty line
+label local
+ menu label Boot from ^local drive
+ localboot 0xffff
+menu separator # insert an empty line
+menu separator # insert an empty line
+label returntomain
+ menu label Return to ^main menu
+ menu exit
+menu end
+
diff --git a/lorax-templates-qubes/templates/efi.tmpl b/lorax-templates-qubes/templates/efi.tmpl
new file mode 100644
index 0000000..dee095f
--- /dev/null
+++ b/lorax-templates-qubes/templates/efi.tmpl
@@ -0,0 +1,54 @@
+<%page args="configdir, KERNELDIR, efiarch, isolabel"/>
+<%
+EFIBOOTDIR="EFI/BOOT"
+APPLE_EFI_ICON=inroot+"/usr/share/pixmaps/bootloader/fedora.icns"
+APPLE_EFI_DISKNAME=inroot+"/usr/share/pixmaps/bootloader/fedora-media.vol"
+%>
+
+mkdir ${EFIBOOTDIR}
+mkdir ${EFIBOOTDIR}/fonts/
+install boot/efi/EFI/*/shim.efi ${EFIBOOTDIR}/BOOT${efiarch}.efi
+install boot/efi/EFI/*/MokManager.efi ${EFIBOOTDIR}/
+install boot/efi/EFI/*/gcdx64.efi ${EFIBOOTDIR}/grubx64.efi
+install boot/efi/EFI/*/fonts/unicode.pf2 ${EFIBOOTDIR}/fonts/
+
+## actually make the EFI images
+${make_efiboot("images/efiboot.img")}
+%if domacboot:
+ ${make_efiboot("images/macboot.img", imgtype="apple")}
+%endif
+
+## This is kinda gross, but then... so's EFI.
+<%def name="make_efiboot(img, include_kernel=False, disk=False, imgtype='default')">
+ <%
+ kdir = EFIBOOTDIR if include_kernel else KERNELDIR
+ eficonf = "%s/grub.cfg" % (EFIBOOTDIR, )
+ args = "--label=ANACONDA"
+ if disk: args += " --disk"
+ if imgtype == "apple": args += ' --apple --icon=%s --diskname=%s --product="%s %s"' % (APPLE_EFI_ICON, APPLE_EFI_DISKNAME, product.name, product.version)
+ %>
+ %if include_kernel:
+ copy ${KERNELDIR}/vmlinuz ${EFIBOOTDIR}
+ copy ${KERNELDIR}/initrd.img ${EFIBOOTDIR}
+ %endif
+ install ${configdir}/grub2-efi.cfg ${eficonf}
+ replace @PRODUCT@ '${product.name}' ${eficonf}
+ replace @VERSION@ ${product.version} ${eficonf}
+ replace @KERNELNAME@ vmlinuz ${eficonf}
+ replace @KERNELPATH@ /${kdir}/vmlinuz ${eficonf}
+ replace @INITRDPATH@ /${kdir}/initrd.img ${eficonf}
+ replace @ISOLABEL@ '${isolabel}' ${eficonf}
+ %if disk:
+ replace @ROOT@ inst.stage2=hd:LABEL=ANACONDA ${eficonf}
+ %else:
+ replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${eficonf}
+ %endif
+ %if efiarch == 'IA32':
+ copy ${eficonf} ${EFIBOOTDIR}/BOOT.conf
+ %endif
+ runcmd mkefiboot ${args} ${outroot}/${EFIBOOTDIR} ${outroot}/${img}
+ %if include_kernel:
+ remove ${EFIBOOTDIR}/vmlinuz
+ remove ${EFIBOOTDIR}/initrd.img
+ %endif
+%def>
diff --git a/lorax-templates-qubes/templates/live/arm.tmpl b/lorax-templates-qubes/templates/live/arm.tmpl
new file mode 100644
index 0000000..bf6eef9
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/arm.tmpl
@@ -0,0 +1,79 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, outroot, arch"/>
+<%
+configdir="tmp/config_files/uboot"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="boot"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+
+# different platforms use different kernel load addresses.
+# include a 'baseline' kernel for no 'flavor'.
+kernelAddress = { 'baseline' : '0x00008000',
+ 'highbank' : '0x00008000',
+ 'imx' : '0x90008000',
+ 'kirkwood' : '0x00008000',
+ 'mvebu' : '0x00008000',
+ 'omap' : '0x80008000',
+ 'tegra' : '0x00008000',
+ }
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ installkernel images-${kernel.flavor}-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-${kernel.flavor}-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+
+ # create U-Boot wrapped images
+
+ runcmd mkimage \
+ -A arm -O linux -T ramdisk -C none \
+ -a 0 -e 0 \
+ -n "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/initrd-${kernel.flavor}.img \
+ ${outroot}/${KERNELDIR}/uInitrd-${kernel.flavor}
+
+ runcmd mkimage \
+ -A arm -O linux -T kernel -C none \
+ -a ${kernelAddress[kernel.flavor]} -e ${kernelAddress[kernel.flavor]} \
+ -n "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/vmlinuz-${kernel.flavor} \
+ ${outroot}/${KERNELDIR}/uImage-${kernel.flavor}
+
+ treeinfo images-${kernel.flavor}-${basearch} uimage ${KERNELDIR}/uImage-${kernel.flavor}
+ treeinfo images-${kernel.flavor}-${basearch} uinitrd ${KERNELDIR}/uInitrd-${kernel.flavor}
+
+ %else:
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+ # create U-Boot wrapped images
+
+ runcmd mkimage \
+ -A arm -O linux -T ramdisk -C none \
+ -a 0 -e 0 \
+ -n "${product.name} ${product.version} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/initrd.img \
+ ${outroot}/${KERNELDIR}/uInitrd
+
+ runcmd mkimage \
+ -A arm -O linux -T kernel -C none \
+ -a ${kernelAddress['baseline']} -e ${kernelAddress['baseline']} \
+ -n "${product.name} ${product.version} ${kernel.arch}" \
+ -d ${outroot}/${KERNELDIR}/vmlinuz \
+ ${outroot}/${KERNELDIR}/uImage
+
+ treeinfo images-${basearch} uimage ${KERNELDIR}/uImage
+ treeinfo images-${basearch} uinitrd ${KERNELDIR}/uInitrd
+
+ %endif
+%endfor
+
+
+## FIXME: ARM may need some extra boot config
+
diff --git a/lorax-templates-qubes/templates/live/config_files/x86/boot.msg b/lorax-templates-qubes/templates/live/config_files/x86/boot.msg
new file mode 100644
index 0000000..ff54899
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/config_files/x86/boot.msg
@@ -0,0 +1,5 @@
+
+splash.lss
+
+ - Press the 0107 key to begin the installation process.
+
diff --git a/lorax-templates-qubes/templates/live/config_files/x86/grub.conf b/lorax-templates-qubes/templates/live/config_files/x86/grub.conf
new file mode 100644
index 0000000..b7fdf82
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/config_files/x86/grub.conf
@@ -0,0 +1,13 @@
+#debug --graphics
+default=0
+splashimage=@SPLASHPATH@
+timeout 5
+hiddenmenu
+title @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ rd.live.image rd.luks=0 rd.md=0 rd.dm=0
+ initrd @INITRDPATH@
+title Test this media & start @PRODUCT@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ quiet rd.live.image rd.live.check rd.luks=0 rd.md=0 rd.dm=0
+ initrd @INITRDPATH@
diff --git a/lorax-templates-qubes/templates/live/config_files/x86/grub2-efi.cfg b/lorax-templates-qubes/templates/live/config_files/x86/grub2-efi.cfg
new file mode 100644
index 0000000..6dea0aa
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/config_files/x86/grub2-efi.cfg
@@ -0,0 +1,31 @@
+set default="0"
+
+function load_video {
+ insmod efi_gop
+ insmod efi_uga
+ insmod video_bochs
+ insmod video_cirrus
+ insmod all_video
+}
+
+load_video
+set gfxpayload=keep
+insmod gzio
+insmod part_gpt
+insmod ext2
+
+set timeout=5
+### END /etc/grub.d/00_header ###
+
+search --no-floppy --set=root -l '@ISOLABEL@'
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry '@PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ quiet rd.live.image rd.luks=0 rd.md=0 rd.dm=0
+ initrdefi @INITRDPATH@
+}
+menuentry 'Test this media & start @PRODUCT@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ quiet rd.live.image rd.live.check rd.luks=0 rd.md=0 rd.dm=0
+ initrdefi @INITRDPATH@
+}
+
diff --git a/lorax-templates-qubes/templates/live/config_files/x86/isolinux.cfg b/lorax-templates-qubes/templates/live/config_files/x86/isolinux.cfg
new file mode 100644
index 0000000..6dafb26
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/config_files/x86/isolinux.cfg
@@ -0,0 +1,99 @@
+default vesamenu.c32
+timeout 600
+
+menu autoboot Starting @PRODUCT@ in # second{,s}. Press any key to interrupt.
+
+# Clear the screen when exiting the menu, instead of leaving the menu displayed.
+# For vesamenu, this means the graphical background is still displayed without
+# the menu itself for as long as the screen remains in graphics mode.
+menu clear
+menu background splash.png
+menu title @PRODUCT@ @VERSION@
+menu vshift 8
+menu rows 18
+menu margin 8
+#menu hidden
+menu helpmsgrow 15
+menu tabmsgrow 13
+
+# Border Area
+menu color border * #00000000 #00000000 none
+
+# Selected item
+menu color sel 0 #ffffffff #00000000 none
+
+# Title bar
+menu color title 0 #ff7ba3d0 #00000000 none
+
+# Press [Tab] message
+menu color tabmsg 0 #ff3a6496 #00000000 none
+
+# Unselected menu item
+menu color unsel 0 #84b8ffff #00000000 none
+
+# Selected hotkey
+menu color hotsel 0 #84b8ffff #00000000 none
+
+# Unselected hotkey
+menu color hotkey 0 #ffffffff #00000000 none
+
+# Help text
+menu color help 0 #ffffffff #00000000 none
+
+# A scrollbar of some type? Not sure.
+menu color scrollbar 0 #ffffffff #ff355594 none
+
+# Timeout msg
+menu color timeout 0 #ffffffff #00000000 none
+menu color timeout_msg 0 #ffffffff #00000000 none
+
+# Command prompt text
+menu color cmdmark 0 #84b8ffff #00000000 none
+menu color cmdline 0 #ffffffff #00000000 none
+
+# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
+
+menu tabmsg Press Tab for full configuration options on menu items.
+menu separator # insert an empty line
+menu separator # insert an empty line
+label linux
+ menu label ^Start @PRODUCT@
+ menu default
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ quiet rd.live.image rd.luks=0 rd.md=0 rd.dm=0
+label check
+ menu label Test this ^media & start @PRODUCT@
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ quiet rd.live.image rd.live.check rd.luks=0 rd.md=0 rd.dm=0
+menu separator # insert an empty line
+# utilities submenu
+menu begin ^Troubleshooting
+ menu title Troubleshooting
+label vesa
+ menu indent count 5
+ menu label Start @PRODUCT@ in ^basic graphics mode
+ text help
+ Try this option out if you're having trouble installing
+ @PRODUCT@.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ xdriver=vesa nomodeset quiet rd.live.image rd.luks=0 rd.md=0 rd.dm=0
+label memtest
+ menu label Run a ^memory test
+ text help
+ If your system is having issues, a problem with your
+ system's memory may be the cause. Use this utility to
+ see if the memory is working correctly.
+ endtext
+ kernel memtest
+menu separator # insert an empty line
+label local
+ menu label Boot from ^local drive
+ localboot 0xffff
+menu separator # insert an empty line
+menu separator # insert an empty line
+label returntomain
+ menu label Return to ^main menu
+ menu exit
+menu end
+
diff --git a/lorax-templates-qubes/templates/live/efi.tmpl b/lorax-templates-qubes/templates/live/efi.tmpl
new file mode 100644
index 0000000..cc1c2ec
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/efi.tmpl
@@ -0,0 +1,53 @@
+<%page args="configdir, KERNELDIR, efiarch, isolabel"/>
+<%
+EFIBOOTDIR="EFI/BOOT"
+APPLE_EFI_ICON=inroot+"/usr/share/pixmaps/bootloader/fedora.icns"
+APPLE_EFI_DISKNAME=inroot+"/usr/share/pixmaps/bootloader/fedora-media.vol"
+%>
+
+mkdir ${EFIBOOTDIR}
+mkdir ${EFIBOOTDIR}/fonts/
+install boot/efi/EFI/*/shim.efi ${EFIBOOTDIR}/BOOT${efiarch}.efi
+install boot/efi/EFI/*/gcdx64.efi ${EFIBOOTDIR}/grubx64.efi
+install boot/efi/EFI/*/fonts/unicode.pf2 ${EFIBOOTDIR}/fonts/
+
+## actually make the EFI images
+${make_efiboot("images/efiboot.img")}
+%if domacboot:
+ ${make_efiboot("images/macboot.img", imgtype="apple")}
+%endif
+
+## This is kinda gross, but then... so's EFI.
+<%def name="make_efiboot(img, include_kernel=False, disk=False, imgtype='default')">
+ <%
+ kdir = EFIBOOTDIR if include_kernel else KERNELDIR
+ eficonf = "%s/grub.cfg" % (EFIBOOTDIR, )
+ args = "--label=ANACONDA"
+ if disk: args += " --disk"
+ if imgtype == "apple": args += ' --apple --icon=%s --diskname=%s --product="%s %s"' % (APPLE_EFI_ICON, APPLE_EFI_DISKNAME, product.name, product.version)
+ %>
+ %if include_kernel:
+ copy ${KERNELDIR}/vmlinuz ${EFIBOOTDIR}
+ copy ${KERNELDIR}/initrd.img ${EFIBOOTDIR}
+ %endif
+ install ${configdir}/grub2-efi.cfg ${eficonf}
+ replace @PRODUCT@ '${product.name}' ${eficonf}
+ replace @VERSION@ ${product.version} ${eficonf}
+ replace @KERNELNAME@ vmlinuz ${eficonf}
+ replace @KERNELPATH@ /${kdir}/vmlinuz ${eficonf}
+ replace @INITRDPATH@ /${kdir}/initrd.img ${eficonf}
+ replace @ISOLABEL@ '${isolabel}' ${eficonf}
+ %if disk:
+ replace @ROOT@ root=live:LABEL=ANACONDA ${eficonf}
+ %else:
+ replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${eficonf}
+ %endif
+ %if efiarch == 'IA32':
+ copy ${eficonf} ${EFIBOOTDIR}/BOOT.conf
+ %endif
+ runcmd mkefiboot ${args} ${outroot}/${EFIBOOTDIR} ${outroot}/${img}
+ %if include_kernel:
+ remove ${EFIBOOTDIR}/vmlinuz
+ remove ${EFIBOOTDIR}/initrd.img
+ %endif
+%def>
diff --git a/lorax-templates-qubes/templates/live/ppc.tmpl b/lorax-templates-qubes/templates/live/ppc.tmpl
new file mode 100644
index 0000000..3ff15da
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/ppc.tmpl
@@ -0,0 +1,117 @@
+<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/ppc"
+BOOTDIR="ppc"
+LIVEDIR="LiveOS"
+MACDIR=BOOTDIR+"/mac"
+NETBOOTDIR="images/netboot"
+
+WRAPPER="usr/sbin/wrapper"
+WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
+
+bitsizes = set()
+prepboot = ""
+
+## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
+## so we can't use the udev escape sequences in the root arg.
+## Instead we'll just replace any non-ASCII characters in the isolabel
+## with '_', which means we won't need any udev escapes.
+isolabel = ''.join(ch if ch.isalnum() else '_' for ch in isolabel)
+
+rootarg = "root=live:CDLABEL=%s" % isolabel
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloaders.
+## NOTE: there's two different bootloader setups here:
+## ppc/chrp: for normal PPC systems. needs 'addnote' run on yaboot.
+## uses /etc/yaboot.conf, as is the default.
+## ppc/mac: for PowerMacs. no 'addnote' (it breaks some Macs!)
+## ofboot.b picks one of /ppc/ppc{32,64}/yaboot.conf for yaboot,
+## thus automatically booting the correct kernel for the machine.
+mkdir ${BOOTDIR}
+## boot stuff for normal (CHRP/PREP) PPC systems
+install ${configdir}/bootinfo.txt ${BOOTDIR}
+install boot/efika.forth ${BOOTDIR}
+mkdir ${BOOTDIR}/chrp
+install usr/lib/yaboot/yaboot ${BOOTDIR}/chrp
+runcmd ${inroot}/usr/lib/yaboot/addnote ${outroot}/${BOOTDIR}/chrp/yaboot
+## special boot dir for PowerMacs
+mkdir ${MACDIR}
+install usr/lib/yaboot/yaboot ${MACDIR}
+install ${configdir}/ofboot.b ${MACDIR}
+
+## copy mapping and magic files needed for isos
+install ${configdir}/mapping ${BOOTDIR}
+install ${configdir}/magic ${BOOTDIR}
+
+## NOTE: PPC is kind of funky. There's three possible "arch" setups here:
+## ppc, ppc64, and 'hybrid' (ppc userspace, both ppc & ppc64 kernels).
+
+## Install kernel and bootloader config (in separate places for each arch)
+%for kernel in kernels:
+ <%
+ bits = 64 if kernel.arch == "ppc64" else 32
+ ## separate dirs/images for each arch
+ KERNELDIR=BOOTDIR+"/ppc%s" % bits
+ NETIMG=NETBOOTDIR+"/ppc%s.img" % bits
+ bitsizes.add(bits)
+ %>
+ ## install kernel
+ mkdir ${KERNELDIR} ${NETBOOTDIR}
+ installkernel images-${kernel.arch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${kernel.arch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+ ## install arch-specific bootloader config
+ install ${configdir}/yaboot.conf.in ${KERNELDIR}/yaboot.conf
+ replace @BITS@ ${bits} ${KERNELDIR}/yaboot.conf
+ replace @PRODUCT@ '${product.name}' ${KERNELDIR}/yaboot.conf
+ replace @VERSION@ ${product.version} ${KERNELDIR}/yaboot.conf
+ replace @ROOT@ "${rootarg}" ${KERNELDIR}/yaboot.conf
+
+ ## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img
+ runcmd ${inroot}/${WRAPPER} -p of \
+ -D ${inroot}/${WRAPPER_DATA} \
+ -i ${outroot}/${KERNELDIR}/initrd.img \
+ ${outroot}/${KERNELDIR}/vmlinuz \
+ -o ${outroot}/${NETIMG}
+ treeinfo images-${kernel.arch} zimage ${NETIMG}
+ ## PReP is 32-bit only
+ %if bits == 32:
+ ## Yes, this is supposed to be a relative path
+ <% prepboot="-prep-boot " + NETIMG %>
+ %endif
+%endfor
+
+## choose correct yaboot.conf
+mkdir etc
+%if len(bitsizes) == 2:
+ ## both kernels means hybrid - use the magic hybrid config
+ install ${configdir}/yaboot.conf.3264 etc/yaboot.conf
+ replace @PRODUCT@ ${product.name} etc/yaboot.conf
+ replace @VERSION@ ${product.version} etc/yaboot.conf
+ replace @ROOT@ "${rootarg}" etc/yaboot.conf
+%else:
+ ## single arch - use the arch-specific yaboot.conf from above
+ copy ${KERNELDIR}/yaboot.conf etc/yaboot.conf
+%endif
+
+## make boot.iso
+runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
+ ${prepboot} -part -hfs -T -r -l -J \
+ -A "${product.name} ${product.version}" -sysid PPC -V '${isolabel}' \
+ -volset "${product.version}" -volset-size 1 -volset-seqno 1 \
+ -hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \
+ -map ${inroot}/${configdir}/mapping \
+ -no-desktop -allow-multidot -graft-points \
+ etc=${outroot}/etc \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR}
+
+%for kernel in kernels:
+ treeinfo images-${kernel.arch} boot.iso images/boot.iso
+%endfor
diff --git a/lorax-templates-qubes/templates/live/s390.tmpl b/lorax-templates-qubes/templates/live/s390.tmpl
new file mode 100644
index 0000000..f02963d
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/s390.tmpl
@@ -0,0 +1,33 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, outroot"/>
+<%
+configdir="tmp/config_files/s390"
+BOOTDIR="images"
+KERNELDIR=BOOTDIR
+INITRD_ADDRESS="0x02000000"
+# The assumption seems to be that there is only one s390 kernel, ever
+kernel = kernels[0]
+%>
+
+mkdir images
+install ${runtime_img} images
+treeinfo stage2 mainimage images/${runtime_base}
+
+## install bootloader (such as it is) and bootloader config
+install ${configdir}/redhat.exec ${BOOTDIR}
+install ${configdir}/generic.prm ${BOOTDIR}
+install ${configdir}/generic.ins .
+
+## configure bootloader
+replace @INITRD_LOAD_ADDRESS@ ${INITRD_ADDRESS} generic.ins
+
+## install kernel
+installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/kernel.img
+installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+## s390 needs some extra boot config
+createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize
+
+## s390 also has some special treeinfo data
+treeinfo images-${basearch} initrd.addrsize ${BOOTDIR}/initrd.addrsize
+treeinfo images-${basearch} generic.prm ${BOOTDIR}/generic.prm
+treeinfo images-${basearch} generic.ins generic.ins
diff --git a/lorax-templates-qubes/templates/live/sparc.tmpl b/lorax-templates-qubes/templates/live/sparc.tmpl
new file mode 100644
index 0000000..2452f80
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/sparc.tmpl
@@ -0,0 +1,38 @@
+<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/sparc"
+BOOTDIR="boot"
+LIVEDIR="LiveOS"
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+install boot/*.b ${BOOTDIR}
+install ${configdir}/silo.conf ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/boot.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/boot.msg
+replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/silo.conf
+
+## install kernels
+## FIXME: this will overwrite if there are multiple sparc kernels
+%for kernel in kernels:
+ installkernel images-${basearch} ${kernel.path} ${BOOTDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${BOOTDIR}/initrd.img
+%endfor
+
+## make boot.iso
+runcmd mkisofs -R -J -T -G /${BOOTDIR}/isofs.b -B ... \
+ -s /${BOOTDIR}/silo.conf -r -V '${isolabel}' \
+ -A "${product.name} ${product.version}" \
+ -x Fedora -x repodata \
+ -sparc-label "${product.name} ${product.version} Boot Disc" \
+ -o ${outroot}/images/boot.iso \
+ -graft-points ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR}
+treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/lorax-templates-qubes/templates/live/x86.tmpl b/lorax-templates-qubes/templates/live/x86.tmpl
new file mode 100644
index 0000000..8d31b8b
--- /dev/null
+++ b/lorax-templates-qubes/templates/live/x86.tmpl
@@ -0,0 +1,77 @@
+<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/x86"
+SYSLINUXDIR="usr/share/syslinux"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="isolinux"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+mkdir ${BOOTDIR}
+install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR}
+install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR}
+install ${configdir}/isolinux.cfg ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+install ${configdir}/grub.conf ${BOOTDIR}
+install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png
+install boot/memtest* ${BOOTDIR}/memtest
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+ %else:
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+ %endif
+%endfor
+
+hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR}
+hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
+%if basearch == 'x86_64':
+ treeinfo images-xen kernel ${KERNELDIR}/vmlinuz
+ treeinfo images-xen initrd ${KERNELDIR}/initrd.img
+%endif
+
+## WHeeeeeeee, EFI.
+## We could remove the basearch restriction someday..
+<% efiargs=""; efigraft=""; efihybrid="" %>
+%if exists("boot/efi/EFI/fedora/gcdx64.efi") and basearch != 'i386':
+ <%
+ efiarch = 'X64' if basearch=='x86_64' else 'IA32'
+ efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot)
+ images = ["images/efiboot.img"]
+ if domacboot:
+ images.append("images/macboot.img")
+ for img in images:
+ efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot".format(img)
+ efigraft += " {0}={1}/{0}".format(img,outroot)
+ efihybrid = "--uefi --mac" if domacboot else "--uefi"
+ %>
+ <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
+%endif
+
+## make boot.iso
+runcmd mkisofs -o ${outroot}/images/boot.iso \
+ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
+ -boot-load-size 4 -boot-info-table -no-emul-boot \
+ ${efiargs} -R -J -V '${isolabel}' -T -graft-points \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${KERNELDIR}=${outroot}/${KERNELDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR} \
+ ${efigraft}
+runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
+treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/lorax-templates-qubes/templates/ppc.tmpl b/lorax-templates-qubes/templates/ppc.tmpl
new file mode 100644
index 0000000..bbef5fa
--- /dev/null
+++ b/lorax-templates-qubes/templates/ppc.tmpl
@@ -0,0 +1,123 @@
+<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/ppc"
+BOOTDIR="ppc"
+LIVEDIR="LiveOS"
+MACDIR=BOOTDIR+"/mac"
+NETBOOTDIR="images/netboot"
+
+WRAPPER="usr/sbin/wrapper"
+WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
+
+bitsizes = set()
+prepboot = ""
+
+## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
+## so we can't use the udev escape sequences in the root arg.
+## Instead we'll just replace any non-ASCII characters in the isolabel
+## with '_', which means we won't need any udev escapes.
+isolabel = ''.join(ch if ch.isalnum() else '_' for ch in isolabel)
+
+## Anaconda finds the CDROM device automatically
+rootarg = ""
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloaders.
+## NOTE: there's two different bootloader setups here:
+## ppc/chrp: for normal PPC systems. needs 'addnote' run on yaboot.
+## uses /etc/yaboot.conf, as is the default.
+## ppc/mac: for PowerMacs. no 'addnote' (it breaks some Macs!)
+## ofboot.b picks one of /ppc/ppc{32,64}/yaboot.conf for yaboot,
+## thus automatically booting the correct kernel for the machine.
+mkdir ${BOOTDIR}
+## boot stuff for normal (CHRP/PREP) PPC systems
+install ${configdir}/bootinfo.txt ${BOOTDIR}
+install boot/efika.forth ${BOOTDIR}
+mkdir ${BOOTDIR}/chrp
+install usr/lib/yaboot/yaboot ${BOOTDIR}/chrp
+runcmd ${inroot}/usr/lib/yaboot/addnote ${outroot}/${BOOTDIR}/chrp/yaboot
+## special boot dir for PowerMacs
+mkdir ${MACDIR}
+install usr/lib/yaboot/yaboot ${MACDIR}
+install ${configdir}/ofboot.b ${MACDIR}
+
+## copy mapping and magic files needed for isos
+install ${configdir}/mapping ${BOOTDIR}
+install ${configdir}/magic ${BOOTDIR}
+
+## NOTE: PPC is kind of funky. There's three possible "arch" setups here:
+## ppc, ppc64, and 'hybrid' (ppc userspace, both ppc & ppc64 kernels).
+
+## Install kernel and bootloader config (in separate places for each arch)
+%for kernel in kernels:
+ <%
+ bits = 64 if kernel.arch == "ppc64" else 32
+ ## separate dirs/images for each arch
+ KERNELDIR=BOOTDIR+"/ppc%s" % bits
+ NETIMG=NETBOOTDIR+"/ppc%s.img" % bits
+ bitsizes.add(bits)
+ %>
+ ## install kernel
+ mkdir ${KERNELDIR} ${NETBOOTDIR}
+ installkernel images-${kernel.arch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${kernel.arch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+ %if doupgrade:
+ ## upgrade image
+ installupgradeinitrd images-${kernel.arch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+ %endif
+
+ ## install arch-specific bootloader config
+ install ${configdir}/yaboot.conf.in ${KERNELDIR}/yaboot.conf
+ replace @BITS@ ${bits} ${KERNELDIR}/yaboot.conf
+ replace @PRODUCT@ '${product.name}' ${KERNELDIR}/yaboot.conf
+ replace @VERSION@ ${product.version} ${KERNELDIR}/yaboot.conf
+ replace @ROOT@ "${rootarg}" ${KERNELDIR}/yaboot.conf
+
+ ## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img
+ runcmd ${inroot}/${WRAPPER} -p of \
+ -D ${inroot}/${WRAPPER_DATA} \
+ -i ${outroot}/${KERNELDIR}/initrd.img \
+ ${outroot}/${KERNELDIR}/vmlinuz \
+ -o ${outroot}/${NETIMG}
+ treeinfo images-${kernel.arch} zimage ${NETIMG}
+ ## PReP is 32-bit only
+ %if bits == 32:
+ ## Yes, this is supposed to be a relative path
+ <% prepboot="-prep-boot " + NETIMG %>
+ %endif
+%endfor
+
+## choose correct yaboot.conf
+mkdir etc
+%if len(bitsizes) == 2:
+ ## both kernels means hybrid - use the magic hybrid config
+ install ${configdir}/yaboot.conf.3264 etc/yaboot.conf
+ replace @PRODUCT@ ${product.name} etc/yaboot.conf
+ replace @VERSION@ ${product.version} etc/yaboot.conf
+ replace @ROOT@ "${rootarg}" etc/yaboot.conf
+%else:
+ ## single arch - use the arch-specific yaboot.conf from above
+ copy ${KERNELDIR}/yaboot.conf etc/yaboot.conf
+%endif
+
+## make boot.iso
+runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
+ ${prepboot} -part -hfs -T -r -l -J \
+ -A "${product.name} ${product.version}" -sysid PPC -V '${isolabel}' \
+ -volset "${product.version}" -volset-size 1 -volset-seqno 1 \
+ -hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \
+ -map ${inroot}/${configdir}/mapping \
+ -no-desktop -allow-multidot -graft-points \
+ etc=${outroot}/etc \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR}
+
+%for kernel in kernels:
+ treeinfo images-${kernel.arch} boot.iso images/boot.iso
+%endfor
diff --git a/lorax-templates-qubes/templates/runtime-cleanup.tmpl b/lorax-templates-qubes/templates/runtime-cleanup.tmpl
new file mode 100644
index 0000000..34a0a3a
--- /dev/null
+++ b/lorax-templates-qubes/templates/runtime-cleanup.tmpl
@@ -0,0 +1,352 @@
+## lorax template file: cleanup for the ramdisk (runtime image)
+<%page args="libdir, product, root"/>
+
+## remove the sources
+remove usr/share/i18n
+
+## not required packages installed as dependencies
+## no perl besides s390x
+%if basearch != "s390x":
+ removepkg perl*
+%endif
+## no sound support, thanks
+removepkg alsa* flac gstreamer-tools libsndfile pulseaudio* sound-theme-freedesktop
+removepkg midisport-firmware
+## no fancy video, either
+removepkg libcrystalhd crystalhd-firmware ivtv-firmware cx18-firmware
+removepkg mesa-dri-drivers
+## we don't create new initramfs/bootloader conf inside anaconda
+## (that happens inside the target system after we install dracut/grubby)
+removepkg dracut-network grubby anaconda-dracut
+removefrom ${product.name}-logos /usr/share/plymouth/*
+## In order to execute the /usr move on upgrades we need convertfs from dracut
+## We also need dracut-shutdown.service and dracut-initramfs-restore to reboot
+removefrom dracut --allbut /usr/lib/dracut/modules.d/30convertfs/convertfs.sh \
+ /usr/lib/dracut/modules.d/99base/dracut-lib.sh \
+ /usr/lib/systemd/* /usr/lib/dracut/dracut-initramfs-restore
+## we don't run SELinux (not in enforcing, anyway)
+removepkg checkpolicy selinux-policy libselinux-utils
+## anaconda has its own repo files
+removepkg fedora-release fedora-release-rawhide
+## no user accounts = no account management
+removepkg usermode usermode-gtk passwd shadow-utils
+## no services to turn on/off (keep the /etc/init.d link though)
+removefrom chkconfig --allbut /etc/init.d
+## we don't check GPG keys (hooray bug #998)
+removepkg gnupg2 pinentry
+## no printer/scanner support in anaconda
+removepkg cups-libs iscan-firmware
+## no storage device monitoring
+removepkg device-mapper-event dmraid-events sgpio
+## we don't (currently) support deltarpms in anaconda
+removepkg deltarpm
+## no notifications in anaconda
+removepkg notification-daemon
+## logrotate isn't useful in anaconda
+removepkg logrotate
+remove /etc/logrotate.d
+## anaconda needs this to do media check
+removefrom isomd5sum --allbut /usr/bin/checkisomd5
+
+## various other things we remove to save space
+removepkg avahi-autoipd coreutils-libs curl dash db4-utils diffutils file
+removepkg genisoimage gnome-python2 info iptables
+removepkg jasper-libs libXt libXxf86misc
+removepkg libasyncns libdaemon libhbaapi libhbalinux
+removepkg libmcpp libpcap libtiff libutempter linux-atm-libs
+removepkg lvm2-libs m4 mailx makebootfat mcpp
+removepkg mingetty mobile-broadband-provider-info pkgconfig ppp pth
+removepkg rmt rpcbind squashfs-tools system-config-firewall-base
+removepkg tigervnc-license ttmkfdir xml-common xorg-x11-font-utils
+removepkg xorg-x11-server-common yum-utils
+
+## other removals
+remove /boot /home /media /opt /srv /tmp/*
+remove /usr/etc /usr/games /usr/local /usr/tmp
+remove /usr/share/doc /usr/share/info /usr/share/man /usr/share/gnome
+remove /usr/share/mime/application /usr/share/mime/audio /usr/share/mime/image
+remove /usr/share/mime/inode /usr/share/mime/message /usr/share/mime/model
+remove /usr/share/mime/multipart /usr/share/mime/packages /usr/share/mime/text
+remove /usr/share/mime/video /usr/share/mime/x-content /usr/share/mime/x-epoc
+remove /var/db /var/games /var/tmp /var/yp /var/nis /var/opt /var/local
+remove /var/mail /var/spool /var/preserve /var/report
+remove /var/lib/rpm/* /var/lib/yum
+
+## icons cache
+remove /usr/share/icons/*/icon-theme.cache
+
+## clean up kernel modules
+<%
+removekmods = """
+sound drivers/media drivers/hwmon drivers/video drivers/char
+net/atm net/bluetooth net/sched net/sctp net/bridge
+net/rds net/l2tp net/decnet net/netfilter net/ipv4 net/ipv6
+drivers/watchdog drivers/target drivers/rtc drivers/input/joystick
+drivers/bluetooth drivers/hid drivers/edac drivers/staging
+drivers/usb/serial drivers/usb/host drivers/usb/misc
+fs/ocfs2 fs/ceph fs/nfsd fs/ubifs fs/nilfs2
+arch/x86/kvm
+"""
+%>
+%for kmodpath in removekmods.split():
+ remove lib/modules/*/kernel/${kmodpath}
+%endfor
+remove lib/modules/*/{build,source,*.map}
+## NOTE: depmod gets re-run after cleanup finishes
+
+## remove unused themes, theme engines, icons, etc.
+removefrom gtk2 /usr/${libdir}/gtk-2.0/*/{engines,printbackends}/*
+removefrom gtk2 /usr/share/themes/*
+## clearlooks is the theme we use for gtk2
+removefrom gtk2-engines --allbut /usr/${libdir}/*/libclearlooks.so \
+ /usr/share/themes/Clearlooks/*
+removefrom gtk3 /usr/${libdir}/gtk-3.0/*/printbackends/*
+removefrom gtk3 /usr/share/themes/*
+## the Fedora icon theme inherits from Mist, so we need that
+removefrom gnome-themes --allbut /usr/share/icons/Mist/* \
+ /usr/share/themes/Clearlooks/*
+## Adwaita is the default theme for gtk3 and the default metacity theme
+removefrom gnome-themes-standard --allbut /usr/share/themes/Adwaita/*
+removefrom metacity --allbut /usr/bin/* /usr/${libdir}/* /etc/*
+
+## filesystem tools
+removefrom e2fsprogs /usr/share/locale/*
+removefrom xfsprogs /usr/share/locale/*
+
+## other package specific removals
+removefrom GConf2 /etc/rpm/* /etc/xdg/* /usr/bin/*
+removefrom GConf2 /usr/${libdir}/GConf/2/libgconfbackend-{evoldap,oldxml}*
+removefrom GConf2 /usr/${libdir}/gio/modules/*
+removefrom GConf2 /usr/libexec/gconf-defaults-mechanism /usr/share/GConf/*
+removefrom GConf2 /usr/share/locale/* /usr/share/sgml/*
+removefrom NetworkManager /usr/share/NetworkManager/*
+removefrom NetworkManager /usr/share/locale/*/NetworkManager.mo
+removefrom nm-connection-editor /usr/${libdir}/*
+removefrom nm-connection-editor /usr/share/applications/*
+removefrom anaconda /etc/* /usr/share/applications/* /usr/share/icons/*
+removefrom at-spi /etc/xdg/* /usr/${libdir}/libcspi*
+removefrom at-spi /usr/${libdir}/libloginhelper* /usr/share/locale/*
+removefrom atk /usr/share/locale/*
+removefrom audit /etc/* /sbin/audispd /sbin/auditctl /sbin/aureport
+removefrom audit /sbin/ausearch /sbin/autrace /usr/bin/*
+removefrom audit-libs /etc/* /${libdir}/libauparse*
+removefrom authconfig /usr/sbin/* /usr/share/*
+removefrom bash /etc/* /usr/bin/bashbug* /usr/share/*
+removefrom bind-libs-lite /usr/${libdir}/libirs*
+removefrom bind-libs-lite /usr/${libdir}/libisccfg-export*
+removefrom bind-utils /usr/bin/dig /usr/bin/host /usr/bin/nsupdate
+removefrom bitmap-fangsongti-fonts /usr/share/fonts/*
+removefrom ca-certificates /etc/pki/java/*
+removefrom ca-certificates /etc/pki/tls/certs/ca-bundle.trust.crt /etc/ssl/*
+removefrom cairo /usr/${libdir}/libcairo-script*
+removefrom coreutils /etc/* /usr/bin/link /usr/bin/nice /usr/bin/stty /usr/bin/su /usr/bin/unlink
+removefrom coreutils /usr/sbin/runuser /usr/bin/[ /usr/bin/base64 /usr/bin/chcon
+removefrom coreutils /usr/bin/cksum /usr/bin/comm /usr/bin/csplit
+removefrom coreutils /usr/bin/dir /usr/bin/dircolors /usr/bin/dirname
+removefrom coreutils /usr/bin/expand /usr/bin/factor
+removefrom coreutils /usr/bin/fold /usr/bin/groups /usr/bin/hostid
+removefrom coreutils /usr/bin/install /usr/bin/join /usr/bin/logname
+removefrom coreutils /usr/bin/mkfifo /usr/bin/nl /usr/bin/nohup /usr/bin/nproc
+removefrom coreutils /usr/bin/od /usr/bin/paste /usr/bin/pathchk
+removefrom coreutils /usr/bin/pinky /usr/bin/pr /usr/bin/printenv
+removefrom coreutils /usr/bin/printf /usr/bin/ptx /usr/bin/runcon /usr/bin/seq
+removefrom coreutils /usr/bin/sha224sum /usr/bin/sha384sum
+removefrom coreutils /usr/bin/sha512sum /usr/bin/shuf /usr/bin/stat
+removefrom coreutils /usr/bin/stdbuf /usr/bin/sum /usr/bin/test
+removefrom coreutils /usr/bin/timeout /usr/bin/truncate /usr/bin/tsort
+removefrom coreutils /usr/bin/unexpand /usr/bin/users /usr/bin/vdir
+removefrom coreutils /usr/bin/who /usr/bin/whoami /usr/bin/yes /usr/share/*
+removefrom cpio /usr/share/*
+removefrom cracklib /usr/sbin/*
+removefrom cracklib-dicts /usr/${libdir}/* /usr/sbin/*
+removefrom createrepo /usr/bin/* /usr/share/*
+removefrom cryptsetup-luks /usr/share/*
+removefrom cyrus-sasl-lib /usr/sbin/*
+removefrom db4 /usr/*
+removefrom dbus-glib /usr/bin/*
+removefrom dbus-x11 /etc/X11/*
+removefrom dejavu-sans-fonts --allbut *.conf */DejaVuSans{,-Bold}.ttf
+removefrom dejavu-sans-mono-fonts --allbut *.conf */DejaVuSansMono.ttf
+removefrom device-mapper-multipath /etc/* /sbin/mpathconf /sbin/multipathd /lib/udev/rules.d/62-multipath.rules
+removefrom dhclient /usr/lib/* /usr/share/*
+removefrom dnsmasq /etc/rc.d/* /usr/sbin/*
+removefrom dump /etc/*
+removefrom elfutils-libelf /usr/share/locale/*
+removefrom ethtool /usr/sbin/*
+removefrom expat /usr/bin/*
+removefrom fcoe-utils /etc/rc.d/* /usr/libexec/fcoe/dcbcheck.sh
+removefrom fcoe-utils /usr/libexec/fcoe/fcc.sh /usr/libexec/fcoe/fcoe-setup.sh
+removefrom fcoe-utils /usr/libexec/fcoe/fcoedump.sh /usr/sbin/fcnsq
+removefrom fcoe-utils /usr/sbin/fcoeadm /usr/sbin/fcping /usr/sbin/fcrls
+removefrom file-libs /usr/share/*
+removefrom findutils /usr/bin/oldfind /usr/share/*
+removefrom firstboot /lib/systemd/* /usr/sbin/* /usr/share/firstboot/*
+removefrom firstboot /usr/share/locale/*
+removefrom fontconfig /usr/bin/*
+removefrom gawk /usr/bin/{igawk,pgawk} /usr/libexec/* /usr/share/*
+removefrom gdisk /usr/share/*
+removefrom gdk-pixbuf2 /usr/share/locale*
+removefrom gfs2-utils /usr/sbin/*
+removefrom glib2 /etc/* /usr/bin/* /usr/share/locale/*
+removefrom glibc /etc/gai.conf /etc/ld.so.conf /etc/localtime /etc/rpc
+removefrom glibc /lib/*/nosegneg/* /${libdir}/libBrokenLocale*
+removefrom glibc /${libdir}/libSegFault* /${libdir}/libanl*
+removefrom glibc /${libdir}/libcidn* /${libdir}/libnss_compat*
+removefrom glibc /${libdir}/libnss_hesiod* /${libdir}/libnss_nis*
+removefrom glibc /${libdir}/libthread* /${libdir}/rtkaio* /sbin/*
+removefrom glibc /usr/libexec/* /usr/sbin/*
+removefrom glibc-common /etc/* /usr/bin/catchsegv /usr/bin/gencat
+removefrom glibc-common /usr/bin/getconf /usr/bin/getent
+removefrom glibc-common /usr/bin/locale /usr/bin/rpcgen /usr/bin/sprof
+removefrom glibc-common /usr/bin/tzselect /usr/bin/localedef
+removefrom glibc-common /usr/libexec/* /usr/sbin/*
+removefrom gmp /usr/${libdir}/libgmpxx.* /usr/${libdir}/libmp.*
+removefrom gnome-bluetooth-libs /usr/${libdir}/libgnome-bluetooth*
+removefrom gnome-bluetooth-libs /usr/share/*
+removefrom gnome-keyring /etc/xdg/* /usr/bin/* /usr/${libdir}/* /usr/libexec/*
+removefrom gnome-keyring /usr/share/GConf/* /usr/share/gcr-3/*
+removefrom gnome-keyring /usr/share/glib-2.0/* /usr/share/gnome-keyring*
+removefrom gnome-keyring /usr/share/locale/*
+removefrom gnome-python2-gconf /usr/share/pygtk/*
+removefrom gnutls /usr/share/locale/*
+removefrom gpgme /usr/${libdir}/libgpgme-*
+removefrom grep /etc/* /usr/share/locale/*
+removefrom gstreamer /usr/bin/* /usr/${libdir}/gstreamer-0.10/*
+removefrom gstreamer /usr/${libdir}/libgst* /usr/libexec/* /usr/share/locale/*
+removefrom gtk2 /usr/bin/update-gtk-immodules
+removefrom gtk3 /usr/${libdir}/gtk-3.0/*
+removefrom gtk3 /usr/${libdir}/libgailutil*
+removefrom gzip /usr/bin/{gzexe,zcmp,zdiff,zegrep,zfgrep,zforce,zgrep,zless,zmore,znew}
+removefrom hwdata /etc/* /usr/share/hwdata/oui.txt /usr/share/hwdata/pnp.ids
+removefrom hwdata /usr/share/hwdata/upgradelist
+removefrom initscripts /etc/ppp/* /usr/sbin/* /usr/share/locale/*
+removefrom iproute --allbut /usr/sbin/{ip,routef,routel,rtpr}
+removefrom iscsi-initiator-utils /etc/rc.d/*
+removefrom kbd --allbut */bin/{dumpkeys,kbd_mode,loadkeys,setfont,unicode_*,chvt}
+removefrom less /etc/*
+removefrom libX11-common /usr/share/X11/XErrorDB
+removefrom libbonobo /etc/* /usr/bin/* /usr/sbin/* /usr/share/locale/*
+removefrom libbonobo /usr/${libdir}/bonobo/monikers/*
+removefrom libbonobo /usr/${libdir}/orbit-2.0/Bonobo_module.so
+removefrom libcanberra /usr/${libdir}/libcanberra-*
+removefrom libcanberra-gtk2 /usr/${libdir}/gtk-2.0/*
+removefrom libcanberra-gtk3 /usr/bin/* /usr/${libdir}/*
+removefrom libcap /usr/sbin/*
+removefrom libconfig /usr/${libdir}/libconfig++*
+removefrom libcroco /usr/bin/*
+removefrom libgnome-keyring /usr/share/locale/*
+removefrom libgnomecanvas /usr/share/locale/*
+removefrom libgpg-error /usr/bin/* /usr/share/locale/*
+removefrom libgssglue /etc/*
+removefrom libidn /usr/bin/* /usr/share/locale/*
+removefrom libmlx4 /etc/rdma/* /usr/${libdir}/*
+removefrom libnotify /usr/bin/*
+removefrom librsvg2 /usr/bin/*
+removefrom libselinux /usr/sbin/*
+removefrom libsemanage /etc/selinux/*
+removefrom libstdc++ /usr/share/*
+removefrom libthai /usr/share/libthai/*
+removefrom libuser /usr/bin/* /usr/sbin/* /usr/share/locale/*
+removefrom libvorbis /usr/${libdir}/libvorbisenc.*
+removefrom libxml2 /usr/bin/*
+removefrom libxml2-python /usr/${libdir}/python?.?/site-packages/libxml2mod.a
+removefrom libxml2-python /usr/${libdir}/python?.?/site-packages/libxml2mod.la
+removefrom lldpad /etc/* /usr/sbin/lldptool
+removefrom lua /usr/bin/*
+removefrom lvm2 /etc/*
+removefrom lzo /usr/${libdir}/liblzo2.*
+removefrom madan-fonts /usr/share/fonts/madan/*
+removefrom mdadm /etc/*
+removefrom module-init-tools /etc/* /usr/sbin/insmod.static /usr/sbin/weak-modules
+removefrom mt-st /etc/* /usr/sbin/*
+removefrom mtools /etc/*
+removefrom ncurses /usr/bin/captoinfo /usr/bin/infocmp /usr/bin/infotocap
+removefrom ncurses /usr/bin/reset /usr/bin/tabs /usr/bin/tic /usr/bin/toe
+removefrom ncurses /usr/bin/tput /usr/bin/tset
+removefrom ncurses-libs /usr/${libdir}/libform* /usr/${libdir}/libmenu*
+removefrom ncurses-libs /usr/${libdir}/libpanel.* /usr/${libdir}/libtic*
+removefrom net-tools */bin/netstat */sbin/ether-wake */sbin/ipmaddr
+removefrom net-tools */sbin/iptunnel */sbin/mii-diag */sbin/mii-tool
+removefrom net-tools */sbin/nameif */sbin/plipconfig */sbin/slattach
+removefrom net-tools /usr/share/locale/*
+removefrom newt /usr/share/locale/*
+removefrom nfs-utils /etc/nfsmount.conf
+removefrom nfs-utils /etc/rc.d/init.d/* /lib/systemd/system/*
+removefrom nfs-utils /etc/sysconfig/nfs /sbin/rpc.statd /usr/sbin/exportfs
+removefrom nfs-utils /usr/sbin/gss_clnt_send_err /usr/sbin/gss_destroy_creds
+removefrom nfs-utils /usr/sbin/mountstats /usr/sbin/nfsiostat
+removefrom nfs-utils /usr/sbin/nfsstat /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd
+removefrom nfs-utils /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd
+removefrom nfs-utils /usr/sbin/rpc.svcgssd /usr/sbin/rpcdebug
+removefrom nfs-utils /usr/sbin/showmount /usr/sbin/sm-notify
+removefrom nfs-utils /usr/sbin/start-statd /var/lib/nfs/etab
+removefrom nfs-utils /var/lib/nfs/rmtab /var/lib/nfs/state /var/lib/nfs/xtab
+removefrom nhn-nanum-gothic-fonts /usr/share/fonts/nhn-nanum/NanumGothic*Bold.ttf
+removefrom nss-softokn /usr/${libdir}/nss/*
+removefrom openldap /etc/openldap/* /usr/${libdir}/libldap_r-*
+removefrom openssh /etc/ssh/* /usr/libexec/*
+removefrom openssh-clients /etc/ssh/* /usr/bin/slogin /usr/bin/ssh-*
+removefrom openssh-clients /usr/${libdir}/* /usr/libexec/*
+removefrom openssh-server /etc/ssh/* /usr/${libdir}/* /usr/libexec/*
+removefrom openssl /etc/pki/* /usr/bin/* /usr/${libdir}/openssl/*
+removefrom pam /usr/sbin/* /usr/share/locale/*
+removefrom pciutils /usr/sbin/*
+removefrom policycoreutils /etc/* /usr/bin/* /usr/share/locale/*
+removefrom polkit /usr/bin/*
+removefrom polkit-desktop-policy /var/lib/*
+removefrom popt /usr/share/locale/*
+removefrom procps /usr/bin/free /usr/bin/pgrep /usr/bin/pkill
+removefrom procps /usr/bin/pmap /usr/bin/pwdx /usr/bin/skill /usr/bin/slabtop
+removefrom procps /usr/bin/snice /usr/bin/tload /usr/bin/uptime
+removefrom procps /usr/bin/vmstat /usr/bin/w /usr/bin/watch
+removefrom psmisc /usr/share/locale/*
+removefrom pygtk2 /usr/bin/* /usr/${libdir}/pygtk/*
+removefrom pykickstart /usr/bin/* /usr/share/locale/*
+removefrom python-bugzilla /usr/bin/*
+removefrom python-ethtool /usr/sbin/*
+removefrom python-meh /usr/share/locale/*
+removefrom readline /usr/${libdir}/*
+removefrom libreport /usr/bin/* /usr/share/locale/*
+removefrom rpm /usr/bin/* /usr/lib/rpm/platform/* /usr/share/locale/*
+removefrom rsync /etc/*
+removefrom sed /usr/share/locale/*
+removefrom smartmontools /etc/* /usr/sbin/smartd
+removefrom smartmontools /usr/sbin/update-smart-drivedb
+removefrom smartmontools /usr/share/smartmontools/*
+removefrom sqlite /usr/bin/*
+removefrom system-config-date /etc/* /usr/bin/* /usr/share/icons/*
+removefrom system-config-keyboard /etc/* /usr/bin/* /usr/share/icons/*
+removefrom sysvinit-tools /usr/bin/*
+removefrom tar /usr/share/locale/*
+removefrom usbutils /usr/bin/*
+removefrom util-linux --allbut \
+ /usr/bin/{dmesg,kill,login,lsblk,more,mount,umount,mountpoint} \
+ /etc/mtab /etc/pam.d/login /etc/pam.d/remote \
+ /usr/sbin/{agetty,blkid,blockdev,clock,fdisk,fsck,fstrim,hwclock,losetup} \
+ /usr/sbin/{mkswap,nologin,sfdisk,swapoff,swapon,wipefs} \
+ /usr/bin/logger
+removefrom volume_key-libs /usr/share/locale/*
+removefrom wget /etc/* /usr/share/locale/*
+removefrom xkeyboard-config /usr/share/locale/*
+removefrom xorg-x11-drv-intel /usr/${libdir}/libI*
+removefrom xorg-x11-drv-openchrome /usr/${libdir}/libchrome*
+removefrom xorg-x11-drv-synaptics /usr/bin/*
+removefrom xorg-x11-drv-wacom /usr/bin/*
+removefrom xorg-x11-fonts-ethiopic /etc/X11/* /usr/share/X11/fonts/OTF/*
+removefrom xorg-x11-fonts-misc --allbut /usr/share/X11/fonts/misc/{6x13,encodings,fonts,*cursor}*
+removefrom xorg-x11-server-utils --allbut /usr/bin/xrandr /usr/share/X11/rgb.txt
+removefrom yum /etc/* /usr/share/locale/* /usr/share/yum-cli/*
+removefrom ${product.name}-logos /etc/*
+removefrom ${product.name}-logos /usr/share/icons/{Bluecurve,oxygen}/*
+removefrom ${product.name}-logos /usr/share/{firstboot,gnome-screensaver,kde4,pixmaps}/*
+
+## cleanup_python_files()
+runcmd find ${root} -name "*.pyo" -type f -delete
+runcmd find ${root} -name "*.pyc" -type f -exec ln -sf /dev/null {} \;
+
+## remove any broken links in /etc or /usr
+## (broken systemd service links lead to confusing noise at boot)
+## NOTE: not checking /var because we want to keep /var/run
+## NOTE: Excluding /etc/mtab which links to /proc/self/mounts for systemd
+runcmd chroot ${root} find -L /etc /usr -xdev -type l -and \! -name "mtab" \
+ -printf "removing broken symbolic link %p -> %l\n" -delete
diff --git a/lorax-templates-qubes/templates/runtime-install.tmpl b/lorax-templates-qubes/templates/runtime-install.tmpl
new file mode 100644
index 0000000..ab35fbb
--- /dev/null
+++ b/lorax-templates-qubes/templates/runtime-install.tmpl
@@ -0,0 +1,133 @@
+## lorax template file: populate the ramdisk (runtime image)
+<%page args="basearch, product"/>
+
+## anaconda package
+installpkg anaconda anaconda-widgets
+## anaconda deps that aren't in the RPM
+installpkg tmux
+installpkg firstboot
+installpkg iscsi-initiator-utils
+## speed up compression on multicore systems
+installpkg pigz
+
+## firstaidkit (rescue mode) packages
+installpkg firstaidkit-plugin-{passwd,key-recovery,mdadm-conf}
+
+## kernel and firmware
+installpkg kernel
+%if basearch != "s390x":
+ installpkg *-firmware
+ installpkg b43-openfwwf
+%endif
+
+## arch-specific packages (bootloaders etc.)
+%if basearch in ("arm", "armhfp"):
+ installpkg kernel-highbank kernel-imx kernel-kirkwood kernel-mvebu kernel-omap kernel-tegra
+ installpkg uboot-tools
+%endif
+%if basearch == "i386":
+ installpkg kernel-PAE gpart
+%endif
+%if basearch in ("i386", "x86_64"):
+ installpkg grub2 grub2-tools shim grub2-efi efibootmgr biosdevname memtest86+
+%endif
+%if basearch in ("ppc", "ppc64"):
+ installpkg grub2 grub2-tools yaboot fbset hfsutils kernel-bootwrapper ppc64-utils
+%endif
+%if basearch == "s390x":
+ installpkg lsscsi modutils s390utils-base s390utils-cmsfs-fuse
+%endif
+%if basearch == "sparc":
+ installpkg silo tilo
+%endif
+
+## yay, plymouth
+installpkg plymouth
+
+## extra dracut modules
+installpkg dracut-network anaconda-dracut
+
+## fedup-dracut handles upgrades
+installpkg fedup-dracut fedup-dracut-plymouth *-fedup-dracut
+
+## rpcbind or portmap needed by dracut nfs module
+installpkg rpcbind
+
+## required for dracut
+installpkg kbd kbd-misc
+## required for anaconda-dracut (img-lib etc.)
+installpkg tar xz curl
+
+## basic system stuff
+installpkg systemd-sysv systemd-units
+installpkg rsyslog
+
+## xorg/GUI packages
+installpkg xorg-x11-drivers xorg-x11-server-Xorg
+installpkg xorg-x11-server-utils xorg-x11-xauth
+installpkg dbus-x11 metacity gsettings-desktop-schemas
+installpkg nm-connection-editor
+installpkg at-spi at-spi2-atk pyatspi
+installpkg gnome-python2-gconf
+installpkg gobject-introspection
+installpkg librsvg2
+installpkg polkit-desktop-policy
+installpkg gnome-keyring
+installpkg python-imaging
+
+## filesystem tools
+installpkg btrfs-progs jfsutils xfsprogs reiserfs-utils gfs2-utils ntfs-3g ntfsprogs
+installpkg python-volume_key volume_key
+
+## SELinux support
+installpkg selinux-policy-targeted audit libsemanage-python
+
+## network tools/servers
+installpkg python-ethtool ethtool openssh-server nfs-utils
+installpkg tigervnc-server-minimal tigervnc-server-module
+installpkg chrony rdate
+
+## hardware utilities/libraries
+installpkg pciutils pcmciautils usbutils
+installpkg mt-st hdparm smartmontools
+installpkg libmlx4
+
+## translations & language packs
+installpkg yum-langpacks specspo
+
+## fonts & themes
+installpkg bitmap-fangsongti-fonts
+installpkg dejavu-sans-fonts dejavu-sans-mono-fonts
+installpkg kacst-farsi-fonts
+installpkg kacst-qurn-fonts
+installpkg lklug-fonts
+installpkg lohit-*-fonts
+installpkg madan-fonts
+installpkg nhn-nanum-gothic-fonts
+installpkg smc-meera-fonts
+installpkg thai-scalable-waree-fonts
+installpkg vlgothic-fonts
+installpkg wqy-microhei-fonts
+installpkg xorg-x11-fonts-ethiopic xorg-x11-fonts-misc
+installpkg gnome-themes-standard gnome-icon-theme-legacy
+
+## branding & logos
+installpkg fedora-gnome-theme fedora-icon-theme
+
+## debugging/bug reporting tools
+installpkg gdb-gdbserver
+installpkg python-epdb
+installpkg libreport-plugin-bugzilla libreport-plugin-reportuploader
+installpkg fpaste
+
+## extra tools not required by anaconda
+installpkg vim-minimal strace lsof dump xz less eject
+installpkg wget rsync rsh bind-utils ftp mtr vconfig
+installpkg icfg spice-vdagent
+installpkg gdisk
+
+## yum plugins
+installpkg yum-plugin-fastestmirror yum-langpacks
+
+## actually install all the requested packages
+run_pkg_transaction
diff --git a/lorax-templates-qubes/templates/runtime-postinstall.tmpl b/lorax-templates-qubes/templates/runtime-postinstall.tmpl
new file mode 100644
index 0000000..e87a627
--- /dev/null
+++ b/lorax-templates-qubes/templates/runtime-postinstall.tmpl
@@ -0,0 +1,102 @@
+## runtime-postinstall.tmpl
+## post-install setup required to make the system work.
+
+<%page args="root, basearch, libdir, configdir"/>
+<%
+PYTHONDIR = glob("usr/"+libdir+"/python?.?")[0]
+stubs = ("list-harddrives", "raidstart", "raidstop")
+configdir = configdir + "/common"
+%>
+
+## move_stubs()
+move usr/share/anaconda/restart-anaconda usr/bin
+move ${PYTHONDIR}/site-packages/pyanaconda/sitecustomize.py ${PYTHONDIR}/site-packages
+%for stub in stubs:
+ -move usr/share/anaconda/${stub}-stub usr/bin/${stub}
+%endfor
+
+## move_repos()
+move etc/yum.repos.d etc/anaconda.repos.d
+
+## Configure systemd to start anaconda
+remove etc/systemd/system/default.target
+symlink /lib/systemd/system/anaconda.target etc/systemd/system/default.target
+
+## Disable unwanted systemd services
+systemctl disable systemd-readahead-collect.service \
+ systemd-readahead-replay.service \
+ mdmonitor.service \
+ mdmonitor-takeover.service \
+ lvm2-monitor.service
+## These services can't be disabled normally (they're linked into place in
+## /usr/lib/systemd rather than /etc/systemd), so we have to mask them.
+systemctl mask fedora-configure.service fedora-loadmodules.service \
+ fedora-storage-init.service fedora-storage-init-late.service \
+ fedora-autorelabel.service fedora-autorelabel-mark.service \
+ fedora-wait-storage.service media.mount
+
+## install some basic configuration files
+append etc/resolv.conf ""
+append etc/fstab ""
+install ${configdir}/i18n etc/sysconfig
+install ${configdir}/rsyslog.conf etc
+install ${configdir}/bash_history root/.bash_history
+install ${configdir}/profile root/.profile
+install ${configdir}/libuser.conf etc
+install ${configdir}/sysctl.conf etc/sysctl.d/anaconda.conf
+%if exists(root+"/etc/selinux/targeted"):
+ install ${configdir}/selinux.config etc/selinux/config
+%endif
+
+## set up sshd
+install ${configdir}/sshd_config.anaconda etc/ssh
+install ${configdir}/pam.sshd etc/pam.d/sshd
+install ${configdir}/pam.sshd etc/pam.d/login
+install ${configdir}/pam.sshd etc/pam.d/remote
+
+## set up "install" user account
+append etc/passwd "install:x:0:0:root:/root:/usr/libexec/anaconda/run-anaconda"
+append etc/shadow "install::14438:0:99999:7:::"
+## remove root password
+replace "root:\*:" "root::" etc/shadow
+
+## s390-specific setup
+%if basearch in ("s390", "s390x"):
+ ## generate ssh keys
+ runcmd ssh-keygen -q -C "" -N "" -t rsa1 -f ${root}/etc/ssh/ssh_host_key
+ runcmd ssh-keygen -q -C "" -N "" -t rsa -f ${root}/etc/ssh/ssh_host_rsa_key
+ runcmd ssh-keygen -q -C "" -N "" -t dsa -f ${root}/etc/ssh/ssh_host_dsa_key
+ chmod etc/ssh/ssh_host*_key 600
+ chmod etc/ssh/ssh_host*_key.pub 644
+%endif
+
+## gconf settings
+gconfset /apps/metacity/general/button_layout string :
+gconfset /apps/metacity/general/action_right_click_titlebar string none
+gconfset /apps/metacity/general/num_workspaces int 1
+gconfset /apps/metacity/window_keybindings/close string disabled
+gconfset /apps/metacity/global_keybindings/run_command_window_screenshot string disabled
+gconfset /apps/metacity/global_keybindings/run_command_screenshot string disabled
+gconfset /apps/metacity/global_keybindings/switch_to_workspace_up string disabled
+gconfset /apps/metacity/global_keybindings/switch_to_workspace_down string disabled
+gconfset /apps/metacity/global_keybindings/switch_to_workspace_left string disabled
+gconfset /apps/metacity/global_keybindings/switch_to_workspace_right string disabled
+gconfset /apps/metacity/global_keybindings/switch_windows string disabled
+gconfset /desktop/gnome/interface/accessibility bool true
+gconfset /desktop/gnome/interface/at-spi-corba bool true
+
+## Some settings are controlled by gsettings now.
+install ${configdir}/org.gnome.desktop.wm.keybindings.gschema.override usr/share/glib-2.0/schemas
+runcmd chroot ${root} glib-compile-schemas /usr/share/glib-2.0/schemas
+
+move usr/libexec/anaconda/auditd sbin
+
+## for compatibility with Ancient Anaconda Traditions
+symlink lib/modules /modules
+symlink lib/firmware /firmware
+symlink ../run/install mnt/install
+
+## create_depmod_conf()
+append etc/depmod.d/dd.conf "search updates built-in"
+
+## TODO: we could run prelink here if we wanted?
diff --git a/lorax-templates-qubes/templates/s390.tmpl b/lorax-templates-qubes/templates/s390.tmpl
new file mode 100644
index 0000000..0da951f
--- /dev/null
+++ b/lorax-templates-qubes/templates/s390.tmpl
@@ -0,0 +1,38 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, outroot"/>
+<%
+configdir="tmp/config_files/s390"
+BOOTDIR="images"
+KERNELDIR=BOOTDIR
+INITRD_ADDRESS="0x02000000"
+# The assumption seems to be that there is only one s390 kernel, ever
+kernel = kernels[0]
+%>
+
+mkdir images
+install ${runtime_img} images
+treeinfo stage2 mainimage images/${runtime_base}
+
+## install bootloader (such as it is) and bootloader config
+install ${configdir}/redhat.exec ${BOOTDIR}
+install ${configdir}/generic.prm ${BOOTDIR}
+install ${configdir}/generic.ins .
+
+## configure bootloader
+replace @INITRD_LOAD_ADDRESS@ ${INITRD_ADDRESS} generic.ins
+
+## install kernel
+installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/kernel.img
+installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+%if doupgrade:
+ ## upgrader image
+ installupgradeinitrd images-${basearch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+%endif
+
+## s390 needs some extra boot config
+createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize
+
+## s390 also has some special treeinfo data
+treeinfo images-${basearch} initrd.addrsize ${BOOTDIR}/initrd.addrsize
+treeinfo images-${basearch} generic.prm ${BOOTDIR}/generic.prm
+treeinfo images-${basearch} generic.ins generic.ins
diff --git a/lorax-templates-qubes/templates/sparc.tmpl b/lorax-templates-qubes/templates/sparc.tmpl
new file mode 100644
index 0000000..1a66e2c
--- /dev/null
+++ b/lorax-templates-qubes/templates/sparc.tmpl
@@ -0,0 +1,38 @@
+<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/sparc"
+BOOTDIR="boot"
+LIVEDIR="LiveOS"
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+install boot/*.b ${BOOTDIR}
+install ${configdir}/silo.conf ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/boot.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/boot.msg
+replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${BOOTDIR}/silo.conf
+
+## install kernels
+## FIXME: this will overwrite if there are multiple sparc kernels
+%for kernel in kernels:
+ installkernel images-${basearch} ${kernel.path} ${BOOTDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${BOOTDIR}/initrd.img
+%endfor
+
+## make boot.iso
+runcmd mkisofs -R -J -T -G /${BOOTDIR}/isofs.b -B ... \
+ -s /${BOOTDIR}/silo.conf -r -V '${isolabel}' \
+ -A "${product.name} ${product.version}" \
+ -x Fedora -x repodata \
+ -sparc-label "${product.name} ${product.version} Boot Disc" \
+ -o ${outroot}/images/boot.iso \
+ -graft-points ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR}
+treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/lorax-templates-qubes/templates/x86.tmpl b/lorax-templates-qubes/templates/x86.tmpl
new file mode 100644
index 0000000..30041ee
--- /dev/null
+++ b/lorax-templates-qubes/templates/x86.tmpl
@@ -0,0 +1,91 @@
+<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/x86"
+SYSLINUXDIR="usr/share/syslinux"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="isolinux"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+mkdir ${BOOTDIR}
+install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR}
+install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR}
+install ${configdir}/isolinux.cfg ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+install ${configdir}/grub.conf ${BOOTDIR}
+install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png
+install boot/memtest* ${BOOTDIR}/memtest
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ ## i386 PAE
+ installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+ %if doupgrade:
+ installupgradeinitrd images-xen ${kernel.upgrade.path} ${KERNELDIR}/upgrade-${kernel.flavor}.img
+ %endif
+ %else:
+ ## normal i386, x86_64
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+ %if doupgrade:
+ installupgradeinitrd images-${basearch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+ %endif
+ %endif
+%endfor
+
+hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR}
+hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
+%if doupgrade:
+ hardlink ${KERNELDIR}/upgrade.img ${BOOTDIR}
+%endif
+%if basearch == 'x86_64':
+ treeinfo images-xen kernel ${KERNELDIR}/vmlinuz
+ treeinfo images-xen initrd ${KERNELDIR}/initrd.img
+ %if doupgrade:
+ treeinfo images-xen upgrade ${KERNELDIR}/upgrade.img
+ %endif
+%endif
+
+## WHeeeeeeee, EFI.
+## We could remove the basearch restriction someday..
+<% efiargs=""; efigraft=""; efihybrid="" %>
+%if exists("boot/efi/EFI/fedora/gcdx64.efi") and basearch != 'i386':
+ <%
+ efiarch = 'X64' if basearch=='x86_64' else 'IA32'
+ efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot)
+ images = ["images/efiboot.img"]
+ if domacboot:
+ images.append("images/macboot.img")
+ for img in images:
+ efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot".format(img)
+ efigraft += " {0}={1}/{0}".format(img,outroot)
+ efihybrid = "--uefi --mac" if domacboot else "--uefi"
+ %>
+ <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
+%endif
+
+## make boot.iso
+runcmd mkisofs -o ${outroot}/images/boot.iso \
+ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
+ -boot-load-size 4 -boot-info-table -no-emul-boot \
+ ${efiargs} -R -J -V '${isolabel}' -T -graft-points \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${KERNELDIR}=${outroot}/${KERNELDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR} \
+ ${efigraft}
+runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
+treeinfo images-${basearch} boot.iso images/boot.iso