From 00c9e35779cbb298d6395a6e2c2534007a92976f Mon Sep 17 00:00:00 2001 From: Preston Pan Date: Fri, 21 Mar 2025 04:52:46 -0700 Subject: [PATCH] add a ton of VPS upgrades; update website; live life --- agenda.org | 29 +- blog/manifesto-1.org | 2 +- config/emacs.el | 7 +- config/emacs.org | 7 +- config/nix.org | 386 +++++++++++++++----- journal/20250313.org | 15 + journal/20250317.org | 26 ++ journal/20250321.org | 28 ++ journal/index.org | 4 +- names.org | 35 ++ nix/data/deploy-matterbridge.sh | 25 ++ nix/data/matterbridge.toml | 25 ++ nix/data/motd.txt | 8 + nix/flake.lock | 36 +- nix/modules/configuration.nix | 31 +- nix/modules/default.nix | 1 + nix/modules/home/default.nix | 1 + nix/modules/home/emacs.nix | 2 +- nix/modules/home/mpd.nix | 14 + nix/modules/icecast.nix | 21 ++ nix/modules/inspircd.nix | 539 ++++++++++++++++++++++++++++ nix/modules/ircd.nix | 12 + nix/modules/maddy.nix | 18 + nix/modules/matterbridge.nix | 7 + nix/modules/murmur.nix | 6 +- nix/modules/nginx.nix | 18 +- nix/modules/ngircd.nix | 28 ++ nix/modules/secrets.nix | 1 - nix/modules/znc.nix | 31 ++ nix/secrets/secrets.yaml | 7 +- nix/systems/spontaneity/default.nix | 21 +- 31 files changed, 1249 insertions(+), 142 deletions(-) create mode 100644 journal/20250313.org create mode 100644 journal/20250317.org create mode 100644 journal/20250321.org create mode 100644 names.org create mode 100755 nix/data/deploy-matterbridge.sh create mode 100644 nix/data/matterbridge.toml create mode 100644 nix/data/motd.txt create mode 100644 nix/modules/icecast.nix create mode 100644 nix/modules/inspircd.nix create mode 100644 nix/modules/ircd.nix create mode 100644 nix/modules/maddy.nix create mode 100644 nix/modules/matterbridge.nix create mode 100644 nix/modules/ngircd.nix create mode 100644 nix/modules/znc.nix diff --git a/agenda.org b/agenda.org index b246b97..9f241e2 100644 --- a/agenda.org +++ b/agenda.org @@ -56,6 +56,28 @@ something. * Habits These are some habits I want to track. They are repeated according to a calendar schedule in general. +** TODO Supplements +SCHEDULED: <2025-03-22 Sat .+1d> +:PROPERTIES: +:LAST_REPEAT: [2025-03-21 Fri 04:48] +:END: +- State "DONE" from "TODO" [2025-03-21 Fri 04:48] +- State "DONE" from "TODO" [2025-03-13 Thu 09:52] +- State "DONE" from "TODO" [2025-03-11 Tue 00:34] +- State "DONE" from "TODO" [2025-03-10 Mon 23:23] +- State "DONE" from "TODO" [2025-03-10 Mon 01:08] +Current stack: +- Iron +- Vitamin D3 +- EPA/DHA +** TODO Pushups +SCHEDULED: <2025-03-22 Sat .+1d> +:PROPERTIES: +:LAST_REPEAT: [2025-03-21 Fri 04:49] +:END: +- State "DONE" from "TODO" [2025-03-21 Fri 04:49] +- State "DONE" from "TODO" [2025-03-11 Tue 00:16] +I want to be healthy. ** TODO Run SCHEDULED: <2025-02-11 Tue .+1d> I want to be able to run or bike every day so that I get my exercise in. @@ -68,10 +90,13 @@ SCHEDULED: <2025-02-12 Wed .+1d> - State "DONE" from "TODO" [2025-01-11 Sat 02:26] I want to stretch every day so that I can become more flexible. ** TODO Journal -SCHEDULED: <2025-03-03 Mon .+1d> +SCHEDULED: <2025-03-22 Sat .+1d> :PROPERTIES: -:LAST_REPEAT: [2025-03-02 Sun 05:38] +:LAST_REPEAT: [2025-03-21 Fri 04:49] :END: +- State "DONE" from "TODO" [2025-03-21 Fri 04:49] +- State "DONE" from "TODO" [2025-03-13 Thu 09:55] +- State "DONE" from "TODO" [2025-03-11 Tue 00:57] - State "DONE" from "TODO" [2025-03-02 Sun 05:38] - State "DONE" from "TODO" [2025-02-20 Thu 22:07] - State "DONE" from "TODO" [2025-02-18 Tue 01:44] diff --git a/blog/manifesto-1.org b/blog/manifesto-1.org index cc5772f..9145033 100644 --- a/blog/manifesto-1.org +++ b/blog/manifesto-1.org @@ -232,7 +232,7 @@ adopt their framing because we have uncritically looked to these institutions for guidance historically. We have given them unchecked cultural power. These people set trends -- and what's in fashion 20 years from now isn't decided in elections. It's decided in a Harvard -thesis today. But this begs the question -- if they're so wrong +thesis today. But this begs the question: if they're so wrong about communism, what else could they be so wrong about? If we can't trust them on the worst idea in history, why must we trust them on anything at all? diff --git a/config/emacs.el b/config/emacs.el index 92a3b9c..ef85f0c 100644 --- a/config/emacs.el +++ b/config/emacs.el @@ -1,5 +1,5 @@ (setq system-email "ret2pop@gmail.com") -(setq system-username "prestonpan") +(setq system-username "ret2pop") (setq system-fullname "Preston Pan") (use-package emacs @@ -356,6 +356,10 @@ (defun matrix-org () (interactive) (ement-connect)) + (defun gimp-org () + (interactive) + (erc-tls :server "irc.gimp.org" + :port "6697")) :config (general-create-definer leader-key :prefix "SPC") (leader-key 'normal @@ -408,6 +412,7 @@ "i p c" '(prestonpan :wk "Connect to my IRC server") "i l c" '(liberachat :wk "Connect to libera chat server") "i e c" '(efnet :wk "Connect to efnet chat server") + "i g c" '(gimp-org :wk "Connect to gimp chat server") "h" '(:ignore t :wk "Documentation") "h v" '(counsel-describe-variable :wk "Describe variable") "h f" '(counsel-describe-function :wk "Describe function") diff --git a/config/emacs.org b/config/emacs.org index 783eaa9..47cdc06 100644 --- a/config/emacs.org +++ b/config/emacs.org @@ -12,7 +12,7 @@ emacs-lisp language only to configure variables for said packages, for the most Change these variables: #+begin_src emacs-lisp (setq system-email "ret2pop@gmail.com") - (setq system-username "prestonpan") + (setq system-username "ret2pop") (setq system-fullname "Preston Pan") #+end_src ** Emacs @@ -461,6 +461,10 @@ emacs keybindings. (defun matrix-org () (interactive) (ement-connect)) + (defun gimp-org () + (interactive) + (erc-tls :server "irc.gimp.org" + :port "6697")) :config (general-create-definer leader-key :prefix "SPC") (leader-key 'normal @@ -513,6 +517,7 @@ emacs keybindings. "i p c" '(prestonpan :wk "Connect to my IRC server") "i l c" '(liberachat :wk "Connect to libera chat server") "i e c" '(efnet :wk "Connect to efnet chat server") + "i g c" '(gimp-org :wk "Connect to gimp chat server") "h" '(:ignore t :wk "Documentation") "h v" '(counsel-describe-variable :wk "Describe variable") "h f" '(counsel-describe-function :wk "Describe function") diff --git a/config/nix.org b/config/nix.org index aea8c30..9111d2d 100644 --- a/config/nix.org +++ b/config/nix.org @@ -132,6 +132,7 @@ so that adding new configurations that add modifications is made simple. }; zones = { "ret2pop.net." = nixos-dns.utils.octodns.generateZoneAttrs [ "cloudflare" ]; + "nullring.xyz." = nixos-dns.utils.octodns.generateZoneAttrs [ "cloudflare" ]; }; }; }; @@ -312,6 +313,7 @@ under ~default.nix~ in the ~systems~ folder. linux-manual man-pages man-pages-posix + iproute2 ]); boot.loader.grub = lib.mkIf config.monorepo.profiles.grub.enable { enable = true; @@ -447,13 +449,30 @@ I use IPFS for my website and also for my ISOs for truly declarative and determi configuration. NixOS might be moving to IPFS for binary cache distribution and package distribution soon, and I'm waiting on that. #+begin_src nix :tangle ../nix/modules/kubo.nix -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { services.kubo = { - enable = true; + enable = lib.mkDefault config.monorepo.profiles.workstation.enable; }; } #+end_src +** Murmur +#+begin_src nix :tangle ../nix/modules/murmur.nix + { lib, config, ... }: + { + services.murmur = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + logFile = "/var/log/murmur.log"; + openFirewall = true; + hostName = "0.0.0.0"; + welcometext = "Wecome to the Null Murmur instance!"; + registerName = "nullring"; + registerHostname = "nullring.xyz"; + sslCert = "/var/lib/acme/nullring.xyz/fullchain.pem"; + sslKey = "/var/lib/acme/nullring.xyz/sslKey.pem"; + }; + } +#+end_src ** i2pd I use i2p for some p2p connections. We enable it with the server profile: #+begin_src nix :tangle ../nix/modules/i2pd.nix @@ -469,6 +488,149 @@ I use i2p for some p2p connections. We enable it with the server profile: }; } #+end_src +** Icecast +This is an internet radio which will host a ton of music. +#+begin_src nix :tangle ../nix/modules/icecast.nix + { lib, config, ... }: + { + services.icecast = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + listen.address = "0.0.0.0"; + extraConfig = '' + + 0 + /stream.m3u + 3600 + + + +
+ + + ''; + }; + admin.password = "changeme"; + } +#+end_src +** IRC +A great protocol. It's the most widely usable by any netizen, as it is +just pure plaintext and the operating costs are trivial. +*** NgIRCD +I run my own IRC server to bridge with my Matrix server and my discord guild. +#+begin_src nix :tangle ../nix/modules/ngircd.nix + { lib, config, ... }: + { + services.ngircd = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + config = '' + [Global] + Name = nullring.xyz + Info = NullRing IRC Instance + Listen = 0.0.0.0 + MotdFile = /etc/motd.txt + Network = NullRing + Ports = 6667 + [Options] + PAM = no + [SSL] + CertFile = /var/lib/acme/nullring.xyz/fullchain.pem + CipherList = HIGH:!aNULL:@STRENGTH:!SSLv3 + KeyFile = /var/lib/acme/nullring.xyz/key.pem + Ports = 6697 + ''; + }; + environment.etc."motd.txt" = { + source = ../data/motd.txt; + mode = "644"; + user = "ngircd"; + group = "ngircd"; + }; + } +#+end_src +*** MOTD +I also have a MOTD file that I want to add, which displays when users +connect to the server: +#+begin_src fundamental :tangle ../nix/data/motd.txt + Welcome to the NullRing experience! + The main channel is #nullring; we're glad to have you! + + Rules: + 1. Don't be annoying. + 2. No illegal content. + And if you're here to have constructive, philisophical and theoretical + conversations, this is the place for you! +#+end_src +*** ZNC +I want to be able to create some sort of identity persistence on IRC +for users: +#+begin_src nix :tangle ../nix/modules/znc.nix + { lib, config, ... }: + { + services.znc = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + openFirewall = true; + confOptions = { + useSSL = true; + passBlock = '' + + Method = sha256 + Hash = d4abdd69aa24de69693885c5bd83a4a0e9ee989e1a69a905041b0dad9abc06ea + Salt = sDY,?H5AxC-!gH3a.:)D + + ''; + modules = [ + "partyline" + "webadmin" + "adminlog" + "log" + ]; + networks = { + "libera" = { + server = "irc.libera.chat"; + port = 6697; + useSSL = true; + modules = [ "simple_away" ]; + }; + }; + }; + }; + } +#+end_src +Note that the password hash and whatnot is completely random so there +is almost no point to cracking it with hashcat. +** Conduit +This is a modern matrix server that is meant to be lightweight while +still federating and hosting the same protocol. +#+begin_src nix :tangle ../nix/modules/conduit.nix + { config, lib, ... }: + { + services.matrix-conduit = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + settings.global = { + server_name = "matrix.${config.monorepo.vars.remoteHost}"; + trusted_servers = [ + "matrix.org" + "nixos.org" + ]; + address = "0.0.0.0"; + port = 6167; + allow_registration = true; + }; + }; + } +#+end_src +** Matterbridge +Then I want to connect all these servers together with Matterbridge: +#+begin_src nix :tangle ../nix/modules/matterbridge.nix + { lib, config, ... }: + { + services.matterbridge = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + configPath = "/etc/matterbridge.toml"; + }; + } +#+end_src ** Ollama Use ollama for serving large language models to my other computers. #+begin_src nix :tangle ../nix/modules/ollama.nix @@ -497,31 +659,8 @@ Use ollama for serving large language models to my other computers. }; } #+end_src -** Dovecot -My server sets up dovecot in order to use imaps. -#+begin_src nix :tangle ../nix/modules/dovecot.nix - { config, lib, ... }: - { - services.dovecot2 = { - enable = lib.mkDefault config.monorepo.profiles.server.enable; - enableImap = true; - enablePop3 = true; - }; - } -#+end_src -** Postfix -Use postfix as an smtps server. -#+begin_src nix :tangle ../nix/modules/postfix.nix - { config, lib, ... }: - { - services.postfix = { - enable = lib.mkDefault config.monorepo.profiles.server.enable; - config = { - }; - }; - } -#+end_src ** Git Server +I run my own git server in order to have a mirror in case github goes down. #+begin_src nix :tangle ../nix/modules/git-daemon.nix { config, lib, ... }: { @@ -533,6 +672,9 @@ Use postfix as an smtps server. } #+end_src ** Nginx +These are all my virtual hosts. For many of these servers we have to +have a reverse proxy in order to expose the locally running instances +to the outside world under a domain. #+begin_src nix :tangle ../nix/modules/nginx.nix { config, lib, services, ... }: { @@ -544,10 +686,6 @@ Use postfix as an smtps server. recommendedOptimisation = true; recommendedProxySettings = true; recommendedTlsSettings = true; - - # Only allow PFS-enabled ciphers with AES256 - # sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL"; - appendHttpConfig = ''''; gitweb = { @@ -595,15 +733,32 @@ Use postfix as an smtps server. }; "${config.monorepo.vars.remoteHost}" = { serverName = "${config.monorepo.vars.remoteHost}"; + serverAliases = [ "ret2pop.nullring.xyz" ]; root = "/var/www/ret2pop-website/"; addSSL = true; enableACME = true; }; + + "nullring.xyz" = { + serverName = "nullring.xyz"; + root = "/var/www/nullring/"; + addSSL = true; + enableACME = true; + }; + + "mail.${config.monorepo.vars.remoteHost}" = { + serverName = "mail.${config.monorepo.vars.remoteHost}"; + root = "/var/www/dummy"; + addSSL = true; + enableACME = true; + }; }; }; } #+end_src ** Git Web Interface +I enable the git web interface to show off my git repos to the +world. This was the easiest frontend to set up on NixOS. #+begin_src nix :tangle ../nix/modules/gitweb.nix { lib, config, ... }: { @@ -613,25 +768,6 @@ Use postfix as an smtps server. }; } #+end_src -** Conduit -#+begin_src nix :tangle ../nix/modules/conduit.nix - { config, lib, ... }: - { - services.matrix-conduit = { - enable = lib.mkDefault config.monorepo.profiles.server.enable; - settings.global = { - server_name = "matrix.${config.monorepo.vars.remoteHost}"; - trusted_servers = [ - "matrix.org" - "nixos.org" - ]; - address = "0.0.0.0"; - port = 6167; - allow_registration = true; - }; - }; - } -#+end_src ** Nvidia #+begin_src nix :tangle ../nix/modules/nvidia.nix { config, lib, pkgs, ... }: @@ -669,6 +805,27 @@ Use postfix as an smtps server. ] else []); } #+end_src +** Maddy +#+begin_src nix :tangle ../nix/modules/maddy.nix + { lib, config, options, ... }: + { + services.maddy = { + enable = lib.mkDefault config.monorepo.profiles.server.enable; + openFirewall = true; + primaryDomain = "ret2pop.net"; + tls = { + loader = "acme"; + }; + config = builtins.replaceStrings [ + "imap tcp://0.0.0.0:143" + "submission tcp://0.0.0.0:587" + ] [ + "imap tls://0.0.0.0:993 tcp://0.0.0.0:143" + "submission tls://0.0.0.0:465 tcp://0.0.0.0:587" + ] options.services.maddy.config.default; + }; + } +#+end_src ** Main Configuration This is the backbone of the all the NixOS configurations, with all these options being shared because they enhance security. @@ -676,6 +833,7 @@ because they enhance security. { config, pkgs, lib, ... }: { imports = [ + ./matterbridge.nix ./xserver.nix ./ssh.nix ./pipewire.nix @@ -685,13 +843,14 @@ because they enhance security. ./cuda.nix ./nginx.nix ./git-daemon.nix - ./postfix.nix - ./dovecot.nix ./ollama.nix ./i2pd.nix ./gitweb.nix ./conduit.nix ./bitcoin.nix + ./murmur.nix + ./ngircd.nix + ./znc.nix ]; documentation = { @@ -989,12 +1148,28 @@ because they enhance security. users.groups.nginx = lib.mkDefault {}; users.groups.git = lib.mkDefault {}; + users.groups.ircd = lib.mkDefault {}; + users.users = { - nginx.group = "nginx"; - nginx.isSystemUser = lib.mkDefault true; - nginx.extraGroups = [ - "acme" - ]; + ngircd = { + isSystemUser = lib.mkDefault true; + extraGroups = [ "acme" "nginx" ]; + }; + + ircd = { + isSystemUser = lib.mkDefault true; + group = "ircd"; + home = "/home/ircd"; + }; + + nginx = { + group = "nginx"; + isSystemUser = lib.mkDefault true; + extraGroups = [ + "acme" + ]; + }; + root.openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICts6+MQiMwpA+DfFQxjIN214Jn0pCw/2BDvOzPhR/H2 preston@continuity-dell" ]; @@ -1235,7 +1410,12 @@ I have many imports that we'll go through next. bear clang-tools ]) else []) - ++ + ++ + (if config.monorepo.profiles.workstation.enable then (with pkgs; [ + open-webui + mumble + ]) else []) + ++ (if config.monorepo.profiles.lang-js.enable then (with pkgs; [ nodejs bun @@ -1319,6 +1499,7 @@ I have many imports that we'll go through next. kdenlive kicad reaper + murmur ]) else []); monorepo.profiles = { @@ -1648,7 +1829,7 @@ as an org file which gets automatically tangled to an emacs-lisp file. programs.emacs = { enable = lib.mkDefault config.monorepo.profiles.graphics.enable; - package = pkgs.emacs29-pgtk; + package = pkgs.emacs30-pgtk; extraConfig = '' (setq debug-on-error t) (org-babel-load-file @@ -2086,35 +2267,49 @@ just set the options to the ones you want in your system ~default.nix~. This mpd configuration uses pipewire by default, and it should just work if you place music in the ~~/music~ directory and then run ~mpc add /~ afterwards. #+begin_src nix :tangle ../nix/modules/home/mpd.nix -{ lib, config, ... }: -{ - services.mpd = { - enable = lib.mkDefault config.monorepo.profiles.music.enable; - dbFile = "/home/${config.monorepo.vars.userName}/.config/mpd/db"; - dataDir = "/home/${config.monorepo.vars.userName}/.config/mpd/"; - network.port = 6600; - musicDirectory = "/home/${config.monorepo.vars.userName}/music"; - playlistDirectory = "/home/${config.monorepo.vars.userName}/.config/mpd/playlists"; - network.listenAddress = "0.0.0.0"; - extraConfig = '' - audio_output { - type "pipewire" - name "pipewire output" - } - audio_output { - type "httpd" - name "My HTTP Stream" - encoder "opus" # optional - port "8000" - # quality "5.0" # do not define if bitrate is defined - bitrate "128000" # do not define if quality is defined - format "48000:16:1" - always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped. - tags "yes" # httpd supports sending tags to listening streams. - } - ''; - }; -} + { lib, config, ... }: + { + services.mpd = { + enable = lib.mkDefault config.monorepo.profiles.music.enable; + dbFile = "/home/${config.monorepo.vars.userName}/.config/mpd/db"; + dataDir = "/home/${config.monorepo.vars.userName}/.config/mpd/"; + network.port = 6600; + musicDirectory = "/home/${config.monorepo.vars.userName}/music"; + playlistDirectory = "/home/${config.monorepo.vars.userName}/.config/mpd/playlists"; + network.listenAddress = "0.0.0.0"; + extraConfig = '' + audio_output { + type "pipewire" + name "pipewire output" + } + audio_output { + type "httpd" + name "My HTTP Stream" + encoder "opus" # optional + port "8000" + # quality "5.0" # do not define if bitrate is defined + bitrate "128000" # do not define if quality is defined + format "48000:16:1" + always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped. + tags "yes" # httpd supports sending tags to listening streams. + } + audio_output { + type "shout" + encoding "ogg" + name "my cool stream" + host "localhost" + port "8000" + mount "/example.ogg" + user "source" + password "" + + bitrate "64" + format "44100:16:1" + description "Nullring public radio" + } + ''; + }; + } #+end_src *** MPV I have some emacs + yt-dlp integrations with mpv with my rss feed, and therefore we need it @@ -2938,7 +3133,11 @@ Spontaneity is my VPS instance. firewall.allowedTCPPorts = [ 80 443 + 465 + 993 8448 + 6697 + 6667 ]; domains = { enable = true; @@ -2947,11 +3146,22 @@ Spontaneity is my VPS instance. a.data = "66.42.84.130"; aaaa.data = "2001:19f0:5401:10d0:5400:5ff:fe4a:7794"; }; + "nullring.xyz" = { + a.data = "66.42.84.130"; + aaaa.data = "2001:19f0:5401:10d0:5400:5ff:fe4a:7794"; + }; }; subDomains = { - "${config.monorepo.vars.remoteHost}" = {}; + "${config.monorepo.vars.remoteHost}" = {}; "matrix.${config.monorepo.vars.remoteHost}" = {}; "www.${config.monorepo.vars.remoteHost}" = {}; + "mail.${config.monorepo.vars.remoteHost}" = {}; + + "nullring.xyz" = {}; + "matrix.nullring.xyz" = {}; + "talk.nullring.xyz" = {}; + "mail.nullring.xyz" = {}; + "ret2pop.nullring.xyz" = {}; }; }; }; diff --git a/journal/20250313.org b/journal/20250313.org new file mode 100644 index 0000000..daf654e --- /dev/null +++ b/journal/20250313.org @@ -0,0 +1,15 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Thursday, 13 March 2025 +** 09:52 +I slept three hours only. Yesterday I set up a mumble server, and I'm +going to set up more of the mumble config and probably update my DNS +records to reflect it. Also, I'm going to probably update my DNS +records to point to my new VPS soon, hopefully after I migrate all my +services over. diff --git a/journal/20250317.org b/journal/20250317.org new file mode 100644 index 0000000..b26249b --- /dev/null +++ b/journal/20250317.org @@ -0,0 +1,26 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Monday, 17 March 2025 +** 01:43 +I just saw Matthew today at UBC and we talked for a bit about things +that we had already talked about for some time; I got a 3d printed box +and discussed the possibility of 3d printing a bell siphon for my +future aquaponics setup; Ainslie messaged someone on facebook +marketplace for a 55 Gallon blue barrel for my aquaponics setup and +I'm planning on having the cycling mechanism done in a couple +weeks. I'm going to need a saw of some kind in order to cut pieces out +of these barrels, but that, and a hand drill, are the only tools I +will need (most likely), as well as some supports in order to suspend +the barrels. + +I'm considering starting a vlog, and I really should start making +videos, and I really should start making music and whatnot. +** 22:23 +I am currently refactoring some of my NixOS VPS configs and I will +eventually have all the servers that I want hosted done in NixOS. diff --git a/journal/20250321.org b/journal/20250321.org new file mode 100644 index 0000000..c280b26 --- /dev/null +++ b/journal/20250321.org @@ -0,0 +1,28 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Friday, 21 March 2025 +** 04:27 +Journaling again. I've been on a roll! Except not really. I haven't +been brushing my teeth like I should and I need to do the dishes. I +also need to keep my physical health in order by doing pushups and +cardio, which I haven't been doing. Though, the aquaponics setup is +going to be done soon as I've already ordered everything for it. Sans +the plants and the fish, of course. I need to cycle the system until +there are bacteria growing in the bed that actually fixes ammonia. I +think in order to do this I will need these bacteria from other setups +and I will need to seed it. However this shouldn't be too much of an +issue and worst case they occur naturally. + +I want to work on a section of my website that's dedicated to naming +all my services, and I want to work on the mindmap more +also. Hopefully that will be fruitful. +** 04:47 +I forgot to mention that Asimov needs a front and back rack. I ordered +the front rack but it turns out that I actually need this other part +in order for it to mount. That's fine though -- I ordered that too. diff --git a/journal/index.org b/journal/index.org index 6828971..6183061 100644 --- a/journal/index.org +++ b/journal/index.org @@ -16,7 +16,9 @@ * Introduction This is my journal. It's basically my everyday life, or at least the part that I can make public (not many personal details although there will be some). I will also be posting some TODOs that -I have throughout time. +I have throughout time. I use the following [[file:../names.org][object names]] when I +reference my system, so that may be confusing for some, though it is +clearly documented in the above. ** Entries @@html: