Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@
"projects",
]

# Personal GitHub Repos (public, cloned for the 'adam' user).
# dest is resolved at runtime relative to the target user's home dir.
PERSONAL_GITHUB_REPOS: Dict[str, str] = {
"traefik-proxy": "https://github.com/adamamyl/traefik-proxy.git",
"dracula": "https://github.com/adamamyl/dracula.git",
}

# Firewall module:
FIREWALL_SCRIPT_DEST: str = "/usr/local/bin/apply-firewall.sh"
FIREWALL_SERVICE_NAME: str = "firewall.service"
Expand Down
40 changes: 40 additions & 0 deletions lib/installer_utils/module_personal_repos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from __future__ import annotations

from pathlib import Path

from ..constants import PERSONAL_GITHUB_REPOS
from ..executor import Executor
from ..logger import log
from .git_tools import clone_or_update_repo

PERSONAL_REPOS_USER: str = "adam"


def _setup_repo(exec_obj: Executor, key: str) -> None:
url = PERSONAL_GITHUB_REPOS[key]
user_home = Path(f"~{PERSONAL_REPOS_USER}").expanduser()
projects_dir = user_home / "projects"
dest = str(projects_dir / key)

exec_obj.run(f"mkdir -p {projects_dir}", force_sudo=True)
exec_obj.run(
f"chown {PERSONAL_REPOS_USER}:{PERSONAL_REPOS_USER} {projects_dir}", force_sudo=True
)

log.info(f"Cloning/updating {key}...")
clone_or_update_repo(exec_obj, url, dest, user=PERSONAL_REPOS_USER)
exec_obj.run(f"chown -R {PERSONAL_REPOS_USER}:{PERSONAL_REPOS_USER} {dest}", force_sudo=True)
log.success(f"{key} ready at {dest}.")


def setup_traefik_proxy(exec_obj: Executor) -> None:
_setup_repo(exec_obj, "traefik-proxy")


def setup_dracula(exec_obj: Executor) -> None:
_setup_repo(exec_obj, "dracula")


def setup_all_personal_repos(exec_obj: Executor) -> None:
for key in PERSONAL_GITHUB_REPOS:
_setup_repo(exec_obj, key)
32 changes: 31 additions & 1 deletion setup_machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,21 @@ def parse_args() -> Tuple[argparse.Namespace, List[str]]:
group_modules.add_argument("--wolfcraig", action="store_true", dest="do_wolfcraig",
help="Clone wolfcraig + ghost-docker and run server_setup.py.")

# PERSONAL GITHUB REPOS (public)
group_personal = parser.add_argument_group("Personal GitHub Repos")
group_personal.add_argument(
"--personal-repos", action="store_true", dest="do_personal_repos",
help="Clone/update all personal GitHub repos (traefik-proxy, dracula)."
)
group_personal.add_argument(
"--traefik-proxy", action="store_true", dest="do_traefik_proxy",
help="Clone/update adamamyl/traefik-proxy."
)
group_personal.add_argument(
"--dracula", action="store_true", dest="do_dracula",
help="Clone/update adamamyl/dracula."
)

# --- Virtual Machine Options ---
group_vm = parser.add_argument_group("Virtual Machine Options")
group_vm.add_argument("--vm", "--virtmachine", action="store_true", dest="do_vm",
Expand Down Expand Up @@ -238,7 +253,7 @@ def main() -> None:
# 3. Import Modules (required here for internal command lookup and execution)
from lib.installer_utils import ( # noqa: E402
module_docker, module_fake_le, module_no2id, module_ollama,
module_pseudohome, module_wolfcraig,
module_personal_repos, module_pseudohome, module_wolfcraig,
tailscale, user_mgmt, packages, virtmachine, vscode, tweaks,
)
from lib.installer_utils.apt_tools import apt_autoremove
Expand Down Expand Up @@ -288,6 +303,9 @@ def main() -> None:
"ollama": args.do_ollama,
"firewall": args.do_firewall,
"wolfcraig": args.do_wolfcraig,
"personal_repos": args.do_personal_repos,
"traefik_proxy": args.do_traefik_proxy,
"dracula": args.do_dracula,
}

if args.all:
Expand Down Expand Up @@ -354,6 +372,18 @@ def main() -> None:
log_module_start("WOLFCRAIG SETUP", EXEC)
module_wolfcraig.setup_wolfcraig(EXEC)

# Personal GitHub Repos (public)
if tasks["personal_repos"]:
log_module_start("PERSONAL REPOS (ALL)", EXEC)
module_personal_repos.setup_all_personal_repos(EXEC)
else:
if tasks["traefik_proxy"]:
log_module_start("PERSONAL REPOS: TRAEFIK-PROXY", EXEC)
module_personal_repos.setup_traefik_proxy(EXEC)
if tasks["dracula"]:
log_module_start("PERSONAL REPOS: DRACULA", EXEC)
module_personal_repos.setup_dracula(EXEC)

# Local CA and TLS certs setup-a-tron
if tasks["fake_le"]:
log_module_start("FAKE-LE ORCHESTRATION", EXEC)
Expand Down
Loading