machineconfig 5.14__py3-none-any.whl → 5.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of machineconfig might be problematic. Click here for more details.

Files changed (34) hide show
  1. machineconfig/scripts/python/count_lines_frontend.py +2 -2
  2. machineconfig/scripts/python/croshell.py +2 -2
  3. machineconfig/scripts/python/fire_jobs.py +2 -2
  4. machineconfig/scripts/python/interactive.py +26 -42
  5. machineconfig/scripts/python/share_terminal.py +2 -2
  6. machineconfig/setup_linux/apps.sh +69 -0
  7. machineconfig/setup_linux/apps_desktop.sh +113 -0
  8. machineconfig/setup_linux/apps_gui.sh +74 -0
  9. machineconfig/setup_linux/openssh_all.sh +24 -0
  10. machineconfig/setup_linux/openssh_wsl.sh +38 -0
  11. machineconfig/setup_linux/repos.sh +48 -0
  12. machineconfig/setup_linux/ve.sh +20 -0
  13. machineconfig/setup_windows/apps.ps1 +61 -0
  14. machineconfig/setup_windows/openssh-server.ps1 +39 -0
  15. machineconfig/setup_windows/openssh-server_add-sshkey.ps1 +32 -0
  16. machineconfig/setup_windows/openssh-server_add_identity.ps1 +11 -0
  17. machineconfig/setup_windows/openssh_all.ps1 +22 -0
  18. machineconfig/setup_windows/quirks.ps1 +7 -0
  19. machineconfig/setup_windows/repos.ps1 +39 -0
  20. machineconfig/setup_windows/symlinks.ps1 +5 -0
  21. machineconfig/setup_windows/symlinks2linux.ps1 +1 -0
  22. machineconfig/setup_windows/ve.ps1 +11 -0
  23. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -0
  24. machineconfig/setup_windows/wsl_refresh.ps1 +8 -0
  25. machineconfig/setup_windows/wt_and_pwsh.ps1 +9 -0
  26. machineconfig/utils/code.py +1 -1
  27. machineconfig/utils/files/headers.py +16 -9
  28. machineconfig/utils/installer_utils/installer.py +2 -2
  29. machineconfig/utils/terminal.py +1 -1
  30. {machineconfig-5.14.dist-info → machineconfig-5.16.dist-info}/METADATA +1 -1
  31. {machineconfig-5.14.dist-info → machineconfig-5.16.dist-info}/RECORD +34 -15
  32. {machineconfig-5.14.dist-info → machineconfig-5.16.dist-info}/WHEEL +0 -0
  33. {machineconfig-5.14.dist-info → machineconfig-5.16.dist-info}/entry_points.txt +0 -0
  34. {machineconfig-5.14.dist-info → machineconfig-5.16.dist-info}/top_level.txt +0 -0
@@ -8,8 +8,8 @@ def analyze_repo_development(repo_path: str = typer.Argument(..., help="Path to
8
8
  count_lines_path = Path(count_lines.__file__)
9
9
  # --project $HOME/code/machineconfig
10
10
  cmd = f"""uv run --python 3.13 --with machineconfig[plot] {count_lines_path} analyze-over-time {repo_path}"""
11
- from machineconfig.utils.code import run_script
12
- run_script(cmd)
11
+ from machineconfig.utils.code import run_shell_script
12
+ run_shell_script(cmd)
13
13
 
14
14
 
15
15
  if __name__ == "__main__":
@@ -145,8 +145,8 @@ from pathlib import Path
145
145
  else: profile = ""
146
146
  fire_line = f"uv run --python 3.13 --with machineconfig[plot] {interpreter} {interactivity} {profile} {str(pyfile)}"
147
147
 
148
- from machineconfig.utils.code import run_script
149
- run_script(fire_line)
148
+ from machineconfig.utils.code import run_shell_script
149
+ run_shell_script(fire_line)
150
150
 
151
151
 
152
152
  def arg_parser() -> None:
@@ -221,8 +221,8 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
221
221
  command = "$ErrorActionPreference = 'SilentlyContinue';\n" + command + "\nStart-Sleep -Seconds 0.5"
222
222
  else:
223
223
  raise NotImplementedError(f"Platform {platform.system()} not supported.")
224
- from machineconfig.utils.code import run_script
225
- run_script(command)
224
+ from machineconfig.utils.code import run_shell_script
225
+ run_shell_script(command)
226
226
 
227
227
 
228
228
  def main(
@@ -27,27 +27,23 @@ from questionary import Choice
27
27
  from rich.console import Console
28
28
  from rich.panel import Panel
29
29
  from rich.text import Text
30
- from machineconfig.utils.code import run_script as run_command
30
+ from machineconfig.utils.code import run_shell_script
31
31
 
32
32
  _ = cast
33
33
  console = Console()
34
34
 
35
35
 
36
36
  def display_header() -> None:
37
- """Display the script header."""
38
37
  header_text = Text("MACHINE CONFIGURATION", style="bold magenta")
39
38
  subtitle_text = Text("Interactive Installation Script", style="italic cyan")
40
39
  console.print(Panel(f"📦 {header_text}\n{subtitle_text}", border_style="blue", padding=(1, 2)))
41
40
  def display_completion_message() -> None:
42
- """Display completion message."""
43
41
  completion_text = Text("INSTALLATION COMPLETE", style="bold green")
44
42
  subtitle_text = Text("System setup finished successfully", style="italic green")
45
43
  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)))
46
44
  def display_dotfiles_instructions() -> None:
47
- """Display instructions for dotfiles migration."""
48
45
  header_text = Text("DOTFILES MIGRATION", style="bold yellow")
49
46
  subtitle_text = Text("Configuration transfer options", style="italic yellow")
50
-
51
47
  instructions = """
52
48
  🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
53
49
  On original machine, run:
@@ -65,32 +61,9 @@ def display_dotfiles_instructions() -> None:
65
61
  [dim]cd ~
66
62
  cloud_copy SHARE_URL . --config ss[/dim]
67
63
  (requires symlinks to be created first)"""
68
-
69
64
  console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
70
65
 
71
66
 
72
- def install_windows_desktop_apps() -> bool:
73
- """Install Windows desktop applications using winget."""
74
- if system() != "Windows":
75
- console.print("❌ This function is only available on Windows systems.", style="bold red")
76
- return False
77
- console.print("🔧 Installing Nerd Fonts", style="bold cyan")
78
- try:
79
- from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
80
- install_nerd_fonts()
81
- console.print("✅ Nerd Fonts installed successfully", style="bold green")
82
- except Exception as e:
83
- console.print(f"❌ Error installing Nerd Fonts: {e}", style="bold red")
84
- console.print("🔧 Setting Windows Terminal settings", style="bold cyan")
85
- try:
86
- from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
87
- set_wt_settings_main()
88
- console.print("✅ Windows Terminal settings configured successfully", style="bold green")
89
- except Exception as e:
90
- console.print(f"❌ Error setting Windows Terminal settings: {e}", style="bold red")
91
- return True
92
-
93
-
94
67
  def get_installation_choices() -> list[str]:
95
68
  """Get user choices for installation options."""
