Chaotic's Nyx

Six frogs with capes, aligned like the NixOS logo, with intercalated shades of green
GitHub's menu buttons re-ordered and re-labeled to say: Make Pull requests Not Issues. Sounding like Make Love Not War

Nix flake for "too much bleeding-edge" and unreleased packages (e.g., mesa_git, linux_cachyos, firefox_nightly, sway_git, gamescope_git). And experimental modules (e.g., HDR, duckdns).

From the Chaotic Linux User Group (LUG), the same one that maintains Chaotic-AUR! 🧑🏻‍💻

The official source-code repository is available as "chaotic-cx/nyx" at GitHub.

PLEASE AVOID POSTING ISSUES IN NIXOS' MATRIX, DISCOURSE, DISCORD, ETC. USE OUR REPO'S ISSUES, TELEGRAM GROUP, OR #chaotic-nyx:ubiquelambda.dev ON MATRIX INSTEAD.

News

A news channel can be found on Telegram.

How to use it

On NixOS

We recommend integrating this repo using Flakes:


{
  description = "My configuration";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
  };

  outputs = { nixpkgs, chaotic, ... }: {
    nixosConfigurations = {
      hostname = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          ./configuration.nix # Your system configuration.
          chaotic.nixosModules.default # OUR DEFAULT MODULE
        ];
      };
    };
  };
}

In your configuration.nix enable the packages and options that you prefer:


{ pkgs, ... }:
{
  environment.systemPackages = [ pkgs.lan-mouse_git ];
  chaotic.mesa-git.enable = true;
}

On Home-Manager

This method is for home-manager setups without NixOS.

We recommend integrating this repo using Flakes:


{
  description = "My configuration";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { nixpkgs, chaotic, ... }: {
    homeConfigurations = {
      hostname = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        modules = [
          ./home-manager/default.nix
          chaotic.homeManagerModules.default # OUR DEFAULT MODULE
        ];
      };
    };
  };
}

In your home-manager/default.nix add a nix.package, and enable the desired packages:


{ pkgs, ... }:
{
  nix.package = pkgs.nix;
  home.packages = [ pkgs.lan-mouse_git ];
}

Running packages (without installing)

Besides using our module/overlay, you can run packages (without installing them) using:


nix run github:chaotic-cx/nyx/nyxpkgs-unstable#firefox_nightly

Binary Cache notes

You'll get the binary cache added to your configuration as soon as you add our default module. We do this automatically, so we can gracefully update the cache's address and keys without prompting you for manual work.

If you dislike this behavior for any reason, you can disable it with chaotic.nyx.cache.enable = false.

Remember: If you want to fetch derivations from our cache, you'll need to enable our module and rebuild your system before adding these derivations to your configuration.

Commands like nix run ..., nix develop ..., and others, when using our flake as input, will ask you to add the cache interactively when missing from your user's nix settings.

If you want to use the cache right from the installation media, install your system using nixos-install --flake /mnt/etc/nixos#mymachine --option 'extra-substituters' 'https://chaotic-nyx.cachix.org/' --option extra-trusted-public-keys "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" (replace mymachine with your new host's name).

FlakeHub notes

FlakeHub

Add chaotic to your flake.nix, make sure to use the rolling *.tar.gz to keep using the latest packages:


{
  inputs.chaotic.url = "https://flakehub.com/f/chaotic-cx/nyx/*.tar.gz";
}

Then follow one of the guides above.

Lists of options and packages

Built and cached against github:nixos/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367 (20241119110408Z).

Packages

