Skip to content

Instantly share code, notes, and snippets.

@kavan-mevada
Last active April 10, 2020 12:50
Show Gist options
  • Save kavan-mevada/be9c129bfd9b19a84927037964f9a8d0 to your computer and use it in GitHub Desktop.
Save kavan-mevada/be9c129bfd9b19a84927037964f9a8d0 to your computer and use it in GitHub Desktop.
#-----------------------------------------
# Installing Required Tools
#-----------------------------------------
sudo apt-get install live-build
#----------------------------------------
# Configurating Live Build (lb_config)
#----------------------------------------
lb config \
--apt-recommends false \
--distribution buster \
--debian-installer live \
--architecture amd64 \
--memtest none \
--source true \
--archive-areas "main contrib non-free" \
--bootappend-live "boot=live components quiet splash config hostname=debian username=live locales=en_US.UTF-8" \
--binary-images iso-hybrid
mkdir -p config/includes.chroot/usr/share/{backgrounds,gnome-background-properties,glib-2.0/schemas}
cat >> config/archives/desktop.list.chroot << EOF
deb http://ftp.debian.org/debian experimental main contrib non-free
deb http://ftp.debian.org/debian sid main contrib non-free
EOF
cat >> config/archives/desktop.list.binary << EOF
deb http://ftp.debian.org/debian experimental main contrib non-free
deb http://ftp.debian.org/debian sid main contrib non-free
EOF
#----------------------------------------
# Adding Wallpaper
#----------------------------------------
wget -O config/includes.chroot/usr/share/backgrounds/wallpaper.jpg http://i.imgur.com/u2oPC.jpg
cat > config/includes.chroot/usr/share/gnome-background-properties/debian-experimental.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper>
<name>Experimental</name>
<filename>/usr/share/backgrounds/wallpaper.jpg</filename>
<options>zoom</options>
</wallpaper>
</wallpapers>
EOF
#----------------------------------------
# APT::Pinning
#----------------------------------------
my_array=(
adwaita-icon-theme
libatk-adaptor
libatk-bridge2.0-0
at-spi2-core
gir1.2-atspi-2.0
libatspi2.0-0
gir1.2-atk-1.0
libatk1.0-0
libatk1.0-data
libatkmm-1.6-1v5
baobab
fonts-cantarell
cheese
cheese-common
gir1.2-cheese-3.0
libcheese-gtk25
libcheese8
clutter-1.0-tests
gir1.2-clutter-1.0
libclutter-1.0-0
libclutter-1.0-common
gir1.2-clutter-gst-3.0
gstreamer1.0-clutter-3.0
libclutter-gst-3.0-0
gir1.2-gtkclutter-1.0
libclutter-gtk-1.0-0
gir1.2-cogl-1.0
#gir1.2-coglgst-2.0
gir1.2-coglpango-1.0
libcogl-common
libcogl-gles2-20
libcogl-gst20
libcogl-pango20
libcogl-path20
libcogl20
dconf-cli
dconf-gsettings-backend
dconf-service
libdconf1
eog
chromium-sandbox
chromium
chromium-common
chromium-l10n
#epiphany-browser
#epiphany-browser-data
evince
evince-common
gir1.2-evince-3.0
libevdocument3-4
libevview3-3
evolution-data-server
evolution-data-server-common
gir1.2-camel-1.2
gir1.2-ebackend-1.2
gir1.2-ebook-1.2
gir1.2-ebookcontacts-1.2
gir1.2-ecal-2.0
gir1.2-edatabook-1.2
gir1.2-edatacal-2.0
gir1.2-edataserver-1.2
gir1.2-edataserverui-1.2
libcamel-1.2-62
libebackend-1.2-10
libebook-1.2-20
libebook-contacts-1.2-3
libecal-2.0-1
libedata-book-1.2-26
libedata-cal-2.0-1
libedataserver-1.2-24
libedataserverui-1.2-2
file-roller
folks-common
folks-tools
gir1.2-folks-0.6
libfolks-dummy-dev
libfolks-dummy25
libfolks-eds25
libfolks-telepathy25
libfolks25
gcab
gir1.2-gcab-1.0
libgcab-1.0-0
gir1.2-gdkpixbuf-2.0
libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common
gdm3
gir1.2-gdm-1.0
libgdm1
gedit
gedit-common
gir1.2-geocodeglib-1.0
libgeocode-glib0
gir1.2-gfbgraph-0.2
libgfbgraph-0.2-0
gjs
libgjs0g
libglib2.0-0
libglib2.0-bin
libglib2.0-data
libglib2.0-dev-bin
glib-networking
glib-networking-common
glib-networking-services
libglibmm-2.4-1v5
gir1.2-gmime-3.0
gmime-bin
libgmime-3.0-0
gir1.2-gnomeautoar-0.1
gir1.2-gnomeautoargtk-0.1
libgnome-autoar-0-0
libgnome-autoar-gtk-0-0
gnome-backgrounds
gir1.2-gnomebluetooth-1.0
gnome-bluetooth
libgnome-bluetooth13
gnome-boxes
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-color-manager
gnome-contacts
gnome-control-center
gnome-control-center-data
gir1.2-gnomedesktop-3.0
gnome-desktop3-data
libgnome-desktop-3-18
gnome-disk-utility
gnome-font-viewer
gnome-getting-started-docs
gnome-initial-setup
gnome-keyring
gnome-keyring-pkcs11
libpam-gnome-keyring
gnome-logs
gnome-maps
gir1.2-gmenu-3.0
gnome-menus
libgnome-menu-3-0
gnome-music
gir1.2-goa-1.0
gnome-online-accounts
libgoa-1.0-0b
libgoa-1.0-common
libgoa-backend-1.0-1
gnome-online-miners
gnome-photos
gnome-screenshot
gnome-session
gnome-session-bin
gnome-session-common
gnome-settings-daemon
gnome-settings-daemon-common
gnome-shell
gnome-shell-common
gnome-shell-extensions
gnome-software
gnome-software-common
gnome-software-plugin-flatpak
gnome-software-plugin-snap
gnome-system-monitor
gnome-terminal
gnome-terminal-data
nautilus-extension-gnome-terminal
gnome-accessibility-themes
gnome-themes-extra
gnome-themes-extra-data
gnome-themes-standard
gnome-user-docs
gnome-user-guide
gnome-user-share
gnome-video-effects
gnome-video-effects-frei0r
gnome-weather
gir1.2-freedesktop
gir1.2-glib-2.0
gobject-introspection
libgirepository-1.0-1
gir1.2-gom-1.0
libgom-1.0-0
gir1.2-grilo-0.3
libgrilo-0.3-0
libgrilo-0.3-bin
grilo-plugins-0.3
gir1.2-gdesktopenums-3.0
gsettings-desktop-schemas
gir1.2-gsound-1.0
gsound-tools
libgsound0
gir1.2-gspell-1
libgspell-1-2
libgspell-1-common
gir1.2-gssdp-1.2
gssdp-tools
libgssdp-1.2-0
gir1.2-gtk-3.0
gtk-3-examples
gtk-update-icon-cache
libgail-3-0
libgtk-3-0
libgtk-3-bin
libgtk-3-common
gtk-doc-tools
gir1.2-gtk-vnc-2.0
gvncviewer
libgtk-vnc-2.0-0
libgvnc-1.0-0
libgtkmm-3.0-1v5
gir1.2-gtksource-4
libgtksourceview-4-0
libgtksourceview-4-common
gir1.2-gupnp-1.2
libgupnp-1.2-0
gir1.2-gupnp-av-1.0
libgupnp-av-1.0-2
gir1.2-gupnpdlna-2.0
gupnp-dlna-tools
libgupnp-dlna-2.0-3
gvfs
gvfs-backends
gvfs-bin
gvfs-common
gvfs-daemons
gvfs-fuse
gvfs-libs
gir1.2-json-1.0
json-glib-tools
libjson-glib-1.0-0
libjson-glib-1.0-common
gir1.2-champlain-0.12
gir1.2-gtkchamplain-0.12
libchamplain-0.12-0
libchamplain-gtk-0.12-0
gir1.2-dazzle-1.0
libdazzle-1.0-0
libdazzle-tools
gir1.2-gdata-0.0
libgdata-common
libgdata22
gir1.2-gee-0.8
libgee-0.8-2
gir1.2-gkbd-3.0
gkbd-capplet
libgnomekbd-common
libgnomekbd8
gir1.2-gsf-1
libgsf-1-114
libgsf-1-common
libgsf-bin
gir1.2-gtop-2.0
libgtop-2.0-11
libgtop2-common
gir1.2-gudev-1.0
libgudev-1.0-0
gir1.2-gweather-3.0
libgweather-3-16
libgweather-common
gir1.2-gxps-0.1
libgxps-utils
libgxps2
gir1.2-mediaart-2.0
libmediaart-2.0-0
gir1.2-notify-0.7
libnotify-bin
libnotify4
gir1.2-peas-1.0
libpeas-1.0-0
libpeas-common
gir1.2-rsvg-2.0
librsvg2-2
librsvg2-bin
librsvg2-common
gir1.2-secret-1
libsecret-1-0
libsecret-common
libsecret-tools
libsigc++-2.0-0v5
gir1.2-soup-2.4
libsoup-gnome2.4-1
libsoup2.4-1
gir1.2-zpj-0.0
libzapojit-0.0-0
mm-common
gir1.2-mutter-5
libmutter-5-0
mutter
mutter-common
gir1.2-nautilus-3.0
libnautilus-extension1a
nautilus
nautilus-data
gnome-orca
orca
gir1.2-pango-1.0
libpango-1.0-0
#libpango1.0-0
libpangocairo-1.0-0
libpangoft2-1.0-0
libpangoxft-1.0-0
pango1.0-tools
libpangomm-1.4-1v5
chezdav
libphodav-2.0-0
libphodav-2.0-common
spice-webdavd
python3-pyatspi
python-gi
python-gi-cairo
python-gi-dbg
python3-gi
python3-gi-cairo
python3-gi-dbg
gir1.2-rest-0.7
gir1.2-restextras-0.7
librest-0.7-0
librest-extras-0.7-0
librygel-core-2.6-2
librygel-db-2.6-2
librygel-renderer-2.6-2
librygel-renderer-gst-2.6-2
librygel-ruih-2.0-1
librygel-server-2.6-2
rygel
rygel-gst-launch
rygel-playbin
rygel-preferences
rygel-ruih
rygel-tracker
simple-scan
gnome-sushi
gir1.2-totem-1.0
libtotem0
totem
totem-common
totem-plugins
gir1.2-totemplparser-1.0
libtotem-plparser-common
libtotem-plparser18
gir1.2-tracker-2.0
libtracker-control-2.0-0
libtracker-miner-2.0-0
libtracker-sparql-2.0-0
tracker
tracker-extract
tracker-miner-fs
libvala-0.48-0
libvalacodegen-0.48-0
libvaladoc-0.48-0
libvaladoc-0.48-data
valac
valac-0.48-vapi
valac-bin
valadoc
gir1.2-vte-2.91
libvte-2.91-0
libvte-2.91-common
libyelp0
yelp
yelp-tools
yelp-xsl
zenity
zenity-common
)
for i in ${my_array[@]}; do
echo -e 'Package: '$i'\nPin: release a=experimental\nPin-Priority: 600\n' >> config/archives/desktop.pref.chroot
done
echo -e 'Package: *\nPin: release a=sid\nPin-Priority: 1\n' >> config/archives/desktop.pref.chroot
echo -e 'Package: gir1.2-coglgst-2.0\nPin: version 1.22.6-1\nPin-Priority: 999\n' >> config/archives/desktop.pref.chroot
echo -e 'Package: libpango1.0-0\nPin: version 1.44.7-3\nPin-Priority: 999\n' >> config/archives/desktop.pref.chroot
cat > config/package-lists/desktop.list.chroot << EOF
#........................................
# Adding GRUB2 Bootloader (mandatory)
#........................................
grub-common
grub2-common
grub-efi-amd64
#........................................
# Adding live-build packages (mandatory)
#........................................
live-boot
live-config
live-boot-initramfs-tools
user-setup
ca-certificates
locales
sudo
plymouth
plymouth-themes
pulseaudio
pulseaudio-module-bluetooth
network-manager-gnome
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-bad-videoparsers
gstreamer1.0-plugins-bad-faad
gstreamer1.0-plugins-ugly
gstreamer1.0-libav
gstreamer1.0-vaapi
libavcodec-extra
ffmpegthumbnailer
EOF
for i in ${my_array[@]}; do
echo -e ''$i'\n' >> config/package-lists/desktop.list.chroot
done
mkdir -p config/includes.chroot/etc/skel
cat > config/includes.chroot/etc/skel/.bashrc << EOF
EOF
#----------------------------------------
# System GSettings Overrides
#----------------------------------------
cat > config/includes.chroot/usr/share/glib-2.0/schemas/11_desktop-base.gschema.override << EOF
[org.gnome.desktop.background]
picture-options='zoom'
picture-uri='file:///usr/share/backgrounds/wallpaper.jpg'
[org.gnome.desktop.screensaver]
picture-options='zoom'
picture-uri='file:///usr/share/backgrounds/wallpaper.jpg'
[org.gnome.desktop.interface]
document-font-name='Cantarell-Regular'
font-name='Cantarell-Regular'
#monospace-font-name='FiraCode-Regular'
[org.gnome.nautilus.desktop]
font='Cantarell-Regular'
[org.gnome.nautilus.icon-view]
default-zoom-level='small'
[org.gnome.nautilus.list-view]
default-zoom-level='small'
[org.gnome.desktop.peripherals.mouse]
natural-scroll=true
[org.gnome.desktop.peripherals.touchpad]
natural-scroll=true
#[org.gnome.desktop.interface]
#gtk-theme='Adwaita'
#[org.gnome.shell]
#enabled-extensions=['[email protected]']
#[org.gnome.shell.extensions.dash-to-dock]
#dock-position='BOTTOM'
EOF
#----------------------------------------
# Terminal GSettings Overrides
#----------------------------------------
cat > config/includes.chroot/usr/share/glib-2.0/schemas/11_gsettings-desktop-schemas.gschema.override << EOF
[org.gnome.Terminal.Legacy.Settings]
default-show-menubar=false
theme-variant='dark'
EOF
#----------------------------------------
# Adding Hooks
#----------------------------------------
cat > config/hooks/normal/10_desktop-base.hook.chroot << EOF
sudo sed -i 's/PRETTY_NAME=".*"/PRETTY_NAME="Debian Experimental-GNOME"/g' /usr/lib/os-release
gnome-extensions enable [email protected]
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
sudo plymouth-set-default-theme spinner -R
EOF
sudo lb build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment