:PROPERTIES: :ID: 26ecd52b-1c5c-46b8-8eb9-fe827a753f0a :ROAM_ALIASES: sydnix :END: #+title: Guix-rebound 2 #+tags: nix Current name of ~guix-rebound~ ought to be changed. This is a rewrite from scratch. }:3 A second try at NixOS, now that I have a better idea of what I'm doing. The effort is largely inspired by my darling Faye's glorious ~wishsys~. * Inbox ** Refactor: single file per service Modules, but lightweight. * Tasks ** Emacs *** [#A] One-off environment changes without direnv I would like the ability to ergonomically e.g. add HLS to my current environment without setting up an entire project. Perhaps something like "create new workspace under a nix-shell invocation" could work? *** minibuffer **** DONE jk to escape CLOSED: [2024-11-20 Wed 12:11] **** DONE history navigation in insert mode w/ [[kbd:][C-j]] / [[kbd:][C-k]] CLOSED: [2024-11-20 Wed 12:11] **** [[kbd:][RET]] to send whilst in normal mode *** dired **** DONE use [[kbd:][/]] to live narrow CLOSED: [2024-11-14 Thu 04:46] *** set up JuliaMono for use with ipa: links *** text-mode **** grammar **** spellcheck and dictionaries **** org-mode ***** init.org for beorg ***** IPA links ***** capture templates ****** journal entry ****** todo ***** fancy headline stars ***** DONE better colour for inline code CLOSED: [2024-11-21 Thu 09:04] **** DONE variable pitch CLOSED: [2024-11-30 Sat 19:06] *** form and element text objects à la vim-sexp *** customise the eshell prompt *** jump to prev/next hole in haskell *** make a bind for inserting hrules *** KILL set up emms CLOSED: [2024-12-11 Wed 13:46] - BLOCKER: [[*download my music library][download my music library]] it kinda sucks. }:\ *** set up JuliaMono for use with IPA glyphs *** KILL literate config CLOSED: [2024-12-27 Fri 19:35] *** evil-cp fixes **** [[kbd:][(]] / [[kbd:][)]] When [[kbd:][)]] is hit whilst the cursor is at ~↓1~, it should move to the matching bracket, ~↓2~, *not* the right bracket of the ~save-excursion~ call. #+begin_src elisp (save-excursion ;; ↓1 ↓2 (re-search-forward)) #+end_src **** element text objects *** automatically close compilation buffer *** fix =[e= / =]e= *** unmap =TAB= in normal mode *** eshell trail à la M-x calc #+begin_quote I really like how you re-examined shells and terminals. I hadn't thought of how they're kinda unrelated. What I then don't understand is why eshell stuck to the paradigm of interleaving input and output. It's a relic left over from terminals. ie: >>> input [tonnes of output] >>> input [tonnes of output] to me it seems the input should be entered in the minibuffer (or some separate frame/window) and the outputs should be in a separate window/frame with separate read-only buffers. #+end_quote [[https://www.reddit.com/r/emacs/comments/6y3q4k/comment/dml16vq/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button][source]] ** TODO Dotfiles - [[https://rgoulter.com/blog/posts/programming/2022-02-20-using-home-manager-to-manage-symlinks-to-dotfiles.html][link]] - [[https://www.bekk.christmas/post/2021/16/dotfiles-with-nix-and-home-manager][link]] *** TODO Emacs *** TODO (neo)vim *** TODO readline ** DONE disko CLOSED: [2024-12-28 Sat 18:13] ** IDEA refactor disko configs to be more reusable ** IDEA replace uses of gpg with age I don't know anything about either. ** TODO password store 4 firefox ** TODO secrets ** TODO niri Or Qtile ** TODO qtile Or Niri ** TODO tf2.nix - declaratively configure tf2 - tf2Packages? - mastercomfig integration? - define aliases / bindings from nix? ** TODO mpd *** TODO mpdscribble ** TODO syncthing ** HOLD impermanence ** TODO ~sydnix.defaults~ module ** TODO Split up ~flake.nix~ into a file per output ** TODO default package sets Some examples of what I mean: - ~defaultPackages.essential = true~ to install ~neovim~ and ~git~; - ~defaultPackages.development = true~ for ~jj~ and Emacs. - ~defaultPackages.desktop = true~ for ~cantata~, ~obs~, ~vlc~, ~vesktop~, ~soulseek~; Naturally, one would expect some way to say "all these, except this and that." ** TODO Set envvars *** =$EDITOR= See [[id:5b4ee1e4-fad7-4783-8e98-301b41579a63][~choose-editor~]]. ** System maintenance scripts It might be a good idea to namespace these as subcommands of a single binary. *** TODO ~nix-clean~ Collect garbage, clean up boot entries, delete old generations... https://discourse.nixos.org/t/what-to-do-with-a-full-boot-partition/2049 *** TODO ~choose-editor~ :PROPERTIES: :ID: 5b4ee1e4-fad7-4783-8e98-301b41579a63 :END: - If the Emacs daemon is running... - ...then run ~emacsclient~. - ...otherwise, prompt the user to choose between Emacs and Vim - If Emacs: run ~emacs~. - If Vim: In order, try ~nvim~, ~vim~, then ~vi~. - If neither are available, use ~nix run nixpkgs#nvim~ - If this fails, try ~nano~. *** TODO ~forget-host HOST~ Remove a given host from =~/.ssh/known_hosts=. Something like =sed -i -e '/192.168.122.54/d' .ssh/known_hosts=. * Impermanence and persistence - Persistent files to be linked into ~/~ go under ~/persist/root~ * References Following is a subset of the many places I've learnt from. - My darling dearest Faye's =wishsys= }:D - [[https://github.com/rasendubi/dotfiles][rasendubi/dotfiles]] - [[https://git.mangoiv.com/mangoiv/dotfiles][mangoiv/dotfiles]] - [[https://github.com/hlissner/dotfiles/][hlissner/dotfiles]] - [[https://github.com/Shawn8901/nix-configuration/tree/af71d51998a6772a300f842795b947e27202fa73][Shawn8901/nix-configuration]] - [cite:@christensen2020erase]