User:Pavlix

Contact
The best way to contact me over Gentoo topics is to catch me in #gentoo or other channels on Freenode. Otherwise you can send e-mails to pavlix at pavlix.net. In very rare cases you may want to call me via phone number +420 775 996 256.

About
After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using PHP and later Python, to years of freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. I was active in the community, wrote articles and spoke at conferences which finally led to my joining Red Hat in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. From August 2013 to November 2016 I was working on various network related packages and projects. Since December 2016 I am working on service containerization using Docker for Fedora Modularity and looking for a change.

I'm more of a pragmatic user of Gentoo. As an open source software developer digging into many projects, I'm taking advantage of portage, overlays, ebuilds and user patches. Gentoo serves the purpose of quickly turning my wishes into an installed package I can use for further testing or daily use. My motivation for being involved in Gentoo is simply to share my results with the community that shares so much with me.

My ebuilds and overlays
Overlays:


 * ixit overlay (co-maintainer with User:Okias)
 * NetworkManager, nm-applet, unbound and dnssec-trigger
 * iproute2, pyroute2, libnl, libndp
 * netresolve
 * kernelconfig, systemd2rc
 * Gentoo ebuilds for Fedora and CentOS development (maintainer)
 * rpm
 * rpmdevtools, rpmlint
 * fedora-packager, fedpkg, koji, bodhi, mock, packagedb, copr
 * centpkg
 * support for Python 3.x
 * OpenWRT software packaged for Gentoo (maintainer)
 * netifd
 * procd
 * Enlightenment WM latest stable version and live ebuilds (silent co-maintainer with User:rafspiny, visit #gentoo-e on Freenode)

You can use gpo.zugaina.org to search the above overlays.

QA: Use sandbox to check dependencies
The sandbox already checks which files are written and protects the system from being tampered with whe building a package. It could also be used to check which files are read in order to ensure the following properties of the ebuild.


 * 1) When building, no files except those owned by the base system and packages explicitly stated in   should be read. Otherwise there's a hidden dependency.
 * 2) For each package in , at least one file should be read that belongs to the package. Otherwise there's a redundant dependency.

Note that this setup is very strict and would be only applicable for selected known good packages.

Project: Kernel configuration
kernelconfig

I would like to configure kernel in a more sane and predictable way.


 * 1) I want to select a basic profile like generic for a best effort desktop/laptop configuration with a broad device support or minimal for a minimal Gentoo kernel configuration that needs to be tweaked to specific hardware.
 * 2) Then I want to develop a specific override for my hardware to be used with the minimal profile. I would share this override with fellow Gentoo users for example here in the Wiki. As a laptop user, I would generally use one override for the laptop and possibly also another override for extended support of external USB devices and stuff like that.
 * 3) Next I would like to be able to apply overrides for the purpose of the machine like advanced-router featuring routing and traffic control modules that are not normally needed on end user machines.
 * 4) Some of the features should also be triggered by overrides dropped by packages that require some kernel features like libvirt or qemu.
 * 5) When there would be still something to be configured, I would like to handle it using the last, user supplied, override to perform any remaining configuration changes.

Project: Convert systemd unit files to initscripts
systemd2rc

Hardware
The following is a list of hardware pages for hardware that I know something about.


 * Lenovo ThinkPad X61
 * Lenovo ThinkPad X201
 * Lenovo ThinkPad T420s
 * Lenovo ThinkPad X230
 * Lenovo ThinkPad T540P

(See also: Category:Laptops)


 * Asrock C70M1

(See also: Category:Motherboards)

System
Base operating system topics I'm interested in.

PXE booting:


 * PXE
 * Diskless_nodes

System

 * systemd (primarily to make Gentoo close to my work setup)
 * Bash
 * eix
 * genkernel-next (formerly genkernel)
 * LVM
 * sudo
 * screen
 * pm-utils
 * iproute
 * networkmanager
 * ntpd
 * acpid
 * laptop-mode-tools
 * thermal-daemon

Developmnet / Testing

 * LXC
 * Qemu
 * libvirt

Desktop

 * Enlightenment (formerly Awesome)
 * nm-applet

Applications

 * screen
 * vim
 * offlineimap
 * mutt
 * Firefox, Midori

Tips and tricks
I already moved some of them to the respective wiki pages:


 * How to enable epatch_user and /etc/portage/patches for all ebuilds using /etc/portage/bashrc

Force --autounmask-write changes
CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} /etc/portage"

Keyboard
US and Czech qwerty keyboard layouts, toggled with Alt+Shift, with AltGr+Menu as Compose/Multi key.

