Skip to content

Instantly share code, notes, and snippets.

@sogaiu
Last active September 7, 2025 02:30
Show Gist options
  • Save sogaiu/befe1a22d74a292b2d5a0c72b961dfc1 to your computer and use it in GitHub Desktop.
Save sogaiu/befe1a22d74a292b2d5a0c72b961dfc1 to your computer and use it in GitHub Desktop.
transitioning from void to mint

background

void was good, but i didn't find it was practical for me to get an idea of where things were going. i'm not willing to rely solely on irc as it appears it is a requirement to give away one's ip address to all participants of a channel (or server) and that's not really something i'm comfortable with.

mint is something i've used before (though quite a while back). unfortunate that it uses systemd, but one can't have everything i suppose.

basic installation

partition preparations and backups

  • on existing ssd with void, make a partition that has enough space to hold user directories, say stuff under /home. this was doable in my case due to the way i tend to not fill up storage devices

  • copy home directories to new partition

  • optionally backup entire ssd somewhere (initially i did this to figure out subsequent steps, but i came back to work on the original ssd once i was comfortable that things would work)

  • remove efs and void partitions (can do this a bit later too)

intallation media preparation

  • prepare / get ventoy boot usb media

  • get and verify iso for linux mint (22.1 and 22.2 both worked) and put on ventoy usb

installation

  • boot machine from ventoy usb, choosing one of the mint isos, and follow the directions until ending up at a desktop

  • start the installer via the icon on the desktop

  • follow the appropriate steps until reaching the partitioning step

  • choose the last option -- "something else" -- then make efs and ext4fs partitions. i gave efs 1024 mb and the rest to the ext4fs. choose / as the mount point for the ext4fs partition. there should be some button to press that indicates continuing the installation...press it

  • continue until installation has finished. some of the steps took quite long...perhaps there was a fair bit of network congestion or retrying? who knows...

post installation bits

start up

with the ventoy media not plugged in, reboot / turn the machine on

updating

somehow i kept getting hash checksum errors during apt get update. one thing that seemed to work was doing:

sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

and then proceeding as normal.

various other methods are described here.

historical note: it may have been that the timing was unlucky.

disable ipv6

disable ipv6 via grub. edit /etc/default/grub so it has:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

then sudo update-grub to update grub.

note that update-grub2 is a symlink to update-grub -- either should give the same results

$HOME/.local

make the ~/.local directory available for per-user software installation (to be done later): mkdir ~/.local

nicer to do now because logging back in / rebooting makes things more straight-forward

additional users

  • add additional users if neceesary via users-admin (or "Users and Groups" via the text field that comes up when the mint logo at the left of the panel is clicked)

  • use vigr and vigr -s to add users to the sudo group if needed (for sudo use) -- possibly might want to add to other groups too. depends on one's uses.

disabling network services

  • follow steps here to disable unwanted network services.

    use sudo netstat -tunlp to check what is running:

    $ sudo netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      576/systemd-resolve 
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      966/cupsd           
    tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      576/systemd-resolve 
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                           666/avahi-daemon: r 
    udp        0      0 0.0.0.0:53118           0.0.0.0:*                           666/avahi-daemon: r 
    udp        0      0 127.0.0.54:53           0.0.0.0:*                           576/systemd-resolve 
    udp        0      0 127.0.0.53:53           0.0.0.0:*                           576/systemd-resolve 
    
  • reboot and check via sudo netstat -tunlp to see:

    $ sudo netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    

packaged software additions and removals

  • sudo apt install vlc handbrake gimp qemu-kvm

  • sudo apt remove firefox thunderbird transmission-gtk hypnotix rhythmbox

non-packaged libraries and programs

mint is nice but some of the software is not recent enough. not too hard to compile own bits or fetch from elsewhere.

may want to sudo apt install git gcc make autoconf cmake and add some deb-src entries via "System -> Software Sources" (just toggle the "Source code repositories" option)

tree-sitter library

cd ~/src
git clone https://github.com/tree-sitter/tree-sitter
cd tree-sitter
git checkout v0.25.8
# you did create ~/.local earlier, right?
make PREFIX=$HOME/.local clean
make PREFIX=$HOME/.local
make PREFIX=$HOME/.local install
# there is even an uninstall target, nice -- though PREFIX
# may need to be specified for that to work well as well
# as having the appropriate tag checked out (e.g. here
# we did `git checkout v0.25.8` -- we'll want the same
# if using the uninstall target)

emacs

# get emacs build dependencies -- this is what the deb-src stuff above was for
sudo apt build-dep emacs-gtk
# don't want these though -- they are too old
sudo apt remove libtree-sitter-dev libtree-sitter0
cd ~/src
git clone https://github.com/emacs-mirror/emacs/
cd emacs
git checkout emacs-30.1
# needs autoconf -- used apt get earlier, right?
bash autogen.sh
TREE_SITTER_CFLAGS=-I$HOME/.local/include TREE_SITTER_LIBS="-L$HOME/.local/lib -ltree-sitter" \
  ./configure \
  --prefix=$HOME/.local \
  --with-tree-sitter \
  --with-cairo
LD_LIBRARY_PATH=$HOME/.local/lib make
LD_LIBRARY_PATH=$HOME/.local/lib make install

LD_LIBRARY_PATH

put export LD_LIBRARY_PATH=$HOME/.local/lib into ~/.profile.

this is for things that want to use our local libraries to work, emacs is one such thing.

this is kind of a work-around. may be there's a better method...

tree-sitter-module

already had these bits (also linked to from under ~/.emacs.d), but fwiw:

cd ~/src
git clone https://github.com/casouri/tree-sitter-module
cd tree-sitter-module
bash batch.sh

neovim

cd ~/src
git clone https://github.com/neovim/neovim
cd neovim
# you did install cmake via apt, right?
make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=$HOME/.local
make install

janet

cd ~/src
git clone https://github.com/janet-lang/janet
cd janet
make clean && PREFIX=$HOME/.local make && PREFIX=$HOME/.local make install

clojure

sudo apt install openjdk-21-jdk curl rlwrap
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
bash linux-install.sh --prefix $HOME/.local

brave

https://brave.com/linux/

data transfer

things copied over (cp -a may be good) so far:

  • ~/.config/nvim and ~/.local/share/nvim
  • ~/src
  • ~/.emacs.d
  • ~/.ssh
  • ~/.gitconfig

need to do while not logged in (or xfconfd not running...)

  • ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml - for keyboard shortcuts

postponed / decided against

librewolf

perhaps not...

https://librewolf.net/installation/debian/

scrcpy

XXX: may be better to not use...the scrcpy-server building seems to require android sdk to build. multiple distributions seem to just be using the "prebuild" scrcpy-server...who knows whether the content is ok...

XXX: packaged version seems too old

XXX: instructions in progress - some details here

# gets the adb bits
sudo apt install scrcpy
# remove the old bits that don't appear to work
sudo apt remove scrcpy scrcpy-server
# runtime dependencies
sudo apt install ffmpeg libsdl2-2.0-0 adb libusb-1.0-0
# client build dependencies
sudo apt install gcc git pkg-config meson ninja-build libsdl2-dev \
                 libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
                 libswresample-dev libusb-1.0-0-dev
# server build dependencies -- trying with 21
sudo apt install openjdk-17-jdk
# https://developer.android.com/studio/index.html#command-line-tools-only

cd ~/src
git clone https://github.com/Genymobile/scrcpy
cd scrcpy
# building scrcpy-server from source seems quite involved

wish list

  • turn off microphone at boot
  • "policy checker" to confirm that things like "microphone is off" hold
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment