Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * thlinst.c Arch Linux installer Program
- * gcc thlinst.c -o thlinst
- * ./thlinst
- * The Tux Hat Linux Project By: Gary Perreault, Vince Ford, Cody & Will.
- * 2013-2021
- *
- *
- * Copyright (c) 2021, The Tux Hat Linux Project Team.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those
- * of the authors and should not be interpreted as representing official policies,
- * either expressed or implied, of the FreeBSD Project.
- */
- #include <unistd.h> // chdir
- #include <errno.h> // strerror
- #include <ncurses.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/utsname.h>
- #include <unistd.h>
- #include <string.h>
- #include <errno.h>
- #include <sys/wait.h>
- #define RED "\x1b[31m" // Colours for the logo to make it pretty!
- #define GREEN "\x1b[32m"
- #define BLUE "\x1b[34m"
- #define RESET "\x1b[0m"
- /* Tux Hat Linux Installer Banner */
- void print_logo(){
- printf(GREEN"╔═══════════════════════════════════════════════════════════════════╗\n");
- printf(GREEN"║ Tux Hat Linux Base Installer "GREEN"║\n");
- printf(GREEN"║ (c) 2021 - FreeBSD Licensed "GREEN"║\n");
- printf(GREEN"║ By: Gary Perreault "GREEN"║\n");
- printf(GREEN"╚═══════════════════════════════════════════════════════════════════╝"RESET"\n");
- printf("\n\n");
- printf(GREEN" Welcome to the THL Arch Linux Installer Program, the system will pacman update --> upgrade --> copy the packages & programs + configuration . . ."GREEN"\n");
- printf("\n\n");
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- }
- /* This function does pacman -Syy to update Arch Linux */
- void pacman_update(){
- printf("\n\n");
- printf(BLUE"Arch Linux is about to Pacman Update .. ");
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- printf("\n\n");
- char *argv[] = {
- "pacman", "-Syy",
- 0,
- };
- pid_t pid = fork();
- if(pid == 0) {
- execv("/usr/bin/pacman", argv);
- }
- else {
- waitpid(pid, NULL, 0);
- }
- }
- /* This function does pacman -Syu to upgrade Arch Linux */
- void pacman_upgrade(){
- printf("\n\n");
- printf(BLUE"Pacman Upgrade .. ");
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- printf("\n\n");
- char *argv[] = {
- "pacman", "-Syu",
- 0,
- };
- pid_t pid = fork();
- if(pid == 0) {
- execv("/usr/bin/pacman", argv);
- }
- else {
- waitpid(pid, NULL, 0);
- }
- }
- /* This function does pacman -S to all the packages you need for the Skel */
- void base_inst(){
- printf("\n\n");
- printf(BLUE"This is the Base Packages for Arch Linux base, base-devel, Grub, Gnome, GDM, Drivers, Kernel, wayland & X11, and extra useful packages .. ");
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- printf("\n\n");
- char *argv[] = {
- "pacman", "-S",
- "base",
- "base-devel",
- "linux-firmware",
- "nano",
- "gnome",
- "gdm",
- "intel-ucode",
- "geany",
- "vim",
- "intel-media-driver",
- "firefox",
- "libva-intel-driver",
- "openshot",
- "mc",
- "zsh",
- "gimp",
- "alsa-utils",
- "pulseaudio",
- "pulseaudio-bluetooth",
- "bluez",
- "bluez-utils",
- "git",
- "neofetch",
- "mc",
- "tmux",
- "scrot",
- "grub",
- "efibootmgr",
- "networkmanager",
- "network-manager-applet",
- "dialog",
- "wpa_supplicant",
- "xdg-utils",
- "xdg-user-dirs",
- "inetutils",
- 0,
- };
- pid_t pid = fork();
- if(pid == 0) {
- execv("/usr/bin/pacman", argv);
- }
- else {
- waitpid(pid, NULL, 0);
- }
- }
- /* This Function will run 4 runlevel of cp -v of 4 files being copied to /usr/local/bin for bsdboxdwm status*/
- void yay_inst(){
- printf("\n\n");
- printf(BLUE"To install packages from AUR you need to install Yay Package Manager. . .");
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- printf("\n\n");
- char buf[256];
- char *argv[] = {
- "git", "clone", "https://aur.archlinux.org/yay.git",
- 0,
- };
- pid_t pid = fork();
- if(pid == 0) {
- execv("/bin/git", argv);
- }
- else {
- waitpid(pid, NULL, 0);
- }
- }
- // ... cd yay
- void cd_yay(){
- printf(RED" PLEASE HIT "GREEN"ENTER"RED" TO PROCEED."GREEN"\n");
- getchar();
- char *dir = "yay"; // cd to yay <dir>
- int ret;
- ret = chdir (dir);
- if (ret){ // same as ret!=0, means an error occurred and errno is set
- fprintf(stderr, "error: %s\n", strerror(errno));
- }
- }
- void mkpkg_yay(){
- char buf[256];
- char *argv[] = {
- "makepkg", "-sri", "--noconfirm", "--needed",
- 0,
- };
- pid_t pid = fork();
- if(pid == 0) {
- execv("makepkg", argv);
- }
- else {
- waitpid(pid, NULL, 0);
- }
- }
- /* This function just thank you for trying out the project ;) */
- void thank_you(){
- printf("\n\n");
- printf(RED"Thank You for trying out "BLUE"Tux Hat Linux"RED"!"RESET"\n");
- printf("\n\n");
- }
- int main( int argc, char **argv ){
- print_logo();
- pacman_update();
- pacman_upgrade();
- base_inst();
- yay_inst();
- cd_yay();
- mkpkg_yay();
- thank_you();
- return 0;
- }
Add Comment
Please, Sign In to add comment