* Tasks
** Emacs on Nix
https://github.com/abcdw/rde/tree/master/src/modules/emacs
** TODO Remove =org-time-add= definition froom spacemacs.el
** TODO Reproducible setup
*** TODO Add =cachix use=s to configuration.nix:
: substituters = https://cache.nixos.org/ https://miso-haskell.cachix.org https://all-hies.cachix.org
** DOING Simplify the installation of NixOS
*** DONE Preparation phase
CLOSED: [2019-05-30 Thu 20:17]
Create =burn-nixos.sh= with something like:
#+BEGIN_SOURCE shell
NIXOS_URL='https://releases.nixos.org/nixos/19.03/nixos-19.03.172764.50d5d73e22b/nixos-graphical-19.03.172764.50d5d73e22b-x86_64-linux.iso'
burn-nixos.sh "$NIXOS_URL" /dev/sdb
#+END_SOURCE
*** DONE Installation phase
CLOSED: [2019-06-02 Sun 02:26]
**** DONE Choose proper tool
CLOSED: [2019-05-31 Fri 21:40]
=fdisk=? =gdisk=? =gparted=? Why? Why not?

=parted= allows for CLI based interactions instead of interactive only. It also supports GPT partitions, and is a GNU project :)
**** DONE Make disk partitioning declarative
CLOSED: [2019-05-31 Fri 21:40]
Not really declarative, but scripted instead.
**** DONE Always use UEFI and GPT (which I think is better)
CLOSED: [2019-05-31 Fri 21:40]
**** DONE Parameterize the disk to be partitioned
CLOSED: [2019-05-31 Fri 21:41]
So I can give the installation script an argument and reuse later on the program. Something like:
#+BEGIN_SOURCE shell
$ wget -qO- https://euandre.org/install-nixos.sh | sh -s /dev/sda
#+END_SOURCE
**** DONE Publish =install-nixos.sh= in CI run
CLOSED: [2019-05-30 Thu 23:42]
Add =publishScript= derivation and run it in builds.sr.ht.
**** DONE Partition, format and encrypt
CLOSED: [2019-06-02 Sun 01:54]
**** DONE Properly document (in README?) how to connect to the internet
CLOSED: [2019-06-01 Sat 22:05]
#+BEGIN_SOURCE bash
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase SSID PASSPHRASE)
curl https://euandre.org/dotfiles/nixos/install.sh > install.sh
chmod +x ./install.sh
./install.sh
#+END_SOURCE
*** DOING Setup phase
**** DOING Fix =enabling= of Git Annex remotes
**** TODO Install Guix
**** TODO Symlink Bash
: sudo ln -s /bin/sh /bin/bash
**** TODO Configure Git Annex
*** DONE Document the discrete three step phases
CLOSED: [2019-06-01 Sat 22:04]
Put all of this on the README for future easy access.
**** Steps
1. Preparing the USB stick;
2. Performing a fresh install;
3. Bootstraping the new installation's configuration and data.
** DOING Workflow improvement
*** TODO Guix
**** TODO Create =burn.sh=, =install.sh= and =setup.sh= Guix installation scripts
**** TODO https://framagit.org/tyreunom/guix-home-manager
**** TODO Put Btrfs on Guix
**** DONE Consider using Btrfs? Why? Why not?
CLOSED: [2019-06-02 Sun 15:04]
Guix already has initial support for it, and ZFS is incompatible with GPL :shrug:

