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() in ("y", "yes", ""): target_dir = input("Specify the full path to the external storage: ") if Path(target_dir).is_dir(): for dir in config.DIRECTORIES: DIR_ITEM = Path(f"{Path.home()}/{dir}") if not DIR_ITEM.is_symlink(): if DIR_ITEM.is_dir(): DIR_ITEM.rmdir() DIR_ITEM.symlink_to(f"{target_dir}/{dir}") for dir in config.DIRECTORIES_TO_REMOVE: DIR_ITEM = Path(f"{Path.home()}/{dir}") if DIR_ITEM.is_dir() and not DIR_ITEM.is_symlink(): DIR_ITEM.rmdir() def install_apps(): for app in config.APPS: subprocess.run([ 'sudo', 'pacman', '-S', f"{app}", '--noconfirm' ], check=True) subprocess.run([ "fish", "-c", "fisher install jorgebucaran/nvm.fish" ], check=True) subprocess.run([ "fish", "-c", "nvm install lts" ], check=True) def stow_dot_files(): dotfiles_root = Path.home()/'.dotfiles' for dotfile in config.DOTFILES: subprocess.run([ 'stow', '-d', str(dotfiles_root), dotfile, '--adopt' ], check=True) subprocess.run( ['git', 'checkout', '--', *config.DOTFILES], cwd=dotfiles_root, check=True, ) if __name__ == "__main__": sym_link_dir() install_apps() stow_dot_files()