arch/README.md
2021-05-04 16:52:34 +02:00

87 lines
2.5 KiB
Markdown

# My personalized Arch Linux packages
## Some notes
* https://disconnected.systems/blog/archlinux-meta-packages/
* https://nerdstuff.org/posts/2020/2020-002_meta_packages/
* https://gitlab.com/archi3linux/meta/-/blob/master/PKGBUILD
* https://github.com/alfredopalhares/arch-pkgbuilds
### Managing custom packages; managing a remote repository
1) One could use [crema](https://gitlab.com/mipimipi/crema)
2) Or some self made shell scripts: [pkg/de-p1st-repo/README.md](pkg/de-p1st-repo/README.md)
## Notes about PKGBUILD
### Package naming
* [package naming](https://wiki.archlinux.org/index.php/Arch_package_guidelines#Package_naming)
Package names are prefixed with `de-p1st` as this is one of my
domains ([p1st.de](https://p1st.de)) which itself is an abbreviation of
[privacy1st.de](https://privacy1st.de)
### Creating config files
```shell
install -Dm644 $src $pkgdir/$dst
```
Example: [pkg/de-p1st-sudo/PKGBUILD](pkg/de-p1st-sudo/PKGBUILD)
### Changing existing config files
* `holo` from the AUR
* [https://github.com/holocm/holo/blob/master/doc/holo-files.8.pod]()
```shell
install -Dm0544 some-config.conf.holoscript "$pkgdir"/usr/share/holo/files/"$pkgname"/etc/path/to/some-config.conf.holoscript
```
Example:
* [pkg/de-p1st-pacman/pacman.conf.holoscript](pkg/de-p1st-pacman/pacman.conf.holoscript)
* [pkg/de-p1st-pacman/PKGBUILD](pkg/de-p1st-pacman/PKGBUILD)
### Home skeleton
Pacman should **never** change files in `$HOME`. To still be able to include
customized configurations, one can copy them to the skeleton used for new users:
Files from `/etc/skel` are copied to `/home/$USER` when new users are created.
Example: [pkg/de-p1st-gnupg/PKGBUILD](pkg/de-p1st-gnupg/PKGBUILD)
### Enabling services
* systemd.preset - Service enablement presets
* [man 5 systemd.preset](https://www.systutorials.com/docs/linux/man/5-systemd.preset/)
**Note**: the preset name shall start with a number < 99.
```shell
install -Dm0644 systemd.preset "$pkgdir"/usr/lib/systemd/system-preset/20-"$pkgname".preset
```
Example package:
* [pkg/de-p1st-networkmanager/systemd.preset](pkg/de-p1st-networkmanager/systemd.preset)
* [pkg/de-p1st-networkmanager/PKGBUILD](pkg/de-p1st-networkmanager/PKGBUILD)
### Multiple providers
Example:
* Two packages (`de-p1st-test2` and `de-p1st-test3`) provide `de-p1st-test`
* If one installs `de-p1st-test` he can interactively choose one which provider to select:
```
$ sudo pacman -S de-p1st-test
:: There are 2 providers available for de-p1st-test:
:: Repository de-p1st
1) de-p1st-test2 2) de-p1st-test3
Enter a number (default=1):
```