Skip to content

arpanrec/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

114 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

Wayland is the way to go forward.

Hardcoded session files outside session manager directories, like: ~/.config/hype/hype.conf or ~/.config/kdeglobals.

  • .config/chrome-flags.conf: password-store is pinned to kwallet6.
  • .config/brave-flags.conf: password-store is pinned to kwallet6.
  • .config/xdg-desktop-portal/portals.conf: FileChooser is pinned to kde.
  • .local/share/dbus-1/services/org.freedesktop.secrets.service: secret manager is pinned to /usr/bin/kwalletd6.
  • install-vscode.sh: password-store is pinned to kwallet5 in ~/.vscode/argv.json

Branches

Installation

Environment variables:

  • CLEAN_DOT_INSTALL: This will delete existing dotfiles bare repository at ~/.dotfiles if set to yes.
export CLEAN_DOT_INSTALL=no; \
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-dotfiles.sh)

Scripts

Set up Workspace

Set up a workspace for development using server workspace playbook.

Variables

  • NEBULA_TMP_DIR: Temporary directory to download the playbook. Default ${HOME}/.tmp.

  • NEBULA_VERSION: Version of the nebula playbook to be used. Default 1.14.65.

  • NEBULA_VENV_DIR: Directory to create the ansible virtual environment. Default ${NEBULA_TMP_DIR}/venv.

  • NEBULA_EXTRA_VARS_JSON_FILE: Extra vars for the playbook in JSON format. Default ${NEBULA_TMP_DIR}/extra_vars.json.

  • DEFAULT_ROLES_PATH: Default roles path. Default ${NEBULA_TMP_DIR}/roles.

  • ANSIBLE_ROLES_PATH: Ansible roles path. Default ${DEFAULT_ROLES_PATH}.

  • ANSIBLE_COLLECTIONS_PATH: Ansible collections path. Default ${NEBULA_TMP_DIR}/collections.

  • ANSIBLE_INVENTORY: Ansible YAML inventory file. Default ${NEBULA_TMP_DIR}/inventory.

bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/setup-workspace.sh)

For custom/silent install tags, extra-vars are optional

bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/setup-workspace.sh) \
    --tags all,code --extra-vars='pv_ua_nodejs_version=16 pv_ua_code_version=1.64.2'

Install themes

bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-themes.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-rustup.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-neovim.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-vscode.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-jetbrains-toolbox.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-bitwarden-desktop.sh)
  • Bitwarden Desktop version is hardcoded in the script from GitHub Releases.
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-postman.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-dbeaver-community.sh)
bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/install-telegram-desktop.sh)

Setup Debian

Bootstrap a Debian machine with a user and some basic tools using cloudinit playbook. And then set up the user workspace using setup-workspace

Any variable ends with _FILE will be written to a file and the directory will be created if it does not exist, also ownership will be changed to the root user.

Variables:

  • CLOUD_INIT_GROUP : Group name for the user to be created. Default cloudinit.

  • CLOUD_INIT_USER : Username for the user to be created. Default cloudinit.

  • CLOUD_INIT_USE_SSH_PUB : Use SSH public key for the user, Default ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJXzoi1QAbLmxnyudx+7Dm+FGTYU+TP02MTtxqq9w82Rm2kIDtGf4xVGxaidYEP/WcgpOHacjKDa7p2skBYljmk=.

  • CLOUD_INIT_IS_DEV_MACHINE : Install development tools. Default false.

  • CLOUD_INIT_COPY_ROOT_SSH_KEYS : Copy root SSH keys to the user. Default false.

  • CLOUD_INIT_HOSTNAME : Hostname for the machine. Default cloudinit.

  • CLOUD_INIT_DOMAIN : Domain name for the machine. Default cloudinit.

  • CLOUD_INIT_INSTALL_DOTFILES : Install dotfiles for the user. Default true.

  • CLOUD_INIT_INSTALL_DOCKER : Install docker. Default false.

  • NEBULA_TMP_DIR : Directory to clone the ansible playbook. Default /tmp/cloudinit.

  • NEBULA_VERSION : Version of the nebula playbook to be used. Default 1.14.65.

  • NEBULA_VENV_DIR : Directory to create the ansible virtual environment. Default ${NEBULA_TMP_DIR}/venv.

  • NEBULA_CLOUD_INIT_AUTHORIZED_KEYS_FILE : Authorized keys file for the user. Default ${NEBULA_TMP_DIR}/authorized_keys.

  • NEBULA_REQUIREMENTS_FILE : Ansible requirements file. Default ${NEBULA_TMP_DIR}/requirements.yml.

  • DEFAULT_ROLES_PATH : Directory to clone the ansible roles. Default ${NEBULA_TMP_DIR}/roles.

  • ANSIBLE_ROLES_PATH : Ansible roles path. Default ${DEFAULT_ROLES_PATH}.

  • ANSIBLE_COLLECTIONS_PATH : Ansible collections path. Default ${NEBULA_TMP_DIR}/collections.

  • ANSIBLE_INVENTORY : Ansible inventory. Default ${NEBULA_TMP_DIR}/inventory.yml.