Test installing it on =velhinho=.
**** DONE Is there a Hydra equivalent for Guix? Add it to the VPS?
CLOSED: [2019-06-02 Sun 02:43]
Cuirass! Yes!
*** TODO cmus
**** TODO Fetch metadata from [[https://musicbrainz.org/][MusicBrainz]]
**** TODO Add covers to albums
**** TODO How to fuzzy search?
*** TODO GPG
**** TODO Is it possible to use GPG (sub)key for SSH access?
**** TODO GPG YubiKey Setup
- https://github.com/drduh/YubiKey-Guide
- https://nullprogram.com/blog/2017/03/12/
- https://alexcabal.com/creating-the-perfect-gpg-keypair
- https://rzetterberg.github.io/yubikey-gpg-nixos.html
**** TODO Make KeePassXC interop with Firefox
**** TODO Make Nextcloud pick password from KeePassXC or GPG file
Remove all passwords from Firefox and put them all in KeePassXC.
**** TODO Use horcrux keys beyond paperkey (in case of fire)
*** TODO Misc
**** TODO =say= command
With quality comparable to macOS.
**** TODO Write URL to file when downloading with =yt=
**** DONE Make =thefuck= great again
CLOSED: [2019-06-20 Thu 07:47]
**** TODO Make xmodmap commands declarative
**** TODO Test cyanogen on old K10
**** TODO Install OpenBazaar
**** TODO Open =.description= files with text editor
**** TODO Change email address of SSH key pair in builds.sr.ht
**** CANCELLED Adjust layout for =annex.yml= tmuxinator template
I actually got used to it and now I like it :)
**** DONE Improve README.org
**** DONE Test elfeed
CLOSED: [2019-06-08 Sat 16:53]
This way I can more easily link to an article from org-mode!
CLOSED: [2019-06-02 Sun 02:43]
*** TODO Tmux
**** TODO Add =C-S-k= to kill line
The original terminal kill =C-k= is overriden by tmux.
*** TODO xmonad
**** TODO Show DiskIO and Network in xmobar
**** TODO Show red warning when battery is low
**** TODO Spawn xmobar once
**** TODO Double-check brightness commands
**** TODO Nextcloud out of trayer: where to put it now?
**** TODO Show playerctl $CURRENT_PLAYER in center
Stylized?
vlc -> VLC
cmus -> ?
**** TODO Show playerctl stats in center
**** TODO Show memory and CPU history besides the current number
**** TODO Show network upload and download
**** TODO Show temperature
**** TODO Show cmus song
**** TODO Fix screen brightness shortcuts                       :velhinho:
**** TODO Add clipboard manager
**** DONE Add play/pause, previous and next shortcuts           :velhinho:
*** TODO Borg
**** TODO Copy content of Borg to S3 and Glacier
**** WAITING Simplify and automate backup.sh
**** TODO Add weekly cronjob for running backup.sh
*** TODO ArchiveBox
**** DONE Fix cronjob for ArchiveBox
CLOSED: [2019-06-19 Wed 18:11]
**** TODO How to not keep always updating archived webpages?
**** TODO Remove the need for =trayer= and =nm-applet= when interacting with wireless network
**** DONE Fix ArchiveBox errors
CLOSED: [2019-06-19 Wed 18:11]
**** DONE Remove public link to Pocket feed
CLOSED: [2019-06-16 Sun 12:14]
**** CANCELLED First class ArchiveBox <-> Wallabag integration (instead of Atom feed?)
Use Firefox bookmarks instead.
*** TODO Git Annex
**** TODO Configure small disk in usurpador to not download get some Git Annex folders
**** TODO Fix AWS_SECRET_KEY env var
Make embedcreds actually work.
**** TODO Use Glacier as Git Annex remote
**** TODO Make HD cheaper than S3
**** TODO Tune =numcopies=, =git annex copy=
**** TODO Add more cheap remotes?
**** TODO Add GitLab as git-remote-gcrypt remote?
Can it perform incremental SSH pushes?
*** TODO Email
**** WAITING Finish importing mailing list emails
Right now, the =mb2md= doesn't recognize the concatenated MBOX file as valid.

: less /nix/store/255i0f5k8k6n6q94fmw5h4mj95dxbh8p-mb2md-3.20/bin/.mb2md-wrapped
**** TODO Allow notmuch to enqueue email when offline
**** TODO Make =mbsync= faster
Either polling, fetching a subset of folders, etc.
**** TODO Improve spam filtering
https://notmuchmail.org/initial_tagging/
**** TODO notmuch: send email from mor SMTP accounts
**** TODO Add lock for running =sync-mail.sh=
**** TODO Change =m= jump to search for =tag:ml AND date:"last 7 days"=
**** TODO Refile "archived" emails into actual Archive folder
Query for =tag:archive AND tag:euandreh AND folder:/INBOX/= emails and refile them into =Archive= folder:
#+BEGIN_SRC shell
# WIP
OUT="${HOME}/mbsync/EuAndreh/Archive/cur"
notmuch search --output=files tag:archive AND tag:euandreh AND folder:/INBOX/ | xargs -I{} mv "{}" "${OUT}/$(echo {} | awk -F, '{print $1}' | awk -F/ '{print $NF}')"
#+END_SRC
Make sure to keep existing tags from it? Will there be any case, since they're all INBOX emails?
**** TODO Improve =mailing-list-import-mbox.sh=
***** TODO Import MBOX archive from sr.ht
Relatevant tickets:
- https://todo.sr.ht/~sircmpwn/lists.sr.ht/22
- https://todo.sr.ht/~sircmpwn/lists.sr.ht/94
***** TODO Import MBOX archive from Discourse
*** TODO Emacs
**** TODO =<s= completion in org-mode
**** TODO Encrypt and decrypt "Subject" in sent email
https://enigmail.net/index.php/en/user-manual/handbook-faq#How_can_I_encrypt_the_Subject.3F
**** TODO Configure [[https://github.com/nubank/emidje][emidje]]
**** TODO PDF layer
Try configuring contiguous pages. =interleave-mode= is awesome, but browsing by jumping pages isn't.
**** TODO Double-check magit line limit configuration
https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
**** TODO Allow Emacs to link to =sr.ht= repository with =SPC g l L=
**** TODO org-mode clocking
**** TODO org-mode clanedar
**** TODO Advanced org-mode features
Other than calendar.
http://kitchingroup.cheme.cmu.edu/blog/2014/08/08/What-we-are-using-org-mode-for/
**** TODO Spelling
***** Many languages
***** Help with the writing style, like Grammarly
***** Easy to enable and disable
***** How to enable and disable it per file?
***** How to configure multiple languages in a single file?
**** TODO EMMS
Does it support MPRIS for use with =playerctl=?
**** TODO Look at [[https://github.com/novoid/Memacs][Memacs]]: dump the digital life into an org-mode file
**** TODO Use Spacemacs with NixOS
https://www.reddit.com/r/NixOS/comments/bw2ret/using_nixos_as_an_stateless_workstation/
https://matthewbauer.us/bauer/
https://github.com/matthewbauer/bauer
https://gitlab.com/rycee/configurations/blob/e3c1592544e9757ab7bc1026a89a31aa067f3b3e/user/emacs.nix
https://discourse.nixos.org/t/using-nixos-as-an-stateless-workstation/3081/8
**** TODO Properly configure spell-checking in Emacs
Ensure automatic multi-language support.
**** TODO Universal =ace-open-link= or similar
This way I can use the same key to open links in commit messages, emails, elfeed articles, etc.
**** TODO Flow charts in Emacs
**** TODO Declare layouts and workspaces declaratively
Similar approach to how tmuxinator is working.
**** TODO Configure Emacs registers
**** CANCELLED Put commit 50 characters limit
See https://drewdevault.com/2019/02/25/Using-git-with-discipline.html

Couldn't configure it properly right now, no impactul at all on current workflow.
*** TODO Nix
**** TODO Package software with attached configuration
https://nmattia.com/posts/2018-03-21-nix-reproducible-setup-linux-macos.html

- Emacs
- tmux
- everything inside symlinks.sh?
**** TODO Add actual public key of the known =KnownHost= in utils.nix
**** TODO Install Popcorn Time
**** TODO Show the package added by =nix-shell= in =$PS1=
**** TODO Use [[https://github.com/rycee/home-manager][home-manager]] instead of ad-hoc symlinking
**** TODO Create NixOS module to install Guix
Ideally support this:
#+BEGIN_SRC nix
programs = {
  guix = {
    enable = true;
  };
};
#+END_SRC
**** CANCELLED eCryptFS
LUKS already covers most of my use case and renders eCryptFS not useful.
*** TODO Bash
**** TODO Remove duplicate ANSI color definitions
**** TODO Optimize reloading =.bashrc=
**** TODO Run =backup.sh= in usurpador
**** TODO Run =archive.sh= in usurpador
**** TODO Fix autojump alias installation
**** TODO Remove =shellcheck disable= directives
**** TODO Make creation of a new shell faster
Profile =bash/bashrc.sh=.
=ps1.sh= doesn't reuse colors defined in =colors.sh=.
**** TODO How to simplify configuring the =ssh-agent=?
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-a-password-prompt
CLOSED: [2019-06-16 Sun 12:07]
**** DONE Automate setup of =builds.sr.ht= for other projects
CLOSED: [2019-05-31 Fri 21:43]
***** DONE Add =utils.nix= with common derivations
CLOSED: [2019-05-30 Thu 23:16]
***** CANCELLED Generate yaml from Dhall
No need, =envsubst= suffice
*** TODO Git
**** DONE Configure =diffoscope= to diff SQLite files
CLOSED: [2019-11-20 mer. 18:04]
Using =sqlite file.db .dump= instead.
**** TODO Remove dangling encrypted files
**** TODO Make =mrconfig= checkout from HD, fallback to =origin= than change the =origin= remote
**** DONE Remove borg content from repository
CLOSED: [2019-06-02 Sun 11:47]
**** DONE Remove encrypted files from repository
CLOSED: [2019-06-02 Sun 13:16]
Only the =encrypted/= folder was removed
