import subprocess import config from pathlib import Path def sym_link_dir(): confirm_link = input("Do you want to link home directories to external storage? (Y/n): ") if confirm_link.lower() == "y" or confirm_link.lower() == '': target_dir = input("Specify the full path to the external storage: ") def home_dir_item(item): return Path(f"{Path.home()}/{item}") for dir in config.DIRECTORIES: HOME_DIR_PATH = home_dir_item(dir) TARGET_SYMLINK_DIR = f"{target_dir}/{dir}" HAS_HOME_DIR = HOME_DIR_PATH.is_dir() IS_SYMLINK = HOME_DIR_PATH.is_symlink() if HAS_HOME_DIR: HOME_DIR_PATH.rmdir() if not IS_SYMLINK: HOME_DIR_PATH.symlink_to(TARGET_SYMLINK_DIR) for dir in config.DIRECTORIES_TO_REMOVE: if home_dir_item(dir).is_dir(): home_dir_item(dir).rmdir() def install_apps(): for app in config.APPS: subprocess.run(['sudo', 'pacman', '-S', f"{app}", '--noconfirm']) subprocess.run([ "fish", "-c", "fisher install jorgebucaran/nvm.fish" ], check=True) subprocess.run([ "fish", "-c", "nvm install lts" ], check=True) def install_flatpak_apps(): for app in config.FLATPAK_APPS: subprocess.run(['flatpak', 'install', f"{app}"]) def stow_dot_files(): for dotfile in config.DOTFILES: subprocess.run(['stow', f"{dotfile}", '--adopt']) subprocess.run(['git', 'checkout', '--', '.']) sym_link_dir() install_apps() install_flatpak_apps() stow_dot_files()