NameVersionDescription
alacritty_git unstable-20241102214347-1063706 Cross-platform, GPU-accelerated terminal emulator
https://github.com/alacritty/alacritty
ananicy-rules-cachyos_git unstable-20241118140810-570fa95 CachyOS' ananicy-rules meant to be used with ananicy-cpp
https://github.com/CachyOS/ananicy-rules
applet-window-title 0.5 Plasma 6 applet that shows the application title and icon for active window
https://github.com/psifidotos/applet-window-title
appmenu-gtk3-module 0.7.6 Port of the Unity GTK 3 Module
beautyline-icons unstable-20240504163440-e13e5fa BeautyLine icon theme mixed with Sweet icons
https://gitlab.com/garuda-linux/themes-and-settings/artwork/beautyline
bpftools_full 6.12 Debugging/program analysis tools for the eBPF subsystem
https://github.com/libbpf/bpftool
busybox_appletless 1.36.1 Tiny versions of common UNIX utilities in a single small executable (without applets' symlinks)
https://busybox.net/
bytecode-viewer_git unstable-20241018063434-5f8fd42 An advanced yet user friendly Java reverse engineering suite
https://bytecodeviewer.com/
conduwuit_git unstable-20241025035102-16014e1 Matrix homeserver written in Rust, forked from conduit
https://conduwuit.puppyirl.gay/
discord-krisp 0.0.74 All-in-one cross-platform voice and text chat for gamers
https://discordapp.com/
distrobox_git unstable-20241029141208-18053c2 Wrapper around podman or docker to create and start containers
https://distrobox.it/
dr460nized-kde-theme unstable-20241118232010-744f3e1 The default Garuda dr460nized theme
https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-dr460nized
droid-sans-mono-nerdfont 3.2.1 Provides "DroidSansM Nerd Font" font family.
https://nerdfonts.com/
firedragon 11.20.0-1 Floorp fork build using custom branding & settings
https://firedragon.garudalinux.org
firedragon-unwrapped 11.20.0-1 Floorp fork build using custom branding & settings
https://firedragon.garudalinux.org
firefox-unwrapped_nightly 133.0a1 A web browser built from Firefox Nightly source tree
http://www.mozilla.com/en-US/firefox/
firefox_nightly 133.0a1 A web browser built from Firefox Nightly source tree
http://www.mozilla.com/en-US/firefox/
gamescope-wsi32_git unstable-20241029234350-7dd1bcd SteamOS session compositing window manager
https://github.com/ValveSoftware/gamescope
gamescope-wsi_git unstable-20241029234350-7dd1bcd SteamOS session compositing window manager
https://github.com/ValveSoftware/gamescope
gamescope_git unstable-20241029234350-7dd1bcd SteamOS session compositing window manager
https://github.com/ValveSoftware/gamescope
jovian-chaotic.linux_jovian 6.8.12-valve7 The Linux kernel (with patches: bridge-stp-helper, request-key-helper, export-rt-sched-migrate)
https://www.kernel.org/
jovian-chaotic.mesa-radeonsi-jupiter 24.2.6 Open source 3D graphics library
https://www.mesa3d.org/
jovian-chaotic.mesa-radv-jupiter 24.3.0.steamos-24.11.1 -
jujutsu_git unstable-20241119135752-173c11c Git-compatible DVCS that is both simple and powerful
https://github.com/martinvonz/jj
lan-mouse_git unstable-20241110143856-31366f4 Software KVM switch for sharing a mouse and keyboard with multiple hosts through the network
https://github.com/feschber/lan-mouse
latencyflex-vulkan unstable-2023-07-03 Vulkan Layer for LatencyFleX
https://github.com/ishitatsuyuki/LatencyFleX
libbpf_git unstable-20241119060009-bfc9770 Library for loading eBPF programs and reading and manipulating eBPF objects from user-space
https://github.com/libbpf/libbpf
libdrm32_git f314a43 Direct Rendering Manager library and headers
https://gitlab.freedesktop.org/mesa/drm
libdrm_git f314a43 Direct Rendering Manager library and headers
https://gitlab.freedesktop.org/mesa/drm
libportal_git unstable-20241030115452-c6eb27b Flatpak portal library
https://github.com/flatpak/libportal
linuxPackages_cachyos 6.12.0+C503f483+P9884b05 Kernel and modules for Linux EEVDF-BORE scheduler Kernel by CachyOS with other patches and improvements
linuxPackages_cachyos-hardened 6.11.7+C650e285+Pa67f3e9 Kernel and modules for Linux EEVDF-BORE scheduler Kernel by CachyOS with other patches and improvements
linuxPackages_cachyos-lto 6.12.0+C503f483+P9884b05 Kernel and modules for Linux EEVDF-BORE scheduler Kernel by CachyOS built with LLVM and Thin LTO
linuxPackages_cachyos-rc 6.12-rc7+Cb173616+P1ef4dcb Kernel and modules for Linux EEVDF-BORE scheduler Kernel by CachyOS with other patches and improvements
linuxPackages_cachyos-server 6.12.0+C503f483+P9884b05 Kernel and modules for Linux EEVDF scheduler Kernel by CachyOS targeted for Servers
linux_cachyos-rc 6.12-rc7 The Linux kernel (with patches: 0001-cachyos-base-all.patch)
https://www.kernel.org/
luxtorpeda 71.0.0 Steam Play compatibility tool to run games using native Linux engines
https://github.com/luxtorpeda-dev/luxtorpeda
mangohud32_git unstable-20241117083644-a109f0b Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
https://github.com/flightlessmango/MangoHud
mangohud_git unstable-20241117083644-a109f0b Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
https://github.com/flightlessmango/MangoHud
mesa32_git 86795a Open source 3D graphics library
https://www.mesa3d.org/
mesa_git 86795a Open source 3D graphics library
https://www.mesa3d.org/
mpv-vapoursynth - General-purpose media player, fork of MPlayer and mplayer2 (includes vapoursynth)
https://mpv.io
niri_git unstable-20241114090530-1a0612c Scrollable-tiling Wayland compositor
https://github.com/YaLTeR/niri
nix-flake-schemas_git unstable-20240712141454-e1ed2d1 Nix from the branch with flake-schemas
https://determinate.systems/posts/flake-schemas
nix-top_abandoned 0.3.0 Tracks what nix is building
https://github.com/samueldr/nix-top
nordvpn 3.16.5 CLI client for NordVPN
https://www.nordvpn.com
nss_git unstable-20241031145424-88b4b72 Set of libraries for development of security-enabled client and server applications
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
nut_git unstable-20241117123639-b624145 Network UPS Tools
https://networkupstools.org/
nyx-generic-git-update - Generic update-script for bleeding-edge GIT Nix derivations.
nyxUtils - Pack of functions that are useful for Chaotic-Nyx and might become useful for you too
openmohaa 0.70.0 Open re-implementation of Medal of Honor: Allied Assault
https://github.com/openmoh/openmohaa
openmohaa_git unstable-20241118210358-acb08b8 Open re-implementation of Medal of Honor: Allied Assault
https://github.com/openmoh/openmohaa
openvr_git unstable-20240326235357-ae46a8d API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting
https://github.com/ValveSoftware/openvr
pkgsx86_64_v2 - Nixpkgs + Chaotic-Nyx packages built for the x86-64-v2 microarchitecture.
pkgsx86_64_v3 - Nixpkgs + Chaotic-Nyx packages built for the x86-64-v3 microarchitecture.
pkgsx86_64_v4 - Nixpkgs + Chaotic-Nyx packages built for the x86-64-v4 microarchitecture.
plasma6-applet-window-buttons 0.13.0 Plasma 6 applet in order to show window buttons in your panels
https://github.com/moodyhunter/applet-window-buttons6
proton-ge-custom 9.20 Compatibility tool for Steam Play based on Wine and additional components
https://github.com/GloriousEggroll/proton-ge-custom
pwvucontrol_git unstable-20241103195742-8ca9b40 Pipewire Volume Control
https://github.com/saivert/pwvucontrol
qtile-extras_git 0.29.99 Extra modules and widgets for the Qtile tiling window manager
https://github.com/elParaguayo/qtile-extras
qtile-module_git 0.29.0.99 Small, flexible, scriptable tiling window manager written in Python
http://www.qtile.org/
qtile_git 0.29.0.99 Small, flexible, scriptable tiling window manager written in Python
http://www.qtile.org/
river_git unstable-20241108235620-a2a5e8f Dynamic tiling wayland compositor
https://codeberg.org/river/river
scx_git.bpfland unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
scx_git.cscheds unstable-20241102152003-20c0372 Sched-ext C userspace schedulers
https://github.com/sched-ext/scx
scx_git.full unstable-20241102152003-20c0372 Sched-ext C and Rust userspace schedulers
https://github.com/sched-ext/scx
scx_git.lavd unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
scx_git.layered unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
scx_git.rlfifo unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
scx_git.rustland unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
scx_git.rusty unstable-20241102152003-20c0372 Sched-ext Rust userspace scheduler
https://github.com/sched-ext/scx
sdl_git unstable-20241119053623-7a074f5 Cross-platform multimedia library
http://www.libsdl.org/
spirv-headers_git unstable-20241113201233-45b3140 Machine-readable components of the Khronos SPIR-V Registry
https://github.com/KhronosGroup/SPIRV-Headers
sway-unwrapped_git unstable-20241117210335-5312376 I3-compatible tiling Wayland compositor
https://swaywm.org
sway_git unstable-20241117210335-5312376 I3-compatible tiling Wayland compositor
https://swaywm.org
swaylock-plugin_git unstable-20241118224421-c112872 Screen locker for Wayland
https://github.com/swaywm/swaylock
telegram-desktop-unwrapped_git unstable-20241119103215-c04f68f Telegram Desktop messaging app
https://desktop.telegram.org/
telegram-desktop_git unstable-20241119103215-c04f68f Telegram Desktop messaging app
https://desktop.telegram.org/
tg-owt_git unstable-20241116052729-3008950 Fork of Google's webrtc library for telegram-desktop
https://github.com/desktop-app/tg_owt
torzu_git unstable-20241115-bb142c9 The TOR branch of an experimental Nintendo Switch emulator written in C++
http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu
vulkanPackages_latest.gfxreconstruct 1.3.296.0 Graphics API Capture and Replay Tools
https://github.com/LunarG/gfxreconstruct/
vulkanPackages_latest.glslang 15.0.0 Khronos reference front-end for GLSL and ESSL
https://github.com/KhronosGroup/glslang
vulkanPackages_latest.spirv-cross 1.3.296.0 Tool designed for parsing and converting SPIR-V to other shader languages
https://github.com/KhronosGroup/SPIRV-Cross
vulkanPackages_latest.spirv-headers unstable-20241023-22c4d1b Machine-readable components of the Khronos SPIR-V Registry
https://github.com/KhronosGroup/SPIRV-Headers
vulkanPackages_latest.spirv-tools unstable-20241024-ce92630 SPIR-V Tools project provides an API and commands for processing SPIR-V modules
https://github.com/KhronosGroup/SPIRV-Tools
vulkanPackages_latest.vulkan-extension-layer 1.3.300 Layers providing Vulkan features when native support is unavailable
https://github.com/KhronosGroup/Vulkan-ExtensionLayer/
vulkanPackages_latest.vulkan-headers 1.3.301 Vulkan Header files and API registry
https://www.lunarg.com
vulkanPackages_latest.vulkan-loader 1.3.301 LunarG Vulkan loader
https://www.lunarg.com
vulkanPackages_latest.vulkan-tools 1.3.301 Khronos official Vulkan Tools and Utilities
https://github.com/KhronosGroup/Vulkan-Tools
vulkanPackages_latest.vulkan-tools-lunarg 1.3.298 LunarG Vulkan Tools and Utilities
https://github.com/LunarG/VulkanTools
vulkanPackages_latest.vulkan-utility-libraries 1.3.301 Set of utility libraries for Vulkan
https://github.com/KhronosGroup/Vulkan-Utility-Libraries
vulkanPackages_latest.vulkan-validation-layers 1.3.301 Official Khronos Vulkan validation layers
https://github.com/KhronosGroup/Vulkan-ValidationLayers
vulkanPackages_latest.vulkan-volk 1.3.296.0 Meta loader for Vulkan API
https://github.com/zeux/volk
wayland-protocols_git unstable-20241107214715-fe3d544 Wayland protocol extensions
https://gitlab.freedesktop.org/wayland/wayland-protocols
wayland-scanner_git 1.23.1 C code generator for Wayland protocol XML files
https://wayland.freedesktop.org/
wayland_git unstable-20241118092520-10df74c Core Wayland window system code and protocol
https://wayland.freedesktop.org/
wlroots_git unstable-20241116190501-f233d25 Modular Wayland compositor library
https://gitlab.freedesktop.org/wlroots/wlroots/
xdg-desktop-portal-wlr_git unstable-20240522135608-d9ada84 xdg-desktop-portal backend for wlroots
https://github.com/emersion/xdg-desktop-portal-wlr
yt-dlp_git unstable-20241118054505-f919729 Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork)
https://github.com/yt-dlp/yt-dlp/
zed-editor_git unstable-20241119152312-6a2c712 High-performance, multiplayer code editor from the creators of Atom and Tree-sitter
https://zed.dev
zfs_cachyos 2.3.0-rc3 ZFS Filesystem Linux Userspace Tools
https://github.com/openzfs/zfs

