Initial commit
This commit is contained in:
141
.gitignore
vendored
Normal file
141
.gitignore
vendored
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
*.html
|
||||||
|
*.pdf
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/vim,intellij
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=vim,intellij
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
# *.iml
|
||||||
|
# modules.xml
|
||||||
|
# .idea/misc.xml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# Sonarlint plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||||
|
.idea/**/sonarlint/
|
||||||
|
|
||||||
|
# SonarQube Plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||||
|
.idea/**/sonarIssues.xml
|
||||||
|
|
||||||
|
# Markdown Navigator plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||||
|
.idea/**/markdown-navigator.xml
|
||||||
|
.idea/**/markdown-navigator-enh.xml
|
||||||
|
.idea/**/markdown-navigator/
|
||||||
|
|
||||||
|
# Cache file creation bug
|
||||||
|
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||||
|
.idea/$CACHE_FILE$
|
||||||
|
|
||||||
|
# CodeStream plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||||
|
.idea/codestream.xml
|
||||||
|
|
||||||
|
# Azure Toolkit for IntelliJ plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||||
|
.idea/**/azureSettings.xml
|
||||||
|
|
||||||
|
### Vim ###
|
||||||
|
# Swap
|
||||||
|
[._]*.s[a-v][a-z]
|
||||||
|
!*.svg # comment out if you don't need vector files
|
||||||
|
[._]*.sw[a-p]
|
||||||
|
[._]s[a-rt-v][a-z]
|
||||||
|
[._]ss[a-gi-z]
|
||||||
|
[._]sw[a-p]
|
||||||
|
|
||||||
|
# Session
|
||||||
|
Session.vim
|
||||||
|
Sessionx.vim
|
||||||
|
|
||||||
|
# Temporary
|
||||||
|
.netrwhist
|
||||||
|
*~
|
||||||
|
# Auto-generated tag files
|
||||||
|
tags
|
||||||
|
# Persistent undo
|
||||||
|
[._]*.un~
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/vim,intellij
|
||||||
32
README.adoc
Normal file
32
README.adoc
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
= My dev-machine setup
|
||||||
|
:source-highlighter: rouge
|
||||||
|
|
||||||
|
This ansible-playbook will setup my development machines and prepare them for work.
|
||||||
|
|
||||||
|
== Prepararation
|
||||||
|
The setup is a bit different for linux and macos, since I can use the local package-manager on linux.
|
||||||
|
Though on macos I need to install `brew` first!
|
||||||
|
In both cases we need to install `ansible` and `git` though.
|
||||||
|
|
||||||
|
.Prepararation on Debian and Ubuntu
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
sudo apt install ansible git
|
||||||
|
----
|
||||||
|
|
||||||
|
.Prepararation on macos
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
brew install ansible git
|
||||||
|
----
|
||||||
|
|
||||||
|
== Setup
|
||||||
|
The setup is simple:
|
||||||
|
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
git clone git@gitea.nehrke.info:nemoinho/dev-machine.git ~/Development/dev-machine
|
||||||
|
cd $_
|
||||||
|
ansible-playbook main.yml
|
||||||
|
----
|
||||||
5
ansible.cfg
Normal file
5
ansible.cfg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[defaults]
|
||||||
|
nocows = True
|
||||||
|
inventory = inventory
|
||||||
|
become = True
|
||||||
|
ask-become-pass = True
|
||||||
141
debian.config.yml
Normal file
141
debian.config.yml
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
apt_packages:
|
||||||
|
- alacritty
|
||||||
|
- arandr
|
||||||
|
- asciidoctor
|
||||||
|
- autoconf
|
||||||
|
- autorandr
|
||||||
|
- bash-completion
|
||||||
|
- btop
|
||||||
|
- build-essential
|
||||||
|
- chromium-browser
|
||||||
|
- colordiff
|
||||||
|
- compton
|
||||||
|
- enpass
|
||||||
|
- eza
|
||||||
|
- fd-find
|
||||||
|
- feh
|
||||||
|
- firefox-devedition
|
||||||
|
- gcc
|
||||||
|
- gimp
|
||||||
|
- git
|
||||||
|
- git-delta
|
||||||
|
- google-cloud-cli
|
||||||
|
- graphviz
|
||||||
|
- htop
|
||||||
|
- hugo
|
||||||
|
- hyphen-de
|
||||||
|
- i3
|
||||||
|
- imagemagick
|
||||||
|
- jq
|
||||||
|
- kitty
|
||||||
|
- libcairo2-dev
|
||||||
|
- libev-dev
|
||||||
|
- libfontconfig1-dev
|
||||||
|
- libgif-dev
|
||||||
|
- libjpeg-dev
|
||||||
|
- libpam0g-dev
|
||||||
|
- libreoffice
|
||||||
|
- libreoffice-l10n-de
|
||||||
|
- libssl-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libxcb-composite0-dev
|
||||||
|
- libxcb-image0-dev
|
||||||
|
- libxcb-randr0-dev
|
||||||
|
- libxcb-util-dev
|
||||||
|
- libxcb-xinerama0-dev
|
||||||
|
- libxcb-xkb-dev
|
||||||
|
- libxcb-xrm-dev
|
||||||
|
- libxkbcommon-dev
|
||||||
|
- libxkbcommon-x11-dev
|
||||||
|
- lm-sensors
|
||||||
|
- lsb-release
|
||||||
|
- lynx
|
||||||
|
- make
|
||||||
|
- meld
|
||||||
|
- mutt
|
||||||
|
- mythes-de
|
||||||
|
- mythes-en-us
|
||||||
|
- nala
|
||||||
|
- ncal
|
||||||
|
- neovim
|
||||||
|
- nmap
|
||||||
|
- oathtool
|
||||||
|
- openssl
|
||||||
|
- pavucontrol
|
||||||
|
- pgcli
|
||||||
|
- pkg-config
|
||||||
|
- plantuml
|
||||||
|
- podman
|
||||||
|
- podman-compose
|
||||||
|
- polybar
|
||||||
|
- pulseaudio-utils
|
||||||
|
- ripgrep
|
||||||
|
- rofi
|
||||||
|
- ruby-asciidoctor-kroki
|
||||||
|
- ruby-asciidoctor-pdf
|
||||||
|
- ruby-asciidoctor-plantuml
|
||||||
|
- ruby-coderay
|
||||||
|
- ruby-pygments.rb
|
||||||
|
- ruby-rouge
|
||||||
|
- tofu
|
||||||
|
- tree
|
||||||
|
- spotify-client
|
||||||
|
- stow
|
||||||
|
- uuid
|
||||||
|
- whois
|
||||||
|
- zoxide
|
||||||
|
|
||||||
|
# not all software can be found in standard apt...
|
||||||
|
apt_repositories:
|
||||||
|
# Important: when a repo has more than _one_ key each key requires a name!!
|
||||||
|
- name: enpass
|
||||||
|
sign_keys:
|
||||||
|
- url: https://apt.enpass.io/keys/enpass-linux.key
|
||||||
|
repositories: https://apt.enpass.io/
|
||||||
|
|
||||||
|
- name: spotify
|
||||||
|
sign_keys:
|
||||||
|
- url: https://download.spotify.com/debian/pubkey_C85668DF69375001.gpg
|
||||||
|
repositories: https://repository.spotify.com/
|
||||||
|
components: non-free
|
||||||
|
|
||||||
|
- name: opentofu
|
||||||
|
sign_keys:
|
||||||
|
- url: https://get.opentofu.org/opentofu.gpg
|
||||||
|
name: opentofu
|
||||||
|
format: gpg
|
||||||
|
- url: https://packages.opentofu.org/opentofu/tofu/gpgkey
|
||||||
|
name: opentofu-repo
|
||||||
|
repositories: https://packages.opentofu.org/opentofu/tofu/any/
|
||||||
|
suites: "any"
|
||||||
|
types:
|
||||||
|
- deb
|
||||||
|
- deb-src
|
||||||
|
|
||||||
|
- name: hashicorp
|
||||||
|
sign_keys:
|
||||||
|
- url: https://apt.releases.hashicorp.com/gpg
|
||||||
|
repositories: https://apt.releases.hashicorp.com/
|
||||||
|
suites: "{{ ansible_distribution_release | lower }}"
|
||||||
|
|
||||||
|
- name: google-cloud-sdk
|
||||||
|
sign_keys:
|
||||||
|
- url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
|
||||||
|
repositories: https://packages.cloud.google.com/apt/
|
||||||
|
suites: cloud-sdk
|
||||||
|
|
||||||
|
- name: neovim
|
||||||
|
sign_keys:
|
||||||
|
- url: https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x9dbb0be9366964f134855e2255f96fcf8231b6dd
|
||||||
|
repositories: https://ppa.launchpadcontent.net/neovim-ppa/unstable/ubuntu
|
||||||
|
suites: "{{ ansible_distribution_release | lower }}"
|
||||||
|
types:
|
||||||
|
- deb
|
||||||
|
- deb-src
|
||||||
|
|
||||||
|
- name: mozilla
|
||||||
|
sign_keys:
|
||||||
|
- url: https://packages.mozilla.org/apt/repo-signing-key.gpg
|
||||||
|
repositories: https://packages.mozilla.org/apt/
|
||||||
|
suites: "mozilla"
|
||||||
|
|
||||||
45
macos.config.yml
Normal file
45
macos.config.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# brew packages are packages for the command line
|
||||||
|
brew_packages:
|
||||||
|
- asciidoctor
|
||||||
|
- awscli
|
||||||
|
- btop
|
||||||
|
- colordiff
|
||||||
|
- eza
|
||||||
|
- fd
|
||||||
|
- git
|
||||||
|
- git-delta
|
||||||
|
- gcloud-cli
|
||||||
|
- graphviz
|
||||||
|
- htop
|
||||||
|
- hugo
|
||||||
|
- imagemagick
|
||||||
|
- jq
|
||||||
|
- lynx
|
||||||
|
- mutt
|
||||||
|
- nmap
|
||||||
|
- nvim
|
||||||
|
- oathtool
|
||||||
|
- opentofu
|
||||||
|
- plantuml
|
||||||
|
- pgcli
|
||||||
|
- ripgrep
|
||||||
|
- stow
|
||||||
|
- tree
|
||||||
|
- uuid
|
||||||
|
- whois
|
||||||
|
- zoxide
|
||||||
|
|
||||||
|
# brew casks are visual programms
|
||||||
|
brew_casks:
|
||||||
|
- alacritty
|
||||||
|
- enpass
|
||||||
|
- firefox@developer-edition
|
||||||
|
- gimp
|
||||||
|
- gnucash
|
||||||
|
- kitty
|
||||||
|
- spotify
|
||||||
|
- ungoogled-chromium
|
||||||
|
|
||||||
|
# mas apps are apps from the apple app-store
|
||||||
|
mas_apps: []
|
||||||
|
|
||||||
12
main.yml
Normal file
12
main.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
- hosts: localhost
|
||||||
|
vars_files:
|
||||||
|
- debian.config.yml
|
||||||
|
- macos.config.yml
|
||||||
|
roles:
|
||||||
|
- role: roles/macos
|
||||||
|
tags: [macos]
|
||||||
|
when: ansible_os_family == 'Darwin'
|
||||||
|
- role: roles/debian
|
||||||
|
tags: [debian]
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
25
roles/debian/tasks/3rd-party-apt-repository.yml
Normal file
25
roles/debian/tasks/3rd-party-apt-repository.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
- name: "Download key for {{ item.name }}"
|
||||||
|
become: yes
|
||||||
|
get_url:
|
||||||
|
url: "{{ key.url }}"
|
||||||
|
dest: "/etc/apt/keyrings/{{ key.name | default(item.name) }}.{{ key.format | default('asc') }}"
|
||||||
|
mode: u=rw,g=r,o=r
|
||||||
|
loop: "{{ item.sign_keys }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: key
|
||||||
|
|
||||||
|
- name: "Setup apt repository for {{ item.name }}"
|
||||||
|
become: yes
|
||||||
|
deb822_repository:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
types: "{{ item.types | default('deb') }}"
|
||||||
|
uris: "{{ item.repositories }}"
|
||||||
|
suites: "{{ item.suites | default('stable') }}"
|
||||||
|
components: "{{ item.components | default('main') }}"
|
||||||
|
architectures: "{{ item.arch | default([ansible_architecture] | map('extract', deb_architecture) | first) }}"
|
||||||
|
# Note, the ugliness is needed since jinja2 makes it invalid otherwise
|
||||||
|
signed_by: "{%- set output = [] %}
|
||||||
|
{%- for result in item.sign_keys %}
|
||||||
|
{{- output.append('/etc/apt/keyrings/' ~ (result.name | default(item.name)) ~ '.' ~ (result.format | default('asc'))) }}
|
||||||
|
{%- endfor %}
|
||||||
|
{{- output | join(',') -}}"
|
||||||
23
roles/debian/tasks/main.yml
Normal file
23
roles/debian/tasks/main.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
- name: Ensure tools to add additional apt sources
|
||||||
|
tags: [repos]
|
||||||
|
become: yes
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- gnupg
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Ensure additional apt sources
|
||||||
|
tags: [repos]
|
||||||
|
include_tasks: 3rd-party-apt-repository.yml
|
||||||
|
loop: "{{ apt_repositories }}"
|
||||||
|
|
||||||
|
- name: Ensure system packages
|
||||||
|
become: yes
|
||||||
|
tags: [packages]
|
||||||
|
apt:
|
||||||
|
name: "{{ apt_packages }}"
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
4
roles/debian/vars/main.yml
Normal file
4
roles/debian/vars/main.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
deb_architecture:
|
||||||
|
aarch64: arm64
|
||||||
|
x86_64: amd64
|
||||||
|
|
||||||
12
roles/macos/tasks/main.yml
Normal file
12
roles/macos/tasks/main.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
- name: "Ensure brew-packages"
|
||||||
|
tags: [packages]
|
||||||
|
homebrew:
|
||||||
|
name: "{{ item }}"
|
||||||
|
loop: "{{ brew_packages }}"
|
||||||
|
|
||||||
|
- name: "Ensure brew casks"
|
||||||
|
tags: [packages]
|
||||||
|
homebrew_cask:
|
||||||
|
name: "{{ item }}"
|
||||||
|
loop: "{{ brew_casks }}"
|
||||||
|
|
||||||
Reference in New Issue
Block a user