From 95f748f9301d4b9e16e4f6cd915ff931c20a8541 Mon Sep 17 00:00:00 2001 From: Kendall Whitman Date: Wed, 22 Apr 2026 18:16:04 -0500 Subject: [PATCH] update install config --- setup/arch/config.py | 6 +++++- setup/arch/install.py | 50 ++++++++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/setup/arch/config.py b/setup/arch/config.py index 7463220..e504f86 100644 --- a/setup/arch/config.py +++ b/setup/arch/config.py @@ -14,10 +14,12 @@ DIRECTORIES_TO_REMOVE = [ APPS = [ 'element-desktop', + 'fisher', 'flatpak', + 'freecad', 'libreoffice-fresh', 'librewolf-bin', - 'neovim-git', + 'neovim', 'proton-mail-bin', 'proton-vpn-gtk-app', 'rtorrent', @@ -25,6 +27,8 @@ APPS = [ 'stow', 'tmux', 'wl-clipboard', + 'gimp', + 'inkscape', ] DOTFILES = [ diff --git a/setup/arch/install.py b/setup/arch/install.py index 24963c4..67f7599 100644 --- a/setup/arch/install.py +++ b/setup/arch/install.py @@ -6,32 +6,30 @@ 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() == '': + if confirm_link.lower() in ("y", "yes", ""): target_dir = input("Specify the full path to the external storage: ") - def home_dir_item(item): - return Path(f"{Path.home()}/{item}") + if Path(target_dir).is_dir(): + for dir in config.DIRECTORIES: + DIR_ITEM = Path(f"{Path.home()}/{dir}") - 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 not DIR_ITEM.is_symlink(): + if DIR_ITEM.is_dir(): + DIR_ITEM.rmdir() + DIR_ITEM.symlink_to(f"{target_dir}/{dir}") - if HAS_HOME_DIR: - HOME_DIR_PATH.rmdir() + for dir in config.DIRECTORIES_TO_REMOVE: + DIR_ITEM = Path(f"{Path.home()}/{dir}") - 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() + 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']) + subprocess.run([ + 'sudo', 'pacman', '-S', f"{app}", '--noconfirm' + ], check=True) subprocess.run([ "fish", "-c", "fisher install jorgebucaran/nvm.fish" @@ -43,12 +41,20 @@ def install_apps(): def stow_dot_files(): + dotfiles_root = Path.home()/'.dotfiles' for dotfile in config.DOTFILES: - subprocess.run(['stow', f"../../{dotfile}", '--adopt']) + subprocess.run([ + 'stow', '-d', str(dotfiles_root), dotfile, '--adopt' + ], check=True) - subprocess.run(['git', 'checkout', '--', '.']) + subprocess.run( + ['git', 'checkout', '--', *config.DOTFILES], + cwd=dotfiles_root, + check=True, + ) -sym_link_dir() -install_apps() -stow_dot_files() +if __name__ == "__main__": + sym_link_dir() + install_apps() + stow_dot_files()