96
69
  choices = [
@@ -114,11 +87,15 @@ def get_installation_choices() -> list[str]:
114
87
 
115
88
 
116
89
  def execute_installations(selected_options: list[str]) -> None:
117
- """Execute the selected installation options."""
118
90
  if system() == "Windows":
119
- run_command("$HOME/.local/bin/uv.exe self update")
91
+ from machineconfig import setup_windows as module
92
+ script_path = Path(module.__file__).parent / "ve.ps1"
93
+ run_shell_script(script_path.read_text(encoding="utf-8"))
120
94
  else:
121
- run_command("$HOME/.local/bin/uv self update")
95
+ from machineconfig import setup_linux as module
96
+ script_path = Path(module.__file__).parent / "ve.sh"
97
+ run_shell_script(script_path.read_text(encoding="utf-8"))
98
+
122
99
  for maybe_a_group in selected_options:
123
100
  if maybe_a_group in ("ESSENTIAL", "DEV", "ESSENTIAL_SYSTEM", "DEV_SYSTEM", "TerminalEyeCandy"):
124
101
  console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
@@ -129,21 +106,25 @@ def execute_installations(selected_options: list[str]) -> None:
129
106
  console.print("✅ CLI applications installed successfully", style="bold green")
130
107
  except Exception as e:
131
108
  console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
132
- run_command(". $HOME/.bashrc")
109
+ run_shell_script(". $HOME/.bashrc")
133
110
 
134
111
  if "upgrade_system" in selected_options:
135
112
  if system() == "Windows":
136
113
  console.print("❌ System upgrade is not applicable on Windows via this script.", style="bold red")
137
114
  elif system() == "Linux":
138
115
  console.print(Panel("🔄 [bold magenta]SYSTEM UPDATE[/bold magenta]\n[italic]Package management[/italic]", border_style="magenta"))
139
- run_command("sudo nala upgrade -y")
116
+ run_shell_script("sudo nala upgrade -y")
140
117
  else:
141
118
  console.print(f"❌ System upgrade not supported on {system()}.", style="bold red")
142
119
  if "install_repos" in selected_options:
143
120
  console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
144
- from machineconfig import setup_linux as module
145
- script = Path(module.__file__).parent / "repos.sh"
146
- run_command(f"bash {script}")
121
+ if system() == "Windows":
122
+ from machineconfig import setup_windows as module
123
+ script_path = Path(module.__file__).parent / "repos.ps1"
124
+ else:
125
+ from machineconfig import setup_linux as module
126
+ script_path = Path(module.__file__).parent / "repos.sh"
127
+ run_shell_script(script_path.read_text(encoding="utf-8"))
147
128
 
148
129
  if "install_ssh_server" in selected_options:
149
130
  console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
@@ -152,9 +133,9 @@ def execute_installations(selected_options: list[str]) -> None:
152
133
  Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
153
134
  Start-Service sshd
154
135
  Set-Service -Name sshd -StartupType 'Automatic'"""
155
- run_command(f'powershell -Command "{powershell_script}"')
136
+ run_shell_script(f'powershell -Command "{powershell_script}"')
156
137
  else:
157
- run_command("sudo nala install openssh-server -y")
138
+ run_shell_script("sudo nala install openssh-server -y")
158
139
 
159
140
  if "install_shell_profile" in selected_options:
160
141
  console.print(Panel("🐚 [bold green]SHELL PROFILE[/bold green]\n[italic]Shell configuration setup[/italic]", border_style="green"))
@@ -179,8 +160,8 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
179
160
  console.print("✅ Symlinks created successfully", style="bold green")
180
161
  except Exception as e:
181
162
  console.print(f"❌ Error creating symlinks: {e}", style="bold red")
182
- run_command("sudo chmod 600 $HOME/.ssh/*")
183
- run_command("sudo chmod 700 $HOME/.ssh")
163
+ run_shell_script("sudo chmod 600 $HOME/.ssh/*")
164
+ run_shell_script("sudo chmod 700 $HOME/.ssh")
184
165
  else:
185
166
  console.print("⏭️ Skipping symlink creation - finish dotfiles transfer first", style="yellow")
186
167
 
@@ -200,7 +181,10 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
200
181
  console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
201
182
 
202
183
  if "install_windows_desktop" in selected_options:
203
- install_windows_desktop_apps()
184
+ from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
185
+ install_nerd_fonts()
186
+ from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
187
+ set_wt_settings_main()
204
188
 
205
189
 
206
190
  def main() -> None:
@@ -210,7 +194,7 @@ def main() -> None:
210
194
  if not selected_options:
211
195
  console.print("❌ No options selected. Exiting...", style="bold red")
212
196
  sys.exit(0)
213
- console.print(f"\n✅ Selected options: {', '.join(selected_options)}", style="bold green")
197
+ console.print(f"\n✅ Selected options: {'\n'.join(selected_options)}", style="bold green")
214
198
  proceed = questionary.confirm("🚀 Proceed with installation?", default=True).ask()
215
199
  if not proceed:
216
200
  console.print("❌ Installation cancelled.", style="bold red")
@@ -132,8 +132,8 @@ def main(
132
132
  #!/bin/bash
133
133
  ttyd --writable -t enableSixel=true {ssl_args} --port {port} --credential "{username}:{password}" -t 'theme={{"background": "black"}}' {start_command}
134
134
  """
135
- from machineconfig.utils.code import run_script
136
- run_script(code)
135
+ from machineconfig.utils.code import run_shell_script
136
+ run_shell_script(code)
137
137
 
138
138
 
139
139
  def main_with_parser():
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env bash
2
+
3
+
4
+ # --GROUP:ESSENTIAL_SYSTEM:git,nano,net-utils,wget,curl,nala,nvm,nodejs
5
+ echo "🔄 Updating apt package lists..."
6
+ echo "📥 Installing nala package manager..."
7
+ echo "📥 Installing essential network tools..."
8
+ echo "📥 Installing Node Version Manager (NVM)..."
9
+ sudo apt update -y || true
10
+ sudo apt install nala -y || true
11
+ sudo nala install curl wget gpg lsb-release apt-transport-https -y || true
12
+ sudo nala install git net-tools htop nano -y || true
13
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
14
+ echo "🔧 Configuring NVM environment..."
15
+ export NVM_DIR="$HOME/.nvm"
16
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
17
+ [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
18
+ echo "📥 Installing latest Node.js..."
19
+ nvm install node || true
20
+
21
+ # --GROUP:TerminalEyeCandy:fortune,toilet,sl,aafire,cmatrix,hollywood,chafa
22
+ echo "📥 Installing fortune - random wisdom generator..."
23
+ echo "📥 Installing toilet - large ASCII text generator..."
24
+ echo "📥 Installing sl - steam locomotive animation..."
25
+ echo "📥 Installing aafire - ASCII art fire animation..."
26
+ echo "📥 Installing cmatrix - Matrix-style terminal animation..."
27
+ echo "📥 Installing hollywood - Hollywood hacker terminal effect..."
28
+ echo "📥 Installing chafa - terminal image viewer..."
29
+ sudo nala install cowsay -y || true
30
+ sudo nala install lolcat -y || true
31
+ sudo nala install boxes -y || true
32
+ sudo nala install figlet -y || true
33
+ sudo nala install fortune -y || true
34
+ sudo nala install toilet -y || true
35
+ sudo nala install chafa -y
36
+ sudo nala install sl -y || true
37
+ sudo nala install libaa-bin -y
38
+ echo 'keyboard-configuration keyboard-configuration/layout select US English' | sudo debconf-set-selections
39
+ echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | sudo debconf-set-selections
40
+ sudo DEBIAN_FRONTEND=noninteractive nala install -y cmatrix
41
+ sudo nala install hollywood -y || true
42
+
43
+ # --GROUP:NetworkTools: sshfs,samba,fuse3,nfs-common
44
+ echo "📥 Installing sshfs - mount remote filesystems over SSH..."
45
+ echo "📥 Installing Samba - LAN-based file sharing..."
46
+ sudo nala install sshfs
47
+ sudo nala install samba
48
+ sudo nala install fuse3 -y || true
49
+ sudo nala install nfs-common -y || true
50
+
51
+ # --GROUP:DEV_SYSTEM: graphviz,make,rust,libssl-dev,sqlite3,postgresql-client,redis-tools
52
+ echo "📥 Installing Graphviz - graph visualization software..."
53
+ echo "📥 Installing make - build automation tool..."
54
+ echo "📥 Installing SSL development libraries for Rust..."
55
+ echo "📥 Installing Rust programming language and toolchain..."
56
+ sudo nala install graphviz -y || true
57
+ sudo nala install ffmpeg -y || true # Required by some dev tools
58
+ sudo nala install make -y || true # Required by LunarVim and SpaceVim
59
+ (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
60
+ sudo nala install libssl-dev -y
61
+
62
+
63
+ # --GROUP:DATABASES: sqlite3,postgresql-client,redis-tools
64
+ echo "📥 Installing SQLite - lightweight SQL database..."
65
+ echo "📥 Installing PostgreSQL client..."
66
+ echo "📥 Installing Redis command-line tools..."
67
+ sudo nala install sqlite3 -y || true
68
+ sudo nala install postgresql-client -y || true
69
+ sudo nala install redis-tools -y || true
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/bash
2
+ #=======================================================================
3
+ # 🖥️ DESKTOP APPLICATIONS INSTALLATION SCRIPT
4
+ #=======================================================================
5
+ # This script installs desktop applications for a Linux workstation
6
+
7
+ echo """#=======================================================================
8
+ 🌐 WEB BROWSERS | Installing browser applications
9
+ #=======================================================================
10
+ """
11
+ # Google Chrome installation (commented reference)
12
+ # echo "📥 Installing Google Chrome..."
13
+ # wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
14
+ # sudo dpkg -i google-chrome-stable_current_amd64.deb
15
+
16
+ echo """#=======================================================================
17
+ 📝 TEXT EDITORS | Installing Neovim editor
18
+ #=======================================================================
19
+ """
20
+ echo "📥 Installing Neovim via Homebrew..."
21
+ /home/linuxbrew/.linuxbrew/bin/brew install neovim
22
+
23
+ echo """#=======================================================================
24
+ 📧 EMAIL CLIENT | Installing Thunderbird
25
+ #=======================================================================
26
+ """
27
+ echo "📥 Installing Thunderbird via Flatpak..."
28
+ flatpak install flathub org.mozilla.Thunderbird
29
+
30
+ echo """#=======================================================================
31
+ 🖲️ TERMINAL EMULATOR | Installing WezTerm
32
+ #=======================================================================
33
+ """
34
+ echo "📥 Installing WezTerm via Flatpak..."
35
+ flatpak install flathub org.wezfurlong.wezterm
36
+ echo "🚀 Launching WezTerm..."
37
+ flatpak run org.wezfurlong.wezterm
38
+
39
+ echo """#=======================================================================
40
+ ✏️ SCREEN ANNOTATION | Installing Gromit-MPX
41
+ #=======================================================================
42
+ """
43
+ echo "📥 Installing Gromit-MPX via Flatpak..."
44
+ flatpak install net.christianbeier.Gromit-MPX
45
+
46
+ echo """#=======================================================================
47
+ 📋 CLIPBOARD MANAGERS | Installing CopyQ
48
+ #=======================================================================
49
+ """
50
+ echo "📥 Installing CopyQ via Flatpak..."
51
+ flatpak install flathub com.github.hluk.copyq --noninteractive
52
+
53
+ echo """#=======================================================================
54
+ 🔗 REMOTE DESKTOP | Installing Remmina
55
+ #=======================================================================
56
+ """
57
+ echo "📥 Installing Remmina and RDP plugin..."
58
+ sudo nala install remmina remmina-plugin-rdp -y
59
+
60
+ # Alternative Remmina installation via flatpak (reference)
61
+ # echo "📥 Setting up Flatpak repositories..."
62
+ # flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
63
+ # flatpak install org.freedesktop.Platform
64
+ # flatpak install org.freedesktop.Platform.openh264
65
+ # flatpak install --user flathub org.remmina.Remmina
66
+ # flatpak run --user org.remmina.Remmina
67
+
68
+ echo """#=======================================================================
69
+ 🚀 APPLICATION LAUNCHER | Installing Rofi
70
+ #=======================================================================
71
+ """
72
+ echo "📥 Installing Rofi application launcher..."
73
+ sudo nala install rofi -y
74
+
75
+ echo """#=======================================================================
76
+ 📎 CLIPBOARD HISTORY | Installing Greenclip
77
+ #=======================================================================
78
+ """
79
+ # Session type detection (reference)
80
+ # session_type=$(echo $XDG_SESSION_TYPE)
81
+ # if [ "$session_type" == "x11" ]; then
82
+ # echo "Detected X11 session. Installing X11-related packages and tools..."
83
+ # sudo nala install xdotool xsel xclip -y
84
+ # elif [ "$session_type" == "wayland" ]; then
85
+ # echo "Detected Wayland session. Installing Wayland-related packages and tools..."
86
+ # sudo nala install wl-copy wtype -y
87
+ # else
88
+ # echo "Unknown session type: $session_type"
89
+ # exit 1
90
+ # fi
91
+
92
+ echo "📥 Downloading and installing Greenclip clipboard manager..."
93
+ wget -P ~/Downloads https://github.com/erebe/greenclip/releases/download/v4.2/greenclip
94
+ chmod +x ~/Downloads/greenclip
95
+ sudo mv ~/Downloads/greenclip /usr/bin/
96
+
97
+ echo "ℹ️ Usage instructions:"
98
+ echo "- Start daemon: greenclip daemon &"
99
+ echo "- With Rofi: rofi -modi \"clipboard:greenclip print\" -show clipboard -run-command '{cmd}'"
100
+ echo "- For emoji picker: rofi -modi \"emoji:rofimoji\" -show emoji"
101
+ echo "- Application launcher: rofi -show drun"
102
+
103
+ echo """#=======================================================================
104
+ 🔄 APPLICATION LINKING | Linking applications to user space
105
+ #=======================================================================
106
+ """
107
+ echo "🔗 Creating application symlinks..."
108
+ ln -s /home/$USER/.nix-profile/share/applications/* /home/$USER/.local/share/applications/
109
+
110
+ echo """#=======================================================================
111
+ ✅ INSTALLATION COMPLETE | Desktop applications have been installed
112
+ #=======================================================================
113
+ """
@@ -0,0 +1,74 @@
1
+ #!/bin/bash
2
+ #=======================================================================
3
+ # 🖥️ GUI APPLICATIONS AND DESKTOP ENVIRONMENT SETUP SCRIPT
4
+ #=======================================================================
5
+ # This script installs graphical user interfaces and desktop environments
6
+
7
+ echo """#=======================================================================
8
+ 📦 INSTALLING GUI COMPONENTS | Setting up desktop environment
9
+ #=======================================================================
10
+ """
11
+
12
+ # echo "📥 Installing Nautilus file manager..."
13
+ # sudo nala install nautilus -y # 📂 graphical file manager
14
+ # sudo nala install x11-apps # 🎨 few graphical test apps like xeyes
15
+
16
+ echo "📥 Installing XRDP - Remote Desktop Protocol server..."
17
+ sudo nala install xrdp -y # 🔌 remote desktop protocol
18
+
19
+ # echo "📥 Installing X.Org server and components..."
20
+ # sudo nala install xorg -y # 🎯 xorg server
21
+ # sudo nala install xinit -y # 🚀 xorg init
22
+ # sudo nala install xserver-xorg -y # 🖼️ xorg server
23
+
24
+ echo "📥 Installing XFCE4 desktop environment..."
25
+ sudo nala install xfce4 -y # 🏠 xfce4 desktop environment
26
+
27
+ echo "📥 Installing XFCE4 additional components..."
28
+ sudo nala install xfce4-goodies -y # ✨ xfce4 desktop environment extras
29
+
30
+ echo """#=======================================================================
31
+ 🔧 CONFIGURING XRDP | Setting up Remote Desktop service
32
+ #=======================================================================
33
+ """
34
+
35
+ # Back up original configuration
36
+ echo "📄 Creating backup of XRDP configuration..."
37
+ sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
38
+
39
+ # Change default port to avoid conflict with Windows RDP
40
+ echo "🔢 Changing XRDP port to 3391..."
41
+ sudo sed -i 's/3389/3391/g' /etc/xrdp/xrdp.ini
42
+
43
+ # Configure color depth and display settings
44
+ echo "🎨 Configuring display quality settings..."
45
+ sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
46
+ sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
47
+
48
+ # Set default session
49
+ echo "🖥️ Setting up default XFCE4 session..."
50
+ echo xfce4-session > ~/.xsession
51
+
52
+ # Configure startup window manager
53
+ echo "🚀 Configuring window manager startup..."
54
+ sudo sed -i 's/test/#test/g' /etc/xrdp/startwm.sh
55
+ sudo sed -i 's/exec/#exec/g' /etc/xrdp/startwm.sh
56
+ echo "startxfce4" | sudo tee -a /etc/xrdp/startwm.sh
57
+
58
+ echo """#=======================================================================
59
+ 🚀 STARTING SERVICES | Initializing XRDP service
60
+ #=======================================================================
61
+ """
62
+
63
+ echo "🔄 Starting XRDP service..."
64
+ sudo /etc/init.d/xrdp start
65
+
66
+ echo """#=======================================================================
67
+ ✅ SETUP COMPLETE | GUI environment has been configured
68
+ #=======================================================================
69
+ """
70
+ echo "ℹ️ Connect to this machine via Remote Desktop using port 3391"
71
+ # Alternative commands:
72
+ # sudo systemctl restart xrdp
73
+ # sudo service xrdp restart
74
+
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/bash
2
+ # 🔐 OpenSSH Server Setup and Configuration
3
+
4
+ # Common pitfalls:
5
+ # 🚫 Wrong line endings (LF/CRLF) in config files
6
+ # 🌐 Network port conflicts (try 2222 -> 2223) between WSL and Windows
7
+
8
+ # 📁 Setup SSH directory and permissions
9
+ mkdir -p ~/.ssh
10
+ echo $pubkey_string >> ~/.ssh/authorized_keys
11
+ sudo chmod 600 ~/.ssh/*
12
+ sudo chmod 700 ~/.ssh
13
+ echo "✅ FINISHED modifying .ssh folder attributes."
14
+
15
+ # 🔄 Clean install OpenSSH server
16
+ sudo nala purge openssh-server -y
17
+ sudo nala install openssh-server -y
18
+ echo "✅ FINISHED installing openssh-server."
19
+
20
+ # 📝 Additional commands if needed:
21
+ # sudo service ssh status
22
+ # sudo nano /etc/ssh/sshd_config
23
+ # sudo service ssh restart
24
+ # For tunnels see: https://www.youtube.com/watch?v=Wp7boqm3Xts
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/bash
2
+ # 🐧 WSL2 SSH Configuration for LAN Access 🌐
3
+ # Purpose: Enable SSH access to WSL2 from LAN (requires wsl_server.ps1 in Windows)
4
+ # Common pitfall: sshd fails after config changes due to wrong line endings/permissions
5
+
6
+ # 🔍 Check if running in WSL
7
+ if [[ $(uname -a) == *"icrosoft"* ]]; then
8
+ echo "✅ Running inside WSL"
9
+ else
10
+ echo "❌ Not running inside WSL, no need for this script"
11
+ exit 0
12
+ fi
13
+
14
+ # 🔢 Set SSH port
15
+ if [ -z "$port" ]; then
16
+ port=2222
17
+ echo "📝 Port variable not defined, setting it to $port"
18
+ fi
19
+
20
+ # 🛠️ Configure SSH
21
+ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
22
+ sudo sed -i 's/#Port 22/Port '$port'/g' /etc/ssh/sshd_config
23
+ sudo sed -i 's/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g' /etc/ssh/sshd_config
24
+ sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
25
+ sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
26
+
27
+ # 🔑 Generate host keys and restart service
28
+ sudo service ssh start
29
+ sudo ssh-keygen -A
30
+ sudo service ssh --full-restart
31
+ sudo service ssh status
32
+
33
+ echo "✨ FINISHED configuring SSH in WSL2."
34
+
35
+ # 📚 References:
36
+ # Service startup: https://superuser.com/questions/1701853/how-to-enable-a-service-to-start-with-wsl2
37
+ # WSL config: https://learn.microsoft.com/en-us/windows/wsl/networking#accessing-a-wsl-2-distribution-from-your-local-area-network-lan
38
+
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/bash
2
+
3
+
4
+ echo """
5
+ #=======================================================================
6
+ 🔄 REPOSITORIES SETUP | Cloning project codebases
7
+ #=======================================================================
8
+ """
9
+
10
+ echo """📥 Setting up repositories...
11
+ 🐊 crocodile - Main utility package
12
+ 🔧 machineconfig - System configuration tools
13
+ """
14
+
15
+ mkdir -p $HOME/code
16
+ cd $HOME/code
17
+ # Setup crocodile repository
18
+ if [ -d "crocodile" ]; then
19
+ echo """🔄 crocodile directory exists, updating...
20
+ """
21
+ cd crocodile
22
+ git reset --hard
23
+ git pull
24
+ cd ..
25
+ else
26
+ echo """⏳ Cloning crocodile repository...
27
+ """
28
+ git clone https://github.com/thisismygitrepo/crocodile.git --depth 4
29
+ fi
30
+
31
+ # Setup machineconfig repository
32
+ cd $HOME/code
33
+ if [ -d "machineconfig" ]; then
34
+ echo """🔄 machineconfig directory exists, updating...
35
+ """
36
+ cd machineconfig
37
+ git reset --hard
38
+ git pull
39
+ cd ..
40
+ else
41
+ echo """⏳ Cloning machineconfig repository...
42
+ """
43
+ git clone https://github.com/thisismygitrepo/machineconfig --depth 4 # Choose browser-based authentication.
44
+ fi
45
+
46
+ cd $HOME/code/machineconfig
47
+ $HOME/.local/bin/uv sync --no-dev
48
+ $HOME/.local/bin/uv cache clean
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/bash
2
+
3
+ if [ ! -f "$HOME/.local/bin/uv" ]; then
4
+ echo """📦 uv binary not found
5
+ ⏳ Installing uv package manager..."""
6
+ curl -LsSf https://astral.sh/uv/install.sh | sh
7
+ else
8
+ echo """🔄 Updating uv package manager..."""
9
+ $HOME/.local/bin/uv self update
10
+ fi
11
+ # Add uv to PATH if not already there
12
+ if ! command -v uv &> /dev/null; then
13
+ echo """🔍 uv command not found in PATH
14
+ ➕ Adding uv to system PATH...
15
+ """
16
+ export PATH="$HOME/.local/bin:$PATH"
17
+ fi
18
+ echo """✅ uv is installed and ready to use."""
19
+
20
+ $HOME/.local/bin/uv python install 3.13
@@ -0,0 +1,61 @@
1
+
2
+ # to get exact version of an app in winget, head to: https://winget.run
3
+
4
+ # --GROUP:ESSENTIAL_SYSTEM:WT+Brave+VSCode+WezTerm+OhMyPosh+Powershell+Starship+Git+Neovim+GNU Nano+Terminal-Icons+PSFzf
5
+ winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements # Terminal is is installed by default on W 11
6
+ winget install --no-upgrade --name "Brave" --Id "Brave.Brave" --source winget --scope user --accept-package-agreements --accept-source-agreements
7
+ winget install --no-upgrade --name "Microsoft Visual Studio Code" --Id "Microsoft.VisualStudioCode" --source winget --scope user --accept-package-agreements --accept-source-agreements
8
+ winget install --no-upgrade --name "WezTerm" --Id "wez.wezterm" --source winget --scope user --accept-package-agreements --accept-source-agreements
9
+ winget install --no-upgrade --name "Oh My Posh" --Id "JanDeDobbeleer.OhMyPosh" --source winget --scope user --accept-package-agreements --accept-source-agreements
10
+ winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements # powershell require admin
11
+ winget install --no-upgrade --name "Starship" --Id "Starship.Starship" --source winget --scope user --accept-package-agreements --accept-source-agreements
12
+ winget install --no-upgrade --name "Git" --Id "Git.Git" --source winget --scope user --accept-package-agreements --accept-source-agreements
13
+ winget install --no-upgrade --name "Neovim" --Id "Neovim.Neovim" --source winget --scope user --accept-package-agreements --accept-source-agreements
14
+ winget install --no-upgrade --name "GNU Nano" --Id "GNU.Nano" --source winget --scope user --accept-package-agreements --accept-source-agreements
15
+ Install-Module -Name Terminal-Icons -Repository PSGallery -Force -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
16
+ Install-Module -Name PSFzf -SkipPublisherCheck # -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
17
+
18
+
19
+ # --GROUP:DEV_SYSTEM:VSRedistrib+VSBuildTools+Codeblocks+GnuWin32: Make+GnuPG+graphviz+WinFsp+SSHFS-win+xming+Node.js+Rustup+Cloudflare+Cloudflare WARP+Microsoft Garage Mouse without Borders
20
+ winget install --no-upgrade --name "VSRedistrib" --Id "Microsoft.VC++2015-2022Redist-x64" --source winget --scope user --accept-package-agreements --accept-source-agreements
21
+ winget install --no-upgrade --name "VSBuildTools" --Id "Microsoft.VisualStudio.2022.BuildTools" --source winget --scope user --accept-package-agreements --accept-source-agreements
22
+ winget install --no-upgrade --name "Codeblocks" --Id "Codeblocks.Codeblocks" --source winget --scope user --accept-package-agreements --accept-source-agreements # IDE for C/C++
23
+ winget install --no-upgrade --name "GnuWin32: Make" --Id "GnuWin32.Make" --source winget --scope user --accept-package-agreements --accept-source-agreements # required for building some python packages with native extensions, like dlib
24
+ winget install --no-upgrade --name "GnuPG" --Id "GnuPG.GnuPG" --source winget --scope user --accept-package-agreements --accept-source-agreements
25
+ winget install --no-upgrade --name "graphviz" --Id "Graphviz.Graphviz" --source winget --scope user --accept-package-agreements --accept-source-agreements # required by pygraphviz. Used in Base.viz_object_hirarchy and Model.plot_model()
26
+ winget install --no-upgrade --name "WinFsp" --Id "WinFsp.WinFsp" --source winget --scope user --accept-package-agreements --accept-source-agreements # mount remote filesystems and required by rclone
27
+ winget install --no-upgrade --name "SSHFS-win" --Id "SSHFS-Win.SSHFS-Win" --source winget --scope user --accept-package-agreements --accept-source-agreements # mount remote filesystems # as per https://github.com/winfsp/sshfs-win
28
+ winget install --no-upgrade --name "xming" --Id "xming.xming" --source winget --scope user --accept-package-agreements --accept-source-agreements # X11 server. you need this while using wsl with gui, otherwise plt.show() returns: ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running
29
+ winget install --no-upgrade --name "Node.js" --Id "OpenJS.NodeJS" --source winget --scope user --accept-package-agreements --accept-source-agreements # ncessary for nvim plugins.
30
+ winget install --no-upgrade --name "Rustup" --Id "Rustlang.Rustup" --source winget --scope user --accept-package-agreements --accept-source-agreements # rust compiler, necessary for some nvim plugins
31
+ winget install --no-upgrade --name "Cloudflare" --Id "Cloudflare.cloudflared" --source winget --scope user --accept-package-agreements --accept-source-agreements # cloudflare tunnel client, alternative to ngrok
32
+ winget install --no-upgrade --name "Cloudflare WARP" --Id "Cloudflare.Warp" --source winget --scope user --accept-package-agreements --accept-source-agreements
33
+ winget install --no-upgrade --name "Microsoft Garage Mouse without Borders" --Id "Microsoft.MouseWithoutBorders" --source winget --scope user --accept-package-agreements --accept-source-agreements
34
+
35
+
36
+ # --GROUP:OTHER_WINDOWS:nu+Chrome+ChromeRemoteDesktop+Zoom+7zip+Firefox+Thunderbird+StreamlabsOBS+OBSStudio+MiKTeX+TexMaker+notepad+++Lapce+TesseractOCR+perl+DB Browser for SQLite+sql server management studio+Adobe Acrobat Reader DC+julia+Chafa+bottom+onefetch+Just+hyperfine+AWS CLI
37
+ winget install --no-upgrade --name "nu" --Id "Nushell.Nushell" --source winget --scope user --accept-package-agreements --accept-source-agreements # add to userpath C:\Program Files\nu\bin, done in symlinks
38
+ winget install --no-upgrade --name "Google Chrome" --Id "Google.Chrome" --source winget --scope user --accept-package-agreements --accept-source-agreements
39
+ winget install --no-upgrade --name "Chrome Remote Desktop Host" --Id "Google.ChromeRemoteDesktop" --source winget --scope user --accept-package-agreements --accept-source-agreements
40
+ winget install --no-upgrade --name "Zoom" --Id "Zoom.Zoom" --source winget --scope user --accept-package-agreements --accept-source-agreements
41
+ winget install --no-upgrade --name "7-zip" --Id "7zip.7zip" --source winget --scope user --accept-package-agreements --accept-source-agreements
42
+ winget install --no-upgrade --name "Mozilla Firefox" --Id "Mozilla.Firefox" --source winget --scope user --accept-package-agreements --accept-source-agreements
43
+ winget install --no-upgrade --name "Mozilla Thunderbird (en-US)" --Id "Mozilla.Thunderbird" --source winget --scope user --accept-package-agreements --accept-source-agreements
44
+ winget install --no-upgrade --name "StreamlabsOBS" --Id "Streamlabs.StreamlabsOBS" --source winget --scope user --accept-package-agreements --accept-source-agreements
45
+ winget install --no-upgrade --name "OBSStudio" --Id "OBSProject.OBSStudio" --source winget --scope user --accept-package-agreements --accept-source-agreements
46
+ winget install --no-upgrade --name "MiKTeX" --Id "MiKTeX.MiKTeX" --source winget --scope user # library / lanugage
47
+ winget install --no-upgrade --name "TexMaker" --Id "Texmaker.Texmaker" --source winget --scope user # IDE better than simple TexWorks shipped with MikTex. IDE is basically GUI for cmd interface of Tex
48
+ winget install --no-upgrade --name "notepad++" --Id "Notepad++.Notepad++" --source winget --scope user --accept-package-agreements --accept-source-agreements
49
+ winget install --no-upgrade --name "Lapce" --Id "Lapce.Lapce" --source winget --scope user --accept-package-agreements --accept-source-agreements
50
+ winget install --no-upgrade --name "TesseractOCR" --Id "UB-Mannheim.TesseractOCR" --source winget --scope user --accept-package-agreements --accept-source-agreements
51
+ winget install --no-upgrade --name "perl" --Id "StrawbgnogerryPerl.StrawberryPerl" --source winget --scope user --accept-package-agreements --accept-source-agreements
52
+ winget install --no-upgrade --name "DB Browser for SQLite" --Id "DBBrowserForSQLite.DBBrowserForSQLite" --source winget --scope user --accept-package-agreements --accept-source-agreements
53
+ winget install --no-upgrade --name "sql server management studio" --Id "Microsoft.SQLServerManagementStudio" --source winget --scope user --accept-package-agreements --accept-source-agreements
54
+ winget install --no-upgrade --name "Adobe Acrobat Reader DC" --Id "Adobe.Acrobat.Reader.64-bit" --source winget --scope user --accept-package-agreements --accept-source-agreements
55
+ winget install --no-upgrade --name "julia" --Id "Julialang.Julia" --source winget --scope user --accept-package-agreements --accept-source-agreements
56
+ winget install --no-upgrade --name "Chafa" --Id "hpjansson.Chafa" --source winget --scope user --accept-package-agreements --accept-source-agreements
57
+ winget install --no-upgrade --name "bottom" --Id "Clement.bottom" --source winget --scope user --accept-package-agreements --accept-source-agreements
58
+ winget install --no-upgrade --name "onefetch" --Id "o2sh.onefetch" --source winget --scope user # repo-version of system fastfetch, see also tokei
59
+ winget install --no-upgrade --name "Just" --Id "Casey.Just" --source winget --scope user # commandline runner
60
+ winget install --no-upgrade --name "hyperfine" --Id "sharkdp.hyperfine" --source winget --scope user # benchmarking tool
61
+ winget install --no-upgrade --name "AWS Command Line Interface" --Id "Amazon.AWSCLI" --source winget --scope user --accept-package-agreements --accept-source-agreements
@@ -0,0 +1,39 @@
1
+
2
+ $ErrorActionPreference = "Stop"
3
+ # ALL of the following require admin priviliages:
4
+ Set-ExecutionPolicy Bypass
5
+ # PowerShell.exe -ExecutionPolicy Bypass -File "C:\bypass\prompt\standard.ps1" 2>&1>$null
6
+
7
+ # Install SSH-Server on a windows machine. see this one below if this one didn't work:
8
+ # to install: winget install --Id Microsoft.OpenSSH.Preview --source winget --scope user # from: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
9
+ # the result is installed in C:\Program Files\OpenSSH as opposed to C:\Windows\System32\OpenSSH which is the case if openssh is added as a feature/capability to windows
10
+ # However, notice the new path is not in PATH as is the cases with system variant, so it needs to be added manually.
11
+ # finally, ssh config files are always @ "$env:ProgramData\ssh" irrespective of installation method.
12
+ # if ssh key is created on windows, it doesn't work on linux and gives a cryptlib error. It must be read again and saved in non DOS format.
13
+
14
+ Add-WindowsCapability -Online -Name OpenSSH.Server
15
+ Add-WindowsCapability -Online -Name OpenSSH.Client
16
+
17
+ #New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "%WINDIR%\System32\OpenSSH\sshd.exe"
18
+
19
+ # Must Enable ssh-agent before starting. But even before that, one need to update path so that same shell has access to the NEWLY added ssh program
20
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
21
+
22
+ Set-Service -Name sshd -StartupType Automatic
23
+
24
+ #Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
25
+
26
+ #Set-Service -Name ssh-agent -StartupType Automatic
27
+ #Start-Service ssh-agent
28
+ # Starting the service for the first time will populate the directory with config files.
29
+ Start-Service sshd
30
+
31
+ # Next up, change default shell to powershell, becuse CMD is lame
32
+ # following: https://github.com/PowerShell/Win32-OpenSSH/wiki/DefaultShell
33
+ $shell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" # "C:\Windows\System32\wsl.exe"
34
+ # $shell = "C:\Program Files\PowerShell\7\pwsh.exe" # it slows SSH down because of startup time, one can still use it by running it explicitly
35
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value $shell -PropertyType String -Force
36
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShellCommandOption -Value "/c" -PropertyType String -Force
37
+
38
+ cd ~
39
+ mkdir .ssh -ErrorAction SilentlyContinue
@@ -0,0 +1,32 @@
1
+
2
+ # This script adds a public key to the authorized_keys file for the sshd service
3
+ # as a result, a remote can connet to the machine if they got the corresponding private key (identity).
4
+
5
+ # https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
6
+ # http://woshub.com/using-ssh-key-based-authentication-on-windows/
7
+
8
+ $ErrorActionPreference = "Stop"
9
+ $sshd_dir = "$env:ProgramData\ssh"
10
+
11
+ $sshfile = "$env:USERPROFILE\.ssh\pubkey.pub" # this directory is for normal users, not admins.
12
+ # Once they are populated, we can create administrators_authorized_keys
13
+
14
+ Get-Content $sshfile >> "$sshd_dir\administrators_authorized_keys"
15
+
16
+ # set appropirate persmissions for this file
17
+ Set-Location $sshd_dir
18
+ icacls administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
19
+
20
+ # Lastly, enabling public key authentication.
21
+ $sshd_config = "$sshd_dir\sshd_config"
22
+ (Get-Content $sshd_config) -replace '#PubkeyAuthentication', 'PubkeyAuthentication' | Out-File -encoding ASCII $sshd_config
23
+ #(Get-Content $sshd_dir\sshd_config) -replace 'AuthorizedKeysFile __PROGRAMDATA__', '#AuthorizedKeysFile __PROGRAMDATA__' | Out-File -encoding ASCII $sshd_config
24
+ #(Get-Content $sshd_dir\sshd_config) -replace 'Match Group administrators', '#Match Group administrators' | Out-File -encoding ASCII $sshd_config
25
+ #cat C:\ProgramData\ssh\sshd_config
26
+
27
+ # to load the fresh settings, we need to restart the service:
28
+ Restart-Service sshd -Force
29
+
30
+ #Write-Host "Use this to Login/test Now"
31
+ #write-host ssh $env:UserName@localhost
32
+ # debug tip: use nano editor to inspect files above, if unreadable max-text format is used, ssh won't work.
@@ -0,0 +1,11 @@
1
+
2
+ # on the side of the local machine, you need to sort out the following:
3
+ # if the $sshfile doesn't have a standard name, you will need to explicitly specify the identity while SSHing (e.g. ssh u@s -i ~/.ssh/my_id)
4
+ # However, this must be done every time. For permanent solutions, use .ssh/config
5
+
6
+ $sshfile = "$env:USERPROFILE\.ssh\id_rsa"
7
+
8
+ Set-Service ssh-agent -StartupType Manual # allow the service to be started manually
9
+ ssh-agent # start the service
10
+ ssh-add.exe $sshfile # add the key to the agent
11
+
@@ -0,0 +1,22 @@
1
+
2
+ # install server (sshd).
3
+ Invoke-WebRequest https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/openssh-server.ps1 | Invoke-Expression
4
+
5
+ if (!$pubkey_string) {
6
+ $pubkey_url = 'https://github.com/thisismygitrepo.keys' # (CHANGE APPROPRIATELY)
7
+ $pubkey_string = (Invoke-WebRequest $pubkey_url).Content
8
+ } else {
9
+ Write-Output "pubkey_string is already defined."
10
+ }
11
+
12
+ cd ~
13
+ echo $null >> .ssh/authorized_keys # powershell way of touching a file if it doesn't exist
14
+ echo $pubkey_string >> .ssh/authorized_keys
15
+ echo $pubkey_string > .ssh/pubkey.pub
16
+ Invoke-WebRequest https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/openssh-server_add-sshkey.ps1 | Invoke-Expression
17
+
18
+ ipconfig.exe
19
+
20
+ echo "Done"
21
+ echo "USE: ssh $env:USERNAME@$env:COMPUTERNAME -p 22"
22
+
@@ -0,0 +1,7 @@
1
+
2
+ # power and sleep options.
3
+ Powercfg /Change monitor-timeout-ac 60
4
+ Powercfg /Change monitor-timeout-dc 0
5
+ Powercfg /Change standby-timeout-ac 0
6
+ Powercfg /Change standby-timeout-dc 0
7
+
@@ -0,0 +1,39 @@
1
+
2
+ cd ~
3
+ mkdir code -ErrorAction SilentlyContinue
4
+ cd ~\code
5
+
6
+
7
+ if (-not (Get-Command git.exe -ErrorAction SilentlyContinue)) {
8
+ winget install --no-upgrade --name "Git" --Id Git.Git --source winget --accept-package-agreements --accept-source-agreements --scope user
9
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
10
+ }
11
+
12
+ # Setup crocodile repository
13
+ if (Test-Path "crocodile") {
14
+ Write-Host "🔄 crocodile directory exists, updating..."
15
+ Set-Location crocodile
16
+ git reset --hard
17
+ git pull
18
+ Set-Location ..
19
+ } else {
20
+ Write-Host "⏳ Cloning crocodile repository..."
21
+ git clone https://github.com/thisismygitrepo/crocodile.git --depth 4
22
+ }
23
+
24
+ # Setup machineconfig repository
25
+ if (Test-Path "machineconfig") {
26
+ Write-Host "🔄 machineconfig directory exists, updating..."
27
+ Set-Location machineconfig
28
+ git reset --hard
29
+ git pull
30
+ Set-Location ..
31
+ } else {
32
+ Write-Host "⏳ Cloning machineconfig repository..."
33
+ git clone https://github.com/thisismygitrepo/machineconfig --depth 4 # Choose browser-based authentication.
34
+ }
35
+
36
+
37
+ cd $HOME\code\machineconfig
38
+ & "$HOME\.local\bin\uv.exe" sync --no-dev
39
+ echo "Finished setting up repos"
@@ -0,0 +1,5 @@
1
+
2
+
3
+ . $HOME\code\machineconfig\.venv\Scripts\activate.ps1
4
+ python -m fire machineconfig.profile.create main --choice=all
5
+ deactivate
@@ -0,0 +1,11 @@
1
+
2
+
3
+ if (-not (Test-Path -Path "$HOME\.local\bin\uv.exe")) {
4
+ Write-Output "uv binary not found, installing..."
5
+ irm https://astral.sh/uv/install.ps1 | iex
6
+ } else {
7
+ Write-Output "uv binary found, updating..."
8
+ & "$HOME\.local\bin\uv.exe" self update
9
+ }
10
+
11
+ & "$HOME\.local\bin\uv.exe" python install 3.13
@@ -10,3 +10,4 @@ Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machin
10
10
  rm ve.ps1
11
11
 
12
12
  uv run --python 3.13 --with machineconfig devops interactive
13
+ # uv run --python 3.13 --with machineconfig https://raw.githubusercontent.com/thisismygitrepo/machineconfig/ee4f69e838e1acbb275bfb5a3d3faee23345f2a8/src/machineconfig/scripts/python/devops.py
@@ -0,0 +1,8 @@
1
+
2
+ Write-Host "Currently, there is: "
3
+ wsl -l -v
4
+ wsl --unregister Ubuntu-22.04
5
+ Write-Host "You can install ... "
6
+ wsl --list --online
7
+ wsl --install -d Ubuntu-22.04
8
+ # winget install Canonical.Ubuntu.2004 --source winget
@@ -0,0 +1,9 @@
1
+
2
+ # apps
3
+ winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user # Terminal is is installed by default on W 11
4
+ winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user # powershell require admin
5
+
6
+ . $HOME\code\machineconfig\.venv\Scripts\activate.ps1
7
+ python -m fire machineconfig.setup_windows.wt_and_pwsh.install_nerd_fonts main
8
+ python -m fire machineconfig.setup_windows.wt_and_pwsh.set_wt_settings main
9
+ deactivate
@@ -98,7 +98,7 @@ def print_code(code: str, lexer: str, desc: str, subtitle: str = ""):
98
98
  console.print(Panel(Syntax(code=code, lexer=lexer), title=f"📄 {desc}", subtitle=subtitle), style="bold red")
99
99
 
100
100
 
101
- def run_script(program: str):
101
+ def run_shell_script(program: str):
102
102
  import tempfile
103
103
  if platform.system() == "Windows":
104
104
  suffix = ".ps1"
@@ -6,21 +6,28 @@ import random
6
6
  from pathlib import Path
7
7
  from rich import pretty
8
8
  from rich.console import Console
9
- from rich.text import Text
10
9
  from typing import Optional
11
10
 
12
11
 
13
12
  def print_header():
14
13
  console = Console()
15
14
  pretty.install()
16
- _header = f"🐍 Python {platform.python_version()} in VE `{os.getenv('VIRTUAL_ENV')}` On {platform.system()} 🐍"
17
- _header = Text(_header)
18
- _header.stylize("bold blue")
19
- console.rule(_header, style="bold red", align="center")
20
- version = "14.5"
21
- _ = Text(f"✨ 🐊 Crocodile Shell {version} ✨" + f" Made with 🐍 | Built with ❤️. Running @ {Path.cwd()}")
22
- _.stylize("#05f8fc on #293536")
23
- console.print(_)
15
+
16
+ # Environment Information Panel
17
+ from rich.panel import Panel
18
+ from rich.table import Table
19
+
20
+ table = Table(show_header=False, show_edge=False, pad_edge=False)
21
+ table.add_column("Label", style="cyan", no_wrap=True)
22
+ table.add_column("Value", style="white")
23
+
24
+ table.add_row("Python Version", platform.python_version())
25
+ table.add_row("Operating System", platform.system())
26
+ table.add_row("Virtual Environment", os.getenv('VIRTUAL_ENV', 'None'))
27
+ table.add_row("Running @", str(Path.cwd()))
28
+
29
+
30
+ console.print(Panel(table, title="[bold blue]✨ 🐊 Crocodile Shell 14.5 ✨ Made with 🐍 | Built with ❤️[/bold blue]", border_style="blue"))
24
31
  def print_logo(logo: str):
25
32
  from machineconfig.utils.files.ascii_art import font_box_color, character_color, character_or_box_color
26
33
  if platform.system() == "Windows":
@@ -125,12 +125,12 @@ def install_group(package_group: PACKAGE_GROUPS):
125
125
  else:
126
126
  options_system = get_installers_system_groups()
127
127
  from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
128
- from machineconfig.utils.code import run_script
128
+ from machineconfig.utils.code import run_shell_script
129
129
  for an_item in options_system:
130
130
  if an_item["appName"] == package_group:
131
131
  program = an_item["fileNamePattern"][get_normalized_arch()][get_os_name()]
132
132
  if program is not None:
133
- run_script(program)
133
+ run_shell_script(program)
134
134
  break
135
135
 
136
136
 
@@ -147,7 +147,7 @@ class Terminal:
147
147
  return os.getuid() == 0 # Check for root on Posix
148
148
  '''
149
149
 
150
- # def run_script(self, script: str, shell: SHELLS = "default", verbose: bool = False):
150
+ # def run_shell_script(self, script: str, shell: SHELLS = "default", verbose: bool = False):
151
151
  # if self.machine == "Linux":
152
152
  # script = "#!/bin/bash" + "\n" + script # `source` is only available in bash.
153
153
  # script_file = PathExtended.tmpfile(name="tmp_shell_script", suffix=".ps1" if self.machine == "Windows" else ".sh", folder="tmp_scripts")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.14
3
+ Version: 5.16
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -143,8 +143,8 @@ machineconfig/scripts/python/cloud_mount.py,sha256=GwcXbd5ohoHGESfX5edtCEl2-umDD
143
143
  machineconfig/scripts/python/cloud_repo_sync.py,sha256=8dnlHbQqRymPRU0v01pNIuaIvFeY4fReP7ewNSSCt34,9765
144
144
  machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
145
145
  machineconfig/scripts/python/count_lines.py,sha256=ZexMRsV70pe9fhLbGuens9EP5gCf078EwTDRHRZo5A0,15960
146
- machineconfig/scripts/python/count_lines_frontend.py,sha256=tqUiJggHC8_uy5ZV81i_ycxM1x0j-2nJin3e3FJqLXs,521
147
- machineconfig/scripts/python/croshell.py,sha256=ggLy1X45Dqo8AV8qUY2-O74r7yQNc9nnRhzt8RisMX8,6535
146
+ machineconfig/scripts/python/count_lines_frontend.py,sha256=bIha5lKjWxKiO1OJAbt9gKzVyECXFbWKWIy69bdyaJg,533
147
+ machineconfig/scripts/python/croshell.py,sha256=zHUhOqWG81AOTeawZoDkpURnV1fAisY2lyZ0apvlmVY,6547
148
148
  machineconfig/scripts/python/devops.py,sha256=JB4_M6S-nO3yqas8wtAlU2r6jsmHu_nlq7aoEOH-54Y,3486
149
149
  machineconfig/scripts/python/devops_add_identity.py,sha256=wvjNgqsLmqD2SxbNCW_usqfp0LI-TDvcJJKGOWt2oFw,3775
150
150
  machineconfig/scripts/python/devops_add_ssh_key.py,sha256=BXB-9RvuSZO0YTbnM2azeABW2ngLW4SKhhAGAieMzfw,6873
@@ -155,14 +155,14 @@ machineconfig/scripts/python/fire_agents_help_launch.py,sha256=1ymWiszfjCyPv3ofi
155
155
  machineconfig/scripts/python/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
156
156
  machineconfig/scripts/python/fire_agents_helper_types.py,sha256=zKu8Vr6iucaGSkCm_Tkt_WrYU7-6Nript3coYyzTXzY,295
157
157
  machineconfig/scripts/python/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
158
- machineconfig/scripts/python/fire_jobs.py,sha256=Mg7M6pm3PvyJlnMGYas8hEVYLIJYiyy-pBiRWCGLFjQ,15895
158
+ machineconfig/scripts/python/fire_jobs.py,sha256=VIZZOjnE0u1g7U1jmYN3YUTFsLt8MM4_z67U951oEm4,15907
159
159
  machineconfig/scripts/python/fire_jobs_args_helper.py,sha256=-gl5I-26Op12nToIpAA-YEpvn8MMkNlI5XjhUbj50I0,4273
160
160
  machineconfig/scripts/python/fire_jobs_route_helper.py,sha256=EFWsg6F9TeSAtYQec57WtPopUbm2euGZTUZv6J4RhNE,3026
161
161
  machineconfig/scripts/python/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
162
  machineconfig/scripts/python/ftpx.py,sha256=QfQTp-6jQP6yxfbLc5sKxiMtTgAgc8sjN7d17_uLiZc,9400
163
163
  machineconfig/scripts/python/get_zellij_cmd.py,sha256=e35-18hoXM9N3PFbvbizfkNY_-63iMicieWE3TbGcCQ,576
164
164
  machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
165
- machineconfig/scripts/python/interactive.py,sha256=wjxwxU5KtCh8MgujCQjEQctZPpKfPc71lMVFLhODQFE,11769
165
+ machineconfig/scripts/python/interactive.py,sha256=gxAaVasW37TbSPswiyli-ImNQLU8jQbCb6Csnk5Igdg,11188
166
166
  machineconfig/scripts/python/mount_nfs.py,sha256=aECrL64j9g-9rF49sVJAjGmzaoGgcMnl3g9v17kQF4c,3239
167
167
  machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
168
168
  machineconfig/scripts/python/mount_ssh.py,sha256=k2fKq3f5dKq_7anrFOlqvJoI_3U4EWNHLRZ1o3Lsy6M,2268
@@ -176,7 +176,7 @@ machineconfig/scripts/python/repos_helper_record.py,sha256=dtnnInQPn00u1cyr0oOgJ
176
176
  machineconfig/scripts/python/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
177
177
  machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
178
178
  machineconfig/scripts/python/sessions.py,sha256=e8gL0fVWOZ5WcJsA3ZWfqJBc5c7g-rMlVf0SF63rIaU,8547
179
- machineconfig/scripts/python/share_terminal.py,sha256=pqKnly6QRtcPmw0lLyRN6NRuK2bntM1hOdqQfw5jJnc,5324
179
+ machineconfig/scripts/python/share_terminal.py,sha256=D9zwPZk4cV2ix5f-fHDfp0awtMsI5C5ANlfv1vW-VKE,5336
180
180
  machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
181
181
  machineconfig/scripts/python/start_slidev.py,sha256=FAJ1_WkAQ7KcbRZ3cSN_72NDgV_flRrwxmXv1imyulI,4897
182
182
  machineconfig/scripts/python/start_terminals.py,sha256=DRWbMZumhPmL0DvvsCsbRNFL5AVQn1SgaziafTio3YQ,6149
@@ -357,6 +357,13 @@ machineconfig/settings/zellij/layouts/st.kdl,sha256=QXLRK7Wx05aKbKRHVmm4RspLYzPm
357
357
  machineconfig/settings/zellij/layouts/st2.kdl,sha256=1FKTH3qQWYMWp_wPMreP7fKOTlVd4cfBy3J8fv4zCBc,1489
358
358
  machineconfig/settings/zellij/layouts/stacked_panes.kdl,sha256=usY8kKKwX1KUMXnWDivPg0i0drpM1Biw-tOnNZVjiZU,163
359
359
  machineconfig/setup_linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
+ machineconfig/setup_linux/apps.sh,sha256=0PdPojpj2B-wOxE6ryvguKwBvL6vEt-43A1NdnwJumM,3198
361
+ machineconfig/setup_linux/apps_desktop.sh,sha256=nBt_24tbdgKYK68w15ZiktgcEEJ7ytLoPWIrDluTkIQ,5077
362
+ machineconfig/setup_linux/apps_gui.sh,sha256=ufsCqmShc8G3XyKBmchD1tJ85FZYjSDY2yiE_0Rl7v4,3031
363
+ machineconfig/setup_linux/openssh_all.sh,sha256=11eguvmuF3zM4lPIdI9TLnNHivmylBnrqz8KCP1AJJA,756
364
+ machineconfig/setup_linux/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
365
+ machineconfig/setup_linux/repos.sh,sha256=kPBhhBmUAgB_9xwBQGyoL6_m0E4mlonnSqTEzi2gH9Q,1215
366
+ machineconfig/setup_linux/ve.sh,sha256=yHxDzRoiAkEmLvUHNHUZksyOWpwiirLJruM_tgsuwYs,579
360
367
  machineconfig/setup_linux/nix/cli_installation.sh,sha256=AQ_wRmldeD1tPqCmU7qgz9ZrZFly4OYwBJDGRpb9IJ0,5470
361
368
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
362
369
  machineconfig/setup_linux/others/openssh-server_add_pub_key.sh,sha256=UiJcD1o4UekKKtp5YJKRq135PpqdTLXy7M6HvQ-Qum4,1993
@@ -365,18 +372,30 @@ machineconfig/setup_linux/web_shortcuts/croshell.sh,sha256=X9-B1cVptbaFWaWTA-2EL
365
372
  machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=3bQr-0Gtly7lx6LPXtCUCs49jiCCozv3T1idHK678EY,463
366
373
  machineconfig/setup_linux/web_shortcuts/ssh.sh,sha256=k6BAY-zAWsi1beOMiZODxw4VOjZCTABZu__gxSET1eU,1924
367
374
  machineconfig/setup_windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
375
+ machineconfig/setup_windows/apps.ps1,sha256=wr8QvyiYyFUUY6JyI4kD-fBuR4xDVkhQpFp6uaZP6KQ,11030
376
+ machineconfig/setup_windows/openssh-server.ps1,sha256=7FopRdNn8hQbst4Cq_T1qoU_Q397Q_O6B2JgH2FdZxE,2531
377
+ machineconfig/setup_windows/openssh-server_add-sshkey.ps1,sha256=qiNC02kzUZi6KBV7O-nRQ7pQ0OGixbq-rUvSCQ7TVxc,1656
378
+ machineconfig/setup_windows/openssh-server_add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
379
+ machineconfig/setup_windows/openssh_all.ps1,sha256=hxYrqV4YjZBxqVVHWP0Cx10zmVLpC0Nunvtyv7Fm3iY,850
380
+ machineconfig/setup_windows/quirks.ps1,sha256=c7Hn94jBD5GWF29CxMhmNpuM0hgXTQgVJmIRR_7sdcY,182
381
+ machineconfig/setup_windows/repos.ps1,sha256=_JBVfW4UZPM3iGIIXjHr7e7f8RkDm4Zpu2uceFV_xtc,1257
382
+ machineconfig/setup_windows/symlinks.ps1,sha256=88zEzGQOGHOx3DlKsb4wDlCweY763E3wCFGNVJDSvAc,129
383
+ machineconfig/setup_windows/symlinks2linux.ps1,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
384
+ machineconfig/setup_windows/ve.ps1,sha256=a0Vk7BJfp_dY5GpDYC20WrJbqZHIWWbCZ9hDpKobMDk,311
385
+ machineconfig/setup_windows/wsl_refresh.ps1,sha256=0h-w1lB1H7WyKjJVSRfGA31NpxZo8BMI3XYZ1W-T5i4,216
386
+ machineconfig/setup_windows/wt_and_pwsh.ps1,sha256=BvgWrpMXLAOTjaJep9hsN0pfPVr1J9rlocssrFh5YdI,525
368
387
  machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
369
388
  machineconfig/setup_windows/others/obs.ps1,sha256=2andchcXpxS3rqZjGaMpY5VShxTAKWvw6eCrayjuaLo,30
370
389
  machineconfig/setup_windows/web_shortcuts/all.ps1,sha256=L03JJ4Jua_bzgtF3kuDOkuQ-Nqaj_ZcV3CFEkCHD1WI,908
371
390
  machineconfig/setup_windows/web_shortcuts/ascii_art.ps1,sha256=pUVTtgKHOdgaK3hxz7JoMZzTyQ7vm2RfE_OJgB7e4cw,1270
372
391
  machineconfig/setup_windows/web_shortcuts/croshell.ps1,sha256=cTQnegGLGYhuFY3YuuAj2ortN__adA2dznk2E737h4A,644
373
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=-76toOluRnxtgo6NuAHgHWMnZQT3zroeCBBLkMTd13g,522
392
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=RMUq_GNf0FCD_o4g4BEbBRg098VOyUEh9ezL2rRNEOI,714
374
393
  machineconfig/setup_windows/web_shortcuts/ssh.ps1,sha256=Tj9axEugJE7I3AQ0w1eUGLPb8ufME5jvU5S7VUjlLJE,424
375
394
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
395
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
377
396
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
378
397
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
379
- machineconfig/utils/code.py,sha256=S7uY5kLPxLcLlR7B2KHeYkenlysAYSPcxFiUYHXSxX8,5646
398
+ machineconfig/utils/code.py,sha256=Q44GVBgI5wEphGAKsMmXE2wEtzjJngy5pfJV9NCJ8EA,5652
380
399
  machineconfig/utils/installer.py,sha256=xYM6tyctqLmr2lLXUKWgobTRufGIua31uspMXP4HGjY,9945
381
400
  machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
382
401
  machineconfig/utils/links.py,sha256=S0XICdbcFESUqm5RINDrOf3O8G1b7QEADncXXcC8IQc,15520
@@ -389,7 +408,7 @@ machineconfig/utils/scheduler.py,sha256=pOzpOowapfC6Fl_k82JbESmLS8eh-zk4FyjJyUX1
389
408
  machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
390
409
  machineconfig/utils/source_of_truth.py,sha256=GnjcVkKm11RyZFHGnPbne5YDEBYoZ5yryBNkpfGC7O4,854
391
410
  machineconfig/utils/ssh.py,sha256=KTUp42nT4Vuh350_EvArQoR2N5iVXrc2BFld93fRUX4,20919
392
- machineconfig/utils/terminal.py,sha256=Jqojb1xta_SLftUIXmWK7Mn87e1NJXavC5Hbf3fRT-I,11795
411
+ machineconfig/utils/terminal.py,sha256=IlmOByfQG-vjhaFFxxzU5rWzP5_qUzmalRfuey3PAmc,11801
393
412
  machineconfig/utils/upgrade_packages.py,sha256=H96zVJEWXJW07nh5vhjuSCrPtXGqoUb7xeJsFYYdmCI,3330
394
413
  machineconfig/utils/ve.py,sha256=L-6PBXnQGXThiwWgheJMQoisAZOZA6SVCbGw2J-GFnI,2414
395
414
  machineconfig/utils/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -397,19 +416,19 @@ machineconfig/utils/ai/generate_file_checklist.py,sha256=ajbmhcBToRugl75c_KZRq2X
397
416
  machineconfig/utils/cloud/onedrive/setup_oauth.py,sha256=ZTVkqgrwbV_EoPvyT8dyOTUE0ur3BW4sa9o6QYtt5Bo,2341
398
417
  machineconfig/utils/cloud/onedrive/transaction.py,sha256=m-aNcnWj_gfZVvJOSpkdIqjZxU_3nXx2CA-qKbQgP3I,26232
399
418
  machineconfig/utils/files/ascii_art.py,sha256=cNJaJC07vx94fS44-tzgfbfBeCwXVrgpnWGBLUnfC38,5212
400
- machineconfig/utils/files/headers.py,sha256=crnjWt5R0rmZOQ45KhF6HtFpsUm1oeCPoYeptR4o-U0,3437
419
+ machineconfig/utils/files/headers.py,sha256=L54G11DfLadyZGyQXSQ7y8UI_tNvlld7zqP4qEAWL88,3647
401
420
  machineconfig/utils/files/read.py,sha256=dyf-DDkLnCKgwmRH0Af4UtBIZh6iMUaYmjgJtdSGRFg,4744
402
421
  machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
403
422
  machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
404
- machineconfig/utils/installer_utils/installer.py,sha256=_XcatwArhwRepMYfaGYpjd-lqNGfijnjeZB8l4uKd-c,9266
423
+ machineconfig/utils/installer_utils/installer.py,sha256=H9wukQBSZDLlpB6Xn4Sa2hSV8iCUr9UQChcgOa3u-L8,9278
405
424
  machineconfig/utils/installer_utils/installer_abc.py,sha256=VTHe5O3jA6k6rnUnXhgnEf6mVvkVQlEuXjzYLEDgEAs,11140
406
425
  machineconfig/utils/installer_utils/installer_class.py,sha256=fN4Nfqn4tlSfQGW52A_Ipi6GT6utC30ZuSj5WM_yxIY,20252
407
426
  machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=pTxvLzIpD5RF508lUUBBkWcc4V1B10J4ylvVgVGkcM0,2037
408
427
  machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
409
428
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
410
429
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
411
- machineconfig-5.14.dist-info/METADATA,sha256=mFhObJHO12yrWPAN5ujBFZSEscyXA61ekpyxdMlytj0,8030
412
- machineconfig-5.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
413
- machineconfig-5.14.dist-info/entry_points.txt,sha256=2afE1mw-o4MUlfxyX73SV02XaQI4SV_LdL2r6_CzhPU,1074
414
- machineconfig-5.14.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
415
- machineconfig-5.14.dist-info/RECORD,,
430
+ machineconfig-5.16.dist-info/METADATA,sha256=QLDF21ufCMJ5ndIuNZfcg6L2ISE6XnhPPqo6YsDqCcs,8030
431
+ machineconfig-5.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
432
+ machineconfig-5.16.dist-info/entry_points.txt,sha256=2afE1mw-o4MUlfxyX73SV02XaQI4SV_LdL2r6_CzhPU,1074
433
+ machineconfig-5.16.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
434
+ machineconfig-5.16.dist-info/RECORD,,