├── .gitignore ├── hosts ├── roles ├── slack │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── slack_installer.yml │ │ └── main.yml ├── spotify │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── aws │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── asciinema │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── npm_modules │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── main.yml │ │ └── npm_modules.yml ├── vlc │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── main.yml │ │ └── vlc_installer.yml ├── flathub │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── golang │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── packages │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── update_pkgs.yml │ │ ├── main.yml │ │ └── install_pkgs.yml ├── steam │ ├── meta │ │ └── main.yml │ └── tasks │ │ ├── main.yml │ │ └── steam_installer.yml ├── redshift │ ├── files │ │ └── redshift.conf │ └── tasks │ │ ├── redshift_gnome_shell_extension.yml │ │ ├── main.yml │ │ └── redshift_installer.yml ├── goenv │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── pyenv │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── 1password_op │ ├── tasks │ │ ├── main.yml │ │ └── 1password_op_installer.yml │ └── templates │ │ └── slack.desktop ├── awless │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── translator-cli │ └── tasks │ │ ├── main.yml │ │ └── translator-cli_installer.yml ├── workflowy │ └── tasks │ │ ├── main.yml │ │ └── installer.yml ├── hstr │ ├── readme.md │ └── tasks │ │ ├── main.yml │ │ └── hstr_installer.yml ├── exercism.io │ └── tasks │ │ ├── main.yml │ │ └── exercism_installer.yml ├── git │ ├── tasks │ │ ├── main.yml │ │ └── configure_git.yml │ └── templates │ │ └── gitconfig ├── google-chrome │ ├── defaults │ │ └── main.yml │ ├── tasks │ │ ├── main.yml │ │ └── google-chrome_installer.yml │ ├── templates │ │ └── google-chrome.repo │ └── files │ │ └── workflowy.desktop ├── intellij │ └── tasks │ │ ├── main.yml │ │ └── intellij_installer.yml ├── npm │ └── tasks │ │ ├── main.yml │ │ └── npm_installer.yml ├── ntp │ └── tasks │ │ ├── main.yml │ │ └── ntp_installer.yml ├── prepare_env │ └── tasks │ │ ├── main.yml │ │ └── prepare_env.yml ├── sysdig │ └── tasks │ │ ├── main.yml │ │ └── sysdig_installer.yml ├── fonts │ └── tasks │ │ ├── main.yml │ │ └── fonts_installer.yml ├── ssh-config │ └── tasks │ │ ├── main.yml │ │ └── ssh-config.yml ├── gitkraken │ ├── files │ │ └── gitkraken.jpg │ ├── tasks │ │ ├── main.yml │ │ └── gitkraken_installer.yml │ └── templates │ │ └── gitkraken.desktop.j2 ├── hipchat │ ├── tasks │ │ ├── main.yml │ │ └── hipchat_installer.yml │ └── files │ │ └── hipchat4.repo ├── keybase │ └── tasks │ │ ├── main.yml │ │ └── keybase_installer.yml ├── hashicorp_packer │ └── tasks │ │ ├── main.yml │ │ └── packer_installer.yml ├── tmux │ ├── tasks │ │ ├── main.yml │ │ ├── tmux_installer.yml │ │ └── tmux_fix_less.yml │ └── files │ │ └── infocmp.sh ├── docker │ └── tasks │ │ ├── main.yml │ │ └── docker_installer.yml ├── guake │ ├── tasks │ │ ├── main.yml │ │ └── guake_installer.yml │ └── templates │ │ └── guake.desktop ├── skype │ └── tasks │ │ ├── main.yml │ │ └── skype_installer.yml ├── dropbox │ ├── tasks │ │ ├── main.yml │ │ └── dropbox_installer.yml │ ├── defaults │ │ └── main.yml │ └── templates │ │ └── dropbox.repo ├── firefox │ ├── tasks │ │ ├── main.yml │ │ └── firefox_installer.yml │ └── files │ │ └── userContent.css ├── libvirt │ └── tasks │ │ ├── main.yml │ │ └── libvirt_installer.yml ├── evernote │ └── tasks │ │ ├── main.yml │ │ └── evernote_installer.yml ├── oh-my-zsh │ └── tasks │ │ ├── main.yml │ │ └── oh-my-zsh_installer.yml ├── prepare-dotcfgs │ └── tasks │ │ ├── main.yml │ │ └── dotcfgs_installer.yml ├── repo_rpmfusion │ └── tasks │ │ ├── main.yml │ │ └── rpmfussion_installer.yml ├── wireshark │ └── tasks │ │ ├── main.yml │ │ └── wireshark_installer.yml ├── libreoffice │ └── tasks │ │ ├── main.yml │ │ └── libreoffice_installer.yml ├── pycharm │ └── tasks │ │ ├── main.yml │ │ └── pycharm_installer.yml ├── tmuxinator │ └── tasks │ │ ├── main.yml │ │ └── tmuxinator_installer.yml ├── virtualbox │ └── tasks │ │ ├── main.yml │ │ └── virtualbox_installer.yml ├── vim │ └── tasks │ │ ├── main.yml │ │ └── vim_installer.yml ├── gitter │ ├── tasks │ │ ├── main.yml │ │ └── gitter_installer.yml │ └── templates │ │ └── gitter.desktop └── hashicorp_terraform │ └── tasks │ ├── main.yml │ ├── tfenv_installer.yml │ └── terraform_installer.yml ├── ansible.cfg ├── group_vars └── all.yml ├── fedex.yml ├── fedwise.yml ├── master.yml ├── readme.md └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | *swp 2 | .idea 3 | -------------------------------------------------------------------------------- /hosts: -------------------------------------------------------------------------------- 1 | [local] 2 | fedex ansible_ssh_host=localhost 3 | -------------------------------------------------------------------------------- /roles/slack/meta/main.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - { role: flathub } 3 | -------------------------------------------------------------------------------- /roles/spotify/meta/main.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - { role: flathub } 3 | -------------------------------------------------------------------------------- /roles/aws/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: aws 4 | -------------------------------------------------------------------------------- /roles/asciinema/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - { role: 'npm' } 4 | -------------------------------------------------------------------------------- /roles/npm_modules/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - { role: 'npm' } 4 | -------------------------------------------------------------------------------- /roles/vlc/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - { role: repo_rpmfusion } 4 | -------------------------------------------------------------------------------- /roles/flathub/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: flathub 4 | -------------------------------------------------------------------------------- /roles/golang/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - golang -------------------------------------------------------------------------------- /roles/packages/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - { role: repo_rpmfusion } 4 | -------------------------------------------------------------------------------- /roles/spotify/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: spotify 4 | -------------------------------------------------------------------------------- /roles/steam/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - { role: repo_rpmfusion } 4 | -------------------------------------------------------------------------------- /roles/redshift/files/redshift.conf: -------------------------------------------------------------------------------- 1 | [redshift] 2 | allowed=true 3 | system=false 4 | users= 5 | -------------------------------------------------------------------------------- /roles/goenv/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - golang 5 | - goenv -------------------------------------------------------------------------------- /roles/npm_modules/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: npm_modules.yml 3 | tags: 4 | - npm_modules 5 | -------------------------------------------------------------------------------- /roles/pyenv/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - python 5 | - pyenv -------------------------------------------------------------------------------- /roles/1password_op/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: 1password_op_installer.yml 3 | tags: 1password 4 | -------------------------------------------------------------------------------- /roles/asciinema/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - asciinema 5 | - installation -------------------------------------------------------------------------------- /roles/awless/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - awless 5 | - installation 6 | -------------------------------------------------------------------------------- /roles/packages/tasks/update_pkgs.yml: -------------------------------------------------------------------------------- 1 | - name: Update all packages 2 | dnf: name=* state=latest 3 | tags: pkgs 4 | -------------------------------------------------------------------------------- /roles/translator-cli/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: translator-cli_installer.yml 3 | tags: translator-cli 4 | -------------------------------------------------------------------------------- /roles/workflowy/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: installer.yml 3 | tags: 4 | - workflowy 5 | - installation 6 | -------------------------------------------------------------------------------- /roles/hstr/readme.md: -------------------------------------------------------------------------------- 1 | # HSTR role # 2 | 3 | This is all about shell [history viewer](https://github.com/dvorka/hstr) 4 | -------------------------------------------------------------------------------- /roles/exercism.io/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: exercism_installer.yml 3 | tags: 4 | - exercism 5 | - installation 6 | -------------------------------------------------------------------------------- /roles/git/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes git configurator 3 | - include: configure_git.yml 4 | tags: git 5 | -------------------------------------------------------------------------------- /roles/google-chrome/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | gchrome: 3 | repokey: https://dl-ssl.google.com/linux/linux_signing_key.pub 4 | -------------------------------------------------------------------------------- /roles/intellij/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: intellij_installer.yml 3 | tags: 4 | - intellij 5 | - installation 6 | -------------------------------------------------------------------------------- /roles/npm/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes npm installer 3 | - include: npm_installer.yml 4 | tags: npm 5 | -------------------------------------------------------------------------------- /roles/ntp/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes ntp installer 3 | - include: ntp_installer.yml 4 | tags: ntp 5 | -------------------------------------------------------------------------------- /roles/prepare_env/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook prepares env 3 | - include: prepare_env.yml 4 | tags: prepare_env 5 | -------------------------------------------------------------------------------- /roles/sysdig/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Sysdig 3 | - include: sysdig_installer.yml 4 | tags: sysdig 5 | -------------------------------------------------------------------------------- /roles/fonts/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes fonts playbook 3 | - include: fonts_installer.yml 4 | tags: fonts 5 | -------------------------------------------------------------------------------- /roles/npm/tasks/npm_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs npm 3 | - name: Install npm 4 | dnf: name=npm state=present 5 | -------------------------------------------------------------------------------- /roles/steam/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Steam installer 3 | - include: steam_installer.yml 4 | tags: steam 5 | -------------------------------------------------------------------------------- /roles/ssh-config/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook configures all ssh stuff 3 | - include: ssh-config.yml 4 | tags: ssh-config 5 | -------------------------------------------------------------------------------- /roles/gitkraken/files/gitkraken.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docent-net/fedora-desktop-ansible/HEAD/roles/gitkraken/files/gitkraken.jpg -------------------------------------------------------------------------------- /roles/hipchat/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes hipchat installer 3 | - include: hipchat_installer.yml 4 | tags: hipchat 5 | -------------------------------------------------------------------------------- /roles/keybase/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes keybase installer 3 | - include: keybase_installer.yml 4 | tags: keybase 5 | -------------------------------------------------------------------------------- /roles/vlc/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes VLC installer and configurator 3 | - include: vlc_installer.yml 4 | tags: vlc 5 | -------------------------------------------------------------------------------- /roles/hashicorp_packer/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include: packer_installer.yml 3 | tags: 4 | - packer 5 | - hashicorp 6 | - installation 7 | -------------------------------------------------------------------------------- /roles/hstr/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes HSTR installer and configurator 3 | - include: hstr_installer.yml 4 | tags: hstr 5 | -------------------------------------------------------------------------------- /roles/tmux/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes tmux installer and configurator 3 | - include: tmux_installer.yml 4 | tags: tmux 5 | -------------------------------------------------------------------------------- /roles/docker/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Docker installer and configurator 3 | - include: docker_installer.yml 4 | tags: docker 5 | -------------------------------------------------------------------------------- /roles/guake/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Guake installer and configurator 3 | - include: guake_installer.yml 4 | tags: guake 5 | -------------------------------------------------------------------------------- /roles/skype/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Skype installer and configurator 3 | - include: skype_installer.yml 4 | tags: skype 5 | -------------------------------------------------------------------------------- /roles/vlc/tasks/vlc_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs VLC player 3 | 4 | - name: Install VLC package 5 | dnf: name=vlc state=latest 6 | -------------------------------------------------------------------------------- /roles/dropbox/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Dropbox installer and configurator 3 | - include: dropbox_installer.yml 4 | tags: dropbox 5 | -------------------------------------------------------------------------------- /roles/firefox/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Firefox installer and configurator 3 | - include: firefox_installer.yml 4 | tags: firefox 5 | -------------------------------------------------------------------------------- /roles/libvirt/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes libvirt installer and configurator 3 | - include: libvirt_installer.yml 4 | tags: libvirt 5 | -------------------------------------------------------------------------------- /roles/steam/tasks/steam_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Steam 3 | 4 | - name: Install Steam package 5 | dnf: name=steam state=present 6 | -------------------------------------------------------------------------------- /roles/dropbox/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Dropbox default configuration 3 | 4 | dropbox: 5 | repokey: http://linux.dropbox.com/fedora/rpm-public-key.asc 6 | -------------------------------------------------------------------------------- /roles/dropbox/templates/dropbox.repo: -------------------------------------------------------------------------------- 1 | [Dropbox] 2 | name=Dropbox Repository 3 | baseurl=http://linux.dropbox.com/fedora/$releasever/ 4 | gpgkey={{ dropbox.repokey }} 5 | -------------------------------------------------------------------------------- /roles/evernote/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes evernote installer 3 | - include: evernote_installer.yml 4 | tags: 5 | - evernote 6 | - nixnote 7 | -------------------------------------------------------------------------------- /roles/oh-my-zsh/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes oh-my-zsh installer and configurator 3 | - include: oh-my-zsh_installer.yml 4 | tags: oh-my-zsh 5 | -------------------------------------------------------------------------------- /roles/prepare-dotcfgs/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes dotcfgs installer and configurator 3 | - include: dotcfgs_installer.yml 4 | tags: dotcfgs 5 | -------------------------------------------------------------------------------- /roles/repo_rpmfusion/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes RPMFussion repo installer 3 | - include: rpmfussion_installer.yml 4 | tags: repo_rpmfussion 5 | -------------------------------------------------------------------------------- /roles/slack/tasks/slack_installer.yml: -------------------------------------------------------------------------------- 1 | - name: Install Slack from Flathub 2 | flatpak: 3 | name: com.slack.Slack 4 | state: present 5 | method: user 6 | -------------------------------------------------------------------------------- /roles/wireshark/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Wireshark installer and configurator 3 | - include: wireshark_installer.yml 4 | tags: wireshark 5 | -------------------------------------------------------------------------------- /roles/libreoffice/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes LibreOffice installer and configurator 3 | - include: libreoffice_installer.yml 4 | tags: libreoffice 5 | -------------------------------------------------------------------------------- /roles/pycharm/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes pycharm installer 3 | - include: pycharm_installer.yml 4 | tags: 5 | - pycharm 6 | - installation 7 | -------------------------------------------------------------------------------- /roles/spotify/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Slack from Flathub 3 | flatpak: 4 | name: com.spotify.Client 5 | state: present 6 | method: user 7 | -------------------------------------------------------------------------------- /roles/tmuxinator/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Tmuxinator installer and configurator 3 | - include: tmuxinator_installer.yml 4 | tags: tmuxinator 5 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Virtualbox installer and configurator 3 | - include: virtualbox_installer.yml 4 | tags: virtualbox 5 | -------------------------------------------------------------------------------- /roles/gitkraken/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes gitkraken installer 3 | - include: gitkraken_installer.yml 4 | tags: 5 | - gitkraken 6 | - installation 7 | -------------------------------------------------------------------------------- /roles/npm_modules/tasks/npm_modules.yml: -------------------------------------------------------------------------------- 1 | - name: Install npm modules 2 | npm: 3 | name: "{{ item }}" 4 | global: yes 5 | state: latest 6 | loop: 7 | - how2 8 | -------------------------------------------------------------------------------- /roles/tmuxinator/tasks/tmuxinator_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Tmuxinator 3 | 4 | - name: Install prerequisites 5 | dnf: name=tmuxinator state=latest 6 | -------------------------------------------------------------------------------- /roles/vim/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Vim (including Ultimate vimrc) installer and 3 | # configurator 4 | - include: vim_installer.yml 5 | tags: vim 6 | -------------------------------------------------------------------------------- /roles/google-chrome/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Google-Chrome installer and configurator 3 | - include: google-chrome_installer.yml 4 | tags: google-chrome 5 | 6 | -------------------------------------------------------------------------------- /roles/hipchat/files/hipchat4.repo: -------------------------------------------------------------------------------- 1 | [atlassian-hipchat4] 2 | name=Atlassian Hipchat4 3 | baseurl=https://atlassian.artifactoryonline.com/atlassian/hipchat-yum-client/ 4 | enabled=1 5 | gpgcheck=0 -------------------------------------------------------------------------------- /roles/slack/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes slack installer 3 | # check https://github.com/plaidchat/plaidchat for details 4 | - include: slack_installer.yml 5 | tags: slack 6 | -------------------------------------------------------------------------------- /roles/packages/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes packages installers 3 | - include: update_pkgs.yml 4 | tags: pkgs,update 5 | 6 | - include: install_pkgs.yml 7 | tags: pkgs,install 8 | -------------------------------------------------------------------------------- /roles/guake/templates/guake.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Exec=/usr/bin/guake 4 | Hidden=false 5 | X-GNOME-Autostart-enabled=true 6 | Name[en_US]=Guake 7 | Name=Guake 8 | Comment=Guake 9 | -------------------------------------------------------------------------------- /roles/keybase/tasks/keybase_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs keybase 3 | 4 | - name: Install keybase package 5 | dnf: name=https://prerelease.keybase.io/keybase_amd64.rpm state=present 6 | -------------------------------------------------------------------------------- /roles/1password_op/templates/slack.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Slack 5 | Icon={{ home_dir }}/.slack-tray.png 6 | Exec="/usr/bin/plaidchat" 7 | Comment=Slack 8 | Terminal=false 9 | -------------------------------------------------------------------------------- /roles/aws/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs libs required for working w/AWS 3 | - name: Install pip libs 4 | pip: > 5 | name="{{ item }}" 6 | state=present 7 | with_items: 8 | - awscli 9 | -------------------------------------------------------------------------------- /roles/asciinema/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs asciinemar - a terminal session recorder 3 | # https://asciinema.org 4 | 5 | - name: Install asciinema 6 | dnf: 7 | name: asciinema 8 | state: present -------------------------------------------------------------------------------- /roles/flathub/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | - name: Enable Flathub repository 2 | flatpak_remote: 3 | name: flathub 4 | state: present 5 | flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo 6 | method: user 7 | -------------------------------------------------------------------------------- /roles/gitter/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes gitter installer 3 | # main problem with gitter on Fedora is lack of Gitter packages (only debs) 4 | # so let's simply unpack deb 5 | - include: gitter_installer.yml 6 | tags: gitter 7 | -------------------------------------------------------------------------------- /roles/ntp/tasks/ntp_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs and enable ntp client 3 | 4 | - name: Install ntp package 5 | dnf: name=ntp state=present 6 | 7 | - name: Enable ntpd service 8 | service: name=ntpd state=started enabled=yes 9 | -------------------------------------------------------------------------------- /roles/gitkraken/templates/gitkraken.desktop.j2: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Encoding=UTF-8 4 | Name=GitKraken 5 | Comment=GitKraken 6 | Exec={{ local_soft_dir }}/GitKraken/gitkraken 7 | Icon={{ local_soft_dir }}/GitKraken/gitkraken.jpg 8 | Terminal=false -------------------------------------------------------------------------------- /roles/google-chrome/templates/google-chrome.repo: -------------------------------------------------------------------------------- 1 | [google-chrome] 2 | name=google-chrome - $basearch 3 | baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch 4 | enabled=1 5 | gpgcheck=1 6 | gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub 7 | -------------------------------------------------------------------------------- /roles/fonts/tasks/fonts_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs fonts packages on Fedora 3 | 4 | - name: Install fonts pkgs 5 | dnf: > 6 | name={{ item }} 7 | state=latest 8 | with_items: 9 | - terminus-fonts 10 | - terminus-fonts-console 11 | -------------------------------------------------------------------------------- /roles/gitter/templates/gitter.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Gitter 3 | Comment=Where developers come to talk 4 | Exec={{ local_soft_dir }}/gitter/linux64/Gitter 5 | Icon={{ local_soft_dir }}/gitter/linux64/logo.png 6 | Terminal=false 7 | Type=Application 8 | Categories=Utility; 9 | -------------------------------------------------------------------------------- /roles/golang/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install pkgs 3 | dnf: 4 | name: "{{ go_pkgs }}" 5 | state: present 6 | vars: 7 | go_pkgs: 8 | - golang-golangorg-tools-devel 9 | - golang 10 | - golang-src 11 | - golang-googlecode-tools-goimports -------------------------------------------------------------------------------- /roles/git/tasks/configure_git.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install prerequisites 3 | dnf: name=meld state=latest 4 | - name: Configure git 5 | template: 6 | dest={{ home_dir }}/.gitconfig 7 | src=gitconfig 8 | owner={{ user }} 9 | group={{ group }} 10 | mode=0600 11 | -------------------------------------------------------------------------------- /roles/redshift/tasks/redshift_gnome_shell_extension.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Enable COPR repo 3 | shell: dnf copr enable mystro256/gnome-redshift -y 4 | 5 | - name: Install pkgs 6 | dnf: 7 | name: gnome-shell-extension-redshift 8 | state: installed 9 | -------------------------------------------------------------------------------- /roles/hashicorp_terraform/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # for now I use tfenv for working with Terraform 3 | #- include: terraform_installer.yml 4 | # tags: 5 | # - terraform 6 | # - hashicorp 7 | # - installation 8 | 9 | - include: tfenv_installer.yml 10 | tags: 11 | - terraform 12 | - tfenv 13 | - installation 14 | -------------------------------------------------------------------------------- /roles/hipchat/tasks/hipchat_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create Hipchat repo 3 | copy: 4 | src=hipchat4.repo 5 | dest=/etc/yum.repos.d/hipchat4.repo 6 | owner=root 7 | group=root 8 | mode=0600 9 | 10 | - name: Install Hipchat chipchat 11 | dnf: > 12 | name=hipchat4 13 | state=latest 14 | -------------------------------------------------------------------------------- /roles/tmux/tasks/tmux_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Tmux 3 | 4 | - name: Install prerequisites 5 | dnf: name=tmux state=latest 6 | 7 | # Fix background color highlightning: 8 | # see http://stackoverflow.com/questions/10535432/tmux-man-page-search-highlighting for details 9 | - include: tmux_fix_less.yml 10 | -------------------------------------------------------------------------------- /roles/wireshark/tasks/wireshark_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Wireshark 3 | 4 | - name: Install packages 5 | dnf: name={{ item }} state=latest 6 | with_items: 7 | - wireshark 8 | - wireshark-gtk 9 | - wireshark-qt 10 | - wireshark-cli 11 | 12 | - name: Add user to wireshark group 13 | command: usermod -a -G wireshark {{ user }} 14 | -------------------------------------------------------------------------------- /roles/libvirt/tasks/libvirt_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs libvirt 3 | 4 | - name: Install required packages 5 | dnf: name={{ item }} state=latest 6 | with_items: 7 | - libvirt 8 | - libvirt-python 9 | - virt-top 10 | - qemu-kvm 11 | 12 | - name: Enable libvirt service 13 | service: > 14 | name=libvirtd 15 | state=started 16 | enabled=yes 17 | -------------------------------------------------------------------------------- /ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | inventory = hosts 3 | roles_path = roles 4 | remote_tmp = $HOME/.ansible/tmp 5 | pattern = * 6 | forks = 5 7 | poll_interval = 15 8 | become_user = root 9 | transport = smart 10 | module_lang = C 11 | 12 | timeout = 10 13 | 14 | ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} 15 | nocows = 1 16 | -------------------------------------------------------------------------------- /roles/ssh-config/tasks/ssh-config.yml: -------------------------------------------------------------------------------- 1 | - name: Create ssh temporary dir 2 | file: > 3 | path={{ home_dir }}/.ssh/tmp 4 | state=directory 5 | owner={{ user }} 6 | group={{ group }} 7 | mode=0700 8 | 9 | - name: Make sure ssh config has proper permissions 10 | file: > 11 | path={{ home_dir }}/git/dotcfgs/ssh/config 12 | owner={{ user }} 13 | group={{ group }} 14 | mode=0600 15 | -------------------------------------------------------------------------------- /roles/skype/tasks/skype_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Skype 3 | 4 | - name: Download Skype installer 5 | get_url: 6 | url=http://www.skype.com/go/getskype-linux-beta-fc10 7 | dest=/tmp/skype.rpm 8 | 9 | - name: Install Skype package 10 | dnf: name=/tmp/skype.rpm state=present 11 | register: output 12 | 13 | - debug: msg="Skype installed; now configure manually" 14 | when: output.rc == 1 15 | -------------------------------------------------------------------------------- /roles/tmux/files/infocmp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | screen_terminfo="screen-256color" 4 | infocmp "$screen_terminfo" | sed \ 5 | -e 's/^screen[^|]*|[^,]*,/screen-256color|screen with italics support,/' \ 6 | -e 's/%?%p1%t;3%/%?%p1%t;7%/' \ 7 | -e 's/smso=[^,]*,/smso=\\E[7m,/' \ 8 | -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \ 9 | -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo 10 | 11 | tic /tmp/screen.terminfo -------------------------------------------------------------------------------- /roles/prepare_env/tasks/prepare_env.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Preparing environment 3 | 4 | - name: create required directories 5 | file: 6 | path: "{{ item }}" 7 | state: directory 8 | with_items: 9 | - "{{ temp_dir }}" 10 | - "{{ local_soft_dir }}" 11 | - "{{ local_bin_dir }}" 12 | 13 | - name: Set vm.swappiness 14 | sysctl: 15 | name: vm.swappiness 16 | value: "{{ sys.vm.swappiness }}" 17 | state: present 18 | -------------------------------------------------------------------------------- /roles/redshift/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # this playbook includes Redshift-GTK playbook 3 | # check http://jonls.dk/redshift/ for details 4 | - include: redshift_installer.yml 5 | tags: redshift 6 | 7 | # Unfortunately redshift doesn't work on Wayland, so following 8 | # https://fedoramagazine.org/safe-eyes-redshift/ we need to install 9 | # gnome-shell-extension: 10 | - include: redshift_gnome_shell_extension.yml 11 | tags: redshift 12 | -------------------------------------------------------------------------------- /roles/dropbox/tasks/dropbox_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Dropbox 3 | 4 | - name: Create Dropbox repo 5 | template: 6 | src=dropbox.repo 7 | dest=/etc/yum.repos.d/dropbox.repo 8 | owner=root 9 | group=root 10 | mode=0600 11 | 12 | - name: Import GPG key for this repo 13 | command: rpm --import {{ dropbox.repokey }} 14 | 15 | - name: Install Dropbox package 16 | dnf: name=nautilus-dropbox state=latest 17 | -------------------------------------------------------------------------------- /roles/google-chrome/tasks/google-chrome_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Google-Chrome 3 | 4 | - name: Create Google-Chrome repo 5 | template: 6 | src=google-chrome.repo 7 | dest=/etc/yum.repos.d/google-chrome.repo 8 | owner=root 9 | group=root 10 | mode=0600 11 | 12 | - name: Import GPG key for this repo 13 | command: rpm --import {{ gchrome.repokey }} 14 | 15 | - name: Install Google-Chrome package 16 | dnf: name=google-chrome state=latest -------------------------------------------------------------------------------- /roles/libreoffice/tasks/libreoffice_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs LibreOffice 3 | 4 | - name: Install packages 5 | dnf: name={{ item }} state=latest 6 | with_items: 7 | - libreoffice 8 | - libreoffice-langpack-pl 9 | - libreoffice-calc 10 | - libreoffice-impress 11 | - libreoffice-writer 12 | - libreoffice-draw 13 | 14 | # TODO: automate installation of vrt network equipment icons: http://www.vrt.com.au/downloads/vrt-network-equipment 15 | -------------------------------------------------------------------------------- /roles/guake/tasks/guake_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Guake 3 | 4 | - name: Install Guake package 5 | dnf: name=guake state=latest 6 | 7 | - name: Ensure autostart dir exists 8 | file: > 9 | path={{ home_dir }}/.config/autostart 10 | state=directory 11 | mode=0700 12 | owner=docent 13 | group=docent 14 | 15 | - name: Add guake to Gnome3 autostart 16 | template: 17 | src=guake.desktop 18 | dest={{ home_dir }}/.config/autostart/guake.desktop 19 | mode=0600 20 | owner=docent 21 | group=docent 22 | -------------------------------------------------------------------------------- /group_vars/all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Please adjust following varibles to fit your environment: 3 | 4 | temp_dir: /tmp # temporary dir for downoaded files 5 | user: docent # your user 6 | group: docent # your user's primary group 7 | home_dir: /home/docent # your user's homedir 8 | local_soft_dir: /home/docent/soft # where to save local installations of software 9 | local_bin_dir: /home/docent/bin # local bin directory for various binaries 10 | git: 11 | username: Maciej Lasyk # your git Name 12 | email: maciej@lasyk.info # your git e-mail address 13 | 14 | sys: 15 | vm: 16 | swappiness: 10 17 | -------------------------------------------------------------------------------- /roles/google-chrome/files/workflowy.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=Workflowy 4 | Comment=Organize your brain 5 | Exec=/usr/bin/google-chrome-unstable --app-id=koegeopamaoljbmhnfjbclbocehhgmkm 6 | Terminal=false 7 | Icon=google-chrome-unstable 8 | Type=Application 9 | Categories=Network;WebBrowser; 10 | MimeType=text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; 11 | X-Ayatana-Desktop-Shortcuts=NewWindow;NewIncognito 12 | 13 | [Workflowy Shortcut Group] 14 | Name=Workflowy 15 | Exec=/usr/bin/google-chrome-unstable --app-id=koegeopamaoljbmhnfjbclbocehhgmkm 16 | TargetEnvironment=Unity -------------------------------------------------------------------------------- /roles/sysdig/tasks/sysdig_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Sysdig 3 | 4 | - name: make sure curl is installed 5 | dnf: name=curl state=present 6 | 7 | - name: Install Draios GPG key 8 | shell: rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public 9 | 10 | - name: Install Draios repo 11 | shell: curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo 12 | 13 | - name: Get current Kernel version 14 | shell: uname -r 15 | register: kernel_version 16 | 17 | - name: Install kernel-devel package 18 | dnf: name=kernel-devel-{{ kernel_version.stdout }} 19 | 20 | - name: Install Sysdig package 21 | dnf: name=sysdig state=present 22 | -------------------------------------------------------------------------------- /roles/evernote/tasks/evernote_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This role will install ninote2 as well as Quentier 3 | # I started using the latter as nixnote2 stopped working on Fedora28 4 | # (see: https://github.com/baumgarr/nixnote2/issues/439) 5 | 6 | # dnf module cannot manage COPR repos :( 7 | - name: Enable COPR repo 8 | shell: dnf copr enable nunodias/nixnote2 -y 9 | 10 | - name: Install pkg 11 | dnf: > 12 | name=nixnote2 13 | state=latest 14 | 15 | - name: Enable Quentier repo 16 | shell: dnf config-manager --add-repo https://download.opensuse.org/repositories/home:d1vanov:quentier-master/Fedora_28/home:d1vanov:quentier-master.repo 17 | 18 | - name: Install pkg 19 | dnf: 20 | name: quentier 21 | state: latest 22 | -------------------------------------------------------------------------------- /roles/oh-my-zsh/tasks/oh-my-zsh_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs oh-my-zsh 3 | # https://github.com/robbyrussell/oh-my-zsh 4 | 5 | - name: Clone oh-my-zsh files 6 | git: 7 | repo=https://github.com/robbyrussell/oh-my-zsh.git 8 | dest={{home_dir}}/.oh-my-zsh 9 | 10 | - name: Create default config 11 | command: cp {{ home_dir }}/.oh-my-zsh/templates/zshrc.zsh-template {{ home_dir }}/.zshrc 12 | 13 | - name: Set owner and perms 14 | file: 15 | path={{ home_dir }}/.oh-my-zsh 16 | mode=0700 17 | owner={{ user }} 18 | group={{ group }} 19 | 20 | - name: Make sure zsh is installed 21 | dnf: name=zsh state=latest 22 | 23 | - name: Set ZSH as default shell for the user 24 | command: usermod -s /usr/bin/zsh {{ user }} 25 | -------------------------------------------------------------------------------- /roles/repo_rpmfusion/tasks/rpmfussion_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs RPMFussion repository 3 | 4 | - name: Get Fedora version 5 | shell: rpm -E %fedora 6 | register: version 7 | 8 | - name: Download RPMFusion package 1 9 | get_url: > 10 | url=http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ version.stdout }}.noarch.rpm 11 | dest=/tmp/rpmfusion.rpm 12 | 13 | - name: Install RPMFusion package 1 14 | dnf: name=/tmp/rpmfusion.rpm state=present 15 | 16 | - name: Download RPMFusion package 2 17 | get_url: > 18 | url=http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ version.stdout }}.noarch.rpm 19 | dest=/tmp/rpmfusion2.rpm 20 | 21 | - name: Install RPMFusion package 2 22 | dnf: name=/tmp/rpmfusion2.rpm state=present 23 | -------------------------------------------------------------------------------- /roles/translator-cli/tasks/translator-cli_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs translator-cli 3 | 4 | - name: Create directories 5 | file: 6 | path=/home/{{ user }}/{{ item }} 7 | state=directory 8 | owner={{ user }} 9 | group={{ group }} 10 | mode=0700 11 | with_items: 12 | - tmp 13 | - bin 14 | 15 | - name: Clone repo 16 | git: 17 | repo=https://github.com/docent-net/translator-cli.git 18 | dest=/home/{{ user }}/tmp/translator-cli 19 | force=yes 20 | 21 | - name: Copy the translator script 22 | command: mv /home/{{ user }}/tmp/translator-cli/trans.py /home/{{ user }}/bin/trans.py 23 | 24 | - name: Make script executable 25 | file: 26 | path=/home/{{ user }}/bin/trans.py 27 | mode=0700 28 | owner={{ user }} 29 | group={{ group }} -------------------------------------------------------------------------------- /fedex.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Fedwise provisioner 3 | gather_facts: false 4 | hosts: localhost 5 | become: yes 6 | 7 | roles: 8 | - prepare_env 9 | - vim 10 | - prepare-dotcfgs 11 | - ssh-config 12 | - packages 13 | - git 14 | - oh-my-zsh 15 | - tmux 16 | - tmuxinator 17 | - guake 18 | - libreoffice 19 | - vlc 20 | - firefox 21 | - google-chrome 22 | - hstr 23 | - wireshark 24 | - sysdig 25 | - slack 26 | - fonts 27 | - redshift 28 | - libvirt 29 | - ntp 30 | - translator-cli 31 | - npm 32 | - npm_modules 33 | - evernote 34 | - intellij 35 | - aws 36 | - keybase 37 | - hashicorp_packer 38 | - hashicorp_terraform 39 | - 1password_op 40 | - pycharm 41 | - spotify 42 | - slack 43 | - workflowy 44 | - pyenv 45 | - asciinema 46 | - golang 47 | - goenv -------------------------------------------------------------------------------- /fedwise.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Fedwise provisioner 3 | gather_facts: false 4 | hosts: localhost 5 | become: yes 6 | 7 | roles: 8 | - prepare_env 9 | - vim 10 | - prepare-dotcfgs 11 | - ssh-config 12 | - packages 13 | - git 14 | - oh-my-zsh 15 | - tmux 16 | - tmuxinator 17 | - guake 18 | - libreoffice 19 | - vlc 20 | - firefox 21 | - virtualbox 22 | - google-chrome 23 | - docker 24 | - hstr 25 | - wireshark 26 | - sysdig 27 | - slack 28 | - fonts 29 | - redshift 30 | - libvirt 31 | - ntp 32 | - translator-cli 33 | - npm 34 | - npm_modules 35 | - evernote 36 | - intellij 37 | - aws 38 | - keybase 39 | - hashicorp_packer 40 | - hashicorp_terraform 41 | - 1password_op 42 | - spotify 43 | - slack 44 | - workflowy 45 | - pyenv 46 | - asciinema 47 | - golang 48 | - goenv 49 | -------------------------------------------------------------------------------- /roles/docker/tasks/docker_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Docker 3 | 4 | - name: Install Docker package 5 | dnf: name=docker-io state=latest 6 | 7 | - name: Create docker group 8 | group: 9 | name=docker 10 | state=present 11 | 12 | - name: Add user to docker group 13 | command: usermod -a -G docker {{ user }} 14 | 15 | - name: Enable docker service 16 | service: 17 | name=docker 18 | enabled=yes 19 | 20 | #- name: Switch to OverlayFS storage backend 21 | # lineinfile: 22 | # dest=/etc/sysconfig/docker-storage 23 | # state=present 24 | # regexp="^DOCKER_STORAGE_OPTIONS=(.*)(--storage-driver=.*\s*)*(.*)$" 25 | # line='DOCKER_STORAGE_OPTIONS=\1 --storage-driver=overlay \3' 26 | # backrefs=yes 27 | 28 | - name: Restart Docker service 29 | service: 30 | name=docker 31 | state=restarted 32 | -------------------------------------------------------------------------------- /roles/hashicorp_terraform/tasks/tfenv_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs tfuitls / tfenv Terraform 3 | # https://github.com/tfutils/tfenv 4 | # in order to update your current installation you have to remove it manually 5 | # or invoke playbook with "-e update_apps=true" 6 | 7 | - name: Check if there is any old installation 8 | stat: path="{{ local_soft_dir }}/tfenv" 9 | register: tfenv_state 10 | 11 | - name: Download tfenv 12 | git: 13 | dest: "{{ local_soft_dir }}/tfenv" 14 | repo: https://github.com/tfutils/tfenv.git 15 | update: yes 16 | when: tfenv_state.stat.exists == false or update_apps | default('') != '' 17 | 18 | - name: Create symlinks 19 | file: 20 | dest: "{{ local_bin_dir }}/{{ item }}" 21 | src: "{{ local_soft_dir }}/tfenv/bin/{{ item }}" 22 | state: link 23 | loop: 24 | - terraform 25 | - tfenv -------------------------------------------------------------------------------- /master.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Fedex provisioner 3 | gather_facts: false 4 | hosts: localhost 5 | become: yes 6 | 7 | roles: 8 | - prepare_env 9 | - vim 10 | - prepare-dotcfgs 11 | - ssh-config 12 | - packages 13 | - git 14 | - oh-my-zsh 15 | - tmux 16 | - tmuxinator 17 | - guake 18 | - dropbox 19 | - libreoffice 20 | - vlc 21 | - firefox 22 | - virtualbox 23 | - google-chrome 24 | - docker 25 | - hstr 26 | - wireshark 27 | - sysdig 28 | - slack 29 | - hipchat 30 | - steam 31 | - fonts 32 | - redshift 33 | - libvirt 34 | - ntp 35 | - translator-cli 36 | - npm 37 | - npm_modules 38 | - evernote 39 | - gitkraken 40 | - pycharm 41 | - intellij 42 | - aws 43 | - keybase 44 | - hashicorp_packer 45 | - hashicorp_terraform 46 | - gitter 47 | - exercism.io 48 | -------------------------------------------------------------------------------- /roles/prepare-dotcfgs/tasks/dotcfgs_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs dotcfgs 3 | 4 | - name: Create symlinks 5 | file: 6 | src={{ home_dir }}/git/dotcfgs/{{ item.src }} 7 | dest={{ home_dir }}/{{ item.dest }} 8 | state=link 9 | mode=0600 10 | owner={{ user }} 11 | group={{ group }} 12 | force=yes 13 | with_items: 14 | - { src: ".gitconfig", dest: ".gitconfig" } 15 | - { src: ".screenrc", dest: ".screenrc" } 16 | - { src: ".vimperatorrc", dest: ".vimperatorrc" } 17 | - { src: ".tmux.conf", dest: ".tmux.conf" } 18 | - { src: ".vimrc", dest: ".vimrc" } 19 | - { src: ".zshrc", dest: ".zshrc" } 20 | - { src: ".tmuxinator", dest: ".tmuxinator" } 21 | - { src: "ssh/config", dest: ".ssh/config" } 22 | - { src: ".aws", dest: ".aws" } 23 | - { src: ".boto", dest: ".boto" } 24 | - { src: "my_configs.vim", dest: ".vim_runtime/my_configs.vim" } 25 | -------------------------------------------------------------------------------- /roles/goenv/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs goenv on Fedora 3 | # https://github.com/syndbg/goenv/ 4 | 5 | - block: 6 | - name: Clone repo 7 | git: 8 | repo: https://github.com/syndbg/goenv.git 9 | dest: "{{ local_soft_dir }}/goenv" 10 | update: no 11 | 12 | - name: "Update zshrc" 13 | lineinfile: 14 | path: "{{ home_dir}}/.zshrc" 15 | line: "{{ item.line }}" 16 | regexp: "{{ item.regexp }}" 17 | loop: 18 | - line: "export GOENV_ROOT=\"{{ local_soft_dir }}/goenv\"" 19 | regexp: "^export GOENV_ROOT" 20 | - line: 'export PATH="$GOENV_ROOT/bin:$PATH"' 21 | regexp: '^export PATH\=\"\$GOENV' 22 | - line: 'eval "$(goenv init -)"' 23 | regexp: '^eval.+goenv init' 24 | - line: 'export PATH="$GOROOT/bin:$PATH"' 25 | regexp: '^export PATH.+GOROOT' 26 | - line: 'export PATH="$GOPATH/bin:$PATH"' 27 | regexp: '^export PATH.+GOPATH' 28 | 29 | become: no -------------------------------------------------------------------------------- /roles/packages/tasks/install_pkgs.yml: -------------------------------------------------------------------------------- 1 | - name: Install main packages 2 | dnf: name={{ item }} state=latest 3 | with_items: 4 | - terminator 5 | - cmake 6 | - vim 7 | - keepassx 8 | - wget 9 | - git 10 | - gitk 11 | - gedit 12 | - strace 13 | - ruby 14 | - ipython 15 | - python-virtualenv 16 | - python-virtualenvwrapper 17 | - pinpoint 18 | - ike 19 | - mc 20 | - gobby 21 | - virt-manager 22 | - multitail 23 | - meld 24 | - unetbootin 25 | - ntfs-3g 26 | - liveusb-creator 27 | - cryptsetup 28 | - pv 29 | - tigervnc 30 | - unrar 31 | - nmap 32 | - calibre 33 | - ffmpeg 34 | - htop 35 | - lm_sensors 36 | - gnome-disk-utility 37 | - gimp 38 | - lastpass-cli 39 | - sysstat 40 | - fuse-exfat 41 | - exfat-utils 42 | - pandoc 43 | - python-certbot-apache 44 | - rust 45 | - cargo 46 | tags: pkgs 47 | -------------------------------------------------------------------------------- /roles/hstr/tasks/hstr_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs HSTR 3 | 4 | - name: Create bin directory 5 | file: 6 | path={{ home_dir }}/bin 7 | state=directory 8 | owner={{ user }} 9 | group={{ group }} 10 | mode=0700 11 | 12 | - name: Download HSTR binary 13 | get_url: 14 | url=https://github.com/dvorka/hstr/releases/download/1.17/hh-1.17-bin-64b.tgz 15 | dest={{ home_dir }}/bin/hh.tgz 16 | 17 | - name: Unpack binary 18 | command: tar zxf {{ home_dir }}/bin/hh.tgz -C {{ home_dir }}/bin/ 19 | 20 | - name: Remove tgz 21 | file: 22 | path={{ home_dir }}/bin/hh.tgz 23 | state=absent 24 | 25 | - name: Extend zsh configuration 26 | lineinfile: 27 | dest={{ home_dir }}/.zshrc 28 | line='export HISTFILE=~/.zsh_history; export HH_CONFIG=hicolor; bindkey -s "\C-r" "\eqhh\n"' 29 | state=present 30 | 31 | - name: Install prerequisities 32 | dnf: 33 | name: compat-readline6 34 | state: latest 35 | -------------------------------------------------------------------------------- /roles/git/templates/gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = {{ git.username }} 3 | email = {{ git.email }} 4 | [credential] 5 | helper = cache --timeout=3600 6 | [core] 7 | editor = vim 8 | [merge] 9 | tool = /usr/bin/meld 10 | [push] 11 | default = simple 12 | [color] 13 | ui = true 14 | [alias] 15 | lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit 16 | lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all 17 | lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all 18 | cm = commit -m 19 | st = status 20 | rs = remote -v 21 | -------------------------------------------------------------------------------- /roles/workflowy/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Workflowy 3 | # unfortunately there're no fedora / rhel packages but there .AppImages 4 | # in order to update your current installation you have to remove it manually 5 | # or invoke playbook with "-e update_apps=true" 6 | 7 | - name: Check if there is any old installation 8 | stat: path="{{ local_bin_dir }}/workflowy" 9 | register: installation_state 10 | 11 | - block: 12 | - name: Ensure old binary is removed 13 | file: 14 | path: "{{ local_bin_dir }}/workflowy" 15 | state: absent 16 | 17 | - name: Download imagepackage 18 | get_url: 19 | dest: "{{ local_bin_dir}}/workflowy" 20 | url: "https://github.com/workflowy/desktop/releases/download/v0.0.1/WorkFlowy-0.0.1-x86_64.AppImage" 21 | 22 | - name: Make image executable 23 | file: 24 | path: "{{ local_bin_dir}}/workflowy" 25 | mode: 0700 26 | owner: "{{ user }}" 27 | group: "{{ group }}" 28 | 29 | when: installation_state.stat.exists == false or update_apps | default('') != '' 30 | -------------------------------------------------------------------------------- /roles/1password_op/tasks/1password_op_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs 1password CLI client 3 | # (see https://app-updates.agilebits.com/product_history/CLI) 4 | # we download zip and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | 8 | - name: Check if there is any old installation 9 | stat: path="{{ local_bin_dir }}/op" 10 | register: op_state 11 | 12 | - block: 13 | - name: Download package 14 | get_url: 15 | dest: "{{ temp_dir }}/op.zip" 16 | url: "https://cache.agilebits.com/dist/1P/op/pkg/v0.5.1/op_linux_amd64_v0.5.1.zip" 17 | 18 | - name: Ensure 1password binary is removed 19 | file: 20 | path: "{{ local_bin_dir }}/op" 21 | state: absent 22 | 23 | - name: Extract archive 24 | unarchive: 25 | src: "{{ temp_dir }}/op.zip" 26 | dest: "{{ local_bin_dir }}/" 27 | group: "{{ group }}" 28 | owner: "{{ user }}" 29 | 30 | when: op_state.stat.exists == false or update_apps | default('') != '' 31 | -------------------------------------------------------------------------------- /roles/exercism.io/tasks/exercism_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Exercism CLI client 3 | # (see http://exercism.io/clients/cli/linux) 4 | # we download tgz and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | 8 | - name: Check if there is any old installation 9 | stat: path="{{ local_bin_dir }}/exercism" 10 | register: exercism_state 11 | 12 | - block: 13 | - name: Download package 14 | get_url: 15 | dest: "{{ temp_dir }}/exercism.tgz" 16 | url: "https://github.com/exercism/cli/releases/download/v2.4.1/exercism-linux-64bit.tgz" 17 | 18 | - name: Ensure Exercism binary is removed 19 | file: > 20 | path={{ local_bin_dir }}/exercism 21 | state=absent 22 | 23 | - name: Extract archive 24 | unarchive: > 25 | src={{ temp_dir }}/exercism.tgz 26 | dest={{ local_bin_dir }}/ 27 | group={{ group }} 28 | owner={{ user }} 29 | 30 | when: exercism_state.stat.exists == false or update_apps | default('') != '' 31 | -------------------------------------------------------------------------------- /roles/awless/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs awless - a Go application for managing AWS resources 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip, unzip it and put in the binary directory 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | 8 | - name: Check if there is any old installation 9 | stat: path="{{ local_bin_dir }}/awless" 10 | register: installation_state 11 | 12 | - block: 13 | - name: Download package 14 | get_url: 15 | dest: "{{ temp_dir }}/awless.tar.gz" 16 | url: "https://github.com/wallix/awless/releases/download/v0.1.11/awless-linux-amd64.tar.gz" 17 | 18 | - name: Ensure old binary is removed 19 | file: 20 | path: "{{ local_bin_dir }}/awless" 21 | state: absent 22 | 23 | - name: Extract archive 24 | unarchive: 25 | src: "{{ temp_dir }}/awless.tar.gz" 26 | dest: "{{ local_bin_dir }}/" 27 | group: "{{ group }}" 28 | owner: "{{ user }}" 29 | 30 | when: installation_state.stat.exists == false or update_apps | default('') != '' 31 | -------------------------------------------------------------------------------- /roles/tmux/tasks/tmux_fix_less.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Fixing colors for "less" 3 | # see http://stackoverflow.com/questions/10535432/tmux-man-page-search-highlighting for details 4 | 5 | # Basic procedure: 6 | # $ mkdir $HOME/.terminfo/ 7 | # $ screen_terminfo="screen-256color" 8 | # $ infocmp "$screen_terminfo" | sed \ 9 | # -e 's/^screen[^|]*|[^,]*,/screen-256color|screen with italics support,/' \ 10 | # -e 's/%?%p1%t;3%/%?%p1%t;7%/' \ 11 | # -e 's/smso=[^,]*,/smso=\\E[7m,/' \ 12 | # -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \ 13 | # -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo 14 | # $ tic /tmp/screen.terminfo 15 | # cp ~/.terminfo 16 | 17 | - name: Fix highligtning 18 | file: > 19 | path={{ home_dir }}/.terminfo 20 | state=directory 21 | owner={{ user }} 22 | group={{ group }} 23 | mode=0700 24 | 25 | - name: Fix highligtning 26 | copy: > 27 | src=infocmp.sh 28 | dest=/tmp/infocmp.sh 29 | mode=0700 30 | owner={{ user }} 31 | group={{ group }} 32 | 33 | - name: Fix highligtning 34 | shell: /tmp/infocmp.sh 35 | 36 | - name: Fix highligtning 37 | command: rsync -rP {{ home_dir }}/.terminfo /root/. 38 | -------------------------------------------------------------------------------- /roles/hashicorp_terraform/tasks/terraform_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Hashicorp Terraform 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | 8 | - name: Check if there is any old installation 9 | stat: path="{{ local_bin_dir }}/terraform" 10 | register: terraform_state 11 | 12 | - block: 13 | - name: Download package 14 | get_url: 15 | # due to SSL bug: https://github.com/ansible/ansible/issues/25402 16 | validate_certs: no 17 | dest: "{{ temp_dir }}/terraform.zip" 18 | url: "https://releases.hashicorp.com/terraform/0.11.7/terraform_0.11.7_linux_amd64.zip" 19 | 20 | - name: Ensure Terraform binary is removed 21 | file: 22 | path: "{{ local_bin_dir }}/terraform" 23 | state: absent 24 | 25 | - name: Extract archive 26 | unarchive: 27 | src: "{{ temp_dir }}/terraform.zip" 28 | dest: "{{ local_bin_dir }}/" 29 | group: "{{ group }}" 30 | owner: "{{ user }}" 31 | 32 | when: terraform_state.stat.exists == false or update_apps | default('') != '' 33 | -------------------------------------------------------------------------------- /roles/redshift/tasks/redshift_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs edshift-GTK on Fedora 3 | 4 | - name: Install pkgs 5 | dnf: name=redshift-gtk state=present 6 | 7 | # check https://github.com/jonls/redshift/issues/158 for details 8 | - name: Create fragments directory 9 | file: > 10 | path=/etc/geoclue/fragments 11 | state=directory 12 | owner=root 13 | group=root 14 | serole=object_r 15 | setype=etc_t 16 | seuser=system_u 17 | 18 | - name: Copy redshift related geoprovider config part 19 | copy: > 20 | src=redshift.conf 21 | dest=/etc/geoclue/fragments/redshift.conf 22 | owner=root 23 | group=root 24 | 25 | - name: Is geoclue fragment copied already? 26 | stat: > 27 | path=/etc/geoclue/fragments/geoclue.conf 28 | register: geoclue_fragment_stat 29 | 30 | - name: Copy geoclue original config to fragments dir 31 | command: cp /etc/geoclue/geoclue.conf /etc/geoclue/fragments/geoclue.conf 32 | when: geoclue_fragment_stat.stat.exists == false 33 | 34 | - name: Fix for bug with geoprovider2 35 | assemble: > 36 | src=/etc/geoclue/fragments 37 | dest=/etc/geoclue/geoclue.conf 38 | group=root 39 | owner=root 40 | serole=object_r 41 | setype=etc_t 42 | seuser=system_u 43 | -------------------------------------------------------------------------------- /roles/pyenv/tasks/installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs pyenv on Fedora 3 | # https://github.com/pyenv/pyenv 4 | - name: Install prerequisities 5 | dnf: 6 | name: "{{ pkg_list }}" 7 | state: present 8 | vars: 9 | pkg_list: ["zlib-devel", "bzip2", "bzip2-devel", "readline-devel", "sqlite", "sqlite-devel", "openssl-devel", 10 | "xz", "xz-devel", "libffi-devel", "findutils"] 11 | 12 | - block: 13 | - name: Clone repo 14 | git: 15 | repo: https://github.com/pyenv/pyenv.git 16 | dest: "{{ local_soft_dir }}/pyenv" 17 | update: no 18 | 19 | - name: Install plugins 20 | git: 21 | repo: "{{ item.url }}" 22 | dest: "{{ local_soft_dir }}/pyenv/plugins/{{ item.name }}" 23 | update: no 24 | loop: 25 | - url: "https://github.com/pyenv/pyenv-virtualenv.git" 26 | name: "pyenv-virtualenv" 27 | 28 | - name: "Update zshrc" 29 | lineinfile: 30 | path: "{{ home_dir}}/.zshrc" 31 | line: "{{ item.line }}" 32 | regexp: "{{ item.regexp }}" 33 | loop: 34 | - line: "export PYENV_ROOT=\"{{ local_soft_dir }}/pyenv\"" 35 | regexp: "^export PYENV_ROOT" 36 | - line: 'export PATH="$PYENV_ROOT/bin:$PATH"' 37 | regexp: '^export PATH\=\"\$PYENV' 38 | 39 | become: no -------------------------------------------------------------------------------- /roles/vim/tasks/vim_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs VIM and its plugins 3 | 4 | - name: Install vim package 5 | dnf: name=vim state=latest 6 | 7 | - name: Clone Ultimate vimrc repo 8 | git: > 9 | repo=https://github.com/amix/vimrc.git 10 | accept_hostkey=yes 11 | force=yes 12 | dest={{ home_dir }}/.vim_runtime 13 | 14 | - name: Add favorite plugins 15 | git: > 16 | dest={{ home_dir }}/.vim_runtime/{{ item.dest }} 17 | force=yes 18 | repo={{ item.repo }} 19 | with_items: 20 | - { repo: "http://github.com/sjl/gundo.vim.git", dest: "sources_non_forked/gundo" } 21 | # - { repo: "http://github.com/kakkyz81/evervim.git ", dest: "sources_non_forked/evervim" } 22 | # - { repo: "http://github.com/fholgado/minibufexpl.vim.git ", dest: "sources_non_forked/minibuxeplorer" } 23 | - { repo: "http://github.com/powerline/powerline.git", dest: "sources_non_forked/powerline" } 24 | # - { repo: "http://github.com/mattn/gist-vim.git ", dest: "sources_non_forked/gist" } 25 | 26 | - name: Run Ultimate vimrc installer 27 | become: no 28 | shell: sh {{ home_dir }}/.vim_runtime/install_awesome_vimrc.sh 29 | 30 | - name: Fix permissions 31 | file: > 32 | path={{ home_dir }}/.vim_runtime 33 | owner={{ user }} 34 | group={{ group }} 35 | recurse=yes 36 | -------------------------------------------------------------------------------- /roles/firefox/tasks/firefox_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Firefox 3 | 4 | - name: Install Firefox package 5 | dnf: name=firefox state=latest 6 | 7 | - name: Download Adobe Release 8 | get_url: 9 | url=http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm 10 | dest={{ temp_dir }}/adobe-release.rpm 11 | 12 | - name: Install Adobe Release 13 | dnf: name={{ temp_dir }}/adobe-release.rpm state=present 14 | 15 | - name: Download Flash Player 16 | get_url: 17 | url=https://fpdownload.macromedia.com/get/flashplayer/pdc/11.2.202.616/flash-plugin-11.2.202.616-release.x86_64.rpm 18 | dest={{ temp_dir }}/flashplayer.rpm 19 | 20 | - name: Install Flash Player 21 | dnf: name={{ temp_dir }}/flashplayer.rpm state=present 22 | 23 | - name: Fix for Gnome3 dark style broken styling - step 1 24 | # http://forums.fedoraforum.org/showpost.php?p=1703251&postcount=3 25 | file: > 26 | path={{ home_dir }}/.mozilla/firefox/*.default/chrome 27 | state=directory 28 | owner={{ user }} 29 | group={{ group }} 30 | mode=0700 31 | 32 | - name: Fix for Gnome3 dark style broken styling - step 2 33 | copy: > 34 | src=userContent.css 35 | dest={{ home_dir }}/.mozilla/firefox/*.default/chrome/userContent.css 36 | owner={{ user }} 37 | group={{ group }} 38 | mode=0600 39 | -------------------------------------------------------------------------------- /roles/firefox/files/userContent.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Use this css file to eliminate problems in Firefox 3 | * when using dark themes that create dark on dark 4 | * input boxes, selection menus and buttons. Put this 5 | * in the ../firefox/default/chrome folder or your 6 | * individual user firefox profile chrome folder. 7 | */ 8 | input { 9 | border: 2px inset white; 10 | background-color: white; 11 | color: black; 12 | -moz-appearance: none !important; 13 | } 14 | textarea { 15 | border: 2px inset white; 16 | background-color: white; 17 | color: black; 18 | -moz-appearance: none !important; 19 | } 20 | select { 21 | border: 2px inset white; 22 | background-color: white; 23 | color: black; 24 | -moz-appearance: none !important; 25 | } 26 | input[type="radio"], 27 | input[type="checkbox"] { 28 | border: 2px inset white ! important; 29 | background-color: white ! important; 30 | color: ThreeDFace ! important; 31 | -moz-appearance: none !important; 32 | } 33 | *|*::-moz-radio { 34 | background-color: white; 35 | -moz-appearance: none !important; 36 | } 37 | button, 38 | input[type="reset"], 39 | input[type="button"], 40 | input[type="submit"] { 41 | border: 2px outset white; 42 | background-color: #eeeeee; 43 | color: black; 44 | -moz-appearance: none !important; 45 | } 46 | body { 47 | background-color: white; 48 | color: black; 49 | display: block; 50 | margin: 8px; 51 | -moz-appearance: none !important; 52 | } -------------------------------------------------------------------------------- /roles/gitter/tasks/gitter_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Check if there is any old installation 3 | stat: path="{{ local_soft_dir }}/gitter" 4 | register: gitter_state 5 | 6 | - block: 7 | - name: Install prerequisities 8 | dnf: 9 | name: dpkg 10 | state: present 11 | 12 | - name: Create symlink for libudev version 13 | file: 14 | src: /usr/lib64/libudev.so.1 15 | dest: /usr/lib64/libudev.so.0 16 | state: link 17 | 18 | - name: Download Gitter deb 19 | get_url: 20 | url: "https://update.gitter.im/linux64/gitter_3.1.0_amd64.deb" 21 | dest: "{{ temp_dir }}/gitter.deb" 22 | 23 | - name: Unpack deb package 24 | command: dpkg-deb -x {{ temp_dir }}/gitter.deb {{ temp_dir }}/gitter/ 25 | 26 | - name: Move Gitter directory 27 | command: mv {{ temp_dir }}/gitter/opt/Gitter {{ local_soft_dir }}/gitter 28 | 29 | - name: Fix permissions 30 | file: 31 | path: "{{ local_soft_dir }}/gitter" 32 | owner: "{{ user }}" 33 | group: "{{ group }}" 34 | state: directory 35 | 36 | - name: Add entry to Gnome3 applications 37 | template: 38 | src: "templates/gitter.desktop" 39 | dest: "{{ home_dir }}/.local/share/applications/gitter.desktop" 40 | mode: "0600" 41 | owner: "{{ user }}" 42 | group: "{{ group }}" 43 | 44 | when: gitter_state.stat.exists == false or update_apps | default('') != '' -------------------------------------------------------------------------------- /roles/gitkraken/tasks/gitkraken_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs gitkraken - lovely git UI manager 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip, unzip it and add gnome3 launcher entry + gitkraken icon 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | 8 | - name: Check if there is any old installation 9 | stat: path="{{ local_soft_dir }}/gitkraken" 10 | register: gitkraken_state 11 | 12 | - block: 13 | - name: Download package 14 | get_url: > 15 | dest={{ temp_dir }}/gitkraken.tar.gz 16 | url="https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz" 17 | 18 | - name: Ensure GitKraken directory is removed 19 | file: > 20 | path={{ local_soft_dir }}/GitKraken 21 | state=absent 22 | 23 | - name: Extract archive 24 | unarchive: > 25 | src={{ temp_dir }}/gitkraken.tar.gz 26 | dest={{ local_soft_dir }}/ 27 | group={{ group }} 28 | owner={{ user }} 29 | 30 | - name: Copy gitkraken logo 31 | copy: > 32 | src=gitkraken.jpg 33 | dest={{ local_soft_dir }}/GitKraken/gitkraken.jpg 34 | owner={{ user }} 35 | group={{ group }} 36 | 37 | - name: Create desktop entry for Gnome3 38 | template: > 39 | src=gitkraken.desktop.j2 40 | dest={{ home_dir }}/.local/share/applications/GitKraken.desktop 41 | owner={{ user }} 42 | group={{ group }} 43 | mode=0700 44 | 45 | when: gitkraken_state.stat.exists == false or update_apps | default('') != '' -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # fedora-desktop-ansible # 2 | 3 | This is my provisioner for the Fedora 30 Gnome3 / Wayland 4 | generic desktop. Feel free to use it, modify, contribute etc. 5 | Always interested in your comments - write me! 6 | 7 | ### Usage: ### 8 | 9 | 1. Clone this repo 10 | 1. Edit **group_vars/all.yml** 11 | 1. Install prerequisites on destination box: `dnf -y install ansible sudo python-dnf libselinux-python` 12 | 1. Create entry for your user in **/etc/sudoers.d/user** so you don't need to provide password for sudo (optional) 13 | 1. Enter proper **ansible_ssh_host** and **ansible_ssh_user** in **hosts** file 14 | 1. Make sure it works: `ansible -m ping ` 15 | 1. Copy **master.yml** to **my-laptop.yml** and adjust it to your needs. 16 | 1. Rollout: `ansible-playbook my-laptop.yml` 17 | 18 | If you want to only update packages (like `dnf update -y` simply run: 19 | 20 | `$ ansible-playbook my-laptop.yml --tags pkgs,update --skip-tags install` 21 | 22 | ### Contributing / committing changes ### 23 | 24 | 1. In order to modify those roles a bit to match your needs simply fork and work on your forked repo 25 | 1. If you feel like your change should be added to this repo - create Pull Request (thanks btw!) 26 | 27 | ### Managing multiple workstations ### 28 | 29 | I use this repository in order to manage couple of workstations. Basically create 30 | provisioner yaml for every workstation and that's it. Thanks to that you can also easily customize every 31 | configuration. so no need to modify **hosts** file. 32 | 33 | Maciej Lasyk 34 | @docent-net 35 | https://maciej.lasyk.info 36 | -------------------------------------------------------------------------------- /roles/intellij/tasks/intellij_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs IntelliJ 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" or simply update from within 7 | # intellij 8 | # After update you'll probably have to run application manually from 9 | # ./bin/idea.sh and re - generate desktopr entry / cmd - launcher (Tools 10 | # -> Create Desktop Entry) and re - import settings from ~/.IdeaICXXX 11 | # directory 12 | 13 | - name: Check if there is any old installation 14 | stat: path="{{ local_soft_dir }}/idea" 15 | register: idea_state 16 | 17 | - block: 18 | - name: Download package 19 | get_url: > 20 | dest: "{{ temp_dir }}/idea.tar.gz" 21 | url: "https://download.jetbrains.com/idea/ideaIU-2019.3.1.tar.gz" 22 | 23 | - name: Ensure Idea directory is removed 24 | file: 25 | path: "{{ local_soft_dir }}/Idea" 26 | state: "absent" 27 | 28 | - name: Extract archive 29 | unarchive: 30 | src: "{{ temp_dir }}/idea.tar.gz" 31 | dest: "{{ local_soft_dir }}/" 32 | group: "{{ group }}" 33 | owner: "{{ user }}" 34 | when: idea_state.stat.exists == false or update_apps | default('') != '' 35 | 36 | # details aboout this operation: https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit 37 | - name: Increase inotify limit 38 | sysctl: 39 | sysctl_file: /etc/sysctl.d/idea.conf 40 | name: fs.inotify.max_user_watches 41 | value: "524288" 42 | reload: yes 43 | state: present 44 | -------------------------------------------------------------------------------- /roles/pycharm/tasks/pycharm_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs pycharm 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" or simply update from within 7 | # pycharm 8 | # After update you'll probably have to run application manually from 9 | # ./bin/pycharm.sh and re - generate desktopr entry / cmd - launcher (Tools 10 | # -> Create Desktop Entry) and re - import settings from ~/.PycharmXXX 11 | # directory 12 | 13 | - name: Check if there is any old installation 14 | stat: path="{{ local_soft_dir }}/pycharm" 15 | register: pycharm_state 16 | 17 | - block: 18 | - name: Download package 19 | get_url: > 20 | dest={{ temp_dir }}/pycharm.tar.gz 21 | url="https://download.jetbrains.com/python/pycharm-community-2018.2.4.tar.gz" 22 | 23 | - name: Ensure Pycharm directory is removed 24 | file: > 25 | path={{ local_soft_dir }}/Pycharm 26 | state=absent 27 | 28 | - name: Extract archive 29 | unarchive: > 30 | src={{ temp_dir }}/pycharm.tar.gz 31 | dest={{ local_soft_dir }}/ 32 | group={{ group }} 33 | owner={{ user }} 34 | when: pycharm_state.stat.exists == false or update_apps | default('') != '' 35 | 36 | # details aboout this operation: https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit 37 | - name: Increase inotify limit 38 | sysctl: 39 | sysctl_file: /etc/sysctl.d/pycharm.conf 40 | name: fs.inotify.max_user_watches 41 | value: 524288 42 | reload: yes 43 | state: present 44 | -------------------------------------------------------------------------------- /roles/hashicorp_packer/tasks/packer_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Hashicorp Packer 3 | # unfortunately there're no fedora / rhel packages so 4 | # we download zip and unarchive it 5 | # in order to update your current installation you have to remove it manually 6 | # or invoke playbook with "-e update_apps=true" 7 | # This playbook renames packer to "hpacker", as "packer" conflicts with another 8 | # system binary (from cracklib) on Fedora 9 | 10 | - name: Check if there is any old installation 11 | stat: path="{{ local_bin_dir }}/hpacker" 12 | register: packer_state 13 | 14 | - block: 15 | - name: Download package 16 | get_url: 17 | # due to SSL bug: https://github.com/ansible/ansible/issues/25402 18 | validate_certs: no 19 | dest: "{{ temp_dir }}/packer.zip" 20 | url: "https://releases.hashicorp.com/packer/1.0.4/packer_1.0.4_linux_amd64.zip" 21 | 22 | - name: Ensure Packer binary is removed 23 | file: > 24 | path={{ local_bin_dir }}/hpacker 25 | state=absent 26 | 27 | - name: Extract archive 28 | unarchive: > 29 | src={{ temp_dir }}/packer.zip 30 | dest={{ local_bin_dir }}/ 31 | group={{ group }} 32 | owner={{ user }} 33 | 34 | # Ansible cant simply move file other way than command/shell module, so..: 35 | - name: Copy packer to hpacker 36 | copy: 37 | remote_src=True 38 | src={{ local_bin_dir }}/packer 39 | dest={{ local_bin_dir}}/hpacker 40 | group={{ group }} 41 | owner={{ user }} 42 | mode=0700 43 | 44 | - name: Remove old file 45 | file: path={{ local_bin_dir }}/packer state=absent 46 | 47 | when: packer_state.stat.exists == false or update_apps | default('') != '' 48 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/virtualbox_installer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook installs Virtualbox 3 | 4 | - name: Download Virtualbox installer 5 | get_url: 6 | url=http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo 7 | dest=/etc/yum.repos.d/virtualbox.repo 8 | 9 | - name: Download repokey 10 | get_url: > 11 | dest={{ temp_dir }}/virtualbox.asc 12 | url=https://www.virtualbox.org/download/oracle_vbox.asc 13 | 14 | - name: Import repokey 15 | shell: rpm --import {{ temp_dir }}/virtualbox.asc 16 | 17 | - name: Update kernel to the latest version 18 | dnf: name=kernel* state=latest 19 | 20 | - name: Install required packages 21 | dnf: name={{ item }} state=latest 22 | with_items: 23 | - binutils 24 | - gcc 25 | - make 26 | - patch 27 | - libgomp 28 | - glibc-headers 29 | - glibc-devel 30 | - kernel-headers 31 | - kernel-devel 32 | - dkms 33 | 34 | - name: Install Virtualbox package 35 | dnf: name=VirtualBox-5.0 state=latest 36 | 37 | - name: Update Virtualbox driver 38 | shell: /usr/sbin/rcvboxdrv setup 39 | 40 | - name: Get current vbox version 41 | shell: rpm -qa | grep -i VirtualBox | cut -d '_' -f 1 | cut -d '-' -f 3 42 | register: vbox_version 43 | 44 | - name: Download Extension Pack 45 | get_url: 46 | url=http://download.virtualbox.org/virtualbox/{{ vbox_version.stdout }}/Oracle_VM_VirtualBox_Extension_Pack-{{ vbox_version.stdout }}.vbox-extpack 47 | dest={{ temp_dir }}/Oracle_VM_VirtualBox_Extension_Pack-{{ vbox_version.stdout }}.vbox-extpack 48 | 49 | - name: Install Extension Pack 50 | shell: vboxmanage extpack install {{ temp_dir }}/Oracle_VM_VirtualBox_Extension_Pack-{{ vbox_version.stdout }}.vbox-extpack 51 | 52 | - name: Add system user to vbox group (this is needed e.g. for sharing USB devices) 53 | command: usermod -a -G vboxusers {{ user }} 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | 341 | --------------------------------------------------------------------------------