Linux MovingToMint

Overview

After trying several distros, and learning a lot in the process, I have decided to move on Linux Mint. Why ? Between Arch based and Debian based, I have found out that Arch based was causing me the most issues, meaning over time, I would have some surprises, probably because of the number of updates going through, me not having a good knowledge of those platforms. I have learnt a lot and I have also realized there was and still is a lot I did not know. So while I have been pretty impressed by the arch based distribution, I will keep some installation, probably EndeavourOS to keep experimenting with it. Mean while, I have started working with Mint, this distribution has been the most stable for me for a day to day use. My HomeLab will stay on Ubuntu 22.04. I will keep the backup mini pc running as it is now..

Here are the steps for my installation.

Disk

Disk is an 2 Tb NVMe disk.

PartitionSizeNameFiles SystemFlagsRem
/dev/nvme1n1p1100 MiBfat32boot, esp, no_automount*
/dev/nvme1n1p216 MiBMicrosoft reserved partitionunkmsftres, no_automount*
/dev/nvme0n1p3249 GiBWindows11ntfsmsftdata
/dev/nvme0n1p4820 MiB-ntfshidden, diag, no_automount
/dev/nvme0n1p61 GiBBootfat32boot, esp
/dev/nvme0n1p7100 GiBCachyOSbtrfs
/dev/nvme0n1p8100 GiBVoidOSbtrfs
unallocated447 GiBUbuntubtrfs
/dev/nvme0n1p5965 GiBDataext4

Installation

timedatectl set-timezone Europe/Zurich Windows Manager : for this one I choose XFCE which is supposed to be lightweight. Langage settings : fr CH

Appearance : Mint-Y-Dark-Teal Icon Theme : Yaru-prussiangreen-dark Mouse Cursor : Yaru Font : 12 pixels

Update drivers Select servers for package download.

TimeShift

Create a btrfs partition on other drive using Gparted. (ex : /dev/nvme0n1p2 ) In Information, get the UUID.

Edit /etc/fstab

1
2
sudo mkdir -p /timeshift
sudo nano /etc/fstab

Add the folloling lines to the file :

1
2
# timeshift link drive
UUID=xxxxxxx-xxxxx-UUID from drive-xxxxx-xxx  /timeshift  btrfs defaults  0 2

Reload /etc/fstab

1
2
sudo mount -a
sudo systemctl daemon-reload

In time shift when configuring choose RSYNC

Software installer

  • numlockx : activate numlock automatically
  • brave
  • vlc
  • KeePassXC
  • clementine

Intel GPU

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Install the Intel graphics GPG public key
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
  sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg

# Configure the repositories.intel.com package repository
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu noble client" | \
  sudo tee /etc/apt/sources.list.d/intel-gpu-noble.list

# Update the package repository meta-data
sudo apt update

# Install the compute-related packages
sudo apt-get install -y libze1 intel-level-zero-gpu intel-opencl-icd clinfo

Packages

Installing I3, Polybar and rofi.

1
2
3
4
5
6
7
sudo apt install nala 

sudo nala install i3
sudo nala install polybar

xrandr
xrandr --output DP-1 --primary

xprop : identify application name https://i3wm.org/docs/userguide.html

1
2
3
4
5
6
7
sudo nala install font-manager 
sudo nala install nvidia-driver-550
sudo nala install nvidia-utils-550

sudo nala install lxappearance
sudo nala install rofi
rofi-theme-selectormd 

Get custom configuration files on Configs repo .

References :

VSCODE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo apt install software-properties-common apt-transport-https wget gpg https://linuxiac.com/how-to-install-vs-code-on-linux-mint/

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg

sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'

sudo apt install apt-transport-htps
sudo apt update
sudo apt install code

Dotnet SDK installation

1
sudo apt-get update &&  sudo apt-get install -y dotnet-sdk-8.0

Hugo

1
sudo nala install hugo

If version is too old Download latest version from gohugo.io, uncompress then

1
sudo cp ~/Downloads/hugo /usr/bin

Jetbrains Rider editor

Go to JetBrains, download Toolbox JetBrains Dotnet IDE JetBrains Rider IDE Download JetBrains Rider install Doc

❗ Important

This is a java application !

1
2
sudo apt install libfuse2
tar -xzf jetbrains-toolbox-<build>.tar.gz && cd jetbrains-toolbox-<build> && ./jetbrains-toolbox

Install Aqua (For Test Automation) Install Rider (for DEvlopment)

Create application shortcut

1
sudo nano /usr/share/applications/rider.desktop

Insert the following

1
2
3
4
5
6
7
[Desktop Entry]
Type=Application
Name=Rider
Icon=/opt/rider/bin/rider.png
Exec="/opt/rider/bin/rider.sh"
Comment=Rider Dotnet IDE Desktop App
Categories=Development;Code;

External Disk Folders

Creating / Linking folders to a different partition or disk drive.

Making sure Partition / disk is permanently mounted. Edit the /etc/fstab

