{"id":16158739,"url":"https://github.com/omar-besbes/.dotfiles","last_synced_at":"2026-07-06T10:31:45.328Z","repository":{"id":211509058,"uuid":"724088223","full_name":"omar-besbes/.dotfiles","owner":"omar-besbes","description":"My dotfiles for debian","archived":false,"fork":false,"pushed_at":"2025-12-11T17:38:00.000Z","size":1410,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-12T22:25:55.212Z","etag":null,"topics":["alacritty","bash","debian","dotfiles","git","neovim","shell"],"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/omar-besbes.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-27T11:24:16.000Z","updated_at":"2025-10-15T23:13:15.000Z","dependencies_parsed_at":"2023-12-09T01:38:36.024Z","dependency_job_id":"ba319de4-54ab-43d5-aeb2-01cf330e9643","html_url":"https://github.com/omar-besbes/.dotfiles","commit_stats":null,"previous_names":["omar-besbes/.dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omar-besbes/.dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-besbes%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-besbes%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-besbes%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-besbes%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omar-besbes","download_url":"https://codeload.github.com/omar-besbes/.dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-besbes%2F.dotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35187624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["alacritty","bash","debian","dotfiles","git","neovim","shell"],"created_at":"2024-10-10T01:54:55.651Z","updated_at":"2026-07-06T10:31:45.311Z","avatar_url":"https://github.com/omar-besbes.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[My Dotfiles](repo)\n===================\n\n![Debian](https://img.shields.io/badge/Debian-D70A53?style=for-the-badge\u0026logo=debian\u0026logoColor=white)\n\nThis repository contains my personal dotfiles. Take anything you want, but at your own risk.\n\nIt mainly targets debain-based distros. It is designed to be extensible, simple and modular.\n\n\n## Highlights\n\n\n- Neovim the next-gen vim-based text editor\n- Alacritty the fast, GPU-based terminal emulator\n- Bash as default shell\n- Colored ls with vivid\n- Fast and colored prompt with starship\n- Updated git global defaults\n- Chromium the open-source browser with the best of Chrome minus the proprietary bits\n- Well-organized and easy to customize\n- The installation and setup is\n  [tested on a debian container](https://github.com/omar-besbes/.dotfiles/actions)\n\n\n## Setup\n\n\n\u003e [!WARNING]\n\u003e This setup was only tested on `debian`. \u003cbr\u003e\n\u003e The installation of `chromium` is expected to fail on `ubuntu`.\n\n\nOnly `bash`, `apt`, `sudo` and `curl` are required. The script will install everything else by itself.\n\nRun this:\n```sh\nbash \u003c(curl -fSL# https://raw.githubusercontent.com/omar-besbes/.dotfiles/main/dotfiles.sh) install \u0026\u0026 . ~/.bashrc\n```\n\n\n## How \"dotfiles\" works\n\nWhen bootstrap is run, it does a few things:\n\n1. Git is installed if necessary via APT.\n2. This repo is cloned into your user directory, under `~/.dotfiles`.\n3. Various basic packages are installed if not found (e.g. curl, rustup, nvm).\n4. Fonts are installed (Hack, JetBrainsMono, RobotoMono).\n5. Setup each topic in `src` directory.\n\n\u003e [!NOTE]\n\u003e Update current shell session by running `. ~/.bashrc` to get all the good stuff :). \u003cbr\u003e\n\u003e This is done automatically during setup.\n\n\n## Contents\n\n### Root (/)\n* dotfiles.sh - Dotfiles CLI\n\n### Scripts (scripts/)\nThe `/scripts` directory contains executable shell scripts (including the dotfiles script) and symlinks to executable shell scripts.\nThis directory is added to the path.\n* install.sh - Calls all `setup.sh` scripts\n* backup.sh - Calls all `backup.sh` scripts\n* restore.sh - Calls all `restore.sh` scripts\n* utils.sh – Contains helper functions for:\n  - printing progress messages\n  - calling all `init.sh` or `setup.sh` scripts in a directory\n  - symlinking files\n  - synchronizing the current dotfiles repository with the remote\n\n### Source (src/)\nThe `/src` directory contains all topics configurations.\nA topic is basically a folder with configuration for a piece of software that must have a `setup.sh` file as an entry point.\nEach topic is responsible for setting up itself and should not depend on other topics.\nAll other folders inside `src` without `setup.sh` are ignored and are not considered topics.\n\n### Browser (src/browser/)\n* setup.sh - Calls chromium's `setup.sh`.\n* brave/\n  * setup.sh - Installs [brave](https://brave.com).\n* chromium/\n  * setup.sh - Installs [chromium](https://www.chromium.org).\n* opera/\n  * setup.sh - Installs [opera](https://opera.com).\n\n### Docker (src/docker/)\n* setup.sh - Installs [Docker](https://docker.com).\n\n### Fonts (src/fonts/)\n* setup.sh - Installs the following [Nerd Fonts](https://www.nerdfonts.com): `Hack`, `JetBrainsMono`, `RobotoMono`, `NerdFontsSymbolsOnly`.\n\n### Git (src/git/)\n* setup.sh - Symlinks all git files to `~`.\n* gitconfig - Sets several global Git variables (.gitconfig).\n\n### Helm (src/helm/)\n* setup.sh - Installs [helm](https://helm.sh).\n\n### Kubectl (src/kubectl/)\n* setup.sh - Installs [kubectl](https://kubernetes.io).\n\n### Shell (src/shell/)\n* setup.sh - Symlinks all fish files to their corresponding location in `~` and calls all sub-`setup.sh`.\n* bash_logout - Cleans up on shell logout (.bash_logout).\n* bash_profile - Contains bash configuration on shell login (.bash_profile).\n* bashrc - Contains bash configuration on shell startup (.bashrc).\n* inputrc - Contains GNU Readline configuration of command-line editing feature (.inputrc).\n* core/\n  * init.sh - Sources all `.sh` files in the directory.\n  * aliases.sh - Contains common aliases that I use daily.\n  * options.sh - Contains bash shell configuration options.\n  * env.sh - Sets environment variables.\n  * functions.sh - Contains utilities functions that I use daily.\n* bash_completion/\n  * init.sh - Finds all bash completion files in `~/.bash_completion.d` and sources them.\n* prompt/\n  * init.sh - Sets the prompt on shell startup.\n  * setup.sh - Installs [starship](https://starship.rs) and symlinks `~/.config/starship.toml` to `starship.toml`.\n  * starship.toml - Contains starship config.\n* ls-colors/\n  * init.sh - Sets the `LS_COLORS` environment variable on shell startup using vivid.\n  * setup.sh - Installs [vivid](https://github.com/sharkdp/vivid).\n\n### Spotify (src/spotify/)\n* setup.sh - Installs [spotify](https://spotify.com).\n\n### Terminal emulator (src/terminal-emulator/)\n* setup.sh - Calls alacritty's `setup.sh`.\n* alacritty/\n  * setup.sh - Installs [alacritty](https://alacritty.org) and symlinks `~/.config/alacritty/alacritty.yml` to `alacritty.yml`.\n  * alacritty.yml - Contains alacritty config.\n\n### Text Editor (src/text-editor/)\n\n* setup.sh - Calls each editor's `setup.sh`.\n* neovim/\n  * setup.sh - Symlinks `~/.config/nvim` to `src/text-editors/neovim/nvim`.\n  * nvim/ - My Neovim config as a git submodule. Checkout the [repository](https://github.com/omar-besbes/nvim-config).\n* vscode/\n  * setup.sh - Installs [Visual Studio Code](https://code.visualstudio.com).\n* vscodium/\n  * setup.sh - Installs [VSCodium](https://vscodium.com).\n\n### Tests (test/)\nThe `/test` directory contains tests.\n* test.sh - Contains tests to be run inside the container.\n* compose.yml - Contains a description of the test environments. \nThere are 2 test environments: one that clones the repository and another that runs the install command in `README.md`.\n* Dockerfile - Contains instructions to build a docker image of the test environment.\n\n### Backups (backups/)\nThe `/backups` directory gets created when necessary. Any files in `~/` that would have been overwritten during installation get backed up there.\n\n\n## Todo\n\n\n- [x] Git\n- [x] Shell\n- [x] Text editor\n- [x] Prompt\n- [x] Terminal emulator\n- [x] Automated tests\n- [x] Remote install\n- [x] Fonts\n- [x] Web browser\n- [x] CLI\n- [ ] Automatic bookmarks import in browser\n- [ ] Move all config files in `/backups` before setup (only a small part is moved)\n- [ ] Uninstall script\n- [ ] Github \u0026 Gitlab SSH keys auto generation\n- [ ] Mail client\n- [ ] Window manger + display manager\n- [ ] Other shells compatibility (only bash supported for now)\n\n\n## Inspiration\n\n\nThis project was heavily inspired by rkalis' [dotfiles](https://github.com/rkalis/dotfiles) \nand by cătălin's [dotfiles](https://github.com/alrra/dotfiles).\n\nMany thanks to the [dotfiles community](https://dotfiles.github.io/).\n\n\n## Bugs\n\n\nI want this to work for everyone; that means when you clone it down it should\nwork for you. \nThat said, I do use this as _my_ dotfiles, so there's a good chance I may break\nsomething if I forget to make a check for a dependency.\n\nIf you're brand-new to the project and run into any blockers, please\n[open an issue](https://github.com/omar-besbes/.dotfiles/issues) on this repository\nand I'd love to get it fixed for you!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar-besbes%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomar-besbes%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar-besbes%2F.dotfiles/lists"}