machineconfig 7.49__py3-none-any.whl → 7.64__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/sessions_managers/utils/maker.py +21 -11
- machineconfig/jobs/installer/custom/boxes.py +2 -2
- machineconfig/jobs/installer/custom/hx.py +16 -12
- machineconfig/jobs/installer/custom_dev/brave.py +1 -1
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +4 -1
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +1 -10
- machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
- machineconfig/jobs/installer/installer_data.json +739 -25
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +49 -83
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_links_export.py +21 -7
- machineconfig/profile/mapper.toml +1 -4
- machineconfig/scripts/linux/wrap_mcfg +1 -1
- machineconfig/scripts/python/croshell.py +20 -43
- machineconfig/scripts/python/devops.py +3 -4
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/fire_jobs.py +53 -39
- machineconfig/scripts/python/ftpx.py +4 -2
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +0 -12
- machineconfig/scripts/python/helpers_croshell/crosh.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_config.py +3 -19
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +22 -13
- machineconfig/scripts/python/helpers_devops/cli_self.py +12 -6
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +2 -2
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_terminal.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_utils.py +1 -152
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +4 -4
- machineconfig/scripts/python/helpers_fire_command/file_wrangler.py +2 -20
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +3 -4
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg +1 -1
- machineconfig/scripts/python/helpers_repos/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +9 -3
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +1 -1
- machineconfig/scripts/python/helpers_repos/entrypoint.py +2 -1
- machineconfig/scripts/python/helpers_repos/record.py +2 -1
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +7 -7
- machineconfig/scripts/python/helpers_utils/download.py +151 -0
- machineconfig/scripts/python/helpers_utils/path.py +106 -0
- machineconfig/scripts/python/interactive.py +17 -26
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +21 -5
- machineconfig/scripts/python/nw/ssh_debug_linux.py +7 -7
- machineconfig/scripts/python/nw/ssh_debug_windows.py +4 -4
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +3 -2
- machineconfig/scripts/python/sessions.py +37 -22
- machineconfig/scripts/python/utils.py +8 -3
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/shells/nushell/init.nu +2 -2
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/zsh/init.sh +1 -8
- machineconfig/settings/yazi/init.lua +45 -24
- machineconfig/settings/yazi/keymap_windows.toml +1 -2
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +29 -5
- machineconfig/setup_linux/__init__.py +0 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +12 -10
- machineconfig/setup_mac/__init__.py +2 -3
- machineconfig/setup_windows/__init__.py +0 -3
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +12 -10
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
- machineconfig/utils/code.py +2 -2
- machineconfig/utils/files/headers.py +2 -2
- machineconfig/utils/installer_utils/installer_class.py +42 -40
- machineconfig/utils/installer_utils/{installer.py → installer_cli.py} +61 -101
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +0 -68
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +11 -51
- machineconfig/utils/io.py +0 -1
- machineconfig/utils/meta.py +29 -15
- machineconfig/utils/options.py +1 -1
- machineconfig/utils/path_extended.py +40 -19
- machineconfig/utils/path_helper.py +75 -21
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/ssh.py +3 -3
- machineconfig-7.64.dist-info/METADATA +124 -0
- {machineconfig-7.49.dist-info → machineconfig-7.64.dist-info}/RECORD +84 -87
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig-7.49.dist-info/METADATA +0 -92
- /machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-7.49.dist-info → machineconfig-7.64.dist-info}/WHEEL +0 -0
- {machineconfig-7.49.dist-info → machineconfig-7.64.dist-info}/entry_points.txt +0 -0
- {machineconfig-7.49.dist-info → machineconfig-7.64.dist-info}/top_level.txt +0 -0
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"""SSH"""
|
|
2
|
-
|
|
3
|
-
from platform import system
|
|
4
|
-
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from rich.panel import Panel
|
|
8
|
-
from rich import box # Import box
|
|
9
|
-
from typing import Optional, Annotated
|
|
10
|
-
import typer
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
console = Console()
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def get_add_ssh_key_script(path_to_key: PathExtended):
|
|
17
|
-
console.print(Panel("🔑 SSH KEY CONFIGURATION", title="[bold blue]SSH Setup[/bold blue]"))
|
|
18
|
-
if system() == "Linux" or system() == "Darwin":
|
|
19
|
-
authorized_keys = PathExtended.home().joinpath(".ssh/authorized_keys")
|
|
20
|
-
console.print(Panel(f"🐧 Linux SSH configuration\n📄 Authorized keys file: {authorized_keys}", title="[bold blue]System Info[/bold blue]"))
|
|
21
|
-
elif system() == "Windows":
|
|
22
|
-
authorized_keys = PathExtended("C:/ProgramData/ssh/administrators_authorized_keys")
|
|
23
|
-
console.print(Panel(f"🪟 Windows SSH configuration\n📄 Authorized keys file: {authorized_keys}", title="[bold blue]System Info[/bold blue]"))
|
|
24
|
-
else:
|
|
25
|
-
console.print(Panel("❌ ERROR: Unsupported operating system\nOnly Linux and Windows are supported", title="[bold red]Error[/bold red]"))
|
|
26
|
-
raise NotImplementedError
|
|
27
|
-
|
|
28
|
-
if authorized_keys.exists():
|
|
29
|
-
split = "\n"
|
|
30
|
-
keys_text = authorized_keys.read_text(encoding="utf-8").split(split)
|
|
31
|
-
key_count = len([k for k in keys_text if k.strip()])
|
|
32
|
-
console.print(Panel(f"🔍 Current SSH authorization status\n✅ Found {key_count} authorized key(s)", title="[bold blue]Status[/bold blue]"))
|
|
33
|
-
if path_to_key.read_text(encoding="utf-8") in authorized_keys.read_text(encoding="utf-8"):
|
|
34
|
-
console.print(Panel(f"⚠️ Key already authorized\nKey: {path_to_key.name}\nStatus: Already present in authorized_keys file\nNo action required", title="[bold yellow]Warning[/bold yellow]"))
|
|
35
|
-
program = ""
|
|
36
|
-
else:
|
|
37
|
-
console.print(Panel(f"➕ Adding new SSH key to authorized keys\n🔑 Key file: {path_to_key.name}", title="[bold blue]Action[/bold blue]"))
|
|
38
|
-
if system() == "Linux":
|
|
39
|
-
program = f"cat {path_to_key} >> ~/.ssh/authorized_keys"
|
|
40
|
-
elif system() == "Windows":
|
|
41
|
-
program_path = LIBRARY_ROOT.joinpath("setup_windows/add-sshkey.ps1")
|
|
42
|
-
program = program_path.expanduser().read_text(encoding="utf-8")
|
|
43
|
-
place_holder = r'$sshfile = "$env:USERPROFILE\.ssh\pubkey.pub"'
|
|
44
|
-
assert place_holder in program, f"This section performs string manipulation on the script {program_path} to add the key to the authorized_keys file. The script has changed and the string {place_holder} is not found."
|
|
45
|
-
program = program.replace(place_holder, f'$sshfile = "{path_to_key}"')
|
|
46
|
-
console.print(Panel("🔧 Configured PowerShell script for Windows\n📝 Replaced placeholder with actual key path", title="[bold blue]Configuration[/bold blue]"))
|
|
47
|
-
else:
|
|
48
|
-
raise NotImplementedError
|
|
49
|
-
else:
|
|
50
|
-
console.print(Panel(f"📝 Creating new authorized_keys file\n🔑 Using key: {path_to_key.name}", title="[bold blue]Action[/bold blue]"))
|
|
51
|
-
if system() == "Linux":
|
|
52
|
-
program = f"cat {path_to_key} > ~/.ssh/authorized_keys"
|
|
53
|
-
else:
|
|
54
|
-
program_path = LIBRARY_ROOT.joinpath("setup_windows/openssh-server_add-sshkey.ps1")
|
|
55
|
-
program = PathExtended(program_path).expanduser().read_text(encoding="utf-8").replace('$sshfile=""', f'$sshfile="{path_to_key}"')
|
|
56
|
-
console.print(Panel("🔧 Configured PowerShell script for Windows\n📝 Set key path in script", title="[bold blue]Configuration[/bold blue]"))
|
|
57
|
-
|
|
58
|
-
if system() == "Linux" or system() == "Darwin":
|
|
59
|
-
program += """
|
|
60
|
-
sudo chmod 700 ~/.ssh
|
|
61
|
-
sudo chmod 644 ~/.ssh/authorized_keys
|
|
62
|
-
sudo chmod 644 ~/.ssh/*.pub
|
|
63
|
-
sudo service ssh --full-restart
|
|
64
|
-
# from superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder
|
|
65
|
-
"""
|
|
66
|
-
return program
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"""
|
|
71
|
-
# Common pitfalls:
|
|
72
|
-
# 🚫 Wrong line endings (LF/CRLF) in config files
|
|
73
|
-
# 🌐 Network port conflicts (try 2222 -> 2223) between WSL and Windows
|
|
74
|
-
# sudo service ssh restart
|
|
75
|
-
# sudo service ssh status
|
|
76
|
-
# sudo nano /etc/ssh/sshd_config
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
def main(pub_path: Annotated[Optional[str], typer.Argument(..., help="Path to the public key file")] = None,
|
|
81
|
-
pub_choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh")] = False,
|
|
82
|
-
pub_val: Annotated[bool, typer.Option(..., "--paste", "-p", help="Paste the public key content manually")] = False,
|
|
83
|
-
from_github: Annotated[Optional[str], typer.Option(..., "--from-github", "-g", help="Fetch public keys from a GitHub username")] = None
|
|
84
|
-
) -> None:
|
|
85
|
-
if pub_path:
|
|
86
|
-
key_path = PathExtended(pub_path).expanduser().absolute()
|
|
87
|
-
if not key_path.exists():
|
|
88
|
-
console.print(Panel(f"❌ ERROR: Provided key path does not exist\nPath: {key_path}", title="[bold red]Error[/bold red]"))
|
|
89
|
-
raise FileNotFoundError(f"Provided key path does not exist: {key_path}")
|
|
90
|
-
console.print(Panel(f"📄 Using provided public key file: {key_path}", title="[bold blue]Info[/bold blue]"))
|
|
91
|
-
program = get_add_ssh_key_script(key_path)
|
|
92
|
-
from machineconfig.utils.code import run_shell_script
|
|
93
|
-
run_shell_script(script=program)
|
|
94
|
-
console.print(Panel("✅ SSH KEY AUTHORIZATION COMPLETED", box=box.DOUBLE_EDGE, title_align="left"))
|
|
95
|
-
return
|
|
96
|
-
elif pub_choose:
|
|
97
|
-
console.print(Panel("🔐 SSH PUBLIC KEY AUTHORIZATION TOOL", box=box.DOUBLE_EDGE, title_align="left"))
|
|
98
|
-
console.print(Panel("🔍 Searching for public keys...", title="[bold blue]SSH Setup[/bold blue]", border_style="blue"))
|
|
99
|
-
pub_keys = PathExtended.home().joinpath(".ssh").search("*.pub")
|
|
100
|
-
if pub_keys:
|
|
101
|
-
console.print(Panel(f"✅ Found {len(pub_keys)} public key(s)", title="[bold green]Status[/bold green]", border_style="green"))
|
|
102
|
-
else:
|
|
103
|
-
console.print(Panel("⚠️ No public keys found", title="[bold yellow]Warning[/bold yellow]", border_style="yellow"))
|
|
104
|
-
return
|
|
105
|
-
console.print(Panel(f"🔄 Processing all {len(pub_keys)} public keys...", title="[bold blue]Processing[/bold blue]", border_style="blue"))
|
|
106
|
-
program = "\n\n\n".join([get_add_ssh_key_script(key) for key in pub_keys])
|
|
107
|
-
|
|
108
|
-
elif pub_val:
|
|
109
|
-
console.print(Panel("📋 Please provide a filename and paste the public key content", title="[bold blue]Input Required[/bold blue]", border_style="blue"))
|
|
110
|
-
key_filename = input("📝 File name (default: my_pasted_key.pub): ") or "my_pasted_key.pub"
|
|
111
|
-
key_path = PathExtended.home().joinpath(f".ssh/{key_filename}")
|
|
112
|
-
key_path.write_text(input("🔑 Paste the public key here: "), encoding="utf-8")
|
|
113
|
-
console.print(Panel(f"💾 Key saved to: {key_path}", title="[bold green]Success[/bold green]", border_style="green"))
|
|
114
|
-
program = get_add_ssh_key_script(key_path)
|
|
115
|
-
elif from_github:
|
|
116
|
-
console.print(Panel(f"🌐 Fetching public keys from GitHub user: {from_github}", title="[bold blue]GitHub Fetch[/bold blue]", border_style="blue"))
|
|
117
|
-
import requests
|
|
118
|
-
# $pubkey_url = 'https://github.com/thisismygitrepo.keys' # $pubkey_string = (Invoke-WebRequest $pubkey_url).Content
|
|
119
|
-
response = requests.get(f"https://api.github.com/users/{from_github}/keys")
|
|
120
|
-
if response.status_code != 200:
|
|
121
|
-
console.print(Panel(f"❌ ERROR: Failed to fetch keys from GitHub user {from_github}\nStatus Code: {response.status_code}", title="[bold red]Error[/bold red]", border_style="red"))
|
|
122
|
-
raise RuntimeError(f"Failed to fetch keys from GitHub user {from_github}: Status Code {response.status_code}")
|
|
123
|
-
keys = response.json()
|
|
124
|
-
if not keys:
|
|
125
|
-
console.print(Panel(f"⚠️ No public keys found for GitHub user: {from_github}", title="[bold yellow]Warning[/bold yellow]", border_style="yellow"))
|
|
126
|
-
return
|
|
127
|
-
console.print(Panel(f"✅ Found {len(keys)} public key(s) for user: {from_github}", title="[bold green]Success[/bold green]", border_style="green"))
|
|
128
|
-
key_path = PathExtended.home().joinpath(f".ssh/{from_github}_github_keys.pub")
|
|
129
|
-
key_path.write_text("\n".join([key["key"] for key in keys]), encoding="utf-8")
|
|
130
|
-
console.print(Panel(f"💾 Keys saved to: {key_path}", title="[bold green]Success[/bold green]", border_style="green"))
|
|
131
|
-
program = get_add_ssh_key_script(key_path)
|
|
132
|
-
else:
|
|
133
|
-
console.print(Panel("❌ ERROR: No method provided to add SSH key\nUse --help for options", title="[bold red]Error[/bold red]", border_style="red"))
|
|
134
|
-
raise ValueError("No method provided to add SSH key. Use --help for options.")
|
|
135
|
-
console.print(Panel("🚀 SSH KEY AUTHORIZATION READY\nRun the generated script to apply changes", box=box.DOUBLE_EDGE, title_align="left"))
|
|
136
|
-
from machineconfig.utils.code import run_shell_script
|
|
137
|
-
run_shell_script(script=program)
|
|
138
|
-
import socket
|
|
139
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
140
|
-
s.connect(('8.8.8.8',80))
|
|
141
|
-
local_ip_v4 = s.getsockname()[0]
|
|
142
|
-
s.close()
|
|
143
|
-
print(f"This computer is @ {local_ip_v4}")
|
|
144
|
-
console.print(Panel("✅ SSH KEY AUTHORIZATION COMPLETED", box=box.DOUBLE_EDGE, title_align="left"))
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if __name__ == "__main__":
|
|
148
|
-
pass
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# 🔍 Fuzzy Finder with Nano Editor Integration
|
|
3
|
-
|
|
4
|
-
# 📝 Open selected file in nano
|
|
5
|
-
nano (fzf2g) # space used for precedence in execution
|
|
6
|
-
|
|
7
|
-
# 💡 Alternative commands (commented):
|
|
8
|
-
# 🔎 FZF with bat preview:
|
|
9
|
-
# fzf --ansi --preview-window 'right:60%' --preview 'bat --color=always --style=numbers,grid,header --line-range :300 {}'
|
|
10
|
-
|
|
11
|
-
# 🪟 Windows Git Bash version:
|
|
12
|
-
# & "C:\Program Files\Git\usr\bin\nano.exe" (fzf --ansi --preview-window 'right:60%' --preview 'bat --color=always --style=numbers,grid,header --line-range :300 {}')
|
|
13
|
-
|
|
14
|
-
# 📜 PowerShell script integration:
|
|
15
|
-
# fzf | nano.ps1
|
|
16
|
-
|
|
@@ -1,66 +0,0 @@
|
|
|
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
|
-
echo "📥 Installing latest Node.js..."
|
|
18
|
-
nvm install node || true
|
|
19
|
-
echo "📥 Installing SQLite - lightweight SQL database..."
|
|
20
|
-
echo "📥 Installing PostgreSQL client..."
|
|
21
|
-
echo "📥 Installing Redis command-line tools..."
|
|
22
|
-
sudo nala install sqlite3 -y || true
|
|
23
|
-
sudo nala install postgresql-client -y || true # # same for pgsq, when the server runs, we will need the client to talk to it.
|
|
24
|
-
sudo nala install redis-tools -y || true # this gives redis-cli, which is needed to talk to the redis-server that is running in the docker container.
|
|
25
|
-
|
|
26
|
-
# --GROUP:TerminalEyeCandy:fortune,toilet,sl,aafire,cmatrix,hollywood,chafa
|
|
27
|
-
echo "📥 Installing fortune - random wisdom generator..."
|
|
28
|
-
echo "📥 Installing toilet - large ASCII text generator..."
|
|
29
|
-
echo "📥 Installing sl - steam locomotive animation..."
|
|
30
|
-
echo "📥 Installing aafire - ASCII art fire animation..."
|
|
31
|
-
echo "📥 Installing cmatrix - Matrix-style terminal animation..."
|
|
32
|
-
echo "📥 Installing hollywood - Hollywood hacker terminal effect..."
|
|
33
|
-
echo "📥 Installing chafa - terminal image viewer..."
|
|
34
|
-
sudo nala install cowsay -y || true
|
|
35
|
-
sudo nala install lolcat -y || true
|
|
36
|
-
sudo nala install boxes -y || true
|
|
37
|
-
sudo nala install figlet -y || true
|
|
38
|
-
sudo nala install fortune -y || true
|
|
39
|
-
sudo nala install toilet -y || true
|
|
40
|
-
sudo nala install chafa -y
|
|
41
|
-
sudo nala install sl -y || true
|
|
42
|
-
sudo nala install libaa-bin -y
|
|
43
|
-
echo 'keyboard-configuration keyboard-configuration/layout select US English' | sudo debconf-set-selections
|
|
44
|
-
echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | sudo debconf-set-selections
|
|
45
|
-
sudo DEBIAN_FRONTEND=noninteractive nala install -y cmatrix
|
|
46
|
-
sudo nala install hollywood -y || true
|
|
47
|
-
|
|
48
|
-
# --GROUP:NetworkTools: sshfs,samba,fuse3,nfs-common
|
|
49
|
-
echo "📥 Installing sshfs - mount remote filesystems over SSH..."
|
|
50
|
-
echo "📥 Installing Samba - LAN-based file sharing..."
|
|
51
|
-
sudo nala install sshfs
|
|
52
|
-
sudo nala install samba
|
|
53
|
-
sudo nala install fuse3 -y || true
|
|
54
|
-
sudo nala install nfs-common -y || true
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# --GROUP:DEV_SYSTEM: graphviz,make,rust,libssl-dev,sqlite3,postgresql-client,redis-tools
|
|
58
|
-
echo "📥 Installing Graphviz - graph visualization software..."
|
|
59
|
-
echo "📥 Installing make - build automation tool..."
|
|
60
|
-
echo "📥 Installing SSL development libraries for Rust..."
|
|
61
|
-
echo "📥 Installing Rust programming language and toolchain..."
|
|
62
|
-
sudo nala install graphviz -y || true
|
|
63
|
-
sudo nala install ffmpeg -y || true # Required by some dev tools
|
|
64
|
-
sudo nala install make -y || true # Required by LunarVim and SpaceVim
|
|
65
|
-
(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
|
|
66
|
-
sudo nala install libssl-dev -y
|
machineconfig/setup_mac/apps.sh
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
4
|
-
echo "🔄 Updating Homebrew..."
|
|
5
|
-
brew update || true
|
|
6
|
-
|
|
7
|
-
# --GROUP:ESSENTIAL_SYSTEM:git,nano,curl,nvm,nodejs,brave-browser,visual-studio-code
|
|
8
|
-
echo "📥 Installing essential tools..."
|
|
9
|
-
echo "📥 Installing Git version control..."
|
|
10
|
-
echo "📥 Installing Nano text editor..."
|
|
11
|
-
echo "📥 Installing Node Version Manager (NVM)..."
|
|
12
|
-
# Note: git and nano are pre-installed on macOS, but we install via Homebrew to ensure latest versions
|
|
13
|
-
brew install git || true
|
|
14
|
-
brew install nano || true
|
|
15
|
-
brew install curl || true
|
|
16
|
-
# Install NVM
|
|
17
|
-
if [ ! -s "$HOME/.nvm/nvm.sh" ]; then
|
|
18
|
-
echo "📥 Installing NVM (Node Version Manager)..."
|
|
19
|
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
|
20
|
-
fi
|
|
21
|
-
echo "🔧 Configuring NVM environment..."
|
|
22
|
-
export NVM_DIR="$HOME/.nvm"
|
|
23
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
24
|
-
echo "📥 Installing latest Node.js..."
|
|
25
|
-
nvm install node || true
|
|
26
|
-
brew install --cask brave-browser || true
|
|
27
|
-
brew install --cask visual-studio-code || true
|
|
28
|
-
|
|
29
|
-
# Database tools
|
|
30
|
-
# echo "📥 Installing SQLite - lightweight SQL database..."
|
|
31
|
-
# echo "📥 Installing PostgreSQL client..."
|
|
32
|
-
# echo "📥 Installing Redis command-line tools..."
|
|
33
|
-
# brew install sqlite3 || true
|
|
34
|
-
# brew install postgresql || true
|
|
35
|
-
# brew install redis || true
|
|
36
|
-
|
|
37
|
-
# --GROUP:TerminalEyeCandy:fortune,toilet,sl,cmatrix,chafa
|
|
38
|
-
echo "📥 Installing fortune - random wisdom generator..."
|
|
39
|
-
echo "📥 Installing figlet - ASCII art text generator..."
|
|
40
|
-
echo "📥 Installing cowsay - ASCII cow speech generator..."
|
|
41
|
-
echo "📥 Installing lolcat - colorized text output..."
|
|
42
|
-
echo "📥 Installing chafa - terminal image viewer..."
|
|
43
|
-
brew install fortune || true
|
|
44
|
-
brew install figlet || true
|
|
45
|
-
brew install cowsay || true
|
|
46
|
-
brew install lolcat || true
|
|
47
|
-
brew install chafa || true
|
|
48
|
-
|
|
49
|
-
# --GROUP:NetworkTools: sshfs,nfs-utils
|
|
50
|
-
echo "📥 Installing SSHFS - mount remote filesystems over SSH..."
|
|
51
|
-
echo "📥 Installing NFS utilities..."
|
|
52
|
-
brew install sshfs || true
|
|
53
|
-
brew install nfs-utils || true
|
|
54
|
-
|
|
55
|
-
# --GROUP:DEV_SYSTEM: graphviz,make,rust,sqlite3,postgresql-client,redis-tools,ffmpeg
|
|
56
|
-
echo "📥 Installing Graphviz - graph visualization software..."
|
|
57
|
-
echo "📥 Installing make - build automation tool..."
|
|
58
|
-
echo "📥 Installing FFmpeg - multimedia framework..."
|
|
59
|
-
echo "📥 Installing SSL/TLS development libraries..."
|
|
60
|
-
echo "📥 Installing Rust programming language and toolchain..."
|
|
61
|
-
brew install graphviz || true
|
|
62
|
-
brew install make || true
|
|
63
|
-
brew install ffmpeg || true
|
|
64
|
-
brew install openssl || true
|
|
65
|
-
|
|
66
|
-
# Install Rust if not already installed
|
|
67
|
-
if ! command -v rustc &> /dev/null; then
|
|
68
|
-
echo "📥 Installing Rust..."
|
|
69
|
-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y || true
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
@@ -1,62 +0,0 @@
|
|
|
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 "Git" --Id "Git.Git" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
12
|
-
winget install --no-upgrade --name "Neovim" --Id "Neovim.Neovim" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
13
|
-
winget install --no-upgrade --name "GNU Nano" --Id "GNU.Nano" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
14
|
-
# winget install --no-upgrade --name "File" --Id "GnuWin32.File" --source winget --accept-package-agreements --accept-source-agreements
|
|
15
|
-
|
|
16
|
-
Install-Module -Name Terminal-Icons -Repository PSGallery -Force -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
|
|
17
|
-
Install-Module -Name PSFzf -SkipPublisherCheck # -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# --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
|
|
21
|
-
winget install --no-upgrade --name "VSRedistrib" --Id "Microsoft.VC++2015-2022Redist-x64" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
22
|
-
winget install --no-upgrade --name "VSBuildTools" --Id "Microsoft.VisualStudio.2022.BuildTools" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
23
|
-
winget install --no-upgrade --name "Codeblocks" --Id "Codeblocks.Codeblocks" --source winget --scope user --accept-package-agreements --accept-source-agreements # IDE for C/C++
|
|
24
|
-
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
|
|
25
|
-
winget install --no-upgrade --name "GnuPG" --Id "GnuPG.GnuPG" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
26
|
-
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()
|
|
27
|
-
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
|
|
28
|
-
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
|
|
29
|
-
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
|
|
30
|
-
winget install --no-upgrade --name "Node.js" --Id "OpenJS.NodeJS" --source winget --scope user --accept-package-agreements --accept-source-agreements # ncessary for nvim plugins.
|
|
31
|
-
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
|
|
32
|
-
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
|
|
33
|
-
winget install --no-upgrade --name "Cloudflare WARP" --Id "Cloudflare.Warp" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
34
|
-
winget install --no-upgrade --name "Microsoft Garage Mouse without Borders" --Id "Microsoft.MouseWithoutBorders" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# --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
|
|
38
|
-
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
|
|
39
|
-
winget install --no-upgrade --name "Google Chrome" --Id "Google.Chrome" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
40
|
-
winget install --no-upgrade --name "Chrome Remote Desktop Host" --Id "Google.ChromeRemoteDesktop" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
41
|
-
winget install --no-upgrade --name "Zoom" --Id "Zoom.Zoom" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
42
|
-
winget install --no-upgrade --name "7-zip" --Id "7zip.7zip" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
43
|
-
winget install --no-upgrade --name "Mozilla Firefox" --Id "Mozilla.Firefox" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
44
|
-
winget install --no-upgrade --name "Mozilla Thunderbird (en-US)" --Id "Mozilla.Thunderbird" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
45
|
-
winget install --no-upgrade --name "StreamlabsOBS" --Id "Streamlabs.StreamlabsOBS" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
46
|
-
winget install --no-upgrade --name "OBSStudio" --Id "OBSProject.OBSStudio" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
47
|
-
winget install --no-upgrade --name "MiKTeX" --Id "MiKTeX.MiKTeX" --source winget --scope user # library / lanugage
|
|
48
|
-
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
|
|
49
|
-
winget install --no-upgrade --name "notepad++" --Id "Notepad++.Notepad++" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
50
|
-
winget install --no-upgrade --name "Lapce" --Id "Lapce.Lapce" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
51
|
-
winget install --no-upgrade --name "TesseractOCR" --Id "UB-Mannheim.TesseractOCR" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
52
|
-
winget install --no-upgrade --name "perl" --Id "StrawbgnogerryPerl.StrawberryPerl" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
53
|
-
winget install --no-upgrade --name "DB Browser for SQLite" --Id "DBBrowserForSQLite.DBBrowserForSQLite" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
54
|
-
winget install --no-upgrade --name "sql server management studio" --Id "Microsoft.SQLServerManagementStudio" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
55
|
-
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
|
|
56
|
-
winget install --no-upgrade --name "julia" --Id "Julialang.Julia" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
57
|
-
winget install --no-upgrade --name "Chafa" --Id "hpjansson.Chafa" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
58
|
-
winget install --no-upgrade --name "bottom" --Id "Clement.bottom" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
59
|
-
winget install --no-upgrade --name "onefetch" --Id "o2sh.onefetch" --source winget --scope user # repo-version of system fastfetch, see also tokei
|
|
60
|
-
winget install --no-upgrade --name "Just" --Id "Casey.Just" --source winget --scope user # commandline runner
|
|
61
|
-
winget install --no-upgrade --name "hyperfine" --Id "sharkdp.hyperfine" --source winget --scope user # benchmarking tool
|
|
62
|
-
winget install --no-upgrade --name "AWS Command Line Interface" --Id "Amazon.AWSCLI" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: machineconfig
|
|
3
|
-
Version: 7.49
|
|
4
|
-
Summary: Dotfiles management package
|
|
5
|
-
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
|
-
License: Apache 2.0
|
|
7
|
-
Project-URL: Homepage, https://github.com/thisismygitrepo/machineconfig
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/thisismygitrepo/machineconfig/issues
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Requires-Python: >=3.13
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
Requires-Dist: cryptography>=44.0.2
|
|
15
|
-
Requires-Dist: fire>=0.7.0
|
|
16
|
-
Requires-Dist: joblib>=1.5.2
|
|
17
|
-
Requires-Dist: paramiko>=3.5.1
|
|
18
|
-
Requires-Dist: randomname>=0.2.1
|
|
19
|
-
Requires-Dist: requests>=2.32.5
|
|
20
|
-
Requires-Dist: rich>=14.0.0
|
|
21
|
-
Requires-Dist: tenacity>=9.1.2
|
|
22
|
-
Requires-Dist: psutil>=7.0.0
|
|
23
|
-
Requires-Dist: gitpython>=3.1.44
|
|
24
|
-
Requires-Dist: pyfzf>=0.3.1
|
|
25
|
-
Requires-Dist: rclone-python>=0.1.23
|
|
26
|
-
Requires-Dist: questionary>=2.1.1
|
|
27
|
-
Requires-Dist: typer-slim>=0.19.2
|
|
28
|
-
Requires-Dist: typer>=0.19.2
|
|
29
|
-
Provides-Extra: windows
|
|
30
|
-
Requires-Dist: pywin32; extra == "windows"
|
|
31
|
-
Provides-Extra: plot
|
|
32
|
-
Requires-Dist: sqlalchemy>=2.0.43; extra == "plot"
|
|
33
|
-
Requires-Dist: ipykernel>=6.30.1; extra == "plot"
|
|
34
|
-
Requires-Dist: ipython>=9.5.0; extra == "plot"
|
|
35
|
-
Requires-Dist: jupyterlab>=4.4.9; extra == "plot"
|
|
36
|
-
Requires-Dist: kaleido>=1.1.0; extra == "plot"
|
|
37
|
-
Requires-Dist: matplotlib>=3.10.6; extra == "plot"
|
|
38
|
-
Requires-Dist: nbformat>=5.10.4; extra == "plot"
|
|
39
|
-
Requires-Dist: numpy>=2.3.3; extra == "plot"
|
|
40
|
-
Requires-Dist: plotly>=6.3.0; extra == "plot"
|
|
41
|
-
Requires-Dist: polars>=1.33.1; extra == "plot"
|
|
42
|
-
Requires-Dist: python-magic>=0.4.27; extra == "plot"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<p align="center">
|
|
46
|
-
|
|
47
|
-
<a href="https://github.com/thisismygitrepo/machineconfig/commits">
|
|
48
|
-
<img src="https://img.shields.io/github/commit-activity/m/thisismygitrepo/machineconfig" />
|
|
49
|
-
</a>
|
|
50
|
-
|
|
51
|
-
</p>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
# Welcome to machineconfig
|
|
55
|
-
|
|
56
|
-
Machineconfig is a package for managing configuration files (aka dotfiles). The idea is to collect those critical, time-consuming-files-to-setup in one directory and reference them via symbolic links from their original locations. Thus, when a new machine is to be setup, all that is required is to clone the repo in that machine and create the symbolic links.
|
|
57
|
-
Dotfiles are divided into private and public. Examples of private ones are, `~/.gitconfig`, `~/.ssh`, etc. Whereas public config files are ones like `lfrc`. The private dotfiles are placed @ `~/dotfiles`. The files therein are encrypted before backedup.
|
|
58
|
-
|
|
59
|
-
# Install On Windows:
|
|
60
|
-
|
|
61
|
-
```powershell
|
|
62
|
-
# Temporary install:
|
|
63
|
-
iex (iwr bit.ly/cfgwindows).Content
|
|
64
|
-
# Or, if UV is installed:
|
|
65
|
-
iex (uvx machineconfig define)
|
|
66
|
-
# Permanent install:
|
|
67
|
-
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Skip if UV is already installed
|
|
68
|
-
uvx install --upgrade machineconfig
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
# Install On Linux and MacOS
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# Temporary install:
|
|
75
|
-
. <(curl -L bit.ly/cfglinux)
|
|
76
|
-
# Or, if UV is installed:
|
|
77
|
-
. <(uvx machineconfig define)
|
|
78
|
-
# Permanent install:
|
|
79
|
-
curl -LsSf https://astral.sh/uv/install.sh | sh # Skip if UV is already installed
|
|
80
|
-
uvx install --upgrade machineconfig
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
# Author
|
|
85
|
-
Alex Al-Saffar. [email](mailto:programmer@usa.com)
|
|
86
|
-
|
|
87
|
-
# Contributor
|
|
88
|
-
Ruby Chan. [email](mailto:ruby.chan@sa.gov.au)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
[](https://github.com/ashutosh00710/github-readme-activity-graph)
|
|
92
|
-
|
|
File without changes
|
/machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_add_key.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|