#!/bin/bash # set -ex if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 sudo "$0" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" exit 0 fi echo "Als root Angemeldet" # VERSION_ID=$(cat /etc/os-release | grep "ID") RCLOCAL='/etc/rc.local' SYSCTL='/etc/sysctl.conf' WEBADDRESS="https://github.com/simono41/SpectreOS.git" WEBADDRESS1="https://github.com/simono41/shell-scripte.git" SUDOERS="/etc/sudoers" repo="SpectreOS" repo1="shell-scripte" version="$1" username="$2" userpass="$3" archchroot="$4" hostname="$(cat /etc/hostname)" [[ -z "${version}" ]] && version="${hostname#*-}" [[ -z "${username}" ]] && username="user1" [[ -z "${userpass}" ]] && userpass="user1" function gitclone() { if [ -d "/opt/${repo}" ]; then echo "${repo} existiert bereits!!!" cd /opt/${repo} git pull else git clone ${WEBADDRESS} /opt/${repo} fi if [ -d "/opt/${repo1}" ]; then echo "${repo1} existiert bereits!!!" cd /opt/${repo1} git pull else git clone ${WEBADDRESS1} /opt/${repo1} fi cd / } function yaourtmanagerinstall() { cd /home/"$username"/ pwd su "$username" -c "curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz" pwd su "$username" -c "tar -xvzf package-query.tar.gz" pwd cd package-query pwd su "$username" -c "makepkg -si --skipchecksums --skippgpcheck --nocheck --noconfirm --install --needed" pwd cd .. pwd su "$username" -c "curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz" pwd su "$username" -c "tar -xvzf yaourt.tar.gz" pwd cd yaourt pwd su "$username" -c "makepkg -si --skipchecksums --skippgpcheck --nocheck --noconfirm --install --needed" pwd cd / } function pacaurmanagerinstall() { cd /home/"$username"/ pwd if [ -d /home/"$username"/cower ];then echo "Bereits vorhanden!!!" cd /home/"$username"/cower su "$username" -c "git pull" cd .. else su "$username" -c "git clone https://aur.archlinux.org/cower.git" fi pwd cd cower pwd su "$username" -c "makepkg -si --skipchecksums --skippgpcheck --nocheck --noconfirm --install --needed" pwd cd .. pwd if [ -d /home/"$username"/pacaur ];then echo "Bereits vorhanden!!!" cd /home/"$username"/pacaur su "$username" -c "git pull" cd .. else su "$username" -c "git clone https://aur.archlinux.org/pacaur.git" fi pwd cd pacaur pwd su "$username" -c "makepkg -si --skipchecksums --skippgpcheck --nocheck --noconfirm --install --needed" pwd cd / } function aurmanagerinstall() { cd /home/"$username"/ pwd if [ -d /home/"$username"/aurman ];then echo "Bereits vorhanden!!!" cd /home/"$username"/aurman su "$username" -c "git pull" cd .. else su "$username" -c "git clone https://aur.archlinux.org/aurman.git" fi pwd cd aurman pwd su "$username" -c "makepkg -si --skipchecksums --skippgpcheck --nocheck --noconfirm --install --needed" pwd cd / } function yaourtinstall() { su "$username" -c "yaourt -S $1 --needed --noconfirm" } function aurinstall() { su "$username" -c "aurman -S $1 --needed --noconfirm --noedit" } function standartinstallation() { pacman -Syu $(cat /opt/${repo}/packages_${version}.txt) --needed --noconfirm } function ldconfigcache() { rm /etc/ld.so.cache ldconfig } function check() { if [ -f /usr/lib/systemd/system/x11vnc.service ]; then rm /usr/lib/systemd/system/x11vnc.service fi if [ -f /etc/systemd/system/x11vnc.service ]; then rm /etc/systemd/system/x11vnc.service fi } function checkend() { cp /opt/${repo}/x11vnc.service /etc/systemd/system/x11vnc.service chmod 644 /etc/systemd/system/x11vnc.service systemctl enable x11vnc.service } function addusers() { useradd -m -g users -G wheel,audio,video,sys,optical -s /bin/bash $username passwd ${username} < /root/.config/gtk-3.0/settings.ini echo "gtk-theme-name = Adwaita" >> /root/.config/gtk-3.0/settings.ini echo "# next option is applicable only if selected theme supports it" >> /root/.config/gtk-3.0/settings.ini echo "gtk-application-prefer-dark-theme = true" >> /root/.config/gtk-3.0/settings.ini echo "# set font name and dimension" >> /root/.config/gtk-3.0/settings.ini echo "gtk-font-name = Sans 10" >> /root/.config/gtk-3.0/settings.ini gsettings set org.gnome.desktop.media-handling automount 'false' gsettings set org.gnome.desktop.media-handling automount-open 'false' } # if [ "$1" == "adduser" ] then username=$2 userpass=$3 addusers exit 0 fi if cat /etc/passwd | grep ${username} > /dev/null; then echo "${username} existiert bereits!!!" else addusers fi if [ "$erstellen" == "exit" ] then exit 0 fi # grundinstallation gitclone # sudoers/wheel echo "Lege $SUDOERS neu an!!!" echo "root ALL=(ALL) NOPASSWD: ALL" > $SUDOERS echo "%wheel ALL=(ALL) NOPASSWD: ALL" >> $SUDOERS # Your commands # modprobe.d mkdir -p /etc/modprobe.d/ echo "blacklist floppy" > /etc/modprobe.d/blacklist-floppy.conf echo "blacklist nouveau" > /etc/modprobe.d/blacklist_nouveau.conf # startup cp /opt/${repo}/startup /usr/bin/ chmod 755 /usr/bin/startup cp /opt/${repo}/startup.service /etc/systemd/system/ chmod 644 /etc/systemd/system/startup.service systemctl enable startup.service # pacman-config if [ "${version}" == "libre" ]; then cp /opt/${repo}/pacman.conf_libre /etc/pacman.conf else cp /opt/${repo}/pacman.conf /etc/pacman.conf fi # new-config if [ -d /home/"$username"/.config ]; then rm -Rv /home/"$username"/.config fi if [ -d /root/.config ]; then rm -Rv /root/.config fi # mirrorlist cp /opt/${repo}/mirrorlist_libre /etc/pacman.d/mirrorlist_libre cp /opt/${repo}/mirrorlist /etc/pacman.d/mirrorlist if [ -f /var/lib/pacman/db.lck ];then rm /var/lib/pacman/db.lck fi # vollinstallation if [ "$vollinstallation" != "n" ] then check if [ "$vollinstallation" != "debug" ]; then standartinstallation fi checkend fi if [ "${version}" != "libre" ]; then #yaourtmanagerinstall #pacaurmanagerinstall aurmanagerinstall aurinstall pamac-aur aurinstall google-chrome aurinstall plymouth aurinstall plymouth-theme-dark-arch plymouth-set-default-theme -R dark-arch aurinstall snapd #if [ "${archchroot}" != "archchroot" ]; then #systemctl enable --now snapd.socket #if ! [ -d "/snap" ];then # ln -s /var/lib/snapd/snap /snap #fi #snap install spotify #if ! [ -f "/usr/bin/spotify" ];then # ln -s /var/lib/snapd/snap/bin/spotify /usr/bin/spotify #fi #if ! [ -f "/usr/share/applications/spotify_spotify.desktop" ];then # ln -s /var/lib/snapd/desktop/applications/spotify_spotify.desktop /usr/share/applications/spotify_spotify.desktop #fi #snap install skype #if ! [ -f "/usr/bin/skype" ];then # ln -s /var/lib/snapd/snap/bin/skype /usr/bin/skype #fi #if ! [ -f "/usr/share/applications/skype_skypeforlinux.desktop" ];then # ln -s /var/lib/snapd/desktop/applications/skype_skypeforlinux.desktop /usr/share/applications/skype_skypeforlinux.desktop #fi #else systemctl enable snapd.socket #fi fi echo "Packetliste2 Ende" echo "Beginne mit dem Konfigurieren des Systems :D" # .config tar -vxJf /opt/${repo}/.config.tar.xz -C /root/ gnomeconfig # set desktop echo "set desktop" # cp /opt/${repo}/xinitrc_${version}.txt /etc/X11/xinit/xinitrc # echo "Systemsprache und dienste werden erstellt!" mkdir -p /etc/X11/xorg.conf.d/ # localectl set-x11-keymap de pc105 nodeadkeys echo "Section \"InputClass\"" > /etc/X11/xorg.conf.d/20-keyboard.conf echo " Identifier \"Keyboard0\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf echo " MatchIsKeyboard \"yes\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf echo " Option \"XkbLayout\" \"de\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf echo " Option \"XkbModel\" \"pc105\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf echo " Option \"XkbVariant\" \"nodeadkeys\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf echo "EndSection" >> /etc/X11/xorg.conf.d/20-keyboard.conf #xset m 2/1 0 echo "Section \"InputClass\"" > /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo " Identifier \"Mouse0\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo " MatchIsPointer \"yes\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo "# set the following to 1 1 0 respectively to disable acceleration." >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo " Option \"AccelerationNumerator\" \"2\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo " Option \"AccelerationDenominator\" \"1\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo " Option \"AccelerationThreshold\" \"4\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf echo "EndSection" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf # set system startup files echo "System startup files" start=getty if [ "$start" == "getty" ] then echo "if [ \$(tty) = "/dev/tty1" ]; then" > /root/.bash_profile echo "startx" >> /root/.bash_profile echo "fi" >> /root/.bash_profile # echo "if [ \$(tty) = "/dev/tty1" ]; then" > /home/"$username"/.bash_profile echo "startx" >> /home/"$username"/.bash_profile echo "fi" >> /home/"$username"/.bash_profile # start=${username} if [ "$start" == "root" ] then mkdir -p /etc/systemd/system/getty\@tty1.service.d echo "[Service]" > /etc/systemd/system/getty\@tty1.service.d/autologin.conf echo "ExecStart=" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf echo "ExecStart=-/sbin/agetty --noclear -a root %I 38400 linux" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf systemctl enable getty@tty1 else mkdir -p /etc/systemd/system/getty\@tty1.service.d echo "[Service]" > /etc/systemd/system/getty\@tty1.service.d/autologin.conf echo "ExecStart=" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf echo "ExecStart=-/sbin/agetty --noclear -a "$username" %I 38400 linux" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf systemctl enable getty@tty1 fi elif [ "$start" == "xdm" ] then systemctl enable xdm elif [ "$start" == "lightdm" ] then systemctl enable lightdm.service elif [ "$start" == "exit" ] then exit 0 else echo "Kein Start gewählt!!!" fi if [ "${vollinstallation}" != "n" ]; then systemctl enable acpid systemctl enable ntpd systemctl enable avahi-daemon systemctl enable org.cups.cupsd.service systemctl enable sshd systemctl enable cronie systemctl enable systemd-timesyncd.service echo "Bitte OpenVPN config in die /etc/openvpn/client/client.conf kopieren!!!" if [ -f /lib/systemd/system/openvpn-client@client.service ]; then echo "link vorhanden!" else ln /lib/systemd/system/openvpn-client@.service /lib/systemd/system/openvpn-client@client.service fi #Bei ausdokumentierung wird eine/die VPN automatisch aus der /etc/openvpn/client/client.conf gestartet!!! #systemctl enable openvpn-client@client.service systemctl enable fail2ban systemctl disable dhcpcd systemctl enable NetworkManager.service fi # set systemconfiguration echo "systemconfiguration" # echo "LANG=de_DE.UTF-8" > /etc/locale.conf echo "LC_COLLATE=C" >> /etc/locale.conf echo "LANGUAGE=de_DE" >> /etc/locale.conf # echo "KEYMAP=de-latin1" > /etc/vconsole.conf echo "FONT=lat9w-16" >> /etc/vconsole.conf # echo "de_DE.UTF-8 UTF-8" > /etc/locale.gen echo "de_DE ISO-8859-1" >> /etc/locale.gen echo "de_DE@euro ISO-8859-15" >> /etc/locale.gen echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen # locale-gen # rm /etc/localtime ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime # custom-bereich vollinstallation if [ "${vollinstallation}" != "n" ]; then # custom-installer # pip install beautysh if [ -d /opt/beautysh ];then echo "Bereits vorhanden!!!" cd /opt/beautysh git pull else git clone https://github.com/bemeurer/beautysh /opt/beautysh fi cd /opt/beautysh python ./setup.py install if [ -f /usr/bin/beautysh ]; then echo "Bereits vorhanden!!!" else ln -s /opt/beautysh/beautysh/beautysh.py /usr/bin/beautysh fi chmod +x /usr/bin/beautysh cd / pip install powerline-shell # powerline-shell-fonts if [ -d /opt/powerline-shell-fonts ];then echo "Bereits vorhanden!!!" cd /opt/powerline-shell-fonts git pull else git clone https://github.com/powerline/fonts.git /opt/powerline-shell-fonts fi cd /opt/powerline-shell-fonts ./install.sh cd / # uncrustify if [ -d /opt/uncrustify ];then echo "Bereits vorhanden!!!" cd /opt/uncrustify git pull else git clone https://github.com/uncrustify/uncrustify.git /opt/uncrustify fi cd /opt/uncrustify mkdir -p build cd build cmake .. cmake --build . if [ -f /usr/bin/uncrustify ]; then echo "Bereits vorhanden!!!" else ln -s /opt/uncrustify/build/uncrustify /usr/bin/uncrustify fi chmod +x /usr/bin/uncrustify cd / # conky if [ -d /opt/conky ];then echo "Bereits vorhanden!!!" cd /opt/conky git pull else git clone https://github.com/brndnmtthws/conky.git /opt/conky fi cd /opt/conky cp cmake/ConkyBuildOptions.cmake . sed "s|option(BUILD_LUA_CAIRO \"Build cairo bindings for Lua\" false)|option(BUILD_LUA_CAIRO \"Build cairo bindings for Lua\" true)|g; s|option(BUILD_LUA_IMLIB2 \"Build Imlib2 bindings for Lua\" false)|option(BUILD_LUA_IMLIB2 \"Build Imlib2 bindings for Lua\" true)|g; s|option(BUILD_LUA_RSVG \"Build rsvg bindings for Lua\" false)|option(BUILD_LUA_RSVG \"Build rsvg bindings for Lua\" true)|g" ConkyBuildOptions.cmake > cmake/ConkyBuildOptions.cmake if [ -d build ];then rm -Rv build fi mkdir -p build cd build cmake .. make make install cd / # iso_name echo "${repo}-${version}" > /etc/hostname # uefi-boot cp /opt/${repo1}/uefi-boot.sh /usr/bin/uefi-boot chmod 755 /usr/bin/uefi-boot # write-partitions manager cp /opt/${repo}/write_cowspace /usr/bin/write_cowspace chmod 755 /usr/bin/write_cowspace # installer-/usr/bin/ cp /opt/${repo}/arch-install /usr/bin/arch-install chmod 755 /usr/bin/arch-install # installer mkdir -p /usr/share/applications/ mkdir -p /root/.config/xfce4/panel/launcher-29/ sed "s|%VERSION%|${version}|g;" /opt/${repo}/arch-install.desktop > /usr/share/applications/arch-install.desktop sed "s|%VERSION%|${version}|g;" /opt/${repo}/15196212071.desktop > /root/.config/xfce4/panel/launcher-29/15196212071.desktop sed "s|%VERSION%|${version}|g;" /opt/${repo}/15196212512.desktop > /root/.config/xfce4/panel/launcher-29/15196212512.desktop chmod 755 /usr/share/applications/arch-install.desktop chmod 755 /root/.config/xfce4/panel/launcher-29/15196212071.desktop chmod 755 /root/.config/xfce4/panel/launcher-29/15196212512.desktop # install-picture mkdir -p /usr/share/pixmaps/ cp /opt/${repo}/install.png /usr/share/pixmaps/ # background mkdir -p /usr/share/backgrounds/xfce/ cp /opt/${repo}/*.jpg /usr/share/backgrounds/xfce/ chmod 755 -Rv /usr/share/backgrounds/xfce/ # bash.bashrc sed "s|%OS_NAME%|${repo}|g;" /opt/${repo}/bash.bashrc > /etc/bash.bashrc cp /opt/${repo}/.bashrc /root/ # config.fish mkdir -p /root/.config/fish/ cp /opt/${repo}/config.fish /root/.config/fish/config.fish # btrfs-swapfile cp /opt/${repo}/btrfs-swapon.service /etc/systemd/system/ cp /opt/${repo}/btrfs-swapon /usr/bin/ chmod 755 /usr/bin/btrfs-swapon cp /opt/${repo}/btrfs-swapoff /usr/bin/ chmod 755 /usr/bin/btrfs-swapoff # compress-script cp /opt/${repo}/compress.sh /usr/bin/compress chmod 755 /usr/bin/compress # ssh cp /opt/${repo}/sshd_config /etc/ssh/sshd_config # .Xmodmap cp /opt/${repo}/.Xmodmap /root/ # packages cp /opt/${repo}/packages* /etc/ # snapshot.sh cp /opt/${repo}/snapshot.sh /usr/bin/snapshot chmod 755 /usr/bin/snapshot # .Conky tar -vxJf /opt/${repo}/.Conky.tar.xz -C /opt/ chmod 755 -Rv /opt/.Conky/ touch /root/notes.txt # .xscreensaver cp /opt/${repo}/.xscreensaver /root/ # hosts cp /opt/${repo}/hosts /etc/ # santana mkdir -p /usr/share/fonts/TTF/ tar -vxJf /opt/${repo}/santana.tar.xz -C /usr/share/fonts/TTF/ # update-script cp /opt/${repo}/update.sh /usr/bin/update-script chmod 755 /usr/bin/update-script # Verzeichnise mkdir -p /root/Downloads mkdir -p /root/Dokumente mkdir -p /root/Bilder mkdir -p /root/Musik mkdir -p /root/Videos # addusers.sh cp /opt/${repo}/addusers.sh /usr/bin/addusers chmod 755 /usr/bin/addusers # shell-fish chsh -s /usr/bin/fish root chsh -s /usr/bin/fish ${username} # Vibrancy Colors tar -vxJf /opt/${repo}/vibrancy-colors.tar.xz -C /usr/share/icons/ gtk-update-icon-cache /usr/share/icons/Vibrancy-Colors-Dark/ # XDG standard cp /opt/${repo}/mimeapps.list /etc/xdg/mimeapps.list fi # custom-bereich standart # nano echo "include "/usr/share/nano/*.nanorc"" > /etc/nanorc # htop echo "fields=0 48 17 18 38 39 40 2 46 47 49 1 sort_key=46 sort_direction=-1 hide_threads=0 hide_kernel_threads=1 hide_userland_threads=0 shadow_other_users=0 highlight_base_name=1 highlight_megabytes=1 highlight_threads=1 tree_view=1 header_margin=1 detailed_cpu_time=1 color_scheme=0 delay=15 left_meters=AllCPUs Memory Swap left_meter_modes=1 1 1 right_meters=Tasks LoadAverage Uptime right_meter_modes=2 2 2 " > /root/.htoprc # ssh mkdir -p /root/.ssh echo "ServerAliveInterval 120" > ~/.ssh/config echo "ServerAliveCountMax 15" >> ~/.ssh/config # Install rc.local echo "[Unit] Description=/etc/rc.local compatibility [Service] Type=oneshot ExecStart=/etc/rc.local RemainAfterExit=yes [Install] WantedBy=multi-user.target" > /etc/systemd/system/rc-local.service touch /etc/rc.local chmod +x /etc/rc.local systemctl enable rc-local.service if ! grep '#!' $RCLOCAL; then echo "#!/bin/bash" > $RCLOCAL fi echo "Bei bedarf pacman -Sc oder -Scc eingeben um [nicht mehr benötigte]/[alle] unnötige packete zu entfernen!!!" # #systemctl start ntpd #ntpd -gq #date #hwclock -w # pacman -Syu --needed --noconfirm copyconfig ldconfigcache if [ "${version}" == "libre" ]; then mkinitcpio -p linux-libre else mkinitcpio -p linux -c /etc/mkinitcpio.conf #mkinitcpio -p linux-lts -c /etc/mkinitcpio-lts.conf fi echo "Fertig!!!" exit 0