diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3a2aa9e993002d953299194eb3f3ea1ddeaee0b4..c7e92e9767780286be6975fb5dbfae7dd32e2a42 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,4 +6,3 @@
     -   id: check-xml
     -   id: check-yaml
     -   id: check-merge-conflict
-    -   id: flake8
diff --git a/Vagrantfile b/Vagrantfile
deleted file mode 100644
index b69496a7f70c1fb52599f77b058b157dab3a75d4..0000000000000000000000000000000000000000
--- a/Vagrantfile
+++ /dev/null
@@ -1,79 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-# All Vagrant configuration is done below. The "2" in Vagrant.configure
-# configures the configuration version (we support older styles for
-# backwards compatibility). Please don't change it unless you know what
-# you're doing.
-Vagrant.configure(2) do |config|
-  # The most common configuration options are documented and commented below.
-  # For a complete reference, please see the online documentation at
-  # https://docs.vagrantup.com.
-
-  # Every Vagrant development environment requires a box. You can search for
-  # boxes at https://atlas.hashicorp.com/search.
-  config.vm.box = "debian/jessie64"
-
-  # Disable automatic box update checking. If you disable this, then
-  # boxes will only be checked for updates when the user runs
-  # `vagrant box outdated`. This is not recommended.
-  # config.vm.box_check_update = false
-
-  # Create a forwarded port mapping which allows access to a specific port
-  # within the machine from a port on the host machine. In the example below,
-  # accessing "localhost:8080" will access port 80 on the guest machine.
-  # config.vm.network "forwarded_port", guest: 80, host: 8080
-
-  # Create a private network, which allows host-only access to the machine
-  # using a specific IP.
-  # config.vm.network "private_network", ip: "192.168.33.10"
-
-  # Create a public network, which generally matched to bridged network.
-  # Bridged networks make the machine appear as another physical device on
-  # your network.
-  # config.vm.network "public_network"
-
-  # Share an additional folder to the guest VM. The first argument is
-  # the path on the host to the actual folder. The second argument is
-  # the path on the guest to mount the folder. And the optional third
-  # argument is a set of non-required options.
-  # config.vm.synced_folder "../data", "/vagrant_data"
-
-  # Provider-specific configuration so you can fine-tune various
-  # backing providers for Vagrant. These expose provider-specific options.
-  # Example for VirtualBox:
-  #
-  # config.vm.provider "virtualbox" do |vb|
-  #   # Display the VirtualBox GUI when booting the machine
-  #   vb.gui = true
-  #
-  #   # Customize the amount of memory on the VM:
-  #   vb.memory = "1024"
-  # end
-  #
-  # View the documentation for the provider you are using for more
-  # information on available options.
-
-  # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
-  # such as FTP and Heroku are also available. See the documentation at
-  # https://docs.vagrantup.com/v2/push/atlas.html for more information.
-  # config.push.define "atlas" do |push|
-  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
-  # end
-
-  # Enable provisioning with a shell script. Additional provisioners such as
-  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
-  # documentation for more information about their specific syntax and use.
-  # config.vm.provision "shell", inline: <<-SHELL
-  #   sudo apt-get update
-  #   sudo apt-get install -y apache2
-  # SHELL
-  config.vm.hostname = 'cgit'
-  config.vm.provision 'ansible' do |ansible|
-    ansible.playbook = 'playbook.yml'
-    ansible.sudo = true
-  end
-  config.vm.synced_folder "./", "/vagrant", disabled: true
-  config.vm.synced_folder 'git/', '/srv/git'
-  config.vm.network "forwarded_port", guest: 80, host: 8080
-end
diff --git a/fabfile.py b/fabfile.py
deleted file mode 100755
index ffd6f44ddc81a7c86dcc615c789487c08d316ef6..0000000000000000000000000000000000000000
--- a/fabfile.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from __future__ import (absolute_import, division,
-                        print_function, unicode_literals)
-from fabric.api import (task, env, run, cd)
-
-env.use_ssh_config = True
-
-
-@task
-def new_repo(name):
-    with cd('''/srv/git'''):
-        run('''mkdir ''' + name, warn_only=True)
-        run('''git init --bare ''' + name)
diff --git a/roles/cgit/handlers/main.yml b/handlers/main.yml
similarity index 100%
rename from roles/cgit/handlers/main.yml
rename to handlers/main.yml
diff --git a/playbook.yml b/playbook.yml
deleted file mode 100644
index 381afc9d26d3b173c7ce4750efbbdfe4d734ed85..0000000000000000000000000000000000000000
--- a/playbook.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts:
-    - all
-  roles:
-    - cgit
diff --git a/requirements.txt b/requirements.txt
index 022e4fe2fdd0544c9cd2cad0fc8ce6e93e69b9c3..416634f5288f7f60a9b9f68eb63afd0bed3443a2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1 @@
-ansible>=1.9
-Fabric
 pre-commit
-flake8
diff --git a/roles/cgit/tasks/main.yml b/tasks/main.yml
similarity index 100%
rename from roles/cgit/tasks/main.yml
rename to tasks/main.yml
diff --git a/roles/cgit/templates/cgit-css.conf.j2 b/templates/cgit-css.conf.j2
similarity index 100%
rename from roles/cgit/templates/cgit-css.conf.j2
rename to templates/cgit-css.conf.j2