{"id":13494271,"url":"https://github.com/Josh-XT/Setup","last_synced_at":"2025-03-28T13:32:53.269Z","repository":{"id":153254044,"uuid":"591932383","full_name":"Josh-XT/Setup","owner":"Josh-XT","description":"About my PC setup and my scripts to automate workstation and server setup after a fresh OS install.","archived":false,"fork":false,"pushed_at":"2024-10-17T15:38:37.000Z","size":86,"stargazers_count":13,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-20T08:12:56.070Z","etag":null,"topics":["automation","debian","setup","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Josh-XT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-22T11:52:44.000Z","updated_at":"2024-10-17T15:38:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"88855bae-a9c3-43c5-a2b9-6bcf32da4178","html_url":"https://github.com/Josh-XT/Setup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josh-XT%2FSetup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josh-XT%2FSetup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josh-XT%2FSetup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josh-XT%2FSetup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Josh-XT","download_url":"https://codeload.github.com/Josh-XT/Setup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222382544,"owners_count":16975383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","debian","setup","ubuntu"],"created_at":"2024-07-31T19:01:23.366Z","updated_at":"2024-10-31T08:32:11.079Z","avatar_url":"https://github.com/Josh-XT.png","language":"Shell","funding_links":["https://github.com/sponsors/Josh-XT","https://paypal.me/joshxt","https://ko-fi.com/joshxt"],"categories":["Shell"],"sub_categories":[],"readme":"# Setup Automation and Documentation\n\n[![GitHub](https://img.shields.io/badge/GitHub-Sponsor%20Josh%20XT-blue?logo=github\u0026style=plastic)](https://github.com/sponsors/Josh-XT) [![PayPal](https://img.shields.io/badge/PayPal-Sponsor%20Josh%20XT-blue.svg?logo=paypal\u0026style=plastic)](https://paypal.me/joshxt) [![Ko-Fi](https://img.shields.io/badge/Kofi-Sponsor%20Josh%20XT-blue.svg?logo=kofi\u0026style=plastic)](https://ko-fi.com/joshxt)\n\nI created this repository to keep my own development setup documented so that I can stand up a new development environment easily if I ever need to.  The scripts below install and update everything I need for development and daily use after a fresh OS install of `Ubuntu 24.04` server or desktop. I have also documented my hardware setup and Visual Studio Code settings and extensions below.\n\nMy recommendation is to fork this repository and modify the scripts to fit your own needs and so that you can document your own setup for yourself.\n\n_The scripts below will require modification unless you want my exact setup, which should only be the case if you are me._\n\n## Table of Contents 📖\n\n- [Setup Automation and Documentation](#setup-automation-and-documentation)\n  - [Table of Contents 📖](#table-of-contents-)\n  - [Automatic Setup During Ubuntu Installation](#automatic-setup-during-ubuntu-installation)\n  - [Manual Setup after Ubuntu Installation](#manual-setup-after-ubuntu-installation)\n    - [Ubuntu Server Setup](#ubuntu-server-setup)\n    - [Ubuntu Workstation Setup](#ubuntu-workstation-setup)\n  - [VSCode Setup](#vscode-setup)\n    - [Settings](#settings)\n    - [Extensions](#extensions)\n  - [Clone All Repositories](#clone-all-repositories)\n  - [My Workstation Hardware](#my-workstation-hardware)\n    - [Mouse Bindings for `Logitech G502`](#mouse-bindings-for-logitech-g502)\n  - [Potentially Important Links](#potentially-important-links)\n    - [Operating System Downloads](#operating-system-downloads)\n    - [Software Downloads](#software-downloads)\n\n## Automatic Setup During Ubuntu Installation\n\nTo automatically set up your environment during the Ubuntu installation process:\n\n1. Download the `cloud-init.yaml` file from this repository.\n2. When installing Ubuntu:\n   - For server installations using the ISO, you can pass this file using kernel parameters at boot time. Add `autoinstall ds=nocloud-net;s=https://raw.githubusercontent.com/Josh-XT/Setup/main/` to your kernel parameters.\n   - For cloud images or VMs, pass the `cloud-init.yaml` file directly to your hypervisor or cloud provider.\n\nThis will automatically:\n\n- Install git\n- Clone this repository\n- Run the appropriate setup script based on whether it's a desktop or server environment\n- Set up necessary bash aliases\n\nAfter the installation is complete and you log in for the first time, your environment will already be set up according to the scripts in this repository.\n\n## Manual Setup after Ubuntu Installation\n\n### Ubuntu Server Setup\n\nThe `ServerSetup.sh` is similar to the `WorkstationSetup.sh` script, but is geared towards installing the essentials that I need for a new [Ubuntu Server](https://ubuntu.com/download/server) virtual machine on any given project that I am working on.  This includes `Docker`, `NodeJS`, `Yarn`, `PowerShell`, `Python`, `.NET Runtimes` and all updates from `apt` and `snap`.  It also sets the timezone on the server to `America/New_York`.\n\n```bash\nsudo apt update\nsudo apt install -y git\ngit clone https://github.com/Josh-XT/Setup\nsudo chmod +x Setup/*.sh\ncd Setup\n./UbuntuSetup.sh\n```\n\n### Ubuntu Workstation Setup\n\nThe `WorkstationSetup.sh` script handles all of my application installs and git configurations on a workstation so that I can stand up a new development environment for myself in minutes without missing any of my critical software or configurations.  `WorkstationSetup.sh` was created to work on `Ubuntu 24.04`, but may also work on other Debian-based distributions.\n\nOpen terminal and copy/paste the following:\n\n```bash\nsudo apt update\nsudo apt install -y git\ngit clone https://github.com/Josh-XT/Setup\nsudo chmod +x Setup/*.sh\n```\n\n_**Note: WorkstationSetup.sh should be modified before running it so that you can enter your own details in the git config and add or remove any apt packages you might want or not want.  This script is specifically set up for me to use after a fresh image.**_\n\n```bash\ncd Setup\n./WorkstationSetup.sh\n```\n\nFor more information, check out the [AGiXT](https://github.com/Josh-XT/AGiXT) repository.\n\n## VSCode Setup\n\nI have settings sync enabled and sync with my GitHub account, but I've found it very helpful to other to have a list of the settings and extensions that I use.\n\n### Settings\n\nSome settings I'd highly recommend setting up the auto save on focus change as well as the auto format on save.  Set Python Black as your default formatter for python.  Click on the settings gear in the bottom left of VSCode, then `Settings`.  You'll be able to search for the settings below and change them there.\n\n| Setting                       | Value             |\n|-------------------------------|-------------------|\n| `Files: Auto Save`            | `onFocusChange`   |\n| `Editor: Default Formatter`   | `Black Formatter` |\n| `Editor: Format on Save`      | `Checked`         |\n| `Editor: Format On Save Mode` | `file`            |\n| `Notebook: Format On Save`    | `Checked`         |\n\n### Extensions\n\nTo install the same VSCode extensions that I use, run the `CodeExtensions.sh` script in the `Setup` directory.\n\n```bash\ncode --install-extension AkashGutha.qiksit-snippets\ncode --install-extension amazonwebservices.aws-toolkit-vscode\ncode --install-extension apollographql.vscode-apollo\ncode --install-extension AykutSarac.jsoncrack-vscode\ncode --install-extension christian-kohler.npm-intellisense\ncode --install-extension dbaeumer.vscode-eslint\ncode --install-extension eamodio.gitlens\ncode --install-extension elypia.magick-image-reader\ncode --install-extension esbenp.prettier-vscode\ncode --install-extension firefox-devtools.vscode-firefox-debug\ncode --install-extension gamunu.vscode-yarn\ncode --install-extension GitHub.codespaces\ncode --install-extension GitHub.copilot-chat\ncode --install-extension GitHub.copilot-labs\ncode --install-extension GitHub.copilot-nightly\ncode --install-extension github.vscode-github-actions\ncode --install-extension GrapeCity.gc-excelviewer\ncode --install-extension Gruntfuggly.todo-tree\ncode --install-extension Ionide.Ionide-fsharp\ncode --install-extension leo-labs.dotnet\ncode --install-extension mikestead.dotenv\ncode --install-extension ms-azuretools.vscode-docker\ncode --install-extension ms-dotnettools.csharp\ncode --install-extension ms-dotnettools.dotnet-interactive-vscode\ncode --install-extension ms-dotnettools.vscode-dotnet-runtime\ncode --install-extension ms-mssql.data-workspace-vscode\ncode --install-extension ms-mssql.mssql\ncode --install-extension ms-mssql.sql-bindings-vscode\ncode --install-extension ms-mssql.sql-database-projects-vscode\ncode --install-extension ms-python.black-formatter\ncode --install-extension ms-python.isort\ncode --install-extension ms-python.python\ncode --install-extension ms-python.vscode-pylance\ncode --install-extension ms-toolsai.jupyter\ncode --install-extension ms-toolsai.jupyter-keymap\ncode --install-extension ms-toolsai.jupyter-renderers\ncode --install-extension ms-toolsai.vscode-jupyter-cell-tags\ncode --install-extension ms-toolsai.vscode-jupyter-slideshow\ncode --install-extension ms-vscode-remote.remote-containers\ncode --install-extension ms-vscode-remote.remote-ssh\ncode --install-extension ms-vscode-remote.remote-ssh-edit\ncode --install-extension ms-vscode-remote.remote-wsl\ncode --install-extension ms-vscode-remote.vscode-remote-extensionpack\ncode --install-extension ms-vscode.azurecli\ncode --install-extension ms-vscode.powershell\ncode --install-extension ms-vscode.remote-explorer\ncode --install-extension ms-vscode.remote-server\ncode --install-extension ms-vscode.vscode-typescript-next\ncode --install-extension ms-vsliveshare.vsliveshare\ncode --install-extension quantum.quantum-devkit-vscode\ncode --install-extension redhat.vscode-yaml\ncode --install-extension ShahilKumar.docxreader\ncode --install-extension stylelint.vscode-stylelint\ncode --install-extension tomoki1207.pdf\ncode --install-extension wayou.vscode-todo-highlight\ncode --install-extension yzhang.markdown-all-in-one\ncode --install-extension zetta.qsharp-extensionpack\n```\n\n## Clone All Repositories\n\nOnce the workstation setup is complete, you can clone all of your GitHub repositories easily with the `GetRepos.ipynb` notebook. This will clone all GitHub repositories that you own or collaborate on sorted by organization/owner into your defined `repo_dir`.\n\n- Open the `GetRepos.ipynb` notebook in VSCode\n- Enter your [GitHub Personal Access Token](https://github.com/settings/tokens) into the `gh_token` variable\n- Update the `repo_dir` with the path that you would like to clone the repositories to\n- Run the notebook and wait for all of your repositories to be cloned.\n- Open the `repo_dir` in VSCode to start working on your projects.\n\n## My Workstation Hardware\n\n| Item  | Desktop | Laptop |\n|-------------------|-------------------|-------------------|\n| **Model**             | Custom Built | [Alienware x17 R2](https://www.microcenter.com/product/647646/dell-alienware-x17-r2-173-gaming-laptop-computer-white) |\n| **CPU**               | [Intel Core i9-12900KS](https://ark.intel.com/content/www/us/en/ark/products/225916/intel-core-i912900ks-processor-30m-cache-up-to-5-50-ghz.html)   | Intel Core i9-12900HK |\n| **GPU**               | [NVIDIA GeForce RTX 4090 24GB](https://www.asus.com/us/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4090-o24g-gaming/) | NVIDIA GeForce RTX 3080 Ti 16GB |\n| **RAM**               | [128GB DDR5-5200](https://www.gskill.com/product/165/377/1649665420/F5-5200J3636D32GX2-RS5W-F5-5200J3636D32GA2-RS5W) | [64GB DDR5-5600](https://www.microcenter.com/product/661345/crucial-64gb-(2-x-32gb)-ddr5-5600-pc5-44800-cl46-dual-channel-laptop-memory-kit-ct2k32g56c46s5-black) |\n| **Storage**           | 2TB M2 | 2TB M2 |\n| **Mouse**             | [Logitech G502](https://www.logitechg.com/en-us/products/gaming-mice/g502-hero-gaming-mouse.910-005469.html) | -- |\n| **Keyboard**          | [Logitech K350](https://www.logitech.com/en-us/products/keyboards/k350-wave-ergonomic.920-001996.html) | -- |\n| **Monitor**           | 65in Samsung 4k TV | 17.3\" 1080p |\n\n### Mouse Bindings for `Logitech G502`\n\nIn Linux, I use `Piper` to configure my mouse.  I have the following bindings set up for my mouse:\n\n| Button | Binding | Action |\n|--------|--------|------|\n| G4 | Backward | `Backward` button in the web browser. |\n| G5 | Forward | `Forward` button in the web browser. |\n| G6/Target | CTRL + T | Open a new web browser tab. |\n| G7 | SUPER + PAGEDOWN | Navigate to the workspace down from the current one. |\n| G8 | SUPER + PAGEUP | Navigate to the workspace up from the current one. |\n| G9 | SUPER + B | Open a new web browser window. |\n\n## Potentially Important Links\n\n### Operating System Downloads\n\n- [Ubuntu Server](https://ubuntu.com/download/server)\n- [Ubuntu Desktop](https://ubuntu.com/download/desktop)\n\n### Software Downloads\n\n- [Cuda Toolkit](https://developer.nvidia.com/cuda-downloads)\n- [Visual Studio Code](https://code.visualstudio.com/)\n- [Git](https://git-scm.com/)\n- [Docker](https://www.docker.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJosh-XT%2FSetup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJosh-XT%2FSetup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJosh-XT%2FSetup/lists"}