Compare commits

...
Sign in to create a new pull request.

5 commits
master ... dev

Author SHA1 Message Date
Blake Ridgway
832270c4ef (feat): Removed all unneeded files 2024-09-16 06:15:18 -05:00
Blake Ridgway
d59b963905 (feat): working on rust build of dotfiles 2024-09-16 06:01:52 -05:00
Blake Ridgway
a13f95c036 (feat): working on rust build of dotfiles 2024-09-16 06:01:18 -05:00
Blake Ridgway
54c0b7dee4 (feat): Add target folder to gitignore 2024-09-16 06:01:00 -05:00
Blake Ridgway
b42c8addaa (chore): Fix some styling 2024-09-16 05:59:53 -05:00
5 changed files with 259 additions and 79 deletions

View file

@ -10,3 +10,4 @@ tags
tmp/**/*
!tmp/cache/.keep
gitconfig
rust_build/target/*

View file

@ -6,19 +6,19 @@
# Function to detect the Linux distribution
detect_linux_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$ID"
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
echo "$DISTRIBUTOR_ID"
elif [ -f /etc/debian_version ]; then
echo "debian"
elif [ -f /etc/redhat-release ]; then
echo "redhat"
else
echo "unknown"
fi
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$ID"
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
echo "$DISTRIBUTOR_ID"
elif [ -f /etc/debian_version ]; then
echo "debian"
elif [ -f /etc/redhat-release ]; then
echo "redhat"
else
echo "unknown"
fi
}
# Detect the Linux distribution
@ -26,52 +26,53 @@ DISTRO=$(detect_linux_distro)
# Determine the appropriate package manager
case "$DISTRO" in
fedora|rhel|centos)
PACKAGE_MANAGER="dnf"
;;
debian|ubuntu|pop)
PACKAGE_MANAGER="apt"
;;
*)
echo "Unsupported distribution: $DISTRO"
exit 1
;;
fedora | rhel | centos)
PACKAGE_MANAGER="dnf"
;;
debian | ubuntu | pop)
PACKAGE_MANAGER="apt"
;;
*)
echo "Unsupported distribution: $DISTRO"
exit 1
;;
esac
# Update system before installing packages
if [ "$PACKAGE_MANAGER" == "dnf" ]; then
sudo dnf update && sudo dnf upgrade
sudo dnf update && sudo dnf upgrade
elif [ "$PACKAGE_MANAGER" == "apt" ]; then
sudo apt update && sudo apt upgrade -y
sudo apt update && sudo apt upgrade -y
fi
# Setup Flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
PACKAGE_LIST=(
btop
curl
git
gh
fd-find
flatpak
libfontconfig-dev
libssl-dev
neofetch
python3
python3-pip
ripgrep
virt-manager
zsh
btop
curl
git
gh
fd-find
flatpak
libfontconfig-dev
libssl-dev
neofetch
python3
python3-pip
ripgrep
virt-manager
zsh
)
FLATPAK_LIST=(
com.bitwarden.desktop
com.github.tchx84.Flatseal
com.valvesoftware.Steam
net.davidotek.pupgui2
net.veloren.airshipper
org.videolan.VLC
com.bitwarden.desktop
com.discordapp.Discord
com.github.tchx84.Flatseal
com.valvesoftware.Steam
net.davidotek.pupgui2
net.veloren.airshipper
org.videolan.VLC
)
echo #######################
@ -79,33 +80,33 @@ echo # Installing Packages #
echo #######################
for package_name in ${PACKAGE_LIST[@]}; do
if [ "$PACKAGE_MANAGER" == "dnf" ]; then
if ! dnf list --installed | grep -q "^\<$package_name\>"; then
echo "Installing $package_name..."
sleep .5
sudo dnf install "$package_name" -y
echo "$package_name has been installed"
else
echo "$package_name already installed"
fi
elif [ "$PACKAGE_MANAGER" == "apt" ]; then
if ! dpkg -l | grep -q "^\<ii\> $package_name"; then
echo "Installing $package_name..."
sleep .5
sudo apt install "$package_name" -y
echo "$package_name has been installed"
else
echo "$package_name already installed"
fi
if [ "$PACKAGE_MANAGER" == "dnf" ]; then
if ! dnf list --installed | grep -q "^\<$package_name\>"; then
echo "Installing $package_name..."
sleep .5
sudo dnf install "$package_name" -y
echo "$package_name has been installed"
else
echo "$package_name already installed"
fi
elif [ "$PACKAGE_MANAGER" == "apt" ]; then
if ! dpkg -l | grep -q "^\<ii\> $package_name"; then
echo "Installing $package_name..."
sleep .5
sudo apt install "$package_name" -y
echo "$package_name has been installed"
else
echo "$package_name already installed"
fi
fi
done
for flatpak_name in ${FLATPAK_LIST[@]}; do
if ! flatpak list | grep -q $flatpak_name; then
flatpak install "$flatpak_name" -y
else
echo "$flatpak_name already installed"
fi
if ! flatpak list | grep -q $flatpak_name; then
flatpak install "$flatpak_name" -y
else
echo "$flatpak_name already installed"
fi
done
echo ###################
@ -131,14 +132,12 @@ mkdir -p ~/.local/share/fonts && cp Hack/HackNerdFont-Regular.ttf ~/.local/share
fc-cache -f -v
rm -rf Hack*
echo ######################
echo # Installing OhMyZSH #
echo ######################
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
echo ###################
echo # Install Rust Up #
echo ###################
@ -161,13 +160,13 @@ cp terminal/starship.toml ~/.config/starship.toml
FILES=('vimrc' 'vim' 'zshrc' 'zsh' 'agignore' 'gitconfig' 'gitignore' 'gitmessage' 'aliases')
for file in ${FILES[@]}; do
echo ""
echo "Simlinking $file to $HOME"
ln -sf "$PWD/$file" "$HOME/.$file"
if [ $? -eq 0 ]; then
echo "$PWD/$file ~> $HOME/.$file"
else
echo 'Install failed to symlink.'
exit 1
fi
echo ""
echo "Simlinking $file to $HOME"
ln -sf "$PWD/$file" "$HOME/.$file"
if [ $? -eq 0 ]; then
echo "$PWD/$file ~> $HOME/.$file"
else
echo 'Install failed to symlink.'
exit 1
fi
done

7
rust_build/Cargo.lock generated Normal file
View file

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "rust_build"
version = "0.1.0"

6
rust_build/Cargo.toml Normal file
View file

@ -0,0 +1,6 @@
[package]
name = "rust_build"
version = "0.1.0"
edition = "2021"
[dependencies]

167
rust_build/src/main.rs Normal file
View file

@ -0,0 +1,167 @@
use std::env;
use std::fs;
use std::process::Command;
use std::io::Write;
fn main() {
// Function to detect the Linux distribution
fn detect_linux_distro() -> String {
if let Ok(os_release) = fs::read_to_string("/etc/os-release") {
for line in os_release.lines() {
if line.starts_with("ID=") {
return line.split('=').nth(1).unwrap_or("unknown").trim_matches('"').to_string();
}
}
} else if let Ok(lsb_release) = fs::read_to_string("/etc/lsb-release") {
for line in lsb_release.lines() {
if line.starts_with("DISTRIBUTOR_ID=") {
return line.split('=').nth(1).unwrap_or("unknown").trim_matches('"').to_string();
}
}
} else if fs::metadata("/etc/debian_version").is_ok() {
return "debian".to_string();
} else if fs::metadata("/etc/redhat-release").is_ok() {
return "redhat".to_string();
}
"unknown".to_string()
}
// Detect the Linux distribution
let distro = detect_linux_distro();
let package_manager = match distro.as_str() {
"fedora" | "rhel" | "centos" => "dnf",
"debian" | "ubuntu" | "pop" => "apt",
_ => {
eprintln!("Unsupported distribution: {}", distro);
std::process::exit(1);
}
};
// Update system before installing packages
if package_manager == "dnf" {
Command::new("sudo").arg("dnf").arg("update").status().expect("Failed to update");
Command::new("sudo").arg("dnf").arg("upgrade").status().expect("Failed to upgrade");
} else if package_manager == "apt" {
Command::new("sudo").arg("apt").arg("update").status().expect("Failed to update");
Command::new("sudo").arg("apt").arg("upgrade").arg("-y").status().expect("Failed to upgrade");
}
// Setup Flatpak
Command::new("flatpak").arg("remote-add").arg("--if-not-exists").arg("flathub").arg("https://dl.flathub.org/repo/flathub.flatpakrepo").status().expect("Failed to add Flatpak remote");
let package_list = [
"btop", "curl", "git", "gh", "fd-find", "flatpak",
"libfontconfig-dev", "libssl-dev", "neofetch", "python3",
"python3-pip", "ripgrep", "virt-manager", "zsh"
];
let flatpak_list = [
"com.bitwarden.desktop", "com.github.tchx84.Flatseal", "com.valvesoftware.Steam",
"net.davidotek.pupgui2", "net.veloren.airshipper", "org.videolan.VLC"
];
println!("#######################");
println!("# Installing Packages #");
println!("#######################");
for package_name in &package_list {
if package_manager == "dnf" {
let output = Command::new("dnf").arg("list").arg("--installed").output().expect("Failed to list installed packages");
if !String::from_utf8_lossy(&output.stdout).contains(package_name) {
println!("Installing {}...", package_name);
std::thread::sleep(std::time::Duration::from_millis(500));
Command::new("sudo").arg("dnf").arg("install").arg(package_name).arg("-y").status().expect("Failed to install package");
println!("{} has been installed", package_name);
} else {
println!("{} already installed", package_name);
}
} else if package_manager == "apt" {
let output = Command::new("dpkg").arg("-l").output().expect("Failed to list installed packages");
if !String::from_utf8_lossy(&output.stdout).contains(package_name) {
println!("Installing {}...", package_name);
std::thread::sleep(std::time::Duration::from_millis(500));
Command::new("sudo").arg("apt").arg("install").arg(package_name).arg("-y").status().expect("Failed to install package");
println!("{} has been installed", package_name);
} else {
println!("{} already installed", package_name);
}
}
}
for flatpak_name in &flatpak_list {
let output = Command::new("flatpak").arg("list").output().expect("Failed to list Flatpak applications");
if !String::from_utf8_lossy(&output.stdout).contains(flatpak_name) {
Command::new("flatpak").arg("install").arg(flatpak_name).arg("-y").status().expect("Failed to install Flatpak application");
} else {
println!("{} already installed", flatpak_name);
}
}
println!("###################");
println!("# Setting up NVIM #");
println!("###################");
Command::new("curl").arg("-LO").arg("https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz").status().expect("Failed to download NVIM");
Command::new("sudo").arg("rm").arg("-rf").arg("/opt/nvim").status().expect("Failed to remove existing NVIM installation");
Command::new("sudo").arg("tar").arg("-C").arg("/opt").arg("-xzf").arg("nvim-linux64.tar.gz").status().expect("Failed to extract NVIM");
println!("##########");
println!("# pynvim #");
println!("##########");
Command::new("/usr/bin/python3").arg("-m").arg("pip").arg("install").arg("pynvim").status().expect("Failed to install pynvim");
println!("#####################");
println!("# Install Nerd Font #");
println!("#####################");
Command::new("wget").arg("https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/Hack.zip").status().expect("Failed to download Nerd Font");
Command::new("unzip").arg("Hack.zip").arg("-d").arg("Hack").status().expect("Failed to unzip Nerd Font");
fs::create_dir_all("~/.local/share/fonts").expect("Failed to create fonts directory");
fs::copy("Hack/HackNerdFont-Regular.ttf", "~/.local/share/fonts/HackNerdFont-Regular.ttf").expect("Failed to copy Nerd Font");
Command::new("fc-cache").arg("-f").arg("-v").status().expect("Failed to update font cache");
fs::remove_dir_all("Hack*").expect("Failed to remove temporary Hack directory");
println!("######################");
println!("# Installing OhMyZSH #");
println!("######################");
Command::new("sh").arg("-c").arg("$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)").status().expect("Failed to install OhMyZSH");
println!("###################");
println!("# Install Rust Up #");
println!("###################");
Command::new("curl").arg("--proto").arg("'=https'").arg("--tlsv1.2").arg("-sSf").arg("https://sh.rustup.rs").arg("|").arg("sh").status().expect("Failed to install Rust Up");
println!("##################");
println!("# Setup Starship #");
println!("##################");
Command::new("curl").arg("-sS").arg("https://starship.rs/install.sh").arg("|").arg("sh").status().expect("Failed to install Starship");
println!("###############");
println!("# Config File #");
println!("###############");
fs::copy("terminal/starship.toml", "~/.config/starship.toml").expect("Failed to copy starship config");
// Symlink files
let files = [
"vimrc", "vim", "zshrc", "zsh", "agignore",
"gitconfig", "gitignore", "gitmessage", "aliases"
];
for file in &files {
let src = format!("{}/{}", env::current_dir().unwrap().display(), file);
let dest = format!("{}/.{}", env::var("HOME").unwrap(), file);
println!("\nSimlinking {} to {}", src, dest);
if let Err(_) = Command::new("ln").arg("-sf").arg(&src).arg(&dest).status() {
eprintln!("Failed to symlink {}", file);
std::process::exit(1);
} else {
println!("{} ~> {}", src, dest);
}
}
}