Skip to content

Commit 4ffdd22

Browse files
committed
README updated
1 parent 49faaa1 commit 4ffdd22

File tree

1 file changed

+45
-17
lines changed

1 file changed

+45
-17
lines changed

README.md

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
# Arch Installation Script
22

3-
A post-installation script for **Arch Linux/EndeavourOS**. It Installs half-unattended packages that are declared within the `./src/packages/**/*.txt` files and transfers data from a Borg server to the current operating system.
3+
A half-unattended post-installation script for **Arch Linux**. It installs packages that are declared within the `./src/packages/**/*.txt` files and transfers data from a Borg server to the current operating system using Rsync.
44

55
# Getting Started
66

7-
For a complete installation & syncing, make use of `./src/main.sh`. Before it's needed to configure the connection to the Borg server by creating a script named `./src/borg/conf/conf.sh`. Here an example how this configuration script should look like.
7+
For a complete installation & syncing excute the main script `./src/main.sh`. But before that it is required to configure the connection to the Borg server by creating a script named `./src/borg/conf/conf.sh`. Here an example how this configuration script should look like.
88

99
```bash
1010
#!/bin/bash
11-
1211
# === conn config & auth ===
1312
# reference file
1413
SSH_KEYFILE="PATH/YOUR-SSHKEY" # location of ssh private key
@@ -17,29 +16,26 @@ BORG_REPO="ssh://USERNAME@HOSTNAME:PORT/PATH" # repo address *REQUIRED
1716
BORG_PASSPHRASE="PASSWORD" # repo password *OPTIONAL
1817
# ssh conn
1918
BORG_RSH="ssh -i '$SSH_KEYFILE'" # ssh auth *OPTIONAL
20-
2119
# === local config ===
2220
MOUNT_DIR=/tmp/borg # borg archive mount location *REQUIRED
2321
BORG_HOME="$MOUNT_DIR/home/USERNAME" # borg archive home location *REQUIRED
2422
```
2523

26-
27-
2824
## <u> Configuration </u>
2925

30-
First of all only the configuration variables `BORG_PASSPHRASE` and `BORG_RSH` are optional. If you are using SSH to communicate with your external Borg server you have to use `BORG_RSH`. But if the targeted Borg server is locally and not through SSH `BORG_RSH` do not set this variable at all. `SSH_KEYFILE` can be ignored if `BORG_RSH` is of no use for you.
26+
First of all the configuration variables `BORG_PASSPHRASE` and `BORG_RSH` are optional. If you are using SSH to communicate with your external Borg server you have to use `BORG_RSH`. But if the targeted Borg server is locally and not through SSH `BORG_RSH` do not set this variable at all. `SSH_KEYFILE` can be ignored if `BORG_RSH` is of no use for you.
3127

32-
Furthermore If `BORG_PASSPHRASE` is set you don't have to input the password by hand but the connection will be directly without user interaction.
28+
Furthermore If `BORG_PASSPHRASE` is set you don't have to input the password by hand but the connection will be directly without user interaction. If not you will be requested to input that password everytime you want to connect again using this script.
3329

3430
## <u> How It Works </u>
3531

36-
If the `./src/main.sh` is started it installs it's required packages via Pacman and after that It loads both core scripts `./src/borg/core.sh` and `./src/packages/core.sh`. Before the real process of installation and recovery starts. The core scripts are checking if, first of all, the package files (`./src/packages/pacman/*.txt`, `./src/packages/**/*.txt`, `...`) are to be found and last but not least if the Borg server is reachable, the connection is successful, archives are found and can be mounted to the desired location. After that the complete process is split in two. Firstly the installation process of every needed package and secoundly the data recovery via Borg and Rsync. And between the user has to confirm that the script should continue it's normal course. This interaction is recommended to keep for checking the results of package installation by hand.
32+
If the `./src/main.sh` is started it installs it's required packages via Pacman. After that It loads both core scripts `./src/borg/core.sh` and `./src/packages/core.sh`. Before the process of installation and data recovery starts. The core scripts are checking if, first of all, the package files (`./src/packages/pacman/*.txt`, `...`) are to be found and last but not least if the Borg server is reachable, the connection is successful, archives are found and can be mounted to the desired location. After that the complete process is split in two. Firstly the installation process of packages declared in those package files and secoundly the data recovery via Borg and Rsync. Inbetween the user has to confirm that the script should continue it's normal course. This interaction is recommended to keep for checking the results of package installation by hand and after that the data recovery starts and that's it.
3733

3834
### Packages
3935

4036
If you want to use this as base for a half-unattended install like I'm doing you should change up at least every package file (look below for more). So basicly go through `./src/packages/core.sh`. The package file locations are defined in the `./src/packages/install.sh`.
4137

42-
For base driver I wrote down two package files `./src/packages/amd.txt` and `./src/packages/nvidia.txt`. Because I'm using mainly my Nvidia graphicscard you should change one line if you have a amd graphicscard. Also some driver are written down within `./src/packages/pacman/pkgs.txt`. What for package files are loaded with which packagemanager is written down in the script `./src/packages/core.sh`.
38+
For base driver I wrote down two package files `./src/packages/amd.txt` and `./src/packages/nvidia.txt`. Because I'm using mainly my Nvidia graphicscard you should change one line if you have an amd graphicscard. Also some driver are written down within `./src/packages/pacman/pkgs.txt`. What for package files are loaded with which packagemanager is written down in the script `./src/packages/core.sh`.
4339

