Working
This commit is contained in:
		
							parent
							
								
									235e2b7402
								
							
						
					
					
						commit
						70838875e6
					
				
							
								
								
									
										17
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -15,6 +15,23 @@ RUN echo "cat tforgione.sh | bash" > /home/tester/.bash_history | |||||||
| 
 | 
 | ||||||
| CMD ["bash"] | CMD ["bash"] | ||||||
| 
 | 
 | ||||||
|  | # Test on ubuntu | ||||||
|  | FROM ubuntu:24.04 AS ubuntu-user | ||||||
|  | 
 | ||||||
|  | RUN \ | ||||||
|  |     apt update -y && \ | ||||||
|  |     apt install sudo curl -y && \ | ||||||
|  |     useradd -m tester && \ | ||||||
|  |     echo tester:tester | chpasswd && \ | ||||||
|  |     usermod -aG sudo tester | ||||||
|  | 
 | ||||||
|  | USER tester | ||||||
|  | WORKDIR /home/tester | ||||||
|  | COPY ./tforgione.sh /home/tester/tforgione.sh | ||||||
|  | RUN echo "cat tforgione.sh | bash" > /home/tester/.bash_history | ||||||
|  | 
 | ||||||
|  | CMD ["bash"] | ||||||
|  | 
 | ||||||
