{"id":15654103,"url":"https://github.com/staticdev/linux-workstation-playbook","last_synced_at":"2025-07-26T05:04:46.211Z","repository":{"id":37000787,"uuid":"324184249","full_name":"staticdev/linux-workstation-playbook","owner":"staticdev","description":"Linux workstation machine setup and configuration.","archived":false,"fork":false,"pushed_at":"2025-06-10T10:24:31.000Z","size":730,"stargazers_count":21,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-10T11:33:16.254Z","etag":null,"topics":["automation","development-environment","linux","nix","nixos","python","workstation"],"latest_commit_sha":null,"homepage":"","language":"Nix","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/staticdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-12-24T15:22:57.000Z","updated_at":"2025-06-10T10:24:12.000Z","dependencies_parsed_at":"2025-01-06T11:23:44.776Z","dependency_job_id":"55be958e-bdde-48f9-98ac-739179559c34","html_url":"https://github.com/staticdev/linux-workstation-playbook","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/staticdev/linux-workstation-playbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staticdev%2Flinux-workstation-playbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staticdev%2Flinux-workstation-playbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staticdev%2Flinux-workstation-playbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staticdev%2Flinux-workstation-playbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/staticdev","download_url":"https://codeload.github.com/staticdev/linux-workstation-playbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staticdev%2Flinux-workstation-playbook/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267122465,"owners_count":24039444,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"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":["automation","development-environment","linux","nix","nixos","python","workstation"],"created_at":"2024-10-03T12:49:32.183Z","updated_at":"2025-07-26T05:04:46.203Z","avatar_url":"https://github.com/staticdev.png","language":"Nix","readme":"# Linux Workstation Playbook\n\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)][pre-commit]\n[![Tests](https://github.com/staticdev/linux-workstation-playbook/workflows/Tests/badge.svg)][tests]\n\n[pre-commit]: https://github.com/pre-commit/pre-commit\n[tests]: https://github.com/staticdev/linux-workstation-playbook/actions?workflow=Tests\n\n## Features\n\n- Support processor architectures: x86_64 (only one for now, may be extended in the future).\n- IDEs: [VSCodium] installation (via Nixpkgs), [Neovim] (via [NixVim]).\n- Browsers: [Brave] and [Mullvad Browser] (via Nix).\n- Containers and virtualization: [Docker], [Podman] and [libvirtd].\n- Your favorite programs via [Nixpkgs].\n- Configurations: dotfiles, [tmux] and zsh (via Nix), Guake terminal, [Gnome] (and extensions), [Git], ssh, keyboard...\n\nNote: this is an opinionated setup I personally use for software development on [NixOS](https://nixos.org). You can customize all the changes following instructions in [Overriding Defaults](#overriding-defaults).\n\n## Requirements\n\n1. Install latest stable, recommended Minimal ISO image from [NixOS download ISO page](https://nixos.org/download/#nixos-iso).\n1. [Ansible] installed. Make sure you have it in you `local.nix` either in `systemWidePkgs` or `mainUser.pkgs`.\n\n## Installation\n\n1. Create a `local.nix` file from [eg folder](eg/local.nix) and change:\n  - remove the first part that has some comments to \"do not add\".\n  - git variables.\n  - main Linux username.\n  - timezone.\n  - browser configurations.\n1. Create at /etc/nixos a `flake.nix` file [eg folder](eg/flake.nix).\n\n   ```sh\n   curl -s \"https://raw.githubusercontent.com/staticdev/linux-workstation-playbook/main/eg/flake.nix?token=$(date +%s)\" -o /etc/nixos/flake.nix\n   nixos-generate-config\n   nixos-rebuild boot --upgrade-all\n   ```\n\n1. Rebuild hardware config with `sudo nixos-generate-config`.\n1. Rebuild your system with `sudo nixos-rebuild boot --upgrade-all`.\n\n## Usage\n\n1. Make a copy of **default.config.yml** with the name **config.yml** and change the configurations you want to use.\n1. Run the command:\n\n   ```sh\n   ansible-playbook main.yml -i inventory --ask-become-pass\n   ```\n\n### Included Applications / Configuration (Default)\n\nIt installs packages with [Nix] package manager:\n\n```yaml\n- git\n- thefuck\n- tmux\n- wget\n- wl-clipboard\n```\n\nFinally, there are a few other preferences and settings added on for various apps and services.\n\nDotfiles for [tmux] and [zsh] are already configured in specific modules.\n\n### Overriding Defaults\n\nNot everyone's workstation and preferred software configuration is the same.\n\nYou can override any of the defaults configured in **default.config.yml** by creating a **config.yml** file and setting the overrides in that file.\n\nFor [Nix] packages, update your [Home Manager] config on your dotfiles repo.\n\nAny variable can be overridden in **config.yml**; see the supporting roles' documentation for a complete list of available variables.\n\n### Use with a remote machine\n\nYou can use this playbook to manage other machine as well; the playbook doesn't even need to be run from a Linux computer at all! If you want to manage a remote Linux, either another Linux on your network, or a hosted Linux in the cloud, you just need to make sure you can connect to it with SSH.\n\nEdit the **inventory** file in this repository and change the line that starts with **127.0.0.1** to:\n\n```ini\n[ip address or hostname of linux]  ansible_user=[linux ssh username]\n```\n\nIf you need to supply an SSH password (if you don't use SSH keys), make sure to pass the **--ask-pass** parameter to the **ansible-playbook** command.\n\n## Contributing\n\nContributions are very welcome.\nTo learn more, see the [Contributor Guide].\n\n## License\n\nDistributed under the terms of the [MIT] license,\n_Linux Workstation Playbook_ is free and open source software.\n\n## Issues\n\nIf you encounter any problems,\nplease [file an issue] along with a detailed description.\n\n## Credits\n\nThis project was inspired by [@geerlingguy]'s [Mac Development Ansible Playbook].\n\n[@geerlingguy]: https://github.com/geerlingguy\n[brave]: https://brave.com/\n[contributor guide]: https://github.com/staticdev/linux-workstation-playbook/blob/main/CONTRIBUTING.md\n[debian]: https://www.debian.org/\n[docker]: https://www.docker.com/\n[download]: https://github.com/staticdev/linux-workstation-playbook/archive/refs/heads/main.zip\n[file an issue]: https://github.com/staticdev/linux-workstation-playbook/issues\n[git]: https://git-scm.com/\n[nixpkgs]: https://search.nixos.org/packages\n[gnome]: https://www.gnome.org/\n[home manager]: https://github.com/nix-community/home-manager\n[libvirtd]: https://libvirt.org/manpages/libvirtd.html\n[mac development ansible playbook]: https://github.com/geerlingguy/mac-dev-playbook\n[mit]: https://opensource.org/licenses/MIT\n[mullvad browser]: https://mullvad.net/en/browser\n[neovim]: https://github.com/neovim/neovim\n[nix]: https://nixos.org/\n[nixos download iso page]: https://nixos.org/download/#nixos-iso\n[nixvim]: https://github.com/nix-community/nixvim\n[pep-668]: https://peps.python.org/pep-0668/\n[podman]: https://podman.io/\n[tmux]: https://github.com/tmux/tmux\n[vscodium]: https://vscodium.com/\n[zsh]: https://www.zsh.org/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaticdev%2Flinux-workstation-playbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstaticdev%2Flinux-workstation-playbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaticdev%2Flinux-workstation-playbook/lists"}