{"id":16323825,"url":"https://github.com/david-else/developer-workstation-setup-script-debian","last_synced_at":"2025-03-22T21:32:46.591Z","repository":{"id":183678199,"uuid":"670190031","full_name":"David-Else/developer-workstation-setup-script-debian","owner":"David-Else","description":"Ansible/Bash post-install scripts for Debian to create your ultimate development environment","archived":false,"fork":false,"pushed_at":"2024-04-13T09:23:01.000Z","size":21958,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-14T04:23:54.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Lua","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/David-Else.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}},"created_at":"2023-07-24T13:42:50.000Z","updated_at":"2024-04-15T14:58:42.249Z","dependencies_parsed_at":null,"dependency_job_id":"46f780ba-87fc-40d6-8328-bfe8679ec33e","html_url":"https://github.com/David-Else/developer-workstation-setup-script-debian","commit_stats":null,"previous_names":["david-else/developer-workstation-setup-script-debian"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Else%2Fdeveloper-workstation-setup-script-debian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Else%2Fdeveloper-workstation-setup-script-debian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Else%2Fdeveloper-workstation-setup-script-debian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Else%2Fdeveloper-workstation-setup-script-debian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/David-Else","download_url":"https://codeload.github.com/David-Else/developer-workstation-setup-script-debian/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245023393,"owners_count":20548721,"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":[],"created_at":"2024-10-10T22:55:45.643Z","updated_at":"2025-03-22T21:32:46.570Z","avatar_url":"https://github.com/David-Else.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Developer Workstation Setup Script Debian Edition\n\n![Debian_logo](./images/debian_logo.svg)\n\nThis guide provides instructions for setting up a developer workstation using Debian 12 \"Bookworm\" or 13 \"Trixie\" (currently unreleased). The setup scripts automate the installation of software and configurations. Your version of Debian is detected, and the best package options are chosen for you.\n\nWhile the software and setup choices are mainly aimed towards developers, it is also suitable for general use.\n\n## Installation\n\nBefore running the setup scripts, follow these steps to install Debian:\n\n1. Install a fresh copy of Debian from the full DVD ISO.\n\n\u003e [!NOTE]\n\u003e There is a bug in the Debian 12 installer, if you use the default guided partitioner, you will get a swap partition of only 1 GB regardless of how much RAM you have. To get an uncapped swap partition size, in the grub menu before the Debian installer runs, follow these steps:\n\u003e\n\u003e 1. Press \"e\" to edit the default installation option.\n\u003e 2. In the line that says `linux /install.amd/vmlinuz vga=788 --- quiet`, add the following separated by a space after `vmlinuz`:\n\u003e\n\u003e    ```sh\n\u003e    partman-auto/cap-ram=n\n\u003e    ```\n\u003e\n\u003e 3. Press Ctrl-x or F10 to continue.\n\n\u003e [!NOTE]\n\u003e - Do not provide any details for the root account, your user account will then have administrative rights.\n\u003e - Leave Gnome as the default desktop environment.\n\u003e - Use the Software \u0026 Updates application or the terminal to remove `cdrom` from `/etc/apt/sources.list`. Look in Other Software:\n\u003e ![Software \u0026 Updates](./images/sources.png)\n\n2. Open the terminal and run the following command to install Ansible, git, and Flatpak:\n   ```sh\n   sudo apt install ansible git flatpak\n   ```\n\n3. Clone this repository and navigate to it:\n   ```sh\n   git clone https://github.com/David-Else/developer-workstation-setup-script-debian\n   cd developer-workstation-setup-script-debian\n   ```\n\n4. Customize the software selection by modifying `packages.yml` according to your preferences.\n\n5. Run the main installation playbook:\n\u003e [!NOTE]\n\u003e When prompted for the `BECOME` password in Ansible, enter your user password. Your account must have administrative privileges.\n\n   ```sh\n   ansible-playbook ./install-playbook.yml -K\n   ```\n\n6. Log out and in, then run the Gnome setup:\n\n   ```sh\n   ansible-playbook ./gnome-setup-playbook.yml -K\n   ```\n\n7. To enable the preview feature in the `nnn` file manager, run it once with the `-a` flag to create the FIFO file.\n\n8. Install showmethekey:\n\n   ```sh\n   cd extras\n   unzip showmethekey-1.12.0-compiled.zip\n   cd showmethekey-1.12.0\n   sudo ./install-show-me-the-key.sh\n   ```\n\n9. Install Firefox extensions:\n\n   ```sh\n   firefox https://addons.mozilla.org/en-GB/firefox/addon/ublock-origin/ \\\n       https://addons.mozilla.org/en-US/firefox/addon/surfingkeys_ff/ \\\n       https://addons.mozilla.org/en-US/firefox/addon/leechblock-ng/ \\\n       https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/ \u0026\n   ```\n\n10. Compile tt from source (`/usr/local/go/bin` is already added to the `$PATH`):\n\u003e [!NOTE]\n\u003e You will need to install golang\n\n   ```sh\n   sudo rm -rf /usr/local/go \u0026\u0026 sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz\n   git clone https://github.com/lemnos/tt\n   cd tt\n   make \u0026\u0026 sudo make install\n   ```\n\n11. Setup Hugo completions and man page:\n\n   ```sh\n   hugo completion zsh \u003e \"${fpath[1]}/_hugo\"\n   sudo hugo gen man --dir /usr/share/man/man1 \u0026\u0026 sudo mandb\n   ```\n\n12. Update MPV config file for Debian 13 by uncommenting sections indented for the new version\n\n13. Change the visudo editor to vim: `sudo update-alternatives --config editor`\n\n## Optional Tweaks\n\nDepending on your software selection, hardware, and personal preferences, you may want to make the following changes:\n\n### Audio\n\n- Add yourself to the pipewire group with `sudo usermod -aG pipewire $USER` to get real-time privileges loaded from `/etc/security/limits.d/25-pw-rlimits.conf`.\n\nYou can confirm the allowed sample rate settings were changed by the playbook with:\n```sh\nsystemctl --user restart pipewire.service\npw-metadata -n settings\n```\nWatch the sample rates change per application running `pw-top`.\n\n- Enable `pipewire-jack` for Reaper. The following will replace the JACK server libraries with PipeWire's replacements at application runtime, by pointing the dynamic linker at the `/usr/lib/x86_64-linux-gnu/pipewire-0.3/jack/` folder (https://wiki.debian.org/PipeWire#JACK):\n\n```sh\nsudo cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/\nsudo ldconfig\n```\n\n\u003e [!NOTE]\n\u003e More info can be found at: [docs.pipewire.org configuration-file-pipewireconf](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf)\n\n### General\n\nTo perform general tweaks, follow these steps:\n\n- Set Helix to open in Kitty, the desktop file [should use absolute paths](https://docs.helix-editor.com/building-from-source.html#configure-the-desktop-shortcut) if it lives in `~/.local/share/applications/`:\n\n   ```sh\n   Exec=/home/user/.local/kitty.app/bin/kitty --single-instance /home/david/.cargo/bin/hx %F\n   Icon=/home/user/.icons/helix.png\n   ```\n\n- Configure Git email and name:\n  ```sh\n  git config --global user.email \"you@example.com\"\n  git config --global user.name \"Your Name\"\n  ```\n  Enable GPG signing for commits:\n  ```sh\n  git config --global user.signingkey key\n  git config --global commit.gpgsign true\n  ```\n- Install extras:\n  ```sh\n  gh extension install yusukebe/gh-markdown-preview\n  gh extension install dlvhdr/gh-dash\n  hx ~/.config/gh-dash/config.yml # diff: \"delta\"\n  ```\n-  `sudo apt install v4l2loopback-dkms v4l2loopback-utils` for virtual video devices\n\n## FAQ\n\nIf you would like to use Code for things that Helix still struggles with (like debugging), and still use all the modal keyboard shortcuts, I suggest installing `silverquark.dancehelix` or `asvetliakov.vscode-neovim` and using these settings:\n```jsonc\n{\n  // font size\n  \"editor.fontSize\": 15,\n  \"markdown.preview.fontSize\": 15,\n  \"terminal.integrated.fontSize\": 15,\n  // asvetliakov.vscode-neovim\n  \"editor.scrollBeyondLastLine\": false,\n  \"vscode-neovim.neovimExecutablePaths.linux\": \"/usr/local/bin/nvim\", // for el9 clones, or \"/usr/bin/nvim\" for Fedora\n  \"workbench.list.automaticKeyboardNavigation\": false,\n  // various\n  \"window.titleBarStyle\": \"custom\", // adjust the appearance of the window title bar for linux\n  \"editor.minimap.enabled\": false, // controls whether the minimap is shown\n  \"workbench.activityBar.visible\": false, // controls the visibility of the activity bar in the workbench\n  \"window.menuBarVisibility\": \"hidden\", // control the visibility of the menu bar\n  \"files.restoreUndoStack\": false, // don't restore the undo stack when a file is reopened\n  \"editor.dragAndDrop\": false, // controls whether the editor should allow moving selections via drag and drop\n  \"telemetry.enableTelemetry\": false, // disable diagnostic data collection\n}\n```\nYou might also like to install `ms-vscode.live-server` for live debugging in Code or the browser.\n\nIf you get no bootable device found after installing Debian, try https://itsfoss.com/no-bootable-device-found-ubuntu/. Basically, add `shimx64.efi` as trusted EFI file to be executed.\n\u003e [!NOTE]\n\u003e Bonus: If you are using gnome-boxes don't forget to install `spice-vdagent` only on the guest AND restart the virtual machine to get copy and paste working. You can check it is running with `sudo systemctl status spice-vdagent` and enable at boot if needed with `sudo systemctl enable spice-vdagent`.\n\n## Updating to Trixie\n\n`sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list`\n\nTo update to Trixie:\n`sudoedit /etc/apt/sources.list`\n```sh\ndeb http://deb.debian.org/debian/ trixie main non-free-firmware\ndeb-src http://deb.debian.org/debian/ trixie main non-free-firmware\n\ndeb http://security.debian.org/debian-security trixie-security main non-free-firmware\ndeb-src http://security.debian.org/debian-security trixie-security main non-free-firmware\n\ndeb http://deb.debian.org/debian/ trixie-updates main non-free-firmware\ndeb-src http://deb.debian.org/debian/ trixie-updates main non-free-firmware\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavid-else%2Fdeveloper-workstation-setup-script-debian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavid-else%2Fdeveloper-workstation-setup-script-debian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavid-else%2Fdeveloper-workstation-setup-script-debian/lists"}