NixOS Options

KeyDefaultDescription
chaotic.appmenu-gtk3-module.enable false Sets the proper environment variable to use appmenu-gtk3-module.

Example: true
chaotic.duckdns.certs.enable false Whether to enable generate HTTPS cert via ACME/Let's Encrypt.
Example: true
chaotic.duckdns.certs.group "acme" Group account under which the activation runs.
chaotic.duckdns.certs.httpPort 80 Port number.
chaotic.duckdns.certs.useHttpServer false Whether to enable use Lego's built-in HTTP server instead a request to DuckDNS.
Example: true
chaotic.duckdns.domain N/A Full domain to be updated, including the TLD.
chaotic.duckdns.enable false Whether to enable DuckDNS config.
Example: true
chaotic.duckdns.environmentFile "/etc/duckdns-updater/envs" Environment file from systemd, ensure it is set to 600 permissions.

Must contain DUCKDNS_TOKEN entry.
chaotic.duckdns.ipv6.device "eth0" Device to get IPv6.
chaotic.duckdns.ipv6.enable false Whether to enable enable IPv6.
Example: true
chaotic.duckdns.onCalendar "*:0/5" How often the DNS entry is updated.

The format is described in {manpage}`systemd.time(7)`.

Example: "hourly"
chaotic.hdr.enable false Whether to enable AMD-HDR as seen in
        https://lore.kernel.org/amd-gfx/20230810160314.48225-1-mwen@igalia.com/