setxkbmap "us,cz(qwerty)" -option grp:alt_shift_toggle,compose:menu-altgr

Trackpoint
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Device Accel Profile" 8 3 xinput set-float-prop "TPPS/2 IBM TrackPoint" "Device Accel Velocity Scaling" 30 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 8 1 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 8 2 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 16 200 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5

Portage: Restart emerge automatically after autounmask-write
{{FileBox|filename=/etc/portage/patches/sys-apps/portage-2.2.8-r1/autounmask.patch|1= Index: portage-2.2.8/pym/_emerge/depgraph.py

=
====================================================== --- portage-2.2.8.orig/pym/_emerge/depgraph.py +++ portage-2.2.8/pym/_emerge/depgraph.py @@ -27,7 +27,7 @@ from portage.dep._slot_operator import i from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use, \ _get_eapi_attrs from portage.exception import (InvalidAtom, InvalidData, InvalidDependString, -      PackageNotFound, PortageException) +      PackageNotFound, PortageException, RetryEmerge) from portage.output import colorize, create_color_func, \        darkgreen, green bad = create_color_func("BAD") @@ -7349,6 +7349,8 @@ class depgraph(object):                        for root in roots:                                chk_updated_cfg_files(root, [os.path.join(os.sep, USER_CONFIG_PATH)]) +                      if autounmask_write: +                               raise RetryEmerge("Re-try emerge")                elif not pretend and not autounmask_write and roots:                        writemsg("\nUse --autounmask-write to write changes to config files (honoring\n"                                "CONFIG_PROTECT). Carefully examine the list of proposed changes,\n" Index: portage-2.2.8/pym/_emerge/main.py

=
====================================================== --- portage-2.2.8.orig/pym/_emerge/main.py +++ portage-2.2.8/pym/_emerge/main.py @@ -18,6 +18,7 @@ portage.proxy.lazyimport.lazyimport(glob       '_emerge.is_valid_package_atom:insert_category_into_atom' ) from portage import os +from portage.exception import RetryEmerge from portage.util._argparse import ArgumentParser if sys.hexversion >= 0x3000000: @@ -1029,6 +1030,8 @@ def emerge_main(args=None): try: return run_action(emerge_config) +      except RetryEmerge: +              return emerge_main finally: # Call destructors for our portdbapi instances. for x in emerge_config.trees.values: Index: portage-2.2.8/pym/portage/exception.py

=
====================================================== --- portage-2.2.8.orig/pym/portage/exception.py +++ portage-2.2.8/pym/portage/exception.py @@ -74,6 +74,9 @@ class InvalidData(PortageException): class InvalidDataType(PortageException): """An incorrect type was passed instead of the expected one""" +class RetryEmerge(PortageException): +      """Re-try the emerge request""" + class InvalidLocation(PortageException): """Data was not found when it was expected to exist or was specified incorrectly""" }}

Debugging
FEATURES="splitdebug installsources"

Fedora rawhide on LXC
NAME=rawhide RELEASE=rawhide VGNAME=vg

euse -E lua caps -p app-arch/rpm emerge -v1 rpm

lxc-create -n $NAME -t fedora -B lvm --vgname $VGNAME -- -R $RELEASE

Notes:


 * With new LXC builds, LVM won't work.
 * LXC container's systemd breaks host's ttys

Systemd
From udev to systemd:

emerge --unmerge udev emerge -v systemd

What you need to have a dual boot Gentoo with systemd and OpenRC:

app-emulation/libvirt >= 1.2.3 sys-fs/lvm2 >= ???


 * Configure PAM

Network printing
Install the necessary packages:

euse -E zeroconf emerge -av cups nss-mdns system-config-printer-gnome

Make sure nss-mdns is configured:

hosts:      files mdns_minimal dns mdns
 * 1) grep hosts /etc/nsswitch.conf

Start cups and avahi-daemon.

Find and configure the printer:

system-config-printer

Get rid of window tearing
compton -c --vsync opengl --backend glx --vsync opengl-swc

Screen lock using systemd
/etc/systemd/system/slock.service:

[Unit] Description=Lock X session using slock Before=sleep.target

[Service] User=pavlix Environment=DISPLAY=:0 Type=simple ExecStart=/usr/bin/slock

[Install] WantedBy=sleep.target WantedBy=lock.target

A multi-user variant can be prepared with xautolock.

Pages

 * Debugging

My pages:


 * /Install – How to install Gentoo a slightly different way
 * /Kernel – How to configure Gentoo kernel in a reproducable way
 * /Virtualization – How to configure Gentoo to provide virtualization service