aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 5ef97cf079630babad5f8d1e0943ab32b317d76d (plain) (blame)
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
# MMOSMacs

MMOSMacs is my personal Emacs configuration, but it's also the precursor to a project I'm planning, ***Elder Linux***, which will be completely based around Emacs as a desktop environment.

MMOSMacs is the core of my computing experience, and is meant to be a jack of all trades, just like me. As such, this is a "kitchen sink" configuration. I make no attempt to separate my personal preferences from the main functionality.

## Features

### Current Features

- Illiterate configuration
- Modern configuration using `straight.el` and `use-package`
- Emacs as a desktop environment (EXWM)
- The beginnings of an opinionated ergonomic keybind setup (still a long ways off though)
- The beginnings of a development environemnt (also a long ways off)
- Opinionated PKMS system

### Plans

- Custom theme, modeline, & anti-distraction features
- Custom ergonomic keybind system
- Full-featured desktop environment (EDNC, EMMS, etc.)
- Full-featured development environment
  - POSIX Shell, bash
  - Emacs Lisp, Common Lisp
  - Assembly, C, Haskell
  - SQL, AQL, DQL
  - CSV, JSON, XML
  - Markdown, HTML, JS, CSS
- Communications platform
  - Email, mailing lists
  - Web Feeds (RSS)
  - IRC, Matrix
  - SDR
- Productivity Suite
  - Finance
  - Editing & Publishing
  - Programmatic CAD
- System & Network Administration tools
- Security & cryptography tools
- Games

## Installation

### Get the files in place

First, clone this repository into your `~/.emacs.d` directory.

```bash
git clone https://github.com/MountainMan1312/MMOSMacs.git ~/.emacs.d
```

Next create symlinks to the `.xinitrc` and `emacs.desktop` files so X
knows what to do:

```bash
# Backup your `.xinitrc` file if you feel like it.
# Replace `.xinitrc.old` with whatever you want to name the backup.
mv ~/.xinitrc ~/.xinitrc.old

# Symlink your `.xinitrc` file
ln -s ~/.emacs.d/.xinitrc ~/.xinitrc

# Symlink `emacs.desktop` to add MMOSMacs as an entry to your Display
# Manager / login screen.
sudo ln -s ~/.emacs.d/emacs.desktop /usr/share/xsessions/emacs.desktop
```

Optionally create a symlink to the `.sbclrc` file for SBCL:

```bash
ln -s ~/.emacs.d/.sbclrc ~/.sbclrc
```

### Install necessary packages

You'll also need the following packages installed on your system. Gentoo packages are listed here along with their USE flags.

```
app-admin/sudo
app-dicts/aspell
app-editors/emacs cairo dbus dynamic-loading gif gui jit jpeg libxml2 png ssl svg threads tiff X xft zlib
app-emacs/emacs-common gui libxml2 X
app-emacs/emacs-daemon
app-emacs/pdf-tools
app-text/poppler png cairo
app-text/texlive X extra graphics png truetype
app-text/texlive-core xetex
dev-lang/ghc
dev-lang/rust clippy doc rustfmt
dev-lisp/sbcl
dev-scheme/racket
dev-util/shellcheck hscolour
dev-vcs/git
media-gfx/ditaa
media-gfx/graphviz
media-gfx/plantuml
media-libs/harfbuzz icu
media-libs/libpng
media-libs/libvpx postproc
media-fonts/jetbrains-mono
media-fonts/noto
net-libs/nodejs
net-p2p/syncthing tools
sys-devel/autoconf
sys-devel/automake
sys-devel/gcc jit
sys-devel/gdb
sys-libs/glibc
sys-libs/zlib
x11-apps/setxkbmap
x11-base/xorg-server
x11-libs/cairo X
x11-libs/libxkbcommon X
x11-misc/arandr
```

### Setup `~/kb` and Syncthing for `org-roam` knowledgebase

Next you need to setup the `~/kb` directory, which will contain:

- `org-roam-directory`
- `org-agenda-files`

Follow [the Syncthing documentation](https://docs.syncthing.net/) and [the Gentoo Wiki entry for Syncthing](https://wiki.gentoo.org/wiki/Syncthing) to get Syncthing setup.

If you need to access the Syncthing GUI from a different computer, you can allow this by modifying `~/.config/syncthing/config.xml`. Find the following in that file:

```xml
<gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:40469</address>
```

Change it to the following, but be sure to disable it later for security:

```xml
<gui enabled="true" tls="false" debugging="false">
        <address>0.0.0.0:40469</address>
```

### Run MMOSMacs for the first time

`cd` into your home directory and run `startx` to launch MMOSMacs for the first time. There might be some weird stuff that happens and some warnings, so `M-x kill-emacs` and `startx` again.

Then, run the first-time-setup commands for the following packages:

- `M-x all-the-icons-install-fonts RET y`
- `M-x lsp-install-server RET bash-ls RET`

## Contributing

This is my personal project. I will do what I can to make it accessible
to other people, but ultimately it is crafted to suit my own needs.

If you want to contribute to MMOSMacs, please read `CONTRIBUTING.md`. If
you do not have a copy of this file, it can be found at either:
- https://github.com/MountainMan1312/MMOSMacs/blob/stable/CONTRIBUTING.md
- https://raw.githubusercontent.com/MountainMan1312/MMOSMacs/stable/CONTRIBUTING.md

Feel free to fork this repository. There is no need to give me credit.
It is wrong to claim ownership of knowledge.