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 ugly PHP and later Python, to a freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. Most people in the business know me from my conference talks and articles.

One of my conference talk brought me an offer from Red Hat, which I joined in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. Since August 2013 I'm no longer working as a regular NetworkManager developer (staying an upstream contributor, though). Even before that I tried to put my hands on a number of other projects via bug reports, tests and code. I'm now working on name resolution features in Fedora including a local DNS/DNSSEC resolver setup. I'm also interested in various network-related standards and especially bugs and bad assumptions in IETF documents.

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
I'm currently storing all my ebuilds in the ixit overlay run by User:Okias as a Github repo who granted me push access. The software fits into different categories. Most of my ebuilds are live ebuilds built from Git or other VCS software with public repositories.

Please contact me if you're interested in any of the packages or related packages that are not included.

Networking tools and daemons
Live ebuilds of networking tools, usually because I'm involved in upstream development.


 * (NetworkManager)

You can also ask for me in #nm, #connman and maybe #systemd because of those.

Fedora packaging
A number of RPM packaging tools including Fedora specific package maintainer tools and Copr.



(Dependencies are also packaged.)

Also idling in #fedora-devel because of the package maintainance packages.

Enlightenment
Live ebuilds for what would become Enlightenment 0.20 (or E20) core packages. I'm considering also adding E19 packages.



(The above list contains all enlightenment-core packages.)

You can also ask for me in #e on Freenode.

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.

Kernel configuration
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.

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