-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Welcome to the MyEnvironment wiki!
Things I always need to install:
- I use Firefox because privacy is good.
- InSync from website https://www.insynchq.com/ Note that there's Nautilus integration when clicking "Packages" in the download mini window
- Slack (Install from website so you don't get the snap version)
- Signal (Install from website PPA to avoid snap)
- Spotify (Install from website PPA to avoid snap)
- Private Internet Access: https://www.privateinternetaccess.com/pages/download
- Docker (follow official instructions from website)
- Ultimate Hacking Keyboard Agent https://github.com/UltimateHackingKeyboard/agent/
From command line:
sudo apt-get update -y && \
sudo apt-get install -y gcc g++ gfortran \
gdb git autoconf \
libopenblas-dev liblapack-dev \
libhdf5-dev hdf5-tools \
libgsl0-dev \
clang lld clangd clang-format clang-tidy \
wget libncurses-dev \
lcov cppcheck ninja-build \
libboost-dev libboost-program-options-dev \
libboost-thread-dev libboost-tools-dev libssl-dev \
libbenchmark-dev curl protobuf-compiler libprotobuf-dev \
bison flex \
gocryptfs p7zip-full p7zip-rar && \
sudo add-apt-repository universe && sudo apt-get update -y && \
sudo apt-get install -y curl python3-pip python-is-python3 python3-numpy \
python3-ipython python3-scipy python3-h5py && \
sudo apt-get install -y texlive-base texlive-latex-recommended texlive \
texlive-latex-extra texlive-science texlive-pstricks && \
sudo apt-get install -y ccache doxygen libc++-dev libc++1 libc++abi-dev && \
sudo apt-get update -y && sudo apt-get install -y libjemalloc2 libjemalloc-dev && \
sudo apt-get install -y zsh && \
sudo apt-get install -y fonts-powerline jupyter gnome-tweaks emacs tmux xsel \
ripgrep linux-tools-common linux-tools-generic \
lm-sensors htop darktable vlc gufw sshfs python3-numpy \
python3-scipy python3-matplotlib python3-pandas earlyoom && \
sudo pip3 install thefuck python-language-server plotnine
brew install tmux ccache emacs gpg python id3v2
Then manage python packages through pip3
.
Emacs daemon is started by running brew services start emacs
and can be restarted using brew services restart emacs
. This doesn't seem to correctly load the ZSH paths and environment first, though.
Clang comes as part of Apple's command line developer tools.
- In order to use CMake with
ninja-build
we need to build the latest version of CMake from source. -
wget https://github.com/Kitware/CMake/archive/v3.18.2.tar.gz tar xf v3.18.2.tar.gz cd cmake ./bootstrap make -j4 sudo make install
- Keyboard & Mouse:
- Emacs Input:
On
- Additional Layout Options:
- Caps Lock Behavior:
Caps Lock is also a Ctrl
- Alt/Win key behavior:
Alt is swapped with Win
- Caps Lock Behavior:
- Emacs Input:
- Top Bar:
- Battery Percentage:
On
- Seconds:
On
- Weekday:
On
- Battery Percentage:
- Startup Applications:
- Insync
- Signal
- Slack
- Private Internet Access
- Appearance
- Applications:
Yaru-dark
(or some other dark theme)
- Applications:
- Appearance:
- Auto-hide the dock: on
- Icon size: really tiny
- Keyboard Shortcuts:
- Move to workspace above:
Ctrl+Alt+P
- Move to workspace below:
Ctrl+Alt+N
- Switch applications:
Alt+Tab
- Switch windows:
Super+Tab
- Lock screen:
Ctrl+Alt+L
- Move to workspace above:
- Displays
- Enable
Night Light
- Enable
- Universal Access
-
Always Show Universal Access Menu
(Use for "Large Text" on HiDPI displays)
-
- The snap system and store basically results in running apps installed via a snap in containers. It's much better to get a PPA to install from or to build from source. I also had
snapd
use 100% CPU a few times, which was rather annoying. - Run
which will give you a list of all the snaps installed.
snap list
- Run
If there are other snaps installed, remove them too. Note that you can't remove the snap
sudo snap remove snap-store sudo snap remove gtk-common-themes sudo snap remove gnome-3-34-1804 sudo snap remove core18
core
in this step. - Stop the daemon:
and then unmount every directory inside
sudo systemctl stop snapd
/snap/core
by runningsudo umount /snap/core/xyz
- Purge snap:
sudo apt purge snapd
- Remove straggler directories and files
rm -rf ~/snap sudo rm -rf /snap /var/snap /var/lib/snapd
- If you want the gnome/ubuntu app store but without snap do:
sudo apt install gnome-software sudo apt purge snapd
- Zoom:
50%
-
Preferences
->Views
->Sort
-> disableSort folders before files
-
Preferences
->List Columns
->Modified -- Time
- Profile -> Text -> Initial terminal size: 81 columns x 24 rows
- Custom font size monospace 9
- Colors: Built-in schemes: white on black (you might need to set cursor color to white+white to have the cursor show up...)
- Palette:
Linux console
- Palette:
- Set up oh-my-zsh
- Symlink .zshrc file from MyEnv directory
Using systemd an ssh-agent can be run as a daemon, meaning that you don't have to always retype the SSH key passwords even if you are using the machine only via the terminal. Add the following to ~/.config/systemd/user/ssh-agent.service
[Unit]
Description=SSH key agent
[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target
Then run:
systemctl --user enable ssh-agent && systemctl --user start ssh-agent
To automatically add keys to the agent (makes life easier since then you don't need to manually do ssh-add
), make sure ~/.ssh/config
has:
AddKeysToAgent yes
-
Build YCMD in
~/Research/ycmd
https://github.com/ycm-core/ycmd -
Symlink
.emacs.el
-
A systemd unit is included in Emacs 26.1. The unit is installed with Emacs, but it must be enabled after installing Emacs:
systemctl --user enable --now emacs
-
To have the option to connect to the Emacs daemon as the "Default Application" in the file browser add the file
~/.local/share/applications/EmacsGuiDaemon.desktop
with:#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Terminal=false Name=Emacs Daemon (GUI) GenericName=Text Editor Comment=View and edit files MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++/x-python; Exec=/usr/bin/emacsclient -c -a "/usr/bin/emacs" %F Type=Application Terminal=false Categories=Utility;Development;TextEditor;
-
To get GPG pinentry working on Debian/Ubuntu you need to build pinentry yourself. This is easy to do, e.g. http://www.linuxfromscratch.org/blfs/view/svn/general/pinentry.html First install the dependencies:
sudo apt install libassuan-dev libgpg-error-dev
The following configure command is reasonable:
./configure --prefix=/usr/local --enable-pinentry-tty --enable-inside-emacs=yes --enable-pinentry-gtk2=yes
Then you need to update
~/.gnupg/gpg-agent.conf
to havepinentry-program /usr/local/bin/pinentry allow-emacs-pinentry
and run
gpgconf --reload gpg-agent
to reload the GPG agent.
You may need to run:
export GPG_TTY=$(tty) gpg-connect-agent updatestartuptty /bye >/dev/null
if you get errors about unsupported
xterm-color256
when running withgpg --verbose --import
- Edit
~/.ccache/ccache.conf
to be:max_size = 40G
- Need to install universal CTags from scratch
git clone [email protected]:universal-ctags/ctags.git && \ cd ctags && \ ./autogen.sh && \ ./configure && \ make -j4 && \ sudo make install && \ cd .. && rm -rf ./ctags
- Need to install GNU Global from scratch, e.g.
wget http://tamacom.com/global/global-6.6.5.tar.gz && \ tar xzf global-6.6.5.tar.gz && \ cd ./global-6.6.5 && \ ./configure --with-universal-ctags=/usr/local/bin/ctags --prefix=/usr/local/ && \ make -j4 && \ sudo make install && \ cd .. && \ rm -rf ./global-6.6.5 ./global-6.6.5.tar.gz
- Install https://github.com/thewtex/tmux-mem-cpu-load/
- Need a fresh clone of tmux plugin manager, tpm:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
- Use
M-[ i
to install plugins - Use
M-[ u
to update plugins - Use
M-: resize-pane -x 105
to resize panes - Use
M-: select-layout even-horizontal
to evenly distribute panes horizontally
- To have Documents go to the Dropbox and disable desktop edit
~/.config/user-dirs.dirs
with:#XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_PUBLICSHARE_DIR="$HOME/GoogleDrive/Public" XDG_DOCUMENTS_DIR="$HOME/GoogleDrive/Documents" #XDG_MUSIC_DIR="$HOME/GoogleDrive/Music" XDG_PICTURES_DIR="$HOME/GoogleDrive/Pictures" #XDG_VIDEOS_DIR="$HOME/GoogleDrive/Videos"
- Have files and folders intermixed:
Preferences
->Views
->Sort
-> uncheckSort folders before files
- Install additional things from CTAN using
tlmgr
:if you get atlmgr install bbold --verify-repo=none
verify_checksum: -5
then the repo is not correctly checked, likely because PGP key is wrong. That's why there's the--verify-repo=none
-
Best built from scratch so that Vulkan can be used. Need:
sudo apt install git ffmpeg libavcodec-dev libevdev-dev libusb-1.0-0-dev libavformat-dev libswscale-dev libsfml-dev libminiupnpc-dev libmbedtls-dev curl libhidapi-dev libwxbase3.0-dev libwxgtk3.0-gtk3-dev libpangocairo-1.0-0 libgtk2.0-dev libbluetooth-dev qt5-default qtbase5-private-dev libudev-dev libfmt-dev libasound2-dev
-
To get the GC adapter to work:
Open
/etc/udev/rules.d/51-gcadapter.rules
Add:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666"
Reboot
-
Install
insync-nautilus
to get file browser integration -
Ignore rules:
*build_* *.o */charm_*/multicore-linux64-gcc */charm_*/multicore-linux64-clang *__pycache__ *gocryptfs.conf
-
Preferences: Zoom:
150%
Preferences: Uncheck
Anonymously send usage data to Insync
otherwise the app seems to have trouble syncing when using PIA mace to prevent contacting of ad sites
- Install LIBXSMM https://github.com/hfp/libxsmm/
sudo make install PREFIX=/usr/local AVX=2 OPT=3 -j4
- Install Catch https://github.com/catchorg/Catch2
mkdir build && cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local && \ sudo make install -j4
- Install Blaze https://bitbucket.org/blaze-lib/blaze/
mkdir build && cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local && \ sudo make install -j4
- Install libsharp https://github.com/Libsharp/libsharp
autoconf && \ ./configure --enable-pic --disable-openmp && \ make -j4 && \ sudo mv ./auto/lib/* /usr/local/lib && \ sudo mv ./auto/include/* /usr/local/include
- Install brigand https://github.com/edouarda/brigand
mkdir build && cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local && \ sudo make install -j4
- Install yamlcpp https://github.com/jbeder/yaml-cpp (install 0.6.3 since the latest develop causes a test to fail in SpECTRE)
wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.3.tar.gz && \ tar xf yaml-cpp-0.6.3.tar.gz && \ cd yaml-cpp-yaml-cpp-0.6.3 && \ mkdir build && \ cd ./build && \ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DYAML_BUILD_SHARED_LIBS=ON .. && \ make -j6 && \ sudo make install
pip3 install beautifulsoup4 pybtex yapf==0.29.0
- Install xsimd https://github.com/xtensor-stack/xsimd
mkdir build && cd build && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local && \ sudo make install -j4
- To use Docker with out sudo:
sudo groupadd docker
sudo gpasswd -a $USER docker
- Logout/in, restart, or run
newgrp docker
- Logging into Docker Hub do
docker login
, which will ask you for your username and password.
- Open the GUI app and enable
-
Install mosh from the git repo: https://mosh.org/#getting
-
Open SSH port (22 TCP, in only) on firewall (could use a non-standard port for extra security)
-
Open UDP port for mosh (60000 UDP, in only) on firewall (I use 60000)
-
Add SSH public key to
~/.ssh/authorized_keys
for passwordless connection -
Run
mosh -p 60000 SERVER
to connect. -
Unlike SSH, you can't forward SSH keys with Mosh. This is intentional and the way SSH actually forwards SSH keys is spooky. Your private key is effectively copied to the remote server and anyone with root access on that machine can access your private key. To forward SSH keys for use with Mosh there is Guardian Agent. While still fairly young and not nearly as well-vetted as Mosh, it is still much safer than SSH key forwarding. Every time the remote server needs to access your SSH keys you will be requested to approve on your local machine. Without your approval there is no access to the private key(s).
Another option is that if you're using Mosh to connect to a work desktop which has SSH keys is to simply add the SSH keys to your session. This is done by running
ssh-add
.
- https://github.com/hpcng/singularity/blob/master/INSTALL.md
- When building images specify the tmp
SINGULARITY_TMPDIR=~/tmp SINGULARITY_CACHEDIR=~/tmp
to avoid having singularity dump data into a hidden directory.
$ ffmpeg -r 30 -f image2 -i MassDensity.%03d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p MassDensity.mp4
Where:
-r: FPS