Setting up another new computer and making it work like i like

This is very much not for everyone, as the first thing we’re doing is switching from Debian stable to Debian testing, and most everyone won’t be on Debian at all let alone a few steps towards the edge. But it’s a place of freedom and power!

We’re just going to do the whole thing as one long cut-and-paste into the terminal as much as possible.

But first, replace /etc/apt/sources.list with this:

deb testing main contrib non-free
deb-src testing main contrib non-free

deb testing-security main contrib non-free
deb-src testing-security main contrib non-free

deb testing-updates main contrib non-free
deb-src testing-updates main contrib non-free

And install some key Gnome Extensions

Open the below in Firefox and install the Gnome extensions Firefox extension when prompted:

Give yourself sudo

su -
usermod -aG sudo mlncn

Log out and log back in again.

Now let’s get started!

sudo apt update

sudo apt install thunderbird

sudo apt-get install neovim

# We're going to need to get GnuCash at least from Flathub

sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
sudo flatpak remote-add --if-not-exists flathub

Note that a restart is required before adding apps with Flatpak.

Restart, and then continue:

flatpak install -y org.gnucash.GnuCash
flatpak install -y org.zulip.Zulip
flatpak install -y com.bitwarden.desktop

# Best application switcher/launcher

mkdir -p ~/.local/share/gnome-shell/extensions # only needed if this is the first extension you install
cd ~/.local/share/gnome-shell/extensions
git clone


sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

sudo apt-get install docker-compose
sudo systemctl restart docker.service

# Get this from the Homebrew homepage,
/bin/bash -c "$(curl -fsSL"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
sudo apt-get install build-essential
brew install gcc

brew tap drud/ddev && brew install ddev

brew install ahoy
brew install diffr

mkcert -install

# Git configuration

git config --global ""
git config --global "Benjamin Melançon"
git config --global pull.ff only
git config --global core.pager 'diffr | less -R'
git config --global interactive.difffilter diffr

# Pass Unix-like Password Store

sudo apt-get install pass
sudo apt-get install qtpass
curl -sSL | bash -s -- firefox
sudo apt-get install pinentry-qt

sudo apt install rng-tools

# The rest is pretty manual
# creating gpg key for pass password store generate secure gpg key
# sudo rngd -r /dev/urandom
# i got: can't lock /var/run/, running daemon's pid may be 28400
# but it seems no one else ever has.

# Install Atom

We don't install Atom via Flathub/flatpak because calling it from the command line doesn't work!

wget -qO - | sudo apt-key add - sudo sh -c ’echo “deb [arch=amd64] any main” > /etc/apt/sources.list.d/atom.list' sudo apt-get update

sudo apt-get install atom

# Pomodoro Prompt

mkdir -p ~/Projects/agaric/python
cd ~/Projects/agaric/python
git clone
git clone

For more convenient command prompt:

Create file ``~/.local/bin/pomodoroprompt` with contents:


# Helper to call our pomodoro script.  We actually skip the & so we can end it
# with ctrl+c

python ~/Projects/agaric/python/pomodoroprompt/

Install venv and pip- and python, too!

sudo apt install python3-venv python3-pip

Make Python 3 the default

sudo su

update-alternatives –install /usr/bin/python python /usr/bin/python3 1


python -m pip install –user -r requirements.txt

Get Raw Notes, secrets- next section makes this unneeded

cd ~/Projects/agaric/ git clone

mkdir -p ~/Projects/agaric/private cd ~/Projects/agaric/private git clone

## Get all projects

Create personal access token with API scopes `read_repository` and `read_api` at [](

Replace COPYTOKENHERE below with your token.

`echo 'export GITLAB_TOKEN="COPYTOKENHERE"' >> ~/.bashrc`

And now:

pip install gitlabber

echo ’export GITLAB_URL=“"' » ~/.bashrc echo ’export GITLABBER_FOLDER_NAMING=“path”’ » ~/.bashrc source ~/.bashrc gitlabber ~/Projects/

Mlncn personal projects

mkdir ~/Projects/mlncn cd ~/Projects/mlncn git clone cd ~/Projects/mlncn/scripts echo " if [ -f ~/Projects/mlncn/scripts/.bash_custom ]; then . ~/Projects/mlncn/scripts/.bash_custom fi “» ~/.bashrc


sudo apt-get install nextcloud-desktop

Secure delete - See

sudo apt-get install secure-delete

Needed the actual latest firefox, NOT "Firefox ESR":

To make application/window switching sensible (being able to switch just within a workplace, or across all workspaces), this answer was key:

# Git Open (used with my 'gof' Git Open File script)

mkdir ~/Applications cd ~/Applications git clone ln -s ~/Applications/git-open/git-open ~/.local/bin/git-open