aboutsummaryrefslogtreecommitdiff
path: root/README.org
blob: 9a3a9ba26db62112c87ce5b36c7bc9b3d1eb764d (plain)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
* Introduction (Forked from HyprNixMacs)
ToughNix is a configuration that centers around the usage of NixOS and Emacs.
Note that at the time of writing, I use hyprland as my window manager, but that
might change, and therefore hyprnixmacs may not be as accurate of a name. This
entire configuration uses the [[https://github.com/catppuccin/catppuccin][catppuccin theme]].

** Why Not EXWM?
Because emacs is blocking, and I want to use wayland because it's much better and there's
much less cruft.

* Installation
Simply clone the contents of this repository to ~/etc/nixos/~ and run ~sudo nixos-rebuild switch~.
Note that afterwards you will need a ~$HOME/.password-store~ in user ~preston~ which has
an entry named ~Mail~, as well as a ~~/org/website/~ directory made by cloning my
[[https://git.nullring.xyz/ret2pop-website.git/about/][ret2pop website]] repository to that location. Here are all the commands:
#+begin_src shell
  # run as root
  # create backup of hardware-configuration.nix and put it back there after
  git clone https://github.com/ret2pop/hyprnixmacs.git /etc/nixos/
  # put hardware-configuration.nix back in /etc/nixos
  nixos-rebuild switch
  su preston
  # copy over gpg and ssh keys
  git clone root@nullring.xyz:/var/git/passwords.git ~/.password-store/
  mkdir ~/org
  git clone https://github.com/ret2pop/ret2pop-website ~/org/website/
  # get music and put it in ~/music
#+end_src
this process can be highly automated via [[https://github.com/nix-community/nixos-anywhere][NixOS Anywhere]]. Once you have my system with your own gpg and ssh keys,
you can read the following section.

* Usage
Make sure that before you use the configuration, all the me-specific configuration is ripped out
and replaced with yours. For instance, any mention of my name in ~configuration.nix~, ~home.nix~,
the emacs config, or ~flake.nix~ should be replaced with mentions of your name, and stuff like server
configurations for email or IRC should be replaced with your own configurations. The system by default
is called ~continuity~. If you don't like this hostname, you can replace it in ~configuration.nix~ and
~flake.nix~ with something else.
** Hyprland
*** Wallpaper
To change the wallpaper, change the ~swww add~ line to another wallpaper in my
[[https://github.com/ret2pop/wallpapers][wallpapers repository]].
*** Keybindings
**** Programs
#+begin_example
Win + Return => kitty (Terminal)
Win + e => emacs
Win + w => firefox
Win + v => discord
Win + d => wofi (Run Launcher)
Win + p => wofi (Powermenu)
PrintScr => grim (screenshot; look for file in $HOME)
#+end_example
**** Commands
#+begin_example
Win + q => kill window
Win + Shift + h => move window to left
Win + Shift + l => move window to right
Win + Shift + k => move window up
Win + Shift + j => move window down
Win + h => move window focus to left
Win + l => move window focus to right
Win + k => move window focus up
Win + j => move window focus down
#+end_example
** Initialization
To get into a graphical hyprland environment, use type ~h~ into the tty after logging in. This will
take you stright to the graphical session.
** Passwords
Passwords will be managed by sops-nix in the future, but for now they are managed
with the ~pass~ password manager. To initialize the password store, see
[[https://www.passwordstore.org/][the documentation]]. Be sure to add an entry called ~Mail~:
#+begin_src shell
pass add Mail
#+end_src
and enter your imaps and smtps password.
** Git
In ~home.nix~, change the signing key to your own gpg key. When you git commit, emacs will be your pinentry
device, meaning you will enter the encryption password from emacs.
** Email
Email is done from within emacs with mu4e with ~SPC o m~. To initialize mail, run:
#+begin_src shell
  mbsync prestonpan # see mbsyncrc section of home.nix, change prestonpan to something else there
                    # then run this command with that changed name.
  mu init --maildir=~/email/mbsyncmail/
  mu index
#+end_src
Note that a prerequisite is initializing ~pass~ and adding a ~Mail~ entry. Be sure to change the imaps
and smtps address in the mbsync and msmtp configurations as well as the usernames.
** Firefox
On launch, make sure you enable all the plugins by going into the three bar tab on the right corner and
enabling all the automatically installed extensions. Then, optionally, visit the
[[https://github.com/catppuccin/firefox][catppuccin firefox theme]] website and use the Firefox Color install method.
** Discord
Optionally, go to user settings > Vencord > Themes > Online Themes. Then, install [[https://github.com/catppuccin/discord][this theme]] by pasting the one-liner in:
#+begin_src css
  @import url("https://catppuccin.github.io/discord/dist/catppuccin-mocha-pink.theme.css");
#+end_src
** Waybar
If the bar is not displaying, get your monitor name with ~hyprctl monitors~. Then, in the ~home.nix~ configuration
replace ~LVDS-1~ with whatever your monitor name is that you want the bar to be displayed in. The battery percentage
may not be displayed. If it isn't, then change ~BAT0~ with whatever you see when you run ~ls /sys/class/power_supply~,
assuming you have a laptop with a battery. After that, it should work normally.
** Music
Replace all mention of ~/home/preston/~ in the mpd configuration of ~home.nix~ with whatever your home directory is.
Place your music files in ~$HOME/music~ and run ~mpc update~, then ~mpc add /~. This should add all your music in
~$HOME/music~ to the playlist to be read by the emacs program ~emms~.
** Emacs
This will be quite the large section as there will be much to explain. Just clone my entire website:
#+begin_src shell
  mkdir ~/org/
  git clone https://github.com/ret2pop/ret2pop-website ~/org/website
#+end_src
/Then/ start emacs. On first initialization, make sure to run:
#+begin_src emacs-lisp
  M-x pdf-tools-install
  M-x all-the-icons-install-fonts
  M-x nerd-icons-install-fonts 
#+end_src
then restart. This will make emacs look not ugly. Then, if you cloned my website, everything should work, although
you should remove my journal entries and all my files in ~mindmap~ and replace them with your own.
*** Keybindings
These are the keybindings that I have set up for emacs. All the other keybindings are ones that are default
to the packages installed or the builtin emacs keybindings. Note that I also use evil-mode, so you're going
to have to know vim keybindings.
#+begin_example
  SPC o a org-agenda
  SPC c b counsel-bookmark
  SPC o c org-capture
  SPC n j j org-journal-new-entry
  SPC n r f org-roam-node-find
  SPC n r i org-roam-node-insert
  SPC n r g org-roam-graph
  SPC r s s elfeed
  SPC . counsel-find-file
  SPC g / magit-dispatch
  SPC g P magit-push
  SPC g c magit-commit
  SPC g p magit-pull
  SPC o t vterm-other-window
  SPC o e eshell
  SPC o m mu4e
  SPC e w w eww
  SPC e c c ellama-chat
  SPC e a b ellama-ask-about
  SPC e s ellama-summarize
  SPC e c r ellama-code-review
  SPC e c C ellama-code-complete
  SPC e c a ellama-code-add
  SPC e c e ellama-code-edit
  SPC e w i ellama-improve-wording
  SPC e g i ellama-improve-grammar
  SPC p w ivy-pass
  SPC m P p org-publish
  SPC s e sudo-edit
  SPC m m emms
  SPC f f Format code buffer
  SPC i c Connect to my IRC server
  SPC h m Manual
  SPC h r r Reload Config
#+end_example
*** IRC
In the config, replace the IRC configuration (server and name) with your own.
*** ellama
Run ~ollama pull zephyr~ to get the zephyr ollama model.
*** Mu4e
After following the email advice from above, change my mail address and name to your own.
*** Agenda
Make a file ~$HOME/org/agenda.org~. From there, just google org-agenda.
*** Ox-publish
Steal the css stylesheet I use from the root of my website directory, and copy the layout of it.
Honestly, I will finish explaining how I manage my website later because it's a little bit pain
to explain in a concise manner.
*** Elfeed
Change my RSS feeds out in ~$HOME/org/website/config/elfeed.org~ with ones you want to read.
*** Stem Mode
[[https://github.com/ret2pop/stem][Stem]] is a programming language that I wrote, and in order for code blocks and syntax highlighting
to work, you need to install [[https://github.com/ret2pop/stem-mode][stem-mode]]. Or, you can get rid of stem-mode in the emacs configuration.

** Postamble
Once you've done all those things, you can call the system yours! You've successfully ripped out any part
of the configuration that names me or any of the gpg or ssh keys that I own.