Automated, pre-built, (potentially) pre-release packages for Wayland (sway/wlroots) tools for NixOS (nixos-unstable channel).
These packages are auto-updated to the latest version available from their upstream source control. This means this overlay and package set will often contain unreleased versions.
Community chat is on Matrix: #nixpkgs-wayland:matrix.org. We are not on Libera.
Started by: @colemickens and co-maintained by @Artturin (🙏).
The Cachix landing page for nixpkgs-wayland
shows how to utilize the binary cache.
Packages from this overlay are regularly built against nixos-unstable
and pushed to this cache.
We have multiple CI jobs:
nixos-unstable
has advanced
into a state where we are broken building against it.master
was working against nixos-unstable
at the point in time captured by whatever is in flake.lock
on master
.We don't have CI on Pull Requests, but I keep an eye on it after merging external contributions.
Build and run the Wayland-fixed up version of OBS-Studio:
nix shell "github:nix-community/nixpkgs-wayland#obs-studio" --command obs
Build and run waybar
:
nix run "github:nix-community/nixpkgs-wayland#waybar"
Use as an overlay or package set via flakes:
{
inputs = {
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
# only needed if you use as a package set:
nixpkgs-wayland.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs: {
nixosConfigurations."my-laptop-hostname" =
let system = "x86_64-linux";
in nixpkgs.lib.nixosSystem {
inherit system;
modules = [({pkgs, config, ... }: {
config = {
nix.settings = {
# add binary caches
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
substituters = [
"https://cache.nixos.org"
"https://nixpkgs-wayland.cachix.org"
];
};
# use it as an overlay
nixpkgs.overlays = [ inputs.nixpkgs-wayland.overlay ];
# or, pull specific packages (built against inputs.nixpkgs, usually `nixos-unstable`)
environment.systemPackages = [
inputs.nixpkgs-wayland.packages.${system}.waybar
];
};
})];
};
};
}
If you are not using Flakes, then consult the NixOS Wiki page on Overlays. Also, you can expand this section for a more literal, direct example. If you do pin, use a tool like niv
to do the pinning so that you don't forget and wind up stuck on an old version.
Non-NixOS users have many options, but here are two explicitly:
Activate flakes mode, then just run them outright like the first example in this README.
See the following details block for an example of how to add nixpkgs-wayland
as a user-level
overlay and then install a package with nix-env
.
Package | Description |
---|---|
aml | Another main loop |
cage | Wayland kiosk that runs a single, maximized application |
drm_info | Small utility to dump info about DRM devices |
dunst | Lightweight and customizable notification daemon |
eww | Widget system made in Rust to create widgets for any WM |
foot | Fast, lightweight and minimalistic Wayland terminal emulator |
freerdp3 | A Remote Desktop Protocol Client |
gebaar-libinput | Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput |
glpaper | Wallpaper program for wlroots based Wayland compositors such as sway that allows you to render glsl shaders as your wallpaper |
grim | Grab images from a Wayland compositor |
gtk-layer-shell | Library to create panels and other desktop components for Wayland using the Layer Shell protocol |
i3status-rust | Very resource-friendly and feature-rich replacement for i3status |
imv | Command line image viewer for tiling window managers |
kanshi | Dynamic display configuration tool |
lavalauncher | Simple launcher panel for Wayland desktops |
libvncserver_master | VNC server library |
mako | Lightweight Wayland notification daemon |
neatvnc | VNC server library |
new-wayland-protocols | Wayland protocol extensions |
obs-wlrobs | Obs-studio plugin that allows you to screen capture on wlroots based wayland compositors |
rootbar | Bar for Wayland WMs |
salut | A sleek notification daemon |
shotman | Uncompromising screenshot GUI for Wayland compositors |
sirula | Simple app launcher for wayland written in rust |
slurp | Select a region in a Wayland compositor |
sway-unwrapped | I3-compatible tiling Wayland compositor |
swaybg | Wallpaper tool for Wayland compositors |
swayidle | Idle management daemon for Wayland |
swaylock | Screen locker for Wayland |
swaylock-effects | Screen locker for Wayland |
swww | Efficient animated wallpaper daemon for wayland, controlled at runtime |
waybar | Highly customizable Wayland bar for Sway and Wlroots based compositors |
waypipe | Network proxy for Wayland clients (applications) |
wayprompt | multi-purpose prompt tool for Wayland |
wayvnc | VNC server for wlroots based Wayland compositors |
wbg | Wallpaper application for Wayland compositors |
wdisplays | Graphical application for configuring displays in Wayland compositors |
wev | Wayland event viewer |
wf-recorder | Utility program for screen recording of wlroots-based compositors |
wl-clipboard | Command-line copy/paste utilities for Wayland |
wl-gammarelay-rs | A simple program that provides DBus interface to control display temperature and brightness under wayland without flickering |
wlay | Graphical output management for Wayland |
wldash | Wayland launcher/dashboard |
wlogout | Wayland based logout menu |
wlr-randr | Xrandr clone for wlroots compositors |
wlroots | Modular Wayland compositor library |
wlsunset | Day/night gamma adjustments for Wayland |
wlvncc | A Wayland Native VNC Client |
wob | Lightweight overlay bar for Wayland |
wofi | Launcher/menu program for wlroots based wayland compositors such as sway |
wshowkeys | Displays keys being pressed on a Wayland session |
wtype | xdotool type for wayland |
xdg-desktop-portal-wlr | xdg-desktop-portal backend for wlroots |
home-manager
!sway
waybar
obs
and plugins!sway
$HOME/.config/sway/config
. You can use the upstream default as a starting point: https://github.com/swaywm/sway/blob/master/config.insway
from a raw TTY, make sure you use exec sway
so that if sway crashes, an unlocked TTY is not exposed.nix develop
./main.nu
:
./main.nu build
- builds and caches derivations that don't exist in the cache, use nix-eval-jobs
./main.nu advance
- advances the flake inputs, runs main build
./main.nu update
- advances the flake inputs, updates pkg revs, runs main build
build
pushes to the nixpkgs-wayland
cachixIf for some reason the overlay isn't progressing and you want to help,
just clone the repo, run nix develop -c ./main.nu update