You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+45-17Lines changed: 45 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,13 @@
1
1
# Arch Installation Script
2
2
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.
4
4
5
5
# Getting Started
6
6
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.
8
8
9
9
```bash
10
10
#!/bin/bash
11
-
12
11
# === conn config & auth ===
13
12
# reference file
14
13
SSH_KEYFILE="PATH/YOUR-SSHKEY"# location of ssh private key
MOUNT_DIR=/tmp/borg # borg archive mount location *REQUIRED
23
21
BORG_HOME="$MOUNT_DIR/home/USERNAME"# borg archive home location *REQUIRED
24
22
```
25
23
26
-
27
-
28
24
## <u> Configuration </u>
29
25
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.
31
27
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.
33
29
34
30
## <u> How It Works </u>
35
31
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.
37
33
38
34
### Packages
39
35
40
36
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`.
41
37
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`.
43
39
44
40
```bash
45
41
#!/bin/bash
@@ -52,8 +48,7 @@ install_pkgs() {
52
48
}
53
49
```
54
50
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.
57
52
58
53
#### *Positive Example*
59
54
@@ -69,7 +64,7 @@ package-3
69
64
package-4
70
65
```
71
66
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.
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.
90
85
91
86
```bash
92
87
package-1 # comment 1
@@ -112,7 +107,7 @@ make_recovery() {
112
107
...
113
108
```
114
109
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*.
116
111
117
112
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.
118
113
@@ -131,9 +126,42 @@ If you want to exclude folders or files you can put your patterns into the `./sr
131
126
**/.cache/**
132
127
**/Trash/**
133
128
**/*.log
134
-
135
129
```
136
130
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
+
137
165
# Last Words
138
166
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