<?xml version="1.0"?>
<libosinfo version="0.0.1">
<!-- Licensed under the GNU General Public License version 2 or later.
See http://www.gnu.org/licenses/ for a copy of the license text -->
<install-script id="http://redhat.com/rhel/kickstart/desktop">
<profile>desktop</profile>
<expected-filename>rhel.ks</expected-filename>
<config>
<param name="l10n-keyboard" policy="optional"/>
<param name="l10n-language" policy="optional"/>
<param name="l10n-timezone" policy="optional"/>
<param name="hostname" policy="optional"/>
<param name="user-login" policy="required"/>
<param name="user-password" policy="optional"/>
<param name="admin-password" policy="optional"/>
<param name="avatar-location" policy="optional"/>
<param name="avatar-disk" policy="optional"/>
<param name="target-disk" policy="optional"/>
<param name="script-disk" policy="optional"/>
</config>
<injection-method>cdrom</injection-method>
<injection-method>disk</injection-method>
<injection-method>floppy</injection-method>
<injection-method>initrd</injection-method>
<avatar-format>
<mime-type>image/png</mime-type>
</avatar-format>
<template>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template name="hostname">
<xsl:choose>
<xsl:when test="config/hostname != ''">
<xsl:value-of select="config/hostname"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>localhost</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="target-disk">
<xsl:choose>
<xsl:when test="config/target-disk != ''">
<xsl:value-of select="config/target-disk"/>
</xsl:when>
<xsl:when test="os/version > 5.5 or contains(os/version, '-unknown')">
<!-- virtio -->
<xsl:text>/dev/vda</xsl:text>
</xsl:when>
<xsl:otherwise>
<!-- IDE -->
<xsl:text>/dev/sda</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="script-disk">
<xsl:variable name="script-disk">
<xsl:choose>
<xsl:when test="config/script-disk != ''">
<xsl:value-of select="config/script-disk"/>
</xsl:when>
<xsl:when test="os/version > 5.5 or contains(os/version, '-unknown')">
<xsl:text>/dev/sda</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>/dev/sdb</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="substring-after($script-disk, '/dev/')"/>
</xsl:template>
<!-- The default values of avatar-disk consider the avatar is stored
in the same disk as the installation scripts. -->
<xsl:template name="avatar-disk">
<xsl:choose>
<xsl:when test="config/avatar-disk != ''">
<xsl:value-of select="config/avatar-disk"/>
</xsl:when>
<xsl:when test="os/version > 5.5 or contains(os/version, '-unknown')">
<xsl:text>/dev/sda</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>/dev/sdb</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/command-line">
<xsl:text>ks=</xsl:text>
<xsl:choose>
<xsl:when test="script/preferred-injection-method = 'initrd'">
<xsl:text>file:/</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>hd:</xsl:text>
<xsl:call-template name="script-disk"/>
<xsl:text>:/</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="script/expected-filename"/>
<xsl:if test="script/installation-source = 'network'">
<xsl:choose>
<xsl:when test="os/version < 7 or os/version = '6-unknown'">
<xsl:text> method=</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> inst.repo=</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="installation-url"/>
</xsl:if>
</xsl:template>
<xsl:template name="version">
<xsl:choose>
<xsl:when test="os/version < 7 or os/version = '6-unknown'">
<xsl:text>6</xsl:text>
</xsl:when>
<xsl:when test="os/version < 8 or os/version = '7-unknown'">
<xsl:text>7</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>8</xsl:text>
<xsl:if test="contains(os/name, 'Stream')">
<xsl:text>-stream</xsl:text>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="arch">
<xsl:choose>
<xsl:when test="config/hardware-arch = 'x86_64'">
<xsl:text>x86_64</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>i386</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="installation-url">
<xsl:choose>
<xsl:when test="config/installation-url != ''">
<xsl:value-of select="config/installation-url"/>
</xsl:when>
<xsl:when test="tree/url != ''">
<xsl:value-of select="tree/url"/>
</xsl:when>
<xsl:when test="os/distro = 'centos'">
<xsl:text>http://mirror.centos.org/centos/</xsl:text>
<xsl:call-template name="version"/>
<xsl:choose>
<xsl:when test="os/version < 8">
<xsl:text>/os/</xsl:text>
<xsl:call-template name="arch"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>/BaseOS/</xsl:text>
<xsl:call-template name="arch"/>
<xsl:text>/os/</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="appstream-url">
<xsl:variable name="url">
<xsl:call-template name="installation-url"/>
</xsl:variable>
<xsl:value-of select="substring-before($url, 'BaseOS')"/>
<xsl:text>AppStream</xsl:text>
<xsl:value-of select="substring-after($url, 'BaseOS')"/>
</xsl:template>
<xsl:template match="/install-script-config">
# Install script for <xsl:value-of select="os/short-id"/> profile <xsl:value-of select="script/profile"/>
<xsl:if test="script/installation-source = 'media'"><xsl:if test="os/version < 8 or os/version = '6-unknown' or os/version = '7-unknown'">
install
</xsl:if>
cdrom
</xsl:if>
keyboard us
lang <xsl:value-of select="config/l10n-language"/>
network --onboot yes --bootproto dhcp --hostname=<xsl:call-template name="hostname"/>
rootpw dummyPa55w0rd # Actual password set (or unset) in %post below
firewall --disabled
<xsl:if test="os/version < 8 or os/version = '6-unknown' or os/version = '7-unknown'">
authconfig --enableshadow --enablemd5
</xsl:if>
timezone --utc <xsl:value-of select="config/l10n-timezone"/>
bootloader --location=mbr
zerombr
clearpart --all --drives=<xsl:call-template name="target-disk"/>
firstboot --disable
autopart
reboot
<xsl:if test="script/installation-source = 'network' or contains(media/variant, 'netinst')">
url --url=<xsl:call-template name="installation-url"/>
<xsl:if test="os/version > 7 or os/version = '8-unknown' or contains(os/name, 'Stream')">
repo --name=AppStream --baseurl=<xsl:call-template name="appstream-url"/>
</xsl:if>
</xsl:if>
%packages
@core
<xsl:choose><xsl:when test="os/version < 7 or os/version = '6-unknown'">
@basic-desktop
@general-desktop
@desktop-platform
</xsl:when><xsl:otherwise><xsl:if test="os/version < 8 or os/version = '7-unknown'">
@x11
</xsl:if>
@gnome-desktop
@multimedia
</xsl:otherwise></xsl:choose>
@internet-browser
@input-methods
qemu-guest-agent
%end
%post --erroronfail
useradd -G wheel <xsl:value-of select="config/user-login"/> # Add user
if test -z '<xsl:value-of select="config/user-password"/>'; then
passwd -d <xsl:value-of select="config/user-login"/> # Make user account passwordless
else
echo '<xsl:value-of select="config/user-password"/>' |passwd --stdin <xsl:value-of select="config/user-login"/>
fi
if test -z '<xsl:value-of select="config/admin-password"/>'; then
passwd -d root # Make root account passwordless
else
echo '<xsl:value-of select="config/admin-password"/>' |passwd --stdin root
fi
# Set user avatar
if test -n '<xsl:value-of select="config/avatar-location"/>'; then
mkdir /mnt/unattended-media
mount <xsl:call-template name="avatar-disk"/> /mnt/unattended-media
cp /mnt/unattended-media<xsl:value-of select="config/avatar-location"/> /home/<xsl:value-of select="config/user-login"/>/.face
umount /mnt/unattended-media
fi
# Enable autologin
echo "[daemon]
AutomaticLoginEnable=true
AutomaticLogin=<xsl:value-of select="config/user-login"/>
[security]
[xdmcp]
[greeter]
[chooser]
[debug]
" > /etc/gdm/custom.conf
# Create an osinfo-install-successful file in /root
touch /root/osinfo-install-successful
%end
</xsl:template>
</xsl:stylesheet>
</template>
</install-script>
</libosinfo>