4440
```bash
4541
#!/bin/bash
@@ -52,8 +48,7 @@ install_pkgs() {
5248
}
5349
```
5450

55-
56-
Paste packages to the `**/pkgs.txt` of your choice. Two things are to pay attention. Firstly packages will be seperately placed into a new line and secoundly comments can be made but you can't mix up a line that is used up for a package with a comment line.
51+
Paste packages to the `**/pkgs.txt` of your choice. Two things are to pay attention. Firstly packages will be seperately placed into a new line and secoundly comments can be made but you can't mix up a line that is used up for a package declaration with a comment line.
5752

5853
#### *Positive Example*
5954

@@ -69,7 +64,7 @@ package-3
6964
package-4
7065
```
7166

72-
And here you can see how the packagemanagers will interpret this example `**/pkgs.txt` file. Flatpak doesn't support token based packages as parameter so one after another packages have to be installed. Pacman and Yay can both chain them together so those both have to execute only one it's installation process.
67+
And here you can see how the packagemanagers will interpret this example `**/pkgs.txt` file. Flatpak doesn't support token based packages chained together as valid parameter so one after another will be installed. Pacman and Yay can both chain them together so these both have to execute only ones per installation.
7368

7469
```bash
7570
#!/bin/bash
@@ -86,7 +81,7 @@ flatpak install -y flathub package-4
8681

8782
#### *Negative Example*
8883

89-
Now a bad example how the `**/pkgs.txt` would not work as you expected.
84+
Now a bad example how the `**/pkgs.txt` would not work.
9085

9186
```bash
9287
package-1 # comment 1
@@ -112,7 +107,7 @@ make_recovery() {
112107
...
113108
```
114109

115-
`sync_dirs` is a map basicly. The *key* (`$BORG_HOME/`) is the location of the Borg archive and the *value* (`$HOME`) should be a location on your localhost. The data transfer goes from the *key* synchronized to the *value*.
110+
`sync_dirs` is a map (in Python known as dict). The *key* (`$BORG_HOME/`) is the location of the Borg archive and the *value* (`$HOME`) should be a location on your localhost. The data transfer goes from the *key* synchronized to the *value*.
116111

117112
Here as example the complete content of the mounted archive and it's home directory will be "copied" to the home directory of the current user. The command that will be executed internally looks like this.
118113

@@ -131,9 +126,42 @@ If you want to exclude folders or files you can put your patterns into the `./sr
131126
**/.cache/**
132127
**/Trash/**
133128
**/*.log
134-
135129
```
136130

131+
# My Setup
132+
133+
Here some informations about my software setup so those who doesn't know if package **xy** should remain or not here some favourites of mine.
134+
135+
## <u> Software </u>
136+
137+
Here my essential software parts that I would install on every desktop setup.
138+
139+
### Base Sys
140+
* Arch Linux 64 Bit - **x86**
141+
* Cinnamon Wayland **or** KDE Plasma 6 Wayland
142+
* fitting graphicsdriver & vulkan support
143+
* nvidia (not nvidia-dkms)
144+
* nvidia-utils
145+
* lib32-nvidia-utils
146+
147+
So why not `nvidia-dkms`? `nvidia-dkms` will be locally compiled everytime a new version comes up so it takes much longer than `nvidia` because `nvidia` is pre-compiled. So why then so many recommend `nvidia-dkms`? It's basicly with every kernel compatible so it should work fine under every kernel. But If you're using the stable kernel (default) then I strongly recommend to switch to `nvidia`.
148+
149+
### Compatibily Layer
150+
* wine (stable)
151+
* wine-gecko
152+
* wine-mono
153+
* winetricks
154+
* umu-launcher (proton)
155+
156+
Why `wine` and `umu-launcher`? I am using Linux fulltime and can handle custom but more lightweight compatibily layers like wine instead of using `Lutris`. If you have problems with the terminal try `Lutris`. Or use Windows alongside instead.
157+
158+
### Utility Tools
159+
* gamemode
160+
* lib32-gamemode
161+
* gamescope
162+
163+
More performance through `gamemoderun` and `gamescope` makes window issues with mostly Windows applications obsolete.
164+
137165
# Last Words
138166

139-
This script does not make backups through Borg by itself but depends on software like **Vorta**. It's possible to code additionally a service that does alongside the Borg backup creation but I think **Vorta** and other applications like that are working very good with a desktop envirounment so It would be overkill and mostly useless for those that prefer **Vorta** to create backups.
167+
This script does not make backups through Borg by itself but depends on software like **Vorta**. It's possible to code additionally a service that does that alongside the Borg backup creation but I think Vorta and other applications like that are working very good with desktop envirounments so It would be overkill and mostly useless for those that prefer Vorta.

0 commit comments

Comments
 (0)