From 21c1b1254e5f3cf96dcd0d045d73f72633a0b0e1 Mon Sep 17 00:00:00 2001 From: Salt Date: Fri, 4 Dec 2020 09:07:56 -0600 Subject: [PATCH] Prototyping a Gentoo section of the desktop role God help me. --- roles/desktop/files/portage/make.conf | 30 ++++++ .../package.accept_keywords/games-emulation | 1 + .../package.accept_keywords/games-util | 1 + .../package.accept_keywords/media-sound | 1 + .../portage/package.accept_keywords/net-im | 2 + .../files/portage/package.use/app-admin | 2 + .../files/portage/package.use/app-emulation | 1 + .../files/portage/package.use/dev-java | 1 + .../files/portage/package.use/dev-lang | 1 + .../desktop/files/portage/package.use/dev-vcs | 1 + .../files/portage/package.use/games-emulation | 1 + .../files/portage/package.use/media-libs | 1 + .../files/portage/package.use/media-video | 1 + .../files/portage/package.use/net-misc | 1 + .../files/portage/package.use/sys-libs | 1 + .../files/portage/package.use/www-client | 2 + .../files/portage/package.use/x11-misc | 1 + .../desktop/files/portage/package.use/x11-wm | 1 + .../files/portage/repos.conf/gentoo.conf | 11 +++ .../portage/repos.conf/steam-overlay.conf | 10 ++ roles/desktop/files/portage/sets/ansible | 93 +++++++++++++++++++ roles/desktop/tasks/packages.yml | 10 ++ 22 files changed, 174 insertions(+) create mode 100644 roles/desktop/files/portage/make.conf create mode 100644 roles/desktop/files/portage/package.accept_keywords/games-emulation create mode 100644 roles/desktop/files/portage/package.accept_keywords/games-util create mode 100644 roles/desktop/files/portage/package.accept_keywords/media-sound create mode 100644 roles/desktop/files/portage/package.accept_keywords/net-im create mode 100644 roles/desktop/files/portage/package.use/app-admin create mode 100644 roles/desktop/files/portage/package.use/app-emulation create mode 100644 roles/desktop/files/portage/package.use/dev-java create mode 100644 roles/desktop/files/portage/package.use/dev-lang create mode 100644 roles/desktop/files/portage/package.use/dev-vcs create mode 100644 roles/desktop/files/portage/package.use/games-emulation create mode 100644 roles/desktop/files/portage/package.use/media-libs create mode 100644 roles/desktop/files/portage/package.use/media-video create mode 100644 roles/desktop/files/portage/package.use/net-misc create mode 100644 roles/desktop/files/portage/package.use/sys-libs create mode 100644 roles/desktop/files/portage/package.use/www-client create mode 100644 roles/desktop/files/portage/package.use/x11-misc create mode 100644 roles/desktop/files/portage/package.use/x11-wm create mode 100644 roles/desktop/files/portage/repos.conf/gentoo.conf create mode 100644 roles/desktop/files/portage/repos.conf/steam-overlay.conf create mode 100644 roles/desktop/files/portage/sets/ansible diff --git a/roles/desktop/files/portage/make.conf b/roles/desktop/files/portage/make.conf new file mode 100644 index 0000000..fdf01e6 --- /dev/null +++ b/roles/desktop/files/portage/make.conf @@ -0,0 +1,30 @@ +# +# make.conf +# Configuration for Portage +# vim:ft=bash +# +# NOTE: DO NOT REMOVE ANY LINES STARTING WITH ansible: +# ANSIBLE USES THOSE TO INSERT MODIFICATIONS PROGRAMATICALLY +# + +# USE +USE="curl ffmpeg gstreamer networkmanager pulseaudio systemd vulkan webp xinerama -elogind -test" +#ansible:use + +# Compilation configuration +# ABI_X86 is used to control multilib support +ABI_X86="64 32" +COMMON_FLAGS="-march=native -O2 -pipe" +CFLAGS="${COMMON_FLAGS}" +CXXFLAGS="${COMMON_FLAGS}" +MAKEOPTS="-j16" + +# Portage configuration +ACCEPT_LICENSE="*" +EMERGE_DEFAULT_OPTS="--jobs 10" +FEATURES="-network-sandbox" +GENTOO_MIRRORS="http://distfiles.gentoo.org" +VIDEO_CARDS="i915 amdgpu qxl radeon -nouveau" + +# Package configuration +GRUB_PLATFORMS="emu efi-32 efi-64 pc" diff --git a/roles/desktop/files/portage/package.accept_keywords/games-emulation b/roles/desktop/files/portage/package.accept_keywords/games-emulation new file mode 100644 index 0000000..0dd5fdb --- /dev/null +++ b/roles/desktop/files/portage/package.accept_keywords/games-emulation @@ -0,0 +1 @@ +games-emulation/dolphin ~amd64 diff --git a/roles/desktop/files/portage/package.accept_keywords/games-util b/roles/desktop/files/portage/package.accept_keywords/games-util new file mode 100644 index 0000000..851cd0e --- /dev/null +++ b/roles/desktop/files/portage/package.accept_keywords/games-util @@ -0,0 +1 @@ +games-util/lutris ~amd64 diff --git a/roles/desktop/files/portage/package.accept_keywords/media-sound b/roles/desktop/files/portage/package.accept_keywords/media-sound new file mode 100644 index 0000000..58b94b1 --- /dev/null +++ b/roles/desktop/files/portage/package.accept_keywords/media-sound @@ -0,0 +1 @@ +media-sound/spotify ~amd64 diff --git a/roles/desktop/files/portage/package.accept_keywords/net-im b/roles/desktop/files/portage/package.accept_keywords/net-im new file mode 100644 index 0000000..e30ea83 --- /dev/null +++ b/roles/desktop/files/portage/package.accept_keywords/net-im @@ -0,0 +1,2 @@ +net-im/element-desktop-bin ~amd64 +net-im/slack ~amd64 diff --git a/roles/desktop/files/portage/package.use/app-admin b/roles/desktop/files/portage/package.use/app-admin new file mode 100644 index 0000000..cc341df --- /dev/null +++ b/roles/desktop/files/portage/package.use/app-admin @@ -0,0 +1,2 @@ +app-admin/conky curl ical imlib iostats math rss vim-syntax wifi +app-admin/sudo offensive diff --git a/roles/desktop/files/portage/package.use/app-emulation b/roles/desktop/files/portage/package.use/app-emulation new file mode 100644 index 0000000..41d3f1e --- /dev/null +++ b/roles/desktop/files/portage/package.use/app-emulation @@ -0,0 +1 @@ +app-emulation/libvirt libssh lxc diff --git a/roles/desktop/files/portage/package.use/dev-java b/roles/desktop/files/portage/package.use/dev-java new file mode 100644 index 0000000..33b5c62 --- /dev/null +++ b/roles/desktop/files/portage/package.use/dev-java @@ -0,0 +1 @@ +dev-java/openjdk -jbootstrap diff --git a/roles/desktop/files/portage/package.use/dev-lang b/roles/desktop/files/portage/package.use/dev-lang new file mode 100644 index 0000000..ed4c38e --- /dev/null +++ b/roles/desktop/files/portage/package.use/dev-lang @@ -0,0 +1 @@ +dev-lang/python -bluetooth -sqlite diff --git a/roles/desktop/files/portage/package.use/dev-vcs b/roles/desktop/files/portage/package.use/dev-vcs new file mode 100644 index 0000000..7c41e45 --- /dev/null +++ b/roles/desktop/files/portage/package.use/dev-vcs @@ -0,0 +1 @@ +dev-vcs/git highlight diff --git a/roles/desktop/files/portage/package.use/games-emulation b/roles/desktop/files/portage/package.use/games-emulation new file mode 100644 index 0000000..0507dba --- /dev/null +++ b/roles/desktop/files/portage/package.use/games-emulation @@ -0,0 +1 @@ +games-emulation/dolphin discord-presence diff --git a/roles/desktop/files/portage/package.use/media-libs b/roles/desktop/files/portage/package.use/media-libs new file mode 100644 index 0000000..3e23e53 --- /dev/null +++ b/roles/desktop/files/portage/package.use/media-libs @@ -0,0 +1 @@ +media-libs/mesa d3d9 vulkan diff --git a/roles/desktop/files/portage/package.use/media-video b/roles/desktop/files/portage/package.use/media-video new file mode 100644 index 0000000..0489788 --- /dev/null +++ b/roles/desktop/files/portage/package.use/media-video @@ -0,0 +1 @@ +media-video/mpv archive bluray libmpv tools diff --git a/roles/desktop/files/portage/package.use/net-misc b/roles/desktop/files/portage/package.use/net-misc new file mode 100644 index 0000000..cad64c6 --- /dev/null +++ b/roles/desktop/files/portage/package.use/net-misc @@ -0,0 +1 @@ +net-misc/networkmanager dhclient diff --git a/roles/desktop/files/portage/package.use/sys-libs b/roles/desktop/files/portage/package.use/sys-libs new file mode 100644 index 0000000..e979cea --- /dev/null +++ b/roles/desktop/files/portage/package.use/sys-libs @@ -0,0 +1 @@ +sys-libs/ncurses -gpm diff --git a/roles/desktop/files/portage/package.use/www-client b/roles/desktop/files/portage/package.use/www-client new file mode 100644 index 0000000..f39cf28 --- /dev/null +++ b/roles/desktop/files/portage/package.use/www-client @@ -0,0 +1,2 @@ +www-client/chromium -hangouts vaapi widevine +www-client/firefox hwaccel wifi diff --git a/roles/desktop/files/portage/package.use/x11-misc b/roles/desktop/files/portage/package.use/x11-misc new file mode 100644 index 0000000..0488ab7 --- /dev/null +++ b/roles/desktop/files/portage/package.use/x11-misc @@ -0,0 +1 @@ +x11-misc/polybar ipc network diff --git a/roles/desktop/files/portage/package.use/x11-wm b/roles/desktop/files/portage/package.use/x11-wm new file mode 100644 index 0000000..659ed43 --- /dev/null +++ b/roles/desktop/files/portage/package.use/x11-wm @@ -0,0 +1 @@ +x11-wm/bspwm examples diff --git a/roles/desktop/files/portage/repos.conf/gentoo.conf b/roles/desktop/files/portage/repos.conf/gentoo.conf new file mode 100644 index 0000000..fb32fef --- /dev/null +++ b/roles/desktop/files/portage/repos.conf/gentoo.conf @@ -0,0 +1,11 @@ +# vim:ft=dosini +[DEFAULT] +main-repo = gentoo + +[gentoo] +location = /usr/portage +#sync-depth = 1 +sync-type = git +sync-uri = https://github.com/gentoo-mirror/gentoo.git +sync-git-verify-commit-signature = true +auto-sync = yes diff --git a/roles/desktop/files/portage/repos.conf/steam-overlay.conf b/roles/desktop/files/portage/repos.conf/steam-overlay.conf new file mode 100644 index 0000000..27c7a81 --- /dev/null +++ b/roles/desktop/files/portage/repos.conf/steam-overlay.conf @@ -0,0 +1,10 @@ +[steam-overlay] + +# Gentoo overlay for Valve's Steam client and Steam-based games. +# Maintainer: anyc (https://github.com/anyc) + +location = /usr/local/portage/steam-overlay +sync-type = git +sync-uri = https://github.com/anyc/steam-overlay.git +priority = 50 +auto-sync = Yes diff --git a/roles/desktop/files/portage/sets/ansible b/roles/desktop/files/portage/sets/ansible new file mode 100644 index 0000000..1740750 --- /dev/null +++ b/roles/desktop/files/portage/sets/ansible @@ -0,0 +1,93 @@ +# DO NOT EDIT THIS FILE +# This file is managed via ansible and WILL be overwritten! + +# System apps +app-admin/pwgen +app-admin/sudo +app-editors/vim +app-emulation/libvirt +app-emulation/virt-manager +app-emulation/wine-vanilla +app-emulation/winetricks +app-portage/gentoolkit +app-text/highlight +app-text/tree + +dev-java/openjdk:8 +dev-lang/mono +dev-python/pip +dev-python/pyusb +dev-python/virtualenv +dev-util/vulkan-tools +dev-vcs/git + +media-fonts/fontawesome +media-fonts/ibm-plex +media-fonts/inconsolata +media-fonts/noto +media-fonts/roboto +media-libs/mesa + +net-analyzer/nmap +net-misc/networkmanager +net-p2p/syncthing +net-vpn/networkmanager-openconnect +net-vpn/networkmanager-openvpn + +sys-boot/grub:2 +sys-fs/dosfstools +sys-fs/e2fsprogs +sys-fs/ncdu +sys-fs/xfsprogs +sys-kernel/gentoo-kernel +sys-kernel/installkernel-gentoo +sys-kernel/linux-firmware +sys-process/cronie + +# User apps +app-admin/keepassxc +app-misc/joy2key + +dev-lua/luacheck +dev-util/android-tools + +games-emulation/dolphin +games-util/lutris +games-util/steam-meta + +kde-apps/filelight +kde-apps/kcolorchooser + +media-gfx/gimp +media-gfx/imagemagick +media-sound/spotify +media-video/ffmpeg +media-video/mpv + +net-im/element-desktop-bin +net-im/slack +net-im/telegram-desktop +net-misc/nextcloud-client +net-p2p/qbittorrent-4.2.5-r2 + +www-client/chromium +www-client/firefox + +x11-misc/zim + +# Desktop environment +app-admin/conky + +media-sound/pavucontrol-qt + +x11-apps/xbacklight +x11-misc/dunst +x11-misc/nitrogen +x11-misc/picom +x11-misc/polybar +x11-misc/qt5ct +x11-misc/redshift +x11-misc/rofi +x11-misc/xdotool +x11-themes/papirus-icon-theme +x11-wm/bspwm diff --git a/roles/desktop/tasks/packages.yml b/roles/desktop/tasks/packages.yml index 3551a25..3e094f9 100644 --- a/roles/desktop/tasks/packages.yml +++ b/roles/desktop/tasks/packages.yml @@ -44,5 +44,15 @@ - system76-power when: ansible_system_vendor == "System76" when: ansible_pkg_mgr == "apt" +- name: configure portage + block: + # Portage is very complex, so we sync an entire known good configuration tree + # Note that this also syncs over the @ansible package set + - name: sync portage configs + synchronize: src="portage/" dest="/etc/portage/" + # This is my bootstrap script, which can cause damage if invoked by root again, so we remove it + - name: remove gentoostrap + file: path="/gentoostrap.sh" state=absent + when: ansible_os_family == "Gentoo" - name: configure pip3 packages pip: executable=/usr/bin/pip3 state=latest name="{{ desktop_pip3_packages + desktop_pip3_packages_extra }}"