{"id":24818041,"url":"https://github.com/dutchdronesquad/timer-dotfiles","last_synced_at":"2025-07-15T23:36:48.801Z","repository":{"id":103467222,"uuid":"603588516","full_name":"dutchdronesquad/timer-dotfiles","owner":"dutchdronesquad","description":"🗃️ Dotfiles to configure RotorHazard timers shell environment for git, zsh, nvm, pyenv","archived":false,"fork":false,"pushed_at":"2025-01-18T18:25:16.000Z","size":459,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T19:32:53.363Z","etag":null,"topics":["dotfiles","git","pyenv","rotorhazard","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dutchdronesquad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-19T00:50:45.000Z","updated_at":"2025-01-18T18:25:18.000Z","dependencies_parsed_at":"2024-01-20T23:25:25.266Z","dependency_job_id":"b7992b0b-6951-4102-9364-93022269f3fa","html_url":"https://github.com/dutchdronesquad/timer-dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dutchdronesquad/timer-dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dutchdronesquad%2Ftimer-dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dutchdronesquad%2Ftimer-dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dutchdronesquad%2Ftimer-dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dutchdronesquad%2Ftimer-dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dutchdronesquad","download_url":"https://codeload.github.com/dutchdronesquad/timer-dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dutchdronesquad%2Ftimer-dotfiles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265467625,"owners_count":23770753,"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":["dotfiles","git","pyenv","rotorhazard","zsh"],"created_at":"2025-01-30T17:03:51.760Z","updated_at":"2025-07-15T23:36:48.763Z","avatar_url":"https://github.com/dutchdronesquad.png","language":"Shell","readme":"\u003c!-- Header --\u003e\n![alt Header of RH Timer Dotfiles](https://raw.githubusercontent.com/dutchdronesquad/timer-dotfiles/main/assets/header_timer-dotfiles-min.png)\n\n\u003c!-- PROJECT SHIELDS --\u003e\n![Project Stage][project-stage-shield]\n![Project Maintenance][maintenance-shield]\n[![License][license-shield]](LICENSE)\n\n## What is this?\n\nThese are the dotfiles for the RotorHazard timers on a Raspberry Pi. It is recommended\nthat you install the additional packages only if you are using a Raspberry Pi 4 with\nenough RAM, to avoid slowing down your Pi.\n\n## How to install configuration?\n\n### Prerequirements\n\n- Git _(by default this is not installed in Raspberry Pi OS)_\n\nOnce you meet the prerequirements, you can clone the project and install the dotfiles:\n\n```bash\ngit clone https://github.com/dutchdronesquad/timer-dotfiles.git\ncd ~/timer-dotfiles \u0026\u0026 bash install.sh\n```\n\n## Installed packages\n\nThe following platforms are installed and set up by default with the bash script:\n\n- GitHub CLI\n- Oh My Zsh (with powerlevel10k)\n- [Pyenv](https://github.com/pyenv/pyenv)\n- [Uv](https://github.com/astral-sh/uv)\n- [Nvm](https://github.com/nvm-sh/nvm)\n\n### Install a python version\n\n```bash\npyenv install --list | grep -E '^  3\\.(10|11|12)\\.[0-9]+$'\npyenv install 3.11.x\npyenv global 3.11.x\n```\n\n### Setup Github account\n\n```bash\ngit config --global user.name \"Dutch Drone Squad\"\ngit config --global user.email \"hello@example.com\"\n```\n\n### Setup Node.JS/NPM\n\nVersion 20 is currently the LTS version.\n\n```bash\nnvm install 20\nnvm use 20\nnvm alias default 20\n```\n\n## Install / Update RotorHazard\n\n_First check your python version and if not install one with pyenv before continuing with the RotorHazard installation._\n\nUse the command below to install RotorHazard, the script is also suitable for use with NuclearHazard PCBs. I would recommend using python version 3.11 or 3.12.\n\n**Development:**\n\n- Uses git clone, so you can easily work with branches and commits\n- You have the choice to clone from your own fork\n- There is no update script, I assume you know how git works\n- Automatically creates a venv for you and installs the necessary packages from PyPi\n- Asks if you want to setup raspi-config and RotorHazard service\n\n**Production:**\n\n- Uses wget to retrieve the code\n- You have the option to install or update\n- You can indicate which version you want to install\n- Automatically creates a venv for you and installs the necessary packages from PyPi\n- Creates the RotorHazard service and sets the raspi-config correctly\n\nWhen running the bash script below you have the option to install RotorHazard for development or production purposes.\n\n```bash\ncd ~/timer-dotfiles/components \u0026\u0026 bash rotorhazard.sh\n```\n\nDuring installation it will ask which GPIO pin you want to use, this concerns the shutdown button and differs per type of PCB you use.\n\nRotorHazard = GPIO18\nNuclearHazard = GPIO19\n\n### Development\n\nIf you opted for development, don't forget to check if an upstream repository is set, as this will make it easier to pull changes from the RotorHazard project.\n\n```bash\ngit remote -v\ngit remote add upstream https://github.com/RotorHazard/RotorHazard.git\n```\n\n#### Scripts\n\nBy default you will be asked if you want to setup **raspi-config** and the **RotorHazard service**, if you want to do this later you can run the following commands.\n\nSet the correct raspi-config and boot file settings:\n\n```bash\ncd ~/timer-dotfiles/components/scripts \u0026\u0026 bash pi-config.sh\n```\n\nInstall the RotorHazard startup service:\n\n```bash\ncd ~/timer-dotfiles/components/scripts \u0026\u0026 bash rh-service.sh\n```\n\n**Note:** _If you use a username other than pi, first edit the service file with your corresponding username._\n\n### Plugins\n\nWith the bash script below you can install the [FPVScores](https://github.com/FPVScores/FPVScores) plugin, you can choose between `development` or `non-development` and if the plugin already exists whether you want to overwrite it.\n\n```bash\ncd ~/timer-dotfiles/components \u0026\u0026 bash fpvscores.sh\n```\n\n```bash\ncd ~/timer-dotfiles/components \u0026\u0026 bash stream-overlays.sh\n```\n\n### Change the hostname\n\nFor example DDS uses: `dds-rotorhazard[number]` (by default the hostname is `raspberrypi`).\n\n1. Open the TUI of Network Manager with:\n\n```bash\nsudo nmtui\n```\n\n2. Go to `Set system hostname`.\n3. Change the hostname for something you want and press `OK`.\n\nWhen you have completed these steps, reboot the Raspberry Pi and you are done.\n\n### Add encryption key to host\n\n1. Create a .ssh folder using `install`.\n\n```bash\ninstall -d -m 700 ~/.ssh\n```\n\n2. Create a `authorized_keys` file and paste your public_key into it:\n\n```bash\nnano ~/.ssh/authorized_keys\n```\n\n### Change the network interface priority\n\nThe race timers are wired to our local intranet network by default, however when a\nRaspberry Pi is also connected to Wi-Fi it gives priority to the ethernet interface\nby default. However, this causes problems in the way we work during the training events.\n\n![alt network diagram](https://raw.githubusercontent.com/dutchdronesquad/timer-dotfiles/main/assets/DDS-Network.png)\n\nWe therefore need to prioritize wireless over wired by adjusting the metric in **Network Manager**:\n\n1. First check your current connections with:\n\n```bash\nnmcli connection\n```\n\n2. Change the metric with:\n\n__Note:__ The metric is the priority of the interface. The lower the number, the higher the priority.\n\n```bash\nsudo nmcli connection modify \"Wired connection 1\" ipv4.route-metric 1000\n```\n\nYou can check the current priority of the interfaces with the following command:\n\n```bash\nnmcli\n```\n\n3. Restart the wired connection:\n\n```bash\nnmcli connection down \"Wired connection 1\" \u0026\u0026 nmcli connection up \"Wired connection 1\"\n```\n\n### Make new Wi-Fi connection\n\nYou can also create new connections via Network Manager, this can be done via the TUI or CLI.\n\n#### Command line interface (CLI)\n\nThe device should be in range of the Wi-Fi network you want to connect to.\n\n```bash\nsudo nmcli dev wifi connect \"wifi name\" password \"password\"\n```\n\nor if you want the password to be asked as input\n\n```bash\nsudo nmcli --ask dev wifi connect \"wifi name\"\n```\n\n#### Text user interface (TUI)\n\nTo open the TUI of Network Manager, run the following command:\n\n```bash\nsudo nmtui\n```\n\nIf you are **in** range of the Wi-Fi network you want to connect to, you do the following:\n\n1. Go to `Activate a connection`.\n2. Select the Wi-Fi network you want to connect to and press `Activate`.\n3. Enter the password and press `OK`.\n\nIf you are **not in** range of the Wi-Fi network you want to connect to, you can create a new connection:\n\n1. Go to `Edit a connection` and press `Enter`.\n2. Select `Add` and press `Enter`.\n3. Select `Wi-Fi` and press `Enter`.\n4. Change the `Profile name` and set the `SSID` to the name of the Wi-Fi network you want to connect to.\n5. Under `Security` select the correct security type and enter the password.\n6. Go to the bottom and select `OK` and press `Enter`.\n7. Go to `Activate a connection` and press `Enter`.\n8. Select the connection you just created and press `Enter`.\n\nRead more about this [here](https://www.tecmint.com/nmtui-configure-network-connection/).\n\n## Credits 🌟\n\nCertain parts were inspired by the Aaronsss [RH-Setup repository](https://github.com/Aaronsss/RH-Setup).\n\n## License\n\nDistributed under the **MIT** License. See [`LICENSE`](LICENSE) for more information.\n\n\u003c!-- LINKS --\u003e\n[license-shield]: https://img.shields.io/github/license/dutchdronesquad/timer-dotfiles.svg\n[maintenance-shield]: https://img.shields.io/maintenance/yes/2024.svg\n[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdutchdronesquad%2Ftimer-dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdutchdronesquad%2Ftimer-dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdutchdronesquad%2Ftimer-dotfiles/lists"}