My personalized Arch Linux distribution https://arch.p1st.de
Go to file
2021-06-17 19:44:02 +02:00
.idea build-iso: Add support for installation via ssh 2021-06-14 14:46:29 +02:00
build-iso add archiso presentation 2021-06-14 16:10:53 +02:00
build-pkg add de-p1st-rotate 2021-06-17 16:25:38 +02:00
pkg fix 2021-06-17 19:44:02 +02:00
prototype add ssh authorized_keys 2021-06-13 14:21:26 +02:00
.gitignore build-iso: Add support for installation via ssh 2021-06-14 14:46:29 +02:00
.gitmodules fix 2021-06-17 16:30:59 +02:00
LICENSE add htop pkg; fix locale? 2021-05-13 15:44:02 +00:00
README.md minor 2021-06-17 15:32:47 +02:00

My personalized Arch Linux packages

Submodules

There are several AUR packages added as submodules inside pkg. See build-pkg/pkglist-AUR.txt for a full list.

AUR=(xorg-meta riseup-vpn nordic-kde-git ...)

for pkg in "${AUR[@]}"; do
  git submodule add "https://aur.archlinux.org/${pkg}.git" pkg/"${pkg}"
done

Notes:

To init the submodules, run

git submodule init

To update all submodules, run

git submodule update --remote

Build packages from source

Fork this repository.

Then and adjust the following files:

Build de-p1st-repo ...

cd build-pkg
sudo docker-compose run --rm makepkg de-p1st-repo

... and install it on your build-machine and your mirror-server:

# on your local machine
sudo pacman -U out/de-p1st-repo*.pkg.tar.*

# copy the package to your mirror-server and install it there as well

Then you can start building all packages and adding them to your mirror-server:

./build-all.sh

Some notes on arch (meta-)package management

Managing custom packages; managing a remote repository

  1. One could use crema
  2. Or some self-made shell scripts: pkg/de-p1st-repo/README.md

Notes about PKGBUILD

Package naming

Package names are prefixed with de-p1st as this is one of my domains (p1st.de) which itself is an abbreviation of privacy1st.de

Creating config files

install -Dm644 $src $pkgdir/$dst

Example: pkg/de-p1st-sudo/PKGBUILD

Changing existing config files

install -Dm0544 some-config.conf.holoscript "$pkgdir"/usr/share/holo/files/"$pkgname"/etc/path/to/some-config.conf.holoscript

Example:

Changing config files that are not owned by any package

See pkg/de-p1st-locale/PKGBUILD for an example.

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

Enabling services

Note: the preset name shall start with a two-digit number < 99.

install -Dm0644 systemd.preset "$pkgdir"/usr/lib/systemd/system-preset/20-"$pkgname".preset

Example package:

Note:

Running systemctl preset-all resets all installed unit files to the defaults configured in the preset policy files.

This implies: All manual changes such as systemctl enable serviceXYZ will get lost!

To avoid this, enable your services with systemd-presets!

echo 'enable NetworkManager.service' | sudo tee -a /usr/lib/systemd/system-preset/20-custom.preset
sudo systemctl preset-all

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): 

TODO: