Automated, pre-built packages for Wayland (sway/wlroots) tools for NixOS.
(note: failure indicates auto-updates are stuck and need intervention. all packages remain buildable on tip of master)
Automated, pre-built packages for Wayland (sway/wlroots) tools for NixOS (nixos-unstable channel).
Community chat is on Matrix: #nixpkgs-wayland:matrix.org. Alternatively
#nixpkgs-waylandon freenode is plumbed into the Matrix room.
nixpkgs-waylandshows how to utilize the binary cache.
Packages from this overlay are regularly built against
nixos-unstableand pushed to this cache.
nix shell "github:colemickens/nixpkgs-wayland#obs-studio" --command obs
Build and run
waybar:
nix run "github:colemickens/nixpkgs-wayland#waybar"
Use as an overlay or package set via flakes:
{ # ... inputs = { # ... nixpkgs-wayland = { url = "github:colemickens/nixpkgs-wayland"; };# only needed if you use as a package set: nixpkgs-wayland.inputs.nixpkgs.follows = "cmpkgs"; nixpkgs-wayland.inputs.master.follows = "master"; }; outputs = inputs: { nixosConfigurations."my-laptop-hostname" = let system = "x86_64-linux"; in nixpkgs.lib.nixosSystem { inherit system; modules = [({pkgs, config, ... }: { config = { nix = { # add binary caches binaryCachePublicKeys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" # ... ]; binaryCaches = [ "https://cache.nixos.org" "https://nixpkgs-wayland.cachix.org" # ... ]; }; # use it as an overlay nixpkgs.overlays = [ inputs.nixpkgs-wayland.overlay ]; # pull specific packages (built against inputs.nixpkgs, usually `nixos-unstable`) environment.systemPackages = with pkgs; [ 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
nivto do the pinning so that you don't forget and wind up stuck on an old version.
{ config, lib, pkgs, ... }:
let
rev = "master";
# 'rev' could be a git rev, to pin the overla.
# if you pin, you should use a tool like `niv` maybe, but please consider trying flakes
url = "https://github.com/colemickens/nixpkgs-wayland/archive/${rev}.tar.gz";
waylandOverlay = (import (builtins.fetchTarball url));
in
{
nixpkgs.overlays = [ waylandOverlay ];
environment.systemPackages = with pkgs; [ wayvnc ];
# ...
}
You could write that to a file ./wayland.nix
next to your configuration.nix
and then use it like so:
{ config, lib, pkgs, ... }:
{
# ...
imports = [
# ...
./wayland.nix
];
}
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-waylandas a user-level overlay and then install a package with
nix-env.
There are two ways to activate an overlay for just your user:
Add a new entry in ``~/.config/nixpkgs/overlays.nix`:
let
url = "https://github.com/colemickens/nixpkgs-wayland/archive/master.tar.gz";
in
[
(import (builtins.fetchTarball url))
]
Add a new file under a dir, ~/.config/nixpkgs/overlays/nixpkgs-wayland.nix
:
let
url = "https://github.com/colemickens/nixpkgs-wayland/archive/master.tar.gz";
in
(import (builtins.fetchTarball url))
Note, this method does not pin nixpkgs-wayland
. That's left to the reader. (Just use flakes...)
Then, nix-env
will have access to the packages:
nix-env -iA neatvnc
These packages were mostly recently built (and cached) against:
| Package | Description | | --- | --- | | aml | liberally licensed VNC server library that's intended to be fast and neat | | cage | A Wayland kiosk | | clipman | A basic clipboard manager for Wayland, with support for persisting copy buffers after an application exits | | drm_info | Small utility to dump info about DRM devices. | | dunst | Lightweight and customizable notification daemon | | gebaar-libinput | Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput | | glpaper | GLPaper is a 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 | A 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 | A command line image viewer for tiling window managers | | kanshi | Dynamic display configuration | | lavalauncher | A simple launcher for Wayland. | | libvncserver_master | VNC server library | | mako | A lightweight Wayland notification daemon | | neatvnc | liberally licensed VNC server library that's intended to be fast and neat | | nwg-launchers | GTK-based launchers: application grid, button bar, dmenu for sway and other window managers | | obs-studio | Free and open source software for video recording and live streaming | | obs-wlrobs | wlrobs is an obs-studio plugin that allows you to screen capture on wlroots based wayland compositors | | obs-xdg-portal | OBS Studio plugin using the Desktop portal for Wayland & X11 screencasting. This plugin only works with obs-studio-dmabuf. | | oguri | A very nice animated wallpaper tool for Wayland compositors | | rootbar | Root Bar is a bar for wlroots based wayland compositors such as sway and was designed to address the lack of good bars for wayland | | slurp | Select a region in a Wayland compositor | | swaybg | Wallpaper tool for Wayland compositors | | swayidle | Sway's idle management daemon | | swaylock | Screen locker for Wayland | | sway | i3-compatible tiling Wayland compositor | | waybar | Highly customizable Wayland Polybar like bar for Sway and Wlroots based compositors. | | wayfire | 3D wayland compositor | | waypipe | Network transparency with Wayland | | wayvnc | A VNC server for wlroots based Wayland compositors | | wdisplays | GUI display configurator for wlroots compositors | | wev | A tool for debugging events on a Wayland window, analagous to the X11 tool xev. | | wf-recorder | Utility program for screen recording of wlroots-based compositors | | wlay | Graphical output management for Wayland | | wldash | Wayland launcher/dashboard | | wlfreerdp | A Remote Desktop Protocol Client | | wlogout | A wayland based logout menu | | wlroots | A modular Wayland compositor library | | wlr-randr | An xrandr clone for wlroots compositors | | wlsunset | Day/night gamma adjustments for Wayland | | wlvncc | A Wayland Native VNC Client | | wl-clipboard | Select a region in a Wayland compositor | | wl-gammactl | Small GTK GUI application to set contrast, brightness and gamma for wayland compositors which support the wlr-gamma-control protocol extension. | | wofi | Wofi is a launcher/menu program for wlroots based wayland compositors such as sway | | wtype | xdotool type for wayland | | xdg-desktop-portal-wlr | xdg-desktop-portal backend for wlroots | <!--pkgs-->
home-manager!
sway
waybar
obsand plugins!
sway
$HOME/.config/sway/config. You can use the upstream default as a starting point: https://github.com/swaywm/sway/blob/master/config.in
swayfrom a raw TTY, make sure you use
exec swayso that if sway crashes, an unlocked TTY is not exposed.
nix-direnv(or if you can't,
nix develop, (or if you can't,
nix-shell)).
./update.sh:
pkgs//metadata.nixwith the latest commit+hash for each package
nix-build-uncached ... packages.nixto build uncached packages (see: nix-build-uncached)
If for some reason the overlay isn't progressing and you want to help, just clone the repo, run
nix-shell --command ./update.shand start fixing issues in the package definitions. Sometimes you might need to edit
default.nixto change the version of
wlrootsa certain package uses.