-
Notifications
You must be signed in to change notification settings - Fork 1
/
notes-nixos.txt
98 lines (73 loc) · 3.34 KB
/
notes-nixos.txt
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# download configurations
nix-shell -p git
git clone https://github.com/perlinm/nix ~/nix
# later: git remote set-url origin git@github.com:perlinm/nix
# NOTE: fix ~/nix/luks.nix if necessary
# The value of luks-swap-uuid can be found in /etc/nixos/configuration.nix,
# or as 'luks-<THIS-SUBSTRING>:' in the output of 'blkid | grep swap'.
# If there is no LUKS encryption, then 'echo {} > ~/nix/luks.nix' will suffice.
# copy and symlink config files
cd ~/nix
sudo cp flake.nix flake.lock nixos.nix luks.nix sway-fixes.nix /etc/nixos
mkdir -p ~/.config/home-manager
ln -sf ~/nix/flake.nix ~/.config/home-manager
# install everything!
sudo nixos-rebuild switch --flake /etc/nixos#map-work
home-manager switch
# TODO: set firefox configs elsewhere
# in firefox, 'about:config':
# browser.quitShortcut.disabled: set to true to disable exiting with ctrl+q
# browser.low_commit_space_threshold_percent: set to (say) 30 to decrease memory usage
# accessibility.typeaheadfind.enablesound: set to false to disable bell/warning sounds
# permissions.default.shortcuts: set to 2 to disable websites capturing keyboard shortcuts
# pdfjs.sidebarViewOnLoad: set to 0 to prevent sidebar from opening automatically for PDFs
# set up identity
gpg --decrypt ~/.ssh/id_rsa.gpg > ~/.ssh/id_rsa
chmod 0600 ~/.ssh/id_rsa
# for Overleaf <--> git integration:
gpg --decrypt ~/nix/dotfiles/.git-credentials.gpg > ~/.git-credentials
# backup!!!
rsync -avP --exclude '.conda' --exclude '.cache' /home/perlinm /run/media/perlinm/backup
##################################################
# sharing files over a local network
# woof is an awesome tool for sharing files over a local network
# however, nixos has a firewall enabled by default
# to open port 8080 (or a range of ports, such as 8000:9000) for the local network, run
sudo iptables -A INPUT -p tcp -j ACCEPT --dport 8080
sudo systemctl reload firewall
# you can how share files with:
woof <file> # <-- prints url
wget <url> # <-- on other machine
# to open an ad-hoc server for file sharing on port 8080
python -m http.server 8080
##################################################
# conda / python
conda-shell
conda-install
conda update conda python
# disable pip installing in the base environment
pip uninstall pip
# for jupyter notebooks (in an environment):
pip install jupyter ipykernel
# creating and deleting environments
conda create --name <VENV-NAME> python=3.<VERSION>
conda env remove --name <VENV-NAME>
# WARNING: some package installations may fail due to dependencies external to python.
# In this case, these packages should be installed after calling 'conda-shell'.
# For example, if you get the error:
# ERROR: Failed building wheel for mpi4py
# this can be fixed with
conda install -c conda-forge mpi4py openmpi
# Other standard packages/libraries can likewise be installed with
conda install -c conda-forge <PACKAGE>
# To enable activating virtual environments, call 'conda init', which requires
# '~/."$SHELL"rc' to be writable. In practice, I prefer inspecting how 'conda init'
# modifies '~/."$SHELL"rc', and enabling virtual environments 'manually'.
##################################################
# julia
# add julia kernel for Jupyter notebooks:
julia -e 'import Pkg; Pkg.add("IJulia")'
# julia formatter:
julia -e 'import Pkg; Pkg.add("JuliaFormatter")'
# activate julia environment:
import Pkg; Pkg.activate("MyEnvironment")