Commit graph

930 commits

Author SHA1 Message Date
William Carroll
694ca4a85f Ensure socrates/default.nix is a function
Nix complains that `nixos.socrates` is not a function but a set. By adding
`{ ... }:` to the top of the file, I'm hoping to change it from a set to a
function.
2020-03-07 16:17:23 +00:00
William Carroll
5ba3f2b572 Attempt to serve {learn,blog}.wpcarro.dev
Reading an Nginx tutorial and trying to port the information over to NixOS.
2020-03-07 16:17:22 +00:00
William Carroll
431b4980e4 Remove fix-point recursion from socrates/default.nix
The fixed-point recursion isn't necessary.
2020-03-07 15:07:32 +00:00
William Carroll
b04b1dafd2 Implement an in-place shuffling algorithm
I believe this may be the Fisher-Yates shuffle, but I'm not sure.
2020-03-06 18:45:55 +00:00
William Carroll
a9ac4f925b Support root directory and dirs like /tmp
Properly handle display the root directory and sub directories.
2020-03-06 18:45:55 +00:00
William Carroll
5d656b646f Include notmuch as an Emacs dependency
`(require 'notmuch)` in `email.el` broke my Emacs initialization. This should
fix that.
2020-03-06 18:45:55 +00:00
William Carroll
28af585f3d Include NIX_PATH settings in nix/rebuild-emacs function
I'm currently setting NIX_PATH in ~/briefcase/shell.nix. This means when I call
`nix/rebuild-emacs` from a buffer that is inside the briefcase directory, the
command succeeds because NIX_PATH is properly defined. When I call
`nix/rebuild-emacs` from any other location it fails.

I'm hard-coding the NIX_PATH in this command so that I can call
`nix/rebuild-emacs` from any buffer that is currently active.
2020-03-06 18:45:55 +00:00
William Carroll
96ff26e5ca Support nix/home-manager-switch
As a part of my plan to reduce my dependence on the shell, I defined an Elisp
function to call `home-manager switch` from `M-x`.
2020-03-06 18:45:55 +00:00
William Carroll
2eb9259a1b Manage fish with home-manager
I patched home-manager locally to support fzf keybindings for fish. I will PR
this into home-manager, but I haven't yet, which means that my home.nix file
depends on my local ~/home-manager.
2020-03-06 18:45:55 +00:00
William Carroll
fe61dee511 Splice configs/shared directory
- Move all children from configs/shared into configs.
- Delete "shared" directory.
2020-03-06 10:15:29 +00:00
William Carroll
137bd6dc0c Drop support for terminator
I've been consistently using vterm enough that I don't think I will change
shells anytime soon. Couple this with my previous commit where I hint that I'd
like to curb all terminal usage if possible, and it seems unlikely that I'll
want to keep this terminator configuration.
2020-03-06 10:15:29 +00:00
William Carroll
382ef0be55 Drop support for rofi
Rofi is a nicer alternative to dmenu, but I use neither dmenu nor rofi, so
farewell.
2020-03-06 10:15:29 +00:00
William Carroll
fd0595805f Drop support for mpd
If I'm being candid, I'm not even sure I remember what mpd does. My current
guess is that it's a music player daemon.
2020-03-06 10:15:29 +00:00
William Carroll
e31e8d7dcc Drop support for lf
While I like lf, I don't use it enough to maintain this configuration.
2020-03-06 10:15:29 +00:00
William Carroll
86850e9c61 Drop support for .g4d
I have an Elisp module that encodes these aliases mappings.
2020-03-06 10:15:29 +00:00
William Carroll
813c7f94de Drop support for desktop and laptop
As I pruned increasingly more dependencies, the few dependencies that desktop
and laptop hosted were too trivial for me to justify supporting. And so, I no
longer support them.
2020-03-06 10:15:29 +00:00
William Carroll
f2d9af2745 Support gpg-agent with home-manager
A previous commit supported gpg.conf; this commit supports gpg-agent.conf. I
still have other files in my .gnupg directory that I should audit.
2020-03-06 10:15:29 +00:00
William Carroll
19742e7790 Add programs to home-manager
Support commonly used programs like fd, exa, bat, etc.

For now, I'm unsure how to manage the programs in my emacs/default.nix with my
home.nix. I'll wait until I have a stronger opinion to handle this.
2020-03-06 10:15:29 +00:00
William Carroll
f645b6dadf Support fzf with home-manager
Because (to my knowledge) home-manager doesn't support fish-shell, I need to
retain some fzf-specific configuration in my fish/config.fish file.
2020-03-06 10:15:29 +00:00
William Carroll
cb3d1da6c9 Support lorri with home-manager
Prefer starting lorri with home-manager.

