I don't see what nix is doing for you? There's vim, absolutely, coreutils (though I don't immediately see anything GNU-specific), and a tiny wrapper script that happens to be written in flake.nix but could trivially be factored out. I don't see anything that I wouldn't expect to run on, say, OpenBSD if you installed vim.
Nix always felt like an OS on the blockchain. It's fine if you value verifiability above everything, but becomes very burdensome if you find yourself tweaking your dev environment often. Still, I think it probably teaches good discipline.
So, I've been keeping a journal for 17 years, off and on. I don't know anyone else who does it my way, so here's my method.
I made a dedicated email account just for the journal. I personally chose gmail but if you distrust google you could use any other provider including self-hosted.
At the end of the day, or when I feel like it, I log in and email the account from itself with a message about whatever happened that day and whatever I'm thinking or feeling, and use the date for the subject line, like "August 12, 2025". I never, ever send emails to anything else from that account nor connect it to anything or use it for anything else. It is a total island.
The result is 17 years of easily-searchable journal, password-protected, backed-up, accessible from anywhere that has internet, can't be "lost" like a physical journal (yes I know I'm trusting google, but again, go self-host if you're worried about that), can't be "found" by someone looking through my things.
I can't even tell you how much value I've gotten out of it. You forget things you don't even know you forgot. So many little moments and days in life. You'll be shocked at the things you used to think and feel sometimes. You'll be shocked at whole magical days that you haven't thought of in years and years and likely would never have thought of again. It's a record of me changing over time and the phases I've gone through. I can't recommend it enough.
And it doesn't take much discipline, either. It's not something I "have" to do. I do it when I feel like it. There are years where I have only 25 entries, and others where I have 200. It depends how much I felt like writing. I find it spikes in years where I'm feeling very emotional, usually during bad times. But I've written down many great days too.
I’ve been journaling on and off since the early 2000s — but never for long. A few weeks in, I’d usually stop. Often because what I wrote felt too trivial to be worth it.
Then, while reading some productivity book, I stumbled on a trick: set the bar for success absurdly low. So low that even on my worst days I could still clear it.
Enter The One-Line Journal: the goal is to write just one single line each day. And, as it turns out, most days that first sentence is quickly followed by a few more — sometimes a lot more. I’ve been doing it almost every single day for 2.5 years now.
In the spirit of keeping the barrier low, I deliberately start with a blank slate each morning by creating a new file for that day. The fresh page lowers the threshold even further. Everything is done in Vim with this little alias:
oneline='printf "## $(date +"%Y") \n \n#" >> /path/to/folder/year/$( date +"%Y-%j-%b-%d" )_ol-jrnl.md && vim +$ /path/to/folder/year/$( date +"%Y-%j-%b-%d")_ol-jrnl.md'
Knew you'd get comments asking why nix is important to the setup. I like it for things like this as well.
Shell scripting by default has terrible isolation. But the way Nix puts shell scripts together, you can be confident that a script's own PATH only contains what it needs to, which is a nice guarantee to have.
18 comments
[ 5.7 ms ] story [ 49.1 ms ] thread(That said, yes, it's a nice journaling system)
I made a dedicated email account just for the journal. I personally chose gmail but if you distrust google you could use any other provider including self-hosted.
At the end of the day, or when I feel like it, I log in and email the account from itself with a message about whatever happened that day and whatever I'm thinking or feeling, and use the date for the subject line, like "August 12, 2025". I never, ever send emails to anything else from that account nor connect it to anything or use it for anything else. It is a total island.
The result is 17 years of easily-searchable journal, password-protected, backed-up, accessible from anywhere that has internet, can't be "lost" like a physical journal (yes I know I'm trusting google, but again, go self-host if you're worried about that), can't be "found" by someone looking through my things.
I can't even tell you how much value I've gotten out of it. You forget things you don't even know you forgot. So many little moments and days in life. You'll be shocked at the things you used to think and feel sometimes. You'll be shocked at whole magical days that you haven't thought of in years and years and likely would never have thought of again. It's a record of me changing over time and the phases I've gone through. I can't recommend it enough.
And it doesn't take much discipline, either. It's not something I "have" to do. I do it when I feel like it. There are years where I have only 25 entries, and others where I have 200. It depends how much I felt like writing. I find it spikes in years where I'm feeling very emotional, usually during bad times. But I've written down many great days too.
Then, while reading some productivity book, I stumbled on a trick: set the bar for success absurdly low. So low that even on my worst days I could still clear it.
Enter The One-Line Journal: the goal is to write just one single line each day. And, as it turns out, most days that first sentence is quickly followed by a few more — sometimes a lot more. I’ve been doing it almost every single day for 2.5 years now.
In the spirit of keeping the barrier low, I deliberately start with a blank slate each morning by creating a new file for that day. The fresh page lowers the threshold even further. Everything is done in Vim with this little alias:
oneline='printf "## $(date +"%Y") \n \n#" >> /path/to/folder/year/$( date +"%Y-%j-%b-%d" )_ol-jrnl.md && vim +$ /path/to/folder/year/$( date +"%Y-%j-%b-%d")_ol-jrnl.md'
Nothing fancy. Just works for me.
When I first started reading I thought, why not use Vimwiki or org?
I’ve use vimwiki for years but I really like the approach taken here. It’s simple and robust.
Making use of Vim’s built in abbreviations and syntax highlighting is a neat touch.
Shell scripting by default has terrible isolation. But the way Nix puts shell scripts together, you can be confident that a script's own PATH only contains what it needs to, which is a nice guarantee to have.