Docs: System Setup
My system setup centers around a data/
dir that holds everything I might ever want to backup or transfer between systems. There are lots of symlinks & several directories with special uses.
data/projects/
is central to my daily workflow. data/
is for long-term storage and long-term file organization.
Note: This document is primarily intended for my own use. My system setup works great at some things, but when it's not working right, I get confused bc I don't remember the nitty gritty.
Index
- Things I wish to change
- Directory Structure
- Home Directory
- Data Directory
- Files Missing from
data/
- Data Dir Symlinks
- Backup to external drive
- Restore from backup
- Setup a new system (install packages & setup symlinks)
- Programming Environment
- Project Organization / Workflows
- Notes
Things I wish to change
- Finish documenting everything (especially backup/restore stuff)
- Remove directories and files that aren't useful.
- Thoroughly document how my backup/restore system works, so that I can change my own setup.
- Some reorganization to make it less confusing / easier to wrap my head around.
- Create a simple interface (preferably a GUI) for my backup/restore system. A new CLI could help, but I'd prefer a GUI.
Directory Structure
home/reed/data/
holds almost all my configurations and files. data/
holds several symlinks, and my home dir uses symlinks extensively.
Home Directory
The home directory contains LOTS of symlinks that link INTO the data directory. Subdirectories may contain some. Such as ~/.config/nvim/
(dir) links into the data directory, as does ~/.config/i3/config
(file)
Data Directory
Real directories within data/
:
data/owner/
- Organizes files by organization that owns them. Personally, I haveReed/
,Taeluf/
and two directories for local organizations I've run. ('owner-stale/' also exists for things I'm not using any more.)data/system/
- Contains configurations and scripts for setting up new systems (and backing up my current system, I think)data/trash/
- When system files are replaced with symlinks, the original copies go in heredata/projects/
- A symlink toowner/Reed/projects
and the life-blood of my system. Contains all my code, video and photo editing projects, journalism work, activism-related documents, and more.data/quicklinks/
- (unused?) I think this was for convenience of navigation, but has not been used at all.data/vendor/
- (unused?) I think this was for global software dependencies.
Files missing from data/
I can't readily get everything I want into data/
. Missing is:
- Primarily system configs (i.e. not user-land configs; i.e. apache or other confs in
/etc/
). - New user-land configs generated by apps. (I do not have a convenient way to add new files to my
data/
dir for permanent storage. I think my gimp templates is one such victim.)
Data Dir Symlinks
data/*
contains various symlinks for final setup and for easier navigation. Most of them link somewhere into owner/Reed/
.
data/projects
: all my code, video and photo editing projects, journalism work, activism-related documents, and more. Central to my workflow.apps/
: Mostly app-configurations I wish to keep. Some app images and some extraneous files I don't much care about. (owner/Reed/Apps/)backup/
: Backups go in here, such as an export of my email client settings or apache server settingsbin/
: Scripts used system-wide. /home/reed/bin/ and projects/bin both link to it. Contains:launcher/
to open appsscripts/
for things likebvim php user
which opens NeoVim and a terminal to my user login project.sourced/
to declare various functions, likecpr
as a shorthand forcomposer dump-autoload
orgp
as a shorthand for agrep
command that excludesvendor/
and several binary files like mp4 or png
config/
: System configs like.bashrc
, some app configs likenvim/init.vim
and several other setup-files fornvim
. (I don't know why some app configs are inconfig/
and others are inapps/
. It's confusing)devices/
: Synchronization directories for my physical devices. I have one for my smartphone. When I run syncthing it updates that directory. I think my laptop used to be listed there too, but it's not now. I think I used to have my old phone in there too, but maybe I retired it and got all the files out of it. Idr.main/
: I think this folder is just for convenience of navigation. I don't use it for that. Links toowner/Reed
, which contains apps/, backup/, bin/, config/, Desktop/, devices/, Documents/, Downloads/, Music/, Pictures/, projects/, Trash/, Videos/ ...bin/
is a symlink intoprojects/bin
but everything other listed directory is actually stored withinowner/Reed/
.
Backup to external drive
- I use my bash lib 'tlf' to run backups. I have
linux
,linux2
, andlinux3
sub-commands, and I think I uselinux3
but I really don't remember. - TODO: Further document how to run a backup
Restore from backup
- Same as
Backup to external drive
above ... - TODO: Further document restoring from backup
Setup a new system
- Same as
Backup to external drive
above ... - TODO: Further document setting up a new system
Programming Environment
I mostly have an intuitive understanding of this, so I'm not sure I need it documented, but here's the gist:
projects/[language]/[project name]
: Path to each programming projectbvim php user
fuzzy-findsphp-liaison/User
and opens neovim and a terminal to this directory.tvim
does just neovim.term
does just terminal.- I manage git with
git bent
(gitlab) - I use
tlf
(gitlab) subcommands for various things (not all programming related):server
to push to servers, ssh, and download from serversocr
to generate text-based versions of PDF filestranscribe
to usewhisper
ai to transcribe video and audioimage compress
to compress all of my phone's images within a directory. (has specific code for aspect ratios produced by my camera)linux
,linux2
,linux3
: For system backup, restore, and setup. They're a mess and I don't remember how to use them or which one to use.
- I have
tlf
commands for, but do not use:dnf
: Automatically updating my system setup files while using dnfedit
: Edit system config files within the homedir, with some convenience features.clock
: A poor clockin/clockout utility I made and abandonedbackup
: Backup a MySql database to a fileapache-fedora
: Setup new httpd virtual hosts. I just usephp -S
debug server now, it's so much easier for local dev than messing with apache.
- I use neovim with custom configurations and some plugins as my primary text and code editor.
- I have a
monolith
project directory for any random code I write that isn't deserving of its own repository. - Almost every code project is backed up to git (gitlab).
- I host documentation of my projects at https://www.taeluf.com/docs/ that I use as my main reference when programming.
- I have a few technical blogs on taeluf.com that I tend to forget about.
- I use Code Scrawl for generating documentation.
- I use Liaison for website framework.
- I use Tester to test my php code.
- I use Builder to compile PHP projects (Except I haven't finished building Builder & I haven't integrated it into my workflow)
- I don't really use cicd or git hooks & my processes are more manual than I would like. My build tool is supposed to help fix this, but I had a mental breakdown months ago and it's been on the backburner.
Project Organization / Workflows
I don't really need this documented. My projects are in project/
and I have a mostly intuitive understanding of that setup.
TODO But it might be nice to write this down later.
Notes
- Personal files are split between
owner/Reed/Documents
andprojects/personal
... ugh - I keep notes in
data/system/docs/Main.md
, anddata/system/[Fedorai3wm]/Status.md
contains specific setup notes for that system. Asystem/[FedoraKDE]
dir contains other notes.