Note: I could have removed the `systemctl --user start lorri.service` line
before switching to home-manager by calling `systemctl --user enable
lorri.service`. This would have made a symlink in
`~/.config/systemd/user/default.target.wants`.
2020-03-06 10:15:28 +00:00
William Carroll
0045a0dd5a Drop support for Tmux
I haven't used Tmux for months.

I also suspect that using the terminal in general may be a crutch. Ideally I
could replace everything I do in the terminal with Emacs analogues. Perhaps one
month I'll force myself to work without a terminal to see what happens.
2020-03-05 15:04:04 +00:00
William Carroll
c6dac53b72 Drop support for cloudtop
While I do still technically own a Google cloudtop device, I haven't used it in
at least six months. In the interest of pruning non-critical dependencies, I'm
deleting it. I can alway restore it thanks to Git.
2020-03-05 15:04:04 +00:00
William Carroll
77633d22ae Drop support for personal_laptop
My former Manjaro device is now a NixOS device called "socrates", which hosts
this git repo and a few other projects.
2020-03-05 15:04:04 +00:00
William Carroll
df035ca832 Use home-manager to support SSH
I didn't port everything from .ssh/config to home-manager. I omitted a few hosts
that I don't connect to anymore. I also omitted the `corp-ssh-helper`
configuration.
2020-03-05 15:04:04 +00:00
William Carroll
86e1b82d2d Drop support for ncmpcpp
I don't think I ever fully setup ncmpcpp. This configuration has been collecting
dust in my monorepo for awhile.
2020-03-05 14:20:08 +00:00
William Carroll
bfa1aea14f Drop support for irssi
I've been using ERC for awhile, and I haven't switched back to irssi.
2020-03-05 14:19:44 +00:00
William Carroll
87f592750d Drop support for gvcci
I supported gvcci before I switched to EXWM. Now that I'm using EXWM, I prefer
keeping things simple and using Doom's solarized-light theme.
2020-03-05 14:15:52 +00:00
William Carroll
32fb5b9a1b Move gpg.conf to home-manager
- Migrate gpg.conf settings to home-manager
- Delete gpg.conf
2020-03-05 14:14:03 +00:00
William Carroll
28745c5f84 Drop support for Docker
I don't use Docker shells enough to justify maintaining this.
2020-03-05 14:10:23 +00:00
William Carroll
3b689f03de Support gitconfig with home-manager
- Migrate configuration from .gitconfig to home-manager.
- Delete .gitconfig.
- Delete .gitignore because I'm not using OSX anymore.
2020-03-05 14:09:21 +00:00
William Carroll
0cb1086adc Support Nix home-manager
Last night @adisbladis convinced me to try home manager. I'm growing weary of
wrestling with symlinks, so I'm willing to give this a try.
2020-03-05 13:18:17 +00:00
William Carroll
26c340bfd2 Drop support for functions.fish
I'm not using the functions defined in this file, and it is causing me in
trouble.
2020-03-04 20:43:31 +00:00
William Carroll
8695b5b1d1 Drop support for hub
I'm not using hub much lately and it's causing me trouble.
2020-03-04 20:39:37 +00:00
William Carroll
4a1523caba Ensure fish config is compatible with Tramp
Ensure that my config.fish does not interfere with Tramp.
2020-03-04 20:16:53 +00:00
William Carroll
dec005ea34 Consume top-level emacs attribute
Refactor `nix/rebuild-emacs` to consume newly defined top-level emacs
attribute.
2020-03-04 19:49:45 +00:00
William Carroll
b0dfa088a5 Move emacs to top-level nix expression
When I run `nix-build -f '<briefcase>' -iA emacs`, readTree will define...
- pkgs
- depot
- briefcase
...and whatever else I choose to define.
2020-03-04 19:49:45 +00:00
William Carroll
11d8336733 Support custom fish prompt
Today I wrote myself a custom fish prompt. It's mostly what I'd like, but I'd
like to finely tune it a bit. I'd like to create a separate repository to
release this. In that repository, I'll explain why I wrote this.
2020-03-04 19:49:45 +00:00
William Carroll
549e56186b Solve InterviewCake's product-of-other-numbers
This problem challenged me: without using division, write a function that maps a
list of integers into a list of the product of every integer in the list except
for the integer at that index.

This was another greedy algorithm. The take-away is to first solve the problem
using brute force; this yields an algorithm with O(n*(n-1)) time
complexity. Instead of a quadratic time complexity, a linear time complexity can
be achieved my iterating over the list of integers twice:
1. Compute the products of every number to the left of the current number.
2. Compute the products of every number to the right of the current number.

Finally, iterate over each of these and compute lhs * rhs. Even though I've
solved this problem before, I used InterviewCake's hints because I was stuck
without them.

