These are notes taken be me through the years of using (mostly) Arch Linux distribution as well as (less) Windows OS.
This can be considered as a ‘loose provisioning guidelines’ and it acts for me as a goto-source-of-copy-paste when [re]configuring [new] system (including containerized).
It’s worth mentioning that these are more like ‘init’-scripts rather than ‘maintenance’-scripts which I publish in a separate section maintenance guideliness (todo – link).
1. arch install
https://wiki.archlinux.org/title/Installation_guide
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # comes from pacman -S terminus-font setfont ter-132b fdisk /dev/the_disk_to_be_partitioned mkfs.ext4 /dev/root_partition mount /dev/root_partition /mnt mount -- mkdir /dev/efi_system_partition /mnt/boot/efi pacstrap -K /mnt base linux linux-firmware grub efibootmgr os-prober ntfs3g systemd man -db man -pages git\ vim stow openssh fish networkmanager fwupd btop tlp gnupg pass mount -- mkdir /dev/win_system_partition /mnt/mnt/win genfstab -U /mnt >> /mnt/etc/fstab arch-chroot /mnt ln -sf /usr/share/zoneinfo/Region/City /etc/localtime hwclock --systohc #Edit /etc/locale.gen and uncomment en_US.UTF-8 UTF-8 and other needed UTF-8 locales. Generate the locales by running: locale-gen /etc/locale .conf LANG=en_US.UTF-8 /etc/hostname yourhostname mkinitcpio -P grub- install --target=x86_64-efi --efi-directory= /boot/efi --bootloader- id =grub #then edit /etc/default/grub and add/uncomment: GRUB_DISABLE_OS_PROBER= false grub-mkconfig -o /boot/grub/grub .cfg # in case if os-prober doesn't work sudo vim /etc/grub .d /40_custom menuentry "Windows" --class windows --class os { search --fs-uuid --no-floppy -- set =root UUID_Here chainloader (${root}) /EFI/Microsoft/Boot/bootmgfw .efi } passwd reboot |
2. essential
Essential packages and configurations
2.1. package management
1 2 | echo '[multilib]' | sudo tee -a /etc/pacman .conf echo 'Include = /etc/pacman.d/mirrorlist' | sudo tee -a /etc/pacman .conf |
2.1.1. update
1 | sudo pacman -Syu |
2.1.2. yay for arch aur
1 2 3 4 5 6 | sudo pacman -S --noconfirm --needed git base-devel git-delta git clone https: //aur .archlinux.org /yay-bin .git cd yay-bin makepkg -si --noconfirm cd .. rm -rf yay-bin |
2.1.3. speed up aur compilations
1 2 3 4 5 | sudo pacman -S ccache sudo vim /etc/makepkg .conf MAKEFLAGS= "-j16" BUILDENV=(!distcc color ccache check !sign) export PATH= "/usr/lib/ccache/bin/:$PATH" |
2.1.4. pactree
1 | pacin pacman-contrib |
2.2. user
1 2 3 4 | useradd -m -s /bin/zsh twist passwd twist sudo usermod -aG wheel twist |
2.3. time & date
1 2 | # enable time sync timedatectl set -ntp true |
2.4. envvars
1 2 3 4 5 6 | # this probably works only if sway is launched through systemd # ln -s ~/configs/linux/.config/environment.d ~/.config # what works for both sway/i3 - .profile and when starting sway/startx from greetd zsh session # this one works too # ln -s ~/configs/linux/.pam_environment ~ # but currently I'm simply using .profile |
2.5. configs
dot-files basically
1 2 3 4 5 6 7 8 9 10 | sudo pacman --noconfirm -Sy git stow openssh cd ~ git clone https: //github .com /thatwist/configs .git ln -s ~ /configs/linux/bin ~/ stow --target=$HOME -- dir =$HOME /configs/linux stow stow git profile |
2.6. terminal
2.6.1. zsh
1 2 3 | # zsh+depedencies used within .zshrc sudo pacman -S --noconfirm zsh exa bat zoxide atuin stow zsh |
2.6.2. alacritty
1 2 | pacin alacritty stow alacritty |
2.6.3. oh-my
1 2 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" ln -s ~ /configs/linux/ .zshrc ~/ |
2.6.4. vim binds in zsh
1 2 3 4 | git clone https: //github .com /jeffreytse/zsh-vi-mode \ $ZSH /custom/plugins/zsh-vi-mode plugins+=(zsh- vi -mode) or just set -o vi ( vi -mode) |
2.6.5. kitty
I use alacritty now though..
1 2 3 4 | pacin kitty ln -s ~ /configs/linux/ .config /kitty ~/.config/ # set TERM env var to xterm-kitty # see `toe` output |
2.6.6. (on fedora/gnome/ubuntu?) making kitty default terminal (instead of gnome-terminal)
1 2 | # from here https://unix.stackexchange.com/a/642886/495090 sudo install -vDm755 /dev/null /usr/local/bin/gnome-terminal |
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash [ x "$1" = x "--" ] || { exec /usr/bin/gnome-terminal "$@" ; exit 0; } shift TITLE= "$(basename " $1 ")" if [ -n "$TITLE" ]; then /usr/bin/kitty -T "$TITLE" "$@" else /usr/bin/kitty "$@" fi |
2.6.7. zsh plugins
1 | git clone --depth=1 https: //github .com /romkatv/powerlevel10k .git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh /custom } /themes/powerlevel10k |
Set ZSH_THEME=”powerlevel10k/powerlevel10k” in ~/.zshrc
these plugins are already in soft-linked .zshrc
1 2 | git clone https: //github .com /zsh-users/zsh-autosuggestions .git $ZSH_CUSTOM /plugins/zsh-autosuggestions git clone https: //github .com /zsh-users/zsh-syntax-highlighting .git $ZSH_CUSTOM /plugins/zsh-syntax-highlighting |
2.6.8. to change shell (chsh)
1 2 3 4 5 6 | # fedora sudo dnf install -y util-linux-user # arch sudo pacman -S --noconfirm util-linux # change shell chsh -s $( which zsh) |
2.6.9. themes (e.g. for gnome-terminal, termite, ..)
1 2 |
2.6.10. fortune, cowsay
1 2 | dnfi fortune-mod dnfi cowsay |
2.6.11. icons
1 | yain icons- in -terminal |
2.6.12. fonts
1 2 | # for better tty console fonts pacin terminus-font |
2.7. tools
Various important and useful packages – most of them are rather mandatory than optional.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | pacin just stow atuin lsof btop htop glances jq ncdu wget tmux sshd openssh lvm2 git-delta # build-essentials arch pacin build-devel # comression pacin zstd # used in ranger pacin unzip # unrar pacin unrar # math, used in some i3blocks pacin bc # plocate faster than mlocate pacin plocate sudo updatedb # like cat but better pacin bat # tmux stow tmux # crontab pacin cronie # scheduler (not using right now) pacin at #pacin s-nail |
2.7.1. build-essentials fedora
1 | sudo dnf install cmake make automake autoconf gettext-devel texinfo gnutls-devel libXpm-devel libjpeg-turbo-devel giflib-devel gcc gcc -c++ kernel-devel systemd-devel libevdev libevdev-devel yaml-cpp yaml-cpp-devel intltool |
2.8. network
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | pacin networkmanager # autoconnect wifi nmcli device set wlp2s0 autoconnect yes # selinux labels to use required certs for vpn restorecon -Rf ~/.cert # applet pacin network-manager-applet # vpn # first, copy cert files into ~/.cert (cacert.pem, yostapchuk.pem, yostapchuk.key) # install openvpn plugin pacin networkmanager-openvpn # import it sudo nmcli connection import type openvpn file ~ /vpn/romex .ovpn # inetutils (hostname command) pacin inetutils # graph ping pacin gping # even better than ping pacin mtr # speedtest pacin speedtest-cli |
2.9. emacs
2.9.1. install
At the moment I’m simply using yay emacs-git package
1 | yain emacs-git |
- from git source
123456789#git clone https://github.com/emacs-mirror/emacs
#git clone --depth 1 -b emacs-27 https://git.savannah.gnu.org/git/emacs.git
cd
~
/emacs
.
/autogen
.sh
.
/configure
--with-mailutils --with-xwidgets --with-native-compilation
make
# check it's working
src
/emacs
--version
sudo
make
install
- native-comp and other dependencies
1234# native
yain libgccjit
# json
pacin jansson
- from source zip
1234567891011121314151617181920212223242526272829# Dependencies for development
sudo
dnf group
install
"Development Tools"
# Dependencies specific to emacs
sudo
dnf builddep emacs
# Download the latest stable release from emacs website
wget http:
//mirrors
.kernel.org
/gnu/emacs/emacs-26
.3.
tar
.xz
wget http:
//mirrors
.kernel.org
/gnu/emacs/emacs-26
.3.
tar
.xz.sig
# Verify the tar.xz file
gpg --verify emacs-26.3.
tar
.xz.sig emacs-26.3.
tar
.xz
# Once that has been taken care of, extract the tar.xz archive.
tar
-xvf emacs-26.3.
tar
.xz
# Go into the newly made folder
cd
emacs-26.3
# Configure the source
.
/configure
# Compile the source
make
# Check the binary to see that it runs smoothly
src
/emacs
-Q
# Install the binary
sudo
make
install
- fedora
sudo dnf install emacs
- from rpm
- download through rpmfinder – emacs, emacs-common, emacs-filesystem
- remove –noautoremove above
- install using dnf install <file>
- download through rpmfinder – emacs, emacs-common, emacs-filesystem
- on osx
1234brew
install
emacs --HEAD --with-cocoa --with-gnutls --with-librsvg --with-imagemagick@6 --with-mailutils
brew linkapps emacs
rm
/Applications/Emacs
.app
osascript -e
'tell application "Finder" to make alias file to POSIX file "/usr/local/opt/emacs/Emacs.app" at POSIX file "/Applications"'
2.9.2. config
1 | git clone https: //github .com /thatwist/ .emacs.d.git ~/.config /emacs |
Then you have to open .config/emacs/config.org and M-x org-babel-tangle
- chemacs (been experimenting with) – https://github.com/plexus/chemacs2
2.9.3. start as daemon
see configs/bin/emacsclient-smart script
2.9.4. fonts
1 2 3 | M-x all-the-icons-install-fonts M-x nerd-icons-install-fonts on windows - this will ask to download only, then install it manually |
2.9.5. mu4e & mail
1 2 3 4 5 6 7 8 9 | pacin gmime3 xapian-core python-html2text xdg-utils guile2.0 git clone git: //github .com /djcb/mu .git cd mu . /autogen .sh && make sudo make install # man mu, man mu-easy yain mbsync ln -s ~ /configs/linux/ .mbsyncrc ~ |
2.9.6. shell colors
1 2 | # see emacs config ln -s ~ /configs/linux/ .terminfo ~/.terminfo |
2.9.7. various desktop file shortcuts
1 | sudo ln -s ~ /configs/linux/usr/local/share/applications/ * /usr/local/share/applications/ |
2.10. vim
I use emacs 95% of time but still may use vim in some quick sys-files edits
1 2 3 4 5 6 7 | stow vim nvim # theme yain vim-gruvbox-git # neovim yain neovim neovim-symlinks nvimpager neovide # vim plugins curl -fLo ~/.vim /autoload/plug .vim --create- dirs https: //raw .githubusercontent.com /junegunn/vim-plug/master/plug .vim |
3. system
Lower-level optional tweaks and packages
3.1. boot
I’m currently using refind for dual boot of windows+arch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | pacin refind refind- install # for, but doesn't make blinking at load # tools # uefi shell pacin edk2-shell sudo cp /usr/share/edk2-shell/x64/Shell .efi /efi/shellx64 .efi # memtest yain memtest86-efi sudo cp /usr/share/memtest86-efi/bootx64 .efi /efi/EFI/tools/memtest86 .efi # after fwupd installed sudo cp /usr/lib/fwupd/efi/fwupdx64 .efi /efi/EFI/tools/ # gdisk sudo cp gdisk_x64.efi /efi/EFI/tools # todo - configure manual refind boot conf entries for each tool |
3.2. firmware
1 2 3 4 5 6 7 | pacin fwupd # this one is not required on arch for sure # sudo service fwupd start # display devices fwupdmgr get-devices fwupdmgr get-updates fwupdmgr update |
3.3. kernel
1 2 3 4 | # been experimenting with pacin linux-zen # edit ../EFI/refind/refind.conf # vmlinuz-zen, initramfs.., fallback |
3.4. performance
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # monitoring & info pacin btop htop s-tui dmidecode # sysinfo pacin inxi # power pacin powertop pacin upower # cpu pacin i7z i7z-mon cpupower cpupower-gui # this or throttled - conflicts pacin thermald # laptop pacin tlp tlp-rdw tlpui # for thinkpads pacin tpacpi-bat acpi_call yain tlpui-git # some more pacin acpid |
disk&network tools
1 2 3 | pacin smartmontools ethtool # netstat pacin net-tools |
monitor traffic
1 2 3 4 5 6 7 8 9 10 11 | # requires running daemon pacin vnstat sc- enable vnstat # by hosts pacin iftop # by processes pacin nethogs sudo nethogs # by devices, with live graph pacin nload sudo nload wlp2s0 |
sleep&hibernate
1 2 | # uncomment /etc/systemd/logind.conf for suspend on lidclose etc # and then sc-kill -s HUP systemd-logind |
disable system beep permanently (was needed on fedora)
1 | rmmod pcspkr ; echo "blacklist pcspkr" >> /etc/modprobe .d /blacklist .conf |
3.4.1. install on fedora
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | sudo dnf install https: //download1 .rpmfusion.org /free/fedora/rpmfusion-free-release- $(rpm -E %fedora).noarch.rpm sudo dnf install http: //repo .linrunner.de /fedora/tlp/repos/releases/tlp-release .fc$(rpm -E %fedora).noarch.rpm sudo dnf install akmod-tp_smapi akmod-acpi_call kernel-devel sudo dnf install tlp tlp-rdw sudo dnf install acpid sudo dnf install apmd # conflicts with throttled # sudo dnf install thermald sudo dnf install stress sudo dnf install s-tui # install lenovo_fix cpu throttle for thinkpad sudo dnf copr enable adrake /throttled sudo dnf install -y throttled |
i7z
1 2 3 |
4. crypt
These are notes on how I setup and manage sensitive information and configs:
- passwords/credentials
- private-keys (ssh, gpg, etc)
- secure storage
1 2 | pacin gnupg chmod 700 ~/.gnupg |
4.1. crypt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # these has to be copied in secure way # - .cert (vpn certs) # - .gnupg # - .ssh # - .authinfo (not used anymore) # - .gitconfig (not, as far as ssh used and/or auth-info-pass + gh-auth populated in emacs) # - .aws (creds get from pass) # I used to have symlinks but switched to simply keeping a separate copies of each of these folders from rclone:crypt storage rclone copy crypt :<files> ~/<....> # rclone copy crypt: ~/Documents/crypt # ln -s ~/Documents/crypt/.aws ~/.aws # ln -s ~/Documents/crypt/.ssh ~/.ssh # ln -s ~/Documents/crypt/.gnupg ~/.gnupg chmod 600 ~/. ssh /id_rsa |
4.2. test if gpg works
1 2 3 4 5 6 7 8 9 | # list pub keys gpg -k # list priv keys gpg -K # encrypt echo "testsdf" > test .txt gpg -r twist522@gmail.com -e test .txt # decrypt gpg -d test .txt.gpg |
4.3. pass
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | pacin pass pass init <gpg-key> pass git init pass git remote add origin git@github.com:thatwist /pass-store .git pacin browserpass pacin browserpass-chromium # experimental pacin pass-git-helper ln -s ~ /configs/linux/ .config /pass-git-helper/ ~/.config yain pass-update pass- import pass-extension- tail pip install keyring-pass yain passrofi-git # pinentry yain pinentry-rofi # otp pacin pass-otp pacin zbar # to scan qr code: # zbarimg ~/Documents/screenshots/2021-10-26-1635267895_screenshot_502x509.jpg pass otp append <pass-name> |
4.4. access win bitlocked disk
1 2 | yain dislocker-noruby linux-notes:how to mount bitlocked windows disk |
5. desktop
I’m currently using xorg+i3+i3blocks
5.1. i3
1 2 3 4 5 6 7 8 9 | pacin i3-wm dmenu xbacklight feh lm_sensors rofi scrot ln -s ~ /configs/linux/ .config /i3 ~/.config/ # ln -s ~/configs/linux/.config/i3status ~/.config/ ln -s ~ /configs/linux/ .config /rofi ~/.config/ ln -s ~ /configs/linux/ .xinitrc ~ ln -s ~ /configs/linux/ .xprofile ~ ln -s ~ /configs/linux/ .xsettingsd ~ # required by i3-match-windows.sh pacin xorg-xwininfo |
i3 rename window (in-progess)
1 | pacin xdotool wmctrl |
5.2. i3blocks
1 2 3 4 5 6 7 8 9 10 11 | pacin i3blocks # dependencies for some blocks modules pacin acpi mkdir ~/.config /i3blocks ln -s ~ /configs/linux/ .config /i3blocks/config ~/.config /i3blocks/config git clone https: //github .com /thatwist/i3blocks-contrib ~/.config /i3blocks/i3blocks-contrib git clone https: //github .com /Anachron/i3blocks ~/.config /i3blocks/i3blocks-anachron cd ~/.config /i3blocks/i3blocks-contrib git checkout origin /mine -b mine cd ~/.config /i3blocks/i3blocks-contrib/cpu_usage2 make |
5.3. i3ipc
Used by Alt-tab script in ~/bin/
1 | pacin python-i3ipc |
5.4. clipboard
1 | pacin xclip xsel |
5.5. X key bindings
1 2 3 4 | # some old xbind stuff here # ln -s ~/configs/linux/.xprofile ~/.xprofile # some more scaling terminal stuff and old urxvt configs here # ln -s ~/configs/linux/.Xresources ~/.Xresources |
5.6. wayland & sway
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | swayfx # sway + additional visual fx seatd # dm alternative wlroots # compositor slurp # select a region of screen grim # make a screenshot swayshot # scripts and bindings for slurp+grim wayshot # grim alternative written in rust wf-recorder # screen recorder wl-clipboard swaybg swayidle swaylock swayimg # img editor waybar foot # terminal wmenu # dmenu wofi # rofi mako # dunst wdisplays xorg-xwayland # x compatibility |
sudo run x apps under wayland
1 2 3 | # sometimes it is required to run as sudo pacin xhost xhost local :root |
manage xresources on wayland&sway
1 2 3 | pacin xorg-xrdb # then xrdb -load # but what is enough is just to put everything into .Xdefaults |
dmenu (but I’m using rofi now)
1 2 | pacin bemenu yain j4-dmenu-desktop |
cursors (wayland)
1 2 3 | # pacin xcursor-simpleandsoft # TODO - requires some more configuration probably # seat seat0 xcursor_theme my_cursor_theme my_cursor_size |
5.7. hyprland
1 2 3 4 5 6 7 8 | hyprland hyprcursor hypridle hyprlock hyprshade pyprland hyprpaper # wallpapers xdg-desktop-portal-hyprland |
5.8. scaling
1 2 3 4 | # scaling stuff here, this will be initialized by agreety, but not by gtkgreeter (zsh,etc init order - should invistigate) ln -s ~ /configs/linux/ .profile ~/.profile # Xfont scaling - used by wayland as well ln -s ~ /configs/linux/ .Xdefaults ~/.Xdefaults |
5.9. fonts & icons
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | pacin ttf-ibm-plex ttf-input ttf-victor-mono-nerd ln -s ~ /configs/linux/ .config /fontconfig ~/.config yain ttf-font-awesome yain awesome-terminal-fonts # todo - below fonts mess up everything # ln -s ~/configs/linux/.fonts ~/.fonts # adobe-source-code-pro-fonts (in conflict with google fonts) # unifont-fonts (bdg-unifont on arch) # fontawesome-fonts (awesome-terminal-fonts on arch, ttf-font-awesome) # ttf-dejavu # ttf-roboto # ttf-ibm-plex # aur:ttf-google-fonts-git # what is this font for? git clone https: //github .com /stark/siji && cd siji . /install .sh # font cache reload fc-cache -fv # arial/timesnewroman/microsoft fonts pacin ttf-liberation # some symbolic/emoji fonts yain ttf-symbola # for emacs all-the-icons yain ttf-all-the-icons # nerd fonts mess up icons - do not install: +yay nerd-fonts-complete+ |
5.9.1. install ibm plex from sources
1 2 3 4 | cd /usr/share/fonts/truetype sudo mkdir plex sudo cp /from/wherever/the-flex-font .ttf plex/. sudo fc-cache -fv |
5.9.2. manage fonts
1 2 3 4 5 6 7 8 | # before - `conda deactive` yain font-manager # this one is nice pacin fontforge # will produce png fontimage /home/twist/ .fonts /IBMPlexMono-SemiBoldItalic .ttf # X pacin xorg-xfontsel xorg-xlsfonts xorg-xgd |
5.9.3. mono fonts
https://rubjo.github.io/victor-mono/
1 2 3 | pacin ttf-fira-mono ttf-fira-code ttf-hack # includes consolas yain ttf-vista-fonts |
5.10. tray icons
1 2 3 4 5 | yain hardcode-tray python -m pip install PyGObject pacin papirus-icon-theme # run on desktop start sudo -E hardcode-tray --conversion-tool RSVGConvert --size 22 --theme Papirus --apply |
5.11. notifications
5.11.1. dunst
1 2 3 4 5 6 7 8 9 10 11 | mkdir ~/.config /dunst sudo dnf install dunst sudo dnf install notification-daemon # TODO - copy your dunst conf systemctl restart --user dunst.service ln -s ~ /configs/linux/ .config /dunst ~/.config/ # journalctl errors: yay -S journalctl-desktop-notification-git # it's not for i3 # cp /usr/share/applications/journalctl-desktop-notification.desktop ~/.config/autostart/ |
5.11.2. mako (wayland)
1 2 | pacin mako ln -s ~ /configs/linux/ .config /mako ~/.config |
5.11.3. battery_low
1 2 3 4 5 | # make sure bin folder is linked into home sudo ln -s /home/twist/configs/linux/usr/share/icons/hicolor/scalable/status/notification-battery-low .svg /usr/share/icons/hicolor/scalable/status/notification-battery-low .svg # this is to provide sound # ln -s /home/twist/configs/linux/.config/battery_low /home/twist/.config/ ( sudo crontab -l 2> /dev/null ; echo "*/5 * * * * /home/twist/bin/battery_low" ) | sudo crontab - |
5.11.4. do not disturb on meetings
1 | ( sudo crontab -l 2> /dev/null ; echo "* * * * * /home/twist/bin/auto_do_not_disturb.sh" ) | sudo crontab - |
5.11.5. sounds
5.12. wallpaper
1 2 3 | # ln -s ~/configs/linux/.fehbg ~/ # sudo ln -s /home/twist/configs/linux/usr/local/share/backgrounds /usr/local/share/ pacin nitrogen |
5.13. minimalist greeter (instead of display manager) for sway
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # add sway-start script before this one (see above) yain greetd # trying gtk greeter first yain greetd-gtkgreet # wayland+sway yain greetd-wlgreet # greetd configs sudo ln -s ~ /configs/linux/etc/greetd/sway-conf /etc/greetd/sway-conf sudo chown -h greeter:greeter /etc/greetd/sway-conf # add greeter to video group sudo usermod -a -G video greeter # in /etc/greetd/config.toml # command = "agreety --cmd sway" # or # command = "sway --my-next-gpu-wont-be-nvidia --config /etc/greetd/sway-config" # no sway pacin cage command = "cage gtkgreet" |
5.14. rofi
1 2 3 4 5 6 | pacin rofi # use rofi for passmenu etc ln -s /usr/bin/rofi /usr/bin/dmenu # clipboard yain rofi-greenclip |
5.15. screen/idle lock, suspend
1 2 3 4 5 6 7 8 9 10 11 12 | # yain i3lock-fancy-rapid-git # yain i3lock-fancy-multimonitor yain i3lock-color yain xidlehook # pacin xorg-xautolock # then ln -s .config/systemd should place the service # this one is for lock after idle # lightdm doesn't work with logind idle events (eh) systemctl --user enable --now autolock.service # this one is for lock right after suspend sudo vim /etc/systemd/system/suspend @.service |
if not lightdm – set IdleAction=lock in sudo vim /etc/systemd/logind.conf
lightdm lid close handlers – set HandleLidSwitch=suspend in /etc/systemd/logind.conf
betterlockscreen
1 | # betterlockscreen -u ~/wallpaper/004.png |
5.15.1. i3lock
I’m not using this anymore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | BLANK= '#00000000' CLEAR= '#ffffff22' DEFAULT= '#6c71c4aa' TEXT= '#6c71c4ee' WRONG= '#dc322fbb' VERIFYING= '#d33682bb' i3lock \ --radius 80 \ --ring-width 5 \ --insidever-color=$CLEAR \ --ringver-color=$VERIFYING \ \ --insidewrong-color=$CLEAR \ --ringwrong-color=$WRONG \ \ --inside-color=$BLANK \ --ring-color=$DEFAULT \ --line-color=$BLANK \ --separator-color=$DEFAULT \ \ --verif-color=$TEXT \ --wrong-color=$TEXT \ -- time -color=$TEXT \ -- date -color=$TEXT \ --layout-color=$TEXT \ --keyhl-color=$WRONG \ --bshl-color=$WRONG \ \ -- screen 1 \ --blur 5 \ --clock \ --indicator \ -- time -str= "%H:%M:%S" \ -- date -str= "%A, %m %Y" \ --keylayout 1 \ |
5.16. screensaver (stupid)
pacin xscreensaver
5.17. composite manager
1 2 3 4 5 6 | # this on is old probably # pacin xcompmgr pacin picom # ui for configuring yain compton-conf ln -s ~ /configs/linux/ .config /picom .conf ~/.config/ |
5.18. prettifying and settings tools
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | stow gtk pacin variety nitrogen gtk-chtheme lxappearance yain qtconfig-qt4 # managed by lxappearance or by yourself ln -s configs /linux/ .gtkrc-2.0 . ~/.config /gtk-3 .0 /settings .ini # but gsettings take higher priority pacin xsettingsd yain gruvbox-material-icon-theme-git yain gruvbox-material-gtk-theme-git yain volantes-cursors # gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs" gsettings set org.gnome.desktop.interface cursor-theme "volantes_cursors" gsettings set org.gnome.desktop.interface gtk-theme "Gruvbox-Material-Dark" gsettings set org.gnome.desktop.wm.preferences theme "Gruvbox-Material-Dark" gsettings set org.gnome.desktop.interface icon-theme "Gruvbox-Material-Dark" yain qt5ct qt5-styleplugins # c'mon lets use some reasonable ui to manage this configs pacin xfce4-settings # worth looking into - manjaro i3 configs https: //github .com /Airblader/dotfiles-manjaro # option to show hidden files in gtk file dialog is in ln -s ~ /configs/linux/ .config /gtk-2 .0 ~/.config |
5.19. cursors
1 2 3 4 5 6 7 | # to apply changed theme of cursors ln -s ~ /configs/linux/ .config /gtk-3 .0 ~/.config # preview and change cursors git clone https: //github .com /drizt/xcursor-viewer cmake . make sudo make install |
5.20. display manager
1 2 3 | - lightdm - pacin lightdm lightdm-webkit2-greeter - sc- enable lightdm |
5.21. conky
1 2 3 4 5 | pacin conky # pacin conky-manager ln -s ~ /configs/linux/ .config /conky ~/.config # remote server monitors https: //github .com /fouad-j/monitoring-server-conky |
5.22. screenfetch -t
1 | pacin screenfetch |
6. peripheral
6.1. keyboard & touch
6.1.1. on x11
1 2 3 4 5 6 7 8 | # used by i3blocks # yain xkb-switch yain xkb-switch-i3 # tap to click, inversed scroll, keyboard, etc sudo ln -s /home/twist/configs/linux/etc/X11/xorg .conf.d /40-libinput .conf /etc/X11/xorg .conf.d /40-libinput .conf # not sure why I needed this one # sudo ln -s /home/twist/configs/linux/etc/X11/xorg.conf.d/20-intel-brightness.conf /etc/X11/xorg.conf.d/20-intel-brightness.conf sudo ln -s /home/twist/configs/linux/etc/X11/xorg .conf.d /00-keyboard .conf /etc/X11/xorg .conf.d/ |
6.1.2. gestures
1 2 3 4 5 | yain libinput-gestures sudo gpasswd -a $USER input stow libinput-gestures libinput-gestures-setup stop service autostart start # restart system |
6.1.3. on wayland-sway
configure in sway config
6.1.4. interceptions tools, caps2esc, space2meta, return2ctrl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | cd ~ git clone https: //gitlab .com /interception/linux/tools git clone https: //gitlab .com /interception/linux/plugins/caps2esc git clone https: //gitlab .com /interception/linux/plugins/space2meta # sudo make install # on arch - from aur yain interception-tools interception-space2meta interception-caps2esc # make sure to install yaml-cpp-0.6.2, 0.6.3 doesn't work with udevmon (on fedora) # on arch works with yaml-cpp-0.6.3-2 # aur # return2ctrl # TODO - put into my github git clone https: //github .com /thatwist/interception-return2ctrl && \ cd interception-return2ctrl && rm -rf build && mkdir build && cd build && cmake .. && make && sudo make install # add service - this one is redundant, udevmon is already there on arch # sudo cp /home/twist/configs/linux/usr/lib/systemd/system/udevmon.service /usr/lib/systemd/system/ sudo cp /home/twist/configs/linux/etc/udevmon .yaml /etc/ sudo systemctl enable --now udevmon |
6.1.5. screen capture on sway
1 2 | yain swayshot wf-recorder-git pacin grim slurp wl-clipboard wf-recorder |
6.1.6. screenkey with slop
1 2 3 | dnfi screenkey pygtk2 slop # usage: screenkey -p fixed -g $(slop -n -f '%g' ) |
6.2. camera
1 2 3 4 5 6 7 8 9 10 | # disable IR camera on Carbon # find camera usb port and cd into that dir lsusb cd /sys/bus/usb/devices/1-5 cat id {Vendor,Product} # disable it echo 0 > bConfigurationValue # basic app pacin xawtv |
6.3. fingerprint
thinkpad x1 carbon gen6
1 2 3 4 | yain python-validity pacin open -fprintd fprintd-enroll sudo validity-sensors-firmware |
1 2 3 4 | # factory reset: sudo systemctl stop python3-validity sudo validity-sensors-firmware sudo python3 /usr/share/python-validity/playground/factory-reset .py |
ok, now setup pam:
/etc/pam.d/system-auth
/etc/pam.d/system-local-login
1 2 3 | # this is to restrict finger enroll only to root # need to enable polkit and have gui agent (maybe not required) pacin lxqt-policykit |
6.4. thunderbolt
1 2 3 | pacin bolt # to authorize device boltctl authorize <uuid> |
7. display & graphics
7.1. intel graphics
1 2 3 | mesa # benchmarks and glx- utils mesa-demos |
7.2. nvidia gpu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # reload kernel modules - needed after nvidia update? # sudo mkinitcpio -P pacin nvidia nvidia-settings nvidia-prime # opengl pacin nvidia-utils # opengl multilib (for steam), version 4 (otherwise it uses mesa opengl version3) pacin lib32-nvidia-utils # benchmarks yain unigine-heaven unigine-superposition # manual load sudo modprobe nvidia nvidia-modprobe # info lspci -vnnn | grep 'VGA' lspci -k | grep -A 2 -E "(VGA|3D)" nvidia-smi sudo lsof /dev/nvidia * xrandr --listproviders # card in use glxinfo| egrep "OpenGL vendor|OpenGL renderer" glxheads |
7.3. autoxrandr
1 2 3 4 5 6 | pacin autorandr xrandr --output HDMI1 --auto --left-of eDP1 # ready config # ln -s ~/configs/linux/.config/autorandr/ ~/.config/ # to generate autorandr --save external |
7.4. backlight & brightness
1 2 3 4 | # adjust screen backlight pacin light # allow to run without sudo (this may break after package update, by default light should work as is becuase it install udev rules but it didn't) sudo chmod +s /usr/bin/light |
7.5. redshift
1 2 | # adjust screen brightness and warmness pacin redshift |
at /etc/geoclue
check:
/usr/lib/geoclue-2.0/demos/agent
/usr/lib/geoclue-2.0/demos/where-am-i
service
7.6. manage displays on wayland
1 | yain wdisplays |
7.7. screen sharing on wayland
1 2 3 4 5 6 7 8 | yain xdg_desktop_portal_wlr # then you need XDG_CURRENT_DESKTOP=sway in .profile and MOZ_ENABLE_WAYLAND=1 yain pipewire # in chromium, enable webrtc setting for pipewire: chrome: //flags/ #enable-webrtc-pipewire-capturer # check if pipewire running ok systemctl --user status pipewire.socket systemctl --user status pipewire.service |
8. disks & files
8.1. disks
1 2 3 4 5 6 7 8 9 10 | # daemon for management of disks and media using dbus pacin udisks2 # automount usb media, there is exec in swayconf to start it in tray pacin udiskie # trash bin trash-cli # backup yain timeshift # disk free pacin duf |
8.2. nemo
1 | pacin nemo |
8.3. ranger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | pacin ranger # if from scratch # ranger --copy-config=rc,rifle # own config ln -s ~ /configs/linux/ .config /ranger ~/.config/ # add image preview in kitty support python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow # to fix yank in X, dirty fix to remove wayland clipboard pacrem wl-clipboard # highlights pacin python-prompt_toolkit pacin python-pygments pacin ffmpegthumbnailer sudo python -m pip install xlsx2csv # yain perl-xls2csv # below works pacin catdoc yain pandoc-bin # for image preview pacin w3m |
8.4. dirvish
1 2 3 4 | pacin exa pacin ffmpegthumbnailer yain epub-thumbnailer-git yain mediainfo |
8.5. dropbox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # dnf: dropbox - rpm nautilius yain dropbox dropbox-cli # required by install daemon to verify signatures pacin python3-pgp # install daemon dropbox-cli start -i # prevent auto-updates rm -rf ~/.dropbox-dist install -dm0 ~/.dropbox-dist # autostart # (on boot) systemctl edit dropbox@username # (on login) DISPLAY should be already imported but it's not systemctl --user edit dropbox |
8.6. rclone
1 2 | pacin rclone ln -s ~ /configs/linux/ .config /rclone ~/.config |
8.7. office
1 | pacin libreoffice-fresh libreoffice-fresh-uk |
8.8. gdrive
1 2 | # not using it # go get -u github.com/odeke-em/drive/cmd/drive |
8.8.1. google-drive-ocamlfuse
1 | yain google-drive-ocamlfuse-opam |
- automount (fstab)
/usr/bin/gdfuse +x
1234#!/bin/bash
su
$USERNAME -l -c
"google-drive-ocamlfuse -label $1 $*"
exit
0
etc/fstab
gdfuse#default /home/$USERNAME/gdrive fuse uid=1000,gid=1000,allow_other,user,_netdev 0 0
- automount (systemd)
[Unit] Description=FUSE filesystem over Google Drive After=network.target [Service] User=twist Group=twist ExecStart=/home/twist/.opam/default/bin/google-drive-ocamlfuse -label default /home/twist/mnt/drive ExecStop=fusermount -u /home/twist/mnt/drive Restart=always Type=forking [Install] WantedBy=multi-user.target Alias=google-drive.service1sudo
vi
/etc/systemd/system/google-drive
.service
123sudo
systemctl daemon-reload
sudo
systemctl start google-drive
8.8.2. gvfs and files-mngr integration
1 | pacin gvfs-goa gvfs-google gnome-online-accounts |
8.8.3. rclone
1 | rclone mount drive:/ mnt /drive |
8.9. android mount&files
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | pacin mtpfs mtp-detect pacin android- file -transfer aft-mtp- mount ~ /mnt # easy aft-mtp-cli # below - I'm not sure if needed sudo su echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"18d1\", ATTR{idProduct}==\"4ee1\", MODE=\"0666\"" >> /etc/udev/rules .d /51-android .rules sc-restart udevmon sc-restart systemd-udevd # ## # gnome vfs integration pacin gvfs-mtp # tramp emacs - adb pacin android-tools |
8.10. pdf & djvu
1 2 3 4 5 6 7 8 9 | pacin poppler # pacin zathura zathura-pdf-mupdf djvulibre # this one better # pacin epdfview # this pacin xreader |
8.11. latex
1 2 3 4 5 6 7 8 9 | # required to export org into pdf pacin texlive-core # this one is for emacs and auctex? pacin okular # cyrillic pacin texlive-langcyrillic pacin texlive-latexextra |
8.12. books
1 | sudo pacman -S calibre |
8.13. mime
1 2 3 4 5 | # mime yain lsdesktopf yain selectdefaultapplication-git # mime fix skype open octetstream sudo rm /usr/share/applications/skypeforlinux-share .desktop |
9. multimedia
9.1. audio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | pacin alsa-utils pacin mpd pacin pavucontrol pulseaudio-alsa pulseaudio-bluetooth /etc/pulse/default .pa # automatically switch to newly-connected devices load-module module-switch-on-connect # EXPERIMENTAL: update for shorter name for i3blocks pacmd 'update-sink-proplist alsa_output.pci-0000_00_1f.3.analog-stereo device.description="Built-in Audio"' pacin pulseaudio-equalizer # used by emacs google-translate pacin mplayer # stream music pacin youtube-dl mpd mpc ln -s ~ /configs/linux/ .config /mpd ~/.config /mpd cp /usr/share/doc/mpd/mpdconf .example ~/.config /mpd/mpd .conf # split mp3 pacin mpgtx yain audio-recorder |
9.2. issue with mic not detected on startup (only detected after in-out of headphones)
1 2 3 4 | # we can manually load module load-module module-alsa- source device=hw:0,0 # although it had to be loaded by udev setting |
9.3. music
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | browser-playerctl pacin playerctl # yain youtube-music-bin chrome: //flags/ #hardware-media-key-handling # to download youtube music yt-dlp --ignore-errors -- format bestaudio --extract-audio --audio- format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" -- yes -playlist '<YouTube playlist URL>' # yain soundux museeks # vlc skins # but it is better just to configure qt5 interface appearance (see 'desktop/qt5 appearance') # set vlc interface to 'gtk2' after installing qt5 stuff |
9.4. bluetooth
1 | pacin bluez bluez-utils blueman |
enable bluetooth.service
/etc/bluetooth/main.conf
9.4.1. how to connect bluetooth headset?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | power off # (optionally) sudo btmgmt ssp off untrust .. remove .. power on agent off default-agent agent on scan on trust .. pair .. pulseaudio -k [add module switch-on-connect into /etc/pulse/default .pa] change mic priority in sudo vim /usr/share/pulseaudio/alsa-mixer/paths/analog-input-headset-mic .conf (98) pulseaudio --start connect .. |
9.5. codecs
1 2 3 | sudo dnf install gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-ugly gstreamer1-plugins-bad- free gstreamer1-plugins-bad- free gstreamer1-plugins-bad-freeworld gstreamer1-plugins-bad- free -extras ffmpeg sudo dnf group upgrade --with-optional Multimedia sudo dnf install vlc |
9.6. video
1 2 3 4 5 6 | # video convert sudo dnf install HandBrake-gui # media player pacin mpv # and better ui for mpv yain mpv-uosc-git |
9.7. images
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # pacin sxiv # # gallery? didn't work for me # pacin nomacs # # manage photos # pacin shotwell # # thumbnails # pacin raw-thumbnailer # pacin tumbler libraw # yain ufraw-thumbnailer # this one is better yain qimgv # if there is a problem with qt versions ("cannot mix incompatible qt library"): yay -S qt5-styleplugins |
9.8. drive&photos
1 | gphotos-uploader-cli |
9.9. graphics editing
1 | pacin inkscape |
9.10. camera
1 2 3 4 5 6 7 8 9 10 11 12 | pacin libgphoto2 gphoto2 # fuse yain gphotofs # frontend (old) yain gtkam # for gvfs file manager pacin gvfs-gphoto2 scu- enable -now gvfs-gphoto2-volume-monitor.service # photo edit pacin darktable gimp # failed to build yain rawstudio |
9.10.1. control from computer
https://medium.com/nerdery/dslr-webcam-setup-for-linux-9b6d1b79ae22
https://www.crackedthecode.co/how-to-use-your-dslr-as-a-webcam-in-linux/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # need to test yain entangle # or pacin dkms linux-headers pacin v4l-utils v4l2loopback-dkms ffmpeg sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2 # sudo vim /etc/modules-load.d/dslr-webcam.conf dslr-webcam # sudo vim /etc/modprobe.d/dslr-webcam.conf alias dslr-webcam v4l2loopback options v4l2loopback exclusive_caps=1 max_buffers=2 # test (open lens first) gphoto2 --capture-image-and-download # make sure /dev/video4 gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4 # with gpu accel gphoto2 --stdout --capture-movie | ffmpeg -hwaccel nvdec -c: v mjpeg_cuvid -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4 # the capture in vlc, but that didn't work for me # for android - to use it as a webcam (haven't tested) yain -i v4l2loopback- dc -dkms |
9.11. video
1 2 | # video edit pacin openshot |
9.12. daw
1 | yain reaper-bin |
10. apps
10.1. msgs
10.1.1. zoom
1 2 3 | yain zoom # hidpi QT_SCALE_FACTOR=2 zoom |
10.1.2. slack
1 2 3 4 | yain slack-desktop # hidpi # in desktop entry: Exec= env GDK_SCALE=1 GDK_DPI_SCALE=1 /usr/bin/slack -s --force-device-scale-factor=1.5 %U |
10.1.3. others
1 2 | yain teamviewer yain viber |
10.1.4. telegram
1 2 3 4 | pacin telegram-desktop # hidpi - in settings 150% # for emacs telega yay -S libtd libtgvoip |
10.1.5. skype
1 | yain skypeforlinux-stable-bin |
10.1.6. pidgin
1 2 3 4 5 6 7 8 9 10 11 | pacin pidgin sudo dnf install purple-facebook purple-skypeweb purple-telegram pidgin-libnotify sudo dnf install libsecret-devel purple-devel pidgin-devel libpurple-devel json-glib json-glib-devel # $HOME/.purple/smileys/ # whatsapp # download rpmsphere releases, rpm install, dnf install whatsapp-purple |
10.1.7. yain ferdi
10.1.8. yain upwork
10.1.9. matrix
1 2 3 4 | # command line pacin weechat # rich pacin element-desktop |
- synapse
1234567891011121314151617181920212223242526# server
# ssh keys
echo
"<pubkey>"
> .
ssh
/authorized_keys
# host
pacin ansible
# https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook.md
# install (reinstall)
ansible-playbook -i inventory
/hosts
setup.yml --tags=setup-all
# start/restart
ansible-playbook -i inventory
/hosts
setup.yml --tags=start
# check
ansible-playbook -i inventory
/hosts
setup.yml --tags=self-check
# create user
ansible-playbook -i inventory
/hosts
setup.yml --extra-vars=
'username=twist522 password=<pass> admin=yes'
--tags=register-user
# maintenance
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/faq.md#maintenance
see:how to increase swap
- slack
123# how to (re)link bridge
link xoxc d-cookie
# (but remove last %% from that cookie value)
10.2. beancount & [h]ledger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | pacin ledger gnuplot ln -s configs /linux/ .ledgerrc . npm install -g ledgerble # nice analytics sudo npm install -g ledger-analytics # beancount sudo pip3 install beancount # hledger yain hledger-bin hledger-iadd-bin hledger-ui-bin hledger-web-bin # plots pacin gnuplot # ledger viz pacin graphviz |
10.3. wine
1 2 3 4 5 6 | # enable multilib - uncomment it in /etc/pacman.conf, then pacman -Sy pacin wine # for .net pacin wine-mono # hidpi winecfg => graphics - 192dpi |
10.4. virtualbox
1 2 3 | # dnf - virtualbox sudo wget https: //download .virtualbox.org /virtualbox/rpm/fedora/virtualbox .repo -P /etc/yum .repos.d sudo dnf install -y VirtualBox |
10.5. qemu
1 2 | # faster tham vbox pacin qemu-full virt-manager |
10.6. steam
1 2 3 4 | # choose lib32-nvidia-utils (2) pacin steam # cmd version yain steamcmd |
10.7. others
1 2 3 4 5 6 7 | # mindmaps pacin freemind # flash yain flashplayer-standalone # calculator yain qalculate-gtk |
10.8. jackd
1 | pacin jack2 jackmeter jack_mixer jack_utils |
10.9. accessibility
1 2 3 4 5 | pacin festival festival-english festival-us # emacspeak pacin libotf extra /m17n-db extra /m17n-lib extra /tk git clone https: //github .com /tvraman/emacspeak cd emacspeak ; make config ; make |
1 | (load-file "/home/twist/emacspeak/lisp/emacspeak-setup.el" ) |
11. dev tools
11.1. scala
1 2 | sdk install scala |
11.2. sbt
1 2 3 4 5 | # sbt fedora curl https: //bintray .com /sbt/rpm/rpm | sudo tee /etc/yum .repos.d /bintray-sbt-rpm .repo sudo dnf --enablerepo=bintray--sbt-rpm install -y sbt # sbt arch pacin sbt |
11.3. java
1 2 3 4 5 6 7 8 | sudo dnf install java-1.8.0-openjdk-devel sudo dnf install java-1.8.0-openjdk-src pacin jdk-openjdk pacin jdk8-openjdk # pick version archlinux-java |
11.3.1. java8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/env bash wget --no-cookies \ --no-check-certificate \ --header "Cookie: oraclelicense=accept-securebackup-cookie" \ -O jdk-8u162-linux-arm64. tar .gz tar -xzvf jdk-8u162-linux-arm64. tar .gz sudo mkdir /usr/lib/jvm sudo mv . /jdk1 .8* /usr/lib/jvm/jdk1 .8.0 sudo update-alternatives -- install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0/bin/java" 1 sudo update-alternatives -- install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0/bin/javac" 1 sudo chmod a+x /usr/bin/java sudo chmod a+x /usr/bin/javac echo 'JAVA_HOME="/usr/lib/jvm/jdk1.8.0"' | sudo tee -a /etc/environment > /dev/null && source /etc/environment && echo $JAVA_HOME sudo rm jdk-8* |
11.4. gradle
1 | pacin gradle |
11.5. python
1 2 | pacin python python-pip pyenv pip install virtualenv |
11.5.1. conda
1 2 3 | https: //docs .conda.io /en/latest/miniconda .html conda config -- set changeps1 False # pip install conda # what is this? |
11.5.2. pip
1 | pip install pyspark pandas numpy sklearn matplotlib jupyter jupyterlab notebook |
11.5.3. libs
1 | conda install Pillow |
11.6. jupyter
1 2 3 4 5 | conda install sparkmagic conda run jupyter nbextension enable --py --sys-prefix widgetsnbextension conda run jupyter labextension install "@jupyter-widgets/jupyterlab-manager" # to fix autocomplete conda install jedi==0.17.2 |
11.7. npm
1 2 3 4 5 6 7 8 | # fedora sudo dnf install -y gcc -c++ make curl -sL https: //rpm .nodesource.com /setup_12 .x | sudo -E bash - sudo dnf install nodejs # arch pacin nodejs npm # for global access installs https: //docs .npmjs.com /resolving-eacces-permissions-errors-when-installing-packages-globally |
11.8. other dev tools
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | pacin maven # ag code searcher pacin the_silver_searcher # ripgrep code searcher pacin ripgrep # fzf pacin fzf # find pacin fd # zoxide - aka fast 'cd' pacin zoxide # golang pacin go # highlight in ranger (and other places) pacin highlight # sqlworkbench yain sql-workbench # dbeaver pacin dbeaver # rsync pacin rsync # aws pacin aws-cli pip install aws-shell # required for live preview of markdown in emacs yain multimarkdown # redis-cli pacin redis # mysql pacin mariadb # spark yain apache-spark # postgre pacin postgresql # presto yay presto # jupyter sudo pip install jupyter sudo pip install notebook # plantuml/emacs yain plantuml # github pacin github-cli |
11.9. reveal.js used by org-reveal
1 2 3 |
11.10. lsp
11.10.1. js
1 2 3 | sudo npm i -g vscode-json-languageserver sudo npm i -g typescript-language-server sudo npm i -g typescript |
11.10.2. py
1 2 3 | # the below one is newer # sudo pip install 'python-language-server[all]' pacin python-lsp-server |
11.10.3. others
1 2 3 4 5 6 7 | sudo npm install -g yaml-language-server sudo npm install -g bash -language-server sudo npm install -g dockerfile-language-server-nodejs sudo npm install -g vscode-css-languageserver-bin sudo npm install -g vscode-html-languageserver-bin # php sudo npm install -g intelephense |
11.10.4. c++/c
1 | pacin ccls |
11.11. docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # arch pacin docker docker-compose # fedora sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https: //download .docker.com /linux/fedora/docker-ce .repo sudo dnf install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable docker.service sudo systemctl start docker.service sudo groupadd docker sudo usermod -aG docker $USER newgrp docker # docker login yain docker-credential-pass |
11.12. boxes
1 2 3 4 5 | pacin distrobox xhost +SI:localuser:$USER # this is required by host-spawn to run host execs from inside containers pacin flatpak |
11.13. lombok for lsp
1 2 3 4 | cd ~ curl -O -J -L https: //projectlombok .org /downloads/lombok .jar mkdir lombok mv lombok.jar lombok/ |
11.14. scala metals
1 2 3 4 5 6 | curl -Lo coursier https: //git .io /coursier-cli chmod +x coursier . /coursier bootstrap org.scalameta:metals_2.12:0.10.0 -r bintray:scalacenter /releases -r sonatype:snapshots -f --java-opt -Xss4m --java-opt -Xms100m --java-opt -Dmetals.client=emacs --java-opt -Xmx2g --java-opt -XX:+UseG1GC --java-opt -XX:+UseStringDeduplication --java-opt -Dmetals.status-bar=off --java-opt -Dmetals.icons=unicode --java-opt -Dmetals.slow-task=status-bar -o /usr/local/bin/metals-emacs -f # windows coursier bootstrap org.scalameta:metals_2.12:0.10.5 -r "bintray:scalacenter/releases" -r "sonatype:snapshots" -f --java-opt "-Xss4m" --java-opt "-Xms100m" --java-opt "-Dmetals.client=emacs" --java-opt "-Xmx2g" --java-opt "-XX:+UseG1GC" --java-opt "-XX:+UseStringDeduplication" --java-opt "-Dmetals.status-bar=off" --java-opt "-Dmetals.icons=unicode" --java-opt "-Dmetals.slow-task=status-bar" -o C:\Users\Admin\AppData\Local\Coursier\data\bin\metals # + fix COURSIER_CACHE=C:\Users\Admin\AppData\Local\Coursier\cache |
11.15. kafkacat
1 | yain kafkacat |
11.16. k8s
1 | pacin helm |
11.17. spell-check
1 2 | # used by M-$ in emacs pacin aspell-en |
11.18. sql
1 2 3 | yay -S sqls go get github.com /mjibson/sqlfmt gem install sqlint |
11.19. s3 mount
1 2 3 | sudo pacman -S s3fs-fuse # faster yain goofys-bin |
11.20. ftp
1 | pacin curlftpfs |
11.21. android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | yay -S android-sdk-cmdline-tools-latest android-sdk-platform-tools android-sdk-build-tools yay -S android-emulator yay -S flutter yay -S android-studio # you may need to fix /opt/flutter permissions first see linux-notes:how to add user to writable group flutter doctor flutter doctor --android-licenses # you may need to set android-auto with enable-usb-logging on android device connected flutter devices flutter config -- enable -linux-desktop |
11.22. android
11.22.1. emulation
1 2 3 4 5 6 | yain android-sdk yain android-x86-system-image-28 sudo avdmanager create avd -n MyWhatsAppVM -k "system-images;android-28;google_apis_playstore;x86" # sdkmanager --install "system-images;android-28;google_apis_playstore;x86" sudo avdmanager create avd -n MyVM28 -k "system-images;android-28;google_apis_playstore;x86" emulator -show-kernel -no-boot-anim -avd MyVM28 -no-audio -camera-back webcam0 -verbose |
11.22.2. anbox
linux-zen
https://wiki.archlinux.org/title/Anbox#Loading_the_kernel_modules
1 2 3 | yain anbox-git yain anbox-image-gapps-rooted # apps: apkmirror.com |