#!/bin/bash if [ $(id -u) != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi # # Notes # • review 'stage3tarball' variable before running the script, once the 'base' is built you may uncomment build_weston=y and run the script again # • if at any point something fails to compile you can Ctrl+C kill the script and manually chroot into the OS build with './gentoox_build.sh chroot' # gitprefix="https://gitgud.io/cloveros/cloveros/raw/master" rootpassword=gentoox username=gentoox userpassword=gentoox builddate="$(date +%Y%m%d).graphite" builddir="build-$(date +%Y%m%d)" stage3tarball="stage3-amd64-20211117.graphite.tar.xz" KERNEL_CONFIG_DIFF="0001-kernel-config-cfs-r8.patch" binpkgs="$(pwd)/var/cache/binpkgs/" distfiles="$(pwd)/var/cache/distfiles/" #build_weston=y #build_kde=y #build_steam=y #build_extra=y #build_wine=y #configure_user=y #configure_weston=y #clover_rice="y" #build_iso=y if [[ ! -d $builddir ]]; then mkdir -v $builddir; fi cd $builddir if [[ ! -f 'image/etc/gentoo-release' ]]; then ntpd -qg > /dev/null mkdir image/ cd image/ if [[ -f "../../$stage3tarball" ]]; then cp -v "../../$stage3tarball" . else cp -v /var/tmp/catalyst/builds/default/stage3-amd64-$builddate.tar.xz . fi if [[ $? -ne 0 ]]; then echo "you need to build stage3 tarball that has gcc graphite support first via build-stage3.sh"; exit 1; fi echo 'extracting stage3 tarball...' tar xJpf stage3* --xattrs --numeric-owner rm -f stage3* cp ../../gentoox-patches/$KERNEL_CONFIG_DIFF usr/src cp ../../gentoox-patches/0011-ZFS-fix.patch usr/src cp ../../gentoox-patches/portage-change-rsync-to-git-repos.diff usr/src cp ../../gentoox-patches/zfs-ungpl-rcu_read_unlock-export.diff usr/src mkdir -p etc/portage/patches cp -r ../../patches/* etc/portage/patches/ cp ../../60-ioschedulers.rules etc/udev/rules.d/ cp ../../my.start etc/local.d/ mkdir -p etc/portage/patches/www-client/firefox wget --quiet -P etc/portage/patches/www-client/firefox/ 'https://raw.githubusercontent.com/bmwiedemann/openSUSE/master/packages/m/MozillaFirefox/firefox-kde.patch' wget --quiet -P etc/portage/patches/www-client/firefox/ 'https://raw.githubusercontent.com/bmwiedemann/openSUSE/master/packages/m/MozillaFirefox/mozilla-kde.patch' wget --quiet -P etc/portage/patches/www-client/firefox/ 'https://bazaar.launchpad.net/~mozillateam/firefox/firefox-trunk.head/download/ricotz%40ubuntu.com-20210119184254-9ag3yy5sw3i4autd/unitymenubar.patch-20130215095938-1n6mqqau8tdfqwhg-1/unity-menubar.patch' mkdir -p etc/portage/package.mask mkdir -p etc/portage/package.unmask cp ../../package.mask/* etc/portage/package.mask/ cp ../../archlinux-tools/arch-chroot usr/local/sbin/ cp ../../archlinux-tools/genfstab usr/local/sbin/ cp ../../mpv-kio.sh usr/local/bin/ if [[ ! -z $binpkgs ]] && [[ ! -z $distfiles ]]; then #rsync -a $binpkgs var/cache/binpkgs/ #rsync -a $distfiles var/cache/distfiles/ mkdir -p $binpkgs mkdir -p $distfiles mount --bind $binpkgs var/cache/binpkgs/ mount --bind $distfiles var/cache/distfiles/ fi cp /etc/resolv.conf etc/ cd .. fi if [[ -z $(findmnt image/proc) ]]; then mount -t proc none image/proc mount --rbind /dev image/dev mount --rbind /sys image/sys if [[ -z $(findmnt image/var/cache/binpkgs) ]]; then mount --bind $binpkgs image/var/cache/binpkgs/ mount --bind $distfiles image/var/cache/distfiles/ fi else echo "proc already mounted..." fi cd image/ if [[ $# -ge 1 ]]; then case $1 in "chroot") chroot . /bin/bash -i #env-update #chmod 777 /tmp umount -l var/cache/binpkgs umount -l var/cache/distfiles umount -l {dev,proc,sys} exit 0 ;; esac fi if [[ ! -f 'tmp/gentoox-base-done' ]]; then cat < /etc/portage/make.conf mkdir /etc/portage/env echo 'CFLAGS="\${CFLAGS} -fno-lto" CXXFLAGS="\${CFLAGS} -fno-lto"' > /etc/portage/env/nolto.conf echo 'CFLAGS="${CFLAGS} -Wno-error=missing-prototypes" CXXFLAGS="${CFLAGS} -Wno-error=missing-prototypes"' > /etc/portage/env/no-error-on-missing-prototype.conf echo 'CFLAGS="-O3 -march=sandybridge -mtune=sandybridge -fno-tree-slp-vectorize -pipe" CXXFLAGS="${CFLAGS}"' > /etc/portage/env/O3nolto-noslp.conf echo 'CFLAGS="-O2 -march=sandybridge -mtune=sandybridge -pipe" CXXFLAGS="\${CFLAGS}"' > /etc/portage/env/O2nolto.conf echo 'CFLAGS="-O3 -march=sandybridge -mtune=sandybridge -pipe" CXXFLAGS="\${CFLAGS}"' > /etc/portage/env/O3nolto.conf echo 'sys-libs/glibc O3nolto-noslp.conf dev-libs/elfutils nolto.conf app-crypt/efitools nolto.conf sys-libs/efivar nolto.conf dev-libs/libaio nolto.conf app-arch/bzip2 O3nolto.conf dev-libs/libbsd nolto.conf sys-apps/sandbox nolto.conf media-libs/opencv O3nolto.conf' > /etc/portage/package.env echo 'sys-devel/gcc graphite lto pgo zstd dev-libs/elfutils zstd sys-libs/glibc custom-cflags sys-devel/llvm gold sys-apps/kmod lzma sys-kernel/linux-firmware initramfs redistributable unknown-license x11-libs/libdrm libkms media-libs/mesa d3d9 lm-sensors opencl vaapi vdpau vulkan vulkan-overlay xa xvmc media-libs/libsdl2 gles2 www-client/firefox -system-av1 -system-icu -system-jpeg -system-libevent -system-libvpx -system-sqlite -system-harfbuzz -system-webp hwaccel pgo lto wayland clang mail-client/thunderbird hwaccel lto dev-libs/boost python zstd dev-lang/python sqlite pgo tk sys-fs/squashfs-tools zstd sys-boot/grub:2 mount libzfs x11-libs/libxcb xkb dev-db/sqlite secure-delete x11-base/xorg-server xvfb sys-apps/xdg-desktop-portal screencast dev-vcs/git tk dev-libs/libjcat pkcs7 gpg dev-libs/libdbusmenu gtk3 net-misc/curl http2 dev-libs/apr-util ldap sys-apps/util-linux caps */* PYTHON_TARGETS: python2_7 python3_10 */* PYTHON_SINGLE_TARGET: -* python3_10 app-misc/lirc python_single_target_python3_9 media-gfx/blender python_single_target_python3_9 dev-libs/libnatspec python_single_target_python2_7 dev-lang/yasm python_single_target_python2_7 media-libs/libcaca python_single_target_python2_7 gnome-base/libglade python_single_target_python2_7' > /etc/portage/package.use/gentoox rm -rf /etc/portage/package.accept_keywords/ echo -n > /etc/portage/package.accept_keywords #unmask gcc/glibc to prompt installation of masked 9999 packages #echo 'sys-devel/gcc' >> /etc/portage/package.unmask/gcc #echo 'sys-devel/gcc **' >> /etc/portage/package.accept_keywords #echo 'sys-libs/glibc' >> /etc/portage/package.unmask/glibc #echo 'sys-libs/glibc **' >> /etc/portage/package.accept_keywords emerge -vN1 gcc # install latest gcc now that it has been unmasked, or if above lines are commented this will rebuild gcc with 'lto pgo zstd' flags emerge --autounmask=y --autounmask-write=y -vueDN --with-bdeps=y --exclude gcc @world # rebuild entire system with fresh gcc emerge -v gentoo-sources genkernel portage-utils gentoolkit cpuid2cpuflags cryptsetup lvm2 mdadm dev-vcs/git btrfs-progs app-arch/lz4 ntfs3g dosfstools exfat-utils f2fs-tools gptfdisk efitools shim syslog-ng logrotate emerge --noreplace app-editors/nano # set portage to use git repos patch -p1 < /usr/src/portage-change-rsync-to-git-repos.diff rm -rf /var/db/repos/gentoo/* rm -rf /var/db/repos/gentoo/.* emerge --sync touch /tmp/gentoox-base-done HEREDOC #rsync -av --delete var/cache/{binpkgs,distfiles} ../var/cache/ exit 0 else echo "base system already compiled, skipping..."; fi if [[ ! -f 'tmp/gentoox-kernel-done' ]]; then cat <> /etc/genkernel.conf #echo -e '\nrc_interactive="NO"' >> /etc/rc.conf eselect kernel set 1 cd /usr/src/linux/ if [[ ! -f '/tmp/gentoox-kernelpatches-applied' ]]; then wget --quiet 'https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/linux/trunk/config' -O .config cp .config .config.org #wget --quiet -m -np -c 'ck.kolivas.org/patches/5.0/5.12/5.12-ck1/patches/' wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/android-patches-v2/0001-android-export-symbold-and-enable-building-ashmem-an.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/arch-patches-v10/0001-arch-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/btrfs-patches-v9/0001-btrfs-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/clearlinux-patches-v2/0001-clearlinux-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/cpu-patches-v2/0001-cpu-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/fixes-miscellaneous-v9/0001-fixes-miscellaneous.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/mm-patches-v2/0001-mm-protect-mappings-under-memory-pressure.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/futex-patches-v2/0001-futex-resync-from-gitlab.collabora.com.patch #wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/futex2-patches/0001-futex2-resync-from-gitlab.collabora.com.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/zstd-patches/0001-zstd-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/zstd-dev-patches-v5/0001-zstd-dev-patches.patch wget --quiet https://raw.githubusercontent.com/ptr1337/kernel-patches/master/CacULE/v5.15/cacule-5.15-full.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/xanmod-patches-v5/0001-xanmod-patches.patch #wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/lru-patches-le9-v4/0001-lru-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/bbr2-patches/0001-bbr2-5.15-introduce-BBRv2.patch #wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/bcachefs-patches/0001-bcachefs-5.15-introduce-bcachefs-patchset.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/ntfs3-patches-v2/0001-ntfs3-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/amd64-patches-v2/0001-amd64-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/cpufreq-patches-v6/0001-cpufreq-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/intel-patches/0001-intel-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/hwmon-patches-v8/0001-hwmon-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/lqx-patches-v4/0001-lqx-patches.patch wget --quiet https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/5.15/v4l2loopback-patches-v2/0001-v4l2loopback-patches.patch #wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git/patch/?id=86ad60a65f29dd862a11c22bb4b5be28d6c5cef1 -O x86_aes-ni-xts_use_direct_calls_to_and_4-way_stride.patch #wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git/patch/?id=2481104fe98d5b016fdd95d649b1235f21e491ba -O x86_aes-ni-xts_rewrite_and_drop_indirections_via_glue_helper.patch #for f in ck.kolivas.org/patches/5.0/5.12/5.12-ck1/patches/*.patch; do patch -p1 < "\$f"; done patch -p1 < 0001-cpu-patches.patch patch -p0 < ../$KERNEL_CONFIG_DIFF # Aufs git clone --single-branch --branch aufs5.x-rcN https://github.com/sfjro/aufs5-standalone.git cp -r aufs5-standalone/fs/aufs/ fs/ cp aufs5-standalone/include/uapi/linux/aufs_type.h include/uapi/linux/ patch -p1 < aufs5-standalone/aufs5-kbuild.patch patch -p1 < aufs5-standalone/aufs5-base.patch patch -p1 < aufs5-standalone/aufs5-mmap.patch #patch -p1 < aufs5-standalone/aufs5-standalone.patch echo -e "CONFIG_AUFS_FS=y\nCONFIG_AUFS_BRANCH_MAX_127=y\nCONFIG_AUFS_BRANCH_MAX_511=n\nCONFIG_AUFS_BRANCH_MAX_1023=n\nCONFIG_AUFS_BRANCH_MAX_32767=n\nCONFIG_AUFS_HNOTIFY=y\nCONFIG_AUFS_EXPORT=n\nCONFIG_AUFS_XATTR=y\nCONFIG_AUFS_FHSM=y\nCONFIG_AUFS_RDU=n\nCONFIG_AUFS_DIRREN=n\nCONFIG_AUFS_SHWH=n\nCONFIG_AUFS_BR_RAMFS=y\nCONFIG_AUFS_BR_FUSE=n\nCONFIG_AUFS_BR_HFSPLUS=n\nCONFIG_AUFS_DEBUG=n" >> .config sed -i "s/CONFIG_ISO9660_FS=m/CONFIG_ISO9660_FS=y/" .config # Anbox patch -p1 < 0001-android-export-symbold-and-enable-building-ashmem-an.patch scripts/config --enable CONFIG_ASHMEM scripts/config --enable CONFIG_ANDROID scripts/config --enable CONFIG_ANDROID_BINDER_IPC scripts/config --enable CONFIG_ANDROID_BINDERFS scripts/config --set-str CONFIG_ANDROID_BINDER_DEVICES "binder,hwbinder,vndbinder" patch -p1 < 0001-arch-patches.patch patch -p1 < 0001-btrfs-patches.patch patch -p1 < 0001-clearlinux-patches.patch patch -p1 < 0001-fixes-miscellaneous.patch patch -p1 < 0001-futex-resync-from-gitlab.collabora.com.patch #patch -p1 < 0001-futex2-resync-from-gitlab.collabora.com.patch patch -p1 < ../0011-ZFS-fix.patch patch -p1 < ../zfs-ungpl-rcu_read_unlock-export.diff patch -p1 < 0001-zstd-dev-patches.patch patch -p1 < 0001-zstd-patches.patch patch -p1 < cacule-5.15-full.patch patch -p1 < 0001-xanmod-patches.patch #patch -p1 < 0001-lru-patches.patch patch -p1 < 0001-mm-protect-mappings-under-memory-pressure.patch patch -p1 < 0001-bbr2-5.15-introduce-BBRv2.patch #patch -p1 < 0001-bcachefs-5.15-introduce-bcachefs-patchset.patch patch -p1 < 0001-ntfs3-patches.patch patch -p1 < 0001-amd64-patches.patch patch -p1 < 0001-cpufreq-patches.patch patch -p1 < 0001-intel-patches.patch patch -p1 < 0001-hwmon-patches.patch patch -p1 < 0001-lqx-patches.patch patch -p1 < 0001-v4l2loopback-patches.patch #patch -p1 < x86_aes-ni-xts_use_direct_calls_to_and_4-way_stride.patch #patch -p1 < x86_aes-ni-xts_rewrite_and_drop_indirections_via_glue_helper.patch # Linux Random Number Generator patch. http://www.chronox.de/lrng.html git clone --depth 1 --filter=blob:none --sparse https://github.com/smuellerDD/lrng.git lrng-5.15; cd lrng-5.15 git sparse-checkout init --cone; git sparse-checkout set kernel_patches/v5.15; cd .. for f in lrng-5.15/kernel_patches/v5.15/*.patch; do patch -p1 < "\$f"; done echo 'CONFIG_LRNG=y CONFIG_LRNG_CONTINUOUS_COMPRESSION_DISABLED=y CONFIG_LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION=y CONFIG_LRNG_COLLECTION_SIZE_1024=y CONFIG_LRNG_COLLECTION_SIZE=1024 CONFIG_LRNG_DRNG_SWITCH=y CONFIG_LRNG_KCAPI_HASH=y CONFIG_LRNG_DRBG=y CONFIG_LRNG_RCT_CUTOFF=31 CONFIG_LRNG_APT_CUTOFF=325 CONFIG_LRNG_JENT=y CONFIG_CRYPTO_DRBG_MENU=y CONFIG_CRYPTO_DRBG=y' >> .config sed -i 's/CONFIG_DEFAULT_HOSTNAME="archlinux"/CONFIG_DEFAULT_HOSTNAME="gentoox"/' .config sed -i 's/CONFIG_LOCALVERSION=""/CONFIG_LOCALVERSION="-x86_64"/' .config sed -i 's/CONFIG_SQUASHFS=m/CONFIG_SQUASHFS=y/' .config sed -i 's/CONFIG_BLK_DEV_LOOP=m/CONFIG_BLK_DEV_LOOP=y/' .config sed -i 's/CONFIG_BLK_DEV_CRYPTOLOOP=m/CONFIG_BLK_DEV_CRYPTOLOOP=y/' .config sed -i 's/CONFIG_NET_IP_TUNNEL=y/CONFIG_NET_IP_TUNNEL=m/' .config sed -i 's/CONFIG_NET_UDP_TUNNEL=y/CONFIG_NET_UDP_TUNNEL=m/' .config sed -i 's/EXTRAVERSION = -gentoo-r1/EXTRAVERSION = -gentoo/' Makefile make oldconfig find . -name "*.orig" -exec rm -f {} \; find . -name "*.rej" -exec rm -f {} \; touch /tmp/gentoox-kernelpatches-applied fi cd /usr/src #rm -f $KERNEL_CONFIG_DIFF #mkdir -p /usr/share/genkernel/distfiles/ #wget https://www.busybox.net/downloads/busybox-1.20.2.tar.bz2 -d /usr/share/genkernel/distfiles/ #echo -e '\nMAKEOPTS="-j12"' >> /etc/genkernel.conf # former command is genkernel-next (systemd only), latter is for genkernel #genkernel --kernel-config=/usr/src/linux-\$KERNELVERSION-gentoo/.config --no-mrproper --udev --plymouth --luks --lvm --mdadm --btrfs --zfs all genkernel --kernel-config=/usr/src/linux-\$KERNELVERSION-gentoo/.config --no-mrproper kernel #unmask zfs to prompt installation of masked zfs-9999 zfs-kmod-9999 echo 'sys-fs/zfs sys-fs/zfs-kmod' >> /etc/portage/package.unmask/zfs echo 'sys-fs/zfs ** sys-fs/zfs-kmod **' >> /etc/portage/package.accept_keywords emerge -v grub:2 squashfs-tools linux-firmware os-prober zfs zfs-kmod hostid > /etc/hostid dd if=/dev/urandom of=/dev/stdout bs=1 count=4 > /etc/hostid genkernel --kernel-config=/usr/src/linux/.config --compress-initramfs-type=zstd --microcode --luks --lvm --mdadm --btrfs --zfs initramfs tar --zstd -cf /usr/src/kernel-gentoox.tar.zst /boot/*\${KERNELVERSION}* -C /lib/modules/ . kver=\$(uname -r) cd /usr/src/uefi/ sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-\$kver --output vmlinuz-\$kver.signed mv vmlinuz-\$kver.signed /boot/vmlinuz-\$kver cp -r /lib/modules/\$kver/{kernel,extra,misc}/ . ./mod-sign.sh MOK.priv MOK.der ./kernel/ ./mod-sign.sh MOK.priv MOK.der ./extra/ ./mod-sign.sh MOK.priv MOK.der ./misc/ cp -r ./kernel/ ./extra/ ./misc/ /lib/modules/\$kver/ rm -rf kernel extra misc sed -i "s/#GRUB_CMDLINE_LINUX_DEFAULT=\"\"/GRUB_CMDLINE_LINUX_DEFAULT=\"zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold dobtrfs\"/" /etc/default/grub sed -i "s/#GRUB_GFXMODE=640x480/GRUB_GFXMODE=auto/" /etc/default/grub sed -i "s/#GRUB_GFXPAYLOAD_LINUX=/GRUB_GFXPAYLOAD_LINUX=keep/" /etc/default/grub rc-update add zfs-import boot rc-update add zfs-mount boot touch /tmp/gentoox-kernel-done HEREDOC cp -v usr/src/kernel-gentoox.tar.lzma ../ exit 0 else echo "kernel already compiled, skipping..."; fi if [[ ! -z $build_weston ]] && [[ ! -f 'tmp/gentoox-weston-done' ]]; then cat <> /etc/portage/package.accept_keywords mkdir -p /etc/portage/package.mask /etc/portage/package.unmask echo '*/*::mv' >> /etc/portage/package.mask/lowprio echo 'app-portage/portage-bashrc-mv::mv app-shells/runtitle::mv' >> /etc/portage/package.unmask/wanted emerge sys-config/ltoize sed -i '1s/^/source make.conf.lto\n/' /etc/portage/make.conf sed -i '1s/^/NTHREADS="8"\n/' /etc/portage/make.conf FEATURES="-userpriv" emerge dev-lang/yasm # yasm fails to build otherwise #echo 'sys-kernel/genkernel-next plymouth #sys-boot/plymouth gdm' > /etc/portage/package.use/gentoox emerge -v --autounmask=y --autounmask-write=y --keep-going=y --deep --newuse xorg-server nvidia-firmware arandr elogind sudo vim weston wpa_supplicant ntp bind-tools telnet-bsd snapper \ nfs-utils cifs-utils samba dhcpcd nss-mdns zsh zsh-completions powertop cpupower lm-sensors screenfetch gparted gdb strace atop dos2unix app-misc/screen app-text/tree openbsd-netcat laptop-mode-tools hdparm alsa-utils vulkan-tools mesa-progs tcpdump shim mokutil #plymouth-openrc-plugin #emerge -avuDN --with-bdeps=y @world #emerge -v --depclean groupadd weston-launch touch /tmp/gentoox-weston-done HEREDOC exit 0 fi if [[ ! -z $build_kde ]] && [[ ! -f 'tmp/gentoox-kde-done' ]]; then cp ../../postinstall.sh usr/src/ mkdir usr/src/theme cp ../../theme/1518039301698.png usr/src/theme/ cp '../../theme/GentooX Breeze Dark Transparent.tar.gz' usr/src/theme/ cat <> /etc/portage/package.use/gentoox # enable flatpak backend in discover, patch qt-creator to use clang9 effectively dropping clang8 echo 'kde-plasma/discover flatpak' >> /etc/portage/package.use/gentoox # mask qt-creator, it pulls llvm9 and we don't want that echo 'dev-qt/qt-creator' >> /etc/portage/package.mask/gentoox # glibc 2.33 does not declare __xstat among others in the header anymore causing umockdev build to fail echo 'dev-util/umockdev no-error-on-missing-prototype.conf' >> /etc/portage/package.env emerge -v --jobs=2 --keep-going=y --autounmask=y --autounmask-write=y --deep --newuse kde-plasma/plasma-meta kde-apps/kde-apps-meta kde-apps/kmail kde-apps/knotes \ latte-dock plasma-sdk libdbusmenu gvfs kio-fuse kuroo #emerge --noreplace dev-qt/qt-creator #echo 'dev-qt/qt-creator' >> /etc/portage/package.mask/gentoox #yes | layman -o https://raw.githubusercontent.com/fosero/flatpak-overlay/master/repositories.xml -f -a flatpak-overlay -q emerge -v sys-apps/flatpak # theme related (cd /usr/share/icons; git clone https://github.com/keeferrourke/la-capitaine-icon-theme.git) cd /usr/src/ git clone https://github.com/ishovkun/SierraBreeze.git cd SierraBreeze/ mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DBUILD_TESTING=OFF -DKDE_INSTALL_USE_QT_SYS_PATHS=ON make install touch /tmp/gentoox-kde-done HEREDOC exit 0 fi if [[ ! -z $build_steam ]] && [[ ! -f 'tmp/gentoox-steam-done' ]]; then cat <> /etc/portage/package.use/gentoox emerge -v steam-meta touch /tmp/gentoox-steam-done HEREDOC exit 0 fi if [[ ! -z $build_extra ]] && [[ ! -f 'tmp/gentoox-extra-done' ]]; then cat <> /etc/portage/package.use/gentoox yes | layman -a bobwya -q echo '*/*::bobwya' >> /etc/portage/package.mask/lowprio echo 'app-benchmarks/phoronix-test-suite::bobwya dev-php/fpdf::bobwya' >> /etc/portage/package.unmask/wanted echo 'media-gfx/gimp nolto.conf' >> /etc/portage/package.env emerge -v gimp avidemux blender tuxkart keepassxc libreoffice firefox thunderbird mpv audacious-plugins audacious net-irc/hexchat smartmontools libisoburn phoronix-test-suite virtualbox-guest-additions pfl bash-completion dev-python/pip virtualenv app-misc/jq youtube-dl app-shells/dash touch /tmp/gentoox-extra-done HEREDOC exit 0 fi if [[ ! -z $build_wine ]] && [[ ! -f 'tmp/gentoox-wine-done' ]]; then cat <> /etc/portage/package.use/gentoox emerge -v wine touch /tmp/gentoox-wine-done HEREDOC exit 0 fi if [[ ! -z $configure_user ]] && [[ ! -f 'tmp/gentoox-user-configured' ]]; then cp ../../install.sh usr/src/ cat < /etc/conf.d/net echo 'nameserver 1.1.1.1 nameserver 2606:4700:4700::1111' > /etc/resolv.conf sed -i "s/enforce=everyone/enforce=none/" /etc/security/passwdqc.conf #echo "root:\$rootpassword" | chpasswd yes $rootpassword | passwd root useradd $username yes $userpassword | passwd $username gpasswd -a $username wheel gpasswd -a $username weston-launch gpasswd -a $username vboxguest gpasswd -a $username vboxsf #cp /usr/share/zoneinfo/UTC /etc/localtime echo "America/Chicago" > /etc/timezone cp /usr/share/zoneinfo/America/Chicago /etc/localtime echo -e '\nen_US.UTF-8 UTF-8 ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8 ko_KR.EUC-KR EUC-KR ko_KR.UTF-8 UTF-8 pl_PL ISO-8859-2 pl_PL.UTF-8 UTF-8' >> /etc/locale.gen locale-gen eselect locale set en_US.utf8 echo "frozen-files=\"/etc/sudoers\"" >> /etc/dispatch-conf.conf sed -i "s/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers #sed -Ei "s@c([2-6]):2345:respawn:/sbin/agetty 38400 tty@#\0@" /etc/inittab sed -i "s@c1:12345:respawn:/sbin/agetty 38400 tty1 linux@c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux@" /etc/inittab echo -e "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel\nupdate_config=1" > /etc/wpa_supplicant/wpa_supplicant.conf eselect fontconfig enable 10-sub-pixel-rgb.conf eselect fontconfig enable 11-lcdfilter-default.conf emerge -v ja-ipafonts source-han-sans fira-code fira-sans echo 'kernel.sysrq=1 vm.swappiness=10' >> /etc/sysctl.d/local.conf usermod -aG users,portage,lp,adm,audio,cdrom,disk,input,usb,video,cron,tty,plugdev $username cp /etc/samba/smb.conf.default /etc/samba/smb.conf sed -i "s/ workgroup = MYGROUP/ workgroup = WORKGROUP/" /etc/samba/smb.conf rc-update add dbus default rc-update add syslog-ng default #rc-update add dhcpcd default rc-update add NetworkManager default rc-update add avahi-daemon default rc-update add bluetooth default rc-update add samba default rc-update add sshd default rc-update add virtualbox-guest-additions default rc-update add elogind boot ln -s /usr/src/install.sh /root/ ln -s /usr/src/install.sh /home/$username/ ln -s /usr/src/postinstall.sh /home/$username/ cd /home/$username/ echo '~/postinstall.sh &' > .xinitrc echo 'exec dbus-launch --exit-with-session startplasma-x11' >> .xinitrc chown -R $username.$username /home/$username/ if [[ ! -z \$configure_weston ]]; then su - gentoox echo '#!/bin/bash export GDK_BACKEND=wayland export CLUTTER_BACKEND=wayland export COGL_RENDERER=egl_wayland export SDL_VIDEODRIVER=wayland export QT_QPA_PLATFORM=wayland-egl exec weston-launch' > weston-launch.sh chmod +x weston-launch.sh fi cd /bin ln -sf dash sh touch /tmp/gentoox-user-configured HEREDOC exit 0 fi if [[ ! -z $clover_rice ]]; then cat < Desktop/home.desktop echo -e "[Desktop Entry]\nEncoding=UTF-8\nType=Link\nName=Applications\nIcon=folder\nExec=spacefm /usr/share/applications/" > Desktop/applications.desktop cp /usr/share/applications/{firefox.desktop,mpv.desktop,emacs.desktop,zzz-gimp.desktop,porthole.desktop,xarchiver.desktop} Desktop/ echo -e "~rows=0\n1=home.desktop\n2=applications.desktop\n3=porthole.desktop\n4=firefox.desktop\n5=mpv.desktop\n6=emacs.desktop\n7=zzz-gimp.desktop\n8=xarchiver.desktop" > .config/spacefm/desktop0 chown -R $username /home/$username/ wget $gitprefix/livecd_install.sh -P /home/$username/ chmod +x /home/$username/livecd_install.sh sed -i "s@c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux@c1:12345:respawn:/sbin/agetty -a $username --noclear 38400 tty1 linux@" /etc/inittab sed -i "s/^/#/" /home/$username/.bash_profile echo -e 'if [ -z "\$DISPLAY" ] && [ -z "\$SSH_CLIENT" ] && ! pgrep X > /dev/null; then X & export DISPLAY=:0 fvwm & while sleep 0.2; do if [ -d /proc/\$! ]; then ((i++)); [ "\$i" -gt 6 ] && break; else i=0; fvwm & fi; done urxvtd -o -f urxvtc -geometry 80x24+100+100 -e sudo ./livecd_install.sh rc-config start wpa_supplicant &> /dev/null & nitrogen --set-zoom wallpaper.png & spacefm --desktop & urxvtc -geometry 1000x1+0+0 -fn 6x13 -letsp 0 -sl 0 -e ~/stats.sh xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1 & xinput list --name-only | sed "/Virtual core pointer/,/Virtual core keyboard/"\!"d;//d" | xargs -I{} xinput set-prop pointer:{} "libinput Accel Profile Enabled" 0 1 &> /dev/null & fi' >> /home/$username/.bash_profile HEREDOC exit 0 fi if [[ ! -z $build_iso ]]; then cat <.*/\1/p") if [[ ! -f "current-install-amd64-minimal/install-amd64-minimal-$isobuilddate.iso" ]]; then wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal/install-amd64-minimal-$isobuilddate.iso fi emerge -u dev-libs/libisoburn sys-fs/squashfs-tools sys-boot/syslinux xorriso -osirrox on -indev *-$isobuilddate.iso -extract / iso/ mv image.squashfs iso/image.squashfs tar -xOf kernel-gentoox.tar.zst --wildcards \*vmlinuz-\* > iso/boot/gentoo tar -xOf kernel-gentoox.tar.zst --wildcards \*initramfs-\* | unzstd -d | gzip > iso/boot/gentoo.igz tar -xOf kernel-gentoox.tar.zst --wildcards \*System.map-\* > iso/boot/System-gentoo.map sed -i "s@dokeymap@aufs scandelay=3@g" iso/isolinux/isolinux.cfg sed -i "s@dokeymap@aufs scandelay=3@g" iso/grub/grub.cfg cd iso cp cp boot/EFI/BOOT/grubx64.efi . sbsign --key EFI/MOK.priv --cert EFI/MOK.pem grubx64.efi mv grubx64.efi.signed grubx64.efi cp grubx64.efi boot/EFI/BOOT/grubx64.efi cp grubx64.efi EFI/BOOT/grubx64.efi mkdir tmp && mount -o rw gentoo.efimg ./tmp cp grubx64.efi /mnt/EFI/BOOT/grubx64.efi umount ./tmp rm -f grubx64.efi && rm -rf ./tmp cd .. xorriso -as mkisofs -iso-level 3 -r -J \ -joliet-long -l -cache-inodes \ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ -partition_offset 16 -A "GENTOOX" \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -eltorito-alt-boot -e gentoo.efimg -no-emul-boot -isohybrid-gpt-basdat \ -V "GENTOOX" -o GentooX-x86_64-$builddate.iso iso/ #rm -Rf image/ iso/ kernel-gentoox.tar.zst fi