Need help with nixpkgs-wayland?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

colemickens
172 Stars 21 Forks 2.5K Commits 45 Opened issues

Description

Automated, pre-built packages for Wayland (sway/wlroots) tools for NixOS.

Services available

!
?

Need anything else?

Contributors list

# 74,076
Azure
Groovy
gtk
wlroots
602 commits
# 12,244
Angular
nix
angular...
declara...
9 commits
# 220,349
Shell
agda
nixpkgs
nix
7 commits
# 168,064
Shell
nix
wm
swaywm
6 commits
# 45,259
nix
Windows
vte
Zsh
2 commits
# 92,911
Shell
python-...
python-...
Linux
1 commit
# 324,193
Shell
Amazon ...
nix
Haskell
1 commit
# 312,891
nix
nixpkgs
graphic...
Emacs
1 commit
# 290,035
JavaScr...
Mongoos...
elastic...
elevent...
1 commit
# 35,348
XML
gRPC
zsh-pro...
vuejs
1 commit

nixpkgs-wayland

builds.sr.ht status (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-wayland
on freenode is plumbed into the Matrix room.

Usage

Binary Cache

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.

Flake Usage

  • Build and run the Wayland-fixed up version of OBS-Studio:
    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
        ];
      };
    })];
  };
};

}

Install for NixOS (non-flakes, manual import)

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.
{ 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
    ];
  }

Install for non-NixOS users

Non-NixOS users have many options, but here are two explicitly:

  1. Activate flakes mode, then just run them outright like the first example in this README.

  2. 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
    .
  1. There are two ways to activate an overlay for just your user:

    1. 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))
      ]
    2. 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...)

  2. Then, nix-env will have access to the packages:

nix-env -iA neatvnc

Packages

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-->

Tips

General

  • I recommend using
    home-manager
    !
  • It has modules and options for:
    • sway
    • waybar
    • obs
      and plugins!
    • more!

sway

  • You will likely want a default config file to place at
    $HOME/.config/sway/config
    . You can use the upstream default as a starting point: https://github.com/swaywm/sway/blob/master/config.in
  • If you start
    sway
    from a raw TTY, make sure you use
    exec sway
    so that if sway crashes, an unlocked TTY is not exposed.

Development Guide

  • Use
    nix-direnv
    (or if you can't,
    nix develop
    , (or if you can't,
    nix-shell
    )).
  • ./update.sh
    :
    • updates flake inputs
    • updates
      pkgs//metadata.nix
      with the latest commit+hash for each package
    • calls
      nix-build-uncached ... packages.nix
      to build uncached packages (see: nix-build-uncached)
    • pushes to "nixpkgs-wayland" on cachix

If for some reason the overlay isn't progressing and you want to help, just clone the repo, run

nix-shell --command ./update.sh
and start fixing issues in the package definitions. Sometimes you might need to edit
default.nix
to change the version of
wlroots
a certain package uses.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.