{"id":25413831,"url":"https://github.com/musq/dotfiles-system","last_synced_at":"2026-05-05T19:32:18.357Z","repository":{"id":176244995,"uuid":"196822540","full_name":"musq/dotfiles-system","owner":"musq","description":"🌻 Bash scripts to set up root environment as a system administrator","archived":false,"fork":false,"pushed_at":"2020-03-21T13:09:18.000Z","size":116,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-01T15:18:32.371Z","etag":null,"topics":["debian","dotfiles","nix","ssh","sudo","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/musq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null}},"created_at":"2019-07-14T10:23:05.000Z","updated_at":"2021-04-19T18:43:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4af890a-ab37-4d1d-aaad-fbc014efab88","html_url":"https://github.com/musq/dotfiles-system","commit_stats":null,"previous_names":["musq/dotfiles-system"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/musq/dotfiles-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musq%2Fdotfiles-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musq%2Fdotfiles-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musq%2Fdotfiles-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musq%2Fdotfiles-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/musq","download_url":"https://codeload.github.com/musq/dotfiles-system/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musq%2Fdotfiles-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32664860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["debian","dotfiles","nix","ssh","sudo","ubuntu"],"created_at":"2025-02-16T14:32:06.176Z","updated_at":"2026-05-05T19:32:18.339Z","avatar_url":"https://github.com/musq.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# System Dotfiles\n\n[![Travis](https://img.shields.io/travis/com/musq/dotfiles-system.svg)](https://travis-ci.com/musq/dotfiles-system.svg?branch=master)\n[![Version](https://img.shields.io/github/release/musq/dotfiles-system.svg)](https://img.shields.io/github/release/musq/dotfiles-system)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme)\n\n\nSet up a base environment on a new system as an administrator. It must\nbe run as a user who has `sudo` access.\n\nPlease **do not** run it as `root`.\n\n---\n\n**BEWARE** — This tool will use `sudo` to modify system files.\n**Proceed with caution.**\n\n**DO NOT** run the `setup.sh` script if you don't fully understand\n[what it does](https://github.com/musq/dotfiles-system/blob/master/src/os/setup.sh).\nSeriously, **DON'T**!\n\n---\n\n## Table of Contents\n\n- [Background](#background)\n- [Requirements](#requirements)\n- [Pre-Install](#pre-install)\n- [Install](#install)\n  - [One-line installer](#one-line-installer)\n  - [Manual](#manual)\n  - [Update](#update)\n  - [Non-Interactive](#non-interactive)\n- [Screenshots](#screenshots)\n- [Acknowledgements](#acknowledgements)\n- [Contributing](#contributing)\n- [License](#license)\n\n\n## Background\n\nManually setting up a usable environment on a brand new server is\nalways a tiring experience. I felt the need to create a tool which\nwould automate this process as smoothly as possible. It should ideally —\n\n- Perform hardening operations\n- Install necessary tools\n- Manage system configurations\n\nIt should also **follow these standards** —\n\n- Bootstrap itself using only `wget` or `curl`\n- Be idempotent\n- Be easy to audit\n\n\n## Requirements\n\nThis tool is only meant for Linux variants. It has been verified to\nwork on —\n\n- Debian 9\n- Ubuntu 16.04\n\n\n## Pre-Install\n\nIf you do not have a user with `sudo` access, create it as follows:\n\n```bash\n# Login to root\nsudo -i\n\n# Update the default text editor, select your desire\nupdate-alternatives --config editor\n\n# Edit sudoers file and add the following line\nvisudo\n# Allow members of group sudo-users to execute any command, passwordless\n%sudo-users ALL=(ALL) NOPASSWD: ALL\n```\n\nRun the following commands to:\n\n- Create a new user `boss`\n- Add **your SSH public key** to `boss` — **must replace** my SSH public key below\n- Add `boss` to `sudo-users` for passwordless sudo\n- Unlock this user by deleting its password\n\n```bash\n# Initialize USER variables\nUSER=\"boss\"\nUSERNAME=\"Boss\"\nSSH_DIR=\"/home/$USER/.ssh\"\nSSH_PUBLIC_KEY=\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJK827/gzPAZQaNsLdtBz/WK6HHJaFL85pF+gsP41SDl ashish\"\n\n# Add user\nuseradd \\\n    --key UMASK=022 \\\n    --user-group \\\n    --create-home \\\n    --shell /bin/bash \\\n    --comment \"$USER_NAME\" \\\n    \"$USER\"\n\n# Create sudo-users group\ngroupadd --system sudo-users\n\n# Add your user to sudo-users\nusermod \\\n    --append \\\n    --groups sudo-users \\\n    \"$USER\"\n\n# Setup SSH access\nmkdir -p \"$SSH_DIR\"\necho \"$SSH_PUBLIC_KEY\" \u003e\u003e \"$SSH_DIR/authorized_keys\"\nchown -R \"$USER\":\"$USER\" \"$SSH_DIR\"\n\n# Sometimes SSH access is prohibited because user is locked\n# Unlock the user by deleting its password\npasswd -d \"$USER\"\n```\n\n## Install\n\nThe setup process will:\n\n- Download the dotfiles on your computer (by default it will suggest\n`~/projects/dotfiles-system`)\n- Take versioned backup of files that might be changed and store them\nin `~/.backups/dotfiles-system-backup/v*`\n- Symlink the `etc/ssh/?`, `/etc/git/?`, `/usr/local/bin/?` files and\nscripts\n- Create groups: `ssh-users`, `nix-users` and add current user to them\n- Install [`Nix`](https://nixos.org/nix) and some necessary packages\n\n### One-line installer\n\n\n| Tool | Snippet |\n|:---|:---|\n| `wget` | `bash -c \"$(wget -qO - https://raw.githubusercontent.com/musq/dotfiles-system/master/src/os/setup.sh)\"` |\n| `cURL` | `bash -c \"$(curl -LsS https://raw.githubusercontent.com/musq/dotfiles-system/master/src/os/setup.sh)\"` |\n\n\n### Manual\n\n```bash\n# Clone this repo\ngit clone https://github.com/musq/dotfiles-system.git\n\n# Go inside\ncd dotfiles-system\n\n# Run installer\n./src/os/setup.sh\n```\n\n### Update\n\n```bash\n# Go inside the project repo\ncd path/to/dotfiles-system\n\n# Update git repo\ngit pull origin master\n\n# Run installer\n./src/os/setup.sh\n```\n\n### Non-Interactive\n\nPass `-y` or `--yes` to automatically answer yes to all the questions.\n\n| Tool | Snippet |\n|:---|:---|\n| `Manual` | `./src/os/setup.sh -y` |\n| `wget` | `bash -c \"$(wget -qO - https://raw.githubusercontent.com/musq/dotfiles-system/master/src/os/setup.sh) -y\"` |\n| `cURL` | `bash -c \"$(curl -LsS https://raw.githubusercontent.com/musq/dotfiles-system/master/src/os/setup.sh) -y\"` |\n\n\n## Screenshots\n\n\u003cimg\n    src=\"https://raw.githubusercontent.com/musq/assets/master/dotfiles-system/install.gif\"\n    alt=\"Setup process in action\"\n    width=\"100%\"\u003e\n\n\n## Acknowledgements\n\nInspiration and code were taken from many sources, including:\n\n- [Ashish's dotfiles](https://github.com/musq/dotfiles)\n- [Cătălin's dotfiles](https://github.com/alrra/dotfiles)\n- [Mathias Bynens' dotfiles](https://github.com/mathiasbynens/dotfiles)\n\n\n## Contributing\n\nFeel free to dive in!\n[Open an issue](https://github.com/musq/dotfiles-system/issues/new)\nor submit PRs.\n\nSee [contributing guidelines](CONTRIBUTING.md).\n\n\n## License\n\n- The code is available under [GNU GPL v3, or later](LICENSE) license\n- Parts from the [original base](https://github.com/alrra/dotfiles) are\nstill available under MIT license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusq%2Fdotfiles-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmusq%2Fdotfiles-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusq%2Fdotfiles-system/lists"}