machineconfig 6.82__py3-none-any.whl → 8.51__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.
Files changed (461) hide show
  1. machineconfig/cluster/remote/cloud_manager.py +1 -1
  2. machineconfig/cluster/remote/run_cluster.py +1 -1
  3. machineconfig/cluster/remote/run_remote.py +1 -1
  4. machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
  5. machineconfig/cluster/sessions_managers/wt_local.py +17 -222
  6. machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
  7. machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
  8. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  9. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  10. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  11. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  12. machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
  13. machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
  14. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
  15. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
  16. machineconfig/jobs/installer/checks/check_installations.py +133 -0
  17. machineconfig/jobs/installer/checks/install_utils.py +132 -0
  18. machineconfig/jobs/installer/checks/report_utils.py +39 -0
  19. machineconfig/jobs/installer/checks/vt_utils.py +89 -0
  20. machineconfig/jobs/installer/installer_data.json +1500 -310
  21. machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
  22. machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
  23. machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
  24. machineconfig/jobs/installer/package_groups.py +62 -91
  25. machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
  26. machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
  27. machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
  28. machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
  29. machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
  30. machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
  31. machineconfig/jobs/installer/python_scripts/hx.py +214 -0
  32. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
  33. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
  34. machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
  35. machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
  36. machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
  37. machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
  38. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
  39. machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
  40. machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
  41. machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
  42. machineconfig/jobs/scripts_dynamic/a.py +428 -0
  43. machineconfig/logger.py +1 -2
  44. machineconfig/profile/create_helper.py +56 -18
  45. machineconfig/profile/create_links.py +79 -21
  46. machineconfig/profile/create_links_export.py +87 -36
  47. machineconfig/profile/create_shell_profile.py +92 -127
  48. machineconfig/profile/mapper_data.toml +45 -0
  49. machineconfig/profile/mapper_dotfiles.toml +249 -0
  50. machineconfig/scripts/__init__.py +0 -4
  51. machineconfig/scripts/linux/wrap_mcfg +46 -0
  52. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  53. machineconfig/scripts/python/agents.py +85 -165
  54. machineconfig/scripts/python/ai/initai.py +4 -2
  55. machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
  56. machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
  57. machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
  58. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
  59. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
  60. machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
  61. machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
  62. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
  63. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
  64. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
  65. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
  66. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
  67. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
  68. machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
  69. machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
  70. machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
  71. machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
  72. machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
  73. machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
  74. machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
  75. machineconfig/scripts/python/cloud.py +58 -11
  76. machineconfig/scripts/python/croshell.py +10 -162
  77. machineconfig/scripts/python/devops.py +73 -36
  78. machineconfig/scripts/python/devops_navigator.py +16 -6
  79. machineconfig/scripts/python/fire_jobs.py +8 -222
  80. machineconfig/scripts/python/ftpx.py +7 -200
  81. machineconfig/scripts/python/graph/cli_graph.json +8743 -0
  82. machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
  83. machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
  84. machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
  85. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
  86. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
  87. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
  88. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
  89. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  90. machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
  91. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
  92. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
  93. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
  94. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
  95. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
  96. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
  97. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
  98. machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
  99. machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
  100. machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
  101. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
  102. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
  103. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
  104. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
  105. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
  106. machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
  107. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
  108. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
  109. machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
  110. machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
  111. machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
  112. machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
  113. machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
  114. machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
  115. machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
  116. machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
  117. machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
  118. machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
  119. machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
  120. machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
  121. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
  122. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
  123. machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
  124. machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
  125. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
  126. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
  127. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
  128. machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
  129. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
  130. machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
  131. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
  132. machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
  133. machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
  134. machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
  135. machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
  136. machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
  137. machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
  138. machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
  139. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
  140. machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
  141. machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
  142. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
  143. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
  144. machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
  145. machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
  146. machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
  147. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
  148. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
  149. machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
  150. machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
  151. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
  152. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
  153. machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
  154. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
  155. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
  156. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
  157. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
  158. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
  159. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
  160. machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
  161. machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
  162. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
  163. machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
  164. machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
  165. machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
  166. machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
  167. machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
  168. machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
  169. machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
  170. machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
  171. machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
  172. machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
  173. machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
  174. machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
  175. machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
  176. machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
  177. machineconfig/scripts/python/mcfg_entry.py +143 -0
  178. machineconfig/scripts/python/msearch.py +26 -0
  179. machineconfig/scripts/python/sessions.py +69 -135
  180. machineconfig/scripts/python/terminal.py +58 -0
  181. machineconfig/scripts/python/utils.py +115 -38
  182. machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
  183. machineconfig/settings/atuin/config.toml +294 -0
  184. machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
  185. machineconfig/settings/broot/conf.toml +1 -1
  186. machineconfig/settings/helix/config.toml +16 -0
  187. machineconfig/settings/helix/languages.toml +13 -4
  188. machineconfig/settings/helix/yazi-picker.sh +12 -0
  189. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  190. machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
  191. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  192. machineconfig/settings/lf/windows/lfrc +14 -16
  193. machineconfig/settings/linters/.ruff.toml +2 -1
  194. machineconfig/settings/marimo/marimo.toml +1 -1
  195. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  196. machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
  197. machineconfig/settings/shells/bash/init.sh +47 -12
  198. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
  199. machineconfig/settings/shells/nushell/config.nu +25 -33
  200. machineconfig/settings/shells/nushell/env.nu +21 -8
  201. machineconfig/settings/shells/nushell/init.nu +138 -0
  202. machineconfig/settings/shells/pwsh/init.ps1 +111 -17
  203. machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
  204. machineconfig/settings/shells/starship/starship.toml +16 -0
  205. machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
  206. machineconfig/settings/shells/wt/settings.json +27 -18
  207. machineconfig/settings/shells/zsh/init.sh +42 -23
  208. machineconfig/settings/television/cable_unix/alias.toml +8 -0
  209. machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
  210. machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
  211. machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
  212. machineconfig/settings/television/cable_unix/channels.toml +19 -0
  213. machineconfig/settings/television/cable_unix/dirs.toml +13 -0
  214. machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
  215. machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
  216. machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
  217. machineconfig/settings/television/cable_unix/env.toml +17 -0
  218. machineconfig/settings/television/cable_unix/files.toml +11 -0
  219. machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
  220. machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
  221. machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
  222. machineconfig/settings/television/cable_unix/git-log.toml +12 -0
  223. machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
  224. machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
  225. machineconfig/settings/television/cable_unix/guix.toml +20 -0
  226. machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
  227. machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
  228. machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
  229. machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
  230. machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
  231. machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
  232. machineconfig/settings/television/cable_unix/procs.toml +20 -0
  233. machineconfig/settings/television/cable_unix/text.toml +17 -0
  234. machineconfig/settings/television/cable_unix/tldr.toml +18 -0
  235. machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
  236. machineconfig/settings/television/cable_windows/alias.toml +7 -0
  237. machineconfig/settings/television/cable_windows/dirs.toml +13 -0
  238. machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
  239. machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
  240. machineconfig/settings/television/cable_windows/env.toml +17 -0
  241. machineconfig/settings/television/cable_windows/files.toml +14 -0
  242. machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
  243. machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
  244. machineconfig/settings/television/cable_windows/git-log.toml +11 -0
  245. machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
  246. machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
  247. machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
  248. machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
  249. machineconfig/settings/television/cable_windows/text.toml +17 -0
  250. machineconfig/settings/tv/config.toml +234 -0
  251. machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
  252. machineconfig/settings/wsl/.wslconfig +5 -30
  253. machineconfig/settings/wt/__init__.py +0 -0
  254. machineconfig/settings/yazi/init.lua +61 -0
  255. machineconfig/settings/yazi/keymap_linux.toml +94 -0
  256. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  257. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  258. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  259. machineconfig/settings/yazi/theme.toml +4 -0
  260. machineconfig/settings/yazi/yazi_linux.toml +94 -0
  261. machineconfig/settings/yazi/yazi_windows.toml +58 -0
  262. machineconfig/settings/zellij/layouts/st.kdl +40 -9
  263. machineconfig/settings/zellij/layouts/st2.kdl +1 -1
  264. machineconfig/setup_linux/__init__.py +2 -2
  265. machineconfig/setup_linux/apps_desktop.sh +8 -27
  266. machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
  267. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
  268. machineconfig/setup_mac/__init__.py +1 -4
  269. machineconfig/setup_mac/apps_gui.sh +248 -0
  270. machineconfig/setup_windows/__init__.py +2 -5
  271. machineconfig/setup_windows/uv.ps1 +8 -1
  272. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
  273. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
  274. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  275. machineconfig/type_hinting/sql/__init__.py +1 -0
  276. machineconfig/type_hinting/sql/base.py +216 -0
  277. machineconfig/type_hinting/sql/core_schema.py +64 -0
  278. machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
  279. machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
  280. machineconfig/type_hinting/typedict/__init__.py +1 -0
  281. machineconfig/type_hinting/typedict/ast_utils.py +130 -0
  282. machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
  283. machineconfig/type_hinting/typedict/generators.py +231 -0
  284. machineconfig/type_hinting/typedict/polars_schema.py +24 -0
  285. machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
  286. machineconfig/utils/accessories.py +31 -4
  287. machineconfig/utils/code.py +163 -51
  288. machineconfig/utils/files/ascii_art.py +11 -15
  289. machineconfig/utils/files/headers.py +6 -7
  290. machineconfig/utils/files/read.py +8 -1
  291. machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
  292. machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
  293. machineconfig/utils/installer_utils/install_from_url.py +183 -0
  294. machineconfig/utils/installer_utils/installer_class.py +53 -102
  295. machineconfig/utils/installer_utils/installer_cli.py +161 -0
  296. machineconfig/utils/installer_utils/installer_helper.py +129 -0
  297. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
  298. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
  299. machineconfig/utils/io.py +94 -9
  300. machineconfig/utils/links.py +56 -38
  301. machineconfig/utils/meta.py +38 -21
  302. machineconfig/utils/options.py +81 -23
  303. machineconfig/utils/options_utils/__init__.py +0 -0
  304. machineconfig/utils/options_utils/options_tv_linux.py +211 -0
  305. machineconfig/utils/options_utils/options_tv_windows.py +88 -0
  306. machineconfig/utils/options_utils/tv_options.py +37 -0
  307. machineconfig/utils/path_extended.py +52 -102
  308. machineconfig/utils/path_helper.py +76 -23
  309. machineconfig/utils/procs.py +1 -1
  310. machineconfig/utils/scheduler.py +26 -53
  311. machineconfig/utils/scheduling.py +0 -2
  312. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  313. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  314. machineconfig/utils/source_of_truth.py +6 -1
  315. machineconfig/utils/ssh.py +216 -419
  316. machineconfig/utils/ssh_utils/abc.py +5 -0
  317. machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
  318. machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
  319. machineconfig/utils/ssh_utils/utils.py +158 -0
  320. machineconfig/utils/ssh_utils/wsl.py +147 -0
  321. machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
  322. machineconfig/utils/terminal.py +1 -0
  323. machineconfig/utils/upgrade_packages.py +107 -35
  324. machineconfig/utils/ve.py +12 -4
  325. machineconfig-8.51.dist-info/METADATA +140 -0
  326. machineconfig-8.51.dist-info/RECORD +543 -0
  327. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
  328. machineconfig/jobs/installer/check_installations.py +0 -248
  329. machineconfig/jobs/installer/custom/hx.py +0 -140
  330. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
  331. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
  332. machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
  333. machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
  334. machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
  335. machineconfig/profile/backup.toml +0 -49
  336. machineconfig/profile/mapper.toml +0 -256
  337. machineconfig/scripts/linux/fzf2g +0 -21
  338. machineconfig/scripts/linux/fzfag +0 -17
  339. machineconfig/scripts/linux/fzffg +0 -25
  340. machineconfig/scripts/linux/fzfrga +0 -21
  341. machineconfig/scripts/linux/mcfgs +0 -38
  342. machineconfig/scripts/linux/other/share_smb +0 -1
  343. machineconfig/scripts/linux/other/switch_ip +0 -20
  344. machineconfig/scripts/linux/skrg +0 -4
  345. machineconfig/scripts/linux/warp-cli.sh +0 -122
  346. machineconfig/scripts/linux/z_ls +0 -104
  347. machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
  348. machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
  349. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
  350. machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
  351. machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
  352. machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
  353. machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
  354. machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
  355. machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
  356. machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
  357. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
  358. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
  359. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
  360. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
  361. machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
  362. machineconfig/scripts/python/helpers_fire/template.sh +0 -15
  363. machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
  364. machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
  365. machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
  366. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
  367. machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
  368. machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
  369. machineconfig/scripts/python/mcfg.py +0 -48
  370. machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
  371. machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
  372. machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
  373. machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
  374. machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
  375. machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
  376. machineconfig/scripts/windows/fzfb.ps1 +0 -3
  377. machineconfig/scripts/windows/fzfg.ps1 +0 -2
  378. machineconfig/scripts/windows/fzfrga.bat +0 -20
  379. machineconfig/scripts/windows/mcfgs.ps1 +0 -17
  380. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
  381. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  382. machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
  383. machineconfig/settings/lf/windows/tst.ps1 +0 -1
  384. machineconfig/settings/yazi/yazi.toml +0 -4
  385. machineconfig/setup_linux/apps.sh +0 -66
  386. machineconfig/setup_linux/others/cli_installation.sh +0 -137
  387. machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
  388. machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
  389. machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
  390. machineconfig/setup_mac/apps.sh +0 -73
  391. machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
  392. machineconfig/setup_windows/apps.ps1 +0 -62
  393. machineconfig/setup_windows/others/obs.ps1 +0 -4
  394. machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
  395. machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
  396. machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
  397. machineconfig/utils/installer_utils/installer.py +0 -225
  398. machineconfig/utils/tst.py +0 -20
  399. machineconfig-6.82.dist-info/METADATA +0 -82
  400. machineconfig-6.82.dist-info/RECORD +0 -441
  401. machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
  402. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
  403. machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
  404. machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
  405. machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
  406. machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
  407. machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
  408. machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
  409. machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
  410. machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
  411. machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
  412. machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
  413. machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
  414. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
  415. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
  416. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
  417. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
  418. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
  419. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
  420. machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
  421. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
  422. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
  423. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
  424. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
  425. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
  426. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
  427. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
  428. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
  429. machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
  430. machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
  431. machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
  432. machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
  433. machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
  434. machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
  435. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
  436. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
  437. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
  438. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
  439. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
  440. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
  441. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
  442. /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
  443. /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
  444. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
  445. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
  446. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
  447. /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
  448. /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
  449. /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
  450. /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
  451. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
  452. /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
  453. /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
  454. /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
  455. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
  456. /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
  457. /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
  458. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
  459. /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
  460. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
  461. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,167 @@
