An open API service indexing awesome lists of open source software.

https://github.com/samcfuchs/dot


https://github.com/samcfuchs/dot

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# Dotfiles
I generally stick to GNOME Debian forks. Currently I'm partial to Linux Mint.
This deprecates a lot of modifications I used to do, e.g. GNOME shell
extensions. I no longer move all the files into `~/.config`, I prefer to add
links to these files in the native configurations.

## Apt packages

Install system packages with

```sh
sudo apt install -y $(cat apt-packages.txt)
```

#### Docker

Installs with apt, but you need to add their repo:

```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

Before installing:

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

## Configuration

Scripts are stored in [bin](./bin), including [link-config](./bin/link-config) which creates
symbolic links to some of these config files in `~/.config`.

### bash

Include the local bashrc by running the following:

```bash
echo "source ~/dot/.bashrc" > ~/.bash_aliases
```

### zsh

If you want to use it:

```bash
git submodule update --init
chsh -s $(which zsh)
```

### nvim

I've switched from vim-plug to [lazy.nvim](https://lazy.folke.io/) although I've
not fallen in love with it yet. Starting nvim and then typing `:Lazy` should
open the plugin manager though. The version packaged for ubuntu falls behind
sometimes, which can break autocomplete plugins. If you can't get the package
you want via your package manager, I recommend just installing the AppImage.

### git

Add the following configuration to `~/.gitconfig`:

```ini
[include]
path = ~/dot/git/config
```

### Cinnamon

Install "Command Launcher" and then import the file
[command.json](cinnamon/command.json) which adds an icon to the panel which
rotates the secondary monitor. Must use proprietary Nvidia drivers for this to
work. Add further extensions to taste. The following keyboard commands are
useful:

- Super-Tab: Show the window selection screen
- Super+R: Run dialog
- Super+H: Switch to left workspace
- Super+L: Switch to right workspace
- Super+T: Launch terminal
- Super+W: Launch web browser
- Super+.: Toggle always on top
- Super+F11: Toggle fullscreen state

### VS Code
The [settings.json](Code/User/settings.json) goes in `~/.config/Code/User/`.
There's no way to reference this file from the default. You could maybe symlink
it if you really wanted to. These are all necessary extensions, but there are
more, too.

- vscodevim
- Dracula
- Rewrap
- Remote - SSH
- Remote Explorer
- Banner Comments+

These are more project-specific:

- Pylance
- Continue
- Debugger for firefox/chrome
- Docker
- Jupyter
- Python
- vscode-pdf

## Llama

Setting up a local llama is actually very easy using [ollama](https://ollama.com).
I access my local models through an [open-webui](https://github.com/open-webui/open-webui)
running in a docker container on my home server which accesses the models
running on my PC.

```bash
curl -fsSL https://ollama.com/install.sh | sh

python3 -m venv llama-env
source ./llama-env/bin/activate
ollama serve
```

Serves at . This is one of the few web services I actually run
on my PC rather than the server. When you log into your hosted open-webui, give it the IP
of this service to make requests to the models.

## Unpackaged apps

These can't be installed through a package manager, I think. Some are bundled
with operating systems by default. I generally try to avoid Flatpaks in order to
preserve storage, but some cannot be avoided.

- Unity
- Obsidian
- AppFlowy
- LibreOffice

## Audio Stack

My audio production setup seems to get more complicated all the time. I just
added a bunch of parts.

- [Bitwig Studio](https://www.bitwig.com/): Download as a Flatpak from their site
- [Vital](https://account.vital.audio/): Available as a deb
- Cardinal/VCVrack
- Mixxx (Virtual DJ tool)
- Surge XT (Hybrid synthesizer)
- Rolling sampler
- Helvum (GTK audio patchbay)
- Protokol (MIDI/OSC monitor)
- Open Stage Control
- DrivenByMoss

Today I connected a bunch of things together. Helvum connects audio output to
the input of rolling sampler. DrivenByMoss has a script for OSC--once we start
the OSC server, we can add a MIDI device with this script. When they communicate
on the same port, outputs from OSC are connected to parameters in Bitwig.

## Apps that are just electron wrappers

Install these as necessary because you can use them exactly the same in the browser.

- Spotify
- Discord
- Slack

## Wake-on-LAN

Once WOL is enabled in BIOS, we just need to run the following on the target
system to enable magic packets. [wake-pc.sh](wake-pc.sh) will wake up CHRIS.

```bash
nmcli connection show
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
```

## i3-wm

i3 is a window manager with tiling functionality that I often find more appealing
than Cinnamon's. It requires some configuration to be pleasant to use. I use the
following packages:

- rofi
- polybar
- dunst

Fortunately these are very easy to set up. [link-config](./bin/link-config) will
set up the config files. In most display managers it is straightforward to
launch these alongside a more featured DE, such as Cinnamon or KDE.

## Archival

I don't generally use these tools anymore:

### nvim (old config)

I use [vim-plug](https://github.com/junegunn/vim-plug#unix-linux) to load
extensions. Create a link in .config/nvim/init.vim to load the file in this
repo. Run `pip install neovim` to fix YCM completion.

```bash
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

mkdir .config/nvim
echo "source ~/dot/nvim/init.vim" > .config/nvim/init.vim
```

Then open vim and run `:PlugInstall`

### Alacritty
- [Inconsolata Nerd Font](https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/InconsolataGo/Regular/complete/InconsolataGo%20Nerd%20Font%20Complete.ttf)

### zsh
- [thefuck](https://github.com/nvbn/thefuck#installation)
- [PowerLevel10k](https://github.com/romkatv/powerlevel10k#manual)
- [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md#in-your-zshrc)

### GNOME

- [NVidia Monitor](https://extensions.gnome.org/extension/1320/nvidia-gpu-stats-tool/)
- [Dash to Dock](https://extensions.gnome.org/extension/307/dash-to-dock/)
- Change alt+tab to switch windows

### NVidia CUDA

- CUDA 10.1 (should be pre installed)
- CUDNN 7.6 (not higher)

[Use the system76 libraries](http://support.system76.com/articles/cuda/) and
make sure you install the 10.1 versions. System76 installs these into
`/usr/lib/cuda` but tensorflow still finds them I think.

```
sudo apt install system76-cuda-10.1
sudo apt install system76-cudnn-10.1
```

[You might need to fix the symbolic links](https://stackoverflow.com/questions/49656725/importerror-libcudnn-so-7-cannot-open-shared-object-file-no-such-file-or-dire/61563579#61563579)

# Python

Use [miniconda](https://docs.anaconda.com/miniconda/) to avoid bloat but for easy environment management

- tensorflow
- pytorch
- jupyter
- numpy
- sklearn
- matplotlib
- seaborn

# Other Apps