All Projects → colemickens → Nixpkgs Wayland

colemickens / Nixpkgs Wayland

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

Projects that are alternatives of or similar to Nixpkgs Wayland

Dotfiles
Configuration files for XMonad, Emacs, NixOS, Taffybar and more.
Stars: ✭ 127 (-28.65%)
Mutual labels:  nixos, nix, tiling-window-manager
Crate2nix
nix build file generator for rust crates
Stars: ✭ 123 (-30.9%)
Mutual labels:  nixos, nix
Deploy Rs
A simple multi-profile Nix-flake deploy tool.
Stars: ✭ 164 (-7.87%)
Mutual labels:  nixos, nix
Vulnix
Vulnerability (CVE) scanner for Nix/NixOS.
Stars: ✭ 161 (-9.55%)
Mutual labels:  nixos, nix
Nix Bitcoin
A collection of Nix packages and NixOS modules for easily installing full-featured Bitcoin nodes with an emphasis on security.
Stars: ✭ 154 (-13.48%)
Mutual labels:  nixos, nix
Iohk Ops
NixOps deployment configuration for IOHK devops
Stars: ✭ 113 (-36.52%)
Mutual labels:  nixos, nix
Dotfiles
My dotfiles
Stars: ✭ 150 (-15.73%)
Mutual labels:  nixos, nix
System
My system configuration
Stars: ✭ 94 (-47.19%)
Mutual labels:  nixos, nix
Nixos Manager
Manage your NixOS packages and configuration via a simple, intuitive UI
Stars: ✭ 128 (-28.09%)
Mutual labels:  nixos, nix
Nixos Weekly
NixOS Weekly Newsletter
Stars: ✭ 137 (-23.03%)
Mutual labels:  nixos, nix
Nixos Mailserver
A complete and Simple Nixos Mailserver
Stars: ✭ 172 (-3.37%)
Mutual labels:  nixos, nix
Home Manager
Manage a user environment using Nix [maintainer=@rycee]
Stars: ✭ 2,447 (+1274.72%)
Mutual labels:  nixos, nix
Nix Config
My NixOS configuration
Stars: ✭ 112 (-37.08%)
Mutual labels:  nixos, nix
Docker
Dockerfiles to package Nix in a minimal docker container
Stars: ✭ 114 (-35.96%)
Mutual labels:  nixos, nix
Nix Deploy
Deploy software or an entire NixOS system configuration to another NixOS system
Stars: ✭ 111 (-37.64%)
Mutual labels:  nixos, nix
Micro Ci
A tiny CI server built around GitHub and Nix
Stars: ✭ 126 (-29.21%)
Mutual labels:  nixos, nix
Nixos Configs
My NixOS configs
Stars: ✭ 86 (-51.69%)
Mutual labels:  nixos, nix
Vuizvui
Nix(OS) expressions used by the OpenLab and its members
Stars: ✭ 87 (-51.12%)
Mutual labels:  nixos, nix
Shabka
Shabka. Declaritive description of my network, workstations and servers.
Stars: ✭ 138 (-22.47%)
Mutual labels:  nixos, nix
Perceptia
Dynamic window manager with support for Wayland
Stars: ✭ 138 (-22.47%)
Mutual labels:  wayland, tiling-window-manager

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

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

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/<pkg>/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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].