1
+ import typer
2
+ from typing import Optional, Annotated
3
+
4
+
5
+ def install_ssh_server() -> None:
6
+ """📡 Install SSH server"""
7
+ import platform
8
+ if platform.system() == "Windows":
9
+ script = _get_windows_ssh_server_install_script()
10
+ elif platform.system() == "Linux" or platform.system() == "Darwin":
11
+ script = """
12
+ sudo nala install openssh-server -y || true # try to install first
13
+ # sudo nala purge openssh-server -y
14
+ # sudo nala install openssh-server -y
15
+ echo "✅ FINISHED installing openssh-server."
16
+ """
17
+ else:
18
+ print(f"❌ Error: Platform {platform.system()} is not supported.")
19
+ raise typer.Exit(code=1)
20
+ from machineconfig.utils.code import run_shell_script
21
+ run_shell_script(script=script, display_script=True, clean_env=False)
22
+
23
+
24
+ def change_ssh_port(port: Annotated[int, typer.Option(..., "--port", "-p", help="SSH port to use")] = 2222) -> None:
25
+ """🔌 Change SSH port (Linux/WSL only, default: 2222)"""
26
+ import platform
27
+ if platform.system() != "Linux":
28
+ print("❌ Error: change_ssh_port requires Linux environment")
29
+ raise typer.Exit(code=1)
30
+ from machineconfig.utils.ssh_utils.wsl import change_ssh_port as _change_ssh_port
31
+ _change_ssh_port(port=port)
32
+
33
+
34
+ def _get_windows_ssh_server_install_script(use_winget: bool = True) -> str:
35
+ install_winget = r'''
36
+ Write-Host "Installing OpenSSH via winget..." -ForegroundColor Cyan
37
+ winget install --no-upgrade --Id Microsoft.OpenSSH.Preview --source winget --accept-package-agreements --accept-source-agreements
38
+ $wingetSshPath = "C:\Program Files\OpenSSH"
39
+ $currentMachinePath = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
40
+ if ($currentMachinePath -notlike "*$wingetSshPath*") {
41
+ Write-Host "Adding OpenSSH to system PATH..." -ForegroundColor Yellow
42
+ [System.Environment]::SetEnvironmentVariable("Path", "$currentMachinePath;$wingetSshPath", "Machine")
43
+ }
44
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
45
+ '''
46
+ install_capability = r'''
47
+ Write-Host "Installing OpenSSH via Windows Capability..." -ForegroundColor Cyan
48
+ Add-WindowsCapability -Online -Name OpenSSH.Server
49
+ Add-WindowsCapability -Online -Name OpenSSH.Client
50
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
51
+ '''
52
+ configure_sshd_service = r'''
53
+ $serviceExists = Get-Service -Name sshd -ErrorAction SilentlyContinue
54
+ if (-not $serviceExists) {
55
+ Write-Host "sshd service not found, registering manually..." -ForegroundColor Yellow
56
+ sc.exe create sshd binPath= "$sshdExePath" start= auto
57
+ if ($LASTEXITCODE -ne 0) { throw "Failed to create sshd service" }
58
+ }
59
+ Set-Service -Name sshd -StartupType Automatic
60
+ Start-Service sshd
61
+ Write-Host "sshd service started successfully." -ForegroundColor Green
62
+ '''
63
+ configure_firewall = r'''
64
+ $existingRule = Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue
65
+ if (-not $existingRule) {
66
+ Write-Host "Creating firewall rule for SSH..." -ForegroundColor Yellow
67
+ New-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -DisplayName "OpenSSH SSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program $sshdExePath
68
+ } else {
69
+ Write-Host "Firewall rule already exists." -ForegroundColor Green
70
+ }
71
+ '''
72
+ configure_default_shell = r'''
73
+ Write-Host "Configuring default shell for SSH..." -ForegroundColor Cyan
74
+ $shell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
75
+ if (-not (Test-Path "HKLM:\SOFTWARE\OpenSSH")) { New-Item -Path "HKLM:\SOFTWARE\OpenSSH" -Force | Out-Null }
76
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value $shell -PropertyType String -Force | Out-Null
77
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShellCommandOption -Value "/c" -PropertyType String -Force | Out-Null
78
+ Write-Host "Default shell set to: $shell" -ForegroundColor Green
79
+ '''
80
+ configure_ssh_agent = r'''
81
+ Write-Host "Configuring ssh-agent service..." -ForegroundColor Cyan
82
+ $agentService = Get-Service -Name ssh-agent -ErrorAction SilentlyContinue
83
+ if ($agentService) {
84
+ Set-Service -Name ssh-agent -StartupType Automatic
85
+ Start-Service ssh-agent -ErrorAction SilentlyContinue
86
+ Write-Host "ssh-agent service configured and started." -ForegroundColor Green
87
+ } else {
88
+ Write-Host "ssh-agent service not available." -ForegroundColor Yellow
89
+ }
90
+ '''
91
+ ensure_ssh_directory = r'''
92
+ $sshDir = Join-Path $env:USERPROFILE ".ssh"
93
+ if (-not (Test-Path $sshDir)) {
94
+ New-Item -ItemType Directory -Path $sshDir -Force | Out-Null
95
+ Write-Host "Created .ssh directory at: $sshDir" -ForegroundColor Green
96
+ }
97
+ '''
98
+ if use_winget:
99
+ install_method = install_winget
100
+ sshd_exe_path = r'C:\Program Files\OpenSSH\sshd.exe'
101
+ else:
102
+ install_method = install_capability
103
+ sshd_exe_path = r'$env:WINDIR\System32\OpenSSH\sshd.exe'
104
+ return fr'''
105
+ $ErrorActionPreference = "Stop"
106
+ try {{ Set-ExecutionPolicy -Scope CurrentUser Bypass -ErrorAction SilentlyContinue }} catch {{ }}
107
+ Write-Host "========================================" -ForegroundColor Magenta
108
+ Write-Host "OpenSSH Server Installation for Windows" -ForegroundColor Magenta
109
+ Write-Host "========================================" -ForegroundColor Magenta
110
+ {install_method}
111
+ $sshdExePath = "{sshd_exe_path}"
112
+ {configure_sshd_service}
113
+ {configure_firewall}
114
+ {configure_default_shell}
115
+ {configure_ssh_agent}
116
+ {ensure_ssh_directory}
117
+ Write-Host "========================================" -ForegroundColor Magenta
118
+ Write-Host "OpenSSH Server installation complete!" -ForegroundColor Green
119
+ Write-Host "SSH config directory: $env:ProgramData\ssh" -ForegroundColor Cyan
120
+ Write-Host "========================================" -ForegroundColor Magenta
121
+ '''
122
+
123
+
124
+ def add_ssh_key(
125
+ path: Annotated[Optional[str], typer.Option(..., help="Path to the public key file")] = None,
126
+ choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh/*.pub")] = False,
127
+ value: Annotated[bool, typer.Option(..., "--value", "-v", help="Paste the public key content manually")] = False,
128
+ github: Annotated[Optional[str], typer.Option(..., "--github", "-g", help="Fetch public keys from a GitHub username")] = None,
129
+ ) -> None:
130
+ """🔑 Add SSH public key to this machine so its accessible by owner of corresponding private key."""
131
+ import machineconfig.scripts.python.helpers.helpers_network.ssh_add_ssh_key as helper
132
+ helper.main(pub_path=path, pub_choose=choose, pub_val=value, from_github=github)
133
+
134
+
135
+ def add_ssh_identity() -> None:
136
+ """🗝️ Add SSH identity (private key) to this machine"""
137
+ import machineconfig.scripts.python.helpers.helpers_network.ssh_add_identity as helper
138
+ helper.main()
139
+
140
+
141
+ def debug_ssh() -> None:
142
+ """🐛 Debug SSH connection"""
143
+ from platform import system
144
+ if system() == "Linux" or system() == "Darwin":
145
+ import machineconfig.scripts.python.helpers.helpers_network.ssh_debug_linux as helper
146
+ helper.ssh_debug_linux()
147
+ elif system() == "Windows":
148
+ import machineconfig.scripts.python.helpers.helpers_network.ssh_debug_windows as helper
149
+ helper.ssh_debug_windows()
150
+ else:
151
+ print(f"❌ Error: Platform {system()} is not supported.")
152
+ raise typer.Exit(code=1)
153
+
154
+
155
+ def get_app() -> typer.Typer:
156
+ ssh_app = typer.Typer(help="🔐 SSH subcommands", no_args_is_help=True, add_help_option=True, add_completion=False)
157
+ ssh_app.command(name="install-server", help="📡 [i] Install SSH server")(install_ssh_server)
158
+ ssh_app.command(name="i", help="Install SSH server", hidden=True)(install_ssh_server)
159
+ ssh_app.command(name="change-port", help="🔌 [p] Change SSH port (Linux/WSL only)")(change_ssh_port)
160
+ ssh_app.command(name="p", help="Change SSH port", hidden=True)(change_ssh_port)
161
+ ssh_app.command(name="add-key", help="🔑 [k] Add SSH public key to this machine", no_args_is_help=True)(add_ssh_key)
162
+ ssh_app.command(name="k", help="Add SSH public key to this machine", hidden=True, no_args_is_help=True)(add_ssh_key)
163
+ ssh_app.command(name="add-identity", help="🗝️ [A] Add SSH identity (private key) to this machine")(add_ssh_identity)
164
+ ssh_app.command(name="A", help="Add SSH identity (private key) to this machine", hidden=True)(add_ssh_identity)
165
+ ssh_app.command(name="debug", help="🐛 [d] Debug SSH connection")(debug_ssh)
166
+ ssh_app.command(name="d", help="Debug SSH connection", hidden=True)(debug_ssh)
167
+ return ssh_app
@@ -11,28 +11,12 @@ from rich.table import Table
11
11
  from rich.text import Text
12
12
 
13
13
  from machineconfig.utils.path_extended import PathExtended
14
- from machineconfig.utils.source_of_truth import CONFIG_ROOT, DEFAULTS_PATH, LIBRARY_ROOT
14
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT, DEFAULTS_PATH
15
15
 
16
16
 
17
17
  console = Console()
18
18
 
19
19
 
20
- def _check_system_info() -> dict[str, str]:
21
- """Gather basic system information."""
22
- import socket
23
- import os
24
-
25
- return {
26
- "hostname": socket.gethostname(),
27
- "system": platform.system(),
28
- "release": platform.release(),
29
- "version": platform.version(),
30
- "machine": platform.machine(),
31
- "processor": platform.processor() or "Unknown",
32
- "python_version": platform.python_version(),
33
- "user": os.getenv("USER") or os.getenv("USERNAME") or "Unknown",
34
- }
35
-
36
20
 
37
21
  def _check_shell_profile_status() -> dict[str, Any]:
38
22
  """Check shell profile configuration status."""
@@ -153,7 +137,7 @@ def _check_config_files_status() -> dict[str, Any]:
153
137
  from machineconfig.profile.create_links import read_mapper
154
138
 
155
139
  try:
156
- mapper = read_mapper()
140
+ mapper = read_mapper(repo="library")
157
141
  public_configs = list(mapper.get("public", {}).keys())
158
142
  private_configs = list(mapper.get("private", {}).keys())
159
143
 
@@ -221,10 +205,16 @@ def _check_backup_config() -> dict[str, Any]:
221
205
  cloud_config = "Not configured"
222
206
 
223
207
  try:
224
- backup_file = LIBRARY_ROOT.joinpath("profile/backup.toml")
208
+ from machineconfig.scripts.python.helpers.helpers_devops.backup_config import LIBRARY_BACKUP_PATH
209
+ backup_file = LIBRARY_BACKUP_PATH
225
210
  if backup_file.exists():
226
211
  backup_data = tomllib.loads(backup_file.read_text(encoding="utf-8"))
227
- backup_items = list(backup_data.keys())
212
+ backup_items: list[str] = []
213
+ for group_name, entries in backup_data.items():
214
+ if isinstance(entries, dict):
215
+ backup_items.extend([f"{group_name}.{entry_name}" for entry_name in entries.keys()])
216
+ else:
217
+ backup_items.append(str(group_name))
228
218
  backup_items_count = len(backup_items)
229
219
  else:
230
220
  backup_items = []
@@ -480,10 +470,14 @@ def main() -> None:
480
470
  console.print("\n")
481
471
  console.print(Panel(Text("📊 Machine Status Report", justify="center", style="bold white"), style="bold blue", padding=(1, 2)))
482
472
  console.print("\n")
483
-
484
- system_info = _check_system_info()
473
+
474
+ # system_info = _check_system_info()
475
+ # from machineconfig.scripts.python.helpers.helpers_devops.devops_system_info import _check_system_info
476
+ from machineconfig.scripts.python.helpers.helpers_utils.python import get_machine_specs
477
+ system_info = get_machine_specs()
478
+ from typing import cast
479
+ system_info = cast(dict[str, str], system_info)
485
480
  _display_system_info(system_info)
486
-
487
481
  shell_status = _check_shell_profile_status()
488
482
  _display_shell_status(shell_status)
489
483
 
@@ -9,7 +9,7 @@ from rich.panel import Panel
9
9
  from rich.table import Table
10
10
  from rich.text import Text
11
11
 
12
- from machineconfig.scripts.python.helpers_repos.update import RepositoryUpdateResult, run_uv_sync, update_repository
12
+ from machineconfig.scripts.python.helpers.helpers_repos.update import RepositoryUpdateResult, run_uv_sync, update_repository
13
13
  from machineconfig.utils.io import read_ini
14
14
  from machineconfig.utils.source_of_truth import DEFAULTS_PATH
15
15
 
@@ -2,26 +2,13 @@
2
2
  """
3
3
  Interactive Machine Configuration Setup Script
4
4
 
5
- A Python version of the interactive installation script that uses questionary
6
- for better user experience with checkbox selections.
7
-
8
-
9
- # echo # 📧 Thunderbird Setup Note:
10
- # Run after installing Thunderbird and starting it once:
11
- # cd ~/AppData/Roaming/ThunderBird/Profiles
12
- # $res = ls
13
- # $name = $res[0].Name
14
- # mv $backup_folder $name
15
- #
16
5
 
17
6
 
18
7
  """
19
8
 
20
9
  import sys
21
10
  from pathlib import Path
22
- # from typing import cast
23
11
  import platform
24
-
25
12
  import questionary
26
13
  from questionary import Choice
27
14
  from rich.console import Console
@@ -29,12 +16,11 @@ from rich.panel import Panel
29
16
  from rich.text import Text
30
17
  from machineconfig.utils.code import run_shell_script
31
18
 
32
- # _ = cast
33
19
  console = Console()
34
20
 
35
21
 
36
22
  def display_header() -> None:
37
- from machineconfig.utils.installer import get_machineconfig_version
23
+ from machineconfig.utils.installer_utils.installer_runner import get_machineconfig_version
38
24
  from rich.align import Align
39
25
 
40
26
  # Fancy ASCII art header
@@ -66,82 +52,52 @@ def display_header() -> None:
66
52
  console.print()
67
53
  console.print(Align.center(Text(bug_report, style="dim white")))
68
54
  console.print()
69
- def display_completion_message() -> None:
70
- completion_text = Text("INSTALLATION COMPLETE", style="bold green")
71
- subtitle_text = Text("System setup finished successfully", style="italic green")
72
- console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
73
- def display_dotfiles_instructions() -> None:
74
- header_text = Text("DOTFILES MIGRATION", style="bold yellow")
75
- subtitle_text = Text("Configuration transfer options", style="italic yellow")
76
- instructions = """
77
- 🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
78
- On original machine, run:
79
- [dim]cd ~/dotfiles/creds/msc
80
- easy-sharing . --password rew --username al[/dim]
81
- Then open brave on new machine to get MouseWithoutBorders password
82
-
83
- 🔐 [bold blue]Method 2: USING SSH[/bold blue]
84
- FROM REMOTE, RUN:
85
- [dim]fptx ~/dotfiles $USER@$(hostname):^ -z
86
- # OR, using IP address if router has not yet found the hostname:
87
- fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
88
-
89
- ☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
90
- [dim]cd ~
91
- cloud_copy SHARE_URL . --config ss[/dim]
92
- (requires symlinks to be created first)"""
93
- console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
94
55
 
95
56
 
96
57
  def get_installation_choices() -> list[str]:
97
58
  """Get user choices for installation options."""
98
59
  choices = [
99
- Choice(value="install_machineconfig", title="🐍 Install machineconfig.", checked=False),
100
- Choice(value="ESSENTIAL_SYSTEM", title="📥 Install Essential System Packages.", checked=False),
101
- Choice(value="ESSENTIAL", title="⚡ Install CLI apps essentials", checked=False),
102
- Choice(value="DEV_SYSTEM", title="🛠️ Install CLI apps development.", checked=False),
103
- Choice(value="TerminalEyeCandy", title="🎨 Install CLI apps terminal eye candy.", checked=False),
104
- Choice(value="install_ssh_server", title="🔒 Install SSH Server", checked=False),
105
- Choice(value="install_shell_profile", title="🐚 Configure Shell Profile.", checked=False),
106
- Choice(value="retrieve_repositories", title="📚 Retrieve Repositories", checked=False),
107
- Choice(value="retrieve_data", title="💾 Retrieve Data.", checked=False),
60
+ Choice(value="install_machineconfig", title="🐍 Install machineconfig cli.", checked=False),
61
+ Choice(value="sysabc", title="📥 Install System Package Manager (Needed for other apps to be installed).", checked=False),
62
+ Choice(value="termabc", title="⚡ Install Terminal CLI apps essentials (group `termabc`)", checked=False),
63
+ Choice(value="install_shell_profile", title="🐚 Configure Shell Profile And Map Other Configs.", checked=False),
64
+ Choice(value="install_ssh_server", title="🔒 [ADVANCED] Configure SSH Server", checked=False),
65
+ Choice(value="retrieve_repositories", title="📚 [ADVANCED] Retrieve Repositories", checked=False),
66
+ Choice(value="retrieve_data", title="💾 [ADVANCED] Retrieve Data.", checked=False),
108
67
  ]
109
- # Add Windows-specific options
110
- if platform.system() == "Windows":
111
- choices.append(Choice(value="install_windows_desktop", title="💻 Install Windows Desktop Apps - Install nerd fonts and set WT config.", checked=False))
112
68
  selected = questionary.checkbox("Select the installation options you want to execute:", choices=choices, show_description=True).ask()
113
69
  return selected or []
114
70
 
115
71
 
116
72
  def execute_installations(selected_options: list[str]) -> None:
117
73
  for maybe_a_group in selected_options:
118
- if maybe_a_group in ("ESSENTIAL", "DEV", "ESSENTIAL_SYSTEM", "DEV_SYSTEM", "TerminalEyeCandy"):
74
+ if maybe_a_group in ("termabc", "sysabc"):
119
75
  console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
120
76
  console.print("🔧 Installing CLI applications", style="bold cyan")
121
77
  try:
122
- from machineconfig.utils.installer_utils.installer import main as devops_devapps_install_main
78
+ from machineconfig.utils.installer_utils.installer_cli import main_installer_cli as devops_devapps_install_main
123
79
  devops_devapps_install_main(group=True, which=maybe_a_group, interactive=False)
124
80
  console.print("✅ CLI applications installed successfully", style="bold green")
125
81
  except Exception as e:
126
82
  console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
127
- run_shell_script(". $HOME/.bashrc")
83
+ if platform.system() != "Windows":
84
+ run_shell_script(". $HOME/.bashrc", display_script=True, clean_env=False)
128
85
 
129
86
  if "install_machineconfig" in selected_options:
130
87
  console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
131
- from machineconfig.scripts.python.helpers_devops.cli_self import install
132
- install()
88
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_self import install
89
+ install(copy_assets=True, dev=False)
133
90
 
134
91
  if "install_ssh_server" in selected_options:
135
92
  console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
136
- import platform
137
93
  if platform.system() == "Windows":
138
94
  powershell_script = """Write-Host "🔧 Installing and configuring SSH server..."
139
95
  Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
140
96
  Start-Service sshd
141
97
  Set-Service -Name sshd -StartupType 'Automatic'"""
142
- run_shell_script(f'powershell -Command "{powershell_script}"')
98
+ run_shell_script(f'powershell -Command "{powershell_script}"', display_script=True, clean_env=False)
143
99
  else:
144
- run_shell_script("sudo nala install openssh-server -y")
100
+ run_shell_script("sudo nala install openssh-server -y", display_script=True, clean_env=False)
145
101
 
146
102
  if "install_shell_profile" in selected_options:
147
103
  console.print(Panel("🐚 [bold green]SHELL PROFILE[/bold green]\n[italic]Shell configuration setup[/italic]", border_style="green"))
@@ -150,30 +106,75 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
150
106
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
151
107
  create_default_shell_profile()
152
108
  console.print("✅ Shell profile configured successfully", style="bold green")
109
+ from machineconfig.profile.create_links_export import main_from_parser
110
+ main_from_parser(sensitivity="public", method="copy", on_conflict="overwrite-default-path", which="all")
111
+ if platform.system() == "Windows":
112
+ from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
113
+ install_nerd_fonts()
114
+ from machineconfig.settings.wt.set_wt_settings import main as set_wt_settings_main
115
+ set_wt_settings_main()
153
116
  except Exception as e:
154
117
  console.print(f"❌ Error configuring shell profile: {e}", style="bold red")
155
118
 
119
+ if "retrieve_repositories" in selected_options or "retrieve_data" in selected_options:
120
+ # we cannot proceed before dotfiles are in place
121
+ if Path.home().joinpath("dotfiles").exists():
122
+ console.print("✅ Dotfiles directory found.", style="bold green")
123
+ else:
124
+ header_text = Text("DOTFILES MIGRATION", style="bold yellow")
125
+ subtitle_text = Text("Configuration transfer options", style="italic yellow")
126
+ instructions = """
127
+ On remote, run:
128
+ devops config export-dotfiles --password pwd
129
+ On new machine, run:
130
+ devops config import-dotfiles --password pwd
131
+ """
132
+ console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
133
+ i_sorted_it_out = "I have sorted out dotfiles migration already and want to proceed."
134
+ exit_now = "Exit now and sort out dotfiles migration first."
135
+ fetch_over_lan = "I already exposed dotfiles over LAN, let's fetch them now."
136
+ fetch_over_ssh = "I wanted to bring them using SSH SCP now."
137
+ options: list[str] = [
138
+ i_sorted_it_out,
139
+ exit_now,
140
+ fetch_over_lan,
141
+ fetch_over_ssh,
142
+ ]
143
+ answer = questionary.select("⚠️ DOTFILES NOT FOUND. How do you want to proceed?", choices=options).ask()
144
+ if answer == i_sorted_it_out:
145
+ console.print("✅ Proceeding as per user confirmation.", style="bold green")
146
+ elif answer == exit_now:
147
+ console.print("❌ Exiting for dotfiles migration.", style="bold red")
148
+ sys.exit(0)
149
+ elif answer == fetch_over_lan:
150
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
151
+ import_dotfiles(use_ssh=False)
152
+ elif answer == fetch_over_ssh:
153
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
154
+ import_dotfiles(use_ssh=True)
155
+ if not Path.home().joinpath("dotfiles").exists():
156
+ console.print("❌ Dotfiles directory still not found after attempted import. Exiting...", style="bold red")
157
+ sys.exit(1)
158
+ # devops config sync --sensitivity public --method symlink --on-conflict overwrite-default-path --which all
159
+ # devops config sync --sensitivity private --method symlink --on-conflict overwrite-default-path --which all
160
+ from machineconfig.profile.create_links_export import main_from_parser
161
+ main_from_parser(sensitivity="private", method="symlink", on_conflict="overwrite-default-path", which="all")
162
+
156
163
  if "retrieve_repositories" in selected_options:
157
164
  console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
158
- from machineconfig.scripts.python.helpers_devops import cli_repos
159
- cli_repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
165
+ from machineconfig.scripts.python.helpers.helpers_devops import cli_repos
166
+ cli_repos.clone(interactive=True)
160
167
 
161
168
  if "retrieve_data" in selected_options:
162
169
  console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
163
170
  console.print("🔧 Retrieving backup data", style="bold cyan")
164
171
  try:
165
- from machineconfig.scripts.python.helpers_devops.devops_backup_retrieve import main_backup_retrieve
166
- main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None)
172
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_backup_retrieve import main_backup_retrieve
173
+ main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None, repo="all")
167
174
  console.print("✅ Backup data retrieved successfully", style="bold green")
168
175
  except Exception as e:
169
176
  console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
170
177
 
171
- if "install_windows_desktop" in selected_options:
172
- from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
173
- install_nerd_fonts()
174
- from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
175
- set_wt_settings_main()
176
-
177
178
 
178
179
  def main() -> None:
179
180
  display_header()
@@ -187,7 +188,13 @@ def main() -> None:
187
188
  console.print("❌ Installation cancelled.", style="bold red")
188
189
  sys.exit(0)
189
190
  execute_installations(selected_options=selected_options)
190
- display_completion_message()
191
+ completion_text = Text("INSTALLATION COMPLETE", style="bold green")
192
+ subtitle_text = Text("System setup finished successfully", style="italic green")
193
+ console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
194
+
195
+ from machineconfig.profile.create_shell_profile import reload_shell_profile_and_exit
196
+ reload_shell_profile_and_exit()
197
+
191
198
 
192
199
 
193
200
  if __name__ == "__main__":