Skip to content
@gbraad-dotfiles

Gerard Braad (dotfiles)

@gbraad's dotfiles using `git`, `stow` and `zsh`

Gerard Braad's dotfiles using git, stow, and zsh

"Prompt"

These are my dotfiles that I use for all my workstation and developement environments on a daily basis. I share it because I got frustrated about moving a tarball around (and being scared of losing it). This eventually happened when my notebook got stolen... so, this is not an ideal solution for you. Treat it as, "what you see is what it is"...

These dotfiles are based around a few helpers that deal with setting up development containers, network functions and connectivity to my homelab services

  • dotfiles
    handles installation and update of my dotfiles
  • devenv, devbox
    deals with instant development environments
  • machine
    create VMs using bootc image-based deployments of devenv, homelab, apps and others
  • proxy
    sets environment to use a proxy to access services
  • davfs
    connects to remote WebDAV endspoints for file sharing
  • tailscale
    aliases and commands for use with my tailnet
  • secrets
    simple encrypt and decrypt for tokens and TOTP
  • apps
    installing and running according to application definitions
  • ...

Note

Do not use this directly, but take parts and learn from it.


One-line install

curl -fsSL https://dotfiles.gbraad.nl/install.sh | sh

Note

This script uses the stable downstream to install.


Extensions for VS Code

An extension that checks for and install my personal dotfiles

An extension that automates devenv.zsh and machine.zsh.

Dot environment (.dotfiles without install)

settings.json

{
    "terminal.integrated.defaultProfile.linux": "dot",
    "terminal.integrated.profiles.linux": {
        "dot": {
            // absolute path is necessary (no variables)
            "path": "/home/.../.dotfiles/bash/.local/bin/dot"
        },
        "dotscreen": {
            "path": "/home/.../.dotfiles/bash/.local/bin/dotscreen"
        }
    }
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "dot",
            "type": "shell",
            "problemMatcher": [],
            "command": "~/.dotfiles/bash/.local/bin/dot"
            //"command": "zsh"    // when dot is used as default terminal
        },
        {
            "label": "dotscreen",
            "type": "shell",
            "problemMatcher": [],
            "command": "~/.dotfiles/bash/.local/bin/dotscreen"
            //"command": "screen"
        }
    ]
}

Note

Tasks are run in the default termina. If this is set to dot, any function that has been defined, can be run directly.


Feature for devcontainers

Install my personal dotfiles as a feature during the devcontainer build process.

    "features": {
        "ghcr.io/gbraad-dotfiles/devcontainer-features/dotfiles:latest": {}
    }

Containers

Open in GitHub Codespaces

These are container images with the dotfiles and dependencies installed, able to run as a system container.

  • devenv dotfedora env, dev dotfedora [system|shell|exec] for Fedora
  • devenv dotdebian env, dev dotdebian [system|shell|exec] for Debian
  • ... dotalma for AlmaLinux
  • ... dotcentos for CentOS Stream
  • ... dotubi9 for RHEL UBI9
  • ... dotubuntu for Ubuntu
  • ... dotalpine for Alpine

Image-based Virtual Machines

The machine.zsh-helper assists in the process to set up and run image-based virtual machines. This is called a Bootable Container (bootc). Disk images are stored as OCI artifacts.

$ machine dotfiles [download|create|start|console]

Manual process using virt-install

You can otherwise also run

$ wget https://github.com/gbraad-dotfiles/upstream/releases/download/250223/almalinux-disk.qcow2 \
     -O base.qcow2
$ sudo virt-install \
    --name base --os-variant fedora-eln \
    --cpu host --vcpus 4 --memory 4096 \
    --import --disk ./base.qcow2,format=qcow2

Instant Developer Environments


Usage in Jupyter notebooks

%load_ext dotfiles
%%dotscript
country
> The Netherlands
%%dotscript
proxy ndisguise
country
> Germany
out=%dotini dotfiles file
%code out ini
out=%dot ps ax
%code out
%apps list services
%apps pinger service install
%apps pinger service status

Note

To use the extension, stow ipython needs to be run. More information can be found in the dedicated gbraad-dotfiles/notebooks repository with examples.


GitHub Actions

GitHub Action: install-action

      - name: Install dotfiles action
        uses: gbraad-dotfiles/install-action@main

GitHub Action: dotfiles-action

      - name: Run dotfiles command
        uses: gbraad-dotfiles/dotfiles-action@main
        with:
          action: update

GitHub Action: devenv-action

      - name: Run devenv command
        uses: gbraad-dotfiles/devenv-action@main
        with:
          prefix: dotfedora
          command: exec  #  [create/system/noinit|start|apps|...]
          args: cat /etc/os-release

GitHub Action: devbox-action

      - name: Run devbox command
        uses: gbraad-dotfiles/devbox-action@main
        with:
          prefix: fedora
          command: exec  #  [create|start|apps|...]
          args: cat /etc/os-release

GitHub Action: machine-action

      - name: Run machine command
        uses: gbraad-dotfiles/machine-action@main
        with:
          prefix: dotfedora
          command: download   #  [create|start|stop|...]

GitHub Action: apps-action

      - name: Run app install
        uses: gbraad-dotfiles/apps-action@main
        with:
          appname: vivaldi
          action: install

GitHub Action: dot-action

      - name: Requiremnent for dot
        run: |
          sudo apt update
          sudo apt install -y zsh

      - name: Run dot command - devenv dotfedora exec cat /etc/os-release
        uses: gbraad-dotfiles/dot-action@main
        with:
          run: |
            devenv dotfedora exec cat /etc/os-release

Note

This runs the specified commands without the need to 'install' the dotfiles. It is required for the runner to have zsh installed.


Ansible

Ansible role: gbraad.dotfiles and playbooks

    - name: Install dotfiles
      hosts: localhost
      roles:
        - role: gbraad.dotfiles
          vars:
            user: gbraad
    - name: Run devenv command
      hosts: localhost
      roles:
        - role: gbraad.dotfiles-devenv
          vars:
            prefix: gofedora
            command: start

Ansible role: gbraad.dotfiles-apps

    - name: Run app installs
      hosts: localhost
      roles:
        - role: gbraad.dotfiles-apps
          vars:
            appname: vivaldi
            action: install

Example/test: ⚙️

ansible-dotfiles-test


Build status of dotfiles Containers ⚙️ 🛠️ 🛠️

Fedora

build container - fedora
build container - fedora-bootc

CentOS

build container - centos
build container - centos-bootc

AlmaLinux

build container - almalinux
build container - almalinux-bootc

Others

build container - UBI9
build container - Alpine
build container - debian
build container - ubuntu


Other build status

Container Registry Cleanup

Container Registry Cleanup

Application defintions

Application installs


Downstream


Presentations


Runners kindly provided by Blacksmith and WarpBuild.

Pinned Loading

  1. upstream upstream Public

    @gbraad's dotfiles; using `git`, `stow` and `zsh`

    Python 16 7

  2. personal-workstation personal-workstation Public

    Workstation setup using bootc

    Dockerfile

  3. install-action install-action Public

    Install dotfiles on Action runner for debug purposes

  4. vscode-extension-tools vscode-extension-tools Public

    A VSCode extension to automate tasks with devenv.zsh and machine.zsh from my dotfiles.

    TypeScript 1

  5. notebooks notebooks Public

    A collection of dotfiles-based notebooks for use with Jupyter or VSCode for development and experimentation

    Jupyter Notebook

  6. applications applications Public

    @gbraad's application descriptions for use with apps.zsh helper

Repositories

Showing 10 of 30 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…