# Configure package management.
- name: update package lists
apt: update_cache=yes
- - name: check for initial_purge_happened flag
- stat: path=flags/initial_purge_happened
- register: initial_purge
- - name: perform initial purge
- include: tasks/initial_purge.yml
- when: initial_purge.stat.exists == False
+ #- name: check for initial_purge_happened flag
+ # stat: path=flags/initial_purge_happened
+ # register: initial_purge
+ #- name: perform initial purge
+ # include: tasks/initial_purge.yml
+ # when: initial_purge.stat.exists == False
- name: APT - dist-upgrade
apt: upgrade=dist
+ # Upgrade kernel.
+ - name: ensure newest kernel and grub are installed
+ apt: name={{item}} state=present
+ with_items:
+ - linux-image-amd64
+ - grub2
+ - name: update grub
+ shell: update-grub
+
+ # Ensure power management.
+ - name: ensure power management tools are installed
+ apt: name={{item}} state=present
+ with_items:
+ - tlp
+ - acpi-call-dkms
+ - name: start TLP
+ shell: tlp start
+
# Configure console.
- name: symlink console config files
file: state=link force=yes src={{item}} dest={{item|basename|regex_replace('___','/')}}
- xserver-xorg-input-evdev # supports all input devices the kernel knows about
- xinit # contains startx
- libpam-systemd # needed to start X as non-root
- - name: ensure basic X tools
+ - name: ensure 3d acceleration and optimus switch
apt: name={{item}} state=present
with_items:
+ - linux-headers-amd64 # necessary to build proper nvidia-driver module
- libgl1-mesa-dri # necessary for OpenGL 3D acceleration to work
+ - libglu1-mesa # necessary for OpenGL 3D acceleration to work
+ - bumblebee-nvidia
+ - primus
+ - name: ensure basic X tools
+ apt: name={{item}} state=present
+ with_items:
- xterm
- x11-xserver-utils # includes xrdb which applies .Xresources files
- redshift
- xul-ext-noscript
- xul-ext-pentadactyl
- vim-gtk # used by pentadactyl for text editing
+
+ # Remove undesired packages
+ - name: collect required packages
+ shell: cat files/apt-mark/* > /tmp/white_list_unsorted && sort /tmp/white_list_unsorted > /tmp/white_list_sorted
+ - name: collect currently installed packages
+ shell: dpkg-query -Wf '${Package}\n' > /tmp/all_unsorted && sort /tmp/all_unsorted > /tmp/all_sorted
+ - name: create black list of packages to mark as automatically installed from the difference between the required packages and the packages currently installed
+ shell: comm -3 /tmp/all_sorted /tmp/white_list_sorted > /tmp/list_black
+ - name: mark all packages from black list as automatically installed
+ shell: apt-mark auto $(cat /tmp/list_black)
+ - name: purge all packages automatically installed that are not depended on
+ shell: DEBIAN_FRONTEND=noninteractive apt-get -y --purge autoremove