I should revisit this problem in a few weeks.
2020-03-02 16:45:15 +00:00
William Carroll
22d70b52c9 Read Paul Graham article "Taste for Makers"
I'm considering this essay one of my favorites from Paul Graham. The essay
argues that good taste and bad taste exist. Graham argues against relativism in
design and cites a variety of examples of architecture, typography, writing,
sketching, painting, aircraft design, and others that bolster his opinion.

TL;DR - Design should strive to be:
- Simple: Prefer simplicity to complexity when possible.
- Timeless: Design today for tomorrow by pleasing yesterday.
- Pointed: Focus always on the problem; don't work for work's sake.
- Suggestive: Constrain usage without suffocating the user.
- Humorous: Prefer light-heartedness to sobriety.
- Difficult: "Good design" is takes time, effort, and tremendous skill.
- Ostensibly effortless: Solutions should look obviously correct.
- Symmetric Appreciate symmetry.
- Natural: In nature, form ever follows function.
- Iterative: Write; rewrite; rewrite; rewrite; throw away; write; publish.
- Imitative: Be confident enough to copy others' existing, beautiful ideas.
- Communal: Pay attention to "Schelling points" and join the party. Don't be the
  Milanese Da Vinci.
- Fearless: Question the status quo; expect others to challenge your solution.
2020-03-02 13:09:07 +00:00
William Carroll
6eb239dcce Manually require dependencies for <nixpkgs>, <briefcase>
When I build socrates using `sudo nixos-rebuild [...] switch`, my
`nixos-config` (i.e. <briefcase/nixos/socrates/default.nix>) is a simple Nix
anonymous function. Typically readTree populates my pkgs, briefcase, depot
function parameters with <nixpkgs>, <briefcase>, <depot>, but `nixos-rebuild` is
unaware of `readTree`.

For now I'm manually importing these dependencies, and I'm leaving a TODO to
reconsider switching to the `{ pkgs, briefcase, ... }` style when I better
understand NixOS.
2020-03-01 22:44:35 +00:00
William Carroll
3e51bf600a Removing unused parameters in installer.nix
I'm neither using config nor pkgs, so I'm deleteing them.
2020-03-01 22:32:25 +00:00
William Carroll
42c6ad3bb4 Simpify top-level nix expression
When I first created the monorepo, I borrowed @tazjin's monorepo's. I adapted
his depot/default.nix, replacing some of his paths with my paths. This worked
for me until recently.

I attemped to include <briefcase/monzo_ynab/job> as a systemd unit for my NixOS
machine, socrates. NixOS failed to build my changes, and I didn't fully
understand my default.nix since I borrowed most of it from @tazjin. I spent the
past week looking at the `fix` function. I realized that I didn't fully
understand how fixed-point recursion worked. This sent me down a rabbit hole
terminating with me studying the Y and Z combinators.

Ironically, after understanding the `fix` function, I realized that I didn't
need to use it where I was consuming it. I ended up pruning most of my
configuration, which resulted in this commit.

Yours truly,
lambda f: (lambda x: f(x(x)))(lambda x: f(x(x)))
2020-03-01 22:32:25 +00:00
William Carroll
b4689761d9 Solve InterviewCake's highest-product-of-3
Write a function that returns the highest product of three integers within a
list of integers. This solution uses a greedy algorithm that solves for the
answer in linear time. The space complexity is constant.
2020-03-01 22:32:25 +00:00
William Carroll
dff621922c Remove HTML-encoded quote
Prefer ' to &#39;
2020-03-01 22:32:25 +00:00
William Carroll
4d2d19f136 Solve InterviewCake's stock-price problem
Write a function that returns the maximum profit that a trader could have made
in a day. I solved this using a greedy algorithm which constantly sets the
maximum profit by tracking the lowest price we've encountered.
2020-03-01 22:32:25 +00:00
William Carroll
3abee3373c Use doom-modeline
Cleaning up my modeline by using the beautiful doom-modeline package.
2020-03-01 22:32:25 +00:00
William Carroll
710849f3b3 Read Paul Graham's "Five Questions about Language Design"
This article felt like a summary of "Being Popular". I'd suggest reading both of
these.
2020-03-01 22:32:24 +00:00
William Carroll
d2aa66a5b1 Solve InterviewCake's top-scores
Using a counting sort to sort a list of values in linear time.
2020-03-01 22:32:24 +00:00
William Carroll
e4cdb5daed Solve InterviewCake's word-cloud problem
Write a function to count the frequency of words in a sentence. Ignore casing
for words; ignore punctuation.
2020-03-01 22:32:24 +00:00
William Carroll
ef2ce90aa7 Consolidate fish configuration
Months ago when I was revisiting Nix, I decided to nixify my fish
configuration. This was a useful learning exercise. I've had two config.fish
files floating around this repository ever since then. I sometimes update one
and other times I update the other. I'm consolidating these files into one, so I
that this is no longer as issue.
2020-03-01 22:32:24 +00:00