.
Example: true
chaotic.hdr.specialisation.enable true Isolates the changes in a specialisation.

Example: false
chaotic.hdr.wsiPackage pkgs.gamescope-wsi Gamescope WSI package to use

Example: pkgs.gamescope-wsi_git
chaotic.mesa-git.enable false Whether to use latest Mesa drivers.

WARNING: It will break NVIDIA's libgbm, don't use with NVIDIA Optimus setups.

Example: true
chaotic.mesa-git.extraPackages [ ] Additional packages to add to OpenGL drivers.
This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc.

WARNING: Don't use any of the `mesa.*`, replace with `pkgs.mesa_git.*`.

Example: with pkgs; [ mesa_git.opencl intel-media-driver intel-ocl vaapiIntel ]
chaotic.mesa-git.extraPackages32 [ ] Additional packages to add to 32-bit OpenGL drivers on 64-bit systems.

WARNING: Don't use any of the `mesa.*`, replace with `pkgs.mesa32_git.*`.

Example: with pkgs.pkgsi686Linux; [ pkgs.mesa32_git.opencl intel-media-driver vaapiIntel ]
chaotic.mesa-git.fallbackSpecialisation true Whether to add a specialisation with stable Mesa.
Recommended.

Example: false
chaotic.mesa-git.method "GBM_BACKENDS_PATH" There are three available methods to replace your video drivers system-wide:

- GBM_BACKENDS_PATH:
  The default one that tricks any package linked against nixpkgs' libgbm to
  load our newer one;
- replaceRuntimeDependencies:
  The second most recommended, which impurely replaces nixpkgs' libgbm with
  ours in the nix store (requires "--impure");

Enum: one of "replaceRuntimeDependencies", "GBM_BACKENDS_PATH"

Example: "replaceRuntimeDependencies"
chaotic.nordvpn.enable false Whether to enable the NordVPN daemon. Note that you'll have to set
`networking.firewall.checkReversePath = false;`, add UDP 1194
and TCP 443 to the list of allowed ports in the firewall and add your
user to the "nordvpn" group (`users.users..extraGroups`).
chaotic.nyx.cache.enable true Whether to add Chaotic-Nyx's binary cache to settings.

Example: false
chaotic.nyx.overlay.enable true Whether to add Chaotic-Nyx's overlay to system's pkgs.

Example: false
chaotic.nyx.overlay.flakeNixpkgs.config pkgs.config Matches `nixpkgs.config` from the configuration of the Nix Packages collection.

Example: { allowBroken = true; allowUnfree = true; }

chaotic.nyx.overlay.onTopOf "flake-nixpkgs" Build Chaotic-Nyx's packages based on nyx's flake flakes or the system's pkgs.

