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
1 Stars 0 Forks 3.9K Commits 0 Opened issues

Description

You should switch to nix-community/nixpkgs-wayland. -- This is now my personal dev fork.

Services available

!
?

Need anything else?

Contributors list

No Data

nixpkgs-wayland

Build Update       Gitpod ready-to-code       Experimental EGLStreams Build

overview

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

Community chat is on Matrix: #nixpkgs-wayland:matrix.org. We are not on Libera.

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: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 = "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 overlay.
  url = "https://github.com/nix-community/nixpkgs-wayland/archive/${rev}.tar.gz";
  waylandOverlay = (import "${builtins.fetchTarball url}/overlay.nix");
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/nix-community/nixpkgs-wayland/archive/master.tar.gz";
      in
      [
      (import "${builtins.fetchTarball url}/overlay.nix")
      ]
    2. Add a new file under a dir, ~/.config/nixpkgs/overlays/nixpkgs-wayland.nix:

      let
      url = "https://github.com/nix-community/nixpkgs-wayland/archive/master.tar.gz";
      in
      (import "${builtins.fetchTarball url}/overlay.nix")

    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 | | nwg-panel | GTK3-based panel for Sway window manager | | 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 | | 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 | | sirula | Sirula (simple rust launcher) is an app launcher 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-unwrapped | An i3-compatible tiling Wayland compositor | | waybar | Highly customizable Wayland bar for Sway and Wlroots based compositors | | wayfire | 3D wayland compositor | | wayland-protocols-master | Wayland protocol extensions | | 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 | | wshowkeys | Displays keypresses on screen on supported Wayland compositors | | 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.

NVIDIA Users

Nvidia users may wish to use

outputs.overlay-egl
instead of
outputs.ovelay
to get tools that are built against
wlroots-eglstream
. This enables Sway on, for example, an RTX 3080.

Non-flakes users will need to update their import statement, so that it looks more like this:

nix
let
  rev = "master";
  url = "https://github.com/nix-community/nixpkgs-wayland/archive/${rev}.tar.gz";
  waylandOverlay = (import "${builtins.fetchTarball url}/overlay.nix");
  waylandOverlayEgl = (import "${builtins.fetchTarball url}/overlay-egl.nix");
in
  {
    nixpkgs.overlays = [ waylandOverlayEgl ];
    environment.systemPackages = with pkgs; [ wayvnc ];
    # ...
  }

Development Guide

  • Use
    direnv
    +
    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.

GitPod

This project can be opened and contributed to, within minutes, by using GitPod:

https://gitpod.io#https://github.com/nix-community/nixpkgs-wayland

(Note the Nix sandbox is disabled in GitPod. Some users choose not to push artifacts from this environment to production caches.)

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.