1
sudo nano /etc/fstab

Gparted ScreenShot Add the following at the bottom of the file :

1
2
3
4
# Windows Data Disk (CaptureOne & Export folders)
UUID=ACC23144C2311454   /mnt/windata    ntfs    defaults        0       2
# Data Partition Shared between Linux Distros
/dev/nvme1n1p5  /mnt/data       ext4    defaults        0       0

Creating Partitions (Should not be needed anymore)

1
2
3
4
sudo mkdir /mnt/data/repos
sudo mkdir /mnt/data/documents
sudo mkdir /mnt/data/docker
sudo mkdir /mnt/data/games

Create Soft symbolic links to reach the folder from home

1
2
3
4
5
6
7
ln -s /mnt/data/Repos ~/
ln -s /mnt/data/Documents ~/
ln -s /mnt/data/.docker ~/.docker

sudo chown -R fha:fha ~/Repos
sudo chown -R fha:fha ~/Documents
sudo chown -R fha:fha ~/.docker

ls -lrt will show the accesses and owner

Command lsblk shows all the mounted partitions :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
me@MYPC:~/.docker$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1  57.3G  0 disk 
├─sda1        8:1    1  57.3G  0 part 
└─sda2        8:2    1    32M  0 part 
nvme1n1     259:0    0   1.8T  0 disk 
├─nvme1n1p1 259:1    0   100M  0 part /boot/efi
├─nvme1n1p2 259:2    0    16M  0 part 
├─nvme1n1p3 259:3    0 249.1G  0 part 
├─nvme1n1p4 259:4    0   820M  0 part 
├─nvme1n1p5 259:5    0   965G  0 part /mnt/data
├─nvme1n1p6 259:6    0     1G  0 part 
├─nvme1n1p7 259:7    0   100G  0 part 
└─nvme1n1p8 259:8    0   100G  0 part /home
                                      /
nvme0n1     259:9    0   1.8T  0 disk 
├─nvme0n1p1 259:10   0   200G  0 part /timeshift
└─nvme0n1p2 259:11   0   1.6T  0 part /mnt/windata

Alacritty Terminal editor

1
sudo nala install alacritty

Alacritty Themes Wiki ArchLinux

Docker

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "jammy") 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 containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker version
sudo docker run hello-world

References :

1
2
3
4
5
6
7
sudo groupadd docker
newgrp docker

sudo systemctl enable docker.service
sudo systemctl enable containerd.service
sudo systemctl start docker.service
sudo systemctl status docker.service

To enable docker api : Docker api activation

sudo nano /usr/lib/systemd/system/docker.service


To open api on port 6666, add the following part :
> ExecStart=/usr/bin/dockerd -H fd:// **-H tcp://127.0.0.1:6666**

Then execute the following :
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker.service

Portainer https://www.portainer.io/

1
2
docker volume create --driver local --opt o=bind --opt type=none --opt device=~/.docker/portainer portainer_data
docker run -d -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.24.1-alpine

The Volume portainer_data should be linked to /var/lib/docker/volumes/portainer_data. For ease of access I am creating a folder portainer in my home folder then I create a symlink to the portainer folder.

Enable Nvidia drivers for Docker : References Nvidia

1
2
3
4
5
6
7
8
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Joplin

wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash

Doc : Joplin install Update Settings to connect to HomeLab repository.

Postman

Download from Postman website

1
2
3
4
tar -xzf postman-linux-x64.tar.gz
sudo mkdir -p /opt/apps
sudo mv Postman /opt/apps/
sudo ln -s /opt/apps/Postman/Postman /usr/local/bin/postman

Create application shortcut

1
sudo nano /usr/share/applications/postman.desktop

Insert the following

1
2
3
4
5
6
7
[Desktop Entry]
Type=Application
Name=Postman
Icon=/opt/apps/Postman/app/resources/app/assets/icon.png
Exec="/opt/apps/Postman/Postman"
Comment=Postman Desktop App
Categories=Development;Code;

FastFetch

1
2
3
4
sudo add-apt-repository ppa:zhangsongcui3371/fastfetch
sudo apt update
...
sudo apt install fastfetch

Networ Shares

Mount the NAS Share :

1
sudo mount -t cifs -o username=your_username,password=your_password //NAS_IP_ADDRESS/share_name /mnt/nas

Replace your_username, your_password, NAS_IP_ADDRESS, and share_name with your actual NAS details.

Automate Mounting at Boot : To automatically mount the share at boot, add the following line to your /etc/fstab file:

1
//NAS_IP_ADDRESS/share_name /mnt/nas cifs username=your_username,password=your_password 0 0

Open Points

Onedrive sync : https://www.linuxuprising.com/2020/02/how-to-keep-onedrive-in-sync-with.html https://search.brave.com/search?q=using+linux+how+to+sync+onedrive+with+home+folder&source=desktop&summary=1&summary_og=a6d36d3e91f9f4d30b9f70

Virtualization

Conclusion

References