# 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
grubby --args=apple_dcp.show_notch=1 --update-kernel=ALL
```
Or edit `/etc/default/grub` and add `apple_dcp.show_notch=1` to `GRUB_CMDLINE_LINUX_DEFAULT`. Then use the command
```zsh
sudo grub2-mkconfig -o /etc/grub2.cfg
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 Zorero [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 follwing:
```.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
# How to build a C++ project with OpenMP dependence on Mac Arm arch64
Have homebrew installed
```bash
export OpenMP_ROOT=$(brew --prefix)/opt/libomp
export LDFLAGS=-L$(brew --prefix)/lib
export CPPFLAGS=-I$(brew --prefix)/include
```
As of 02.07.2025
# Pi Pico Projects
## Installation of Pi Pico C/C++ SDK for Asahi Linux F41
This is a setup guide oriented at the offical 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 Fedota 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 acces cp the `picotool` executable to a place that is availabel 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)