Compare commits

...

20 Commits

Author SHA1 Message Date
Ryan Rix d845e9837f cleanup meta 2022-11-04 16:57:16 -07:00
Ryan Rix f36e2b9cb1 harden ZFS options 2022-11-04 16:56:39 -07:00
Ryan Rix 880d469baa move from selectrum to vertico etc 2022-11-01 16:55:02 -07:00
Ryan Rix 17dfbeb577 update [cce] index 2022-11-01 16:54:53 -07:00
Ryan Rix ab46d0c25c integrate beetcamp in to cce 2022-11-01 16:54:34 -07:00
Ryan Rix c0669695b2 disable default [gnupg] key to suppress warnings 2022-11-01 16:54:20 -07:00
Ryan Rix ec8d19fe35 use ace-link 2022-11-01 16:54:13 -07:00
Ryan Rix 1efd93a3cb make sure krunner works in xmonad 2022-11-01 16:53:47 -07:00
Ryan Rix 981bb79053 reintegrate vsketch + vpype out of nixpkgs 2022-11-01 16:53:29 -07:00
Ryan Rix f348f40a0f meta 2022-11-01 16:53:25 -07:00
Ryan Rix 5c15fad396 [justdoit] minimal install image for wobserver w/ multiple zfs pools 2022-11-01 16:51:31 -07:00
Ryan Rix 7e7a89e7e1 [justdoit] support multiple ZFS pools 2022-11-01 16:50:58 -07:00
Ryan Rix ca204ee026 fix arroyo location in [justdoit] 2022-11-01 16:50:19 -07:00
Ryan Rix c6d850e1f3 Integrate arroyo/448a284 Make <arroyo> importable & a nixpkgs overlay [broken] 2022-10-21 14:06:06 -07:00
Ryan Rix bbad341bcb cleanup 2022-10-14 11:12:50 -07:00
Ryan Rix 2fdb7dcbbd elisp in the emacs source mixes tabs and spaces at 8 char width 2022-10-14 11:11:00 -07:00
Ryan Rix e0dcf8e00e force krunner to restart on S-p command 2022-10-14 11:10:44 -07:00
Ryan Rix d3294666e2 jiggle agenda definitions to use customization instead of setq 2022-10-14 11:10:30 -07:00
Ryan Rix 521801d1b2 [meta] move an alias in to the right place 2022-10-14 11:09:59 -07:00
Ryan Rix 7d1080bed9 clean up my org-capture stuff 2022-10-14 11:09:41 -07:00
36 changed files with 1317 additions and 387 deletions

View File