Enum: one of "flake-nixpkgs", "user-pkgs"

Example: "user-pkgs"
chaotic.scx.enable false Whether to enable scx service,
    a scheduler daemon with wide variety of
    scheduling algorithms, that can be used to
    improve system performance. Requires a kernel
    with the SCX patchset applied. Currently
    all cachyos kernels have this patchset applied.
Example: true
chaotic.scx.package pkgs.scx.scheduler The scx.scheduler package to use.
chaotic.scx.scheduler "scx_rustland" Which of the SCX's schedulers to use.

Enum: one of "scx_bpfland", "scx_central", "scx_flatcg", "scx_lavd", "scx_layered", "scx_nest", "scx_pair", "scx_qmap", "scx_rlfifo", "scx_rustland", "scx_rusty", "scx_simple", "scx_userland"

Example: "scx_rusty"
chaotic.zfs-impermanence-on-shutdown.enable false Whether to enable Impermanence on safe-shutdown through ZFS snapshots.
Example: true
chaotic.zfs-impermanence-on-shutdown.snapshot null Snapshot of the volume in an "empty" state to roll back to.

Example: "start"
chaotic.zfs-impermanence-on-shutdown.volume null Full description to the volume including pool.
This volume must have a snapshot to an "empty" state.

WARNING: The volume will be rolled back to the snapshot on every safe-shutdown.

Example: "zroot/ROOT/empty"

Home-Manager Options

KeyDefaultDescription
chaotic.nyx.cache.enable true Whether to add Chaotic-Nyx's binary cache to settings.

Example: false
chaotic.nyx.overlay.enable true Whether to add Chaotic-Nyx's overlay to system's pkgs.

Example: false
chaotic.nyx.overlay.flakeNixpkgs.config pkgs.config Matches `nixpkgs.config` from the configuration of the Nix Packages collection.

Example: {
  allowBroken = true;
}

chaotic.nyx.overlay.onTopOf "flake-nixpkgs" Build Chaotic-Nyx's packages based on nyx's flake flakes or the system's pkgs.

Enum: one of "flake-nixpkgs", "user-pkgs"

Example: "user-pkgs"

Harder stuff

Some packages are harder to use, I'll go into details in the following paragraphs.

Using linux-cachyos with sched-ext

Since sched-ext patches have been added to linux-cachyos, you can just use that kernel.

First, add this to your configuration:


{
  boot.kernelPackages = pkgs.linuxPackages_cachyos;
  chaotic.scx.enable = true; # by default uses scx_rustland scheduler
}

Then, with the new kernel booted, check if the correct kernel booted:


╰─λ zgrep 'SCHED_CLASS' /proc/config.gz
CONFIG_SCHED_CLASS_EXT=y

If the scheduler is not working for some reason, you can manually start it like:


╰─λ sudo scx_rusty
21:38:53 [INFO] CPUs: online/possible = 24/32
21:38:53 [INFO] DOM[00] cpumask 00000000FF03F03F (20 cpus)
21:38:53 [INFO] DOM[01] cpumask 0000000000FC0FC0 (12 cpus)
21:38:53 [INFO] Rusty Scheduler Attached

You can choose a different scheduler too.


{
  chaotic.scx.scheduler = "scx_rusty";
}

There are other scx_* binaries for you to play with, or head to github.com/sched-ext/scx for instructions on how to write one of your own.

Notes

Our branches

:godmode: Our nyxpkgs-unstable branch is the one that's always cached.

:shipit: The main branch is the primary target for contribution.

Contributions

We do accept third-party authored PRs.

Upstream to nixpkgs

If you are interested in pushing any of these packages to the upstream nixpkgs, you have our blessing.

If one of our contributors is mentioned in the deveriation's mantainers list (in this repository) please keep it when pushing to nixpkgs. But, please, tag us on the PR so we can participate in the reviewing.

Forks and partial code-taking

You are free to use our code, or portions of our code, following the MIT license restrictions.

Suggestions

If you have any suggestion to enhance our packages, modules, or even the CI's codes, let us know through the GitHub repo's issues.

Building over the user's pkgs

For cache reasons, Chaotic-Nyx now defaults to always use nixpkgs as provider of its dependencies.

If you need to change this behavior, set chaotic.nyx.onTopOf = "user-pkgs";. Be warned that you mostly won't be able to benefit from our binary cache after this change.

You can also disable our overlay entirely by configuring chaotic.nyx.overlay.enable = false;.

CachyOS kernels

Even though we provide linuxPackages_cachyos-lto, we don't maintain the kernel modules in it. Nixpkgs, where the derivations originate from, doesn't provide kernels built with Clang. Consequentially, adding later support for all the kernel modules available in Nixpkgs wouldn't be easy. Presently, xone is the only one guaranteed to work, and ZFS is known to not work.

Other variations of linuxPackages_cachyos works without any issues. But, we don't build the ones in linuxPackages_cachyos-rc, they should work, but don't expect cache for them.

Why am I building a kernel? Basic cache troubleshooting

For starters, suppose you're using our linuxPackages_cachyos as the kernel and an up-to-date flake lock. Check if all these three hashes prompt the same:


╰─λ nix eval 'github:chaotic-cx/nyx/nyxpkgs-unstable#linuxPackages_cachyos.kernel.outPath'
"/nix/store/441qhriiz5fa4l3xvvjw3h4bps7xfk08-linux-6.8.7"

╰─λ nix eval 'chaotic#linuxPackages_cachyos.kernel.outPath'
"/nix/store/441qhriiz5fa4l3xvvjw3h4bps7xfk08-linux-6.8.7"

╰─λ nix eval '/etc/nixos#nixosConfigurations.{{HOSTNAME}}.config.boot.kernelPackages.kernel.outPath'
"/nix/store/441qhriiz5fa4l3xvvjw3h4bps7xfk08-linux-6.8.7"

If the second is different from the first, you're probably adding a inputs.nixpkgs.follows to chaotic, simply remove it.

If the third is different from the first, you're most likely using an overlay that's changing the kernel or one of its dependencies; check your nixpkgs.overlays config.


If they all match, and you're still rebuilding the kernel, copy the hash from the result above, then change it in the following curl command:


╰─λ curl -L 'https://chaotic-nyx.cachix.org/441qhriiz5fa4l3xvvjw3h4bps7xfk08.narinfo'
StorePath: /nix/store/441qhriiz5fa4l3xvvjw3h4bps7xfk08-linux-6.8.7
URL: nar/e5ccded34e4608448c49d3e9fdc92441cd564ae629a4b93fd3f8a334bca7c71d.nar.zst
Compression: zstd
FileHash: sha256:e5ccded34e4608448c49d3e9fdc92441cd564ae629a4b93fd3f8a334bca7c71d
FileSize: 172226528
NarHash: sha256:1v410bnc3qazxscwxvm80c40i0fxzp0amvp93y0y4x3kikdwz035
NarSize: 184989384
References:
Deriver: snb6mg44fflzp3vm5fh4ybxa5j4nlfa5-linux-6.8.7.drv
Sig: chaotic-nyx.cachix.org-1:L0D5GiJf/VEc1brcqYSB+vzYDDV6ZoDP59b+0mrX3bm2b5bbvtH3xOR4XEXy7QILYoIx2Pd64qWN+6okOMQZCA==

If the command above fails without an 404, then you have an issue with your internet connection. If it fails with 404, then tag pedrohlc (Matrix, Telegram or GitHub), he really broke the cache.

If the command succeeds, and you're still building the cache, it can happen because of two things: (1) you might have tried to fetch said package before we deployed, then Nix will cache the 404 and won't try again; (2) you might have a misconfigured /etc/nix/nix.conf or outdated nix-daemon.

For the second one, check if it looks like this (the word “chaotic” should appear three times):


╰─λ grep chaotic /etc/nix/nix.conf
substituters = https://nix-community.cachix.org/ https://chaotic-nyx.cachix.org/ https://cache.nixos.org/
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8

An outdated nix-daemon can happen when you change nix settings, then nixos-rebuilt your system, but you didn't restart the nix-daemon service. The easiest way to fix it is to reboot.

About this page

Generated for github:chaotic-cx/nyx/4621aec08aa50869a305e275c2b8a0c766f3b59b from (20241121005830Z).