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
@@ -1,23 +1,16 @@
1
1
  """shell"""
2
2
 
3
- from machineconfig.utils.path_extended import PathExtended
4
- from machineconfig.utils.source_of_truth import CONFIG_ROOT
5
3
  from pathlib import Path
6
- import platform
7
- import os
8
- import subprocess
9
- from rich.console import Console
10
- from rich.panel import Panel
11
4
 
12
5
 
13
- system = platform.system()
14
- sep = ";" if system == "Windows" else ":" # PATH separator, this is special for PATH object, not to be confused with PathExtended.sep (normal paths), usually / or \
15
- PATH = os.environ["PATH"].split(sep)
16
- console = Console()
17
- BOX_WIDTH = 100 # Define BOX_WIDTH or get it from a config
18
-
19
6
 
20
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():
@@ -37,8 +30,48 @@ def get_shell_profile_path() -> Path:
37
30
  return profile_path
38
31
 
39
32
 
33
+ def reload_shell_profile_and_exit() -> None:
34
+ import platform
35
+ if platform.system() == "Windows":
36
+ reload_init_script = "pwsh $PROFILE"
37
+ elif platform.system() == "Darwin":
38
+ reload_init_script = "source $HOME/.zshrc"
39
+ elif platform.system() == "Linux":
40
+ reload_init_script = "source $HOME/.bashrc"
41
+ else:
42
+ reload_init_script = ""
43
+ from machineconfig.utils.code import exit_then_run_shell_script
44
+ exit_then_run_shell_script(reload_init_script)
45
+
46
+
47
+ def get_nu_shell_profile_path() -> Path:
48
+ import platform
49
+ from rich.console import Console
50
+ from rich.panel import Panel
51
+ system = platform.system()
52
+ console = Console()
53
+ if system == "Windows":
54
+ profile_path = Path.home().joinpath(r"AppData\Roaming\nushell")
55
+ elif system == "Linux":
56
+ profile_path = Path.home().joinpath(".config/nushell")
57
+ elif system == "Darwin":
58
+ profile_path = Path.home().joinpath("Library/Application Support/nushell")
59
+ else:
60
+ raise ValueError(f"""Not implemented for this system {system}""")
61
+ console.print(Panel(f"""🐚 NU SHELL PROFILE | Working with path: `{profile_path}`""", title="[bold cyan]Nu Shell Profile[/bold cyan]", border_style="cyan"))
62
+ return profile_path
63
+
64
+
40
65
  def create_default_shell_profile() -> None:
41
66
  shell_profile_path = get_shell_profile_path()
67
+ import platform
68
+ import subprocess
69
+ from rich.console import Console
70
+ from rich.panel import Panel
71
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
72
+ from machineconfig.utils.path_extended import PathExtended
73
+ system = platform.system()
74
+ console = Console()
42
75
  if not shell_profile_path.exists():
43
76
  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"))
44
77
  shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
@@ -47,13 +80,17 @@ def create_default_shell_profile() -> None:
47
80
  from machineconfig.profile.create_helper import copy_assets_to_machine
48
81
  copy_assets_to_machine("settings") # init.ps1 or init.sh live here
49
82
  copy_assets_to_machine("scripts") # init scripts are going to reference those scripts.
83
+ shell_name = ""
50
84
  if system == "Windows":
85
+ shell_name = "pwsh"
51
86
  init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/pwsh/init.ps1")
52
87
  source_line = f""". {str(init_script.collapseuser(placeholder="$HOME"))}"""
53
88
  elif system == "Linux":
89
+ shell_name = "bash"
54
90
  init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/bash/init.sh")
55
91
  source_line = f"""source {str(init_script.collapseuser(placeholder="$HOME"))}"""
56
92
  elif system == "Darwin":
93
+ shell_name = "zsh"
57
94
  init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/zsh/init.sh")
58
95
  source_line = f"""source {str(init_script.collapseuser(placeholder="$HOME"))}"""
59
96
  else:
@@ -61,17 +98,24 @@ def create_default_shell_profile() -> None:
61
98
 
62
99
  was_shell_updated = False
63
100
  if source_line in shell_profile:
64
- console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
101
+ console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
65
102
  else:
