diff --git a/README.md b/README.md index b2b308d..113ac3e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # My personalized Arch Linux packages -## Submodules +## Submodules - Initialization and Updating There are several AUR packages added as submodules inside [pkg](pkg). See [build-pkg/pkglist-AUR.txt](build-pkg/pkglist-AUR.txt) for a full list. +They were added in the following manner: + ```shell AUR=(xorg-meta riseup-vpn nordic-kde-git ...) @@ -13,11 +15,7 @@ for pkg in "${AUR[@]}"; do done ``` -Notes: -* `qt-installer-framework` does currently not build (the docs fail :/): - * https://aur.archlinux.org/pkgbase/qt-installer-framework/#comment-813127 - -To init the submodules, run +To initialize the submodules, run ```shell git submodule init @@ -29,6 +27,7 @@ To update all submodules, run git submodule update --remote ``` + ## Build packages from source Fork this repository. @@ -41,20 +40,20 @@ Then and adjust the following files: * [pkg/de-p1st-pacman/pacman.d/de-p1st](pkg/de-p1st-pacman/pacman.d/de-p1st) * Add the address of your mirror-server. -Build [de-p1st-repo](pkg/de-p1st-repo) ... +Build [de-p1st-repo](pkg/de-p1st-repo): ```shell cd build-pkg sudo docker-compose run --rm makepkg de-p1st-repo ``` -... and install it on your build-machine and your mirror-server: +Install it on your build-machine and your mirror-server: ```shell -# on your local machine +# 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 +# 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: @@ -64,129 +63,11 @@ Then you can start building all packages and adding them to your mirror-server: ``` -## Some notes on arch (meta-)package management +## Installing Arch Linux -* 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 +See [pkg/de-p1st-installer/README.md](pkg/de-p1st-installer/README.md) -### Managing custom packages; managing a remote repository +## Notes and TODOs -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) - -### Changing config files that are not owned by any package - -See [pkg/de-p1st-locale/PKGBUILD](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](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 two-digit 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) - -**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! - -```shell -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**: -* How does Pacman pick the default option? Are packages simply - ordered alphabetically? - -* split up the "base" package: - * base-headless (no fonts required) - * base-graphical (depends on base-headless) -* remove "de-p1st-grub" from base - * just one "base" package for both: BIOS and (U)EFI installation! - -* installer: support BIOS boot mode -* installer: Option to disable full disk encryption - -* for each PKG: built with docker then sign wit pgp - * signed package db -* build for multiple architectures - * https://ownyourbits.com/2018/06/27/running-and-building-arm-docker-containers-in-x86/ - * https://ownyourbits.com/2018/06/27/running-and-building-arm-docker-containers-in-x86/#comment-19124 - -* de-p1st-pacman -> ungoogled-chromium - * https://github.com/ungoogled-software/ungoogled-chromium-archlinux#open-build-service-repository - +See [notes.md](notes.md) \ No newline at end of file diff --git a/build-iso/Dockerfile b/build-iso/Dockerfile index 6e902b9..a5eb6fc 100644 --- a/build-iso/Dockerfile +++ b/build-iso/Dockerfile @@ -4,16 +4,17 @@ FROM archlinux:base-devel -# Add de-p1st mirror ... -RUN printf '\n[de-p1st]\nSigLevel = Optional TrustAll\nServer = https://arch.p1st.de\n' >> /etc/pacman.conf -# ... and update mirrors + packages -RUN pacman -Syu --noconfirm && \ +# 1. Add de-p1st mirror +# 2. Update mirrors + packages + +RUN printf '\n[de-p1st]\nSigLevel = Optional TrustAll\nServer = https://arch.p1st.de\n' >> /etc/pacman.conf && \ + pacman -Syu --noconfirm && \ pacman -S --noconfirm archiso openssh -# Set packager -RUN sed --in-place 's|^#PACKAGER=.*$|PACKAGER="Daniel Langbein "|' /etc/makepkg.conf -# Store built packages in /out/ -RUN sed --in-place 's|^#PKGDEST=.*$|PKGDEST=/out|' /etc/makepkg.conf +# 1. Set packager +# 2. Store built packages in /out/ +RUN sed --in-place 's|^#PACKAGER=.*$|PACKAGER="Daniel Langbein "|' /etc/makepkg.conf && \ + sed --in-place 's|^#PKGDEST=.*$|PKGDEST=/out|' /etc/makepkg.conf # Create a normal user to build the ISO RUN useradd --create-home build diff --git a/build-pkg/Dockerfile b/build-pkg/Dockerfile index bd62f50..1acf2a9 100644 --- a/build-pkg/Dockerfile +++ b/build-pkg/Dockerfile @@ -4,15 +4,18 @@ FROM archlinux:base-devel -# Add de-p1st mirror ... -RUN printf '\n[de-p1st]\nSigLevel = Optional TrustAll\nServer = https://arch.p1st.de\n' >> /etc/pacman.conf -# ... and update mirrors + packages -RUN pacman -Syu --noconfirm +# 1. Add de-p1st mirror +# 2. Enable parallel downloads +# TODO: Wait until next baseimage update +# && sed --in-place 's|^#ParallelDownloads\s*=.*$|ParallelDownloads = 4|' /etc/pacman.conf \ +# 3. Update mirrors + packages +RUN printf '\n[de-p1st]\nSigLevel = Optional TrustAll\nServer = https://arch.p1st.de\n' >> /etc/pacman.conf && \ + pacman -Syu --noconfirm -# Set packager -RUN sed --in-place 's|^#PACKAGER=.*$|PACKAGER="Daniel Langbein "|' /etc/makepkg.conf -# Store built packages in /out/ -RUN sed --in-place 's|^#PKGDEST=.*$|PKGDEST=/out|' /etc/makepkg.conf +# 1. Set packager +# 2. Store built packages in /out/ +RUN sed --in-place 's|^#PACKAGER=.*$|PACKAGER="Daniel Langbein "|' /etc/makepkg.conf && \ + sed --in-place 's|^#PKGDEST=.*$|PKGDEST=/out|' /etc/makepkg.conf # Create a normal user to be used by makepkg RUN useradd --create-home build diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..61d368f --- /dev/null +++ b/notes.md @@ -0,0 +1,125 @@ +# Notes and TODOs + +## Some notes on arch (meta-)package management + +* 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) + +### Changing config files that are not owned by any package + +See [pkg/de-p1st-locale/PKGBUILD](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](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 two-digit 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) + +**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! + +```shell +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): +``` + +## TODOs + +* How does Pacman pick the default option? Are packages simply + ordered alphabetically? + +* split up the "base" package: + * base-headless (no fonts required) + * base-graphical (depends on base-headless) +* remove "de-p1st-grub" from base + * just one "base" package for both: BIOS and (U)EFI installation! + +* installer: support BIOS boot mode +* installer: Option to disable full disk encryption + +* for each PKG: built with docker then sign wit pgp + * signed package db +* build for multiple architectures + * https://ownyourbits.com/2018/06/27/running-and-building-arm-docker-containers-in-x86/ + * https://ownyourbits.com/2018/06/27/running-and-building-arm-docker-containers-in-x86/#comment-19124 + +* de-p1st-pacman -> ungoogled-chromium + * https://github.com/ungoogled-software/ungoogled-chromium-archlinux#open-build-service-repository diff --git a/pkg/de-p1st-installer/README.md b/pkg/de-p1st-installer/README.md index d99c145..f86a025 100644 --- a/pkg/de-p1st-installer/README.md +++ b/pkg/de-p1st-installer/README.md @@ -1,4 +1,4 @@ -# Arch installer +# Arch Installer ## Running the installer diff --git a/pkg/de-p1st-installer/example-vbox.cfg b/pkg/de-p1st-installer/example-vbox.cfg index c648429..1748738 100644 --- a/pkg/de-p1st-installer/example-vbox.cfg +++ b/pkg/de-p1st-installer/example-vbox.cfg @@ -47,7 +47,7 @@ ADDITIONAL_PKGS+=('de-p1st-gpu-generic' 'de-p1st-xfce4-hidpi' 'de-p1st-sddm-tabl # smartcard ADDITIONAL_PKGS+=('de-p1st-smartcard') # other programs -ADDITIONAL_PKGS+=('signal-desktop' 'nextcloud-client' 'keepassxc' 'xournalpp') +ADDITIONAL_PKGS+=('signal-desktop' 'nextcloud-client' 'keepassxc' 'xournalpp' 'evince') ADDITIONAL_PKGS+=('intellij-idea-ultimate-edition' 'intellij-idea-ultimate-edition-jre') # gallery / image viewer ADDITIONAL_PKGS+=('nomacs' 'qt5-imageformats') diff --git a/pkg/de-p1st-pacman/TESTED b/pkg/de-p1st-pacman/TESTED index 8420882..39d7c2b 100644 --- a/pkg/de-p1st-pacman/TESTED +++ b/pkg/de-p1st-pacman/TESTED @@ -1 +1,2 @@ -de-p1st mirror \ No newline at end of file +de-p1st mirror +ParallelDownloads = 4 \ No newline at end of file diff --git a/pkg/de-p1st-xfce4-hidpi/TESTED b/pkg/de-p1st-xfce4-hidpi/TESTED index ab208d9..b513336 100644 --- a/pkg/de-p1st-xfce4-hidpi/TESTED +++ b/pkg/de-p1st-xfce4-hidpi/TESTED @@ -1,6 +1,4 @@ WindowScalingFactor 99_hidpi.sh -> QT_AUTO_SCREEN_SCALE_FACTOR and QT_FONT_DPI sddm HiDpi - -TODO: cursor size 32 -TODO: thunar settings \ No newline at end of file +Mouse Cursor size 32 diff --git a/pkg/de-p1st-xfce4/PKGBUILD b/pkg/de-p1st-xfce4/PKGBUILD index 28b2aea..9b6e1ad 100644 --- a/pkg/de-p1st-xfce4/PKGBUILD +++ b/pkg/de-p1st-xfce4/PKGBUILD @@ -2,7 +2,7 @@ _pkgname=xfce4 _reponame=arch pkgname="de-p1st-$_pkgname" -pkgver=0.0.18 +pkgver=0.0.19 pkgrel=1 pkgdesc="XFCE4 with configuration" arch=('any') @@ -47,7 +47,8 @@ depends+=(de-p1st-redshift) # ============== display manager ============== # sddm with autologin -depends+=(de-p1st-sddm-autologin) +# depends+=(de-p1st-sddm-autologin) +# # sddm themeing depends+=(de-p1st-sddm-theme) @@ -62,10 +63,10 @@ depends+=(de-p1st-theme) # x11 keyboard layouts depends+=(de-p1st-keyboard-x11) -# ============== browser ============== -depends+=(firefox) # ============== wallpaper ============== depends+=(de-p1st-wallpaper) +# ============== browser ============== +depends+=(firefox) package() { cd "${_reponame}/pkg/${pkgname}" diff --git a/pkg/de-p1st-xfce4/TESTED b/pkg/de-p1st-xfce4/TESTED index eafdb5c..edaed5e 100644 --- a/pkg/de-p1st-xfce4/TESTED +++ b/pkg/de-p1st-xfce4/TESTED @@ -3,6 +3,8 @@ Whisker Menu: -> Firefox as favourite top right desktop-icons on primary display is set to "true" +custom destkop background +power button suspends the system Panel1: -> 2 workspaces (instead of 4) @@ -11,6 +13,6 @@ Panel1: Panel2: -> lower (2nd) panel removed -TODO: power manager settings -TODO: wallpaper -TODO: thunar settings \ No newline at end of file +Thunar: +-> hidden files visible +-> filders not before files