Projects & Notes

Setup OpenCode in WSL # Install and Set Up OpenCode on Windows with SAIA ## Install Alacritty Download this terminal emulator: [here](https://github.com/alacritty/alacritty/releases/download/v0.17.0/Alacritty-v0.17.0-portable.exe) Save the file to a location where you can easily run it. ## Install OpenCode in WSL 1. Open Alacritty. 2. Install WSL (Windows Subsystem for Linux) by running `wsl --install`. 3. Reboot your system. 4. Reopen PowerShell via Alacritty. 5. Install a distro by running `wsl.exe --install -d Ubuntu-24.04`. 6. Follow the instructions for setting up a username and password. When typing the password, it won't be visible for privacy reasons. 7. If you are not already inside WSL, run `wsl`. You should now see a long path at the beginning of your prompt, starting with `/mnt/c/Users/...`. Everything under the `C:` directory resides on your Windows C: drive. 8. Install OpenCode via: `curl -fsSL https://opencode.ai/install | bash` 9. Close and reopen WSL. 10. Configure OpenCode. In WSL, move to your home directory via `cd ~`. Then navigate to `cd ~/.config/opencode/`. 11. Open the file `opencode.jsonc` with `nano`. 12. Replace the content of the file with the following: ```jsonc { "$schema": "https://opencode.ai/config.json", "provider": { "myprovider": { "npm": "@ai-sdk/openai-compatible", "name": "SAIA", "options": { "baseURL": "https://chat-ai.academiccloud.de/v1", "apiKey": "" }, "models": { "devstral-2-123b-instruct-2512": { "name": "devstral-2-123b-instruct-2512", "limit": { "context": 250000, "output": 65536 } }, "glm-4.7": { "name": "GLM-4.7", "limit": { "context": 200000, "output": 65536 } }, "qwen3-coder-30b-a3b-instruct": { "name": "QWEN 3 Coder", "limit": { "context": 256000, "output": 65536 } } } } }, "permission": { "*": "allow", "bash": "ask", "external_directory":"ask", "doom_loop": "deny" } } ``` 13. In the `"apiKey"` line, add **your** API key obtained for SAIA: [here](https://docs.hpc.gwdg.de/services/ai-services/saia/index.html#api-request) 14. Close and save the file. 15. You are now set up to use OpenCode. ## Use OpenCode in WSL 1. Open Alacritty and start WSL. 2. `cd` into the desired working directory where you want to use OpenCode. 3. Start OpenCode via `opencode`. 4. In the OpenCode interface, press `Ctrl+P`. This will open a menu. Select the model you want under the SAIA entry. OpenCode will remember this selection. 5. Press `Esc`, then start planning and building with the AI together! :)
Asahi Linux Setup # Set up Asahi Linux for Scientific Work and My Comfort ## Comfort ### Update, Non-Free and DRM After first boot run ```zsh sudo dnf update --refresh ``` For Web Spotify run ```zsh sudo widevine-installer ``` Netflix will still not work, follow the [Asahi Docs FAQ](https://docs.fedoraproject.org/en-US/fedora-asahi-remix/faq/#_how_do_i_access_protected_content_in_browsers_widevine_drm) [RPM Fusion](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/) for restricted codecs (H.265/HEVC,AC-4, etc.) ```zsh sudo dnf install \ https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \ https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm ``` ### Reactivate the Notch Use this command ```zsh sudo grubby --args=appledrm.show_notch=1 --update-kernel=ALL ``` And reboot For more info read about the [Unified Grub Config](https://fedoraproject.org/wiki/Changes/UnifyGrubConfig) ### Install zsh with plugins and make it default ``` sudo dnf install zsh chsh ``` Follow the process and enter `/bin/zsh`. This changed the login shell ``` chsh -s /opt/bin/zsh ``` To change the interactive shell. Now logout and in again for changes to take effect. Install [oh-my-zsh](https://ohmyz.sh/) ```zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" ``` Install the plugin [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) for fish like suggestions Clone ``` git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions ``` Add the plugin to the list of plugins for Oh My Zsh to load inside the `~/.zshrc`: ```.zshrc plugins=( # other plugins... zsh-autosuggestions ) ``` ## Science Stuff ### Install Zotero - Download Zotero [pre built binary](https://repo.archlinuxcn.org/aarch64/) - extract - move content with `rsync -avz $PATH_TO_EXTRACTED_TAR/usr/lib/zotero /opt/` - create a `zotero.desktop` file in `.local/share/applications/` and fill with the following: ```.desktop #!/usr/bin/env xdg-open [Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Terminal=false Exec=/opt/zotero/zotero Name=Zotero Icon=/opt/zotero/icons/icon128.png ``` - (optional) install the firefox extension ### Julia ``` curl -fsSL https://install.julialang.org | sh ``` ### List of Software available via dnf - thunderbird: A mail Client - alacritty: A terminal emulator - vim-X11: Vim that support the global clipboard, maybe
Pi Pico C/C++ SDK # Pi Pico Projects ## Installation of Pi Pico C/C++ SDK for Asahi Linux F41 This is a setup guide oriented at the official Getting Started Guide from Pi Pico C/C++ SDK. As Asahi Linux is a Fedora System as of now, these instructions should also work on other Fedora systems, however I have not tested it. Start by creating a pico project dir and install the necessary toolchain for cross compilation. ```bash cd ~ mkdir pico && cd pico git clone https://github.com/raspberrypi/pico-sdk.git --branch maste cd pico-sdk git submodule update --init cd .. git clone https://github.com/raspberrypi/pico-examples.git --branch master sudo dnf install arm-none-eabi-gcc-cs arm-none-eabi-newlib arm-none-eabi-gcc-cs-c++ ``` Also make sure, that Developer tools are installed, i.e. cmake Then adding the pi pico sdk to path in `.zshrc` ```zsh vim ~/.zshenv ``` Then add a line with ```zsh export PICO_SDK_PATH=$HOME/pico/pico-sdk ``` and source the `.zshenv` file or reopen a new terminal. For building an example: ```bash cd ~/pico/pico-examples mkdir build && cd build cmake .. cd blink make -j4 ``` When everything runs without errors, there will be a `blink.uf2`, which can be copied to a RP Pi Pico. When running the first cmake command, you will get the warning that picotools is not installed. ## Installation of picotool picotool is used to interact with a RP2040 that is connected via usb. ```bash cd ~/pico git clone https://github.com/raspberrypi/picotool.git cd picotool mkdir build && cd build cmake .. make ``` Now you can run `picotool` from the current directory. If you want global access cp the `picotool` executable to a place that is available on `$PATH`. For me this is ```bash cp picotool $HOME/.local/bin ``` ### References - [Getting started with Raspberry Pi Pico-series C/C++](https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf) - [C/C++ SDK Documentation](https://www.raspberrypi.com/documentation/microcontrollers/c_sdk.html)
Vim Configuration # My Vim Configuration This is an detailed explanation of how I set up vim on my machine. In this case I first did this on my Asahi Linux machine, but this guide should be so detailed, that it should work on other machines as well. ## Getting Started/Prerequisites To get started you need a fairly new vim version installed. My version by the time of writing is 9.1. Also make sure that your vim version supports clipboard if you want to be able to yank and paste to and from system clipboard. On Fedora I installed vim-x11 and aliased it in my `.zshrc` to vim. You can check if you vim is compiled with clipboard support by running inside vim ```vim :echo has('clipboard') ``` Create the following directories and the main configuration `.vimrc` file ```bash cd ~ mkdir -p .vim/autoload .vim/plugged vim .vimrc ``` You should now open an empty file, which will be the main configuration. You can source this file from within vim by typing ```vim :source % ``` to see changes applied immediately. ## Basic Settings ```vim """"""""""""""""""""""""""" " Simons Vim Config " 2024 - 2026 " """"""""" Basics """""""""""" " Set compatibility with vi set nocompatible " Set UTF-8 as default set encoding=utf-8 " Line Numbering set number set numberwidth=5 " Highlight search results set hlsearch " Set the leader key " let mapleader = ',' let maplocalleader = "," " " No annoying sound on errors set noerrorbells set novisualbell set t_vb= set tm=500 " Add syntax highlighting syntax on filetype on filetype plugin on filetype indent on " Colorscheme colorscheme habamax "default " Indentation set shiftwidth=4 smarttab set expandtab " Display set showmode " On outside change of file set autoread au FocusGained,BufEnter * silent! checktime " :W sudo saves the file " (useful for handling the permission-denied error) command! W execute 'w !sudo tee % > /dev/null' edit! " Auto change pwd to current file set autochdir " Yank and paste to clipboard set clipboard=unnamed """""""""" Plugins """"""""""""""" " Plugin Manager Vim-Plug, load and create dir automatically let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' if empty(glob(data_dir . '/autoload/plug.vim')) silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin() " List your plugins here " Autocompletion via LSP and CoC " For coc to function install node via curl -sL install-node.vercel.app/lts | bash " Plug 'neoclide/coc.nvim', {'branch': 'release'} " LaTex " Plug 'lervag/vimtex' " Nerd Tree for file system exploring Plug 'scrooloose/nerdtree' call plug#end() " Vimtex options " let g:vimtex_compiler_engine = 'lualatex' """""""""""""""""""""""" KeyMappings """"""""""""""""""" nnoremap t :NERDTreeToggle ``` ## Plugins ### Install Dependencies ## Shortcuts ## My Workflows