machineconfig 6.23__py3-none-any.whl → 8.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +16 -221
- machineconfig/cluster/sessions_managers/wt_local_manager.py +55 -193
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +3 -3
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +5 -3
- machineconfig/cluster/sessions_managers/zellij_remote.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -7
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_with_panes.py +1 -1
- machineconfig/jobs/installer/check_installations.py +0 -1
- machineconfig/jobs/installer/installer_data.json +1408 -201
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +63 -92
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/python_scripts/boxes.py +61 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
- machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +4 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/{custom → python_scripts}/hx.py +75 -18
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +27 -22
- machineconfig/jobs/installer/python_scripts/sysabc.py +139 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
- machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
- machineconfig/jobs/installer/python_scripts/yazi.py +121 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
- machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
- machineconfig/jobs/scripts_dynamic/a.py +25 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +2 -1
- machineconfig/profile/create_links_export.py +64 -18
- machineconfig/profile/create_shell_profile.py +90 -132
- machineconfig/profile/mapper.toml +18 -8
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +82 -60
- machineconfig/scripts/python/ai/initai.py +1 -19
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +5 -5
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/generic.py +1 -1
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +7 -2
- machineconfig/scripts/python/cloud.py +14 -9
- machineconfig/scripts/python/croshell.py +135 -117
- machineconfig/scripts/python/devops.py +48 -25
- machineconfig/scripts/python/devops_navigator.py +1 -5
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +18 -9
- machineconfig/scripts/python/fire_jobs.py +127 -118
- machineconfig/scripts/python/ftpx.py +44 -17
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_launch.py +37 -15
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +41 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_copy.py +28 -21
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_mount.py +19 -17
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_sync.py +12 -11
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/start_slidev.py +6 -7
- machineconfig/scripts/python/helpers_devops/cli_config.py +105 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +221 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/cli_repos.py +60 -36
- machineconfig/scripts/python/helpers_devops/cli_self.py +172 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +142 -0
- machineconfig/scripts/python/{devops_helpers/cli_terminal.py → helpers_devops/cli_share_terminal.py} +15 -17
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_backup_retrieve.py +7 -10
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_status.py +7 -19
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/helpers_devops/run_script.py +168 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_wezterm_theme.py +1 -1
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +2 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +3 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_builder.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_detail.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_tree.py +160 -23
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers_network/address.py +176 -0
- machineconfig/scripts/python/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/{nw → helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers_network}/mount_ssh.py +1 -1
- machineconfig/scripts/python/{nw/devops_add_identity.py → helpers_network/ssh_add_identity.py} +35 -1
- machineconfig/scripts/python/{nw/devops_add_ssh_key.py → helpers_network/ssh_add_ssh_key.py} +26 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_linux.py +7 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_windows.py +4 -4
- machineconfig/scripts/python/{nw → helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +80 -37
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/entrypoint.py +5 -5
- machineconfig/scripts/python/helpers_repos/grource.py +2 -2
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/record.py +3 -2
- machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{repos_helpers/count_lines.py → helpers_repos/repo_analyzer_2.py} +113 -192
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/sync.py +5 -5
- machineconfig/scripts/python/{sessions_helpers → helpers_sessions}/sessions_multiprocess.py +19 -13
- machineconfig/scripts/python/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers_utils/python.py +187 -0
- machineconfig/scripts/python/interactive.py +26 -35
- machineconfig/scripts/python/{entry.py → mcfg_entry.py} +24 -10
- machineconfig/scripts/python/msearch.py +72 -0
- machineconfig/scripts/python/sessions.py +101 -38
- machineconfig/scripts/python/terminal.py +136 -0
- machineconfig/scripts/python/utils.py +62 -0
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
- machineconfig/settings/lf/linux/lfrc +10 -11
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +15 -17
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/shells/bash/init.sh +57 -10
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +2 -35
- machineconfig/settings/shells/nushell/env.nu +45 -6
- machineconfig/settings/shells/nushell/init.nu +314 -0
- machineconfig/settings/shells/pwsh/init.ps1 +59 -23
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/television/cable_unix/alias.toml +8 -0
- machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
- machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
- machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
- machineconfig/settings/television/cable_unix/channels.toml +19 -0
- machineconfig/settings/television/cable_unix/dirs.toml +13 -0
- machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
- machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
- machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_unix/env.toml +17 -0
- machineconfig/settings/television/cable_unix/files.toml +11 -0
- machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
- machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
- machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
- machineconfig/settings/television/cable_unix/git-log.toml +12 -0
- machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
- machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
- machineconfig/settings/television/cable_unix/guix.toml +20 -0
- machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
- machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
- machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
- machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
- machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
- machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
- machineconfig/settings/television/cable_unix/procs.toml +20 -0
- machineconfig/settings/television/cable_unix/text.toml +17 -0
- machineconfig/settings/television/cable_unix/tldr.toml +18 -0
- machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
- machineconfig/settings/television/cable_windows/alias.toml +7 -0
- machineconfig/settings/television/cable_windows/dirs.toml +13 -0
- machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
- machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_windows/env.toml +17 -0
- machineconfig/settings/television/cable_windows/files.toml +14 -0
- machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
- machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
- machineconfig/settings/television/cable_windows/git-log.toml +11 -0
- machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
- machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
- machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
- machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
- machineconfig/settings/television/cable_windows/text.toml +17 -0
- machineconfig/settings/yazi/init.lua +61 -0
- machineconfig/settings/yazi/keymap_linux.toml +94 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +84 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +39 -8
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -11
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +3 -5
- machineconfig/setup_windows/ssh/openssh-server.ps1 +1 -1
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +26 -10
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/code.py +143 -167
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +1 -1
- machineconfig/utils/files/headers.py +6 -11
- machineconfig/utils/files/read.py +3 -9
- machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +44 -101
- machineconfig/utils/installer_utils/installer_cli.py +175 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +39 -87
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +17 -63
- machineconfig/utils/io.py +77 -4
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +235 -145
- machineconfig/utils/options.py +46 -18
- machineconfig/utils/options_tv.py +119 -0
- machineconfig/utils/path_extended.py +46 -97
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +10 -23
- machineconfig/utils/scheduler.py +84 -115
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/ssh.py +214 -476
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +142 -0
- machineconfig/utils/ssh_utils/wsl.py +210 -0
- machineconfig/utils/terminal.py +3 -113
- machineconfig/utils/upgrade_packages.py +114 -28
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.12.dist-info/METADATA +132 -0
- machineconfig-8.12.dist-info/RECORD +504 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/entry_points.txt +5 -1
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
- machineconfig/jobs/python/python_ve_symlink.py +0 -37
- machineconfig/jobs/python/vscode/api.py +0 -57
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzfag +0 -17
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/fzfrga +0 -21
- machineconfig/scripts/linux/other/share_smb +0 -1
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/devops_helpers/cli_config.py +0 -81
- machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py +0 -84
- machineconfig/scripts/python/devops_helpers/cli_data.py +0 -18
- machineconfig/scripts/python/devops_helpers/cli_nw.py +0 -73
- machineconfig/scripts/python/devops_helpers/cli_self.py +0 -117
- machineconfig/scripts/python/devops_helpers/cli_share_server.py +0 -104
- machineconfig/scripts/python/helper_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
- machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py +0 -30
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/python/repos_helpers/action.py +0 -378
- machineconfig/scripts/python/repos_helpers/count_lines_frontend.py +0 -17
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
- machineconfig/settings/lf/windows/tst.ps1 +0 -1
- machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
- machineconfig/settings/yazi/keymap.toml +0 -0
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/nix/cli_installation.sh +0 -137
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/wt_and_pwsh/__init__.py +0 -0
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig-6.23.dist-info/METADATA +0 -84
- machineconfig-6.23.dist-info/RECORD +0 -428
- machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_restart.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_manager_helper.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/__init__.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
- machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
- machineconfig/{setup_linux/web_shortcuts → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{linux/msc → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/mint_keyboard_shortcuts.sh +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
- machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
- machineconfig/{jobs/python → scripts/python/ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{devops_helpers → helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{devops_helpers/themes → helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/scheduler.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{helpers_fire → helpers_devops}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_fire/agentic_frameworks → helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_fire_command/f.py} +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/data_models.py +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/search_bar.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers_network}/__init__.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{repos_helpers → helpers_repos}/update.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_sessions}/__init__.py +0 -0
- /machineconfig/{scripts/python/sessions_helpers → settings/wt}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/WHEEL +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
#!/usr/bin/env -S uv run
|
|
3
|
+
# /// script
|
|
4
|
+
# requires-python = ">=3.13"
|
|
5
|
+
# dependencies = [
|
|
6
|
+
# "rich",
|
|
7
|
+
# "polars",
|
|
8
|
+
# "typer>=0.12",
|
|
9
|
+
# "loguru",
|
|
10
|
+
# "numpy",
|
|
11
|
+
# ]
|
|
12
|
+
# ///
|
|
13
|
+
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
"""a,b,c"""
|
|
19
|
+
print("This is a helper function in a.py")
|
|
20
|
+
import numpy as np
|
|
21
|
+
print("Numpy version:", np.__version__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if __name__ == "__main__":
|
|
25
|
+
main()
|
machineconfig/logger.py
CHANGED
|
@@ -1,35 +1,73 @@
|
|
|
1
1
|
|
|
2
2
|
from typing import Literal
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import shutil
|
|
3
5
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT, CONFIG_ROOT
|
|
4
6
|
|
|
5
7
|
|
|
6
|
-
def
|
|
7
|
-
|
|
8
|
+
def _copy_path(source: Path, target: Path, overwrite: bool) -> None:
|
|
9
|
+
source = source.expanduser().resolve()
|
|
10
|
+
target = target.expanduser().resolve()
|
|
11
|
+
if not source.exists():
|
|
12
|
+
raise FileNotFoundError(f"Source path does not exist: {source}")
|
|
13
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
14
|
+
if target.exists() and not overwrite:
|
|
15
|
+
raise FileExistsError(f"Target already exists and overwrite=False: {target}")
|
|
16
|
+
if target.exists() and overwrite:
|
|
17
|
+
if target.is_dir():
|
|
18
|
+
shutil.rmtree(target)
|
|
19
|
+
else:
|
|
20
|
+
target.unlink()
|
|
21
|
+
if source.is_file():
|
|
22
|
+
shutil.copy2(source, target)
|
|
23
|
+
elif source.is_dir():
|
|
24
|
+
shutil.copytree(source, target, dirs_exist_ok=overwrite)
|
|
25
|
+
else:
|
|
26
|
+
raise ValueError(f"Source is neither file nor directory: {source}")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def copy_assets_to_machine(which: Literal["scripts", "settings"]) -> None:
|
|
8
30
|
import platform
|
|
9
|
-
|
|
31
|
+
import subprocess
|
|
32
|
+
system_name = platform.system().lower()
|
|
33
|
+
if system_name == "windows":
|
|
10
34
|
system = "windows"
|
|
11
|
-
elif
|
|
35
|
+
elif system_name in {"linux", "darwin"}:
|
|
12
36
|
system = "linux"
|
|
13
37
|
else:
|
|
14
|
-
raise NotImplementedError(f"System {
|
|
38
|
+
raise NotImplementedError(f"System {system_name} not supported")
|
|
39
|
+
|
|
15
40
|
match which:
|
|
16
41
|
case "scripts":
|
|
17
42
|
source = LIBRARY_ROOT.joinpath("scripts", system)
|
|
18
|
-
target = CONFIG_ROOT.joinpath("scripts"
|
|
43
|
+
target = CONFIG_ROOT.joinpath("scripts")
|
|
44
|
+
|
|
45
|
+
# _copy_path(source=source, target=target, overwrite=True)
|
|
19
46
|
|
|
47
|
+
for a_path in source.rglob("*"):
|
|
48
|
+
if not a_path.is_file():
|
|
49
|
+
continue
|
|
50
|
+
relative_path = a_path.relative_to(source)
|
|
51
|
+
target_path = target.joinpath(relative_path)
|
|
52
|
+
_copy_path(source=a_path, target=target_path, overwrite=True)
|
|
53
|
+
|
|
54
|
+
wrap_mcfg_source = LIBRARY_ROOT.joinpath("scripts", "nu", "wrap_mcfg.nu")
|
|
55
|
+
wrap_mcfg_target = CONFIG_ROOT.joinpath("scripts", "wrap_mcfg.nu")
|
|
56
|
+
|
|
57
|
+
wrap_mcfg_target.parent.mkdir(parents=True, exist_ok=True)
|
|
58
|
+
_copy_path(source=wrap_mcfg_source, target=wrap_mcfg_target, overwrite=True)
|
|
59
|
+
|
|
60
|
+
if system_name == "linux":
|
|
61
|
+
from rich.console import Console
|
|
62
|
+
console = Console()
|
|
63
|
+
console.print("\n[bold]📜 Setting executable permissions for scripts...[/bold]")
|
|
64
|
+
scripts_path = CONFIG_ROOT.joinpath("scripts")
|
|
65
|
+
subprocess.run(f"chmod +x {scripts_path} -R", shell=True, capture_output=True, text=True, check=False)
|
|
66
|
+
console.print("[green]✅ Script permissions updated[/green]")
|
|
67
|
+
return
|
|
20
68
|
case "settings":
|
|
21
69
|
source = LIBRARY_ROOT.joinpath("settings")
|
|
22
70
|
target = CONFIG_ROOT.joinpath("settings")
|
|
23
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
24
|
-
PathExtended(source).copy(folder=target.parent, overwrite=True)
|
|
25
|
-
import platform
|
|
26
|
-
system = platform.system().lower()
|
|
27
|
-
if system == "linux" and which == "scripts":
|
|
28
|
-
import subprocess
|
|
29
|
-
from rich.console import Console
|
|
30
|
-
console = Console()
|
|
31
|
-
console.print("\n[bold]📜 Setting executable permissions for scripts...[/bold]")
|
|
32
|
-
subprocess.run(f"chmod +x {CONFIG_ROOT.joinpath(f'scripts/{system.lower()}')} -R", shell=True, capture_output=True, text=True)
|
|
33
|
-
console.print("[green]✅ Script permissions updated[/green]")
|
|
34
|
-
|
|
35
71
|
|
|
72
|
+
_copy_path(source=source, target=target, overwrite=True)
|
|
73
|
+
|
|
@@ -13,6 +13,7 @@ from rich.table import Table
|
|
|
13
13
|
|
|
14
14
|
from machineconfig.utils.path_extended import PathExtended
|
|
15
15
|
from machineconfig.utils.links import symlink_map, copy_map
|
|
16
|
+
from machineconfig.profile.create_links_export import ON_CONFLICT_STRICT
|
|
16
17
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT, CONFIG_ROOT
|
|
17
18
|
|
|
18
19
|
import platform
|
|
@@ -79,7 +80,7 @@ def read_mapper() -> MapperFileData:
|
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
def apply_mapper(mapper_data: dict[str, list[ConfigMapper]],
|
|
82
|
-
on_conflict:
|
|
83
|
+
on_conflict: ON_CONFLICT_STRICT,
|
|
83
84
|
method: Literal["symlink", "copy"]
|
|
84
85
|
):
|
|
85
86
|
operation_records: list[OperationRecord] = []
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
-
from typing import Optional, Literal, Annotated
|
|
3
|
+
from typing import Optional, Literal, Annotated, TypeAlias
|
|
4
4
|
|
|
5
|
+
ON_CONFLICT_LOOSE: TypeAlias = Literal[
|
|
6
|
+
"throw-error", "t",
|
|
7
|
+
"overwrite-self-managed", "os",
|
|
8
|
+
"backup-self-managed", "bs",
|
|
9
|
+
"overwrite-default-path", "od",
|
|
10
|
+
"backup-default-path", "bd"
|
|
11
|
+
]
|
|
12
|
+
ON_CONFLICT_STRICT: TypeAlias = Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"]
|
|
13
|
+
ON_CONFLICT_MAPPER: dict[str, ON_CONFLICT_STRICT] = {
|
|
14
|
+
"t": "throw-error",
|
|
15
|
+
"os": "overwrite-self-managed",
|
|
16
|
+
"bs": "backup-self-managed",
|
|
17
|
+
"od": "overwrite-default-path",
|
|
18
|
+
"bd": "backup-default-path",
|
|
19
|
+
"throw-error": "throw-error",
|
|
20
|
+
"overwrite-self-managed": "overwrite-self-managed",
|
|
21
|
+
"backup-self-managed": "backup-self-managed",
|
|
22
|
+
"overwrite-default-path": "overwrite-default-path",
|
|
23
|
+
"backup-default-path": "backup-default-path",
|
|
24
|
+
}
|
|
5
25
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
26
|
+
|
|
27
|
+
def main_public_from_parser(method: Annotated[Literal["symlink", "s", "copy", "c"], typer.Option(..., "--method", "-m", help="Method to use for setting up the config file.")],
|
|
28
|
+
on_conflict: Annotated[ON_CONFLICT_LOOSE, typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
29
|
+
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = "all",
|
|
30
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Run in interactive mode")] = False):
|
|
10
31
|
"""Terminology:
|
|
11
32
|
SOURCE = Self-Managed-Config-File-Path
|
|
12
33
|
TARGET = Config-File-Default-Path
|
|
@@ -16,7 +37,7 @@ def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.
|
|
|
16
37
|
if which is None:
|
|
17
38
|
assert interactive is True
|
|
18
39
|
from machineconfig.utils.options import choose_from_options
|
|
19
|
-
items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()),
|
|
40
|
+
items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()), tv=True, multi=True)
|
|
20
41
|
else:
|
|
21
42
|
assert interactive is False
|
|
22
43
|
if which == "all":
|
|
@@ -24,31 +45,56 @@ def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.
|
|
|
24
45
|
else:
|
|
25
46
|
items_chosen = which.split(",")
|
|
26
47
|
items_objections: dict[str, list[ConfigMapper]] = {item: mapper_full[item] for item in items_chosen if item in mapper_full}
|
|
27
|
-
|
|
48
|
+
if len(items_objections) == 0:
|
|
49
|
+
typer.echo("[red]Error:[/] No valid items selected.")
|
|
50
|
+
typer.Exit(code=1)
|
|
51
|
+
return
|
|
28
52
|
from machineconfig.profile.create_links import apply_mapper
|
|
29
53
|
from machineconfig.profile.create_helper import copy_assets_to_machine
|
|
30
54
|
copy_assets_to_machine(which="settings") # config files live here and will be linked to.
|
|
31
|
-
|
|
55
|
+
method_map: dict[str, Literal["symlink", "copy"]] = {
|
|
56
|
+
"s": "symlink",
|
|
57
|
+
"symlink": "symlink",
|
|
58
|
+
"c": "copy",
|
|
59
|
+
"copy": "copy",
|
|
60
|
+
}
|
|
61
|
+
method = method_map[method]
|
|
62
|
+
apply_mapper(mapper_data=items_objections, on_conflict=ON_CONFLICT_MAPPER[on_conflict], method=method)
|
|
32
63
|
|
|
33
64
|
|
|
34
|
-
def main_private_from_parser(method: Annotated[Literal["symlink", "copy"], typer.Option(..., help="Method to use for linking files")],
|
|
35
|
-
on_conflict: Annotated[
|
|
36
|
-
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] =
|
|
37
|
-
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
65
|
+
def main_private_from_parser(method: Annotated[Literal["symlink", "s", "copy", "c"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
|
|
66
|
+
on_conflict: Annotated[ON_CONFLICT_LOOSE, typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
67
|
+
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = "all",
|
|
68
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Run in interactive mode")] = False):
|
|
38
69
|
from machineconfig.profile.create_links import ConfigMapper, read_mapper
|
|
39
|
-
|
|
40
70
|
mapper_full = read_mapper()["private"]
|
|
41
71
|
if which is None:
|
|
42
|
-
|
|
72
|
+
if interactive is False:
|
|
73
|
+
typer.echo("[red]Error:[/] --which must be provided when not running in interactive mode.")
|
|
74
|
+
typer.Exit(code=1)
|
|
75
|
+
return
|
|
43
76
|
from machineconfig.utils.options import choose_from_options
|
|
44
|
-
items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()),
|
|
77
|
+
items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()), tv=True, multi=True)
|
|
45
78
|
else:
|
|
46
|
-
|
|
79
|
+
if interactive is True:
|
|
80
|
+
typer.echo("[yellow]Warning:[/] --which is provided, but its not allowed to be used together with --interactive. Ignoring --interactive flag.")
|
|
81
|
+
typer.Exit(code=0)
|
|
82
|
+
return
|
|
47
83
|
if which == "all":
|
|
48
84
|
items_chosen = list(mapper_full.keys())
|
|
49
85
|
else:
|
|
50
86
|
items_chosen = which.split(",")
|
|
51
87
|
items_objections: dict[str, list[ConfigMapper]] = {item: mapper_full[item] for item in items_chosen if item in mapper_full}
|
|
52
|
-
|
|
88
|
+
if len(items_objections) == 0:
|
|
89
|
+
typer.echo("[red]Error:[/] No valid items selected.")
|
|
90
|
+
typer.Exit(code=1)
|
|
91
|
+
return
|
|
53
92
|
from machineconfig.profile.create_links import apply_mapper
|
|
54
|
-
|
|
93
|
+
method_map: dict[str, Literal["symlink", "copy"]] = {
|
|
94
|
+
"s": "symlink",
|
|
95
|
+
"symlink": "symlink",
|
|
96
|
+
"c": "copy",
|
|
97
|
+
"copy": "copy",
|
|
98
|
+
}
|
|
99
|
+
method = method_map[method]
|
|
100
|
+
apply_mapper(mapper_data=items_objections, on_conflict=ON_CONFLICT_MAPPER[on_conflict], method=method)
|
|
@@ -1,42 +1,63 @@
|
|
|
1
1
|
"""shell"""
|
|
2
2
|
|
|
3
|
-
from
|
|
4
|
-
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
3
|
+
from pathlib import Path
|
|
5
4
|
|
|
6
|
-
import platform
|
|
7
|
-
import os
|
|
8
|
-
import subprocess
|
|
9
|
-
from rich.console import Console
|
|
10
|
-
from rich.panel import Panel
|
|
11
5
|
|
|
12
6
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
console
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_shell_profile_path() -> PathExtended:
|
|
7
|
+
def get_shell_profile_path() -> Path:
|
|
8
|
+
import platform
|
|
9
|
+
import subprocess
|
|
10
|
+
from rich.console import Console
|
|
11
|
+
from rich.panel import Panel
|
|
12
|
+
system = platform.system()
|
|
13
|
+
console = Console()
|
|
21
14
|
if system == "Windows":
|
|
22
15
|
result = subprocess.run(["pwsh", "-Command", "$PROFILE"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
|
|
23
16
|
if result.returncode == 0 and result.stdout.strip():
|
|
24
|
-
profile_path =
|
|
17
|
+
profile_path = Path(result.stdout.strip())
|
|
25
18
|
else:
|
|
26
19
|
print(f"Command failed with return code {result.returncode}")
|
|
27
20
|
print(f"stdout: {result.stdout}")
|
|
28
21
|
print(f"stderr: {result.stderr}")
|
|
29
22
|
raise ValueError(f"""Could not get profile path for Windows. Got stdout: {result.stdout}, stderr: {result.stderr}""")
|
|
30
23
|
elif system == "Linux":
|
|
31
|
-
profile_path =
|
|
24
|
+
profile_path = Path.home().joinpath(".bashrc")
|
|
25
|
+
elif system == "Darwin":
|
|
26
|
+
profile_path = Path.home().joinpath(".zshrc")
|
|
32
27
|
else:
|
|
33
28
|
raise ValueError(f"""Not implemented for this system {system}""")
|
|
34
29
|
console.print(Panel(f"""🐚 SHELL PROFILE | Working with path: `{profile_path}`""", title="[bold blue]Shell Profile[/bold blue]", border_style="blue"))
|
|
35
30
|
return profile_path
|
|
36
31
|
|
|
37
32
|
|
|
33
|
+
def get_nu_shell_profile_path() -> Path:
|
|
34
|
+
import platform
|
|
35
|
+
from rich.console import Console
|
|
36
|
+
from rich.panel import Panel
|
|
37
|
+
system = platform.system()
|
|
38
|
+
console = Console()
|
|
39
|
+
if system == "Windows":
|
|
40
|
+
profile_path = Path.home().joinpath(r"AppData\Roaming\nushell")
|
|
41
|
+
elif system == "Linux":
|
|
42
|
+
profile_path = Path.home().joinpath(".config/nushell")
|
|
43
|
+
elif system == "Darwin":
|
|
44
|
+
profile_path = Path.home().joinpath("Library/Application Support/nushell")
|
|
45
|
+
else:
|
|
46
|
+
raise ValueError(f"""Not implemented for this system {system}""")
|
|
47
|
+
console.print(Panel(f"""🐚 NU SHELL PROFILE | Working with path: `{profile_path}`""", title="[bold cyan]Nu Shell Profile[/bold cyan]", border_style="cyan"))
|
|
48
|
+
return profile_path
|
|
49
|
+
|
|
50
|
+
|
|
38
51
|
def create_default_shell_profile() -> None:
|
|
39
52
|
shell_profile_path = get_shell_profile_path()
|
|
53
|
+
import platform
|
|
54
|
+
import subprocess
|
|
55
|
+
from rich.console import Console
|
|
56
|
+
from rich.panel import Panel
|
|
57
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
58
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
59
|
+
system = platform.system()
|
|
60
|
+
console = Console()
|
|
40
61
|
if not shell_profile_path.exists():
|
|
41
62
|
console.print(Panel(f"""🆕 PROFILE | Profile does not exist at `{shell_profile_path}`. Creating a new one.""", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
42
63
|
shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -45,26 +66,42 @@ def create_default_shell_profile() -> None:
|
|
|
45
66
|
from machineconfig.profile.create_helper import copy_assets_to_machine
|
|
46
67
|
copy_assets_to_machine("settings") # init.ps1 or init.sh live here
|
|
47
68
|
copy_assets_to_machine("scripts") # init scripts are going to reference those scripts.
|
|
69
|
+
shell_name = ""
|
|
48
70
|
if system == "Windows":
|
|
71
|
+
shell_name = "pwsh"
|
|
49
72
|
init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/pwsh/init.ps1")
|
|
50
73
|
source_line = f""". {str(init_script.collapseuser(placeholder="$HOME"))}"""
|
|
51
|
-
|
|
74
|
+
elif system == "Linux":
|
|
75
|
+
shell_name = "bash"
|
|
52
76
|
init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/bash/init.sh")
|
|
53
77
|
source_line = f"""source {str(init_script.collapseuser(placeholder="$HOME"))}"""
|
|
78
|
+
elif system == "Darwin":
|
|
79
|
+
shell_name = "zsh"
|
|
80
|
+
init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/zsh/init.sh")
|
|
81
|
+
source_line = f"""source {str(init_script.collapseuser(placeholder="$HOME"))}"""
|
|
82
|
+
else:
|
|
83
|
+
raise ValueError(f"""Not implemented for this system {system}""")
|
|
54
84
|
|
|
55
85
|
was_shell_updated = False
|
|
56
86
|
if source_line in shell_profile:
|
|
57
|
-
console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
87
|
+
console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
58
88
|
else:
|
|
59
89
|
console.print(Panel("📝 PROFILE | Adding init script sourcing to profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
60
90
|
shell_profile += "\n" + source_line + "\n"
|
|
61
|
-
if
|
|
91
|
+
if shell_name == "bash":
|
|
62
92
|
result = subprocess.run(["cat", "/proc/version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
|
|
63
93
|
if result.returncode == 0 and result.stdout:
|
|
64
94
|
version_info = result.stdout.lower()
|
|
65
|
-
|
|
95
|
+
is_wsl = "microsoft" in version_info or "wsl" in version_info
|
|
96
|
+
if is_wsl:
|
|
66
97
|
shell_profile += "\ncd $HOME"
|
|
67
98
|
console.print("📌 WSL detected - adding 'cd $HOME' to profile to avoid Windows filesystem")
|
|
99
|
+
# Sync shell history between Windows and WSL
|
|
100
|
+
# https://www.hanselman.com/blog/sharing-powershell-history-between-windows-and-wsl
|
|
101
|
+
shell_profile += """
|
|
102
|
+
# Sync shell history between Windows and WSL
|
|
103
|
+
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\\n'}history -a; history -c; history -r"
|
|
104
|
+
"""
|
|
68
105
|
was_shell_updated = True
|
|
69
106
|
if was_shell_updated:
|
|
70
107
|
shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -72,117 +109,38 @@ def create_default_shell_profile() -> None:
|
|
|
72
109
|
console.print(Panel("✅ Profile updated successfully", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
73
110
|
|
|
74
111
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
# console.print(Panel("🔄 Adding sources to shell profile", title="[bold blue]Sources[/bold blue]", border_style="blue"))
|
|
108
|
-
|
|
109
|
-
# if choice is None:
|
|
110
|
-
# choice_obj = choose_from_options(msg="Which patch to add?", options=sources + ["all", "none(EXIT)"], default="none(EXIT)", multi=True)
|
|
111
|
-
# if isinstance(choice_obj, str):
|
|
112
|
-
# if choice_obj == "all":
|
|
113
|
-
# choice = choice_obj
|
|
114
|
-
# elif choice_obj == "none(EXIT)":
|
|
115
|
-
# return
|
|
116
|
-
# else:
|
|
117
|
-
# sources = [choice_obj]
|
|
118
|
-
# else: # isinstance(choice_obj, list):
|
|
119
|
-
# sources = choice_obj
|
|
120
|
-
# elif choice == "none(EXIT)":
|
|
121
|
-
# return
|
|
122
|
-
|
|
123
|
-
# if isinstance(profile_path, str):
|
|
124
|
-
# profile_path_obj = PathExtended(profile_path)
|
|
125
|
-
# else:
|
|
126
|
-
# profile_path_obj = get_shell_profile_path()
|
|
127
|
-
# profile = profile_path_obj.read_text(encoding="utf-8")
|
|
128
|
-
|
|
129
|
-
# for a_file in sources:
|
|
130
|
-
# tmp = a_file.replace("REPO_ROOT", REPO_ROOT.as_posix()).replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix())
|
|
131
|
-
# file = PathExtended(tmp).collapseuser() # this makes the shell profile interuseable across machines.
|
|
132
|
-
# file = file.as_posix() if system == "Linux" else str(file)
|
|
133
|
-
# if file not in profile:
|
|
134
|
-
# if system == "Windows":
|
|
135
|
-
# profile += f"\n. {file}"
|
|
136
|
-
# console.print(f"➕ Added PowerShell source: {file}")
|
|
137
|
-
# elif system == "Linux":
|
|
138
|
-
# profile += f"\nsource {file}"
|
|
139
|
-
# console.print(f"➕ Added Bash source: {file}")
|
|
140
|
-
# else:
|
|
141
|
-
# raise ValueError(f"Not implemented for this system {system}")
|
|
142
|
-
# else:
|
|
143
|
-
# console.print(f"⏭️ Source already present: {file}")
|
|
144
|
-
|
|
145
|
-
# profile_path_obj.write_text(profile, encoding="utf-8")
|
|
146
|
-
# console.print(Panel("✅ Shell profile updated with sources", title="[bold blue]Sources[/bold blue]", border_style="blue"))
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
# def main_add_patches_to_shell_profile(profile_path: Optional[str], choice: Optional[str]) -> None:
|
|
150
|
-
# patches: list[str] = [item.as_posix() for item in PathExtended(LIBRARY_ROOT).joinpath(f"profile/patches/{system.lower()}").search()]
|
|
151
|
-
|
|
152
|
-
# console.print(Panel("🩹 Adding patches to shell profile", title="[bold blue]Patches[/bold blue]", border_style="blue"))
|
|
153
|
-
|
|
154
|
-
# if choice is None:
|
|
155
|
-
# choice_chosen = choose_from_options(msg="Which patch to add?", options=list(patches) + ["all", "none(EXIT)"], default="none(EXIT)", multi=False)
|
|
156
|
-
# assert isinstance(choice_chosen, str), f"Choice must be a string or a list of strings, not {type(choice)}"
|
|
157
|
-
# choice = choice_chosen
|
|
158
|
-
# if choice == "none(EXIT)":
|
|
159
|
-
# return None
|
|
160
|
-
# elif str(choice) == "all":
|
|
161
|
-
# console.print("📌 Adding all patches to profile")
|
|
162
|
-
# else:
|
|
163
|
-
# patches = [choice]
|
|
164
|
-
# console.print(f"📌 Adding selected patch: {choice}")
|
|
165
|
-
|
|
166
|
-
# profile_path_obj = PathExtended(profile_path) if isinstance(profile_path, str) else get_shell_profile_path()
|
|
167
|
-
# profile = profile_path_obj.read_text(encoding="utf-8")
|
|
168
|
-
|
|
169
|
-
# for patch_path in patches:
|
|
170
|
-
# patch_path_obj = PathExtended(patch_path)
|
|
171
|
-
# patch = patch_path_obj.read_text(encoding="utf-8")
|
|
172
|
-
# if patch in profile:
|
|
173
|
-
# console.print(f"⏭️ Patch already present: {patch_path_obj.name}")
|
|
174
|
-
# else:
|
|
175
|
-
# profile += "\n" + patch
|
|
176
|
-
# console.print(f"➕ Added patch: {patch_path_obj.name}")
|
|
177
|
-
|
|
178
|
-
# if system == "Linux":
|
|
179
|
-
# res = Terminal().run("cat /proc/version").op
|
|
180
|
-
# if "microsoft" in res.lower() or "wsl" in res.lower():
|
|
181
|
-
# profile += "\ncd ~" # this is to make sure that the current dir is not in the windows file system, which is terribly slow and its a bad idea to be there anyway.
|
|
182
|
-
# console.print("📌 WSL detected - adding 'cd ~' to profile to avoid Windows filesystem")
|
|
183
|
-
|
|
184
|
-
# profile_path_obj.write_text(profile, encoding="utf-8")
|
|
185
|
-
# console.print(Panel("✅ Shell profile updated with patches", title="[bold blue]Patches[/bold blue]", border_style="blue"))
|
|
112
|
+
def create_nu_shell_profile() -> None:
|
|
113
|
+
from rich.console import Console
|
|
114
|
+
from rich.panel import Panel
|
|
115
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
116
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
117
|
+
console = Console()
|
|
118
|
+
nu_profile_path = get_nu_shell_profile_path()
|
|
119
|
+
config_dir = nu_profile_path
|
|
120
|
+
config_file = config_dir.joinpath("config.nu")
|
|
121
|
+
if not config_dir.exists():
|
|
122
|
+
console.print(Panel(f"""🆕 NU SHELL CONFIG | Config directory does not exist at `{config_dir}`. Creating a new one.""", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
|
|
123
|
+
config_dir.mkdir(parents=True, exist_ok=True)
|
|
124
|
+
if not config_file.exists():
|
|
125
|
+
console.print(Panel(f"""🆕 NU SHELL CONFIG | config.nu file does not exist at `{config_file}`. Creating a new one.""", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
|
|
126
|
+
config_file.write_text("", encoding="utf-8")
|
|
127
|
+
config_content = config_file.read_text(encoding="utf-8")
|
|
128
|
+
from machineconfig.profile.create_helper import copy_assets_to_machine
|
|
129
|
+
copy_assets_to_machine("settings")
|
|
130
|
+
copy_assets_to_machine("scripts")
|
|
131
|
+
init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/nushell/init.nu")
|
|
132
|
+
source_line = f"""use {str(init_script)}"""
|
|
133
|
+
was_config_updated = False
|
|
134
|
+
if source_line in config_content:
|
|
135
|
+
console.print(Panel("🔄 NU SHELL CONFIG | Skipping init script sourcing - already present in config.nu", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
|
|
136
|
+
else:
|
|
137
|
+
console.print(Panel("📝 NU SHELL CONFIG | Adding init script sourcing to config.nu", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
|
|
138
|
+
config_content += "\n" + source_line + "\n"
|
|
139
|
+
was_config_updated = True
|
|
140
|
+
if was_config_updated:
|
|
141
|
+
config_dir.mkdir(parents=True, exist_ok=True)
|
|
142
|
+
config_file.write_text(config_content, encoding="utf-8")
|
|
143
|
+
console.print(Panel("✅ Nu shell config updated successfully", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
|
|
186
144
|
|
|
187
145
|
|
|
188
146
|
if __name__ == "__main__":
|
|
@@ -33,9 +33,6 @@ config2 = {this = '~/.cli-m365-all-connections.json', to_this = '~/dotfiles/cred
|
|
|
33
33
|
config3 = {this = '~/.cli-m365-connection.json', to_this = '~/dotfiles/creds/tokens/.cli-m365-connection.json'}
|
|
34
34
|
# config2 = {this = '~/.cli-m365-tokens.json', to_this = '~/dotfiles/creds/tokens/.cli-m365-tokens.json'}
|
|
35
35
|
|
|
36
|
-
# [bash_linux]
|
|
37
|
-
# bashrc = {this = '~/.inputrc', to_this = '~/dotfiles/shells/bash/.inputrc'}
|
|
38
|
-
|
|
39
36
|
[remmina]
|
|
40
37
|
data = {this = '~/.var/app/org.remmina.Remmina/data/remmina', to_this = '~/dotfiles/creds/RDP/remmina/data/remmina'}
|
|
41
38
|
|
|
@@ -76,6 +73,9 @@ config = {this = '~/.docker/config.json', to_this = '~/dotfiles/creds/docker/con
|
|
|
76
73
|
|
|
77
74
|
# =========================== PUBLIC ======================================
|
|
78
75
|
|
|
76
|
+
[marimo]
|
|
77
|
+
config = {this = '~/.config/marimo/marimo.toml', to_this = 'CONFIG_ROOT/settings/marimo/marimo.toml'}
|
|
78
|
+
|
|
79
79
|
[presenterm]
|
|
80
80
|
config = {this = '~/.config/presenterm/config.yaml', to_this = 'CONFIG_ROOT/settings/presenterm/config.yaml'}
|
|
81
81
|
|
|
@@ -94,14 +94,23 @@ config_again = {this = '~/.config/procs/config.toml', to_this = 'CONFIG_ROOT/set
|
|
|
94
94
|
config = {this = '~/.config/rofi/config.rasi', to_this = 'CONFIG_ROOT/settings/rofi/config.rasi'}
|
|
95
95
|
|
|
96
96
|
[yazi_windows]
|
|
97
|
-
yazi = {this = '~/AppData/Roaming/yazi/config/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/
|
|
98
|
-
keymap = {this = '~/AppData/Roaming/yazi/config/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/
|
|
97
|
+
yazi = {this = '~/AppData/Roaming/yazi/config/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/yazi_windows.toml'}
|
|
98
|
+
keymap = {this = '~/AppData/Roaming/yazi/config/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/keymap_windows.toml'}
|
|
99
99
|
theme = {this = '~/AppData/Roaming/yazi/config/theme.toml', to_this = 'CONFIG_ROOT/settings/yazi/theme.toml'}
|
|
100
|
+
init = {this = '~/AppData/Roaming/yazi/config/init.lua', to_this = 'CONFIG_ROOT/settings/yazi/init.lua'}
|
|
101
|
+
|
|
102
|
+
[television_linux]
|
|
103
|
+
cable = {this = '~/.config/television/cable', to_this = 'CONFIG_ROOT/settings/television/cable_unix', contents = true}
|
|
104
|
+
|
|
105
|
+
[television_windows]
|
|
106
|
+
cable = {this = '~/AppData/Local/television/config/cable', to_this = 'CONFIG_ROOT/settings/television/cable_windows', contents = true}
|
|
107
|
+
|
|
100
108
|
|
|
101
109
|
[yazi_linux]
|
|
102
|
-
yazi = {this = '~/.config/yazi/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/
|
|
103
|
-
keymap = {this = '~/.config/yazi/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/
|
|
110
|
+
yazi = {this = '~/.config/yazi/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/yazi_linux.toml'}
|
|
111
|
+
keymap = {this = '~/.config/yazi/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/keymap_linux.toml'}
|
|
104
112
|
theme = {this = '~/.config/yazi/theme.toml', to_this = 'CONFIG_ROOT/settings/yazi/theme.toml'}
|
|
113
|
+
init = {this = '~/.config/yazi/init.lua', to_this = 'CONFIG_ROOT/settings/yazi/init.lua'}
|
|
105
114
|
|
|
106
115
|
[lf_windows]
|
|
107
116
|
config = {this = '~/AppData/Local/lf/lfrc', to_this = 'CONFIG_ROOT/settings/lf/windows/lfrc'}
|
|
@@ -159,7 +168,7 @@ config = {this = '~/.config/pudb/pudb.cfg', to_this = 'CONFIG_ROOT/settings/pudb
|
|
|
159
168
|
# AllUsersCurrentHost = {this = 'C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1', to_this = '~/dotfiles/shells/powershell/AllUsersCurrentHost/Microsoft.PowerShell_profile.ps1'}
|
|
160
169
|
# AllUsersAllHosts = {this = 'C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1', to_this = '~/dotfiles/shells/windows_powershell/AllUsersAllHosts/profile.ps1'}
|
|
161
170
|
|
|
162
|
-
[pwsh_windows]
|
|
171
|
+
# [pwsh_windows]
|
|
163
172
|
# CurrentUserCurrentHost = {this = '~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1', to_this = 'CONFIG_ROOT/settings/shells/pwsh/init.ps1'}
|
|
164
173
|
# CurrentUserAllHosts = {this = '~/Documents/PowerShell/profile.ps1', to_this = 'CONFIG_ROOT/settings/shells/pwsh/profile.ps1'}
|
|
165
174
|
# AllUsersCurrentHost = {this = 'C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1', to_this = 'CONFIG_ROOT/settings/shells/pwsh/init.ps1'}
|
|
@@ -222,6 +231,7 @@ config = { this = '~/AppData/Roaming/helix/config.toml', to_this = 'CONFIG_ROOT/
|
|
|
222
231
|
[helix_linux]
|
|
223
232
|
languages = { this = '~/.config/helix/languages.toml', to_this = 'CONFIG_ROOT/settings/helix/languages.toml' }
|
|
224
233
|
config = { this = '~/.config/helix/config.toml', to_this = 'CONFIG_ROOT/settings/helix/config.toml' }
|
|
234
|
+
yazi_picker = { this = '~/.config/helix/yazi-picker.sh', to_this = 'CONFIG_ROOT/settings/helix/yazi-picker.sh' }
|
|
225
235
|
|
|
226
236
|
[lvim_windows]
|
|
227
237
|
config = { this = '~/AppData/Local/lvim/config.lua', to_this = 'CONFIG_ROOT/settings/lvim/windows/config.lua' }
|