Guix-rebound 2
- Inbox
- Principles
- Conventions
- Tasks
- Emacs
- One-off environment changes without direnv
- minibuffer
- dired
- set up JuliaMono for use with ipa: links
- text-mode
- 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
- set up JuliaMono for use with IPA glyphs
- KILL literate config
- evil-cp fixes
- automatically close compilation buffer
- fix
[e/]e - unmap
TABin normal mode - eshell trail à la M-x calc
- Dotfiles
- disko
- IDEA refactor disko configs to be more reusable
- IDEA replace uses of gpg with age
- password store 4 firefox
- password store w/ age
- Automatically sync password store
- secrets
- git config
- niri
- qtile
- Convenient way to wrap programs
- tf2.nix
- mpd
- syncthing
- HOLD impermanence
sydnix.defaultsmodule- Split up
flake.nixinto a file per output - default package sets
- Set envvars
- System maintenance scripts
- Emacs
- References
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 feature
Modules, but lightweight.
Principles
User configuration
In order of descending preference, user programs should be configured by…
- Wrappers, with config files optionally living somewhere under
/persist/dots. - home-manager's modules.
home.fileand similar.- Mutable symlinks using
home.fileandmkOutOfStoreSymlink.
Conventions
Repo structure
hosts/
Each directory hosts/«HOST» is expected to configure a single specific device, where «HOST» is the device's exact hostname. Said directory «HOST» should have at least the following structure:
hosts
└── «HOST»
├── configuration.nix
└── system.nix
Where configuration.nix is the main entry point imported by the top-level flake, and system.nix evaluates to a string corresponding to the system option to be used.
users/
Similarly to the hosts directory, each subdirectory users/«USER» is assumed to have some structure, and that «USER» is the precise username desired.
users
└── «USER»
└── default.nix
Where default.nix returns an attrset of form
{
# The NixOS option `users.users.«USER»` will be set to result of
# `systemConfiguration`.
systemConfiguration = { config, pkgs, lib, ... }: {
# isNormalUser = true;
# extraGroups = [ "wheel" ];
# ...
};
# Home-manager configuration
homeConfiguration = { config, pkgs, lib, ... }: {
# home.packages = [ pkgs.hello ];
# ...
};
}
Impermanence and persistence
- Persistent files to be linked into
/go under/persist/root
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
dired
DONE use / 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
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
set up JuliaMono for use with IPA glyphs
KILL literate config
CLOSED: [2024-12-27 Fri 19:35]
Just kind of a pain in the ass. }:)
evil-cp fixes
automatically close compilation buffer
fix [e / ]e
unmap TAB in normal mode
eshell trail à la M-x calc
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.
TODO Dotfiles
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
DONE password store w/ age
CLOSED: [2024-12-29 Sun 02:34]
TODO Automatically sync password store
DONE secrets
CLOSED: [2024-12-29 Sun 01:41]
DONE git config
CLOSED: [2024-12-30 Mon 17:01]
TODO niri
Or Qtile
TODO qtile
Or Niri
TODO Convenient way to wrap programs
wrapper-manager looks like it will be really annoying to integrate into my config without a NixOS/HM module.
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 = trueto installneovimandgit;defaultPackages.development = trueforjjand Emacs.defaultPackages.desktop = trueforcantata,obs,vlc,vesktop,soulseek;
Naturally, one would expect some way to say "all these, except this and that."
TODO Set envvars
$EDITOR
See 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
-
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, thenvi.-
If neither are available, use
nix run nixpkgs#nvim- If this fails, try
nano.
- If this fails, try
-
- If Emacs: run
- …then run
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.
References
Following is a subset of the many places I've learnt from.
- My darling dearest Faye's
wishsys}:D - rasendubi/dotfiles
- mangoiv/dotfiles
- hlissner/dotfiles
- Shawn8901/nix-configuration
- [cite:@christensen2020erase]
- [cite:@ayats2024dropping]
- [cite:@zaynetdinov2024you]