| # Test on archlinux | # Test on archlinux | ||||||
| FROM archlinux AS archlinux-user | FROM archlinux AS archlinux-user | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,6 +5,11 @@ debian() { | |||||||
|     docker container run -it debian-user bash |     docker container run -it debian-user bash | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | ubuntu() { | ||||||
|  |     docker build . --tag ubuntu-user --target ubuntu-user --debug | ||||||
|  |     docker container run -it ubuntu-user bash | ||||||
|  | } | ||||||
|  | 
 | ||||||
| archlinux() { | archlinux() { | ||||||
|     docker build . --tag archlinux-user --target archlinux-user --debug |     docker build . --tag archlinux-user --target archlinux-user --debug | ||||||
|     docker container run -it archlinux-user bash |     docker container run -it archlinux-user bash | ||||||
|  | |||||||
							
								
								
									
										98
									
								
								tforgione.sh
									
									
									
									
									
								
							
							
						
						
									
										98
									
								
								tforgione.sh
									
									
									
									
									
								
							| @ -61,7 +61,7 @@ should_install_neovim=0 | |||||||
| should_install_rust=0 | should_install_rust=0 | ||||||
| should_install_nodejs=0 | should_install_nodejs=0 | ||||||
| should_install_python=0 | should_install_python=0 | ||||||
| should_install_hyrpland=0 | should_install_hyprland=0 | ||||||
| 
 | 
 | ||||||
| find_os() { | find_os() { | ||||||
|     apt --version > /dev/null 2>&1 |     apt --version > /dev/null 2>&1 | ||||||
| @ -205,9 +205,8 @@ debug() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| run() { | run() { | ||||||
|     packags=() |     packages=() | ||||||
|     python_packages=(pip) |     python_packages=() | ||||||
|     python_packages+=(venv) |  | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_git -eq 1 ]; then |     if [ $should_install_git -eq 1 ]; then | ||||||
|         packages+=(git) |         packages+=(git) | ||||||
| @ -217,28 +216,22 @@ run() { | |||||||
|         packages+=(zsh) |         packages+=(zsh) | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_dotfiles -eq 1 ]; then |     if [ $should_install_neovim -eq 1 ]; then | ||||||
|  |         if [ $has_pacman -eq 1 ]; then | ||||||
|             packages+=(neovim) |             packages+=(neovim) | ||||||
|         fi |         fi | ||||||
|  |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_nodejs -eq 1 ]; then |     if [ $should_install_nodejs -eq 1 ]; then | ||||||
|         packages+=(nodejs) |         packages+=(nodejs) | ||||||
|         packages+=(npm) |  | ||||||
|     fi |  | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_rust -eq 1 ]; then |         if [ $has_pacman -eq 1 ]; then | ||||||
|         if [ $has_apt -eq 1 ]; then |             packages+=(npm) | ||||||
|             packages+=(build-essential) |  | ||||||
|             packages+=(pkg-config) |  | ||||||
|             packages+=(libssl-dev) |  | ||||||
|         elif [ $has_pacman -eq 1 ]; then |  | ||||||
|             packages+=(base) |  | ||||||
|             packages+=(base-devel) |  | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_python ]; then |     if [ $should_install_python ]; then | ||||||
| 
 |         # Install python | ||||||
|         if [ $has_apt -eq 1 ]; then |         if [ $has_apt -eq 1 ]; then | ||||||
|             packages+=(python3) |             packages+=(python3) | ||||||
|             packages+=(python-is-python3) |             packages+=(python-is-python3) | ||||||
| @ -246,9 +239,13 @@ run() { | |||||||
|             packages+=(python3-venv) |             packages+=(python3-venv) | ||||||
|         elif [ $has_pacman -eq 1 ]; then |         elif [ $has_pacman -eq 1 ]; then | ||||||
|             packages+=(python) |             packages+=(python) | ||||||
|             packages+=(python-venv) |  | ||||||
|         fi |         fi | ||||||
| 
 | 
 | ||||||
|  |         # Install some python plugins that work well with neovim if necessary | ||||||
|  |         if [ $should_install_neovim -eq 1 ]; then | ||||||
|  |             python_packages+=(pycodestyle) | ||||||
|  |             python_packages+=("python-lsp-server[all]") | ||||||
|  |         fi | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_hyprland -eq 1 ]; then |     if [ $should_install_hyprland -eq 1 ]; then | ||||||
| @ -265,13 +262,35 @@ run() { | |||||||
|         python_packages+=(psutil) |         python_packages+=(psutil) | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  |     # Add apt repository for recent nodejs for debian | ||||||
|  |     if [ $should_install_nodejs -eq 1 ] && [ $has_apt -eq 1 ]; then | ||||||
|  |         curl -fsSL https://deb.nodesource.com/setup_current.x | sudo bash | ||||||
|  |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $has_apt -eq 1 ]; then |     if [ $has_apt -eq 1 ]; then | ||||||
|         sudo apt install -y ${packages[@]} |         sudo apt install -y ${packages[@]} | ||||||
|  | 
 | ||||||
|  |         if [ $should_install_neovim ]; then | ||||||
|  |             # Install neovim from github to get latest version | ||||||
|  |             curl -L https://github.com/neovim/neovim/releases/download/stable/nvim-linux-x86_64.tar.gz -o tmp.tar.gz | ||||||
|  |             sudo tar xf tmp.tar.gz -C / --strip-components=1 | ||||||
|  |             rm tmp.tar.gz | ||||||
|  |         fi | ||||||
|     elif [ $has_pacman -eq 1 ]; then |     elif [ $has_pacman -eq 1 ]; then | ||||||
|         sudo pacman -Sy ${packages[@]} --noconfirm |         sudo pacman -Sy ${packages[@]} --noconfirm --needed | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  |     if [ $should_install_dotfiles ]; then | ||||||
|  |         sudo chsh $USER -s /bin/zsh | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # Prepare venv for python | ||||||
|  |     if [ $should_install_python -eq 1 ]; then | ||||||
|  |         python -m venv $HOME/.venv | ||||||
|  |         VIRTUAL_ENV=$HOME/.venv $HOME/.venv/bin/pip install ${python_packages[@]} | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # Configure dotfiles | ||||||
|     if [ $should_install_dotfiles -eq 1 ]; then |     if [ $should_install_dotfiles -eq 1 ]; then | ||||||
|         if [ ! -d $HOME/.config/ohmyzsh ]; then |         if [ ! -d $HOME/.config/ohmyzsh ]; then | ||||||
|             git clone https://github.com/ohmyzsh/ohmyzsh $HOME/.config/ohmyzsh |             git clone https://github.com/ohmyzsh/ohmyzsh $HOME/.config/ohmyzsh | ||||||
| @ -279,11 +298,9 @@ run() { | |||||||
|         if [ ! -d $HOME/.config/dotfiles ]; then |         if [ ! -d $HOME/.config/dotfiles ]; then | ||||||
|             git clone https://gitea.tforgione.fr/tforgione/dotfiles $HOME/.config/dotfiles |             git clone https://gitea.tforgione.fr/tforgione/dotfiles $HOME/.config/dotfiles | ||||||
|         fi |         fi | ||||||
|         sudo chsh $USER -s /bin/zsh |  | ||||||
| 
 | 
 | ||||||
|         ln -s $HOME/.config/dotfiles/zshrc $HOME/.zshrc |         ln -s $HOME/.config/dotfiles/zshrc $HOME/.zshrc | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|         if [ $should_install_update_remainder -eq 1 ]; then |         if [ $should_install_update_remainder -eq 1 ]; then | ||||||
| 
 | 
 | ||||||
|             echo "# Checks that the update is done weekly, if its not done, prints a nice message" >> $HOME/.config/dotfiles/zsh/extraconfig.zsh |             echo "# Checks that the update is done weekly, if its not done, prints a nice message" >> $HOME/.config/dotfiles/zsh/extraconfig.zsh | ||||||
| @ -295,14 +312,16 @@ run() { | |||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [ $should_install_nodejs -eq 1 ]; then |     # Configure hyprland | ||||||
|         mkdir -p $HOME/.npmbin |     if [ $should_install_hyprland -eq 1 ]; then | ||||||
|         npm config set prefix $HOME/.npmbin |         ln -s $HOME/.config/dotfiles/hypr $HOME/.config/hypr | ||||||
|         npm install -g npm |         ln -s $HOME/.config/dotfiles/hypr/waybar $HOME/.config/waybar | ||||||
|         sudo apt purge npm -y | 
 | ||||||
|         sudo apt autoremove -y |         touch $HOME/.config/dotfiles/hypr/exec-once.conf | ||||||
|  |         touch $HOME/.config/dotfiles/hypr/monitors.conf | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  |     # Configure neovim | ||||||
|     if [ $should_install_neovim -eq 1 ]; then |     if [ $should_install_neovim -eq 1 ]; then | ||||||
|         # Create config files an directories |         # Create config files an directories | ||||||
|         mkdir -p $HOME/.nvim/backups $HOME/.nvim/swp $HOME/.nvim/undo |         mkdir -p $HOME/.nvim/backups $HOME/.nvim/swp $HOME/.nvim/undo | ||||||
| @ -317,11 +336,18 @@ run() { | |||||||
|         nvim +PlugInstall +qa |         nvim +PlugInstall +qa | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  |     # Configure nodejs | ||||||
|  |     if [ $should_install_nodejs -eq 1 ]; then | ||||||
|  |         mkdir -p $HOME/.npmbin | ||||||
|  |         npm config set prefix $HOME/.npmbin | ||||||
|  |         npm install -g npm | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # Configure rust | ||||||
|     if [ $should_install_rust -eq 1 ]; then |     if [ $should_install_rust -eq 1 ]; then | ||||||
|         curl https://sh.rustup.rs -sSf | sh -s -- --no-modify-path -y |         curl https://sh.rustup.rs -sSf | sh -s -- --no-modify-path -y | ||||||
|         export PATH=$HOME/.cargo/bin:$PATH |         export PATH=$HOME/.cargo/bin:$PATH | ||||||
|         rustup component add rust-analyzer |         rustup component add rust-analyzer | ||||||
|         cargo install cargo-update |  | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -340,6 +366,21 @@ banner() { | |||||||
|     echo -e "└───────────────────────────────────────────────────────────────────────────────────────────┘\x1b[0m" |     echo -e "└───────────────────────────────────────────────────────────────────────────────────────────┘\x1b[0m" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | ending_banner() { | ||||||
|  |     echo -e "\x1b[32;1m┌───────────────────────────────────────────────────────────────────────────────────────────┐" | ||||||
|  |     echo "│    _    __                _                  _       _           _        _ _             │" | ||||||
|  |     echo "│   | |  / _|              (_)                ( )     (_)         | |      | | |            │" | ||||||
|  |     echo "│   | |_| |_ ___  _ __ __ _ _  ___  _ __   ___|/ ___   _ _ __  ___| |_ __ _| | | ___ _ __   │" | ||||||
|  |     echo "│   | __|  _/ _ \| '__/ _\` | |/ _ \| '_ \ / _ \ / __| | | '_ \/ __| __/ _\` | | |/ _ \ '__|  │" | ||||||
|  |     echo "│   | |_| || (_) | | | (_| | | (_) | | | |  __/ \__ \ | | | | \__ \ || (_| | | |  __/ |     │" | ||||||
|  |     echo "│    \__|_| \___/|_|  \__, |_|\___/|_| |_|\___| |___/ |_|_| |_|___/\__\__,_|_|_|\___|_|     │" | ||||||
|  |     echo "│                      __/ |                                                                │" | ||||||
|  |     echo "│                     |___/                                                                 │" | ||||||
|  |     echo "├───────────────────────────────────────────────────────────────────────────────────────────┤" | ||||||
|  |     echo "│                      TFORGIONE'S DOTFILES INSTALLED! HAVE A GREAT DAY!                    │" | ||||||
|  |     echo -e "└───────────────────────────────────────────────────────────────────────────────────────────┘\x1b[0m" | ||||||
|  | } | ||||||
|  | 
 | ||||||
| main() { | main() { | ||||||
|     banner |     banner | ||||||
|     find_os |     find_os | ||||||
| @ -351,11 +392,14 @@ main() { | |||||||
|     ask_for_dotfiles |     ask_for_dotfiles | ||||||
|     ask_for_neovim |     ask_for_neovim | ||||||
|     ask_for_rust |     ask_for_rust | ||||||
|  |     ask_for_python | ||||||
|     ask_for_nodejs |     ask_for_nodejs | ||||||
|     ask_for_hyprland |     ask_for_hyprland | ||||||
| 
 | 
 | ||||||
|     debug |     debug | ||||||
|     run |     run | ||||||
|  | 
 | ||||||
|  |     ending_banner | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| main < /dev/tty | main < /dev/tty | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user