= My dev-machine setup
:source-highlighter: rouge
:icons: font
:experimental: yes
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :point_up:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

ifdef::env-github[]
NOTE: This is only *a mirror* from my https://gitea.nehrke.info/nemoinho/dev-machine[personal git-server].
endif::[]

[abstract]
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 very simple, just follow these steps and you're good to go:

[source,bash]
----
git clone https://gitea.nehrke.info/nemoinho/dev-machine.git ~/Development/nemoinho/dev-machine # <1>
cd $_
cp local.config.yml.tpl local.config.yml # <2>
vi $_ # <3>
vi password.txt # <4>
ansible-galaxy install -r requirements.yml --upgrade # <5>
ansible-playbook main.yml # <6>
git remote set-url origin git@gitea.nehrke.info:nemoinho/dev-machine.git # <7>
----

<1> Clone this repo into a suitable local directory (we use http since ssh is not ready yet)
<2> Configure the local environment
<3> Note, that haven't installed anything yet, so use the available tools!
<4> Provide the password for the ansible-vault, make sure the file only has the password inside, nothing else
<5> Install further ansible-requirements
<6> Run the playbook that setup my system
<7> Adjust the git-url of this repo to use ssh, which is way more convenient

[NOTE]
Use a secure password and keep it in a password-manager.

== Available tags
To restrict the scope of execution the playbook uses a couple of tags as described in the following table:

[%autowidth.stretch]
|===
| Tag | Scope description

| repos | Install 3rd party apt-repositories (only useful on linux)
| packages | Install system-packages
| dotfiles | Install my dotfiles and apply them
| ssh | Ensure a default SSH-key and provide it to gitea and github
| offlineimap | Setup systemd-service for offlineimap on debian. This needs to be explicitly defined, since Enpass has to be setup first!
| dump | Print out debug information
|===

== Cheat-Sheet

* The shortcut kbd:[Fn+1] toggles fans 100% (http://reddit.com/r/System76/comments/ol9a60[Ref])
* https://schoenwald.aero/posts/2025-01-27_podman-multiarch-image/[Create multiarch images with podman]
