Manjaro Difference between revisions of "Build Manjaro ISOs with buildiso"

Difference between revisions of "Build Manjaro ISOs with buildiso"

From Manjaro
imported>Excalibur1234
(removed dead links - revise later for current links)
 
(90 intermediate revisions by 8 users not shown)
Line 1: Line 1:
<languages/>
__TOC__
__TOC__


<translate>
=Prerequisites= <!--T:1-->


This is a detailed tutorial aimed at beginners how to build and optionally customize Manjaro ISOs.  
<!--T:2-->
This is a detailed walkthrough of installation and configuration of the tools and build process.


Manjaro Openbox edition is used as example throughout this tutorial, but there are many more pre-made Manjaro ISO profiles available: cinnamon, enlightenment, gnome, i3, kde, kde5, lxde, lxqt, lxqt-openrc, mate, net, net-minimal, netbook, net-openrc, openbox, openbox-legacy, pantheon, pekwm-openrc, xfce, xfce-minimal, and xfce-openbox-openrc.
<!--T:3-->
It is a requirement to either download and install the latest version of [https://manjaro.org/get-manjaro Manjaro] or be running a well maintained Manjaro system. '''It is vital your system is updated''' with the latest available kernel and packages.


==Install Manjaro Tools== <!--T:4-->


=Prerequisites=
<!--T:5-->
To get started you need to the following packages


''manjaro-tools-iso-profiles'' is needed for pre-built Manjaro ISO profiles.
<!--T:121-->
{{UserCmd|command=pamac install manjaro-tools-iso git}}


''buildiso'' is needed to build an image/ISO from these profiles. Before March 2015, it used to be part of the ''manjaroiso'' package, but now it is integrated into ''manjaro-tools-iso''.
<!--T:7-->
We will be working with the official XFCE to help you understand what you need to do.


Please make sure you always use the absolute latest ''manjaro-tools-iso'' and ''manjaro-tools-iso-profiles'' packages available in order to minimize the chance of random or unexplained bugs.
=ISO profile= <!--T:8-->
==Download the latest ISO profiles==


<!--T:9-->
The latest profiles can be found in the Manjaro gitlab.  You can download them directly using the command:
{{UserCmd|command=git clone <nowiki>https://gitlab.manjaro.org/profiles-and-settings/iso-profiles.git</nowiki> ~/iso-profiles}}


Furthermore, at least kernel version 3.18 or newer is needed on your host system and ISO for <code>aufs</code> support. <code>aufs</code> or the more modern <code>OverlayFS</code> is needed for building ISO images. <code>OverlayFS</code> support can be enabled in your <code>manjaro-tools.conf</code> file, but it requires at least kernel version 4.0 or newer on both your host system and ISO.
==ISO profile overview== <!--T:10-->
The ISO profile for xfce can now be found at  


<!--T:11-->
{{UserCmd|command=ls -l ~/iso-profiles/manjaro/xfce}}


==Install manjaro-tools-iso==
<!--T:12-->
Let's take a closer look at the XFCE profile folder (marked above):


''buildiso'' has often bugs introduced my new upstream package changes, therefore it is recommended to install the absolute latest version with the most recent bug fixes. A relatively easy way is to install ''manjaro-tools-iso'' from the unstable repositories of Manjaro:
<!--T:13-->
'''desktop-overlay'''
live-overlay -> ../../shared/manjaro/live-overlay
'''Packages-Desktop'''
Packages-Live -> ../../shared/Packages-Live
Packages-Mhwd -> ../../shared/Packages-Mhwd
Packages-Root -> ../../shared/Packages-Root
'''profile.conf'''


<!--T:14-->
* '''desktop-overlay''': After every successful installation of your ISO the files and folders in here will get copied over.
* ''live-overlay'': Similar to ''desktop-overlay''. Files and folders in here will only get copied over to the LiveCD of your ISO.
* '''Packages-Desktop''': This file contains packages for the ISO installation. All packages will also get installed on LiveCDs.
* ''Packages-Live'': This file contains packages, which will only get installed on the LiveCD.
* ''Packages-Mhwd'': This file contains Mhwd packages important to all Manjaro installations and LiveCDs.
* ''Packages-Root'': This file contains base packages important to all Manjaro installations and LiveCDs.
* '''profile.conf''' contains basic settings for your ISO installation and LiveCD.


If you are using the [https://wiki.manjaro.org/index.php?title=Access_the_Unstable_Repositories unstable repositories] already:
<!--T:15-->
As you have probably noticed, several are only symlinks to the <code>shared</code> ISO profile. It is good practice to never change files or folders in the <code>shared</code> ISO profile. If you ever want to change them, first copy them to your ISO profile folder and delete the symlink.


sudo pacman -S manjaro-tools-iso
<!--T:16-->
All folders and files specific to your ISO are '''in bold'''. You can change them to your liking.


==Modifying an ISO profile== <!--T:17-->


<!--T:18-->
The most common places to tweak and customize an ISO profile are the 3 folders marked above: ''desktop-overlay'', ''profile.conf'', ''Packages-Desktop'':


If you do '''not''' use the unstable repositories, you need to install ''manjaro-tools-base'' and ''manjaro-tools-iso'' from the unstable repositories manually:
===desktop-overlay=== <!--T:19-->


Please keep in mind that you need to update/re-install these packages every time a new version gets released.
<!--T:20-->
The ''desktop-overlay'' folder looks like this:


Go to this Manjaro mirror in your web browser:  
<!--T:21-->
http://mirror.netzspielplatz.de/manjaro/packages/unstable/extra/
{{UserCmdOutput|command=tree ~/iso-profiles/manjaro/xfce/desktop-overlay/etc|result=
Choose your architecture and search for the ''manjaro-tools-base'' and ''manjaro-tools-iso'' packages and remember their complete names (especially the version number).  
<pre>
../iso-profiles/manjaro/xfce/desktop-overlay/
├── etc
│   ├── fonts
│   │   └── conf.d
│   │      └── 70-no-bitmaps.conf
│   └── lightdm
│      ├── lightdm.conf
│      └── lightdm-gtk-greeter.conf
└── usr
    └── share
        └── icons
            └── default
                └── index.theme
</pre>
}}


Then, use your architecture and the name to install ''manjaro-tools-base'' and ''manjaro-tools-iso'' directly, e.g. with these commands:
<!--T:22-->
Go to this directory.


  sudo pacman -U http://mirror.netzspielplatz.de/manjaro/packages/unstable/extra/x86_64/manjaro-tools-base-0.9.8-3-any.pkg.tar.xz
  <!--T:23-->
{{UserCmd|command=cd ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/}}


sudo pacman -U http://mirror.netzspielplatz.de/manjaro/packages/unstable/extra/x86_64/manjaro-tools-iso-0.9.8-3-any.pkg.tar.xz
<!--T:24-->
Then create '''skel''' folder. This is where you can clone everything you see on your Desktop Screen to ISO.
{{UserCmd|command=mkdir skel}}


<!--T:25-->
After the ISO has been successfully installed all files and folder in ''desktop-overlay'' folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures.


<!--T:26-->
All files and folder in here will get copied to the home folder. Most hidden files and their structure in <code>~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/</code> should be already familiar to you, because your home folder looks very similar.


Alternatively, you can download and build the complete ''manjaro-tools'' from GitHub directly. In this case, you should build the absolute latest available [https://github.com/manjaro/manjaro-tools/tree/devel manjaro-tools] from the <code>devel</code> branch. This branch is in sync with the <code>devel</code> branch of [https://github.com/manjaro/manjaro-tools-iso-profiles/tree/devel manjaro-tools-iso-profiles].
===Clone Custom Wallpaper Desktop=== <!--T:27-->


<!--T:28-->
To clone your Custom Wallpaper Desktop. Open a New File Manager and go to this file.


==Install manjaro-tools-iso-profiles==
<!--T:29-->
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml


Clone ''manjaro-tools-iso-profiles'' profiles from GitHub (this requires the ''git'' package to be installed on your system). Open your terminal in your home directory (or any other directory you want) and type:
<!--T:30-->
Change all image directories to where your Custom Wallpaper was located at. For example:


  git clone https://github.com/manjaro/manjaro-tools-iso-profiles.git
  <!--T:31-->
/usr/share/backgrounds/<YOUR IMAGE HERE>


===Example=== <!--T:32-->
<div class="toccolours mw-collapsible mw-collapsed">
<span style="color:green">A sample `xfce4-desktop.xml` can be viewed by unfolding this block</span>
<div class="mw-collapsible-content">


==Update manjaro-tools-iso-profiles==
<!--T:33-->
 
<pre>
Whenever you want to update the ''manjaro-tools-iso-profiles'' directory with the latest files from GitHub, execute these commands:
<?xml version="1.0" encoding="UTF-8"?>
 
cd manjaro-tools-iso-profiles
<channel name="xfce4-desktop" version="1.0">
 
  <property name="backdrop" type="empty">
  git pull origin master
    <property name="screen0" type="empty">
 
      <property name="monitor0" type="empty">
        <property name="image-path" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
        <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
        <property name="last-single-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
        <property name="image-style" type="int" value="5"/>
      </property>
      <property name="monitorVGA-0" type="empty">
        <property name="workspace0" type="empty">
          <property name="color-style" type="int" value="0"/>
          <property name="image-style" type="int" value="5"/>
          <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
        </property>
        <property name="workspace1" type="empty">
          <property name="color-style" type="int" value="0"/>
          <property name="image-style" type="int" value="5"/>
          <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
        </property>
      </property>
    </property>
  </property>
  <property name="desktop-icons" type="empty">
    <property name="style" type="int" value="2"/>
    <property name="file-icons" type="empty">
      <property name="show-removable" type="bool" value="true"/>
    </property>
    <property name="icon-size" type="uint" value="32"/>
  </property>
  </channel>
</pre>
</div>
</div>


=ISO profile=
<!--T:34-->
Go to this directory:


  <!--T:35-->
{{UserCmd|command=cd ~/iso-profiles/manjaro/xfce/desktop-overlay/}}


==ISO profile overview==
<!--T:36-->
Then create <code>usr/share/backgrounds</code> and place your Custom Wallpaper at this directory.
{{UserCmd|command=mkdir ./usr/share/backgrounds}}


Your <code>manjaro-tools-iso-profiles</code> folder contains these ISO profiles:
<!--T:37-->
{{UserCmd|command=cp ~/Pictures/Wallpapers/your-wallpaper.png ~/iso-profiles/manjaro/xfce/desktop-overlay/usr/share/backgrounds}}


cinnamon/
===profile.conf=== <!--T:38-->
enlightenment/
<div class="toccolours mw-collapsible mw-collapsed">
gnome/
<span style="color:green">The full content of an example profile.conf can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.</span>
i3/
<div class="mw-collapsible-content">
kde/
<pre>
kde5/
##########################################
kde-minimal/
###### use this file in the profile ######
kde-openrc/
##########################################
lxde/
lxqt/
lxqt-openrc/
mate/
net/
netbook/
net-minimal/
net-openrc/
openbox/
pantheon/
shared/
sysmenu/
'''xfce'''/
xfce-minimal/
xfce-openrc/
README.md


The <code>shared</code> ISO profile is special, because it contains common files for all Manjaro ISO profiles (unless the profile creators explicitly used their own customized files)
<!--T:39-->
# use multilib packages; x86_64 only
# multilib="true"


<!--T:40-->
displaymanager="lightdm"


Let's take a closer look at the XFCE profile folder (marked above):
<!--T:41-->
# Set to false to disable autologin in the livecd
# autologin="true"


'''xfce-overlay'''
<!--T:42-->
isolinux -> ../shared/isolinux/
# nonfree mhwd drivers
mkinitcpio.conf -> ../shared/mkinitcpio.conf
# nonfree_mhwd="true"
overlay -> ../shared/overlay/
overlay-livecd -> ../shared/overlay-livecd/
Packages -> ../shared/Packages-Systemd
Packages-Livecd -> ../shared/Packages-Livecd-Systemd
'''Packages-Xfce'''
Packages-Xorg -> ../shared/Packages-Xorg
'''profile.conf'''


* ''xfce-overlay'': After every successful installation of your ISO (XFCE) the files and folders in here will get copied over.
<!--T:43-->
* ''isolinux'': Contains files important for booting your ISO. This includes isolinux.cfg file to start syslinux bootloader.
# use extra packages as defined in pkglist to activate a full profile
* ''mkinitcpio.conf'' holds the information of all needed kernel modules.
#extra="true"
* ''overlay'': Similar to ''xfce-overlay'', but it contains files and folders important to all Manjaro installations and LiveCDs.
* ''overlay-livecd'': Similar to ''xfce-overlay''. Files and folders in here will only get copied over to the LiveCD of your ISO.
* ''Packages'': This file contains base packages important to all Manjaro installations and LiveCDs.
* ''Packages-Livecd'': This file contains packages, which will only get installed on the LiveCD.
* ''Packages-Xfce'': This file contains packages specific to your ISO (XFCE) installation. All packages will also get installed on LiveCDs.
* ''Packages-Xorg'': This file contains Xorg packages important to all Manjaro installations and LiveCDs.
* ''profile.conf'' contains basic settings for your ISO installation and LiveCD.


As you have probably noticed, most files and folders are only symlinks to the <code>shared</code> ISO profile. It is good practice to never change files or folders in the <code>shared</code> ISO profile. If you ever want to change them, first copy them to your ISO profile folder and delete the symlink.
<!--T:44-->
################ install ################


All folders and files specific to your ISO (in this example XFCE) are marked. You can change them to your liking.
<!--T:45-->
# unset defaults to given value
# efi_boot_loader="grub"


<!--T:46-->
# configure calamares for netinstall
# netinstall="false"


==Modifying an ISO profile==
<!--T:47-->
# configure calamares to use chrootcfg instead of unpackfs
# chrootcfg="false"


The most common places to tweak and customize an ISO profile are the 3 folders marked above: ''xfce-overlay'', ''profile.conf'', ''Packages-Xfce'':
<!--T:48-->
# use geoip for localization
# geoip='true'


<!--T:49-->
# unset defaults to given values
# names must match systemd service names
enable_systemd=('avahi-daemon' 'bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep' 'ufw')
disable_systemd=('pacman-init')


===xfce-overlay===
<!--T:50-->
# unset defaults to given values,
# names must match openrc service names
# enable_openrc=('acpid' 'bluetooth' 'elogind' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
# disable_openrc=()


The ''xfce-overlay'' folder looks like this (hidden files are not shown):
<!--T:51-->
# the same workgroup name if samba is used
# smb_workgroup=""


├── etc
<!--T:52-->
│   ├── lightdm
################# livecd #################
│   │   └── lightdm-gtk-greeter.conf
│   ├── mdm
│   │   └── custom.conf
│   └── '''skel'''
└── usr
    └── share
        ├── backgrounds
        │   └── lightdm
        │      └── manjaro-lightdm-gtk-greeter.jpg
        ├── icons
        │   └── default
        │      └── index.theme
        └── xfce4
            └── backdrops
                └── default.jpg -> /usr/share/backgrounds/manjaro.jpg


After the XFCE ISO has been successfully installed all files and folder in ''xfce-overlay'' folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures.
<!--T:53-->
# unset defaults to given value
# hostname="manjaro"


There is one special folder (marked above):
<!--T:54-->
# unset defaults to given value
# username="manjaro"


manjaro-tools-iso-profiles/xfce/xfce-overlay/etc/skel
<!--T:55-->
# unset defaults to given value
# password="manjaro"


All files and folder in here will get copied to the home folder. Most hidden files and their structure in <code>manjaro-tools-iso-profiles/xfce/xfce-overlay/etc/skel/</code> should be already familiar to you, because your home folder looks very similar.
<!--T:56-->
# the login shell
# defaults to bash
# login_shell=/bin/bash


<!--T:57-->
# unset defaults to given values
# addgroups="lp,network,power,wheel"


===profile.conf===
<!--T:58-->
# unset defaults to given values
# names must match systemd service names
# services in enable_systemd array don't need to be listed here
# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')


##########################################
<!--T:59-->
###### use this file in the profile ######
# unset defaults to given values,
##########################################
# names must match openrc service names
# services in enable_openrc array don't need to be listed here
# possible values: openrc,systemd
# enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
initsys="systemd"
</pre>
</div>
# use multilib packages; x86_64 only
</div>
# multilib="true"
displaymanager="sddm"
# Set to false to disable autologin in the livecd
# autologin="true"
# nonfree xorg drivers
# nonfree_xorg="true"
# use plymouth; initcpio hook
# plymouth_boot="true"
# use pxe boot; initcpio hook
pxe_boot="false"
################ install ################
# unset defaults to given value
# kernel="linux318"
# unset defaults to given value
# efi_boot_loader="grub"
# set uefi partition size
# efi_part_size=31M
# unset defaults to given value
# plymouth_theme=manjaro-elegant
# unset defaults to given values
# names must match systemd service names
# start_systemd=('bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep')
 
...


<!--T:60-->
This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the <code>#</code> symbol in front) and change it.
This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the <code>#</code> symbol in front) and change it.


<!--T:61-->
The following settings are noteworthy:
The following settings are noteworthy:


* <code>initsys=</code> lets you choose between systemd and OpenRC. This setting is associated with the <code>>systemd</code> and <code>>openrc</code> flags in your package lists.
<!--T:62-->
* <code>multilib=</code> setting belongs to the <code>>multilib</code> flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems.
* <code>multilib=</code> setting belongs to the <code>>multilib</code> flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems.
* <code>displaymanager=</code> sets the display / login manager your system uses. You need to list your display manager in your package list, too.
* <code>displaymanager=</code> sets the display / login manager your system uses. You need to list your display manager in your package list, too.
* <code>nonfree_xorg=</code> refers to proprietary graphics drivers.
* <code>nonfree_xorg=</code> refers to proprietary graphics drivers.
* <code>plymouth_boot=</code> lets you activate Plymouth (the graphics displayed during boot). Do not forget the <code> playmouth</code>  package in your package list.
* <code>netinstall=</code>: do not use
* <code>pxe_boot=</code> activates PXE boot on your system.
* <code>chrootcfg=</code>: do not use
* <code>kernel=</code> lets you set the installed kernel. Do '''not''' include any kernels in your package list! This setting is all you need.
* <code>kernel=</code> lets you set the installed kernel. Do '''not''' include any kernels in your package list! This setting is all you need.
* <code>start_systemd=</code> let's you set systemd services, which get started on the installed system and on the livecd. A similar setting is available for OpenRC.
* <code>enable_systemd=</code> let's you set systemd services, which get started on the installed system (and with a similar setting on the livecd).
* <code>enable_openrc=</code>: do not use
 
===Packages-Desktop=== <!--T:63-->
<div class="toccolours mw-collapsible mw-collapsed">
<span style="color:green">An example `Packages-Desktop` file can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.</span>
<div class="mw-collapsible-content">
<pre>
## Network
avahi
networkmanager
networkmanager-openconnect
networkmanager-openvpn
networkmanager-pptp
networkmanager-vpnc
nss-mdns # NSS support for mDNS (optdepend for avahi)
ntp
mobile-broadband-provider-info
modemmanager
openresolv
openssh
samba
usb_modeswitch
 
<!--T:64-->
## Libraries for Sound/Audio/Video
alsa-firmware
alsa-utils
ffmpeg
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
libdvdcss
>multilib manjaro-alsa
manjaro-pulse
pulseaudio-bluetooth
pulseaudio-ctl
pulseaudio-zeroconf


<!--T:65-->
## Connect Packages
android-tools
android-udev
gvfs
gvfs-afc
gvfs-gphoto2
gvfs-mtp
gvfs-nfs
gvfs-smb
mtpfs
udiskie
udisks2


===Packages-Xfce===
<!--T:66-->
## AUR Support/Development
# Missing base-devel packages
autoconf
automake
binutils
bison
fakeroot
flex
gcc
>multilib gcc-libs-multilib
>multilib gcc-multilib
libtool
m4
make
patch
pkg-config
>multilib lib32-flex
# Extra packages for AUR support
>extra git
>extra patchutils
>extra subversion


### Manjaro Packages
<!--T:67-->
## Fonts
## XFCE Main Packages
cantarell-fonts
ffmpegthumbnailer
# noto-fonts            # default font
gconf                    # fix qt-theme
# noto-fonts-cjk        # big package, ~76 mb compressed
gnome-keyring            # fix wlan segfault
# >extra noto-fonts-emoji
gufw                    # firewall
terminus-font
# mdm-themes
ttf-bitstream-vera      # xfce4-terminal default Monospace
accountsservice
# ttf-dejavu            # Installed as gnome-themes-standard dependency
lightdm-gtk-greeter
>extra ttf-inconsolata
lightdm-gtk-greeter-settings
>extra ttf-indic-otf
light-locker
>extra ttf-liberation
manjaro-settings-manager
>extra ttf-droid
>i686 gcc
 
>x86_64 gcc-multilib
<!--T:68-->
## Games
...
>extra steam-manjaro
 
<!--T:69-->
## Package management
pamac
flatpak


This file contains a list of packages, which will get installed on your installed ISO (XFCE) and the LiveCD. This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic.
<!--T:70-->
## Java
>extra jdk8-openjdk
>extra jre8-openjdk-headless
>extra jre8-openjdk


You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories.
<!--T:71-->
## Printing
>extra cups
>extra cups-pdf
>extra cups-pk-helper
>extra ghostscript
>extra gsfonts
>extra gtk3-print-backends
>extra hplip
>extra splix
>extra system-config-printer


<code>#</code> marks a comment. The rest of the line after the <code>#</code> symbol gets ignored.
<!--T:72-->
## Optional dependencies for hplip
>extra pyqt5-common # For hplip
>extra python-pillow # For hplip
>extra python-pip # For hplip
>extra python-pyqt5  # For hplip gui
>extra python-reportlab # For hplip


<code>>i686</code> is a flag and marks a package, which will only get installed on the 32bit version of your ISO (XFCE).
<!--T:73-->
## Display manager
lightdm
lightdm-gtk-greeter
lightdm-gtk-greeter-settings
accountsservice  # Enhanced user accounts handling


<code>>x86_64</code> marks a package, which will only get installed on the 64bit version of your ISO (XFCE).
<!--T:74-->
## GTK3
gtk3-classic
>multilib lib32-gtk3-classic


<!--T:75-->
## XFCE Group
exo-gtk3
garcon-gtk3
thunar-gtk3
thunar-volman
tumbler
xfce4-appfinder-gtk3
xfce4-panel-gtk3
xfce4-power-manager-gtk3
xfce4-session-gtk3
xfce4-settings-gtk3
xfce4-terminal
xfconf-gtk3
xfdesktop-gtk3
xfwm4-gtk3


===Adding AUR packages===
<!--T:76-->
## XFCE Extras
blueman
ffmpegthumbnailer  # tumbler - for video thumbnails
freetype2          # tumbler - for font thumbnails
gksu
gnome-keyring      # fix wlan segfault
libgsf            # tumbler - for ODF thumbnails
libopenraw        # tumbler - for RAW thumbnails
light-locker
network-manager-applet
menulibre
orage
poppler-glib      # tumbler - for PDF thumbnails
thunar-archive-plugin
file-roller
thunar-media-tags-plugin
# >extra xfce4-artwork
xfce4-battery-plugin
xfce4-clipman-plugin
>extra xfce4-cpufreq-plugin
>extra xfce4-cpugraph-plugin
# xfce4-datetime-plugin
>extra xfce4-dict
>extra xfce4-diskperf-plugin
>extra xfce4-fsguard-plugin
>extra xfce4-genmon-plugin
>extra xfce4-mailwatch-plugin
>extra xfce4-mount-plugin
>extra xfce4-mpc-plugin
>extra xfce4-netload-plugin
>extra xfce4-notes-plugin
xfce4-notifyd-gtk3
xfce4-screenshooter
>extra xfce4-sensors-plugin
>extra xfce4-smartbookmark-plugin
>extra xfce4-systemload-plugin
xfce4-taskmanager
>extra xfce4-time-out-plugin
>extra xfce4-timer-plugin
>extra xfce4-verve-plugin
>extra xfce4-wavelan-plugin
>extra xfce4-weather-plugin
xfce4-whiskermenu-plugin-gtk3
xfce4-xkb-plugin
xfce4-pulseaudio-plugin
pavucontrol


If you want to add AUR packages to your ISO, you need to create a local repository and add it to the right <code>pacman-XXXXX.conf</code> file in your ISO profile.
<!--T:77-->
## Themes
>extra manjaro-wallpapers-18.0
>extra wallpapers-2018
gnome-icon-theme
gnome-themes-standard
grub-theme-manjaro
matcha-gtk-theme
xcursor-simpleandsoft
xcursor-vanilla-dmz-aa


<!--T:78-->
## Applications
>extra catfish
dmidecode # optional dependency inxi
engrampa
>extra firefox
# >extra flashplugin
>extra galculator-gtk2
gcolor2
>extra gimp
gparted
gufw
>extra audacious
>extra hexchat
htop
qpdfview
inxi
>extra libreoffice-still
ms-office-online
manjaro-hello
manjaro-application-utility
manjaro-settings-manager
manjaro-settings-manager-notifier
>basic midori
>extra mlocate
mousepad
mugshot
>basic parole # media player
>extra pidgin
powertop
screenfetch
>extra poppler-data  # CKJ support for pdf
>basic sylpheed # mail client
>extra thunderbird
>extra vlc
>extra viewnior
>extra xfburn
>extra yelp


There are two different ways to achieve this. The second way is recommended:
<!--T:79-->
# Optional dependencies engrampa
p7zip  # 7Z and ARJ archive support
unace  # ACE archive support
unrar  # RAR archive support


* [[Buildiso with AUR packages: Using yaourt]]: This way is easier and faster, but has some disadvantages: First, all packages get installed on your real/host system, too. Second, you can only build packages for your system architecture. This means you cannot build 32bit packages on a 64bit system.
<!--T:80-->
* [[Buildiso with AUR packages: Using buildpkg]]: This way is a little harder and needs more build time. You can easily build and include 32bit packages, even if your host system is 64bit. All packages get installed in a separate build environment and do not affect your real / host system.
## Documentation
manjaro-documentation-en


<!--T:81-->
## Settings packages
>extra manjaro-xfce-gtk3-settings
>basic manjaro-xfce-gtk3-minimal-settings
manjaro-browser-settings


=manjaro-tools.conf=
<!--T:82-->
## Xorg Input Drivers
xf86-input-elographics
xf86-input-evdev
xf86-input-keyboard
xf86-input-libinput
xf86-input-mouse
xf86-input-void


<code>manjaro-tools.conf</code> is the central configuration file for all tools part of ''manjaro-tools''. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do '''not''' edit it. You can always use arguments with the <code>buildiso</code> command later.
<!--T:83-->
## Xorg Server and Graphics
>multilib lib32-libva-intel-driver
>multilib lib32-libva-mesa-driver
>multilib lib32-libva-vdpau-driver
libva-intel-driver
libva-mesa-driver
libva-vdpau-driver
mesa-demos
>multilib lib32-mesa-demos
numlockx
xdg-user-dirs
xorg-server
xorg-twm
xorg-xinit
xorg-xkill


By default, the systemwide config file is installed in
<!--T:84-->
## Desktop Utils
perl-file-mimeinfo
xdg-utils
xdg-su


/etc/manjaro-tools/manjaro-tools.conf
<!--T:85-->
## Misc
manjaro-hotfixes


Additionally, a userconfig <code>manjaro-tools.conf</code> file can be placed in your home directory here:
<!--T:86-->
</pre>
</div>
</div>
This file contains a list of packages, which will get installed on your installed ISO (XFCE) '''and''' the LiveCD (the packages in Packages-Live file only get installled on the live ISO). This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic.


~/.config/manjaro-tools/manjaro-tools.conf
<!--T:87-->
You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories.


If the userconfig is present, ''manjaro-tools''/''buildiso'' will load the userconfig values, however, if variables have been set in the systemwide config file, these values take precedence over the userconfig. Best practice is to leave the systemwide file untouched. By default it is commented and shows just initialization values done in code.
<!--T:88-->
<code>#</code> marks a comment. The rest of the line after the <code>#</code> symbol gets ignored.


===Adding AUR packages=== <!--T:89-->


=Build your ISO=
<!--T:90-->
If you want to add AUR packages to your ISO, you need to create a online repository and add it to a file '''user-repos.conf''' beside your '''profile.conf'''.


Navigate to the <code>manjaro-tools-iso-profiles</code> folder:
<!--T:91-->
'''Only use your own http enabled repo.'''


  cd manjaro-tools-iso-profiles
  <!--T:92-->
[your-repo-name]
SigLevel = Optional TrustAll
Server = http://repo.server.tld/your-repo-name


<!--T:93-->
The article [[Buildiso with AUR packages: Using buildpkg]] contains more detailed information on this process.


Build your ISO with the following command:


sudo buildiso -p openbox
=manjaro-tools.conf= <!--T:94-->


You need to specify the name of your ISO profile after the <code>-p</code> argument. In this case, it is <code>openbox</code>.
<!--T:95-->
<code>manjaro-tools.conf</code> is the central configuration file for all tools part of ''manjaro-tools''. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do '''not''' edit it. You can always use arguments with the <code>buildiso</code> command later.  


If the build process fails with an error, start it again.
<!--T:96-->
By default, the systemwide config file is installed in


Attention: The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs.
<!--T:97-->
/etc/manjaro-tools/manjaro-tools.conf


<!--T:98-->
Best practice is to leave the systemwide file untouched and copy the system wide config to your home directory here:


When the build process finishes successfully, the ISO file and the package list will appear in this folder:  
<!--T:99-->
~/.config/manjaro-tools


/var/cache/manjaro-tools/iso/
<!--T:100-->
If the userconfig is present, ''manjaro-tools''/''buildiso'' will load the userconfig values. Best practice is to leave the systemwide file untouched. By default it is commented and shows just initialization values done in code.


=Build your ISO= <!--T:101-->
Build your ISO with the following command:
{{UserCmd|command=buildiso -p xfce}}
You need to specify the name of your ISO profile after the <code>-p</code> argument. In this case, it is <code>xfce</code>.


===Example:===
<!--T:102-->
You can use arguments with the <code>buildiso</code> command for more build options:
If the build process fails with an error, start it again.


sudo buildiso -p xfce-minimal -a i686 -b unstable
<!--T:103-->
'''Attention:''' The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs.


* <code>-a</code> let's you build for other architectures. Here, it builds a 32bit ISO image on a 64bit host system. You can also set this in your <code>manjaro-tools.conf</code> file.
When the build process finishes successfully, the ISO file and the package list will appear in this folder:
/var/cache/manjaro-tools/iso/
===Example:=== <!--T:104-->
You can use arguments with the <code>buildiso</code> command for more build options:
{{UserCmd|command=buildiso -f -p xfce -b stable}}
* <code>-f</code> let's you specify if you want the full ISO. If omitted a minimal ISO will be build.
* <code>-b</code> let's you specify the branch. You can also set this in your <code>manjaro-tools.conf</code> file.
* <code>-b</code> let's you specify the branch. You can also set this in your <code>manjaro-tools.conf</code> file.
You can find other examples of builds using different arguments for ''buildiso'' [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildiso here].
You can find other examples of builds using different arguments for ''buildiso'' [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildiso here].


=Cleaning your hard drive= <!--T:105-->


=Cleaning your hard drive=
<!--T:106-->
 
After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder:
After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder:


  sudo rm -r /var/lib/manjaro-tools/buildiso/openbox/
  <!--T:107-->
 
{{UserCmd|command=sudo rm -r /var/lib/manjaro-tools/buildiso/}}


<!--T:108-->
To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO):  
To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO):  


  paccache -ruk0
  <!--T:109-->
 
{{UserCmd|command=sudo paccache -ruk0}}


<!--T:110-->
You can also manually look into  
You can also manually look into  


  /var/cache/manjaro-tools/
  <!--T:111-->
/var/cache/manjaro-tools/


<!--T:112-->
and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do:
and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do:


  sudo rm -r /var/cache/manjaro-tools/
  <!--T:113-->
 
{{UserCmd|command=sudo rm -r /var/cache/manjaro-tools/}}


<!--T:114-->
Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download '''all''' packages and build '''all''' images again the next time you want to build your own Manjaro ISO.
Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download '''all''' packages and build '''all''' images again the next time you want to build your own Manjaro ISO.


<!--T:115-->
By default, your <code>manjaro-tools.conf</code> file is saved. If you want to delete it, use


=Further Reading=
<!--T:116-->
 
{{UserCmd|command=rm -r ~/.config/manjaro-tools}}
There are dedicated forum subsections about Manjaro-Tools and ''buildiso'':
 
* [https://forum.manjaro.org/index.php?board=52.0 Support for Manjaro-Tools]
* [https://forum.manjaro.org/index.php?board=27.0 Support for ManjaroISO] (please keep in mind the differences between ''manjaroiso'' and ''manjaro-tools'' when reading this old forum section)
 
 
Here are some more tutorials of ''manjaro-tools'' and ''buildiso'':
 
* [https://github.com/manjaro/manjaro-tools manjaro-tools on GitHub]
* [[Manjaro-tools]]
* [https://forum.manjaro.org/index.php?topic=20167.0 How to use Manjaro-Tools](outdated)
* [https://forum.manjaro.org/index.php?topic=21976.0 buildiso tutorial]
* [[Buildiso with AUR packages: Using yaourt]]
* [[Buildiso with AUR packages: Using buildpkg]]




It is also possible to ask questions on IRC:
=Tips & Tricks= <!--T:117-->
* Server: <code>irc.freenode.net</code>
* Channel: <code>#manjaro</code>


==Building a minimal ISO== <!--T:118-->
A minimal ISO is easy to create by modifying an entry in the profile.conf file. Find the section
<pre>
# use extra packages as defined in pkglist to activate a full profile
# extra="false"
extra="true"
</pre>
and remove the '''#''' mark in front of '''extra = "false"''' and add a '''#''' in front of '''extra = "true"'''.


<!--T:119-->
If you prefer not to change this you can always use the '''-f''' with buildiso to build a full profile.


[[Category:Contents Page]]
=See also= <!--T:120-->
* Source: [https://gitlab.manjaro.org/profiles-and-settings/iso-profiles Manjaro Gitlab ISO Profiles] (master branch may be unstable - select the branch for latest release)
* Video: [https://youtu.be/B--je--m0VI Building Manjaro ISO by Philip Müller](Tutorial Video)
* Wiki: [[Buildiso with AUR packages: Using buildpkg]]
</translate>
[[Category:Contents Page{{#translation:}}]]
[[Category:Development{{#translation:}}]]
[[Category:ISO{{#translation:}}]]

Latest revision as of 12:02, 29 June 2024

Other languages:
English • ‎русский • ‎فارسی

Prerequisites

This is a detailed walkthrough of installation and configuration of the tools and build process.

It is a requirement to either download and install the latest version of Manjaro or be running a well maintained Manjaro system. It is vital your system is updated with the latest available kernel and packages.

Install Manjaro Tools

To get started you need to the following packages

user $ pamac install manjaro-tools-iso git COPY TO CLIPBOARD


We will be working with the official XFCE to help you understand what you need to do.

ISO profile

Download the latest ISO profiles

The latest profiles can be found in the Manjaro gitlab. You can download them directly using the command:

user $ git clone https://gitlab.manjaro.org/profiles-and-settings/iso-profiles.git ~/iso-profiles COPY TO CLIPBOARD


ISO profile overview

The ISO profile for xfce can now be found at

user $ ls -l ~/iso-profiles/manjaro/xfce COPY TO CLIPBOARD


Let's take a closer look at the XFCE profile folder (marked above):

desktop-overlay
live-overlay -> ../../shared/manjaro/live-overlay
Packages-Desktop
Packages-Live -> ../../shared/Packages-Live
Packages-Mhwd -> ../../shared/Packages-Mhwd
Packages-Root -> ../../shared/Packages-Root
profile.conf
  • desktop-overlay: After every successful installation of your ISO the files and folders in here will get copied over.
  • live-overlay: Similar to desktop-overlay. Files and folders in here will only get copied over to the LiveCD of your ISO.
  • Packages-Desktop: This file contains packages for the ISO installation. All packages will also get installed on LiveCDs.
  • Packages-Live: This file contains packages, which will only get installed on the LiveCD.
  • Packages-Mhwd: This file contains Mhwd packages important to all Manjaro installations and LiveCDs.
  • Packages-Root: This file contains base packages important to all Manjaro installations and LiveCDs.
  • profile.conf contains basic settings for your ISO installation and LiveCD.

As you have probably noticed, several are only symlinks to the shared ISO profile. It is good practice to never change files or folders in the shared ISO profile. If you ever want to change them, first copy them to your ISO profile folder and delete the symlink.

All folders and files specific to your ISO are in bold. You can change them to your liking.

Modifying an ISO profile

The most common places to tweak and customize an ISO profile are the 3 folders marked above: desktop-overlay, profile.conf, Packages-Desktop:

desktop-overlay

The desktop-overlay folder looks like this:


$ tree ~/iso-profiles/manjaro/xfce/desktop-overlay/etc

../iso-profiles/manjaro/xfce/desktop-overlay/
├── etc
│   ├── fonts
│   │   └── conf.d
│   │       └── 70-no-bitmaps.conf
│   └── lightdm
│       ├── lightdm.conf
│       └── lightdm-gtk-greeter.conf
└── usr
    └── share
        └── icons
            └── default
                └── index.theme


Go to this directory.

user $ cd ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/ COPY TO CLIPBOARD


Then create skel folder. This is where you can clone everything you see on your Desktop Screen to ISO.

user $ mkdir skel COPY TO CLIPBOARD


After the ISO has been successfully installed all files and folder in desktop-overlay folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures.

All files and folder in here will get copied to the home folder. Most hidden files and their structure in ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/ should be already familiar to you, because your home folder looks very similar.

Clone Custom Wallpaper Desktop

To clone your Custom Wallpaper Desktop. Open a New File Manager and go to this file.

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml

Change all image directories to where your Custom Wallpaper was located at. For example:

 /usr/share/backgrounds/<YOUR IMAGE HERE>

Example

A sample `xfce4-desktop.xml` can be viewed by unfolding this block

 <?xml version="1.0" encoding="UTF-8"?>
 
 <channel name="xfce4-desktop" version="1.0">
   <property name="backdrop" type="empty">
     <property name="screen0" type="empty">
       <property name="monitor0" type="empty">
         <property name="image-path" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
         <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
         <property name="last-single-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
         <property name="image-style" type="int" value="5"/>
       </property>
       <property name="monitorVGA-0" type="empty">
         <property name="workspace0" type="empty">
           <property name="color-style" type="int" value="0"/>
           <property name="image-style" type="int" value="5"/>
           <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
         </property>
         <property name="workspace1" type="empty">
           <property name="color-style" type="int" value="0"/>
           <property name="image-style" type="int" value="5"/>
           <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/>
         </property>
       </property>
     </property>
   </property>
   <property name="desktop-icons" type="empty">
     <property name="style" type="int" value="2"/>
     <property name="file-icons" type="empty">
       <property name="show-removable" type="bool" value="true"/>
     </property>
     <property name="icon-size" type="uint" value="32"/>
   </property>
 </channel>

Go to this directory:

user $ cd ~/iso-profiles/manjaro/xfce/desktop-overlay/ COPY TO CLIPBOARD


Then create usr/share/backgrounds and place your Custom Wallpaper at this directory.

user $ mkdir ./usr/share/backgrounds COPY TO CLIPBOARD


user $ cp ~/Pictures/Wallpapers/your-wallpaper.png ~/iso-profiles/manjaro/xfce/desktop-overlay/usr/share/backgrounds COPY TO CLIPBOARD


profile.conf

The full content of an example profile.conf can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.

##########################################
###### use this file in the profile ######
##########################################

# use multilib packages; x86_64 only
# multilib="true"

displaymanager="lightdm"

# Set to false to disable autologin in the livecd
# autologin="true"

# nonfree mhwd drivers
# nonfree_mhwd="true"

# use extra packages as defined in pkglist to activate a full profile
#extra="true"

################ install ################

# unset defaults to given value
# efi_boot_loader="grub"

# configure calamares for netinstall
# netinstall="false"

# configure calamares to use chrootcfg instead of unpackfs
# chrootcfg="false"

# use geoip for localization
# geoip='true'

# unset defaults to given values
# names must match systemd service names
enable_systemd=('avahi-daemon' 'bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep' 'ufw')
disable_systemd=('pacman-init')

# unset defaults to given values,
# names must match openrc service names
# enable_openrc=('acpid' 'bluetooth' 'elogind' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
# disable_openrc=()

# the same workgroup name if samba is used
# smb_workgroup=""

################# livecd #################

# unset defaults to given value
# hostname="manjaro"

# unset defaults to given value
# username="manjaro"

# unset defaults to given value
# password="manjaro"

# the login shell
# defaults to bash
# login_shell=/bin/bash

# unset defaults to given values
# addgroups="lp,network,power,wheel"

# unset defaults to given values
# names must match systemd service names
# services in enable_systemd array don't need to be listed here
# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')

# unset defaults to given values,
# names must match openrc service names
# services in enable_openrc array don't need to be listed here
# enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')

This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the # symbol in front) and change it.

The following settings are noteworthy:

  • multilib= setting belongs to the >multilib flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems.
  • displaymanager= sets the display / login manager your system uses. You need to list your display manager in your package list, too.
  • nonfree_xorg= refers to proprietary graphics drivers.
  • netinstall=: do not use
  • chrootcfg=: do not use
  • kernel= lets you set the installed kernel. Do not include any kernels in your package list! This setting is all you need.
  • enable_systemd= let's you set systemd services, which get started on the installed system (and with a similar setting on the livecd).
  • enable_openrc=: do not use

Packages-Desktop

An example `Packages-Desktop` file can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.

## Network
avahi
networkmanager
networkmanager-openconnect
networkmanager-openvpn
networkmanager-pptp
networkmanager-vpnc
nss-mdns # NSS support for mDNS (optdepend for avahi)
ntp
mobile-broadband-provider-info
modemmanager
openresolv
openssh
samba
usb_modeswitch

## Libraries for Sound/Audio/Video
alsa-firmware
alsa-utils
ffmpeg
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
libdvdcss
>multilib manjaro-alsa
manjaro-pulse
pulseaudio-bluetooth
pulseaudio-ctl
pulseaudio-zeroconf

## Connect Packages
android-tools
android-udev
gvfs
gvfs-afc
gvfs-gphoto2
gvfs-mtp
gvfs-nfs
gvfs-smb
mtpfs
udiskie
udisks2

## AUR Support/Development
# Missing base-devel packages
autoconf
automake
binutils
bison
fakeroot
flex
gcc
>multilib gcc-libs-multilib
>multilib gcc-multilib
libtool
m4
make
patch
pkg-config
>multilib lib32-flex
# Extra packages for AUR support
>extra git
>extra patchutils
>extra subversion

## Fonts
cantarell-fonts
# noto-fonts             # default font
# noto-fonts-cjk         # big package, ~76 mb compressed
# >extra noto-fonts-emoji
terminus-font
ttf-bitstream-vera       # xfce4-terminal default Monospace
# ttf-dejavu             # Installed as gnome-themes-standard dependency
>extra ttf-inconsolata
>extra ttf-indic-otf
>extra ttf-liberation
>extra ttf-droid

## Games
>extra steam-manjaro

## Package management
pamac
flatpak

## Java
>extra jdk8-openjdk
>extra jre8-openjdk-headless
>extra jre8-openjdk

## Printing
>extra cups
>extra cups-pdf
>extra cups-pk-helper
>extra ghostscript
>extra gsfonts
>extra gtk3-print-backends
>extra hplip
>extra splix
>extra system-config-printer

## Optional dependencies for hplip
>extra pyqt5-common # For hplip
>extra python-pillow # For hplip
>extra python-pip # For hplip
>extra python-pyqt5  # For hplip gui
>extra python-reportlab # For hplip

## Display manager
lightdm
lightdm-gtk-greeter
lightdm-gtk-greeter-settings
accountsservice  # Enhanced user accounts handling

## GTK3
gtk3-classic
>multilib lib32-gtk3-classic

## XFCE Group
exo-gtk3
garcon-gtk3
thunar-gtk3
thunar-volman
tumbler
xfce4-appfinder-gtk3
xfce4-panel-gtk3
xfce4-power-manager-gtk3
xfce4-session-gtk3
xfce4-settings-gtk3
xfce4-terminal
xfconf-gtk3
xfdesktop-gtk3
xfwm4-gtk3

## XFCE Extras
blueman
ffmpegthumbnailer  # tumbler - for video thumbnails
freetype2          # tumbler - for font thumbnails
gksu
gnome-keyring      # fix wlan segfault
libgsf             # tumbler - for ODF thumbnails
libopenraw         # tumbler - for RAW thumbnails
light-locker
network-manager-applet
menulibre
orage
poppler-glib       # tumbler - for PDF thumbnails
thunar-archive-plugin
file-roller
thunar-media-tags-plugin
# >extra xfce4-artwork
xfce4-battery-plugin
xfce4-clipman-plugin
>extra xfce4-cpufreq-plugin
>extra xfce4-cpugraph-plugin
# xfce4-datetime-plugin
>extra xfce4-dict
>extra xfce4-diskperf-plugin
>extra xfce4-fsguard-plugin
>extra xfce4-genmon-plugin
>extra xfce4-mailwatch-plugin
>extra xfce4-mount-plugin
>extra xfce4-mpc-plugin
>extra xfce4-netload-plugin
>extra xfce4-notes-plugin
xfce4-notifyd-gtk3
xfce4-screenshooter
>extra xfce4-sensors-plugin
>extra xfce4-smartbookmark-plugin
>extra xfce4-systemload-plugin
xfce4-taskmanager
>extra xfce4-time-out-plugin
>extra xfce4-timer-plugin
>extra xfce4-verve-plugin
>extra xfce4-wavelan-plugin
>extra xfce4-weather-plugin
xfce4-whiskermenu-plugin-gtk3
xfce4-xkb-plugin
xfce4-pulseaudio-plugin
pavucontrol

## Themes
>extra manjaro-wallpapers-18.0
>extra wallpapers-2018
gnome-icon-theme
gnome-themes-standard
grub-theme-manjaro
matcha-gtk-theme
xcursor-simpleandsoft
xcursor-vanilla-dmz-aa

## Applications
>extra catfish
dmidecode # optional dependency inxi
engrampa
>extra firefox
# >extra flashplugin
>extra galculator-gtk2
gcolor2
>extra gimp
gparted
gufw
>extra audacious
>extra hexchat
htop
qpdfview
inxi
>extra libreoffice-still
ms-office-online
manjaro-hello
manjaro-application-utility
manjaro-settings-manager
manjaro-settings-manager-notifier
>basic midori
>extra mlocate
mousepad
mugshot
>basic parole # media player
>extra pidgin
powertop
screenfetch
>extra poppler-data  # CKJ support for pdf
>basic sylpheed # mail client
>extra thunderbird
>extra vlc
>extra viewnior
>extra xfburn
>extra yelp

# Optional dependencies engrampa
p7zip  # 7Z and ARJ archive support
unace  # ACE archive support
unrar  # RAR archive support

## Documentation
manjaro-documentation-en

## Settings packages
>extra manjaro-xfce-gtk3-settings
>basic manjaro-xfce-gtk3-minimal-settings
manjaro-browser-settings

## Xorg Input Drivers
xf86-input-elographics
xf86-input-evdev
xf86-input-keyboard
xf86-input-libinput
xf86-input-mouse
xf86-input-void

## Xorg Server and Graphics
>multilib lib32-libva-intel-driver
>multilib lib32-libva-mesa-driver
>multilib lib32-libva-vdpau-driver
libva-intel-driver
libva-mesa-driver
libva-vdpau-driver
mesa-demos
>multilib lib32-mesa-demos
numlockx
xdg-user-dirs
xorg-server
xorg-twm
xorg-xinit
xorg-xkill

## Desktop Utils
perl-file-mimeinfo
xdg-utils
xdg-su

## Misc
manjaro-hotfixes

This file contains a list of packages, which will get installed on your installed ISO (XFCE) and the LiveCD (the packages in Packages-Live file only get installled on the live ISO). This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic.

You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories.

# marks a comment. The rest of the line after the # symbol gets ignored.

Adding AUR packages

If you want to add AUR packages to your ISO, you need to create a online repository and add it to a file user-repos.conf beside your profile.conf.

Only use your own http enabled repo.

[your-repo-name]
SigLevel = Optional TrustAll
Server = http://repo.server.tld/your-repo-name

The article Buildiso with AUR packages: Using buildpkg contains more detailed information on this process.


manjaro-tools.conf

manjaro-tools.conf is the central configuration file for all tools part of manjaro-tools. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do not edit it. You can always use arguments with the buildiso command later.

By default, the systemwide config file is installed in

/etc/manjaro-tools/manjaro-tools.conf

Best practice is to leave the systemwide file untouched and copy the system wide config to your home directory here:

~/.config/manjaro-tools

If the userconfig is present, manjaro-tools/buildiso will load the userconfig values. Best practice is to leave the systemwide file untouched. By default it is commented and shows just initialization values done in code.

Build your ISO

Build your ISO with the following command:

user $ buildiso -p xfce COPY TO CLIPBOARD


You need to specify the name of your ISO profile after the -p argument. In this case, it is xfce.

If the build process fails with an error, start it again.

Attention: The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs.

When the build process finishes successfully, the ISO file and the package list will appear in this folder:

/var/cache/manjaro-tools/iso/

Example:

You can use arguments with the buildiso command for more build options:

user $ buildiso -f -p xfce -b stable COPY TO CLIPBOARD


  • -f let's you specify if you want the full ISO. If omitted a minimal ISO will be build.
  • -b let's you specify the branch. You can also set this in your manjaro-tools.conf file.

You can find other examples of builds using different arguments for buildiso here.

Cleaning your hard drive

After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder:

user $ sudo rm -r /var/lib/manjaro-tools/buildiso/ COPY TO CLIPBOARD


To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO):

user $ sudo paccache -ruk0 COPY TO CLIPBOARD


You can also manually look into

/var/cache/manjaro-tools/

and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do:

user $ sudo rm -r /var/cache/manjaro-tools/ COPY TO CLIPBOARD


Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download all packages and build all images again the next time you want to build your own Manjaro ISO.

By default, your manjaro-tools.conf file is saved. If you want to delete it, use

user $ rm -r ~/.config/manjaro-tools COPY TO CLIPBOARD



Tips & Tricks

Building a minimal ISO

A minimal ISO is easy to create by modifying an entry in the profile.conf file. Find the section

 # use extra packages as defined in pkglist to activate a full profile
 # extra="false"
 extra="true"

and remove the # mark in front of extra = "false" and add a # in front of extra = "true".

If you prefer not to change this you can always use the -f with buildiso to build a full profile.

See also

Cookies help us deliver our services. By using our services, you agree to our use of cookies.