{"id":22903080,"url":"https://github.com/amekusa/arch-setup","last_synced_at":"2026-04-20T13:31:58.258Z","repository":{"id":84582430,"uuid":"536562682","full_name":"amekusa/arch-setup","owner":"amekusa","description":"Arch Linux setup shell script","archived":false,"fork":false,"pushed_at":"2025-11-29T09:43:43.000Z","size":298,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-30T08:56:32.970Z","etag":null,"topics":["arch-linux","archlinux","automation","linux","shell-script"],"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/amekusa.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}},"created_at":"2022-09-14T12:15:32.000Z","updated_at":"2025-11-29T09:43:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"42ec6461-67ac-4bc3-a72a-c516bb036871","html_url":"https://github.com/amekusa/arch-setup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/amekusa/arch-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amekusa%2Farch-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amekusa%2Farch-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amekusa%2Farch-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amekusa%2Farch-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amekusa","download_url":"https://codeload.github.com/amekusa/arch-setup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amekusa%2Farch-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32048936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["arch-linux","archlinux","automation","linux","shell-script"],"created_at":"2024-12-14T02:32:51.265Z","updated_at":"2026-04-20T13:31:58.229Z","avatar_url":"https://github.com/amekusa.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Arch Setup](https://github.com/amekusa/arch-setup/)\nArch Linux setup script written by [amekusa](https://github.com/amekusa/)\n\n**Arch Setup** is just a plain bash script.  \nNo dependencies. No fancy technologies are involved. But it's very carefully coded.\n\nThe config file is another bash script with just a bunch of variables. Most of them have good default values so you have to edit only a few of them.\n\nThe setup script supports:\n- bootloader (grub)\n- locale, keymap and timezone\n- VirtualBox guest additions\n- user (groups, default shell, ssh, git, sudo)\n- ssh server\n- network manager (systemd-networkd, NetworkManager)\n- etckeeper\n- rkhunter (+ systemd timer)\n- reflector (+ systemd timer)\n- paccache (+ systemd timer)\n- AUR helper (yay)\n- X11 and XKeyMap\n- GNOME desktop\n\nAlso supports **patching the annoying warnings of egrep, fgrep, and rkhunter** (2022-10-23).\n\nThe script is supposed to be ran in `chroot` where the basic packages have already been installed with `pacstrap`. If your Arch is not ready, follow the instructions below.\n\n\n## Commandline Usage\n\n```\nUsage:\n  setup.sh [options]\n  setup.sh [options] \u003ctask1\u003e \u003ctask2\u003e ...\n\nOptions:\n  -h, --help   : Show this text\n  -l, --list   : List task names\n  -p, --prompt : Run in prompt mode\n  --no-upgrade : Skip system upgrade\n```\n\n\n## Getting Started\nInsert the latest Arch Linux live CD and boot it.\n\n### Set the correct keymap for the console\nThe default keymap is `us`.\nUnless you are using a US keyboard, you should set the correct keymap for the current console with `loadkeys` command.\n\n```sh\n# Japanese\nloadkeys jp106\n```\n\n### Partitioning the disk\n\n```sh\nlsblk\n```\n\n```sh\ncgdisk /dev/sda\n```\n\nThe `sda` part may vary. Check the output of `lsblk` command and type the correct identifier.\n\nIn `cgdisk`, edit the partition table as you like. Do not forget to save it.\n\nHere is an example:\n\nPart. # | Size | Partition Type | Name | Mount Point\n-------:|-----:|---------------:|:-----|:-----------\n4 | 1007.0 KiB | BIOS boot partition (ef02) | BIOS | -\n1 | 128 MB | Linux filesystem (8300) | Boot | /boot\n2 | 2 GB | Linux swap (8200) | Swap | -\n3 | the rest | Linux filesystem (8300) | Root | /\n\n### Create filesystems\n\n```sh\n# boot partition\nmkfs.ext4 /dev/sda1\n# root partition\nmkfs.ext4 /dev/sda3\n```\n\nCreate `ext4` filesystem on each `Linux filesystem (8300)` partition you've created.\n\n### Activate swap\n\n```sh\nmkswap /dev/sda2\nswapon /dev/sda2\n```\n\n### Mount the partitions\nMount the root partition to `/mnt`.\n\n```sh\nmount /dev/sda3 /mnt\n```\n\nMount the boot partition to `/mnt/boot`.\n\n```sh\nmkdir /mnt/boot\nmount /dev/sda1 /mnt/boot\n```\n\n### Install Arch\nInstall the base Arch Linux system with `pacstrap` command.\n\n```sh\npacstrap /mnt base base-devel linux linux-firmware nano git\n```\n\n### Generate `fstab`\n`fstab` is necessary for the system to mount the partitions automatically on start up.  \n\n```sh\ngenfstab -U /mnt \u003e\u003e /mnt/etc/fstab\n```\n\n### Enter the base system\n\n```sh\narch-chroot /mnt /bin/bash\n```\n\nNow you can access `/mnt` as `/`.\n\nThat's it. Your part is done. The setup script will handle the rest.  \nProceed to the next section.\n\n\n## Using the script\n\n### Clone this repository\n\n```sh\ncd\ngit clone https://github.com/amekusa/arch-setup.git\ncd arch-setup\n```\n\n### Run the script and edit your config file\n\n```sh\n./setup.sh\n```\n\nAt the first time you run `setup.sh`, it generates a config file: `setup.local` and opens it with `nano`.\nEdit some of the variables so they suit your needs. Do not forget to save it with `Ctrl+O`.\n\n### Run the script again\n\n```sh\n./setup.sh\n```\n\nThis time, the script actually runs all the setup operations necessary for your Arch environment.\n\nThe operations are separated with \"tasks.\"\nIf something went wrong along the process, the script immediately stops and shows which task failed.\n\nCompleted tasks are saved to `.tasks` file, and the next time you run the script, they will be skipped respectively.\n\n### Exit `chroot`, unmount, and reboot\nIf the script finished without any errors, setup is done.\n\n```sh\nexit\numount -R /mnt\nreboot now\n```\n\nThat's it. Enjoy.\n\n---\n\nIf you like this, give me a :star:.  \nPull requests are welcomed as well.\n\n\t© 2022 Satoshi Soma  \n\thttps://amekusa.com\n\thttps://github.com/amekusa\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famekusa%2Farch-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famekusa%2Farch-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famekusa%2Farch-setup/lists"}