66
103
  console.print(Panel("📝 PROFILE | Adding init script sourcing to profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
67
104
  shell_profile += "\n" + source_line + "\n"
68
- if system == "Linux":
105
+ if shell_name == "bash":
69
106
  result = subprocess.run(["cat", "/proc/version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
70
107
  if result.returncode == 0 and result.stdout:
71
108
  version_info = result.stdout.lower()
72
- if "microsoft" in version_info or "wsl" in version_info:
109
+ is_wsl = "microsoft" in version_info or "wsl" in version_info
110
+ if is_wsl:
73
111
  shell_profile += "\ncd $HOME"
74
112
  console.print("📌 WSL detected - adding 'cd $HOME' to profile to avoid Windows filesystem")
113
+ # Sync shell history between Windows and WSL
114
+ # https://www.hanselman.com/blog/sharing-powershell-history-between-windows-and-wsl
115
+ shell_profile += """
116
+ # Sync shell history between Windows and WSL
117
+ export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\\n'}history -a; history -c; history -r"
118
+ """
75
119
  was_shell_updated = True
76
120
  if was_shell_updated:
77
121
  shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
@@ -79,117 +123,38 @@ def create_default_shell_profile() -> None:
79
123
  console.print(Panel("✅ Profile updated successfully", title="[bold blue]Profile[/bold blue]", border_style="blue"))
80
124
 
81
125
 
82
- # def append_temporarily(dirs: list[str], kind: Literal["append", "prefix", "replace"]) -> str:
83
- # dirs_ = []
84
- # for path in dirs:
85
- # path_rel = PathExtended(path).collapseuser(strict=False)
86
- # if path_rel.as_posix() in PATH or str(path_rel) in PATH or str(path_rel.expanduser()) in PATH or path_rel.expanduser().as_posix() in PATH:
87
- # print(f"Path passed `{path}` is already in PATH, skipping the appending.")
88
- # else:
89
- # dirs_.append(path_rel.as_posix() if system == "Linux" else str(path_rel))
90
- # dirs = dirs_
91
- # if len(dirs) == 0:
92
- # return ""
93
-
94
- # if system == "Windows":
95
- # """Source: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.2"""
96
- # if kind == "append":
97
- # command = rf'$env:Path += ";{sep.join(dirs)}"' # Append to the Path variable in the current window:
98
- # elif kind == "prefix":
99
- # command = rf'$env:Path = "{sep.join(dirs)};" + $env:Path' # Prefix the Path variable in the current window:
100
- # elif kind == "replace":
101
- # command = rf'$env:Path = "{sep.join(dirs)}"' # Replace the Path variable in the current window (use with caution!):
102
- # else:
103
- # raise KeyError
104
- # return command # if run is False else tm.run(command, shell="powershell")
105
- # elif system in ["Linux", "Darwin"]:
106
- # result = f'export PATH="{sep.join(dirs)}:$PATH"'
107
- # else:
108
- # raise ValueError
109
- # return result
110
-
111
-
112
- # def main_add_sources_to_shell_profile(profile_path: Optional[str], choice: Optional[str]) -> None:
113
- # sources: list[str] = read_toml(LIBRARY_ROOT.joinpath("profile/sources.toml"))[system.lower()]["files"]
114
- # console.print(Panel("🔄 Adding sources to shell profile", title="[bold blue]Sources[/bold blue]", border_style="blue"))
115
-
116
- # if choice is None:
117
- # choice_obj = choose_from_options(msg="Which patch to add?", options=sources + ["all", "none(EXIT)"], default="none(EXIT)", multi=True)
118
- # if isinstance(choice_obj, str):
119
- # if choice_obj == "all":
120
- # choice = choice_obj
121
- # elif choice_obj == "none(EXIT)":
122
- # return
123
- # else:
124
- # sources = [choice_obj]
125
- # else: # isinstance(choice_obj, list):
126
- # sources = choice_obj
127
- # elif choice == "none(EXIT)":
128
- # return
129
-
130
- # if isinstance(profile_path, str):
131
- # profile_path_obj = PathExtended(profile_path)
132
- # else:
133
- # profile_path_obj = get_shell_profile_path()
134
- # profile = profile_path_obj.read_text(encoding="utf-8")
135
-
136
- # for a_file in sources:
137
- # tmp = a_file.replace("REPO_ROOT", REPO_ROOT.as_posix()).replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix())
138
- # file = PathExtended(tmp).collapseuser() # this makes the shell profile interuseable across machines.
139
- # file = file.as_posix() if system == "Linux" else str(file)
140
- # if file not in profile:
141
- # if system == "Windows":
142
- # profile += f"\n. {file}"
143
- # console.print(f"➕ Added PowerShell source: {file}")
144
- # elif system == "Linux":
145
- # profile += f"\nsource {file}"
146
- # console.print(f"➕ Added Bash source: {file}")
147
- # else:
148
- # raise ValueError(f"Not implemented for this system {system}")
149
- # else:
150
- # console.print(f"⏭️ Source already present: {file}")
151
-
152
- # profile_path_obj.write_text(profile, encoding="utf-8")
153
- # console.print(Panel("✅ Shell profile updated with sources", title="[bold blue]Sources[/bold blue]", border_style="blue"))
154
-
155
-
156
- # def main_add_patches_to_shell_profile(profile_path: Optional[str], choice: Optional[str]) -> None:
157
- # patches: list[str] = [item.as_posix() for item in PathExtended(LIBRARY_ROOT).joinpath(f"profile/patches/{system.lower()}").search()]
158
-
159
- # console.print(Panel("🩹 Adding patches to shell profile", title="[bold blue]Patches[/bold blue]", border_style="blue"))
160
-
161
- # if choice is None:
162
- # choice_chosen = choose_from_options(msg="Which patch to add?", options=list(patches) + ["all", "none(EXIT)"], default="none(EXIT)", multi=False)
163
- # assert isinstance(choice_chosen, str), f"Choice must be a string or a list of strings, not {type(choice)}"
164
- # choice = choice_chosen
165
- # if choice == "none(EXIT)":
166
- # return None
167
- # elif str(choice) == "all":
168
- # console.print("📌 Adding all patches to profile")
169
- # else:
170
- # patches = [choice]
171
- # console.print(f"📌 Adding selected patch: {choice}")
172
-
173
- # profile_path_obj = PathExtended(profile_path) if isinstance(profile_path, str) else get_shell_profile_path()
174
- # profile = profile_path_obj.read_text(encoding="utf-8")
175
-
176
- # for patch_path in patches:
177
- # patch_path_obj = PathExtended(patch_path)
178
- # patch = patch_path_obj.read_text(encoding="utf-8")
179
- # if patch in profile:
180
- # console.print(f"⏭️ Patch already present: {patch_path_obj.name}")
181
- # else:
182
- # profile += "\n" + patch
183
- # console.print(f"➕ Added patch: {patch_path_obj.name}")
184
-
185
- # if system == "Linux":
186
- # res = Terminal().run("cat /proc/version").op
187
- # if "microsoft" in res.lower() or "wsl" in res.lower():
188
- # 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.
189
- # console.print("📌 WSL detected - adding 'cd ~' to profile to avoid Windows filesystem")
190
-
191
- # profile_path_obj.write_text(profile, encoding="utf-8")
192
- # console.print(Panel("✅ Shell profile updated with patches", title="[bold blue]Patches[/bold blue]", border_style="blue"))
126
+ def create_nu_shell_profile() -> None:
127
+ from rich.console import Console
128
+ from rich.panel import Panel
129
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
130
+ from machineconfig.utils.path_extended import PathExtended
131
+ console = Console()
132
+ nu_profile_path = get_nu_shell_profile_path()
133
+ config_dir = nu_profile_path
134
+ config_file = config_dir.joinpath("config.nu")
135
+ if not config_dir.exists():
136
+ 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"))
137
+ config_dir.mkdir(parents=True, exist_ok=True)
138
+ if not config_file.exists():
139
+ 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"))
140
+ config_file.write_text("", encoding="utf-8")
141
+ config_content = config_file.read_text(encoding="utf-8")
142
+ from machineconfig.profile.create_helper import copy_assets_to_machine
143
+ copy_assets_to_machine("settings")
144
+ copy_assets_to_machine("scripts")
145
+ init_script = PathExtended(CONFIG_ROOT).joinpath("settings/shells/nushell/init.nu")
146
+ source_line = f"""use {str(init_script)}"""
147
+ was_config_updated = False
148
+ if source_line in config_content:
149
+ 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"))
150
+ else:
151
+ console.print(Panel("📝 NU SHELL CONFIG | Adding init script sourcing to config.nu", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
152
+ config_content += "\n" + source_line + "\n"
153
+ was_config_updated = True
154
+ if was_config_updated:
155
+ config_dir.mkdir(parents=True, exist_ok=True)
156
+ config_file.write_text(config_content, encoding="utf-8")
157
+ console.print(Panel("✅ Nu shell config updated successfully", title="[bold cyan]Nu Shell Config[/bold cyan]", border_style="cyan"))
193
158
 
194
159
 
195
160
  if __name__ == "__main__":
@@ -0,0 +1,45 @@
1
+
2
+ # locations to be backed up to the cloud.
3
+ # os can be 'windows', 'linux', 'darwin' or 'any' or comma separated values of the previous values.
4
+
5
+ [thunderbird]
6
+ windows_files = {path_local = '~/AppData/Roaming/Thunderbird/Profiles', path_cloud = '^', encrypt = true, zip = true, rel2home = true, os = 'windows'}
7
+ windows_ini = {path_local = '~/AppData/Roaming/Thunderbird/profiles.ini', path_cloud = '^', encrypt = false, zip = false, rel2home = true, os = 'windows'}
8
+ linux_files = {path_local = '~/.thunderbird', path_cloud = '^', encrypt = true, zip = true, rel2home = true, os = 'linux'}
9
+
10
+
11
+ [zoxide]
12
+ windows_db = {path_local = '~/AppData/Local/zoxide/db.zo', path_cloud = '^', encrypt = false, zip = false, rel2home = true, os = 'windows'}
13
+ linux_db = {path_local = '~/.local/share/zoxide/db.zo', path_cloud = '^', encrypt = false, zip = false, rel2home = true, os = 'linux'}
14
+
15
+
16
+ # Atuin shell history tool
17
+ # Docs: https://docs.atuin.sh/cli/configuration/config/#db_path
18
+ # Default db_path: ~/.local/share/atuin/history.db (same on all platforms, uses XDG_DATA_HOME if set)
19
+ [atuin]
20
+ history = {path_local = '~/.local/share/atuin/history.db', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'any'}
21
+
22
+
23
+ # McFly shell history search tool
24
+ # Docs: https://github.com/cantino/mcfly#database-location
25
+ # macOS: ~/Library/Application Support/McFly/history.db
26
+ # Linux: ~/.local/share/mcfly/history.db (via $XDG_DATA_DIR)
27
+ # Windows: %LOCALAPPDATA%\McFly\data\history.db
28
+ [mcfly]
29
+ macos_history = {path_local = '~/Library/Application Support/McFly/history.db', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'darwin'}
30
+ linux_history = {path_local = '~/.local/share/mcfly/history.db', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'linux'}
31
+ windows_history = {path_local = '~/AppData/Local/McFly/data/history.db', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'windows'}
32
+
33
+
34
+ [shell_history]
35
+ bash_history = {path_local = '~/.bash_history', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'linux'}
36
+ zsh_history = {path_local = '~/.zsh_history', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'darwin'}
37
+ pwsh_history = {path_local = '~/AppData/Roaming/Microsoft/Windows/PowerShell/PSReadLine/ConsoleHost_history.txt', path_cloud = '^', encrypt = true, zip = false, rel2home = true, os = 'windows'}
38
+
39
+
40
+ #[dotfiles]
41
+ # repo = {path_local = '~/dotfiles', path_cloud = '^', encrypt = true, zip = true, rel2home = true, os = 'any'}
42
+
43
+
44
+ [ipython]
45
+ profile = {path_local = '~/.ipython', path_cloud = '^', encrypt = true, zip = true, rel2home = true, os = 'any'}
@@ -0,0 +1,249 @@
1
+
2
+
3
+ # =================== PRIVATE ================================
4
+ # os can be 'windows', 'linux,darwin', 'darwin' or 'any'
5
+
6
+ [git]
7
+ gitconfig = {original = '~/.gitconfig', self_managed = '~/dotfiles/creds/git/.gitconfig', os = 'any'}
8
+ gitcred = {original = '~/.git-credentials', self_managed = '~/dotfiles/creds/git/.git-credentials', os = 'any'}
9
+
10
+ [ssh]
11
+ keys = {original = '~/.ssh', self_managed = '~/dotfiles/creds/.ssh', contents = true, os = 'any'}
12
+
13
+ [gpg]
14
+ keys = {original = '~/.gnupg', self_managed = '~/dotfiles/creds/.gnupg', contents = true, os = 'any'}
15
+
16
+ [pypi]
17
+ creds = {original = '~/.pypirc', self_managed = '~/dotfiles/creds/msc/.pypirc', os = 'any'}
18
+
19
+ [rclone]
20
+ config_xdg = {original = '~/.config/rclone/rclone.conf', self_managed = '~/dotfiles/creds/rclone/rclone.conf', os = 'linux,darwin'}
21
+ config_windows = {original = '~/AppData/Roaming/rclone/rclone.conf', self_managed = '~/dotfiles/creds/rclone/rclone.conf', os = 'windows'}
22
+
23
+ [cloudflare]
24
+ config = {original = '~/.cloudflared', self_managed = '~/dotfiles/creds/cloudflare/.cloudflared', os = 'any'}
25
+
26
+ [ngrok]
27
+ config_linux = {original = '~/.config/ngrok/ngrok.yml', self_managed = '~/dotfiles/creds/tokens/ngrok.yml', os = 'linux,darwin'}
28
+ config_windows = {original = '~/AppData/Local/ngrok/ngrok.yml', self_managed = '~/dotfiles/creds/tokens/ngrok.yml', os = 'windows'}
29
+
30
+ [m365]
31
+ config1 = {original = '~/.cli-m365-msal.json', self_managed = '~/dotfiles/creds/tokens/.cli-m365-msal.json', os = 'any'}
32
+ config2 = {original = '~/.cli-m365-all-connections.json', self_managed = '~/dotfiles/creds/tokens/.cli-m365-all-connections.json', os = 'any'}
33
+ config3 = {original = '~/.cli-m365-connection.json', self_managed = '~/dotfiles/creds/tokens/.cli-m365-connection.json', os = 'any'}
34
+ # config2 = {original = '~/.cli-m365-tokens.json', self_managed = '~/dotfiles/creds/tokens/.cli-m365-tokens.json'}
35
+
36
+ [remmina]
37
+ data = {original = '~/.var/app/org.remmina.Remmina/data/remmina', self_managed = '~/dotfiles/creds/RDP/remmina/data/remmina', os = 'any'}
38
+
39
+ [webapp_linux]
40
+ brave = {original = '~/.local/share/applications', self_managed = '~/dotfiles/config/webapps/linux/brave', contents = true, os = 'linux,darwin'}
41
+
42
+ # [startup_windows]
43
+ # startup = {original = '~/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup', self_managed = '~/dotfiles/scripts/windows_startup', contents = true}
44
+
45
+ # [aws]
46
+ # config = {original = '~/.aws/config', self_managed = '~/dotfiles/aws/.aws', contents = true}
47
+
48
+ [wt_windows]
49
+ settings = { original = '~/AppData/Local/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe/LocalState/settings.json', self_managed = 'CONFIG_ROOT/settings/shells/wt/settings.json' , os = 'windows'}
50
+
51
+
52
+ # =================== LLMs ============================
53
+
54
+ [chatgpt]
55
+ config = { original = '~/.config/chatgpt/config.json', self_managed = '~/dotfiles/creds/llm/chatgpt_cli/config.json' , os = 'any'}
56
+
57
+ [mods]
58
+ config = {original = '~/.config/mods/mods.yml', self_managed = '~/dotfiles/creds/llm/mods_cli/mods.yml', os = 'any'}
59
+
60
+ [github_cli_token]
61
+ token = {original = '~/.copilot-cli-access-token', self_managed = '~/dotfiles/creds/llm/github_cli/.copilot-cli-access-token', os = 'any'}
62
+
63
+ [aider]
64
+ config = {original = '~/.aider.conf.yml', self_managed = '~/dotfiles/creds/llm/aider/.aider.conf.yml', os = 'any'}
65
+
66
+ [marvin]
67
+ config = {original = '~/.marvin/.env', self_managed = '~/dotfiles/creds/llm/marvin/.env', os = 'any'}
68
+ threads = {original = '~/.marvin/cli/threads/default.json', self_managed = '~/dotfiles/creds/llm/marvin/threads/default.json', os = 'any'}
69
+
70
+ [docker]
71
+ config = {original = '~/.docker/config.json', self_managed = '~/dotfiles/creds/docker/config.json', os = 'any'}
72
+
73
+
74
+ # =========================== PUBLIC ======================================
75
+
76
+ [marimo]
77
+ config = {original = '~/.config/marimo/marimo.toml', self_managed = 'CONFIG_ROOT/settings/marimo/marimo.toml', os = 'any'}
78
+
79
+ [presenterm]
80
+ config = {original = '~/.config/presenterm/config.yaml', self_managed = 'CONFIG_ROOT/settings/presenterm/config.yaml', os = 'any'}
81
+
82
+ [keras]
83
+ config = {original = '~/.keras/keras.json', self_managed = 'CONFIG_ROOT/settings/keras/keras.json', os = 'any'}
84
+
85
+ # [streamlit]
86
+ # config = {original = '~/.streamlit/config.toml', self_managed = 'CONFIG_ROOT/settings/streamlit/config.toml'}
87
+
88
+ [procs]
89
+ config = {original = '~/.procs.toml', self_managed = 'CONFIG_ROOT/settings/procs/.procs.toml', os = 'any'}
90
+ config_again = {original = '~/.config/procs/config.toml', self_managed = 'CONFIG_ROOT/settings/procs/.procs.toml', os = 'any'}
91
+
92
+ [rofi_linux]
93
+ config = {original = '~/.config/rofi/config.rasi', self_managed = 'CONFIG_ROOT/settings/rofi/config.rasi', os = 'linux,darwin'}
94
+
95
+ [yazi]
96
+ yazi_windows = {original = '~/AppData/Roaming/yazi/config/yazi.toml', self_managed = 'CONFIG_ROOT/settings/yazi/yazi_windows.toml', os = 'windows'}
97
+ keymap_windows = {original = '~/AppData/Roaming/yazi/config/keymap.toml', self_managed = 'CONFIG_ROOT/settings/yazi/keymap_windows.toml', os = 'windows'}
98
+ theme_windows = {original = '~/AppData/Roaming/yazi/config/theme.toml', self_managed = 'CONFIG_ROOT/settings/yazi/theme.toml', os = 'windows'}
99
+ init_windows = {original = '~/AppData/Roaming/yazi/config/init.lua', self_managed = 'CONFIG_ROOT/settings/yazi/init.lua', os = 'windows'}
100
+ yazi_linux = {original = '~/.config/yazi/yazi.toml', self_managed = 'CONFIG_ROOT/settings/yazi/yazi_linux.toml', os = 'linux,darwin'}
101
+ keymap_linux = {original = '~/.config/yazi/keymap.toml', self_managed = 'CONFIG_ROOT/settings/yazi/keymap_linux.toml', os = 'linux,darwin'}
102
+ theme_linux = {original = '~/.config/yazi/theme.toml', self_managed = 'CONFIG_ROOT/settings/yazi/theme.toml', os = 'linux,darwin'}
103
+ init_linux = {original = '~/.config/yazi/init.lua', self_managed = 'CONFIG_ROOT/settings/yazi/init.lua', os = 'linux,darwin'}
104
+ yazi_picker_linux = { original = '~/.config/helix/yazi-picker.sh', self_managed = 'CONFIG_ROOT/settings/helix/yazi-picker.sh' , os = 'linux,darwin'}
105
+
106
+ [television]
107
+ cable_linux = {original = '~/.config/television/cable', self_managed = 'CONFIG_ROOT/settings/television/cable_unix', contents = true, os = 'linux,darwin'}
108
+ cable_windows = {original = '~/AppData/Local/television/config/cable', self_managed = 'CONFIG_ROOT/settings/television/cable_windows', contents = true, os = 'windows'}
109
+
110
+ [tv]
111
+ config_linux = {original = '~/.config/television/config.toml', self_managed = 'CONFIG_ROOT/settings/tv/config.toml', os = 'linux,darwin'}
112
+ themes_linux = {original = '~/.config/television/themes', self_managed = 'CONFIG_ROOT/settings/tv/themes', contents = true, os = 'linux,darwin'}
113
+ config_windows = {original = '~/AppData/Local/television/config.toml', self_managed = 'CONFIG_ROOT/settings/tv/config.toml', os = 'windows'}
114
+ themes_windows = {original = '~/AppData/Local/television/themes', self_managed = 'CONFIG_ROOT/settings/tv/themes', contents = true, os = 'windows'}
115
+
116
+ [lf]
117
+ config_windows = {original = '~/AppData/Local/lf/lfrc', self_managed = 'CONFIG_ROOT/settings/lf/windows/lfrc', os = 'windows'}
118
+ colors_windows = {original = '~/AppData/Local/lf/colors', self_managed = 'CONFIG_ROOT/settings/lf/windows/colors', os = 'windows'}
119
+ icons_windows = {original = '~/AppData/Local/lf/icons', self_managed = 'CONFIG_ROOT/settings/lf/windows/icons', os = 'windows'}
120
+ config_linux = {original = '~/.config/lf/lfrc', self_managed = 'CONFIG_ROOT/settings/lf/linux/lfrc', os = 'linux,darwin'}
121
+ colors_linux = {original = '~/.config/lf/colors', self_managed = 'CONFIG_ROOT/settings/lf/linux/colors', os = 'linux,darwin'}
122
+ icons_linux = {original = '~/.config/lf/icons', self_managed = 'CONFIG_ROOT/settings/lf/linux/icons', os = 'linux,darwin'}
123
+
124
+ [broot]
125
+ config = {original = '~/.config/broot/conf.toml', self_managed = 'CONFIG_ROOT/settings/broot/conf.toml', os = 'any'}
126
+
127
+ [pistol_linux]
128
+ config = {original = '~/.config/pistol/pistol.conf', self_managed = 'CONFIG_ROOT/settings/pistol/pistol.conf', os = 'linux,darwin'}
129
+
130
+ [glow]
131
+ config = {original = '~/.config/glow/glow.yml', self_managed = 'CONFIG_ROOT/settings/glow/glow.yml', os = 'any'}
132
+
133
+ [gromit_linux]
134
+ config = {original = '~/.var/app/net.christianbeier.Gromit-MPX/config/gromit-mpx.cfg', self_managed = 'CONFIG_ROOT/settings/gromit-mpx/gromit-mpx.cfg', copy = true, os = 'linux,darwin'}
135
+
136
+
137
+ #[broot_windows]
138
+ #config = { original = '~/AppData/Roaming/dystroy/config', self_managed = 'CONFIG_ROOT/settings/broot/config' }
139
+
140
+ [starship]
141
+ config = {original = '~/.config/starship.toml', self_managed = 'CONFIG_ROOT/settings/shells/starship/starship.toml', os = 'any'}
142
+
143
+
144
+ [kanata]
145
+ config = {original = '~/.config/kanata/kanata.kbd', self_managed = 'CONFIG_ROOT/settings/keyboard/kanata/kanata.kbd', os = 'any'}
146
+
147
+ [espanso]
148
+ config = {original = '~/.config/espanso/config/default.yml', self_managed = 'CONFIG_ROOT/settings/keyboard/espanso/config/default.yml', os = 'any'}
149
+ match = {original = '~/.config/espanso/match/base.yml', self_managed = 'CONFIG_ROOT/settings/keyboard/espanso/match/base.yml', copy = true, os = 'any'}
150
+
151
+
152
+ [pudb]
153
+ config = {original = '~/.config/pudb/pudb.cfg', self_managed = 'CONFIG_ROOT/settings/pudb/pudb.cfg', os = 'any'}
154
+
155
+
156
+ # ============================= shells profiles ==================================
157
+
158
+ # [powershell_windows]
159
+ # CurrentUserCurrentHost = {original = '~/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1', self_managed = '~/dotfiles/shells/windows_powershell/CurrentUserCurrentHost/Microsoft.PowerShell_profile.ps1'}
160
+ # CurrentUserAllHosts = {original = '~/Documents/WindowsPowerShell/profile.ps1', self_managed = '~/dotfiles/shells/windows_powershell/AllUsersCurrentHost/profile.ps1'}
161
+ # AllUsersCurrentHost = {original = 'C:/Windows/System32/WindowsPowerShell/v1.0/Microsoft.PowerShell_profile.ps1', self_managed = '~/dotfiles/shells/powershell/AllUsersCurrentHost/Microsoft.PowerShell_profile.ps1'}
162
+ # AllUsersAllHosts = {original = 'C:/Windows/System32/WindowsPowerShell/v1.0/profile.ps1', self_managed = '~/dotfiles/shells/windows_powershell/AllUsersAllHosts/profile.ps1'}
163
+
164
+ # [pwsh_windows]
165
+ # CurrentUserCurrentHost = {original = '~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1', self_managed = 'CONFIG_ROOT/settings/shells/pwsh/init.ps1'}
166
+ # CurrentUserAllHosts = {original = '~/Documents/PowerShell/profile.ps1', self_managed = 'CONFIG_ROOT/settings/shells/pwsh/profile.ps1'}
167
+ # AllUsersCurrentHost = {original = 'C:/Program Files/PowerShell/7/Microsoft.PowerShell_profile.ps1', self_managed = 'CONFIG_ROOT/settings/shells/pwsh/init.ps1'}
168
+ # AllUsersAllHosts = {original = 'C:/Program Files/PowerShell/7/profile.ps1', self_managed = 'CONFIG_ROOT/settings/shells/pwsh/init.ps1'}
169
+
170
+
171
+ [nushell]
172
+ config_windows = {original = '~/AppData/Roaming/nushell/config.nu', self_managed = 'CONFIG_ROOT/settings/shells/nushell/config.nu', os = 'windows'}
173
+ env_windows = {original = '~/AppData/Roaming/nushell/env.nu', self_managed = 'CONFIG_ROOT/settings/shells/nushell/env.nu', os = 'windows'}
174
+ config_linux = {original = '~/.config/nushell/config.nu', self_managed = 'CONFIG_ROOT/settings/shells/nushell/config.nu', os = 'linux,darwin'}
175
+ env_linux = {original = '~/.config/nushell/env.nu', self_managed = 'CONFIG_ROOT/settings/shells/nushell/env.nu', os = 'linux,darwin'}
176
+
177
+ [kitty_linux]
178
+ config = {original = '~/.config/kitty/kitty.conf', self_managed = 'CONFIG_ROOT/settings/shells/kitty/kitty.conf', os = 'linux,darwin'}
179
+
180
+ [alacritty]
181
+ config_linux = {original = '~/.config/alacritty/alacritty.toml', self_managed = 'CONFIG_ROOT/settings/shells/alacritty/alacritty.toml', os = 'linux,darwin'}
182
+ config_yaml_linux = {original = '~/.config/alacritty/alacritty.yml', self_managed = 'CONFIG_ROOT/settings/shells/alacritty/alacritty.yml', os = 'linux,darwin'}
183
+ config_windows = {original = '~/AppData/Roaming/alacritty/alacritty.toml', self_managed = 'CONFIG_ROOT/settings/shells/alacritty/alacritty.toml', os = 'windows'}
184
+
185
+ [hyper_terminal]
186
+ config = {original = '~/.hyper.js', self_managed = 'CONFIG_ROOT/settings/shells/hyper/.hyper.js', os = 'any'}
187
+
188
+ [wezterminal]
189
+ config = {original = '~/.config/wezterm/wezterm.lua', self_managed = 'CONFIG_ROOT/settings/shells/wezterm/wezterm.lua', os = 'any'}
190
+
191
+ [vtm_windows]
192
+ settings = {original = '~/.config/vtm/settings.xml', self_managed = 'CONFIG_ROOT/settings/shells/vtm/settings.xml', os = 'windows'}
193
+
194
+ [wsl_windows]
195
+ config = {original = '~/.wslconfig', self_managed = 'CONFIG_ROOT/settings/wsl/.wslconfig', os = 'windows'}
196
+
197
+ # [ipython_default_config]
198
+ # config = {original = '~/.ipython/profile_default/ipython_config.py', self_managed = 'CONFIG_ROOT/settings/shells/ipy/profiles/default/ipython_config.py'}
199
+ # play_extension = {original = '~/.ipython/profile_default/startup/playext.py', self_managed = 'CONFIG_ROOT/settings/shells/ipy/profiles/default/startup/playext.py'}
200
+
201
+ [mprocs_windows]
202
+ config = {original = '~/mprocs.yaml', self_managed = 'CONFIG_ROOT/settings/mprocs/windows/mprocs.yaml', os = 'windows'}
203
+
204
+ # [tmux_linux]
205
+ # config = {original = '~/.tmux.conf', self_managed = 'CONFIG_ROOT/settings/tmux/.tmux.conf'}
206
+ # tmate = {original = '~/.tmate.conf', self_managed = 'CONFIG_ROOT/settings/tmux/.tmate.conf'}
207
+
208
+
209
+ [zellij_linux]
210
+ config = { original = '~/.config/zellij', self_managed = 'CONFIG_ROOT/settings/zellij' , os = 'linux,darwin'}
211
+ #themes = { original = '~/.config/zellij/themes', self_managed = 'CONFIG_ROOT/settings/zellij/themes' }
212
+ #layouts = { original = '~/.config/zellij/layouts', self_managed = 'CONFIG_ROOT/settings/zellij/layouts' }
213
+
214
+
215
+ # ===================== IDEs ============================
216
+
217
+ [zed_linux]
218
+ settings = {original = '~/.config/zed/settings.json', self_managed = 'CONFIG_ROOT/settings/zed/settings.json', os = 'linux,darwin'}
219
+
220
+ [helix]
221
+ languages_windows = { original = '~/AppData/Roaming/helix/languages.toml', self_managed = 'CONFIG_ROOT/settings/helix/languages.toml' , os = 'windows'}
222
+ config_windows = { original = '~/AppData/Roaming/helix/config.toml', self_managed = 'CONFIG_ROOT/settings/helix/config.toml' , os = 'windows'}
223
+ languages_linux = { original = '~/.config/helix/languages.toml', self_managed = 'CONFIG_ROOT/settings/helix/languages.toml' , os = 'linux,darwin'}
224
+ config_linux = { original = '~/.config/helix/config.toml', self_managed = 'CONFIG_ROOT/settings/helix/config.toml' , os = 'linux,darwin'}
225
+
226
+ [lvim]
227
+ config_windows = { original = '~/AppData/Local/lvim/config.lua', self_managed = 'CONFIG_ROOT/settings/lvim/windows/config.lua' , os = 'windows'}
228
+ config_linux = { original = '~/.config/lvim/config.lua', self_managed = 'CONFIG_ROOT/settings/lvim/linux/config.lua' , os = 'linux,darwin'}
229
+
230
+
231
+ [svim]
232
+ init_windows = { original = '~/.SpaceVim.d/init.toml', self_managed = 'CONFIG_ROOT/settings/svim/windows/init.toml' , os = 'windows'}
233
+ init_linux = { original = '~/.SpaceVim.d/init.toml', self_managed = 'CONFIG_ROOT/settings/svim/linux/init.toml' , os = 'linux,darwin'}
234
+
235
+ [linters]
236
+ flake8 = {original = '~/.flake8', self_managed = 'CONFIG_ROOT/settings/linters/.flake8', os = 'any'}
237
+ # as per https://mypy.readthedocs.io/en/stable/config_file.html
238
+ mypy = {original = '~/mypy/config/mypy.ini', self_managed = 'CONFIG_ROOT/settings/linters/.mypy.ini', os = 'any'}
239
+ mypy2 = {original = '~/.config/mypy/config', self_managed = 'CONFIG_ROOT/settings/linters/.mypy.ini', os = 'any'}
240
+ ruff = {original = '~/.ruff.toml', self_managed = 'CONFIG_ROOT/settings/linters/.ruff.toml', os = 'any'}
241
+ pylint = {original = '~/.pylintrc', self_managed = 'CONFIG_ROOT/settings/linters/.pylintrc', os = 'any'}
242
+
243
+
244
+ [atuin]
245
+ config_linux = {original = '~/.config/atuin/config.toml', self_managed = 'CONFIG_ROOT/settings/atuin/config.toml', os = 'linux,darwin'}
246
+ themes_linux = {original = '~/.config/atuin/themes', self_managed = 'CONFIG_ROOT/settings/atuin/themes', contents = true, os = 'linux,darwin'}
247
+ config_windows = {original = '~/AppData/Roaming/atuin/config.toml', self_managed = 'CONFIG_ROOT/settings/atuin/config.toml', os = 'windows'}
248
+ themes_windows = {original = '~/AppData/Roaming/atuin/themes', self_managed = 'CONFIG_ROOT/settings/atuin/themes', contents = true, os = 'windows'}
249
+
@@ -1,4 +0,0 @@
1
- version = "0.5"
2
- release_notes = """
3
- created toml file for symlinks
4
- """
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env bash
2
+
3
+
4
+ wrap_in_shell_script() {
5
+ # set -euo pipefail
6
+ # ANSI color/style codes
7
+ # BOLD="\033[1m"
8
+ # RESET="\033[0m"
9
+ # GREEN="\033[32m"
10
+ # YELLOW="\033[33m"
11
+ # BLUE="\033[34m"
12
+ # RED="\033[31m"
13
+
14
+ local command="$1"
15
+ shift
16
+ local RANDOM_NAME=$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 12)
17
+ local OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
18
+ local OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
19
+ export OP_PROGRAM_PATH
20
+ # local timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
21
+ # printf "%b\n" "${BOLD}${BLUE}🛠️ machineconfig — running ${command}${RESET}"
22
+ # printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
23
+ # printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
24
+ # Forward arguments to the command
25
+ "$command" "$@"
26
+ if [[ -f "$OP_PROGRAM_PATH" ]]; then
27
+ printf "%b\n" "🚀 Taking over from python script @ ${OP_PROGRAM_PATH}${RESET}"
28
+ bat --style=full --theme=OneHalfDark --paging=never "$OP_PROGRAM_PATH"
29
+ # printf "%b\n" "${GREEN}▶ Running...${RESET}"
30
+ . "$OP_PROGRAM_PATH"
31
+ status=$?
32
+ # if [[ $status -eq 0 ]]; then
33
+ # printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
34
+ # else
35
+ # printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
36
+ # fi
37
+ else
38
+ echo " "
39
+ # printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
40
+ fi
41
+ }
42
+
43
+ if [[ $# -gt 0 ]]; then
44
+ wrap_in_shell_script "$@"
45
+ fi
46
+