The Complete Computer

My NixOS Desktop configuration

LifeTechEmacsArcology

This is file:nixlib/roles/endpoint/default.nix which is installed on to a minimal NixOS with NixOps . It'll be a full NixOS configuration.nix when it grows up, likely generated in the same way as my home-manager configuration, but for now it's a minimal example. I have no idea how to make this a per-host configuration, eventually I will set up NixOps ; for now everything is just gonna be set up by editing this, i guess, and I'll change things as I need to.

nix source: :tangle ~/arroyo-nix/roles/endpoint/default.nix :noweb yes :mkdirp yes
{ pkgs, lib, ... }: let endpointCfg = ./default.nix; # this file in rec { imports = [ ./hardware-configuration.nix ./generated.nix ] # (ref:imports) ++ [ <<arroyo_nixos_imports()>> ]; services.udev.extraRules = '' SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE="0666" SUBSYSTEM=="tty", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0005", SYMLINK+="pico" ''; home-manager.users.rrix = import ../../home-manager.nix; environment.etc."nixos/configuration.nix".source = endpointCfg; }

Here the strings are basically just taken out of Arroyo NixOS Generator , formatted to point to the relative-root of the CCE nixlib directory, sorted alphabetically, and concatenated. Links to published versions of these modules can be found on the CCE index page.

 arroyo_nixos_importsemacs-lisp source: :results drawer
(thread-last (arroyo-generator-data "nixos" "endpoint") (mapcar (lambda (gen) (let* ((babel (alist-get 'babel gen)) ;; (destination (alist-get 'destination gen)) (title (alist-get 'title gen)) (heading_id (alist-get 'root_heading_id gen))) (if heading_id (format "%s # [[id:%s][%s]]" babel heading_id title) babel)))) (s-join "\n"))
../../nixos/nm-online.nix
../../nixos/location.nix # [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]]
../../nixos/tailscale.nix # [[id:20220210T155158.671084][From Wireguard to Tailscale]]
../../nixos/flipper-zero.nix
../../nixos/rrix.nix
../../nixos/emacs.nix # [[id:arroyo/emacs][Arroyo Emacs Generator]]
../../nixos/clight.nix # [[id:cce/warm_computing_with_clight][Clight]]
../../nixos/cups.nix # [[id:20230321T143139.441973][My Brother Printer and CUPS Setup]]
../../nixos/boot.nix
../../nixos/ssh_client.nix # [[id:cce/ssh_configuration][SSH Configuration]]
../../nixos/zfs.nix # [[id:20231129T105148.214325][Basic ZFS Configuration]]
../../nixos/printing.nix
../../nixos/morph-wrapper.nix # [[id:20230530T120958.265094][Wrapping Morph commands for more ergonomic deployment]]
../../nixos/cachix.nix # [[id:cce/nix_community_cachix][Nix Community Cachix]]
../../nixos/waydroid.nix # [[id:20230526T152316.126977][Waydroid on NixOS makes Android on Linux simple]]
../../nixos/xmodmap.nix # [[id:20210814224010-my_custom_keyboard_layout][My Custom Keyboard Layout]]
../../nixos/limesdr.nix
../../nixos/laptop.nix # [[id:cce/nixos-laptop][NixOS Hardware Support for Laptops]]
../../nixos/koreader-binds.nix # [[id:20230508T211114.617538][Reading Books on Linux and Android with KOReader]]
../../nixos/audio.nix # [[id:cce/nixos-audio][NixOS Audio]]
../../nixos/yubikey.nix # [[id:cce/using_yubikey_as_a_gpg_key][Using Yubikey as a GPG Key]]
../../nixos/syncthing.nix # [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]]
../../nixos/mopidy.nix # [[id:cce/mpd][Listening to Music with MPD]]
../../nixos/gnupg-pam.nix # [[id:cce/gnupg_configuration][GnuPG Configuration]]
../../nixos/vulfpeck.nix # [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]]
../../nixos/direnv.nix # [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]]
../../nixos/japanese.nix # [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]]
../../nixos/home-manager.nix # [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]]
../../nixos/nixpkgs.nix # [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]]
../../nixos/poetry2nix.nix # [[id:cce/python][Python in Emacs through LSP]]
../../nixos/open-webui.nix
../../nixos/rixpkgs.nix # [[id:20221021T115008.329657][Arroyo Nix Support]]
../../nixos/virt-mangler.nix # [[id:20240202T163136.188605][Rebuild of The Complete Computer 0x02: This Is (Not) Advanced]]
../../nixos/kde.nix # [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]]
../../nixos/fonts.nix # [[id:cce/appearance][Themeing my Emacs and Desktop]]
../../nixos/nix-path.nix # [[id:20220526T143555.660133][A Custom NIX_PATH and local nixpkgs checkout]]
../../nixos/applications.nix # [[id:cce/applications_i_use][Applications I Use]]
../../nixos/nixos-builder.nix # [[id:20221106T113721.266425][CCE in Nix On Droid]]

Worth noting:

  • (imports) are placed on the device by nixos-install and justdoit in the NixOS Automatic Partitioning Installer , and referenced more fully in the Morph configuration. I am providing a stub hardware-configuration.nix and generated.nix for the role. I don't like this at all, it makes me nervous, I know some day I'll accidentally clobber these settings on my remote and end up without a bootloader or some hilarious nonsense. That's what the rollback is for ahaha! sigh. here we go!

    nix source: :tangle ~/arroyo-nix/roles/endpoint/hardware-configuration.nix :noweb yes
    {}
    nix source: :tangle ~/arroyo-nix/roles/endpoint/generated.nix :noweb yes
    {}

NEXT minimise nerdfonts

https://github.com/NixOS/nixpkgs/blob/nixos-21.05/pkgs/data/fonts/nerdfonts/default.nix#L5-L7

https://github.com/NixOS/nixpkgs/blob/nixos-21.05/pkgs/data/fonts/nerdfonts/shas.nix

Workboard

NEXT fix <> from my roam:Xmodmap

my Xmodmap needs to be brought in to Nixos Automatic Partitioning Installer's target-config

https://nixos.org/manual/nixos/stable/index.html#custom-xkb-layouts

NEXT split this in to dynamic CCE-modules like home-manager

some would say this isn't how it should work with org-roam but i think moving towards generating an imports statement instead of inserting a bunch of text in to a buffer, this makes the tooling work a bit better, probably.