diff --git a/README.md b/README.md index b2b2a94..5f3d89f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,42 @@ # Installer -This script will setup a whole environment to work with. +This script downloads everything I need to get a functional working setup. -> [!WARNING] -> Work in Progress +The script installs the following software with my custom configurations: +- [dwl](https://codeberg.org/dwl/dwl) (window manager, [obviously my fork](https://git.amolinae.com/amolinae06/dwl)) +- [fuzzel](https://codeberg.org/dnkl/fuzzel) (app launcher) +- [foot](https://codeberg.org/dnkl/foot) (terminal) +- [zsh](https://www.zsh.org) (shell) +- [lf](https://github.com/gokcehan/lf) (file manager) +- [imv](https://sr.ht/~exec64/imv) (image viewer) +- [mpv](https://mpv.io) (video player) +- [btop](https://github.com/aristocratos/btop) (resource monitor) +- [librewolf](https://librewolf.net) (web browser) +- [zathura](https://pwmt.org/projects/zathura) (pdf viewer) +- [neovim](https://neovim.io) (text editor/code editor) +- [spotify_player](https://github.com/aome510/spotify-player) (as music player) + +## Installation +You need to have an Alpine Linux installation with at least one user. To run this script, you need to be on the `edge` branch and have the `community` and `testing` repositories enabled. + +```sh +wget https://git.amolinae.com/amolinae06/installer/raw/branch/main/installer.sh && doas sh installer.sh +``` + +It will prompt for a username, you'll need to input the user you want the dotfiles, chroot, and shell setup installed to (e.g. amolinae, leon, etc.). + +Aditionally, the software that requires to be compiled will be done after the post-install script gets called, this is because most of these require to be logged in as the user. + +The whole installation shouldn't take more than `6 minutes`, in my case both installation attempts took around 4 to 5 minutes. After it finishes it is time to make a few extra setup steps such as installing nvidia drivers or amd drivers which should be mandatory if you have the hardware. ## TODO - [X] Read `software.csv` -- [X] Install software -- [X] Setup services -- [X] Setup home directory -- [ ] Setup chroot -- [ ] Compile git software on chroot \ No newline at end of file +- [X] Install software. +- [X] Setup services. +- [X] Setup home directory. +- [X] Setup chroot. +- [X] Compile git software on chroot. +- [ ] Cleanup files. +- [ ] Auto reboot. +- [ ] Error handling. +- [ ] Make the scripts look prettier. +- [ ] Add to my domain (amolinae.com) for easier retrieval. diff --git a/devware.csv b/devware.csv index ef0d605..60d45f6 100644 --- a/devware.csv +++ b/devware.csv @@ -7,6 +7,9 @@ tcc-libs-static,"Tiny C Compiler (static library)",D, clang20,"C language family front-end for LLVM",D, clang20-extra-tools,"Extra tools built using Clang's tooling APIs",D, tinymist,"Language service for Typst",D, +neovim,"Vim-fork focused on extensibility and agility",D, +ripgrep,"ripgrep combines the usability of The Silver Searcher with the raw speed of grep",D, +gcompat,"GNU C Library compatibility layer for musl",D, git,"Distributed version control system",D, tar,"Utility used to store, backup, and transport files",D, curl,"URL retrival utility and library",D, @@ -18,10 +21,7 @@ wlroots-dev,"Modular Wayland compositor library (development files)",D, libxkbcommon-dev,"keyboard handling library (development files)",D, wayland-protocols,"Protocols and protocol extensions complementing the Wayland core protocol",D, pkgconf,"development framework configuration tools",D, -neovim,"Vim-fork focused on extensibility and agility",D, fcft-dev,"Simple library for font loading and glyph rasterization using FontConfig, FreeType and pixman (development files)",D, -ripgrep,"ripgrep combines the usability of The Silver Searcher with the raw speed of grep",D, alsa-lib-dev,"Advanced Linux Sound Architecture (ALSA) library (development files)",D, file-dev,"File type identification utility (development files)",D, openssl-dev,"Toolkit for Transport Layer Security (TLS) (development files)",D, - diff --git a/installer.sh b/installer.sh index 3159b89..e07e797 100644 --- a/installer.sh +++ b/installer.sh @@ -4,6 +4,12 @@ dotfiles="https://git.amolinae.com/amolinae06/dotfiles.git" software="https://git.amolinae.com/amolinae06/installer/raw/branch/main/software.csv" devware="https://git.amolinae.com/amolinae06/installer/raw/branch/main/devware.csv" +update_alpine(){ + printf "Updating alpine indexes.\n" + apk update && apk upgrade + printf "Updated successfully.\n" +} + apk_install(){ echo "installing $1"; doas apk add "$1" >/dev/null 2>&1 } @@ -18,6 +24,7 @@ git_install(){ } read_software(){ + [ -d "$HOME/.local/src/" ] || mkdir -p "$HOME/.local/src/" ([ -f "$1" ] && cp "$1" /tmp/temp.csv) || wget -qO- "$1" > /tmp/temp.csv tail -n +2 "/tmp/temp.csv" | sed -E ':a; s/("[^"]*),([^"]*")/\1\2/; ta' | while IFS=',' read -r NAME DESCRIPTION GIT GIT_URL; do @@ -43,7 +50,7 @@ setup_greetd(){ vt = 7 [default_session] -command = "agreety -t -r --cmd /home/$USER/.local/bin/dwllaunch" +command = "agreety --cmd /home/$USER/.local/bin/dwllaunch" user = "greetd" EOF @@ -70,7 +77,8 @@ setup_home(){ git clone --recursive $dotfiles cd dotfiles rm -rf .git .gitmodules - cp -r .cache .config .local .zprofile $HOME + cp -r .cache .config .zprofile $HOME + cp -r .local/* $HOME/.local/ cd $HOME rm -rf dotfiles/ xdg-user-dirs-update @@ -81,7 +89,7 @@ setup_home(){ setup_chroot(){ printf "Setting up chroot\n" - apk_install curl + doas apk add curl cd $HOME/Documents/Miscellaneous mkdir alpchroot curl -LO https://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/apk-tools-static-2.14.4-r1.apk @@ -92,6 +100,7 @@ setup_chroot(){ mkdir -p alpchroot/etc/apk doas cp /etc/apk/repositories alpchroot/etc/apk/repositories doas apk del curl + rm -rf sbin/ .PKGINFO .SIGN.RSA.alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub apk-tools-static-2.14.4-r1.apk printf "Finished setting up chroot!\n" } @@ -100,10 +109,12 @@ compile() { bwroot make clean install } -compile "dwl" echo "Welcome to the installer" +update_alpine +doas apk add git get_user read_software "$software" +setup-wayland-base setup_home setup_greetd setup_shell @@ -114,3 +125,5 @@ compile dwl compile slstatus compile hellwal compile ctpv +doas apk del git +printf "Installation finished, before you reboot please install packages you need (e.g nvidia/amd drivers)\n"; exit 0 diff --git a/software.csv b/software.csv index 5fa0799..fede718 100644 --- a/software.csv +++ b/software.csv @@ -10,6 +10,7 @@ ffmpeg,"Complete and free Internet live audio and video broadcasting solution fo foot,"Fast, lightweight and minimalistic Wayland terminal emulator",N, fuzzel,"Application launcher for wlroots-based Wayland compositors",N, greetd,"Minimal and flexible login manager daemon",N, +greetd-agreety,"Simple, text-based greeter",N, grim,"Grabs images from Wayland compositors",N, imv-wayland,"Image viewer for Wayland",N, kanshi,"Dynamic display configuration for Wayland",N,