@ -215,9 +215,8 @@ And inserted in to a =kconfig= generator here:
#+begin_src nix :tangle ~/arroyo-nix/hm/kde-config-appearance.nix :noweb yes
{ pkgs, config, ... }:
let kconfig = pkgs.callPackage ../lib/kde-configs.nix { inherit config; };
in {
home.activation.kconfigAppearance = kconfig {
{
home.activation.kconfigAppearance = pkgs.lib.mkKwriteConfig5 config {
<<appearance_str()>>
};
}

View File

@ -17,7 +17,7 @@
#+begin_src nix :tangle ~/arroyo-nix/hm/applications.nix :noweb yes
{ config, pkgs, ... }:
let mkNixGLWrapper = pkgs.callPackage /home/rrix/org/cce/nixlib/nixgl.nix {};
let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper;
in
{
programs.htop = {

View File

@ -20,7 +20,7 @@ let
myBeets = with pkgs; beets.override {
pluginOverrides = {
beetcamp = {
propagatedBuildInputs = [ beetsPackages.beetcamp ];
propagatedBuildInputs = [ pkgs.beetcamp ];
};
copyartifacts = {
propagatedBuildInputs = [ beetsPackages.copyartifacts ];
@ -29,11 +29,12 @@ let
};
in {
home.activation.beets-config =
import ../lib/mk_activation_local_link.nix {inherit config;} # symlink helper (ref:activation_local_link)
pkgs.lib.mkActivationLocalLink config
"~/Music/beets/config.yaml"
".config/beets/config.yaml";
home.packages = [ myBeets ];
# home.packages = [ myBeets ];
home.packages = [ myBeets pkgs.beetcamp ];
}
#+end_src
@ -54,6 +55,61 @@ SCHEDULED: <2022-05-27 Fri>
https://github.com/NixOS/nixpkgs/pull/176978
- State "INPROGRESS" from "NEXT" [2022-06-11 Sat 18:24]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/beetcamp.nix
{ lib,
fetchFromGitHub,
python3Packages,
beets,
propagateBeets ? false
}:
python3Packages.buildPythonPackage {
pname = "beets-beetcamp";
version = "unstable-2022-06-07";
src = fetchFromGitHub {
repo = "beetcamp";
owner = "snejus";
rev = "118d4239bd570a59997f13ac0920e6e92890ac67";
sha256 = "sha256-yrlpgLdNEzlWMY7Cns0UE93oEbpkOoYZHGLpui6MfC0=";
};
format = "pyproject";
propagatedBuildInputs = with python3Packages; [ setuptools poetry requests cached-property pycountry python-dateutil ordered-set ]
++ (lib.optional propagateBeets [ beets ]);
postInstall = ''
rm $out/lib/python*/site-packages/LICENSE
mkdir -p $out/share/doc/beetcamp
mv $out/lib/python*/site-packages/README.md $out/share/doc/beetcamp/README.md
'';
checkInputs = with python3Packages; [
# pytestCheckHook
pytest-cov
pytest-randomly
pytest-lazy-fixture
rich
tox
types-setuptools
types-requests
] ++ [
beets
];
meta = {
homepage = "https://github.com/snejus/beetcamp";
description = "Bandcamp autotagger plugin for beets.";
license = lib.licenses.gpl2;
inherit (beets.meta) platforms;
maintainers = with lib.maintainers; [ rrix ];
};
}
#+end_src
* File Organization
:PROPERTIES:
:ID: music-file-organization

View File

@ -5,14 +5,12 @@
#+filetags: :Emacs:CCE:Org:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle org-capture.el
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
#+ARROYO_EMACS_MODULE: org-capture
#+ARCOLOGY_KEY: cce/org-capture
#+ARCOLOGY_ALLOW_CRAWL: t
#+CCE_PRIORITY: 41
#+begin_src emacs-lisp
(provide 'cce/org-capture)
#+end_src
I want to be able to quickly bring information in to my system and standardize that pipeline enough that things can be well enmeshed. I carry a smartphone, and it doesn't integrate in to this system well, so things get lost in it. Most of my ecosystem is about dumping things in to systems that I can easily import in to my Org-mode system where additional work on them is necessary.
@ -20,6 +18,8 @@ In pages linked to this document, I define capture templates which makes it easy
#+begin_src emacs-lisp
(with-eval-after-load 'org-capture
(add-hook 'org-capture-mode-hook 'evil-insert-state)
(add-to-list 'org-capture-templates
'("p" "New Project" entry
(file+function "~/org/Projects.org" (lambda()
@ -29,7 +29,6 @@ In pages linked to this document, I define capture templates which makes it easy
(file "~/org/cce/captures/new-project-template.org")
:prepend t)))
#+end_src
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
#+begin_src emacs-lisp :tangle captures/new-project-template.org :comments no
,* %?
@ -44,3 +43,7 @@ Spec'd: %U
When I =C-c p=, I'm dropped in to a new buffer which as the above text templated out in it, allowing me to easily spec out a project and know what direction to attack it from. I might not use this so much any more, though. Right now, I use [[id:2471af46-8f8d-470c-97f2-f5d3fbec65a3][org-journal]] to capture tasks and thoughts quickly, taking the place of my old standby of a =refile.org= which contains things which haven't been processed yet. Not sure what this looks like, long term, but I'm sort of happy with it where it is right now.
[[[id:cce/cce][CCE]], [[id:6b306fe3-fbc4-4ba7-bfcb-089c0564f9c3][Topic File]]]
#+begin_src emacs-lisp
(provide 'cce/org-capture)
#+end_src

View File

@ -121,10 +121,8 @@ This can and should be set to the local user's [[https://nixos.org/manual/nix/st
#+begin_src nix :tangle ~/arroyo-nix/hm/defexpr.nix
{ config, pkgs, ... }:
let
mkActivationLocalLink = import ../lib/mk_activation_local_link.nix {inherit config;};
in {
home.activation.defexpr = mkActivationLocalLink
{
home.activation.defexpr = pkgs.lib.mkActivationLocalLink config
"/home/rrix/org/cce/nixlib/defexpr.nix"
".nix-defexpr";
}

186
cce.org
View File

@ -47,17 +47,22 @@ Here is the Emacs module index, [[id:arroyo/emacs][Arroyo Emacs]] generates an =
| [[id:cce/configure_packaging][Configure Packaging]] | [[file:/home/rrix/org//cce/packaging.el][module code]] | packaging |
| [[id:cce/shared_cce_helpers][Shared CCE Helpers]] | [[file:/home/rrix/org//cce/cce-common.el][module code]] | cce-common |
| [[id:cce/super_p_runs_commands][Super-P runs commands]] | [[file:/home/rrix/org//cce/super-p.el][module code]] | super-p |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[file:/home/rrix/org//cce/gnupg.el][module code]] | gnupg |
| [[id:cce/beets][Music Library Management with beets]] | [[file:/home/rrix/org//cce/beets.el][module code]] | beets |
| [[id:cce/gnus][Gnus]] | [[file:/home/rrix/org//cce/gnus.el][module code]] | gnus |
| [[id:mastodon_in_emacs][Mastodon in Emacs]] | [[file:/home/rrix/org//cce/mastodon.el][module code]] | mastodon |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[file:/home/rrix/org//cce/direnv.el][module code]] | direnv |
| [[id:cce/selectrum_etc][Completing Read Replacement and Extension]] | [[file:/home/rrix/org//cce/selectrum.el][module code]] | selectrum |
| [[id:cce/moving_through_text_with_emacs][Moving Through Text with Emacs]] | [[file:/home/rrix/org//cce/text-navigation.el][module code]] | text-navigation |
| [[id:cce/org_mode_installation][Org Mode Installation]] | [[file:/home/rrix/org//cce/org-mode.el][module code]] | org-mode |
| [[id:cce/midnight_mode][Clean Buffers at a Regular Interval with Midnight Mode]] | [[file:/home/rrix/org//cce/midnight-mode.el][module code]] | midnight-mode |
| [[id:cce/deadgrep][Deadgrep is a Great Grep Interface]] | [[file:/home/rrix/org//cce/deadgrep.el][module code]] | deadgrep |
| [[id:cce/undo_tree][Undo and Redo with a tree]] | [[file:/home/rrix/org//cce/undo-tree.el][module code]] | undo-tree |
| [[id:cce/emacs_shell_mode_is_good_enough][Emacs Shell-Mode is Good Enough]] | [[file:/home/rrix/org//cce/shell-mode.el][module code]] | shell-mode |
| [[id:cce/emacs_persistent_scratch][Emacs Persistent Scratch]] | [[file:/home/rrix/org//cce/persistent-scratch.el][module code]] | persistent-scratch |
| [[id:cce/evil_mode][Evil Mode -- Vim in Emacs]] | [[file:/home/rrix/org//cce/evil-mode.el][module code]] | evil-mode |
| [[id:cce/selectrum_etc][Selectrum, etc]] | [[file:/home/rrix/org//cce/selectrum.el][module code]] | selectrum |
| [[id:cce/use_emacs_as_a_pager][Use Emacs as a Pager]] | [[file:/home/rrix/org//cce/emacs-pager.el][module code]] | emacs-pager |
| [[id:cce/mpd][Listening to Music with MPD]] | [[file:/home/rrix/org//cce/mpd.el][module code]] | mpd |
| [[id:cce/gnus][Gnus]] | [[file:/home/rrix/org//cce/gnus.el][module code]] | gnus |
| [[id:cce/beets][Music Library Management with beets]] | [[file:/home/rrix/org//cce/beets.el][module code]] | beets |
| [[id:cce/emacs_session][Emacs Session Startup]] | [[file:/home/rrix/org//cce/startup.el][module code]] | startup |
| [[id:20210903T141741.263846][Quickly Delete the Current File]] | [[file:/home/rrix/org//cce/delete-this-file.el][module code]] | delete-this-file |
| [[id:cce/ediff_configuration][Ediff Configuration]] | [[file:/home/rrix/org//cce/ediff-config.el][module code]] | ediff-config |
@ -66,108 +71,106 @@ Here is the Emacs module index, [[id:arroyo/emacs][Arroyo Emacs]] generates an =
| [[id:cce/disable_transient_mark][Effective Emacs Marking]] | [[file:/home/rrix/org//cce/mark.el][module code]] | mark |
| [[id:cce/text_editing_fundamental_opinions][Text Editing Fundamental Opinions]] | [[file:/home/rrix/org//cce/text-editing.el][module code]] | text-editing |
| [[id:cce/async_forever][Running Things in Emacs Forever]] | [[file:/home/rrix/org//cce/async-forever.el][module code]] | async-forever |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[file:/home/rrix/org//cce/gnupg.el][module code]] | gnupg |
| [[id:mastodon_in_emacs][Mastodon in Emacs]] | [[file:/home/rrix/org//cce/mastodon.el][module code]] | mastodon |
| [[id:cce/dired_file_manager][Dired File Manager]] | [[file:/home/rrix/org//cce/dired.el][module code]] | dired |
| [[id:cce/external_display_test_functions][External Display Test Functions]] | [[file:/home/rrix/org//cce/display-test-functions.el][module code]] | display-test-functions |
| [[id:cce/moving_through_text_with_emacs][Moving Through Text with Emacs]] | [[file:/home/rrix/org//cce/text-navigation.el][module code]] | text-navigation |
| [[id:cce/a_basic_firefox_installation][A Basic Firefox Installation]] | [[file:/home/rrix/org//cce/firefox.el][module code]] | firefox |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[file:/home/rrix/org//cce/direnv.el][module code]] | direnv |
| [[id:cce/emacs_dashboard][Emacs Dashboard]] | [[file:/home/rrix/org//cce/dashboard.el][module code]] | dashboard |
| [[id:20210831T122511.404297][Capturing an Emacs SVG screenshot]] | [[file:/home/rrix/org//cce/svg-screenshot.el][module code]] | svg-screenshot |
| [[id:cce/doom_modeline][Doom Modeline]] | [[file:/home/rrix/org//cce/doom-modeline.el][module code]] | doom-modeline |
| [[id:cce/basic_emacs_coding_config][Basic Emacs Coding Config]] | [[file:/home/rrix/org//cce/code-base.el][module code]] | code-base |
| [[id:5cbfa8e8-e392-41aa-9ce6-462b80f29049][Emacs vterm Mode]] | [[file:/home/rrix/org//cce/vterm.el][module code]] | vterm |
| [[id:cce/org_mode_installation][Org Mode Installation]] | [[file:/home/rrix/org//cce/org-mode.el][module code]] | org-mode |
| [[id:BBDB][BBDB]] | [[file:/home/rrix/org//cce/bbdb.el][module code]] | bbdb |
| [[id:000e38de-9755-4b3a-bbb0-0dae383f570b][Tea Practice]] | [[file:/home/rrix/org//cce/tea-practice.el][module code]] | tea-practice |
| [[id:9a844e09-faa4-42a1-8e9f-c76f476992fa][Decision Log]] | [[file:/home/rrix/org//cce/decision-log.el][module code]] | decision-log |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[file:/home/rrix/org//cce/kde-desktop.el][module code]] | kde-desktop |
| [[id:9ce3cedf-7f1b-45e0-aa12-e1bd7d739cbb][Configuring Shell Variables]] | [[file:/home/rrix/org//cce/shell-vars.el][module code]] | shell-vars |
| [[id:cce/flyspell_mode][Spell-checking with Flyspell Mode]] | [[file:/home/rrix/org//cce/flyspell.el][module code]] | flyspell |
| [[id:cce/gnus_evil_mode][Gnus Evil Mode]] | [[file:/home/rrix/org//cce/gnus-evil-mode.el][module code]] | gnus-evil-mode |
| [[id:cce/hydra][Flowing Keybindings with Hydra]] | [[file:/home/rrix/org//cce/hydra-base.el][module code]] | hydra-base |
| [[id:cce/company_code_completion][Company Code Completion]] | [[file:/home/rrix/org//cce/company.el][module code]] | company |
| [[id:cce/gnus_adaptive_scoring][Gnus Adaptive Scoring]] | [[file:/home/rrix/org//cce/gnus-adaptive.el][module code]] | gnus-adaptive |
| [[id:cce/sending_mail_in_gnus][Sending Mail in Gnus]] | [[file:/home/rrix/org//cce/msmtp.el][module code]] | msmtp |
| [[id:cce/company_code_completion][Company Code Completion]] | [[file:/home/rrix/org//cce/company.el][module code]] | company |
| [[id:cce/capturing_tasks][Capturing Tasks]] | [[file:/home/rrix/org//cce/org-capture.el][module code]] | org-capture |
| [[id:nil][nil]] | [[file:/home/rrix/org//cce/dynamic-org-capture.el][module code]] | dynamic-org-capture |
| [[id:20220704T164150.482873][org-contrib strip-mined]] | [[file:/home/rrix/org//cce/org-contrib2.el][module code]] | org-contrib2 |
| [[id:20211101T215546.006087][Emacs calendar]] | [[file:/home/rrix/org//cce/emacs-calendar.el][module code]] | emacs-calendar |
| [[id:cce/org_download][org-download]] | [[file:/home/rrix/org//cce/org-download.el][module code]] | org-download |
| [[id:cce/org_html_css_inclusion][Embed CSS in Org-Mode HTML Exports]] | [[file:/home/rrix/org//cce/org-html-css.el][module code]] | org-html-css |
| [[id:cce/some_thoughts_on_time_tracking][Some Thoughts on Time Tracking]] | [[file:/home/rrix/org//cce/org-time-tracking.el][module code]] | org-time-tracking |
| [[id:cce/literate_programming][Literate Programming with Org Babel]] | [[file:/home/rrix/org//cce/literate-programming.el][module code]] | literate-programming |
| [[id:cce/defdaily][defdaily]] | [[file:/home/rrix/org//cce/defdaily.el][module code]] | defdaily |
| [[id:e118bfda-4bb3-4e8d-a8de-83b4860df565][org-caldav]] | [[file:/home/rrix/org//cce/org-caldav.el][module code]] | org-caldav |
| [[id:cce/project_work_with_org_mode][Project Work with Org Mode]] | [[file:/home/rrix/org//cce/org-tasks.el][module code]] | org-tasks |
| [[id:9ce3cedf-7f1b-45e0-aa12-e1bd7d739cbb][Configuring Shell Variables]] | [[file:/home/rrix/org//cce/shell-vars.el][module code]] | shell-vars |
| [[id:2e31b385-a003-4369-a136-c6b78c0917e1][Spaced Repetition Study]] | [[file:/home/rrix/org//cce/org-fc.el][module code]] | org-fc |
| [[id:cce/my_org_mode_agendas][My Org-mode Agendas]] | [[file:/home/rrix/org//cce/org-agenda.el][module code]] | org-agenda |
| [[id:cce/ement.el][Encrypted Matrix Chat in Emacs with Ement.el]] | [[file:/home/rrix/org//cce/ement.el][module code]] | ement |
| [[id:cce/flyspell_mode][Spell-checking with Flyspell Mode]] | [[file:/home/rrix/org//cce/flyspell.el][module code]] | flyspell |
| [[id:cce/org-roam][org-roam]] | [[file:/home/rrix/org//cce/org-roam.el][module code]] | org-roam |
| [[id:cce/gnus_evil_mode][Gnus Evil Mode]] | [[file:/home/rrix/org//cce/gnus-evil-mode.el][module code]] | gnus-evil-mode |
| [[id:cce/hydra][Flowing Keybindings with Hydra]] | [[file:/home/rrix/org//cce/hydra-base.el][module code]] | hydra-base |
| [[id:cce/mbsync][mbsync for local mail storage]] | [[file:/home/rrix/org//cce/mbsync.el][module code]] | mbsync |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[file:/home/rrix/org//cce/appearance.el][module code]] | appearance |
| [[id:cce/web_browsing][Web Browsing]] | [[file:/home/rrix/org//cce/web-browsing.el][module code]] | web-browsing |
| [[id:cce/basic_language_coverage][Basic Language Coverage]] | [[file:/home/rrix/org//cce/code-modes.el][module code]] | code-modes |
| [[id:cce/code_formatting_aggressively][Code Formatting, Aggressively]] | [[file:/home/rrix/org//cce/aggressive-indent.el][module code]] | aggressive-indent |
| [[id:cce/surfing_through_codebases][Surfing Through Codebases]] | [[file:/home/rrix/org//cce/code-surf.el][module code]] | code-surf |
| [[id:cce/org-roam][org-roam]] | [[file:/home/rrix/org//cce/org-roam.el][module code]] | org-roam |
| [[id:20220704T164150.482873][org-contrib strip-mined]] | [[file:/home/rrix/org//cce/org-contrib2.el][module code]] | org-contrib2 |
| [[id:20211101T215546.006087][Emacs calendar]] | [[file:/home/rrix/org//cce/emacs-calendar.el][module code]] | emacs-calendar |
| [[id:cce/ement.el][Encrypted Matrix Chat in Emacs with Ement.el]] | [[file:/home/rrix/org//cce/ement.el][module code]] | ement |
| [[id:cce/capturing_tasks][Capturing Tasks]] | [[file:/home/rrix/org//cce/org-capture.el][module code]] | org-capture |
| [[id:cce/org_download][org-download]] | [[file:/home/rrix/org//cce/org-download.el][module code]] | org-download |
| [[id:cce/org_html_css_inclusion][Embed CSS in Org-Mode HTML Exports]] | [[file:/home/rrix/org//cce/org-html-css.el][module code]] | org-html-css |
| [[id:2e31b385-a003-4369-a136-c6b78c0917e1][Spaced Repetition Study]] | [[file:/home/rrix/org//cce/org-fc.el][module code]] | org-fc |
| [[id:cce/some_thoughts_on_time_tracking][Some Thoughts on Time Tracking]] | [[file:/home/rrix/org//cce/org-time-tracking.el][module code]] | org-time-tracking |
| [[id:cce/my_org_mode_agendas][My Org-mode Agendas]] | [[file:/home/rrix/org//cce/org-agenda.el][module code]] | org-agenda |
| [[id:cce/literate_programming][Literate Programming with Org Babel]] | [[file:/home/rrix/org//cce/literate-programming.el][module code]] | literate-programming |
| [[id:cce/defdaily][defdaily]] | [[file:/home/rrix/org//cce/defdaily.el][module code]] | defdaily |
| [[id:e118bfda-4bb3-4e8d-a8de-83b4860df565][org-caldav]] | [[file:/home/rrix/org//cce/org-caldav.el][module code]] | org-caldav |
| [[id:cce/project_work_with_org_mode][Project Work with Org Mode]] | [[file:/home/rrix/org//cce/org-tasks.el][module code]] | org-tasks |
| [[id:eaed606f-054b-4bfa-8891-23dfbf42cf81][Japanese Text Input in Emacs]] | [[file:/home/rrix/org//cce/japanese-input.el][module code]] | japanese-input |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[file:/home/rrix/org//cce/my-location.el][module code]] | my-location |
| [[id:1df46b31-9130-4b57-afd5-6993ca038d4c][In Emacs Underscores should be part of words]] | [[file:/home/rrix/org//cce/underscores-syntax-table.el][module code]] | underscores-syntax-table |
| [[id:cce/window_management_in_emacs][Window Management in Emacs]] | [[file:/home/rrix/org//cce/window-management.el][module code]] | window-management |
| [[id:cce/smarter_emacs_help][Smarter Emacs Help]] | [[file:/home/rrix/org//cce/hydra-help.el][module code]] | hydra-help |
| [[id:cce/the_standard_unix_password_manager][Using Pass for Passwords]] | [[file:/home/rrix/org//cce/pass.el][module code]] | pass |
| [[id:cce/magit][Git in Emacs with Magit]] | [[file:/home/rrix/org//cce/magit.el][module code]] | magit |
| [[id:cce/hydra_dipswitches][Hydra Dipswitches]] | [[file:/home/rrix/org//cce/hydra-dipswitch.el][module code]] | hydra-dipswitch |
| [[id:cce/focused_text_editing][Focused Text Editing]] | [[file:/home/rrix/org//cce/focused-mode.el][module code]] | focused-mode |
| [[id:cce/emacs_launcher_hydra][Emacs "Launcher" Hydra]] | [[file:/home/rrix/org//cce/hydra-launcher.el][module code]] | hydra-launcher |
| [[id:cce/yasnippets][Smart Snippet Templates with Yasnippet]] | [[file:/home/rrix/org//cce/yasnippet.el][module code]] | yasnippet |
| [[id:cce/emacs_and_the_language_server_protocol][Emacs and the Language Server Protocol]] | [[file:/home/rrix/org//cce/lsp-base.el][module code]] | lsp-base |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[file:/home/rrix/org//cce/nixos.el][module code]] | nixos |
| [[id:20210916T211401.374411][dunn/company-emoji: company-mode backend for emoji]] | [[file:/home/rrix/org//cce/company-emoji.el][module code]] | company-emoji |
| [[id:cce/toggle_bright_dark_theme_in_emacs_kde_and_firefox][Toggle Bright/Dark Theme in Emacs, KDE and FireFox]] | [[file:/home/rrix/org//cce/toggle-theme.el][module code]] | toggle-theme |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[file:/home/rrix/org//cce/japanese-study.el][module code]] | japanese-study |
| [[id:cce/programming_lisp_in_emacs][Programming Lisp in Emacs]] | [[file:/home/rrix/org//cce/lisp-core.el][module code]] | lisp-core |
| [[id:cce/gnus_task_tracking][Gnus Task Tracking]] | [[file:/home/rrix/org//cce/gnus-org-integration.el][module code]] | gnus-org-integration |
| [[id:000e38de-9755-4b3a-bbb0-0dae383f570b][Tea Practice]] | [[file:/home/rrix/org//cce/tea-practice.el][module code]] | tea-practice |
| [[id:cce/mood_log][Mood Log]] | [[file:/home/rrix/org//cce/mood-log.el][module code]] | mood-log |
| [[id:Journal][Journal]] | [[file:/home/rrix/org//cce/journal.el][module code]] | journal |
| [[id:0e7562d3-799c-48bf-a7a6-a0adb7d464cf][Weekly Review]] | [[file:/home/rrix/org//cce/weekly-review.el][module code]] | weekly-review |
| [[id:a24c7dc9-43bc-41b1-8214-af05075f3265][Therapy Notes and Work]] | [[file:/home/rrix/org//cce/therapy-notes.el][module code]] | therapy-notes |
| [[id:cce/project_management_in_org_mode][Project Management in Org Mode]] | [[file:/home/rrix/org//cce/org-projects.el][module code]] | org-projects |
| [[id:ba5765e9-7b30-4168-9001-f1a34787ab94][Consult-Buffer Org Roam Source]] | [[file:/home/rrix/org//cce/consult-buffer-org-roam.el][module code]] | consult-buffer-org-roam |
| [[id:nil][nil]] | [[file:/home/rrix/org//cce/arroyo.el][module code]] | arroyo |
| [[id:20210906T171736.819354][Org Roam UI]] | [[file:/home/rrix/org//cce/org-roam-ui.el][module code]] | org-roam-ui |
| [[id:cce/extracting_org_roam_headings][Extracting Org Roam Headings]] | [[file:/home/rrix/org//cce/org-roam-extract.el][module code]] | org-roam-extract |
| [[id:cce/navigate-note][Find Org Roam notes via their relations - Where parallels cross]] | [[file:/home/rrix/org//cce/navigate-note.el][module code]] | navigate-note |
| [[id:cce/org_protocol][org-protocol to quickly annotate web pages]] | [[file:/home/rrix/org//cce/org-protocol.el][module code]] | org-protocol |
| [[id:cce/quickly_rename_captured_zettel_files][Quickly Rename Captured Zettel Files]] | [[file:/home/rrix/org//cce/org-roam-rename-file.el][module code]] | org-roam-rename-file |
| [[id:ba5765e9-7b30-4168-9001-f1a34787ab94][Consult-Buffer Org Roam Source]] | [[file:/home/rrix/org//cce/consult-buffer-org-roam.el][module code]] | consult-buffer-org-roam |
| [[id:20210922T100009.660789][Capturing Notes into Clocked Task]] | [[file:/home/rrix/org//cce/org-clock-capture.el][module code]] | org-clock-capture |
| [[id:cce/dynamic_agendas][Dynamic and fast agenda]] | [[file:/home/rrix/org//cce/dynamic-fast-agenda.el][module code]] | dynamic-fast-agenda |
| [[id:20210916T194849.283036][5 Org Roam Hacks for Better Productivity in Emacs - System Crafters]] | [[file:/home/rrix/org//cce/org-roam-hacks.el][module code]] | org-roam-hacks |
| [[id:cce/gnus_task_tracking][Gnus Task Tracking]] | [[file:/home/rrix/org//cce/gnus-org-integration.el][module code]] | gnus-org-integration |
| [[id:a24c7dc9-43bc-41b1-8214-af05075f3265][Therapy Notes and Work]] | [[file:/home/rrix/org//cce/therapy-notes.el][module code]] | therapy-notes |
| [[id:cce/project_management_in_org_mode][Project Management in Org Mode]] | [[file:/home/rrix/org//cce/org-projects.el][module code]] | org-projects |
| [[id:Journal][Journal]] | [[file:/home/rrix/org//cce/journal.el][module code]] | journal |
| [[id:0e7562d3-799c-48bf-a7a6-a0adb7d464cf][Weekly Review]] | [[file:/home/rrix/org//cce/weekly-review.el][module code]] | weekly-review |
| [[id:cce/mood_log][Mood Log]] | [[file:/home/rrix/org//cce/mood-log.el][module code]] | mood-log |
| [[id:cce/the_standard_unix_password_manager][Using Pass for Passwords]] | [[file:/home/rrix/org//cce/pass.el][module code]] | pass |
| [[id:cce/window_management_in_emacs][Window Management in Emacs]] | [[file:/home/rrix/org//cce/window-management.el][module code]] | window-management |
| [[id:cce/smarter_emacs_help][Smarter Emacs Help]] | [[file:/home/rrix/org//cce/hydra-help.el][module code]] | hydra-help |
| [[id:cce/emacs_and_the_language_server_protocol][Emacs and the Language Server Protocol]] | [[file:/home/rrix/org//cce/lsp-base.el][module code]] | lsp-base |
| [[id:cce/magit][Git in Emacs with Magit]] | [[file:/home/rrix/org//cce/magit.el][module code]] | magit |
| [[id:cce/hydra_dipswitches][Hydra Dipswitches]] | [[file:/home/rrix/org//cce/hydra-dipswitch.el][module code]] | hydra-dipswitch |
| [[id:cce/focused_text_editing][Focused Text Editing]] | [[file:/home/rrix/org//cce/focused-mode.el][module code]] | focused-mode |
| [[id:cce/emacs_launcher_hydra][Emacs "Launcher" Hydra]] | [[file:/home/rrix/org//cce/hydra-launcher.el][module code]] | hydra-launcher |
| [[id:cce/toggle_bright_dark_theme_in_emacs_kde_and_firefox][Toggle Bright/Dark Theme in Emacs, KDE and FireFox]] | [[file:/home/rrix/org//cce/toggle-theme.el][module code]] | toggle-theme |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[file:/home/rrix/org//cce/japanese-study.el][module code]] | japanese-study |
| [[id:cce/programming_lisp_in_emacs][Programming Lisp in Emacs]] | [[file:/home/rrix/org//cce/lisp-core.el][module code]] | lisp-core |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[file:/home/rrix/org//cce/home-manager.el][module code]] | home-manager |
| [[id:426cef6a-f77d-4b2d-8acb-0793b3cef368][Monthly Review]] | [[file:/home/rrix/org//cce/monthly-review.el][module code]] | monthly-review |
| [[id:13995d53-320a-4955-996a-4a4a25319701][Rust]] | [[file:/home/rrix/org//cce/rust.el][module code]] | rust |
| [[id:cce/python][Python in Emacs through LSP]] | [[file:/home/rrix/org//cce/python.el][module code]] | python |
| [[id:cce/navigating_projects_with_projectile][Navigating Projects With Projectile]] | [[file:/home/rrix/org//cce/projectile.el][module code]] | projectile |
| [[id:cce/elixir][Elixir Programming Configuration]] | [[file:/home/rrix/org//cce/elixir.el][module code]] | elixir |
| [[id:cce/programming_common_lisp_in_emacs][Programming Common Lisp in Emacs]] | [[file:/home/rrix/org//cce/common-lisp.el][module code]] | common-lisp |
| [[id:426cef6a-f77d-4b2d-8acb-0793b3cef368][Monthly Review]] | [[file:/home/rrix/org//cce/monthly-review.el][module code]] | monthly-review |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[file:/home/rrix/org//cce/home-manager.el][module code]] | home-manager |
| [[id:cce/run_hooks_after_init][Run Hooks After init]] | [[file:/home/rrix/org//cce/run-hooks.el][module code]] | run-hooks |
| [[id:cce/using_yubikey_as_an_otp_key][Using Yubikey as an OTP Key]] | [[file:/home/rrix/org//cce/yubikey-otp.el][module code]] | yubikey-otp |
| [[id:20220713T141408.123508][Jump to Missing Org Roam Nodes]] | [[file:/home/rrix/org//cce/missing-org-roam.el][module code]] | missing-org-roam |
| [[id:cce/org_tagging_principles][Org Tagging Principles]] | [[file:/home/rrix/org//cce/org-tagging.el][module code]] | org-tagging |
| [[id:cce/plasma_browser_integration][Plasma Browser Integration]] | [[file:/home/rrix/org//cce/plasma-browser.el][module code]] | plasma-browser |
| [[id:20220506T143312.832024][Contact Management in Emacs]] | [[file:/home/rrix/org//cce/khard.el][module code]] | khard |
| [[id:cce/ruby_and_rails_in_emacs][Ruby and Rails in Emacs]] | [[file:/home/rrix/org//cce/ruby.el][module code]] | ruby |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[file:/home/rrix/org//cce/nixpkgs.el][module code]] | nixpkgs |
| [[id:20220421T100313.402598][Trying out XMonad in Home Manager]] | [[file:/home/rrix/org//cce/haskell.el][module code]] | haskell |
| [[id:cce/picom][Picom on EXWM startup]] | [[file:/home/rrix/org//cce/exwm-xcompmgr.el][module code]] | exwm-xcompmgr |
| [[id:cce/delve][publicimageltd/delve: Delve into your org-roam zettelkasten.]] | [[file:/home/rrix/org//cce/delve.el][module code]] | delve |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[file:/home/rrix/org//cce/ssh.el][module code]] | ssh |
| [[id:org_mime][Sending Rich Text with Org Mime]] | [[file:/home/rrix/org//cce/org-mime.el][module code]] | org-mime |
| [[id:cce/sitelen_pona_pona][Sitelen Pona Pona]] | [[file:/home/rrix/org//cce/sitelen-pona-pona.el][module code]] | sitelen-pona-pona |
| [[id:cce/nixops][NixOps]] | [[file:/home/rrix/org//cce/nixops.el][module code]] | nixops |
| [[id:9379ab36-70a3-48b5-9136-ee96d9dbc606][Meditation Journal]] | [[file:/home/rrix/org//cce/meditation-log.el][module code]] | meditation-log |
| [[id:80716b85-f33b-4f10-b583-de54b8b78ffb][Fennel]] | [[file:/home/rrix/org//cce/fennel.el][module code]] | fennel |
| [[id:arcology/arroyo-page][Arroyo Arcology Generator]] | [[file:/home/rrix/org//cce/arroyo-arcology.el][module code]] | arroyo-arcology |
| [[id:188c5167-4966-4a47-aaf1-9b7975192a5f][Ansible Manages my Laptop]] | [[file:/home/rrix/org//cce/ansible.el][module code]] | ansible |
| [[id:arcology/arroyo-page][Arroyo Arcology Generator]] | [[file:/home/rrix/org//cce/arroyo-arcology.el][module code]] | arroyo-arcology |
| [[id:20220421T100313.402598][Trying out XMonad in Home Manager]] | [[file:/home/rrix/org//cce/haskell.el][module code]] | haskell |
| [[id:9379ab36-70a3-48b5-9136-ee96d9dbc606][Meditation Journal]] | [[file:/home/rrix/org//cce/meditation-log.el][module code]] | meditation-log |
| [[id:cce/picom][Picom on EXWM startup]] | [[file:/home/rrix/org//cce/exwm-xcompmgr.el][module code]] | exwm-xcompmgr |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[file:/home/rrix/org//cce/nixpkgs.el][module code]] | nixpkgs |
| [[id:20220913T104837.013589][jwiegley/nix-update-el]] | [[file:/home/rrix/org//cce/nix-update.el][module code]] | nix-update |
| [[id:cce/delve][publicimageltd/delve]] | [[file:/home/rrix/org//cce/delve.el][module code]] | delve |
* NixOS Module Index
:PROPERTIES:
@ -189,42 +192,43 @@ Here are the NixOS modules which go in to [[id:cce/my_nixos_configuration][My Ni
#+end_src
#+results:
| [[id:6975a285-eb1b-4531-bcfd-584de3ba8859][Exporting highlights/notes from KOReader]] | [[nixos/koreader-binds.nix][nix module source]] |
| [[id:20220415T133110.378618][`python39Packages.apsw` fails to build · Issue #167626 · NixOS/nixpkgs]] | [[nixos/fix-calibre-apsw.nix][nix module source]] |
| [[id:20220103T140030.904122][Plant Camera]] | [[nixos/raspi.nix][nix module source]] |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[nixos/kde.nix][nix module source]] |
| [[id:20211030T172526.854851][NixOS on Framework laptop]] | [[nixos/framework-laptop.nix][nix module source]] |
| [[id:20211120T220054.226284][The Wobserver]] | [[nixos/qemu-vm.nix][nix module source]] |
| [[id:cce/applications_i_use][Applications I Use]] | [[nixos/applications.nix][nix module source]] |
| [[id:cce/using_yubikey_as_a_gpg_key][Using Yubikey as a GPG Key]] | [[nixos/yubikey.nix][nix module source]] |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[nixos/nix-path.nix][nix module source]] |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[nixos/gnupg-pam.nix][nix module source]] |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[nixos/nixpkgs.nix][nix module source]] |
| [[id:20210814224010-my_custom_keyboard_layout][My Custom Keyboard Layout]] | [[nixos/xmodmap.nix][nix module source]] |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[nixos/syncthing.nix][nix module source]] |
| [[id:20220218T215521.617327][Heisenbridge]] | [[nixos/heisenbridge.nix][nix module source]] |
| [[id:cce/public_keys][My Public Keys and NixOS user]] | [[nixos/rrix.nix][nix module source]] |
| [[id:20220101T180015.306163][Nextcloud on Wobserver]] | [[nixos/nextcloud.nix][nix module source]] |
| [[id:cce/nixos-laptop][NixOS Hardware Support for Laptops]] | [[nixos/laptop.nix][nix module source]] |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[nixos/ssh_client.nix][nix module source]] |
| [[id:20220131T152041.472624][NixOS Set Top Box]] | [[nixos/settop.nix][nix module source]] |
| [[id:cce/nixos-boot][NixOS boot configuration]] | [[nixos/boot.nix][nix module source]] |
| [[id:cce/warm_computing_with_clight][Clight]] | [[nixos/clight.nix][nix module source]] |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[nixos/vulfpeck.nix][nix module source]] |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[nixos/home-manager.nix][nix module source]] |
| [[id:cce/wobserver/postgres][PostgreSQL on the Wobserver]] | [[nixos/postgresql.nix][nix module source]] |
| [[id:cce/printing][Printing Configuration in NixOS]] | [[nixos/printing.nix][nix module source]] |
| [[id:cce/mpd][Listening to Music with MPD]] | [[nixos/mopidy.nix][nix module source]] |
| [[id:cce/nixos-audio][NixOS Audio]] | [[nixos/audio.nix][nix module source]] |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[nixos/fonts.nix][nix module source]] |
| [[id:cce/nix_community_cachix][Nix Community Cachix]] | [[nixos/cachix.nix][nix module source]] |
| [[id:cce/wobserver/matrix][Matrix Synapse]] | [[nixos/matrix.nix][nix module source]] |
| [[id:e4998eda-d14a-48ee-9661-3d7d1bead53c][Wobserver Nginx Frontends]] | [[nixos/nginx.nix][nix module source]] |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[nixos/location.nix][nix module source]] |
| [[id:47ff77f9-3eae-43eb-886c-7513d05f047f][Secure Backup Infrastructure]] | [[nixos/zfs.nix][nix module source]] |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[nixos/japanese.nix][nix module source]] |
| [[id:20220518T111013.068566][NetworkManager's `nm-online -s` hanging]] | [[nixos/nm-online.nix][nix module source]] |
| [[id:20220210T155158.671084][From Wireguard to Tailscale]] | [[nixos/tailscale.nix][nix module source]] |
| [[id:arroyo/emacs][Arroyo Emacs Generator]] | [[nixos/ccache.nix][nix module source]] |
| [[id:20220103T140030.904122][Plant Camera]] | [[nixos/raspi.nix][nix module source]] |
| [[id:20211030T172526.854851][NixOS on Framework laptop]] | [[nixos/framework-laptop.nix][nix module source]] |
| [[id:cce/using_yubikey_as_a_gpg_key][Using Yubikey as a GPG Key]] | [[nixos/yubikey.nix][nix module source]] |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[nixos/nixpkgs.nix][nix module source]] |
| [[id:20210814224010-my_custom_keyboard_layout][My Custom Keyboard Layout]] | [[nixos/xmodmap.nix][nix module source]] |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[nixos/syncthing.nix][nix module source]] |
| [[id:20220218T215521.617327][Heisenbridge]] | [[nixos/heisenbridge.nix][nix module source]] |
| [[id:20220101T180015.306163][Nextcloud on Wobserver]] | [[nixos/nextcloud.nix][nix module source]] |
| [[id:cce/nixos-laptop][NixOS Hardware Support for Laptops]] | [[nixos/laptop.nix][nix module source]] |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[nixos/ssh_client.nix][nix module source]] |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[nixos/vulfpeck.nix][nix module source]] |
| [[id:cce/wobserver/postgres][PostgreSQL on the Wobserver]] | [[nixos/postgresql.nix][nix module source]] |
| [[id:cce/printing][Printing Configuration in NixOS]] | [[nixos/printing.nix][nix module source]] |
| [[id:cce/mpd][Listening to Music with MPD]] | [[nixos/mopidy.nix][nix module source]] |
| [[id:cce/nixos-audio][NixOS Audio]] | [[nixos/audio.nix][nix module source]] |
| [[id:cce/nix_community_cachix][Nix Community Cachix]] | [[nixos/cachix.nix][nix module source]] |
| [[id:cce/wobserver/matrix][Matrix Synapse]] | [[nixos/matrix.nix][nix module source]] |
| [[id:e4998eda-d14a-48ee-9661-3d7d1bead53c][Wobserver Nginx Frontends]] | [[nixos/nginx.nix][nix module source]] |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[nixos/location.nix][nix module source]] |
| [[id:47ff77f9-3eae-43eb-886c-7513d05f047f][Secure Backup Infrastructure]] | [[nixos/zfs.nix][nix module source]] |
| [[id:20220518T111013.068566][NetworkManager's `nm-online -s` hanging]] | [[nixos/nm-online.nix][nix module source]] |
| [[id:20220210T155158.671084][From Wireguard to Tailscale]] | [[nixos/tailscale.nix][nix module source]] |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[nixos/kde.nix][nix module source]] |
| [[id:cce/warm_computing_with_clight][Clight]] | [[nixos/clight.nix][nix module source]] |
| [[id:cce/nixos-boot][NixOS boot configuration]] | [[nixos/boot.nix][nix module source]] |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[nixos/direnv.nix][nix module source]] |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[nixos/fonts.nix][nix module source]] |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[nixos/home-manager.nix][nix module source]] |
| [[id:arroyo/emacs][Arroyo Emacs Generator]] | [[nixos/emacs.nix][nix module source]] |
| [[id:cce/applications_i_use][Applications I Use]] | [[nixos/applications.nix][nix module source]] |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[nixos/nix-path.nix][nix module source]] |
| [[id:20220131T152041.472624][NixOS Set Top Box]] | [[nixos/settop.nix][nix module source]] |
| [[id:6975a285-eb1b-4531-bcfd-584de3ba8859][Exporting highlights/notes from KOReader]] | [[nixos/koreader-binds.nix][nix module source]] |
| [[id:cce/public_keys][My Public Keys and NixOS user]] | [[nixos/rrix.nix][nix module source]] |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[nixos/japanese.nix][nix module source]] |
| [[id:20211120T220054.226284][The Wobserver]] | [[nixos/qemu-vm.nix][nix module source]] |
| [[id:20221021T115008.329657][Arroyo Nix Support]] | [[nixos/rixpkgs.nix][nix module source]] |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[nixos/gnupg-pam.nix][nix module source]] |
These modules go in to [[id:cce/morph-laptops][My Laptops]], [[id:cce/morph-meadow-crush][Meadow Crush]] and [[id:cce/morph-tres-ebow][Tres Ebow]] and are deployed with [[id:cce/morph][Morph]].

View File

@ -1,45 +0,0 @@
:PROPERTIES:
:ID: cce/cce_dynamic_loader
:END:
#+TITLE: CCE Dynamic Loader
#+filetags: :Project:Emacs:CCE:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle cce-loader.el
,#+ARROYO_EMACS_MODULE: cce-loader
#+ARCOLOGY_KEY: cce/cce-loader
#+CCE_PREDICATE: t
#+CCE_PRIORITY: 70
#+begin_src emacs-lisp
(provide 'cce/cce-loader)
#+end_src
[[id:cce/cce][The Complete Computing Environment]] is at its core a set of documentation, a pile of org-mode files and code that extracts the source code from those files before compiling and ultimately running that code. In the original implementation of CCE, there was a hard-coded list of files to load code from, and managing this over the years has become complicated. Eventually I expanded the CCE to also manage my server, opting to push all of that in to a single file.
The new CCE must be able to grow past this, and I believe it can. I have implemented a minimal patch to [[id:cce/org-roam][org-roam]] in [[id:e050ed03-044f-4a48-912d-72579bef9a26][org-roam: #+KEYWORD caching in org-roam-db]] so that I can query the org-roam cache for arbitrary keywords of my own devise. And so we can build a configuration search engine. This relies on a fork of org-roam, right now, which is unfortunate and I account for that in the [[id:cce/org-roam][org-roam]] documentation.
Each page has these keywords:
- =CCE_MODULE= is used to intuit file names in the export, do housekeeping, etc
- =CCE_ANSIBLE= is used to intuit file names in the ansible export, do housekeeping, etc
- =CCE_PREDICATE= is a lisp form which must evaluate to =t= for the file to be included in the init
- =CCE_PRIORITY= is be used to sort the modules in the init, and the order in the ansible.
- =CCE_ANSIBLE_PREDICATE= is a "when" clause which will be attached to the module's Ansible tasks.
#+begin_src emacs-lisp
(require 'org-roam)
(add-to-list 'org-roam-cached-keywords "CCE_PREDICATE")
(add-to-list 'org-roam-cached-keywords "CCE_MODULE")
(add-to-list 'org-roam-cached-keywords "CCE_ANSIBLE")
(add-to-list 'org-roam-cached-keywords "CCE_ROLES")
(add-to-list 'org-roam-cached-keywords "CCE_PRIORITY")
(add-to-list 'org-roam-cached-keywords "CCE_ANSIBLE_PREDICATE")
(add-to-list 'org-roam-cached-keywords "ARCOLOGY_OLD_PERMALINK")
(add-to-list 'org-roam-cached-keywords "ARCOLOGY_TWITTER")
(add-to-list 'org-roam-cached-keywords "ARCOLOGY_KEY")
#+end_src
I have the code in [[id:cce/shared_cce_helpers][Shared CCE Helpers]] which will generate an =init.el= from these. To compile this, for now, though [[elisp:(cce/generate-dynamic-init (cce/module-list))]] can be evaluated.
This gives me a list of modules sorted by applying =string-lessp= to =CCE_PRIORITY=. I have to add metadata for Ansible still, probably. I'll need to write the predicate functions as part of productionising this. The end goal is to be able to deploy [[id:d63a6190-d8ac-4555-b74f-8c3e7e05519b][CCE Server]], CCE Workspace, and [[id:cosmo_communicator][Cosmo Communicator]] by the end of this. These patterns will also be used in [[id:1d917282-ecf4-4d4c-ba49-628cbb4bb8cc][Arcology]].

View File

@ -41,8 +41,8 @@ Okay, so [[id:cce/selectrum_etc][Consult]] provides a composable, high performan
#+ARROYO_HOME_EPKGS: overrides/consult-org-roam.nix
#+begin_src nix :tangle ~/arroyo-nix/overrides/consult-org-roam.nix
consult-org-roam = (let
versions = (import ../versions.nix {}).consult-org-roam;
rev = (import ../versions.nix {}).consult-org-roam-rev;
versions = pkgs.lib.pkgVersions.consult-org-roam;
rev = pkgs.lib.pkgVersions.consult-org-roam-rev;
in epkgs.melpaBuild {
pname = "consult-org-roam";
version = "20220416.2107";

View File

@ -18,8 +18,8 @@ I'm not sure if this will work if the switch happens while KDE is running, thoug
#+begin_src nix :tangle ~/arroyo-nix/lib/kde-configs.nix
{ config, pkgs, lib, ... }:
configs:
config: configs:
let
lines = lib.flatten (lib.mapAttrsToList (file: groups:
lib.mapAttrsToList (group: keys:
@ -35,7 +35,7 @@ config.lib.dag.entryAfter [ "writeBoundary" ]
:ID: 20220208T202524.889588
:END:
this can be invoked like so by feeding it a set shaped like =[file,[group,[key, value]]]=, it only naively stringifys values so be careful.
this can be invoked like so by feeding it a set shaped like =[file,[group,[key, value]]]=, it only naively stringifys values so be careful. It's also available in [[id:20221021T115008.329657][Arroyo Nix]] =lib/= as =pkgs.lib.mkKwriteConfig5=
#+ARROYO_HOME_MODULE: hm/kde-config-basics.nix
#+ARROYO_NIXOS_ROLE: endpoint
@ -43,9 +43,9 @@ this can be invoked like so by feeding it a set shaped like =[file,[group,[key,
#+begin_src nix :tangle ~/arroyo-nix/hm/kde-config-basics.nix :noweb yes
{ pkgs, config, ... }:
let kconfig = pkgs.callPackage ../lib/kde-configs.nix { inherit config; };
let kconfig = pkgs.callPackage ../lib/kde-configs.nix {};
in {
home.activation.krunnerConfig = kconfig {
home.activation.krunnerConfig = pkgs.lib.mkKwriteConfig5 config {
krunnerrc = {
Plugins = {
browserhistoryEnabled = "false";
@ -53,7 +53,7 @@ in {
};
};
};
home.activation.kteatimeConfiguration = kconfig {
home.activation.kteatimeConfiguration = pkgs.lib.mkKwriteConfig5 config {
kteatimerc = {
Tealist = {
"Tea0 Name" = "30s";
@ -121,9 +121,9 @@ Shortcuts get formatted in to Nix expressions with this awful =format= statement
#+begin_src nix :tangle ~/arroyo-nix/hm/kde-config-shortcuts.nix :noweb tangle
{ pkgs, config, ... }:
let kconfig = pkgs.callPackage ../lib/kde-configs.nix { inherit config; };
in {
home.activation.kconfigShortcuts = kconfig {
{
home.activation.kconfigShortcuts = pkgs.lib.mkKwriteConfig5 config {
<<shortcuts_str()>>
};
}

View File

@ -3,7 +3,7 @@
:ROAM_REFS: https://github.com/publicimageltd/delve
:ROAM_ALIASES: delve publicimageltd/delve
:END:
#+TITLE: publicimageltd/delve: Delve into your org-roam zettelkasten.
#+TITLE: publicimageltd/delve
#+filetags: :Archive:CCE:
#+ARCOLOGY_KEY: cce/delve
@ -15,7 +15,7 @@
[[id:d17a9ccf-0bfe-426e-85b3-d15771d3ee03][Archive]]
#+BEGIN_QUOTE
Delve is a tool to delve into your [[id:cce/org-roam][org-roam]] [[id:4cc8c5fc-ece0-4a34-8bf8-8fd0ac626bb4][Zettelkasten]]. Its main purpose is to find pages by following links (either backlinks or references made in the page itself). Thus you can quickly overview the network of interpage relations you have created [in the [[id:knowledge_base][Knowledge Base]]]. For this purpose, you can also use the predefined searches which attempt to highlight some focal points of this network (e.g., those pages which have the most links, or the last modified pages).
Delve is a [[id:a7420bb9-395f-4afa-92fb-8eaa0b8a4cd8][tool]] to delve into your [[id:cce/org-roam][org-roam]] [[id:4cc8c5fc-ece0-4a34-8bf8-8fd0ac626bb4][Zettelkasten]]. Its main purpose is to find pages by following links (either backlinks or references made in the page itself). Thus you can quickly overview the network of interpage relations you have created [in the [[id:knowledge_base][Knowledge Base]]]. For this purpose, you can also use the predefined searches which attempt to highlight some focal points of this network (e.g., those pages which have the most links, or the last modified pages).
Opening Delve the first time, you can browse your zettelkasten by ROAM_TAG, or use one of the predefined searches. Further functionality will be added.
#+END_QUOTE

View File

@ -13,6 +13,8 @@
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+ARCOLOGY_ALLOW_CRAWL: t
#+AUTO_TANGLE: t
#+begin_quote
Before each prompt, direnv checks for the existence of a .envrc file (and optionally a .env file) in the current and parent directories. If the file exists (and is authorized), it is loaded into a bash sub-shell and all exported variables are then captured by direnv and then made available to the current shell.

54
dynamic-org-captures.org Normal file
View File

@ -0,0 +1,54 @@
:PROPERTIES:
:ID: 20221004T113216.759615
:END:
#+title: Dynamic Org Captures
#+ARCOLOGY_KEY: cce/dynamic-org-captures
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
#+ARROYO_EMACS_MODULE: dynamic-org-capture
#+AUTO_TANGLE: t
An [[id:cce/programming_lisp_in_emacs][Emacs Lisp]] Macro for [[id:1fb8fb45-fac5-4449-a347-d55118bb377e][Org]] captures with dynamic file name:
#+begin_src emacs-lisp :tangle ~/org/cce/dynamic-org-capture.el
(setq cce--journal-topic-id "journal"
cce--standard-journal-topmatter
'(insert ":PROPERTIES:\n"
":ID: " cce--journal-topic-id "-" (format-time-string "%Gw%V") "\n"
":END:\n"
"#+TITLE: Journal " (format-time-string "%GW%V") "\n"
"#+FILETAGS: :Journal:\n"
"[[id:" cce--journal-topic-id "][Journal]]\n"))
(cl-defmacro cce-def-dynamic-org-capture (keys description
&key name
(top-matter cce--standard-journal-topmatter)
capture-path-tmpl
template-path
extra-capture-args)
`'(,keys ,description entry
(file+olp+datetree cce--last-capture-location)
(function
(lambda ()
(let ((filename (format-time-string ,capture-path-tmpl))
(template-filename ,template-path))
(setq cce--last-capture-location filename)
(unless (file-exists-p filename)
(message "Insert top-matter for %s" filename)
(find-file filename)
(goto-char (point-min))
,top-matter)
;; lift from org-capture-get-template
(let ((filename (expand-file-name template-filename org-directory)))
(if (file-exists-p filename) (org-file-contents filename)
(format "* Template file %S not found" file))))))
,@extra-capture-args
,@(unless (seq-contains extra-capture-args :tree-type)
'(:tree-type week))))
(provide 'cce/dynamic-org-capture)
#+end_src

View File

@ -1,5 +1,6 @@
:PROPERTIES:
:ID: 20220723T195008.486029
:ROAM_ALIASES: "Emacs shortcuts scripts"
:END:
#+TITLE: Emacs Helper Scripts
#+ARCOLOGY_KEY: cce/helper-scripts

View File

@ -33,7 +33,7 @@ This is for [[id:cce/home-manager][home-manager]]:
{
programs.gpg.enable = true;
programs.gpg.settings = {
default-key = "a5fce951";
# default-key = "a5fce951";
cert-policy-url = "http://whatthefuck.computer/new-key.txt";
auto-key-locate = "keyserver cert pka";
keyserver = "hkp://pool.sks-keyservers.net";

View File

@ -180,19 +180,19 @@ in {
home.activation = {
gnus-newsrc =
import ../lib/mk_activation_local_link.nix {inherit config;}
pkgs.lib.mkActivationLocalLink (builtins.trace config)
"~/sync/private-files/.newsrc"
".newsrc";
gnus-newsrc_eld =
import ../lib/mk_activation_local_link.nix {inherit config;}
pkgs.lib.mkActivationLocalLink config
"~/sync/private-files/.newsrc.eld"
".newsrc.eld";
gnus-feeds =
import ../lib/mk_activation_local_link.nix {inherit config;}
pkgs.lib.mkActivationLocalLink config
"~/Maildir/endpoint/feeds"
"Maildir/feeds";
gnus-fastmail =
import ../lib/mk_activation_local_link.nix {inherit config;}
pkgs.lib.mkActivationLocalLink config
"~/Maildir/endpoint/fastmail"
"Maildir/fastmail";
};

View File

@ -2,16 +2,18 @@
:ID: cce/gnus_task_tracking
:END:
#+TITLE: Gnus Task Tracking
#+filetags: :CCE:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle gnus-org-integration.el
#+PROPERTY: header-args:yaml :tangle roles/endpoint/tasks/gnus-org-integration.yml
#+ARROYO_EMACS_MODULE: gnus-org-integration
#+ARCOLOGY_KEY: cce/gnus-org-integration
#+CCE_PRIORITY: 71
#+filetags: :CCE:
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_EMACS_MODULE: gnus-org-integration
#+ARROYO_MODULE_WANTS: cce/gnus.org
#+ARROYO_MODULE_WANTS: cce/capturing_tasks.org
#+ARCOLOGY_ALLOW_CRAWL: t
Generally, links from my news reader are probably not going to use the "review this" capture, but it will instead go through my browser-centric [[id:26c9e4fd-4501-4b8b-95ce-a2a5230d7c1e][Email and News and Information Pipelines]]. I'll probably just use the "review" one for email newsletters which don't provide web links. The respond one will be important and fill in to [[id:cce/my_org_mode_agendas][My Org-mode Agendas]].

View File

@ -399,6 +399,8 @@ This file is added to =imports= to get a home manager install in [[id:cce/my_nix
#+ARROYO_NIXOS_MODULE: nixos/home-manager.nix
#+begin_src nix :tangle ~/arroyo-nix/nixos/home-manager.nix
{ pkgs, ...}:
let
opts = (import ../versions.nix {}).homeManager;
hm = opts false;
@ -407,6 +409,8 @@ in
# this makes home-manager.users.rrix work
imports = [ "${hm}/nixos" ];
home-manager.useGlobalPkgs = true;
# this makes pkgs.home-manager track my pins, i.e "home-manager build" uses the same version as nixos's home-manager-rrix service
nixpkgs.overlays = [
(import "${hm}/overlay.nix")

View File

@ -35,7 +35,7 @@ here's a package override for my [[id:cce/emacs][Emacs]] home-manager installati
#+ARROYO_HOME_EPKGS: overrides/mastodon.nix
#+begin_src nix :tangle ~/arroyo-nix/overrides/mastodon.nix
mastodon = epkgs.melpaPackages.mastodon.overrideAttrs(old: {
src = pkgs.callPackage (import ../versions.nix {}).mastodon {};
src = pkgs.callPackage pkgs.lib.pkgVersions.mastodon {};
propagatedBuildInputs = old.buildInputs ++ [epkgs.request epkgs.persist];
});
#+end_src

View File

@ -4,14 +4,18 @@
:END:
#+TITLE: Creating Soft Link Activation Scripts for Home Manager
#+filetags: :CCE:
#+ARCOLOGY_KEY: cce/mkActivationLocalLink
#+ARCOLOGY_ALLOW_CRAWL: t
#+AUTO_TANGLE: t
This is a simple [[id:cce/cce][CCE]] [[id:cce/home-manager][home-manager]] helper. It's used to create softlinks to files/directories/etc that aren't managed by [[id:cce/home-manager][home-manager]]. Configuration directories kept in sync through [[id:cce/syncthing][Syncthing]] are a simple example here, but it's also used to inject "secret" files like my [[id:cce/the_standard_unix_password_manager][password-store]].
#+begin_src nix :tangle ~/arroyo-nix/lib/mk_activation_local_link.nix :mkdirp yes
{config}:
src: dest:
{}:
config: src: dest:
config.lib.dag.entryAfter ["writeBoundary"] ''
$DRY_RUN_CMD test -e $HOME/${dest} || \
$DRY_RUN_CMD ln -s $VERBOSE_ARG \
@ -22,13 +26,19 @@ config.lib.dag.entryAfter ["writeBoundary"] ''
use it like:
#+begin_src nix
mkActivationLocalLink = import lib/mk_activation_local_link.nix {inherit config;};
mkActivationLocalLink src dest
mkActivationLocalLink = import lib/mk_activation_local_link.nix {};
mkActivationLocalLink config src dest
#+end_src
or
#+begin_src nix
mkActivationLocalLink = import lib/mk_activation_local_link.nix {inherit config;};
mkActivationLocalLink "${pkgs.vscode-extensions.ms-vscode.cpptools}/share/vscode/extensions/ms-vscode.cpptools/bin/cpptools" "/home/tor/tmp/cpptools"
mkActivationLocalLink = import lib/mk_activation_local_link.nix {};
mkActivationLocalLink config "${pkgs.vscode-extensions.ms-vscode.cpptools}/share/vscode/extensions/ms-vscode.cpptools/bin/cpptools" "/home/tor/tmp/cpptools"
#+end_src
or if you have [[id:20221021T115008.329657][Arroyo Nix Support]]
#+begin_src nix
pkgs.lib.mkActivationLocalLink config "${pkgs.vscode-extensions.ms-vscode.cpptools}/share/vscode/extensions/ms-vscode.cpptools/bin/cpptools" "/home/tor/tmp/cpptools"
#+end_src

View File

@ -3,30 +3,29 @@
:ROAM_ALIASES: Mood
:END:
#+TITLE: Mood Log
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle mood-log.el
#+PROPERTY: header-args:yaml :tangle roles/endpoint/tasks/mood-log.yml
#+ARROYO_EMACS_MODULE: mood-log
#+ARCOLOGY_KEY: cce/mood-log
#+CCE_PRIORITY: 42
#+CCE_PREDICATE: t
#+ARROYO_MODULE_WANTS: cce/defdaily.org
Build [[id:bb9adc4a-63ca-4c92-b79a-cb013593b440][Practice Captures]] for recording my mood and graphing over long term [[id:cce/cce][CCE]]. It's funny, I never actually did this, and maybe this says more about how I am using this software: I have been using this as a [[id:6b306fe3-fbc4-4ba7-bfcb-089c0564f9c3][Topic Files]] within the [[id:Journal][Journal]]. So, this informed the design of the [[id:cce/defdaily][defdaily]] system, a system evolving.
#+ARROYO_EMACS_MODULE: mood-log
#+ARROYO_MODULE_WANTS: cce/dynamic-org-captures.org
#+ARCOLOGY_KEY: cce/mood-log
Build [[id:bb9adc4a-63ca-4c92-b79a-cb013593b440][Practice Captures]] for recording my mood and graphing over long term [[id:cce/cce][CCE]]. It's funny, I never actually did this, and maybe this says more about how I am using this software: I have been using this as a [[id:6b306fe3-fbc4-4ba7-bfcb-089c0564f9c3][Topic Files]] within the [[id:Journal][Journal]].
So, this informed the design of the [[id:cce/defdaily][defdaily]] system, a system evolving.
#+begin_src emacs-lisp
(provide 'cce/mood-log)
(with-eval-after-load 'cce/defdaily
(add-to-list 'defdaily-dailies
'("jm" "Mood Log"
:path-fn (progn (format-time-string "~/org/journal/daily/daily_%GW%V.org"))
:template (progn "~/org/cce/captures/mood-capture.org")
:header (progn (concat ":PROPERTIES:\n"
":ID: journal-" (format-time-string "%Gw%V") "\n"
":END:\n"
"#+TITLE: Journal " (format-time-string "%GW%V") "\n"
"#+FILETAGS: :Journal:\n"
"[[file:Journal.org][Journal]]\n")))))
(with-eval-after-load 'org-capture
(add-to-list 'org-capture-templates
(cce-def-dynamic-org-capture
"jm" "Mood Log"
:name "mood"
:capture-path-tmpl "~/org/journal/daily/daily_%GW%V.org"
:template-path "~/org/cce/captures/mood-capture.org")))
#+end_src
#+begin_src org :tangle captures/mood-capture.org :comments no

View File

@ -1,19 +1,21 @@
:PROPERTIES:
:ID: cce/moving_through_text_with_emacs
:ROAM_ALIASES: avy-jump ace-link
:END:
#+TITLE: Moving Through Text with Emacs
#+filetags: :Emacs:CCE:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle text-navigation.el
#+ARROYO_EMACS_MODULE: text-navigation
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+AUTO_TANGLE: t
#+ARCOLOGY_KEY: cce/text-navigation
#+ARCOLOGY_ALLOW_CRAWL: t
#+CCE_PREDICATE: t
#+CCE_PRIORITY: 10
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+begin_src emacs-lisp
(provide 'cce/text-navigation)
(use-package ace-link)
#+end_src
#+begin_src emacs-lisp
@ -22,7 +24,13 @@
("c" . avy-goto-char)
("w" . avy-goto-word)
("l" . avy-goto-line)
("j" . ace-link)
("o" . consult-imenu)))
(with-eval-after-load 'evil-leader
(evil-leader/set-key "i" #'avy-jump-map))
#+end_src
#+begin_src emacs-lisp
(provide 'cce/text-navigation)
#+end_src

View File

@ -45,9 +45,9 @@ Here the strings are basically just taken out of [[id:arroyo/nixos][Arroyo NixOS
../../nixos/audio.nix
../../nixos/boot.nix
../../nixos/cachix.nix
../../nixos/ccache.nix
../../nixos/clight.nix
../../nixos/fix-calibre-apsw.nix
../../nixos/direnv.nix
../../nixos/emacs.nix
../../nixos/fonts.nix
../../nixos/framework-laptop.nix
../../nixos/gnupg-pam.nix
@ -62,7 +62,7 @@ Here the strings are basically just taken out of [[id:arroyo/nixos][Arroyo NixOS
../../nixos/nixpkgs.nix
../../nixos/nm-online.nix
../../nixos/printing.nix
../../nixos/qemu.nix
../../nixos/rixpkgs.nix
../../nixos/rrix.nix
../../nixos/ssh_client.nix
../../nixos/syncthing.nix

View File

@ -3,12 +3,14 @@
:END:
#+TITLE: My Org-mode Agendas
#+filetags: :Emacs:CCE:Org:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle org-agenda.el
#+ARROYO_EMACS_MODULE: org-agenda
#+ARCOLOGY_KEY: cce/org-agenda
#+ARCOLOGY_ALLOW_CRAWL: t
#+CCE_PRIORITY: 41
#+ARROYO_EMACS_MODULE: org-agenda
#+ARROYO_MODULE_WANTS: cce/evil_mode.org
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
@ -22,22 +24,27 @@ My current PARA system simplifies down to a smaller number of files so that it c
I use [[id:cce/dynamic_agendas][Dynamic and fast agendas]] to define my =org-agenda-files= rather than defining a short list here, I hope it works and scales out.
My org-mode agendas can be much more simple than they have been, I think, because I've simplified my [[id:cce/org_tagging_principles][Tagging Principles]] and [[id:cce/project_management_in_org_mode][Project Management]] structure considerably. These pages describe the agendas I am implementing perhaps more fully than this page will, after all, this is merely how I slice views in to a running system.
My org-mode agendas can be much more simple than they have been, I think, because I've simplified my [[id:cce/org_tagging_principles][Tagging Principles]] and [[id:cce/project_management_in_org_mode][Project Management]] structure considerably. These pages describe the agendas I am implementing perhaps more fully than this page will, after all, this is only configuration.
- [[id:0e7562d3-799c-48bf-a7a6-a0adb7d464cf][Weekly Review]] agenda
- Shopping list functions
#+begin_src emacs-lisp
(setq org-agenda-skip-timestamp-if-done t
org-agenda-skip-scheduled-if-done t
org-agenda-skip-deadline-if-done t)
#+end_src
#+begin_src emacs-lisp
(evil-leader/set-key "a" #'org-agenda)
(defun cce/org-agenda (&optional todo)
"show the preferred agenda -- prefix opens a tag match todo list"
(interactive "P")
(org-agenda nil (if todo "M" "a")))
(use-package org-agenda
:ensure nil
:init
(defun cce/org-agenda (&optional todo)
"show the preferred agenda -- prefix opens a tag match todo list"
(interactive "P")
(org-agenda nil (if todo "M" "a")))
:custom
(org-agenda-window-setup 'only-window)
(org-agenda-skip-timestamp-if-done t)
(org-agenda-skip-scheduled-if-done t)
(org-agenda-skip-deadline-if-done t)
:commands
(org-agenda)
:bind
(:map evil-leader--default-map
("a" . #'org-agenda)))
#+end_src

View File

@ -22,12 +22,12 @@ NixGL builds little wrapper programs which use the system =libGL= or =nvidia= li
This plugs in to [[id:cce/cce][CCE]] [[id:128ab0e8-a1c7-48bf-9efe-0c23ce906a48][Hypermedia]] to make it somewhat more durable to create functional wrappers for nixGL:
#+begin_src nix :tangle ~/arroyo-nix/nixgl.nix
#+begin_src nix :tangle ~/arroyo-nix/lib/nixgl.nix
{ pkgs, stdenv, ... }:
{ name, package_name ? name, pkg ? null }:
let
nixGL = pkgs.callPackage ./nixgl-pkg.nix {};
nixGL = pkgs.nixGL;
pkg_to_shadow = if (isNull pkg)
then pkgs."${package_name}"
else pkg;
@ -44,11 +44,11 @@ pkgs.symlinkJoin {
}
#+end_src
#+begin_src nix :tangle ~/arroyo-nix/nixgl-pkg.nix
#+begin_src nix :tangle ~/arroyo-nix/pkgs/nixgl.nix
{ stdenv, pkgs ? import <nixpkgs> {}, ... }:
let
nixGLghOptions = (import ./versions.nix {}).nixGL;
nixGLghOptions = pkgs.lib.pkgVersions.nixGL;
nixGLgh = pkgs.callPackage nixGLghOptions {};
nixGL = (pkgs.callPackage nixGLgh {}).nixGLIntel;
in

View File

@ -146,9 +146,9 @@ rec {
uid = 1001;
group = "humans";
initialPassword = "doomguyjohnson";
openssh.authorizedKeys.keys = import ../lib/public-keys.nix;
openssh.authorizedKeys.keys = pkgs.lib.publicKeys.rrix;
};
users.users.root.openssh.authorizedKeys.keys = import ../lib/public-keys.nix;
users.users.root.openssh.authorizedKeys.keys = pkgs.lib.publicKeys.rrix;
services.xserver.enable = true;
services.xserver.displayManager = {

View File

@ -6,12 +6,13 @@
#+filetags: :Project:CCE:
#+PROPERTY: header-args :mkdirp yes
#+ARCOLOGY_KEY: cce/nixos-installer
#+ARCOLOGY_ALLOW_CRAWL: t
There are a few "Supported" methods for installing NixOS: you can use the [[https://nixos.org/manual/nixos/stable/index.html#sec-installation][installer image]] to manually partition and prepare a system, you can [[https://nixos.org/manual/nixos/stable/index.html#sec-installing-from-other-distro][LUSTRATE]] an existing Linux installation with Nix installed on it, or you can use a [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec script]] generally referred to as =justdoit= which is distributed as a script which boots the system in to a NixOS system with a partitioning script which blindly partitions the =rootDevice= and installs NixOS on to that partition. I spent some time this month trying to get the [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec method]] working and it was pretty frustrating. The auto-partitioner and the easy setup through =kexec.justdoit= is nice, but getting the =kexec= working out of the box was frustrating[fn:1], so for now I'll stick with ISO and ISO-as-SD with the =justdoit= work included.
To build an ISO image: [[shell:pushd nixlib/kexec && nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=configuration.nix &]] The file will get symlinked to [[file:nixlib/kexec/result/iso]].
To build an ISO image: [[shell:pushd ~/arroyo-nix/kexec && nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=configuration.nix &]] The file will get symlinked to [[file:~/arroyo-nix/kexec/result/iso]].
* [[id:cce/my_nixos_configuration][My NixOS configuration]]
* Configuring the Installer
@ -21,46 +22,92 @@ This record describes a basic NixOS installation which runs an installer script
#+begin_src nix :tangle ~/arroyo-nix/kexec/configuration.nix :noweb yes
{ lib, pkgs, config, ... }:
with lib;
{
imports = [
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
./kexec.nix ./justdoit.nix
];
let
overlayFn = import <arroyo/overlay.nix>;
pkgs' = overlayFn pkgs {};
in with lib;
{
imports = [
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
./kexec.nix ./justdoit.nix
];
boot.supportedFilesystems = [ "zfs" ];
boot.loader.grub.enable = false;
boot.kernelParams = [
"console=ttyS0,115200" # allows certain forms of remote access, if the hardware is setup right
"panic=30" "boot.panic_on_fail" # reboot the machine upon fatal boot issues
];
systemd.services.sshd.wantedBy = mkForce [ "multi-user.target" ];
networking.hostName = "kexec";
# for the children
networking.wireless.enable = false;
networking.networkmanager.enable = true;
# hahaha! yes!
users.users.root.openssh.authorizedKeys.keys = import ../public-keys.nix;
nixpkgs.overlays = [
(overlayFn)
];
hardware.video.hidpi.enable = true;
boot.supportedFilesystems = [ "zfs" ];
boot.loader.grub.enable = false;
boot.kernelParams = [
"console=ttyS0,115200" # allows certain forms of remote access, if the hardware is setup right
"panic=30" "boot.panic_on_fail" # reboot the machine upon fatal boot issues
];
systemd.services.sshd.wantedBy = mkForce [ "multi-user.target" ];
networking.hostName = "kexec";
# for the children
networking.wireless.enable = false;
networking.networkmanager.enable = true;
# hahaha! yes!
users.users.root.openssh.authorizedKeys.keys = pkgs'.lib.publicKeys.rrix;
isoImage = {
includeSystemBuildDependencies = false;
makeUsbBootable = true;
};
hardware.video.hidpi.enable = true;
kexec.justdoit = {
hostName = "tres-ebow";
rootDevice = "/dev/nvme0n1";
swapSize = 16384;
poolName = "tres-ebow";
bootType = "vfat";
isoImage = {
includeSystemBuildDependencies = false;
makeUsbBootable = true;
};
luksEncrypt = true;
uefi = true;
nvme = true;
};
}
kexec.justdoit = {
hostName = "terra-firma";
rootDevice = "/dev/sde";
swapSize = 16384;
poolName = "terra-firma";
bootType = "vfat";
bootSize = 1024;
luksEncrypt = false;
uefi = false;
nvme = false;
zfsPools = {
terra-firma = {
devices = "$ROOT_DEVICE";
volumes = {
root = {
snapshot = false;
compression = false;
mountPoint = "/";
};
nix = {
snapshot = false;
compression = false;
mountPoint = "/nix";
};
};
};
tank = {
devices = "mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd";
volumes = {
home = {
snapshot = true;
compression = "lz4";
mountPoint = "/home";
};
media = {
snapshot = true;
compression = "lz4";
mountPoint = "/media";
};
srv = {
snapshot = true;
compression = false;
mountPoint = "/srv";
};
};
};
};
};
}
#+end_src
That [[id:09779ac0-4d5f-40db-a340-49595c717e03][noweb]] call [[(gen_call)]] gets my public ssh key this way. i should and could and will define this in my [[id:cce/ssh_configuration][SSH Configuration]]:
@ -80,18 +127,16 @@ LMAO there must be a way to get [[(tr)]]'s awk output on to one line but ORS doe
A subset of [[id:cce/my_nixos_configuration][My NixOS configuration]], enough to get the rest [[id:cce/morph][Morph]] deployed to it. Head over there for in-depth discussion.
#+begin_src nix :tangle ~/arroyo-nix/kexec/target-config.nix :noweb yes
{ pkgs, ... }:
{ config, pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ./generated.nix ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_5_14;
# boot.loader.systemd-boot.enable = true;
boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
services.openssh.enable = true;
boot.zfs.devNodes = "/dev/mapper"; # (ref:devNodes)
boot.zfs.forceImportRoot = true;
boot.kernelParams = [
@ -122,39 +167,6 @@ A subset of [[id:cce/my_nixos_configuration][My NixOS configuration]], enough to
users.users.root.openssh.authorizedKeys.keys = <<get_ssh_pubkey()>> # (ref:gen_call)
hardware.video.hidpi.enable = true;
# services.xserver.xrandrHeads = [
# {
# output = "eDP-1";
# primary = true;
# monitorConfig = "Option \"Rotate\" \"right\"";
# }
# ];
# services.xserver.extraConfig = ''
# Section "InputClass"
# Identifier "calibration"
# MatchProduct "Goodix Capacitive TouchScreen"
# Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1"
# EndSection
# '';
services.xserver.libinput.touchpad.scrollMethod = "button";
# thinkpad
# services.xserver.libinput.touchpad.scrollButton = 2;
# gpd:
# services.xserver.libinput.touchpad.scrollButton = 3;
# use plasma5
services.xserver.desktopManager.plasma5.enable = true;
# auto login
services.xserver.enable = true;
services.xserver.displayManager = {
autoLogin.enable = true;
autoLogin.user = "rrix";
defaultSession = "plasma";
lightdm.enable = true;
};
services.fprintd.enable = true;
# networking
networking.wireless.enable = false;
@ -167,21 +179,7 @@ A subset of [[id:cce/my_nixos_configuration][My NixOS configuration]], enough to
powerManagement.enable = true;
environment.systemPackages = (with pkgs.libsForQt5; [
breeze-gtk
breeze-qt5
kdesu
plasma-systemmonitor
kio-extras
xdg-desktop-portal-kde
systemsettings
bluedevil
pkgs.filelight
pkgs.vim
pkgs.partition-manager
pkgs.konsole
]);
}
#+end_src
@ -248,6 +246,51 @@ in {
default = false;
description = "rootDevice is nvme";
};
zfsPools = mkOption {
type = types.attrs;
default = {
"${cfg.poolName}" = {
devices = "$ROOT_DEVICE";
volumes = {
nix = { mountPoint = "/nix"; };
root = { mountPoint = "/"; };
};
};
};
description = "Extra ZFS pools to create and mount";
example = {
kiddypool = {
devices = "$ROOT_DEVICE";
volumes = {
nix = {
snapshot = false;
compression = false;
mountPoint = "/nix";
};
root ={
snapshot = false;
compression = "lz4";
mountPoint = "/";
};
};
};
deepend = {
devices = "mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd";
volumes = {
home = {
snapshot = true;
compression = "lz4";
mountPoint = "/home";
};
media = {
snapshot = true;
compression = false;
mountPoint = "/media";
};
};
};
};
};
};
};
config = let
@ -256,6 +299,53 @@ in {
vfat = "mkfs.vfat $NIXOS_BOOT -n NIXOS_BOOT";
zfs = "";
};
mkZfsCreateCmd =
(poolName: volName: vol:
"zfs create ${lib.optionalString (lib.isString vol.compression) "-o compression=${vol.compression}"} -o mountpoint=legacy ${poolName}/${volName}");
zfsPoolSetup = concatStringsSep "\n"
(lib.mapAttrsToList
(poolName: pool:
lib.concatStringsSep "\n"
(["zpool create -f -o altroot=/mnt/${poolName} ${poolName} ${pool.devices}"] ++
(lib.mapAttrsToList (mkZfsCreateCmd poolName) pool.volumes)))
cfg.zfsPools);
mkSnapshotCmd = (poolName: volName: vol:
"zfs set com.sun:auto-snapshot=${boolToString vol.snapshot} ${poolName}/${volName}");
zfsPoolSnapshotRules = concatStringsSep "\n"
(lib.mapAttrsToList
(poolName: pool:
lib.concatStringsSep "\n"
(["zfs set com.sun:auto-snapshot=false ${poolName}"] ++
(lib.mapAttrsToList (mkSnapshotCmd poolName) pool.volumes)))
cfg.zfsPools);
# mounts need to be sorted so that /mnt doesn't occlude /mnt/home etc later on...
mkMountCmd = (poolName: volName: vol:
{sortKey = "/mnt${vol.mountPoint}";
theCommand = "mkdir -p /mnt${vol.mountPoint} && mount -t zfs ${poolName}/${volName} /mnt${vol.mountPoint}";});
mkZfsPoolMountCommands = cmd:
(lists.toposort (p1: p2: hasPrefix p1.sortKey p2.sortKey)
(flatten
(mapAttrsToList
(poolName: pool:
(mapAttrsToList (cmd poolName) pool.volumes))
cfg.zfsPools)));
zfsPoolMountCommands =
concatStringsSep "\n"
(map (pair: pair.theCommand)
(mkZfsPoolMountCommands mkMountCmd).result);
mkUmountCmd = (poolName: volName: vol:
{sortKey = "/mnt${vol.mountPoint}";
theCommand = "umount /mnt${vol.mountPoint}";});
zfsPoolUmountCommands =
concatStringsSep "\n"
(reverseList
(map (pair: pair.theCommand)
(mkZfsPoolMountCommands mkUmountCmd).result));
in lib.mkIf true {
system.build.justdoit = pkgs.writeScriptBin "justdoit" ''
#!${pkgs.stdenv.shell}
@ -284,23 +374,13 @@ in {
export SWAP_DEVICE=${cfg.rootDevice}${x}2
''}
${lib.optionalString (cfg.bootType != "zfs") "export NIXOS_BOOT=${cfg.rootDevice}${x}1"}
mkdir -p /mnt
${mkBootTable.${cfg.bootType}}
mkswap $SWAP_DEVICE -L NIXOS_SWAP
zpool create -o ashift=12 -o altroot=/mnt ${cfg.poolName} $ROOT_DEVICE
zfs create -o mountpoint=legacy ${cfg.poolName}/root
zfs create -o mountpoint=legacy ${cfg.poolName}/home
zfs create -o mountpoint=legacy ${cfg.poolName}/nix
zfs create -o mountpoint=legacy ${cfg.poolName}/media
zfs set com.sun:auto-snapshot=false ${cfg.poolName}
zfs set com.sun:auto-snapshot=true ${cfg.poolName}/home
zfs set com.sun:auto-snapshot=true ${cfg.poolName}/media
${lib.optionalString (cfg.zfsPools != {}) zfsPoolSetup}
${lib.optionalString (cfg.zfsPools != {}) zfsPoolSnapshotRules}
swapon $SWAP_DEVICE
mount -t zfs ${cfg.poolName}/root /mnt/
mkdir /mnt/{home,nix,boot,media}
mount -t zfs ${cfg.poolName}/home /mnt/home/
mount -t zfs ${cfg.poolName}/nix /mnt/nix/
mount -t zfs ${cfg.poolName}/media /mnt/media/
${lib.optionalString (cfg.zfsPools != {}) zfsPoolMountCommands}
mkdir -p /mnt/boot
${lib.optionalString (cfg.bootType != "zfs") "mount $NIXOS_BOOT /mnt/boot/"}
nixos-generate-config --root /mnt/
hostId=$(echo $(head -c4 /dev/urandom | od -A none -t x4))
@ -313,15 +393,22 @@ in {
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.device = "nodev";
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.enable = true;
'' else ''
boot.loader.grub.enable = true;
# boot.loader.grub.device = "${cfg.rootDevice}";
boot.loader.grub.device = "/dev/sdf";
''}
networking.hostId = "$hostId"; # required for zfs use
${lib.optionalString cfg.luksEncrypt ''
${if cfg.luksEncrypt ''
boot.zfs.devNodes = "/dev/mapper"; # (ref:devNodes)
boot.initrd.luks.devices = {
"swap" = { name = "swap"; device = "${cfg.rootDevice}${x}2"; preLVM = true; };
"root" = { name = "root"; device = "${cfg.rootDevice}${x}3"; preLVM = true; };
};
'' else ''
boot.zfs.devNodes = "/dev/disk/by-uuid"; # (ref:devNodes)
''}
}
EOF
@ -329,7 +416,8 @@ in {
export NIX_PATH="home-manager=/nix/var/nix/profiles/per-user/root/channels/home-manager/:$NIX_PATH"
nix-channel --update
nixos-install
umount /mnt/home /mnt/nix ${lib.optionalString (cfg.bootType != "zfs") "/mnt/boot"} /mnt
${lib.optionalString (cfg.bootType != "zfs") "umount /mnt/boot"}
${lib.optionalString (cfg.zfsPools != {}) zfsPoolUmountCommands}
zpool set cachefile=none ${cfg.poolName}
zpool export ${cfg.poolName}
swapoff $SWAP_DEVICE

View File

@ -7,7 +7,6 @@
#+filetags: :Project:CCE:
#+ARCOLOGY_KEY: cce/org-roam-sbl
#+ARCOLOGY_KEY: cce/org-roam-rename-file
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle org-roam-sbl.el

View File

@ -39,7 +39,7 @@ i use picom, a simple X11 compositor that works with [[id:cce/exwm][EXWM]] or [[
#+begin_src nix :tangle ~/arroyo-nix/hm/picom.nix
{ pkgs, ... }:
let mkNixGLWrapper = pkgs.callPackage ../nixgl.nix {};
let mkNixGLWrapper = pkgs.lib.mkNixGLWrapper;
in
{
home.packages = [(mkNixGLWrapper { name="picom"; pkg=pkgs.picom; })];

View File

@ -20,6 +20,8 @@
(aggressive-indent-mode -1)
(evil-lispy-mode))
; (parinfer-mode))
(defun cce/elisp-mode-hook ()
(setq-local tab-width 8))
(use-package parinfer
:ensure nil
@ -31,6 +33,7 @@
(clojure-mode . cce/lisp-like-mode-hook)
(common-lisp-mode . cce/lisp-like-mode-hook)
(emacs-lisp-mode . cce/lisp-like-mode-hook)
(emacs-lisp-mode . cce/elisp-mode-hook)
(lisp-mode . cce/lisp-like-mode-hook)
(scheme-mode . cce/lisp-like-mode-hook))
#+end_src

View File

@ -7,16 +7,18 @@
This [[id:cce/cce][CCE]] module describes my user and SSH keys for [[id:cce/my_nixos_configuration][My NixOS configuration]].
#+begin_src nix :tangle ~/arroyo-nix/lib/public-keys.nix
[
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt7MT45sX7yML+aUqWUC2RZdxhVpoGz2XLEDes/h0HnvwkV8ZURSBAlkwSAH5Sd2c6nyego0GsvkOUppeqoKtacMz6JK5iut3hMWiR6NcSZfG7r8NR5/WrPpWwGtU7cRkkxVKM1PwtYk0crQTCVg5G9+9quKtGkEQ33ile5XSr2VVO44hWafZlSLPFPXTLvxgm7MN9E28k7hVeDBIYppM6VnWz5xsbhboKJMSHU8SFPQKw2GqaugDqokeS0SbyCj7poj1uyijQx3hw0RTpzy1XrmCFu4HmT7qgpESi+1aMObItezKyHy6zBh58DF3Hu/T3tqFglR6XbyfsR3IHyTVz rrix"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqgZ0+94KYFgP2WM0uHHG0daLkEh1P/n2a7OzL9s1kZzOoY/RHyfah+RJD2dCUTDKSrywmHpkKnr7MbJW45ZTY9Epf2szTDVcvqQP41acm+ACjD3CrWgeHTtwLwtBTnVj+jbskWEI120mdrXF9OrtMHtBK3lv8Dq+P6eyd2JalKCHceSLZ9PRXvPDSNjqjBBFfu9YjDTKH0jay3AQy83wETBPXTMHUZERPIC32toTxYaQWYeO2BOS5pQ8qQZNzPuI4WHtsYLPOsDqxCycNnh07WCB09S/DoMu0xFyD7U2lRVDjEDN0jW0VF3s4MhJ42iwCD/HCvwnZrGXuqD4hjM3w7rwqwajB+/APdJAfvd7ia0UJUGc0445ZUpT4l0PkDILYZZN8ecLPvy7EixTwmZblU/fjGZG9/rtKEJbVxE38wFZo1HYFB20//EmbhdlSwK0wWLuPEYFYylzea7Mssz2Lyan0St3pL1Hx5MZePMQMXvm/yON9tsZjv2HIaOOlV1s= rrix@meadow-crush"
]
{
rrix = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt7MT45sX7yML+aUqWUC2RZdxhVpoGz2XLEDes/h0HnvwkV8ZURSBAlkwSAH5Sd2c6nyego0GsvkOUppeqoKtacMz6JK5iut3hMWiR6NcSZfG7r8NR5/WrPpWwGtU7cRkkxVKM1PwtYk0crQTCVg5G9+9quKtGkEQ33ile5XSr2VVO44hWafZlSLPFPXTLvxgm7MN9E28k7hVeDBIYppM6VnWz5xsbhboKJMSHU8SFPQKw2GqaugDqokeS0SbyCj7poj1uyijQx3hw0RTpzy1XrmCFu4HmT7qgpESi+1aMObItezKyHy6zBh58DF3Hu/T3tqFglR6XbyfsR3IHyTVz rrix"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqgZ0+94KYFgP2WM0uHHG0daLkEh1P/n2a7OzL9s1kZzOoY/RHyfah+RJD2dCUTDKSrywmHpkKnr7MbJW45ZTY9Epf2szTDVcvqQP41acm+ACjD3CrWgeHTtwLwtBTnVj+jbskWEI120mdrXF9OrtMHtBK3lv8Dq+P6eyd2JalKCHceSLZ9PRXvPDSNjqjBBFfu9YjDTKH0jay3AQy83wETBPXTMHUZERPIC32toTxYaQWYeO2BOS5pQ8qQZNzPuI4WHtsYLPOsDqxCycNnh07WCB09S/DoMu0xFyD7U2lRVDjEDN0jW0VF3s4MhJ42iwCD/HCvwnZrGXuqD4hjM3w7rwqwajB+/APdJAfvd7ia0UJUGc0445ZUpT4l0PkDILYZZN8ecLPvy7EixTwmZblU/fjGZG9/rtKEJbVxE38wFZo1HYFB20//EmbhdlSwK0wWLuPEYFYylzea7Mssz2Lyan0St3pL1Hx5MZePMQMXvm/yON9tsZjv2HIaOOlV1s= rrix@meadow-crush"
];
}
#+end_src
#+ARROYO_NIXOS_MODULE: nixos/rrix.nix
#+begin_src nix :tangle ~/arroyo-nix/nixos/rrix.nix
{ ... }:
{ pkgs, ... }:
{
i18n.defaultLocale = "en_US.UTF-8";
@ -34,8 +36,8 @@ This [[id:cce/cce][CCE]] module describes my user and SSH keys for [[id:cce/my_n
uid = 1000;
group = "humans";
initialPassword = "changeme!";
openssh.authorizedKeys.keys = import ../lib/public-keys.nix;
openssh.authorizedKeys.keys = pkgs.lib.publicKeys.rrix;
};
users.users.root.openssh.authorizedKeys.keys = import ../lib/public-keys.nix;
users.users.root.openssh.authorizedKeys.keys = pkgs.lib.publicKeys.rrix;
}
#+end_src

View File

@ -1,18 +1,18 @@
:PROPERTIES:
:ID: cce/selectrum_etc
:END:
#+TITLE: Selectrum, etc
#+TITLE: Completing Read Replacement and Extension
#+filetags: :CCE:
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+AUTO_TANGLE: t
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle selectrum.el :comments none
#+ARCOLOGY_KEY: cce/selectrum
#+ARCOLOGY_KEY: cce/completing-read
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_EMACS_MODULE: selectrum
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
high-chaos organization here... replacing [[id:cce/ivy_and_counsel][Ivy and Counsel]] and [[id:cce/ivy_posframe][Ivy Posframe]] with the new hotness, this constellation of packages:
@ -23,49 +23,30 @@ high-chaos organization here... replacing [[id:cce/ivy_and_counsel][Ivy and Coun
:END:
#+begin_src emacs-lisp
(use-package selectrum
(use-package vertico
:init
(vertico-mode)
:bind
("C-x C-z" . 'vertico-repeat))
(use-package prescient
:after (vertico)
:config
(selectrum-mode +1)
(setq selectrum-highlight-candidates-function #'orderless-highlight-matches)
(global-set-key (kbd "C-x C-z") #'selectrum-repeat))
(prescient-persist-mode +1)
(defun vertico-prescient-remember ()
"Remember the chosen candidate with Prescient."
(when (>= vertico--index 0)
(prescient-remember
(substring-no-properties
(nth vertico--index vertico--candidates)))))
(advice-add #'vertico-insert :after #'vertico-prescient-remember)
:custom
(vertico-sort-function #'prescient-completion-sort))
(use-package orderless
:custom (completion-styles '(orderless)))
(use-package selectrum-prescient
:after (selectrum)
:config
(setq selectrum-prescient-enable-filtering nil)
(selectrum-prescient-mode +1)
(prescient-persist-mode +1))
#+end_src
* [[https://github.com/muffinmad/emacs-mini-frame][Mini Frame]]
:PROPERTIES:
:ID: mini-frame
:ROAM_ALIASES: "Mini Frame"
:END:
The only interesting things here is that i set =parent-frame= to =nil= similar to how i have to configure [[id:cce/ivy_posframe][Ivy Posframe]] -- this is for [[id:cce/exwm][EXWM]] windowing support. I also disable the mini-frame in a bunch of spots.
#+begin_src emacs-lisp :tangle no
(use-package mini-frame
:config
(mini-frame-mode +1)
(setq resize-mini-frames t)
(setq mini-frame-show-parameters
'((parent-frame . nil)
(top . 25)
(height . 1)
(width . 0.7)
(left . 0.5)))
(dolist (cmd '(calcDigit-start
background-shell-command
evil-ex
consult-line
org-fc-type-text-input-setup
consult-ripgrep))
(add-to-list 'mini-frame-ignore-commands cmd)))
:after (prescient)
:custom
(completion-styles '(prescient orderless)))
#+end_src
* [[https://github.com/minad/consult][Consult]]
@ -164,3 +145,33 @@ via [[https://github.com/minad/consult/wiki][consult wiki]], to prevent Consult
:demand t)
#+end_src
* [[https://github.com/muffinmad/emacs-mini-frame][Mini Frame]]
:PROPERTIES:
:ID: mini-frame
:ROAM_ALIASES: "Mini Frame"
:END:
: this is disabled because it doesn't work well with xmonad.
The only interesting things here is that i set =parent-frame= to =nil= similar to how i have to configure [[id:cce/ivy_posframe][Ivy Posframe]] -- this is for [[id:cce/exwm][EXWM]] windowing support. I also disable the mini-frame in a bunch of spots.
#+begin_src emacs-lisp :tangle no
(use-package mini-frame
:config
(mini-frame-mode +1)
(setq resize-mini-frames t)
(setq mini-frame-show-parameters
'((parent-frame . nil)
(top . 25)
(height . 1)
(width . 0.7)
(left . 0.5)))
(dolist (cmd '(calcDigit-start
background-shell-command
evil-ex
consult-line
org-fc-type-text-input-setup
consult-ripgrep))
(add-to-list 'mini-frame-ignore-commands cmd)))
#+end_src

View File

@ -53,7 +53,7 @@ Anki is the go-to digital solution for general study these days, I use org-drill
#+ARROYO_HOME_EPKGS: overrides/org-fc.nix
#+begin_src nix :tangle ~/arroyo-nix/overrides/org-fc.nix
org-fc = let
versions = import ../versions.nix {};
versions = pkgs.lib.pkgVersions;
in epkgs.melpaBuild {
pname = "org-fc";
version = "20220823.2107";
@ -77,8 +77,6 @@ in epkgs.melpaBuild {
};
#+end_src
* NEXT set up org-fc in [[id:cce/version_pins][Nix Version Pins]]
* Some Custom SRS contexts
Sometimes it's nice to focus on one thing at a time. =org-fc= gives us custom contexts and here's how I use it:

View File

@ -43,7 +43,7 @@ let
in
let
versions = (import ../versions.nix {});
versions = lib.pkgVersions;
in
stdenv.mkDerivation rec {
pname = "tabfs";

View File

@ -59,7 +59,7 @@ I use [[https://www.passwordstore.org/][the standard unix password manager]], =p
};
home.activation.password-store =
import ../lib/mk_activation_local_link.nix {inherit config;} # symlink helper (ref:activation_local_link)
pkgs.lib.mkActivationLocalLink config # symlink helper (ref:activation_local_link)
"~/sync/password-store"
".password-store";

726
vpype-vsketch.org Normal file
View File

@ -0,0 +1,726 @@
:PROPERTIES:
:ID: 20220506T155821.572980
:END:
#+title: Back on to the Plotter Train with vsketch
#+filetags: :Project:
#+AUTO_TANGLE: t
* What are =vsketch= and =vpype=
:PROPERTIES:
:ID: 20220506T155905.773161
:ROAM_REFS: https://github.com/abey79/vpype/ https://vsketch.readthedocs.io/en/latest/index.html
:ROAM_ALIASES: "vsketch and vpype" vpype vsketch
:END:
=vsketch= is a plotter-centric [[id:cce/python][Python]] [[id:80864655-e79c-48d3-825c-d311125a3a92][Generative Art]] library with an API based loosely around Processing.
=vpype= is a post-processing library which helps you make designs which plot better.
I do all my interactive art in one place so that i can have =nix-shell= etc in there.. Start a shell:
#+begin_src emacs-lisp
(setq cce/vsketch-dir "~/Code/plotting/")
(let ((default-directory cce/vsketch-dir))
(shell "*vsketch*"))
#+end_src
* Packaging =vpype= and =vsketch= in [[id:20221021T115008.329657][Arroyo Nix Pkgs]]
I previously maintained these in a [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][nixpkgs]] fork at [[https://github.com/rrix/nixpkgs/tree/rrix/vpype-vsketch][github.com/rrix/nixpkgs@rrix/vpype-vsketch]] but maintaining that and dealing with the occasional merge conflicts is not worth just making [[id:20221021T115008.329657][Arroyo Nix]] an overlay that adds these packages to the =nixpkgs= namespace.
** vpype + extensions
=vpype= has a number of extensions available, we'll set them all up in here; i wish I could figure out why I can't =callPackage= in these dependencies which are defined in the overlay...
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/default.nix :mkdirp yes
{ lib
, callPackage
, fetchFromGitHub
, pnoise
, svgelements
, watchfiles
, qasync
, hnswlib
}:
lib.makeExtensible (self: {
vpype-minimal = callPackage ./common.nix rec {
inherit pnoise; inherit svgelements;
};
vpype = callPackage ./common.nix rec {
inherit pnoise; inherit svgelements;
plugins = [ self.hatched self.flow-imager self.vectrace ];
};
# vsketch uses vpype, not a vpype plugin
vsketch = callPackage ./vsketch.nix {
inherit pnoise; inherit qasync; inherit watchfiles;
vpype = self.vpype;
};
# plugins
hatched = callPackage ./hatched.nix { vpype = self.vpype-minimal; };
flow-imager = callPackage ./flow-imager.nix {
inherit hnswlib;
vpype = self.vpype-minimal;
};
vectrace = callPackage ./vectrace.nix {
inherit svgelements;
vpype = self.vpype-minimal;
};
})
#+end_src
*** vpype package
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/common.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, asteval
, cachetools
, click
, multiprocess
, numpy
, pnoise
, scipy
, setuptools
, shapely
, svgelements
, svgwrite
, tomli
, pkgs
# gui dependencies
, glcontext
, matplotlib
, moderngl
, pillow
, pyside2
, poetry-core
, plugins ? []
}:
buildPythonPackage rec {
pname = "vpype";
version = "1.11.0-alpha.1";
src = fetchFromGitHub {
# https://github.com/abey79/vpype
owner = "abey79";
repo = "vpype";
rev = "6a099b7b4f3d756f7fa8052049be365d0314c5ee";
sha256 = "sha256-C15bO+Z5u29mfGULgK173AYWnYlPesdzrxPqb0j/goc=";
};
format = "pyproject";
propagatedBuildInputs = [
cachetools click multiprocess numpy pnoise shapely scipy setuptools
svgelements svgwrite tomli asteval
matplotlib glcontext moderngl pillow pyside2
poetry-core
] ++ plugins;
postPatch = ''
substituteInPlace pyproject.toml --replace 'pnoise = "^0.1.0"' 'pnoise = "^0.2.0"'
substituteInPlace pyproject.toml --replace 'setuptools = "^51.0.0"' 'setuptools = "^61.0.0"'
'';
postInstall = ''
rm $out/lib/python*/site-packages/LICENSE
rm $out/lib/python*/site-packages/README.md
'';
meta = with lib; {
description = "The Swiss Army knife of vector graphics for pen plotters";
homepage = "https://github.com/abey79/vpype/";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
*** hatched
:PROPERTIES:
:ID: 20221022T234938.254085
:END:
:LOGBOOK:
- State "DONE" from "INPROGRESS" [2022-10-23 Sun 15:34]
- State "INPROGRESS" from [2022-10-22 Sat 23:49]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/hatched.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, poetry-core
, click
, scikitimage
, svgwrite
, opencv4
, shapely
, matplotlib
, vpype
, qt5
}:
buildPythonPackage rec {
pname = "hatched";
version = "0.3.0a0";
src = fetchFromGitHub {
owner = "plottertools";
repo = "hatched";
rev = "6fbaf9baf5f71ee954384e8e61c8bdd469048d07";
sha256 = "0wq3dk6x732mndq3n85f6cmdqpnx5s102p15d155j9pbgz4nm1xa";
# date = "2022-10-17T15:28:37+02:00";
};
doCheck = false;
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = [
click
matplotlib
opencv4
scikitimage
shapely
svgwrite
];
buildInputs = [
vpype
];
postPatch = ''
substituteInPlace setup.py --replace '"opencv-python-headless"' '"opencv"'
'';
meta = with lib; {
description = "Library and vpype plug-in to convert images to plotter-friendly, hatched patterns.";
homepage = "https://github.com/plottertools/hatched";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
*** INPROGRESS vpype-flow-imager
:PROPERTIES:
:ID: 20221022T234940.053367
:END:
:LOGBOOK:
- State "INPROGRESS" from "NEXT" [2022-10-22 Sat 23:49]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/flow-imager.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, click
, hnswlib
, opencv4
, opensimplex
, pillow
, scikitimage
, tqdm
, vpype
}:
buildPythonPackage rec {
pname = "vpype-flow-imager";
version = "1.0.7";
src = fetchFromGitHub {
owner = "serycjon";
repo = "vpype-flow-imager";
rev = "0a419e46be6440ad779516eb647c1396726048d2";
sha256 = "13z1xbdfxpsrmwdbh1y901rnz733khblkvlqxlcr8ph5b5nhlq6n";
# date = "2022-06-25T23:32:35+02:00";
};
doCheck = false;
propagatedBuildInputs = [
click
hnswlib
opencv4
opensimplex
pillow
scikitimage
tqdm
];
buildInputs = [
vpype
];
postPatch = ''
substituteInPlace setup.py --replace "'opencv-python-headless'" "'opencv'" \
--replace "'opensimplex==0.4'" "'opensimplex>=0.4,<0.5'"
'';
meta = with lib; {
description = "vpype plug-in to convert images to flow field line art inspired by Sean M. Puckett's work and the \"Creating evenly-spaced streamlines of arbitrary density\" paper by Jobard and Lefer.";
homepage = "https://github.com/serycjon/vpype-flow-imager";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
*** INPROGRESS vpype-vectrace
:LOGBOOK:
- State "INPROGRESS" from "NEXT" [2022-10-23 Sun 15:34]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/vectrace.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, click
, pillow
, svgelements
, vpype
}:
buildPythonPackage rec {
pname = "vpype-vectrace";
version = "0.1.2";
src = fetchFromGitHub {
owner = "tatarize";
repo = "vpype-vectrace";
rev = "de7341865b304c5842ab9f33afadb476e5a8b588";
sha256 = "1sf3kky7qhmpma0ga0l0w2fxfqgi1688v2s107ij5c9mdj1p05z6";
# date = "2022-04-14T10:35:27-07:00";
};
doCheck = false;
propagatedBuildInputs = [
click
pillow
svgelements
];
buildInputs = [
vpype
];
meta = with lib; {
description = "Vpype plugin for vector tracing";
homepage = "https://github.com/tatarize/vpype-vectrace";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
*** NEXT vpype-perspective
*** NEXT vpype-pixelart
** vsketch
:LOGBOOK:
- State "INPROGRESS" from [2022-10-21 Fri 18:48]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/vpype/vsketch.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, poetry-core
, colorama
, cookiecutter
, matplotlib
, multiprocess
, numpy
, pnoise
, pyside2
, qasync
, shapely
, vpype
, watchfiles
, qt5
}:
let
vpype-rev = "6a099b7b4f3d756f7fa8052049be365d0314c5ee";
in
buildPythonPackage rec {
pname = "vsketch";
version = "1.0.0-alpha.0";
src = fetchFromGitHub {
owner = "abey79";
repo = "vsketch";
rev = "1e9ebc540a3ef873d39e04e728a8e96a3faedb80";
sha256 = "1s3pjrfp1hcsyxfg0dr4xms8qhp4k4gyhzfvy67mwwk0bbhps41s";
# date = "2022-06-27T11:14:11+02:00";
};
format = "pyproject";
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = [
pnoise qasync watchfiles
shapely numpy pyside2
colorama cookiecutter matplotlib multiprocess
poetry-core
vpype
];
postPatch = ''
substituteInPlace pyproject.toml --replace 'vpype = {extras = ["all"], git = "https://github.com/abey79/vpype", rev = "${vpype-rev}"}' 'vpype = "^1.11.0a0"' \
--replace 'Shapely = {extras = ["vectorized"], version = "1.8.2"}' 'Shapely = {extras = ["vectorized"], version = "1.8.4"}'
sed -i '/PySide2/d' pyproject.toml # no idea why there isnt a dist-info written...
'';
dontWrapQtApps = true;
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
postInstall = ''
rm $out/lib/python*/site-packages/LICENSE
rm $out/lib/python*/site-packages/README.md
'';
meta = with lib; {
description = "Plotter generative art environment";
homepage = "https://github.com/abey79/vsketch/";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
** Dependency packages
*** NEXT pyside6 and upgrade vsketch version
*** pnoise
:LOGBOOK:
- State "DONE" from "INPROGRESS" [2022-10-21 Fri 15:07]
- State "INPROGRESS" from "NEXT" [2022-10-21 Fri 15:05]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/pnoise.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, numpy
}:
buildPythonPackage rec {
version = "0.2.0";
src = fetchFromGitHub {
owner = "plottertools";
repo = "pnoise";
rev = version;
sha256 = "sha256-JwWzLvgCNSLRs/ToZNFH6fN6VLEsQTmsgxxkugwjA9k=";
};
pname = "pnoise";
propagatedBuildInputs = [ numpy ];
meta = with lib; {
description = "pnoise is a pure-Python, Numpy-based, vectorized port of Processing's noise() function.";
homepage = "https://github.com/plottertools/pnoise/";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ lgpl21 ];
};
}
#+end_src
*** hnswlib
#+begin_src nix :tangle ~/arroyo-nix/pkgs/hnswlib.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, numpy
, pybind11
}:
buildPythonPackage rec {
version = "0.6.1";
src = fetchFromGitHub {
owner = "nmslib";
repo = "hnswlib";
rev = "443d667478fddf1e13f2e06b1da4e1ec3a9fe716";
sha256 = "0vxi1xlk2slw1hrvbvacy6g7rypggm6a1hzayxpbi001982sh1dh";
# date = "2022-04-15T19:58:29-07:00";
};
pname = "hnswlib";
propagatedBuildInputs = [ numpy ];
buildInputs = [ pybind11 ];
postPatch = ''
rm python_bindings/setup.py
'';
meta = with lib; {
description = "Header-only C++ HNSW implementation with python bindings.";
homepage = "https://github.com/nmslib/hnswlib/";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ asl20 ];
};
}
#+end_src
*** svgelements
:LOGBOOK:
- State "DONE" from "INPROGRESS" [2022-10-21 Fri 15:08]
- State "INPROGRESS" from "NEXT" [2022-10-21 Fri 15:08]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/svgelements.nix
# https://github.com/meerk40t/svgelements
{ lib
, buildPythonPackage
, fetchFromGitHub
, pytest
, numpy
, scipy
}:
buildPythonPackage rec {
version = "1.6.12"; # not quite!
src = fetchFromGitHub {
owner = "meerk40t";
repo = "svgelements";
rev = "761bb315a6c12a8fcea990276570780a07fc492f";
sha256 = "sha256-DQU+88Twt6J2TLa745kgS9UKNcYxLpH+ti8uxymS4Rw=";
};
pname = "svgelements";
propagatedBuildInputs = [ numpy scipy ];
checkInputs = [ pytest ];
checkPhase = ''
pytest test
'';
meta = with lib; {
description = "svgelements does high fidelity SVG parsing and geometric rendering.";
homepage = "https://github.com/meerk40t/svgelements";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ mit ];
};
}
#+end_src
*** qasync
:LOGBOOK:
- State "DONE" from "INPROGRESS" [2022-10-21 Fri 15:11]
- State "INPROGRESS" from "NEXT" [2022-10-21 Fri 15:09]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/qasync.nix
{ lib
, buildPythonPackage
, fetchFromGitHub
, pyside2
, pytest
}:
buildPythonPackage rec {
version = "0.23.0";
src = fetchFromGitHub {
owner = "CabbageDevelopment";
repo = "qasync";
rev = "58882735229b0d17836621d7d09ce02a6f80789d";
sha256 = "sha256-2wustBtShydCXM5L5IQbOaZ2BfGxbIPwLZ8sRfxFnM4=";
};
pname = "qasync";
propagatedBuildInputs = [ pyside2 ];
# sigabrt
# checkInputs = [pytest];
# checkPhase = ''
# pytest
# '';
doCheck = false;
meta = with lib; {
description = "qasync allows coroutines to be used in PyQt/PySide applications by providing an implementation of the PEP 3156 event-loop.";
homepage = "https://github.com/CabbageDevelopment/qasync";
platforms = platforms.unix;
maintainers = with maintainers; [rrix];
license = with licenses; [ lgpl21 ];
};
}
#+end_src
*** watchfiles
:LOGBOOK:
- State "DONE" from "INPROGRESS" [2022-10-21 Fri 15:11]
- State "INPROGRESS" from "NEXT" [2022-10-21 Fri 15:10]
:END:
#+begin_src nix :tangle ~/arroyo-nix/pkgs/watchfiles/default.nix :mkdirp yes
{ stdenv
, lib
, anyio
, buildPythonPackage
, fetchFromGitHub
, rustPlatform
, setuptools-rust
, pythonOlder
, dirty-equals
, pytest-mock
, pytest-timeout
, pytestCheckHook
, python
}:
buildPythonPackage rec {
pname = "watchfiles";
version = "0.18.0";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "samuelcolvin";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-biGGn0YAUbSO1hCJ4kU0ZWlqlXl/HRrBS3iIA3myRI8=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";
hash = "sha256-nmkIKA4EDMOeppOxKwLSh3oREInlDIcFzE7/EYZRGKY=";
};
patches = [
./pyproject-define-version.patch
];
postPatch = ''
substituteInPlace pyproject.toml --subst-var-by "version" "${version}"
'';
nativeBuildInputs = [
] ++ (with rustPlatform; [
cargoSetupHook
maturinBuildHook
rust.cargo
rust.rustc
]);
propagatedBuildInputs = [
anyio
];
preCheck = ''
rm -rf watchfiles
'';
checkInputs = [
dirty-equals
pytest-mock
pytest-timeout
pytestCheckHook
];
pythonImportsCheck = [
"watchfiles"
];
meta = with lib; {
broken = stdenv.isDarwin;
description = "Simple, modern file watching and code reload";
homepage = "https://watchfiles.helpmanual.io/";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}
#+end_src
#+begin_src diff :tangle ~/arroyo-nix/pkgs/watchfiles/pyproject-define-version.patch :comments none
--- a/pyproject.toml 2022-10-21 16:28:04.669544358 -0700
+++ b/pyproject.toml 2022-10-21 16:25:26.582827217 -0700
@@ -35,10 +35,10 @@
'Topic :: System :: Filesystems',
'Framework :: AnyIO',
]
+version = "@version@"
dynamic = [
'license',
'readme',
- 'version'
]
[project.scripts]
#+end_src
* Installing =vsketch= in [[id:cce/home-manager][home-manager]]
With the packages crammed in to Arroyo using an overlay, it's easy enough to add these in:
#+ARROYO_HOME_MODULE: hm/vsketch.nix
#+begin_src nix :tangle ~/arroyo-nix/hm/vsketch.nix
{ pkgs, ... }:
{
home.packages = [ pkgs.vpypePackages.vsketch pkgs.vpypePackages.vpype ];
}
#+end_src
* Installing =vsketch= in a VM
I tried a few times a few ways to get this =vsketch= thing working on NixOS before giving up and setting up a [[id:fedora_linux][Fedora Linux]] VM... Running [[id:cce/python][Python]] stuff on NixOS is still so painful...
,#+ARROYO_NIXOS_MODULE: nixos/qemu.nix
#+begin_src nix :tangle ~/arroyo-nix/nixos/qemu.nix
{ pkgs, ... }:
{:tangle ~/arroyo-nix/ages = [ pkgs.virt-manager ];
virtualisation.libvirtd = {
enable = true;
onBoot = "ignore";
};
}
#+end_src
- install fedora 35
- set up a filesystem share "add hardware" in virt-manager ui, while it installs
- =sudo dnf install pipx=
- =sudo mount -t 9p -o trans=virtio plotting /mnt/plotting -o version=9p2000.L=
- =systemctl enable sshd --now=
- =pipx install "vpype[all]"=
- =pipx inject vpype git+https://github.com/abey79/vsketch --include-apps=
* NEXT extract versions to [[id:cce/version_pins][Nix Version Pins]]

View File

@ -92,6 +92,7 @@ I have a bunch of little helpers in [[id:20211206T133651.674012][i3wm]] and [[id
, ((myMod, xK_x), spawn "meta-x")
, ((myMod, xK_z), spawn "org-todos")
, ((myMod, xK_c), spawn "emacsclient -c -e '(srs)' -n")
, ((myMod, xK_p), spawn "bash -c 'pkill krunner; krunner'")
#+end_src
There is also [[(recentWS)]] above which toggles between the ... most recent workspace ... on =S-Tab=. Useful for jumping between work terminals spread on the high-numbered workspaces when I am working on a high-context activity on my laptop display only. I provide it up there so that the first element of that list doesn't start with a comma, basically. All the other parts which go in to =additionalKeys= should start with a commas as though they're (rightfully) being spliced in to a list.