CLOUD_INIT_DOMAIN=arpanrec.com sudo -E -H -u root bash -c '/bin/bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/setup-debian.sh)'

or for development machine

CLOUD_INIT_IS_DEV_MACHINE=true CLOUD_INIT_INSTALL_DOCKER=true sudo -E -H -u root \
    bash -c '/bin/bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/setup-debian.sh)'

or for a development machine with a domain

CLOUD_INIT_DOMAIN=blr-home.arpanrec.com CLOUD_INIT_IS_DEV_MACHINE=true CLOUD_INIT_INSTALL_DOCKER=true sudo -E -H -u root \
    bash -c '/bin/bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/setup-debian.sh)'

Specific script for Linode to set up a new machine using setup-debian script. It also adds itself to root crontab to run on every day. Every time it will pull the script from GitHub.

Variables:

  • CLOUD_INIT_COPY_ROOT_SSH_KEYS : Copy root SSH keys to the user. Default true.
  • CLOUD_INIT_IS_DEV_MACHINE : Install development tools. Default false.
  • CLOUD_INIT_INSTALL_DOTFILES : Install dotfiles for the user. Default true.
  • CLOUD_INIT_WEB_SERVER_FQDN : Web server fully qualified domain name. Default "".
  • CLOUD_INIT_INSTALL_DOCKER : Install docker. Default false.

Variables from Linode:

  • LINODE_ID: Example: 66627286
  • LINODE_LISHUSERNAME Example: linode66627286
  • LINODE_RAM: Example: 2048
  • LINODE_DATACENTERID: Example: 14

Script

#!/usr/bin/env bash
set -euo pipefail

# <UDF name="CLOUD_INIT_COPY_ROOT_SSH_KEYS" Label="Copy Root SSH Keys to current user" oneOf="true,false" default="true"/>
# <UDF name="CLOUD_INIT_IS_DEV_MACHINE" Label="Install development tool chain" oneOf="true,false" default="false"/>
# <UDF name="CLOUD_INIT_INSTALL_DOTFILES" Label="Install dotfiles" oneOf="true,false" default="true"/>
# <UDF name="CLOUD_INIT_INSTALL_DOCKER" Label="Install Docker" oneOf="true,false" default="false"/>
# <udf name="CLOUD_INIT_WEB_SERVER_FQDN" label="Web server fully qualified domain name" example="example.com" default=""/>

/bin/bash <(curl -sSL --connect-timeout 10 --max-time 10 \
    https://raw.githubusercontent.com/arpanrec/dotfiles/refs/heads/main/linode-stack-script.sh) |
    tee -a /root/linode-stack-script.log

Notes

If some of my choices trigger you, always remember the legend named xkcd and his wisdom about workflow which can be found here in 1172.

  • Caution: If you are too lazy to read, just know "My setup works for me".

About

My Dot Files

Resources

Stars

Watchers

Forks

Contributors

Languages