diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-08-15 18:20:17 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-08-15 18:21:12 +0000 |
commit | 86ceec2a687ad3d91b381aaa56736ab08c5fc74c (patch) | |
tree | e2934cab1954c71a2ccdd7357d92fc789ee0d435 /overlays | |
parent | 447d62e0ebe782060c3b6681783d46600b2c9b16 (diff) | |
parent | c35bb6bebb98193fdc001e6b8c6b6da3bc791c2f (diff) | |
download | nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar.gz nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar.bz2 nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar.lz nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar.xz nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.tar.zst nixlib-86ceec2a687ad3d91b381aaa56736ab08c5fc74c.zip |
Add 'overlays/patches/nixpkgs-wayland/' from commit 'c35bb6bebb98193fdc001e6b8c6b6da3bc791c2f'
git-subtree-dir: overlays/patches/nixpkgs-wayland git-subtree-mainline: 447d62e0ebe782060c3b6681783d46600b2c9b16 git-subtree-split: c35bb6bebb98193fdc001e6b8c6b6da3bc791c2f
Diffstat (limited to 'overlays')
128 files changed, 4129 insertions, 0 deletions
diff --git a/overlays/patches/nixpkgs-wayland/.ci/prep.sh b/overlays/patches/nixpkgs-wayland/.ci/prep.sh new file mode 100755 index 000000000000..d3a57e7b509a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/.ci/prep.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +cachix use nixpkgs-wayland + +ssh-keyscan github.com >> ${HOME}/.ssh/known_hosts + +git config --global user.name \ + "Cole Botkens" + +git config --global user.email \ + "cole.mickens+colebot@gmail.com" diff --git a/overlays/patches/nixpkgs-wayland/.ci/srht-job.yaml b/overlays/patches/nixpkgs-wayland/.ci/srht-job.yaml new file mode 100644 index 000000000000..b05a6c70313c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/.ci/srht-job.yaml @@ -0,0 +1,18 @@ +image: nixos/unstable +sources: + - git@github.com:colemickens/nixpkgs-wayland +secrets: + - df3e056f-2931-4a93-86db-e40c2fa6098d # cachix.dhall + - bd070f2a-01d1-4b7b-9795-036deb06912c # id_ed25519 +environment: + CI_BUILD: "sr.ht" +tasks: + - prep: | + cd nixpkgs-wayland + nix-shell --pure --command "./.ci/prep.sh" + - update: | + cd nixpkgs-wayland + nix-shell --pure --command "JOB_ID=$JOB_ID ./update.sh" + # - update-flakes: | + # cd nixpkgs-wayland + # nix-shell --pure --command "JOB_ID=$JOB_ID ./update-flakes.sh" diff --git a/overlays/patches/nixpkgs-wayland/.ci/srht-submit.sh b/overlays/patches/nixpkgs-wayland/.ci/srht-submit.sh new file mode 100755 index 000000000000..8a863b1b8eac --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/.ci/srht-submit.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +# user-specific +SECRET_NAME="cole.mickens@gmail.com/meta.sr.ht" +SECRET_ATTR="pat" + +# less user-specific +BUILD_HOST="https://builds.sr.ht" +if which gopass ; then + TOKEN="$(gopass show "${SECRET_NAME}" | grep "${SECRET_ATTR}" | cut -d' ' -f2)" +else + TOKEN="$(cat "/home/cole/.srht-token")" +fi + +DATA="$(mktemp)" +MANIFEST="$(jq -aRs . <"${DIR}/srht-job.yaml")" +echo "{ \"tags\": [ \"nixpkgs-wayland\" ], \"manifest\": ${MANIFEST} }" > "${DATA}" + +curl \ + -H "Authorization:token ${TOKEN}" \ + -H "Content-Type: application/json" \ + -d "@${DATA}" \ + "${BUILD_HOST}/api/jobs" diff --git a/overlays/patches/nixpkgs-wayland/.envrc b/overlays/patches/nixpkgs-wayland/.envrc new file mode 100644 index 000000000000..3550a30f2de3 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/.envrc @@ -0,0 +1 @@ +use flake diff --git a/overlays/patches/nixpkgs-wayland/.gitignore b/overlays/patches/nixpkgs-wayland/.gitignore new file mode 100644 index 000000000000..1eb9422ad8fb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/.gitignore @@ -0,0 +1,5 @@ +.ci/commit-message +.direnv +*.qcow2 +result +result-* diff --git a/overlays/patches/nixpkgs-wayland/README.md b/overlays/patches/nixpkgs-wayland/README.md new file mode 100644 index 000000000000..486d613994f8 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/README.md @@ -0,0 +1,167 @@ +# flake-wayland-apps +*nee nixpkgs-wayland* + +[![builds.sr.ht status](https://builds.sr.ht/~colemickens/nixpkgs-wayland.svg)](https://builds.sr.ht/~colemickens/nixpkgs-wayland?) + +- [flake-wayland-apps](#flake-wayland-apps) + - [Warning](#warning) + - [Overview](#overview) + - [Usage](#usage) + - [Flakes Usage](#flakes-usage) + - [Example Usage](#example-usage) + - [Packages](#packages) + - [Tips](#tips) + - [`sway`](#sway) + - [`obs-studio` + `wlrobs`](#obs-studio--wlrobs) + - [Development Guide](#development-guide) + +## Warning +* This repo may be renamed soon. (~`nixos-wayland-apps`, maybe) + * `wayland-nix` (ala `sops-nix`)? + * `nixos-wayland` ? + * keep `nixpkgs-wayland`? +* The primary cache server may change soon. + +## Overview + +Automated, pre-built packages for Wayland (sway/wlroots) tools for NixOS. + +There is also now flake support: `.#packages` contain a package list, `.#overlay` is the full set as an overlay. + +(related: [nixpkgs-chromium](https://github.com/colemickens/nixpkgs-chromium) - Chromium with native Wayland support) + +## Usage + +The [NixOS Wiki page on Overlays](https://nixos.wiki/wiki/Overlays) +shows how to activate the overlay. + +The [Cachix landing page for `nixpkgs-wayland`](https://nixpkgs-wayland.cachix.org) shows how to utilize the binary cache. Packages from this overlay are regularly built against `nixos-unstable` and pushed to this cache. + +#### Flakes Usage + +```bash +nix build "github:colemickens/nixpkgs-wayland#waybar" # builds waybar + +nix build "github:colemickens/nixpkgs-wayland" # builds all packages +``` + +#### Example Usage + +```nix +{ config, lib, pkgs, ... }: +let + rev = "master"; # could be a git rev, to pin the overlay (not usually recommended) + 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: +```nix +{ config, lib, pkgs, ... }: + { + # ... + imports = [ + # ... + ./wayland.nix + ]; + } +``` + +Or you can integrate those few lines into your own configuration. + +## Packages + +These packages were mostly recently built (and cached) against: +<!--nixpkgs--> +| Channel | Last Channel Commit Time | +| ------- | ------------------------ | +<!--nixpkgs--> + +<!--pkgs--> +| Package | Last Updated (UTC) | Description | +| ------- | ------------------ | ----------- | +| [aml](https://github.com/any1/neatvnc) | 2020-07-26 14:57:11Z | liberally licensed VNC server library that's intended to be fast and neat | +| [bspwc](https://git.sr.ht/~bl4ckb0ne/bspwc) | 2020-01-18 03:54:38Z (pinned) | Binary space partitioning wayland compositor | +| [cage](https://www.hjdskes.nl/projects/cage/) | 2020-08-02 15:43:05Z | A Wayland kiosk | +| [clipman](https://github.com/yory8/clipman) | 2020-06-29 21:10:10Z | A basic clipboard manager for Wayland, with support for persisting copy buffers after an application exits | +| [drm_info](https://github.com/ascent12/drm_info) | 2020-07-04 07:46:47Z | Small utility to dump info about DRM devices. | +| [emacs](https://www.gnu.org/software/emacs/) | 2020-08-14 17:17:14Z | The extensible, customizable GNU text editor | +| [gebaar-libinput](https://github.com/Coffee2CodeNL/gebaar-libinput) | 2019-04-05 13:27:03Z | Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput | +| [glpaper](https://bitbucket.org/Scoopta/glpaper) | 2020-03-29 19:46:07 | GLPaper is a wallpaper program for wlroots based wayland compositors such as sway that allows you to render glsl shaders as your wallpaper | +| [grim](https://github.com/emersion/grim) | 2020-07-21 18:11:14Z | Grab images from a Wayland compositor | +| [gtk-layer-shell](https://github.com/wmww/gtk-layer-shell) | 2020-08-12 19:57:39Z | A library to create panels and other desktop components for Wayland using the Layer Shell protocol | +| [i3status-rust](https://github.com/greshake/i3status-rust) | 2020-08-14 16:00:22Z | Very resource-friendly and feature-rich replacement for i3status | +| [imv](https://github.com/eXeC64/imv) | 2020-02-08 00:29:25Z (pinned) | A command line image viewer for tiling window managers | +| [kanshi](https://github.com/emersion/kanshi) | 2020-08-05 14:50:47Z | Dynamic display configuration | +| [lavalauncher](https://git.sr.ht/~leon_plickat/lavalauncher) | 2020-08-15 16:16:45Z | A simple launcher for Wayland. | +| [mako](https://wayland.emersion.fr/mako) | 2020-08-03 16:08:05Z | A lightweight Wayland notification daemon | +| [neatvnc](https://github.com/any1/neatvnc) | 2020-07-26 13:52:00Z | liberally licensed VNC server library that's intended to be fast and neat | +| [obs-studio](https://obsproject.com) | 2020-08-10 13:48:20Z | Free and open source software for video recording and live streaming | +| [obs-wlrobs](https://sr.ht/~scoopta/wlrobs) | 2020-08-12 12:00:28 | wlrobs is an obs-studio plugin that allows you to screen capture on wlroots based wayland compositors | +| [oguri](https://github.com/vilhalmer/oguri) | 2020-05-27 14:14:43Z | A very nice animated wallpaper tool for Wayland compositors | +| [redshift-wayland](http://jonls.dk/redshift) | 2019-08-24 15:20:17Z | Screen color temperature manager | +| [rootbar](https://hg.sr.ht/~scoopta/rootbar) | 2020-04-07 01:06:53 | 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](https://github.com/emersion/slurp) | 2020-08-03 09:44:19Z | Select a region in a Wayland compositor | +| [sway](https://swaywm.org) | 2020-08-11 22:37:11Z | i3-compatible tiling Wayland compositor | +| [swaybg](https://github.com/swaywm/swaybg) | 2019-08-08 23:03:44Z | Wallpaper tool for Wayland compositors | +| [swayidle](https://swaywm.org) | 2020-04-30 10:15:57Z | Sway's idle management daemon | +| [swaylock](https://swaywm.org) | 2020-07-13 13:49:10Z | Screen locker for Wayland | +| [waybar](https://github.com/Alexays/Waybar) | 2020-08-15 08:59:12Z | Highly customizable Wayland Polybar like bar for Sway and Wlroots based compositors. | +| [waybox](https://github.com/wizbright/waybox) | 2020-05-01 03:02:14Z | An openbox clone on Wayland (WIP) | +| [wayfire](https://wayfire.org/) | 2020-08-15 15:55:56Z | 3D wayland compositor | +| [waypipe](https://gitlab.freedesktop.org/mstoeckl/waypipe/) | 2020-07-06 00:16:52Z | Network transparency with Wayland | +| [wayvnc](https://github.com/any1/wayvnc) | 2020-07-31 18:23:25Z | A VNC server for wlroots based Wayland compositors | +| [wdisplays](https://github.com/cyclopsian/wdisplays) | 2020-05-09 19:42:15Z | GUI display configurator for wlroots compositors | +| [wev](https://git.sr.ht/~sircmpwn/wev) | 2020-07-07 15:20:53Z | A tool for debugging events on a Wayland window, analagous to the X11 tool xev. | +| [wf-recorder](https://github.com/ammen99/wf-recorder) | 2020-07-19 12:45:44Z | Utility program for screen recording of wlroots-based compositors | +| [wl-clipboard](https://github.com/bugaevc/wl-clipboard) | 2020-02-13 16:44:26Z | Select a region in a Wayland compositor | +| [wl-gammactl](https://github.com/mischw/wl-gammactl) | 2020-02-16 12:53:36Z | Small GTK GUI application to set contrast, brightness and gamma for wayland compositors which support the wlr-gamma-control protocol extension. | +| [wlay](https://github.com/atx/wlay) | 2019-07-04 17:03:15Z | Graphical output management for Wayland | +| [wldash](https://wldash.org) | 2020-07-22 10:42:48Z | Wayland launcher/dashboard | +| [wlfreerdp](http://www.freerdp.com/) | 2020-08-11 12:34:07Z | A Remote Desktop Protocol Client | +| [wlogout](https://github.com/ArtsyMacaw/wlogout) | 2020-03-14 05:34:47Z | A wayland based logout menu | +| [wlr-randr](https://github.com/emersion/wlr-randr) | 2020-07-27 14:33:25Z | An xrandr clone for wlroots compositors | +| [wlroots](https://github.com/swaywm/wlroots) | 2020-08-14 15:57:31Z | A modular Wayland compositor library | +| [wltrunk](https://git.sr.ht/~bl4ckb0ne/wltrunk) | 2020-03-11 13:38:35Z (pinned) | High-level Wayland compositor library based on wlroots | +| [wofi](https://hg.sr.ht/~scoopta/wofi) | 2020-08-11 19:07:49 | Wofi is a launcher/menu program for wlroots based wayland compositors such as sway | +| [wtype](https://github.com/atx/wtype) | 2020-08-05 16:06:59Z | xdotool type for wayland | +| [xdg-desktop-portal-wlr](https://github.com/emersion/xdg-desktop-portal-wlr) | 2020-08-07 16:33:26Z | xdg-desktop-portal backend for wlroots | +<!--pkgs--> + +</details> + +## Tips + +#### `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 +* I recommend using [`home-manager`](https://github.com/rycee/home-manager/). It has options for enabling and + configuring Sway. +* I've recently learned that simply running `sway` at a TTY can be considered insecure. If Sway crashes, the TTY + is left in an unlocked state. Running Sway with a DM or as `exec sway` can help mitigate this concern. + +#### `obs-studio` + `wlrobs` + +* I recommend using [`home-manager`](https://github.com/rycee/home-manager/). It has options for enabling and + configuring OBS and `obs-wlrobs`. Enabling this overlay and those options is sufficient. + +## Development Guide + +* Use `nix-shell`. +* `./update.sh`: + * updates `nixpkgs/<channel>/metadata.nix` per the upstream channel + * updates `pkgs/<pkg>/metadata.nix` with the latest commit+hash for each package + * calls `nix-build-uncached build.nix` to build uncached packages (see: [nix-build-uncached](https://github.com/Mic92/nix-build-uncached)) + * pushes to ["nixpkgs-wayland" on cachix](https://nixpkgs-wayland.cachix.org) + +Note: in some cases, you may need to manually update `cargoSha256` or `vendorSha256` in `pkgs/<pkg>/metadata.nix` as well. + +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. diff --git a/overlays/patches/nixpkgs-wayland/default.nix b/overlays/patches/nixpkgs-wayland/default.nix new file mode 100644 index 000000000000..2e2aab7895f1 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/default.nix @@ -0,0 +1,71 @@ +self: pkgs: +let +waylandPkgs = rec { + # wlroots-related + cage = pkgs.callPackage ./pkgs/cage {}; + drm_info = pkgs.callPackage ./pkgs/drm_info {}; + emacs-pgtk = pkgs.callPackage ./pkgs/emacs {}; + gebaar-libinput = pkgs.callPackage ./pkgs/gebaar-libinput {}; + glpaper = pkgs.callPackage ./pkgs/glpaper {}; + grim = pkgs.callPackage ./pkgs/grim {}; + kanshi = pkgs.callPackage ./pkgs/kanshi {}; + imv = pkgs.callPackage ./pkgs/imv {}; + lavalauncher = pkgs.callPackage ./pkgs/lavalauncher {}; + mako = pkgs.callPackage ./pkgs/mako {}; + oguri = pkgs.callPackage ./pkgs/oguri {}; + rootbar = pkgs.callPackage ./pkgs/rootbar {}; + slurp = pkgs.callPackage ./pkgs/slurp {}; + sway-unwrapped = pkgs.callPackage ./pkgs/sway {}; + swaybg = pkgs.callPackage ./pkgs/swaybg {}; + swayidle = pkgs.callPackage ./pkgs/swayidle {}; + swaylock = pkgs.callPackage ./pkgs/swaylock {}; + waybar = pkgs.callPackage ./pkgs/waybar {}; + waybox = pkgs.callPackage ./pkgs/waybox { wlroots = wlroots-0-9-x; }; + waypipe = pkgs.callPackage ./pkgs/waypipe {}; + wayvnc = pkgs.callPackage ./pkgs/wayvnc {}; + wdisplays = pkgs.callPackage ./pkgs/wdisplays {}; + wev = pkgs.callPackage ./pkgs/wev {}; + wf-recorder = pkgs.callPackage ./pkgs/wf-recorder {}; + wlay = pkgs.callPackage ./pkgs/wlay {}; + obs-wlrobs = pkgs.callPackage ./pkgs/obs-wlrobs {}; + wl-clipboard = pkgs.callPackage ./pkgs/wl-clipboard {}; + wl-gammactl = pkgs.callPackage ./pkgs/wl-gammactl {}; + wldash = pkgs.callPackage ./pkgs/wldash {}; + wlogout = pkgs.callPackage ./pkgs/wlogout {}; + wlroots = pkgs.callPackage ./pkgs/wlroots {}; + wlr-randr = pkgs.callPackage ./pkgs/wlr-randr {}; + wofi = pkgs.callPackage ./pkgs/wofi {}; + wtype = pkgs.callPackage ./pkgs/wtype {}; + xdg-desktop-portal-wlr = pkgs.callPackage ./pkgs/xdg-desktop-portal-wlr {}; + + gtk-layer-shell = pkgs.callPackage ./pkgs/gtk-layer-shell {}; + clipman = pkgs.callPackage ./pkgs/clipman {}; + + wlroots-tmp = pkgs.callPackage ./pkgs-temp/wlroots {}; + wlroots-0-9-x = pkgs.callPackage ./pkgs-temp/wlroots-0-9-x {}; + + # misc + redshift-wayland = pkgs.callPackage ./pkgs/redshift-wayland { + inherit (pkgs.python3Packages) python pygobject3 pyxdg wrapPython; + geoclue = pkgs.geoclue2; + }; + aml = pkgs.callPackage ./pkgs/aml {}; + neatvnc = pkgs.callPackage ./pkgs/neatvnc {}; + obs-studio = pkgs.libsForQt5.callPackage ./pkgs/obs-studio { ffmpeg = pkgs.ffmpeg_4; }; + wlfreerdp = pkgs.callPackage ./pkgs/wlfreerdp { + inherit (pkgs) libpulseaudio; + inherit (pkgs.gst_all_1) gstreamer gst-plugins-base gst-plugins-good; + }; + + # i3 related + i3status-rust = pkgs.callPackage ./pkgs/i3status-rust {}; + + # wayfire stuff + wayfire = pkgs.callPackage ./pkgs/wayfire {}; + + # bspwc/wltrunk stuff + bspwc = pkgs.callPackage ./pkgs/bspwc { wlroots = wlroots-tmp; }; + wltrunk = pkgs.callPackage ./pkgs/wltrunk { wlroots = wlroots-tmp; }; +}; +in + waylandPkgs // { inherit waylandPkgs; } diff --git a/overlays/patches/nixpkgs-wayland/demo/README.md b/overlays/patches/nixpkgs-wayland/demo/README.md new file mode 100644 index 000000000000..2aebdff76fc0 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/README.md @@ -0,0 +1,9 @@ +# Demo + +This is a WIP demo + +## QEMU Demo + + ./vm-build.sh && ./vm-run.sh + + diff --git a/overlays/patches/nixpkgs-wayland/demo/configuration.nix b/overlays/patches/nixpkgs-wayland/demo/configuration.nix new file mode 100644 index 000000000000..4f3a55177f0c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/configuration.nix @@ -0,0 +1,37 @@ +{ ... }: { + imports = [ + (import ./profile.nix { user = "demo"; }) + ]; + + nix.trustedUsers = [ "root" "@wheel" ]; + + security.sudo.enable = true; + + users.users.demo = { + uid = 1000; + isNormalUser = true; + password = "demo1234"; + #hashedPassword = "$6$3vp.8UtiX$XSiK9o.4OMB1e.NWH9TebK2GigdAX2HvH9w0XUnv9gU2a96b6zLQCRS7HNnApafK16K2puxWjnC0A.eriwpUD1"; + extraGroups = [ + # allow demo to administer the machine + "wheel" + ]; + }; + + users.users.root = { + password = "root1234"; + }; + + services.xserver.enable = false; + + services.mingetty.helpLine = '' + + Welcome to the Sway demo + + login: demo + password: demo1234 + + Once logged-in, type `sway` to start the desktop environment. + ''; +} + diff --git a/overlays/patches/nixpkgs-wayland/demo/home/i3status-rs.toml b/overlays/patches/nixpkgs-wayland/demo/home/i3status-rs.toml new file mode 100644 index 000000000000..66154989d75c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/home/i3status-rs.toml @@ -0,0 +1,66 @@ +# See https://github.com/greshake/i3status-rust/blob/master/blocks.md + +#theme = "solarized-dark" +#theme = "slick" +icons = "awesome" +#icons = "material" + +[theme] +name = "slick" + +#https://github.com/greshake/i3status-rust/wiki/Theming-&-Icons +# [theme.overrides] +# idle_bg = "#123456" +# idle_fg = "#abcdef" + +[[block]] +block = "memory" +display_type = "memory" +format_mem = "{Mup}%" +format_swap = "{SUp}%" + +[[block]] +block = "cpu" +interval = 1 + +[[block]] +block = "load" +interval = 1 +format = "{1m}" + +[[block]] +block = "net" +#device = "wlp4s0" +ssid = true +ip = true +speed_up = false +graph_up = true +interval = 5 + +# [[block]] +# block = "music" +# player = "spotify" +# buttons = ["play", "next"] + +# [[block]] +# block = "xrandr" +# icons = true +# resolution = true +# interval = 2 + +#[[block]] +#block = "backlight" +#device = "intel_backlight" + +[[block]] +block = "sound" +on_click = "pavucontrol" + +#[[block]] +#block = "battery" +#interval = 10 + +[[block]] +block = "time" +interval = 60 +format = "%a %d/%m %R" diff --git a/overlays/patches/nixpkgs-wayland/demo/home/profile.nix b/overlays/patches/nixpkgs-wayland/demo/home/profile.nix new file mode 100644 index 000000000000..aa8ff8331c8c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/home/profile.nix @@ -0,0 +1,52 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + brightnessctl + dmenu + pavucontrol + playerctl + termite + xdg_utils # needed for termite URL opening + xwayland + ] ++ (with waylandPkgs; [ + grim # screenshot CLI + i3status-rust # menu bar + kanshi # broken: display configurator + mako # notification manager + redshift-wayland # ??? + slurp # dimension-grabbing CLI, to use with grim + swayidle # lock screen manager + wlstream # screen recording CLI + ]); + + programs.termite.enable = true; + programs.termite.scrollbackLines = 10000; + + programs.firefox.enable = true; + + # FIXME: doesn't work yet + xsession.enable = true; + xsession.windowManager.command = "sway"; + + xdg.enable = true; + xdg.configFile."sway/config" = { + source = pkgs.substituteAll { + name = "sway-config"; + src = ./sway-config; + wallpaper = ./wallpaper.jpg; + i3status = ./i3status-rs.toml; + }; + onChange = '' + echo "Reloading sway" + #FIXME: swaymsg reload + ''; + }; + + xdg.configFile."chromium-flags.conf" = { + source = pkgs.writeText "chromium-flags.conf" '' + --force-device-scale-factor=1 + ''; + }; + + gtk.enable = true; + gtk.gtk3.waylandSupport = true; +} diff --git a/overlays/patches/nixpkgs-wayland/demo/home/sway-config b/overlays/patches/nixpkgs-wayland/demo/home/sway-config new file mode 100644 index 000000000000..eab473f3c92a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/home/sway-config @@ -0,0 +1,243 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +#set $term urxvt +set $term termite +# alacritty +# Your preferred application launcher +# Note: it's recommended that you pass the final command to sway +set $menu dmenu_path | dmenu | xargs swaymsg exec + +### Output configuration +# +# Default wallpaper (more resolutions are available in __DATADIR__/backgrounds/sway/) +output * bg @wallpaper@ fill + +output eDP-1 scale 1.5 + +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# +exec swayidle \ + timeout 500 'swaylock -c 000000' \ + timeout 600 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -c 000000' + +# Start the notification center +exec mako --default-timeout 50000 + +# Start one shell +exec $term + +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 600 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +input "1386:888:Wacom_Intuos_BT_M_Pen" { + map_to_output HDMI-A-2 + # FIXME: map BTN_0 to BTN_3, BTN_STYLUS and BTN_STYLUS2 buttons +} + +### Key bindings +# +# Basics: +# + # start a terminal + bindsym $mod+Return exec $term + + # kill focused window + bindsym $mod+Shift+q kill + + # start your launcher + bindsym $mod+d exec $menu + bindsym $mod+p exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # reload the configuration file + bindsym $mod+Shift+c reload + + # exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # _move_ the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # switch to workspace + bindsym $mod+1 workspace 1 + bindsym $mod+2 workspace 2 + bindsym $mod+3 workspace 3 + bindsym $mod+4 workspace 4 + bindsym $mod+5 workspace 5 + bindsym $mod+6 workspace 6 + bindsym $mod+7 workspace 7 + bindsym $mod+8 workspace 8 + bindsym $mod+9 workspace 9 + bindsym $mod+0 workspace 10 + # move focused container to workspace + bindsym $mod+Shift+1 move container to workspace 1 + bindsym $mod+Shift+2 move container to workspace 2 + bindsym $mod+Shift+3 move container to workspace 3 + bindsym $mod+Shift+4 move container to workspace 4 + bindsym $mod+Shift+5 move container to workspace 5 + bindsym $mod+Shift+6 move container to workspace 6 + bindsym $mod+Shift+7 move container to workspace 7 + bindsym $mod+Shift+8 move container to workspace 8 + bindsym $mod+Shift+9 move container to workspace 9 + bindsym $mod+Shift+0 move container to workspace 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# Media keys +bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% +bindsym XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioPrev exec playerctl previous +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% +bindsym XF86MonBrightnessDown exec brightnessctl set 5%- +bindsym XF86MonBrightnessUp exec brightnessctl set +5% +bindsym XF86LaunchB exec $menu +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position top + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done + status_command i3status-rs @i3status@ + + colors { + statusline #ffffff + background #323232 + inactive_workspace #32323200 #32323200 #5c5c5c + } +} diff --git a/overlays/patches/nixpkgs-wayland/demo/home/wallpaper.jpg b/overlays/patches/nixpkgs-wayland/demo/home/wallpaper.jpg new file mode 100644 index 000000000000..0500d18da321 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/home/wallpaper.jpg Binary files differdiff --git a/overlays/patches/nixpkgs-wayland/demo/profile.nix b/overlays/patches/nixpkgs-wayland/demo/profile.nix new file mode 100644 index 000000000000..87d490576ac6 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/profile.nix @@ -0,0 +1,66 @@ +{ user }: +{ pkgs, ... }@args: +let + home-manager = builtins.fetchTarball https://github.com/rycee/home-manager/archive/master.tar.gz; +in +{ + imports = [ + "${home-manager}/nixos" + ]; + + nixpkgs.overlays = [ (import ../.) ]; + + # When this is enabled, the QEMU VM goes blank after boot + #networking.networkmanager.enable = true; + + fonts.fonts = with pkgs; [ + dejavu_fonts # just a basic good fond + font-awesome_5 # needed by i3status-rust + ]; + + # add sound support + hardware.pulseaudio.enable = true; + + # to allow control of the screen brightness + hardware.brightnessctl.enable = true; + + # setup the user's home + home-manager.users."${user}" = (import ./home/profile.nix) args; + + # Sway + programs.sway-beta.enable = true; + programs.sway-beta.extraSessionCommands = '' + # Tell toolkits to use wayland + export CLUTTER_BACKEND=wayland + #export QT_QPA_PLATFORM=wayland-egl + export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 + export SDL_VIDEODRIVER=wayland + + # Fix krita and other Egl-using apps + export LD_LIBRARY_PATH=/run/opengl-driver/lib + + # Disable HiDPI scaling for X apps + # https://wiki.archlinux.org/index.php/HiDPI#GUI_toolkits + export GDK_SCALE=1 + export QT_AUTO_SCREEN_SCALE_FACTOR=0 + ''; + + # manage those with home-manager + programs.sway-beta.extraPackages = []; + + # Add the required groups for the user to get access + users.extraUsers."${user}" = { + extraGroups = [ + # allow sudo + "wheel" + "input" + "tty" + "audio" + "video" + # allow sway's setuid executable + "sway" + "networkmanager" + ]; + }; + +} diff --git a/overlays/patches/nixpkgs-wayland/demo/vm-build.sh b/overlays/patches/nixpkgs-wayland/demo/vm-build.sh new file mode 100755 index 000000000000..71a9ed753cb7 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/vm-build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +nix-build '<nixpkgs/nixos>' \ + --argstr configuration "$PWD/configuration.nix" \ + -A vm diff --git a/overlays/patches/nixpkgs-wayland/demo/vm-run.sh b/overlays/patches/nixpkgs-wayland/demo/vm-run.sh new file mode 100755 index 000000000000..98960f9889ec --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/demo/vm-run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +if [[ ! -e ./result ]]; then + echo Run ./vm-build.sh first + exit 1 +fi + +exec ./result/bin/run-nixos-vm diff --git a/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/README.md b/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/README.md new file mode 100644 index 000000000000..e1bd4bf17076 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/README.md @@ -0,0 +1,136 @@ +# Sway on non-NixOS Distributions + +Note, we no longer build this overlay against `nixpkgs-unstable`. +This means that if you follow this guide, you will wind up building +`wlroots`, `sway`, etc from source. It doesn't take a long time, +but it won't be pre-cached like the guide/video imply. + +## Walkthrough - NixGL + Sway on Ubuntu + +This guide will walk you through running `sway` on Ubuntu 18.10 via `nix` and `nixpkgs`. + +At a high-level: +1. Install `nix` +2. Configure `nix` to use our binary cache where these packages are built against various versions of `nixpkgs` +3. Install `NixGL` allowing us to use OpenGL nix packages on non-NixOS distros +4. Install `sway-beta` from `nixpkgs` and this overlay +5. Configure `sway-beta` with some settings for this demo +5. Drop to a TTY and run it! + +### Quick Version + +If you'd like the quick version, you can use the quickshot `execute.sh` script in this directory: +``` +cd /tmp +wget https://raw.githubusercontent.com/colemickens/nixpkgs-wayland/master/docs/sway-on-ubuntu/execute.sh +chmod +x execute.sh +./execute.sh +``` + +[![Quick Steps Video on YouTube](https://img.youtube.com/vi/Sri_24TJtFI/0.jpg)](https://www.youtube.com/watch?v=Sri_24TJtFI) + +You can then skip to the end. + +### Detailed Version + +#### Install Nix + +Per the instructions on the NixOS Wiki: [Nix Installation Guide - Single User Install](https://nixos.wiki/wiki/Nix_Installation_Guide): +```bash +sudo apt update; sudo apt install curl git +sudo install -d -m755 -o $(id -u) -g $(id -g) /nix +curl https://nixos.org/nix/install | sh +source .nix-profile/etc/profile.d/nix.sh +``` + +(I recommend you logout/login here, so you don't need +to continue to source the nix profile in each shell.) + + +#### Install Cachix + +`cachix` is a service that provides binary caching and a CLI +that enables easy uploading to and trusting of binary caches. + +This will install `cachix` from a specific snapshot of `nixpkgs` +and make it available in your environment. **It will then trust +the binary cache that contains builds from this overlay.** + +```bash +nix-env -iA cachix -f https://github.com/NixOS/nixpkgs/tarball/889c72032f8595fcd7542c6032c208f6b8033db6 + +# note that only the official NixOS cache is listed (cache.nixos.org) +cat ~/.config/nix + +# ignore errors from this command (https://github.com/cachix/cachix/issues/148) +cachix use nixpkgs-wayland + +# note that now the nixpkgs-wayland.cachix.org server is trusted +cat ~/.config/nix +``` + +This will cause future `nix` commands to check with our binary cache +instead of building everything from scratch. This repository is built against +`nixpkgs-unstable` which is what you're now using, so you shouldn't have to +build anything. Even if you did, `nix` effectively guarantees it will "just build"m, +assuming enough RAM, CPU, etc. + +#### Enable the `nixpkgs-wayland` overlay + +```bash +mkdir -p $HOME/.config/nixpkgs/overlays +git clone https://github.com/colemickens/nixpkgs-wayland.git \ + $HOME/.config/nixpkgs/overlays/nixpkgs-wayland +``` + +#### Install NixGL and Sway + +OpenGL enabled Nix applications on non-NixOS operating systems require +the use of a wrapper. I've added some summary details to the NixOS Wiki: +[Nixpkgs with OpenGL on non-NixOS](https://nixos.wiki/wiki/Nixpkgs_with_OpenGL_on_non-NixOS) + +**Install NixGL and OpenGL drivers** + +(Change the attribute to be installed per your GL vendor.) +```bash +curl -L --fail https://raw.githubusercontent.com/guibou/nixGL/master/default.nix > /tmp/nixgl.nix +``` +**Install Sway and related tools** +```bash +nix-env -iA nixGLIntel -f /tmp/nixgl.nix +nix-env -iA nixpkgs.sway-beta nixpkgs.dmenu nixpkgs.mako nixpkgs.slurp nixpkgs.grim +``` + +This will install `sway-beta` the default configured channel for the Nix install you +performed at the beginning, which is named `nixpkgs`. In our case though, `sway-beta` +is overriden to a newer version by use of this overlay. + +**Install a demo Sway config** +Install the default sway config: +```bash +mkdir -p $HOME/.config/sway +wget 'https://raw.githubusercontent.com/swaywm/sway/master/config.in' \ + -O $HOME/.config/sway/config + +sed -i 's|Mod4|Mod1|g' ~/.config/sway/config +sed -i '/Sway_Wallpaper_Blue_1920x1080.png/d' ~/.config/sway/config +sed -i 's|urxvt|gnome-terminal|g' ~/.config/sway/config +``` + +##### Run Sway + +Let's drop to a TTY and try sway. **Note, this will stop GDM and your current session!** + +```bash +# stop the graphical session +sudo systemctl isolate multi-user.target + +# switch to another TTY +# ctrl+alt+f3 + +# on TTY +nixGLIntel sway +``` + +You can run `sway` under GNOME as well, but there are some oddities about where windows spawn. + diff --git a/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/execute.sh b/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/execute.sh new file mode 100755 index 000000000000..092acbadeb99 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/docs/sway-on-ubuntu/execute.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +set +x +echo "---------------------------------------------" +echo "install nix" +sudo apt-get update -qqy &>/dev/null; sudo apt-get install -qqy curl git &>/dev/null +[[ -f "${HOME}/.nix-profile/etc/profile.d/nix.sh" ]] && source ${HOME}/.nix-profile/etc/profile.d/nix.sh +if ! which nix-env ; then + sudo install -d -m755 -o $(id -u) -g $(id -g) /nix + curl --silent --fail https://nixos.org/nix/install | sh +fi +. "${HOME}/.nix-profile/etc/profile.d/nix.sh" + +set -euo pipefail +echo "---------------------------------------------" +echo "install cachix" +nix-env -iA cachix -f "https://github.com/NixOS/nixpkgs/tarball/889c72032f8595fcd7542c6032c208f6b8033db6" + +echo "---------------------------------------------" +echo "use nixpkgs-wayland binary cache" +cachix use "nixpkgs-wayland" + +echo "---------------------------------------------" +echo "activate \"nixpkgs-wayland\" overlay" +mkdir -p "$HOME/.config/nixpkgs/overlays" +if [[ ! -d "${HOME}/.config/nixpkgs/overlays/nixpkgs-wayland" ]]; then + git clone "https://github.com/colemickens/nixpkgs-wayland.git" \ + "$HOME/.config/nixpkgs/overlays/nixpkgs-wayland" +fi + +echo "---------------------------------------------" +echo "install NixGL, sway, and sway tools" +curl -L --fail https://raw.githubusercontent.com/guibou/nixGL/master/default.nix > /tmp/nixgl.nix +nix-env -iA nixGLIntel -f /tmp/nixgl.nix +nix-env -iA nixpkgs.sway-beta nixpkgs.dmenu nixpkgs.mako nixpkgs.slurp nixpkgs.grim + +echo "---------------------------------------------" +echo "configuring sway" +mkdir -p $HOME/.config/sway +wget 'https://raw.githubusercontent.com/swaywm/sway/master/config.in' \ + -O $HOME/.config/sway/config + +sed -i 's|Mod4|Mod1|g' ~/.config/sway/config +sed -i '/Sway_Wallpaper_Blue_1920x1080.png/d' ~/.config/sway/config +sed -i 's|urxvt|gnome-terminal|g' ~/.config/sway/config + +echo "---------------------------------------------" +echo "done" +echo "---------------------------------------------" +echo "now run:" +echo " - sudo systemctl isolate multi-user.target (this will stop your GDM session)" +echo " - nixGLIntel sway" +echo "when in sway:" +echo " - 'alt+d' starts 'dmenu'" +echo " - 'alt+enter' starts 'gnome-terminal'" +echo "---------------------------------------------" +echo + diff --git a/overlays/patches/nixpkgs-wayland/flake.lock b/overlays/patches/nixpkgs-wayland/flake.lock new file mode 100644 index 000000000000..2bdf258a4dfb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/flake.lock @@ -0,0 +1,77 @@ +{ + "nodes": { + "cachixpkgs": { + "locked": { + "lastModified": 1597444211, + "narHash": "sha256-5JlVzauHV4XlqxVweI9nMhMNszmmfNjFP8lqB5pnDcI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3506bce1d405f078c09a5201e3bb46eb64d5e9e7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-20.03", + "repo": "nixpkgs", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1597053966, + "narHash": "sha256-f9lbPS/GJ1His8fsDqM6gfa8kSqREU4eKiMCS5hrKg4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ec20f52e2ff61e9c36c2b894b62fc1b4bd04c71b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "master": { + "locked": { + "lastModified": 1597513517, + "narHash": "sha256-yl0vdQwRmnDIghfEBvk0n4owCPywxeu8c8r/cCeLgaI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "10d8738108fdedd683f14d70279577f28ac283b8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1597482472, + "narHash": "sha256-Cq4QYgWSpXr2OSTJDR+ZkZzqQBbHc3TyKWzmrYlE2TE=", + "owner": "colemickens", + "repo": "nixpkgs", + "rev": "5c463ebff3ff7a2554aff704cc32d6edecc70636", + "type": "github" + }, + "original": { + "owner": "colemickens", + "ref": "cmpkgs", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "cachixpkgs": "cachixpkgs", + "flake-utils": "flake-utils", + "master": "master", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/overlays/patches/nixpkgs-wayland/flake.nix b/overlays/patches/nixpkgs-wayland/flake.nix new file mode 100644 index 000000000000..3311d30d8b81 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/flake.nix @@ -0,0 +1,89 @@ + +{ + # TODO: rename git repo to 'flake-wayland-apps' + description = "wayland-apps"; + + inputs = { + master = { url = "github:nixos/nixpkgs/master"; }; + #nixpkgs = { url = "github:nixos/nixpkgs/nixos-unstable"; }; + nixpkgs = { url = "github:colemickens/nixpkgs/cmpkgs"; }; # TODO: revert soon + cachixpkgs = { url = "github:nixos/nixpkgs/nixos-20.03"; }; + flake-utils = { url = "github:numtide/flake-utils"; }; # TODO: adopt this + }; + + outputs = inputs: + let + metadata = builtins.fromJSON (builtins.readFile ./latest.json); + + nameValuePair = name: value: { inherit name value; }; + genAttrs = names: f: builtins.listToAttrs (map (n: nameValuePair n (f n)) names); + forAllSystems = genAttrs [ "x86_64-linux" "aarch64-linux" ]; + + pkgsFor = pkgs: system: includeOverlay: + import pkgs { + inherit system; + config.allowUnfree = true; + overlays = if includeOverlay then [ + (import ./default.nix) + ] else []; + }; + in + rec { + devShell = forAllSystems (system: + let + master_ = (pkgsFor inputs.master system false); + nixpkgs_ = (pkgsFor inputs.nixpkgs system false); + cachixpkgs_ = (pkgsFor inputs.cachixpkgs system false); + in + nixpkgs_.mkShell { + nativeBuildInputs = with nixpkgs_; [ + bash cacert + curl git jq mercurial + openssh ripgrep + + cachixpkgs_.cachix + master_.nixFlakes + master_.nix-build-uncached + nixpkgs_.nix-prefetch + ]; + } + ); + + overlay = final: prev: + (import ./default.nix final prev); + + # flakes-util candidate: + # make it even more auto to determine sys from the attr name + # I think it just needs a genAttrs actually + packages = let + pkgs = sys: + let + nixpkgs_ = (pkgsFor inputs.nixpkgs sys true); + packagePlatforms = pkg: pkg.meta.hydraPlatforms or pkg.meta.platforms or [ "x86_64-linux" ]; + pred = n: v: builtins.elem sys (packagePlatforms v); + in + nixpkgs_.lib.filterAttrs pred nixpkgs_.waylandPkgs; + in { + x86_64-linux = pkgs "x86_64-linux"; + aarch64-linux = pkgs "aarch64-linux"; + }; + + # TODO flake-util: join all `inputs.self.packages` + # TODO: recursive dependencies aren't checked + defaultPackage = forAllSystems (system: + let + nixpkgs_ = (pkgsFor inputs.nixpkgs system true); + attrValues = inputs.nixpkgs.lib.attrValues; + out = packages."${system}"; + in + nixpkgs_.symlinkJoin { + name = "nixpkgs-wayland"; + paths = attrValues out; + } + ); + + hydraJobs = { + packages = inputs.self.packages; + }; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/default.nix b/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/default.nix new file mode 100644 index 000000000000..377ea09e89fb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/default.nix @@ -0,0 +1,7 @@ +let + meta = import ./metadata.nix; +in + builtins.fetchTarball { + url = "https://github.com/nixos/nixpkgs/archive/${meta.rev}.tar.gz"; + sha256 = meta.sha256; + } diff --git a/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/metadata.nix b/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/metadata.nix new file mode 100644 index 000000000000..932a2e336c9b --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/nixpkgs/nixos-unstable/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/nixos/nixpkgs"; + branch = "nixos-unstable"; + url = "https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz"; + rev = "32b46dd897ab2143a609988a04d87452f0bbef59"; + sha256 = "1gzfrpjnr1bz9zljsyg3a4zrhk8r927sz761mrgcg56dwinkhpjk"; + revdate = "2020-08-10 11:11:39Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/packages.nix b/overlays/patches/nixpkgs-wayland/packages.nix new file mode 100644 index 000000000000..a989f104d723 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/packages.nix @@ -0,0 +1,9 @@ +let + flake = (import (fetchTarball { + url="https://github.com/edolstra/flake-compat/archive/c75e76f80c57784a6734356315b306140646ee84.tar.gz"; + sha256="071aal00zp2m9knnhddgr2wqzlx6i6qa1263lv1y7bdn2w20h10h"; + }) { + src = builtins.fetchGit ./.; + }).defaultNix; +in + flake.packages."${builtins.currentSystem}" \ No newline at end of file diff --git a/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots-0-9-x/default.nix b/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots-0-9-x/default.nix new file mode 100644 index 000000000000..19f0e03d22bc --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots-0-9-x/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig +, wayland, libGL, wayland-protocols, libinput, libxkbcommon, pixman +, xcbutilwm, libX11, libcap, xcbutilimage, xcbutilerrors, mesa +, libpng, ffmpeg_4 +}: + +stdenv.mkDerivation rec { + pname = "wlroots"; + version = "0.9.1"; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "wlroots"; + rev = version; + sha256 = "0lh0m5wmr5a73zgqnnrrcnrywy7wjsrs839agiq9hf1yrgav3m8z"; + }; + + # $out for the library and $examples for the example programs (in examples): + outputs = [ "out" "examples" ]; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + + buildInputs = [ + wayland libGL wayland-protocols libinput libxkbcommon pixman + xcbutilwm libX11 libcap xcbutilimage xcbutilerrors mesa + libpng ffmpeg_4 + ]; + + mesonFlags = [ + "-Dlibcap=enabled" "-Dlogind=enabled" "-Dxwayland=enabled" "-Dx11-backend=enabled" + "-Dxcb-icccm=enabled" "-Dxcb-errors=enabled" + "-Dfreerdp=disabled" + ]; + + postInstall = '' + # Copy the library to $examples + mkdir -p $examples/lib + cp -P libwlroots* $examples/lib/ + ''; + + postFixup = '' + # Install ALL example programs to $examples: + # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle + # screenshot output-layout multi-pointer rotation tablet touch pointer + # simple + mkdir -p $examples/bin + cd ./examples + for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do + cp "$binary" "$examples/bin/wlroots-$binary" + done + ''; + + meta = with stdenv.lib; { + description = "A modular Wayland compositor library"; + inherit (src.meta) homepage; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots/default.nix b/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots/default.nix new file mode 100644 index 000000000000..bd83be504c3a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs-temp/wlroots/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig +, wayland, libGL, wayland-protocols, libinput, libxkbcommon, pixman +, xcbutilwm, libX11, libcap, xcbutilimage, xcbutilerrors, mesa +, libpng, ffmpeg_4 +}: + +stdenv.mkDerivation rec { + pname = "wlroots"; + version = "bcd5f7d259690b547d9858d201b1126df78c6451"; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "wlroots"; + rev = version; + sha256 = "1bdsm560g2kfbihhhxmdp3ci129w2kqvn8v73hfgk451fa1hq4ja"; + }; + + # $out for the library and $examples for the example programs (in examples): + outputs = [ "out" "examples" ]; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + + buildInputs = [ + wayland libGL wayland-protocols libinput libxkbcommon pixman + xcbutilwm libX11 libcap xcbutilimage xcbutilerrors mesa + libpng ffmpeg_4 + ]; + + mesonFlags = [ + "-Dlibcap=enabled" "-Dlogind=enabled" "-Dxwayland=enabled" "-Dx11-backend=enabled" + "-Dxcb-icccm=enabled" "-Dxcb-errors=enabled" + "-Dfreerdp=disabled" + ]; + + postInstall = '' + # Copy the library to $examples + mkdir -p $examples/lib + cp -P libwlroots* $examples/lib/ + ''; + + postFixup = '' + # Install ALL example programs to $examples: + # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle + # screenshot output-layout multi-pointer rotation tablet touch pointer + # simple + mkdir -p $examples/bin + cd ./examples + for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do + cp "$binary" "$examples/bin/wlroots-$binary" + done + ''; + + meta = with stdenv.lib; { + description = "A modular Wayland compositor library"; + inherit (src.meta) homepage; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs.nix b/overlays/patches/nixpkgs-wayland/pkgs.nix new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs.nix diff --git a/overlays/patches/nixpkgs-wayland/pkgs/aml/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/aml/default.nix new file mode 100644 index 000000000000..a692cd8c81a3 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/aml/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, meson, ninja +, wayland, wayland-protocols +, libxkbcommon, libvncserver +, libpthreadstubs, libdrm +, pixman, libuv, libglvnd +, gnutls +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "aml-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "any1"; + repo = "aml"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon libvncserver + libpthreadstubs libdrm + pixman libuv libglvnd + gnutls + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "liberally licensed VNC server library that's intended to be fast and neat"; + homepage = "https://github.com/any1/neatvnc"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/aml/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/aml/metadata.nix new file mode 100644 index 000000000000..10d517b9d92d --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/aml/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/any1/aml"; + branch = "master"; + rev = "d1783ccb26ad094858633401095085c9de683841"; + sha256 = "1ckfrk3n9r6akvzdvrzr7hbbvrpi6y162x7x7yiz7m0jhn4vzs7l"; + revdate = "2020-07-26 14:57:11Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/bspwc/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/bspwc/default.nix new file mode 100644 index 000000000000..c9ad6462dd90 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/bspwc/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchgit +, meson, ninja, pkgconfig, scdoc +, wlroots, wayland, wayland-protocols +, pixman, libxkbcommon +, libudev, mesa_noglu, libX11 # not mentioned in meson.build... +, wltrunk, libGL +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "bspwc-${version}"; + version = metadata.rev; + + src = fetchgit { + url = "https://git.sr.ht/~bl4ckb0ne/bspwc"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja scdoc ]; + buildInputs = [ + wayland wayland-protocols wlroots wltrunk + pixman libxkbcommon libudev mesa_noglu libX11 libGL + ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Binary space partitioning wayland compositor"; + homepage = "https://git.sr.ht/~bl4ckb0ne/bspwc"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/bspwc/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/bspwc/metadata.nix new file mode 100644 index 000000000000..4b01dbc4d8c5 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/bspwc/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://git.sr.ht/~bl4ckb0ne/bspwc"; + branch = "master"; + rev = "5edc0d19758574ffacaeb4b18eeca4956c2b675e"; + sha256 = "0py3dy0ykgw5my7bn510m06ffpwx0kca7052ncg23s5l9vnwdzvd"; + revdate = "2020-01-18 03:54:38Z"; + skip = true; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/cage/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/cage/default.nix new file mode 100644 index 000000000000..6afa98ea0071 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/cage/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, fetchpatch +, pkgconfig, meson, ninja, scdoc +, wayland, wayland-protocols +, wlroots, pixman, libxkbcommon, libudev, libGL, libX11 +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "cage-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "Hjdskes"; + repo = "cage"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + scdoc + wayland wayland-protocols + wlroots pixman libxkbcommon libudev libGL libX11 + ]; + mesonFlags = [ "-Dxwayland=true" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A Wayland kiosk"; + homepage = "https://www.hjdskes.nl/projects/cage/"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/cage/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/cage/metadata.nix new file mode 100644 index 000000000000..28260f938a95 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/cage/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/Hjdskes/cage"; + branch = "master"; + rev = "0d85c1652e676806a5c065bdc88e83f0b33a0a5e"; + sha256 = "1z2wd3xi5r061cxifkpk12rqnkb5fvn7abz2qnqk19rvxqiqya4z"; + revdate = "2020-08-02 15:43:05Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/clipman/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/clipman/default.nix new file mode 100644 index 000000000000..d3faa158014f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/clipman/default.nix @@ -0,0 +1,23 @@ +{ lib, fetchFromGitHub, buildGoModule }: + +let metadata = import ./metadata.nix; in +buildGoModule rec { + pname = "clipman"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "yory8"; + repo = "clipman"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + vendorSha256 = metadata.vendorSha256; + + meta = with lib; { + description = "A basic clipboard manager for Wayland, with support for persisting copy buffers after an application exits"; + homepage = "https://github.com/yory8/clipman"; + license = licenses.gpl3; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/clipman/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/clipman/metadata.nix new file mode 100644 index 000000000000..f11e7d131ffb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/clipman/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/yory8/clipman"; + branch = "master"; + rev = "77706941a34331848f713be356933dc4c269b2fe"; + sha256 = "133ja4kl0sgf86fa4lr8yblp1jf7mn83dp2816cr0jrjh6lwlv3i"; + vendorSha256 = "18jw4z0lcrh00yjr3qdkgvlrpfwqbsm0ncz7fp1h72pzkh41byv7"; + revdate = "2020-06-29 21:10:10Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/drm_info/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/drm_info/default.nix new file mode 100644 index 000000000000..6d04b844d703 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/drm_info/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub +, libdrm, json_c +, meson, ninja, pkgconfig +, libpciaccess +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "drm_info"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "ascent12"; + repo = "drm_info"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + buildInputs = [ libdrm json_c libpciaccess ]; + + mesonFlags = [ "-Dlibpci=disabled" ]; + + meta = with stdenv.lib; { + description = "Small utility to dump info about DRM devices."; + homepage = "https://github.com/ascent12/drm_info"; + license = licenses.mit; + maintainers = with maintainers; [ tadeokondrak ]; + platforms = platforms.linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/drm_info/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/drm_info/metadata.nix new file mode 100644 index 000000000000..be8fc4ac33f4 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/drm_info/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/ascent12/drm_info"; + branch = "master"; + rev = "7117855b4de236c9bfeed1befc1932497d51a470"; + sha256 = "0mgb8a5lr4zagvdnfbykn7dk9kqjz7g3pabd2apkh0dhikbly5hg"; + revdate = "2020-07-04 07:46:47Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/emacs/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/emacs/default.nix new file mode 100644 index 000000000000..d36f138b099a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/emacs/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchFromGitHub, emacs, cairo }: + +let + metadata = import ./metadata.nix; +in +(emacs.override { srcRepo = true; }).overrideAttrs (old: rec { + name = "emacs-pgtk-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "masm11"; + repo = "emacs"; + rev = version; + sha256 = metadata.sha256; + }; + + configureFlags = old.configureFlags ++ [ "--with-pgtk" "--with-cairo" ]; + + buildInputs = old.buildInputs ++ [ cairo ]; + + patches = []; +}) diff --git a/overlays/patches/nixpkgs-wayland/pkgs/emacs/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/emacs/metadata.nix new file mode 100644 index 000000000000..3b67ed867509 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/emacs/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/masm11/emacs"; + upattr = "emacs-pgtk"; + branch = "pgtk"; + rev = "db000296808254d9a38ce71e976d3f3bb4723428"; + sha256 = "sha256-tIWe1gVYGSmLR5qmgUIEtQzr/j7htaR3mILv2XSsYgA="; + revdate = "2020-08-14 17:17:14Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/default.nix new file mode 100644 index 000000000000..a5406f130248 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/default.nix @@ -0,0 +1,36 @@ +{ gcc8Stdenv, fetchFromGitHub +, pkgconfig, cmake +, libinput, zlib +}: + +let + metadata = import ./metadata.nix; +in +gcc8Stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "gebaar-libinput"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "Coffee2CodeNL"; + repo = "gebaar-libinput"; + rev = version; + sha256 = metadata.sha256; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig cmake ]; + buildInputs = [ + libinput zlib #cpptoml + ]; + + enableParallelBuilding = true; + + meta = with gcc8Stdenv.lib; { + description = "Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput"; + homepage = "https://github.com/Coffee2CodeNL/gebaar-libinput"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/metadata.nix new file mode 100644 index 000000000000..e9e4489984dd --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/gebaar-libinput/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/Coffee2CodeNL/gebaar-libinput"; + branch = "master"; + rev = "c18c8bd73e79aaf1211bd88bf9cff808273cf6d6"; + sha256 = "0crz4cbyn9g23n0bq40znrs3jc2pzrhyn8h6lxkk1hf89hwq6jxh"; + revdate = "2019-04-05 13:27:03Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/glpaper/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/glpaper/default.nix new file mode 100644 index 000000000000..c1c1199ce826 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/glpaper/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchhg +, meson, ninja, pkgconfig +, wlroots, wayland, wayland-protocols +, pixman, libxkbcommon +, libudev, mesa_noglu, libX11 +, libGL, libglvnd +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "glpaper-${version}"; + version = metadata.rev; + + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/glpaper"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + buildInputs = [ + wlroots wayland wayland-protocols wlroots + pixman libxkbcommon libudev mesa_noglu libX11 + libGL libglvnd + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "GLPaper is a wallpaper program for wlroots based wayland compositors such as sway that allows you to render glsl shaders as your wallpaper"; + homepage = "https://bitbucket.org/Scoopta/glpaper"; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/glpaper/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/glpaper/metadata.nix new file mode 100644 index 000000000000..46e12d15ea93 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/glpaper/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_hg = "https://hg.sr.ht/~scoopta/glpaper/"; + branch = "default"; + rev = "a95db77088df"; + sha256 = "04y12910wvhy4aqx2sa63dy9l6nbs7b77yqpdhc96x2b3mgzgjfs"; + revdate = "2020-03-29 19:46:07"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/grim/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/grim/default.nix new file mode 100644 index 000000000000..fc340b3236c3 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/grim/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, cairo, libjpeg, wayland, wayland-protocols +, scdoc, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "grim-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = "grim"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ] ++ stdenv.lib.optional buildDocs scdoc; + buildInputs = [ cairo libjpeg wayland wayland-protocols ]; + mesonFlags = [ "-Djpeg=enabled" ] + ++ stdenv.lib.optional buildDocs "-Dman-pages=enabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Grab images from a Wayland compositor"; + homepage = https://github.com/emersion/grim; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/grim/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/grim/metadata.nix new file mode 100644 index 000000000000..5cbfc595558d --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/grim/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/grim"; + branch = "master"; + rev = "a5e009a87005810321c7c43c149384b8f25e51b8"; + sha256 = "0fjmjq0ws9rlblkcqxxw2lv7zvvyi618jqzlnz5z9zb477jwdfib"; + revdate = "2020-07-21 18:11:14Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/default.nix new file mode 100644 index 000000000000..e98637e7871c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig, scdoc +, wayland, libinput, gtk3, gobject-introspection +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "gtk-layer-shell"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "wmww"; + repo = "gtk-layer-shell"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ meson ninja pkgconfig scdoc ]; + buildInputs = [ + wayland libinput gtk3 gobject-introspection + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A library to create panels and other desktop components for Wayland using the Layer Shell protocol"; + homepage = "https://github.com/wmww/gtk-layer-shell"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} + diff --git a/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/metadata.nix new file mode 100644 index 000000000000..a97b1249eb0a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/gtk-layer-shell/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/wmww/gtk-layer-shell"; + branch = "master"; + rev = "f7a9cc8f0ac0c39a594011faf683bdba875bd73a"; + sha256 = "sha256-i9bwyM5LKJkeOgTSCF0OLZaNCIqQ0AYNwAX/crfAyCc="; + revdate = "2020-08-12 19:57:39Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/default.nix new file mode 100644 index 000000000000..8940c43de946 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/default.nix @@ -0,0 +1,35 @@ +{ stdenv, rustPlatform, rust, fetchFromGitHub, pkgconfig, dbus, libpulseaudio }: + +let + metadata = import ./metadata.nix; +in +rustPlatform.buildRustPackage rec { + name = "i3status-rust-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "greshake"; + repo = "i3status-rust"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + cargoSha256 = metadata.cargoSha256; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ dbus libpulseaudio ]; + + preCheck = '' + substituteInPlace tests/run_binary.rs \ + --replace 'target/release' "target/${rust.toRustTarget stdenv.buildPlatform}/release" + ''; + + meta = with stdenv.lib; { + description = "Very resource-friendly and feature-rich replacement for i3status"; + homepage = https://github.com/greshake/i3status-rust; + license = licenses.gpl3; + maintainers = [ maintainers.backuitist ]; + platforms = platforms.linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/metadata.nix new file mode 100644 index 000000000000..720ff175ff98 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/i3status-rust/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/greshake/i3status-rust"; + branch = "master"; + rev = "39fb0a1100df0a40d0b895f4e82d509116809cf4"; + sha256 = "sha256-rtv4K4KCMkEGNQnThI6jjHNHivDrfHqLAIkgBSVA57E="; + cargoSha256 = "sha256-Kp88Kb2ZtdZFpVOqQ3+jwE8sVEcVp5SvsI1u/mj1d9Q="; + revdate = "2020-08-14 16:00:22Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/imv/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/imv/default.nix new file mode 100644 index 000000000000..f5204f578907 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/imv/default.nix @@ -0,0 +1,62 @@ +{ stdenv, fetchFromGitHub +, freeimage, fontconfig, pkgconfig +, asciidoc, docbook_xsl, libxslt, cmocka +, librsvg, pango, libxkbcommon, wayland +, libGLU, icu +}: + +let metadata = import ./metadata.nix; in +stdenv.mkDerivation rec { + pname = "imv"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "eXeC64"; + repo = "imv"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + preBuild = '' + # Version is 4.0.1, but Makefile was not updated + sed -i 's/^VERSION/c\VERSION = ${metadata.rev}/' Makefile + ''; + + nativeBuildInputs = [ + asciidoc + cmocka + docbook_xsl + libxslt + ]; + + buildInputs = [ + freeimage + libGLU + librsvg + libxkbcommon + pango + pkgconfig + wayland + icu + ]; + + installFlags = [ "PREFIX=$(out)" "CONFIGPREFIX=$(out)/etc" ]; + + postFixup = '' + # The `bin/imv` script assumes imv-wayland or imv-x11 in PATH, + # so we have to fix those to the binaries we installed into the /nix/store + + sed -i "s|\bimv-wayland\b|$out/bin/imv-wayland|" $out/bin/imv + sed -i "s|\bimv-x11\b|$out/bin/imv-x11|" $out/bin/imv + ''; + + doCheck = true; + + meta = with stdenv.lib; { + description = "A command line image viewer for tiling window managers"; + homepage = https://github.com/eXeC64/imv; + license = licenses.gpl2; + maintainers = with maintainers; [ rnhmjoj markus1189 ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/imv/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/imv/metadata.nix new file mode 100644 index 000000000000..641d94978a28 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/imv/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/eXeC64/imv"; + branch = "master"; + rev = "a222f6475b905bdd0f55752e1539ed17bcad0a77"; + sha256 = "0gk8g178i961nn3bls75a8qpv6wvfvav6hd9lxca1skaikd33zdx"; + revdate = "2020-02-08 00:29:25Z"; + skip = true; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/kanshi/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/kanshi/default.nix new file mode 100644 index 000000000000..1b8891c830d0 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/kanshi/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, libudev, wayland, wayland-protocols +, scdoc, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "kanshi"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = pname; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja scdoc ]; + + buildInputs = [ + wayland wayland-protocols + ]; + + enableParallelBuilding = true; + + mesonFlags = [] + ++ stdenv.lib.optional (!buildDocs) "-Dman-pages=disabled"; + + meta = with stdenv.lib; { + description = "Dynamic display configuration"; + homepage = "https://github.com/emersion/kanshi"; + maintainers = with maintainers; [ colemickens ]; + platforms = platforms.linux; + #license = TODO; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/kanshi/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/kanshi/metadata.nix new file mode 100644 index 000000000000..9cf5c0381500 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/kanshi/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/kanshi"; + branch = "master"; + rev = "e55b5847a07bc3ea2dc19f3cdce8d88c8aa2f9ca"; + sha256 = "184szxk9rf22yijhxxlwiba77lf2vmr6ixxp0pbkambyz0k4cab6"; + revdate = "2020-08-05 14:50:47Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/default.nix new file mode 100644 index 000000000000..57206ef6665f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchgit +, pkgconfig, meson, ninja, scdoc +, wayland, wayland-protocols +, libxkbcommon, cairo, librsvg +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "lavalauncher"; + version = metadata.rev; + + src = fetchgit { + url = metadata.repo_git; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja scdoc ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon cairo librsvg + ]; + + installFlags = [ + "PREFIX=$(out)" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A simple launcher for Wayland."; + homepage = "https://git.sr.ht/~leon_plickat/lavalauncher"; + license = licenses.gpl3; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = with maintainers; []; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/metadata.nix new file mode 100644 index 000000000000..332ea604f2ba --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/lavalauncher/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://git.sr.ht/~leon_plickat/lavalauncher"; + branch = "master"; + rev = "a54b3c6f9bb70b2800710f7e4480f85060fceac3"; + sha256 = "0xqcbm6n6hvfc1s9ra7l57jpsmrj500g6xf7wf8xjls0vhn8pw77"; + revdate = "2020-08-15 16:16:45Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/mako/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/mako/default.nix new file mode 100644 index 000000000000..1cf5c0b25d6a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/mako/default.nix @@ -0,0 +1,38 @@ +{stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, gtk3, cairo, pango, systemd +, wayland, wayland-protocols +, scdoc, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "mako-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = "mako"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ] ++ stdenv.lib.optional buildDocs scdoc; + buildInputs = [ gtk3 cairo pango systemd wayland wayland-protocols ]; + mesonFlags = [ + "-Dauto_features=enabled" + "-Dsystemd=disabled" + ] ++ stdenv.lib.optional (!buildDocs) "-Dman-pages=disabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A lightweight Wayland notification daemon"; + homepage = "https://wayland.emersion.fr/mako"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/mako/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/mako/metadata.nix new file mode 100644 index 000000000000..45b4432c419f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/mako/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/mako"; + branch = "master"; + rev = "75aa254710145f2c1c4064a3f9641eb9e7f39be8"; + sha256 = "184hd8a90izksq62cra98fqf25s5iw51bn5q0aggla62p6gld17l"; + revdate = "2020-08-03 16:08:05Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/default.nix new file mode 100644 index 000000000000..049a45504d60 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, meson, ninja +, wayland, wayland-protocols +, libxkbcommon, libvncserver +, libpthreadstubs, libdrm +, pixman, libuv, libglvnd +, gnutls +, aml, libjpeg_turbo +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "neatvnc-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "any1"; + repo = "neatvnc"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon libvncserver + libpthreadstubs libdrm + pixman libuv libglvnd + gnutls + aml libjpeg_turbo + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "liberally licensed VNC server library that's intended to be fast and neat"; + homepage = "https://github.com/any1/neatvnc"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/metadata.nix new file mode 100644 index 000000000000..0652463a1482 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/neatvnc/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/any1/neatvnc"; + branch = "master"; + rev = "6ad4aba374153d36c99ea5073b747697774f4e3e"; + sha256 = "036kzhbabbwc3gvsw8kqf6rs0gh8kgn6i0by9pxski38mi0qs1qs"; + revdate = "2020-07-26 13:52:00Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/default.nix new file mode 100644 index 000000000000..48a2f7a5dea1 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/default.nix @@ -0,0 +1,105 @@ +{ config, stdenv +, mkDerivation +, fetchFromGitHub +, fetchpatch +, cmake +, fdk_aac +, ffmpeg +, jansson +, libjack2 +, libxkbcommon +, libpthreadstubs +, libXdmcp +, qtbase +, qtx11extras +, qtwayland, wayland +, qtsvg +, speex +, libv4l +, x264 +, curl +, xorg +, makeWrapper +, pkgconfig +, vlc +, mbedtls + +, scriptingSupport ? true +, luajit +, swig +, python3 + +, alsaSupport ? stdenv.isLinux +, alsaLib +, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux +, libpulseaudio +}: + +let + metadata = import ./metadata.nix; + inherit (stdenv.lib) optional optionals; +in mkDerivation rec { + pname = "obs-studio"; + version = "unstable-wayland-latest"; + + src = fetchFromGitHub { + owner = "GeorgesStavracas"; + repo = "obs-studio"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + +# patches = (fetchpatch { url = "https://github.com/obsproject/obs-studio/pull/2097.patch"; sha256 = "18sws0v39vg10fyp3i267wv9n0rimjkx7byk48v7r97vgck1k63h"; }); + + nativeBuildInputs = [ cmake pkgconfig ]; + + buildInputs = [ curl + fdk_aac + ffmpeg + jansson + libjack2 + libv4l + libxkbcommon + libpthreadstubs + libXdmcp + qtbase + qtx11extras + qtsvg + speex + x264 + vlc + makeWrapper + mbedtls + qtwayland wayland + ] + ++ optionals scriptingSupport [ luajit swig python3 ] + ++ optional alsaSupport alsaLib + ++ optional pulseaudioSupport libpulseaudio; + + # obs attempts to dlopen libobs-opengl, it fails unless we make sure + # DL_OPENGL is an explicit path. Not sure if there's a better way + # to handle this. + cmakeFlags = [ + "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\"" + "-DENABLE_WAYLAND=true" + "-DENABLE_X11=false" + ]; + + postInstall = '' + wrapProgram $out/bin/obs \ + --prefix "LD_LIBRARY_PATH" : "${xorg.libX11.out}/lib:${vlc}/lib" + ''; + + meta = with stdenv.lib; { + description = "Free and open source software for video recording and live streaming"; + longDescription = '' + This project is a rewrite of what was formerly known as "Open Broadcaster + Software", software originally designed for recording and streaming live + video content, efficiently + ''; + homepage = https://obsproject.com; + maintainers = with maintainers; [ jb55 MP2E ]; + license = licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/fix-search-path.patch b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/fix-search-path.patch new file mode 100644 index 000000000000..4503447ff5dc --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/fix-search-path.patch @@ -0,0 +1,13 @@ +diff --git a/external/FindLibObs.cmake b/external/FindLibObs.cmake +index ab0a3de..19c63ee 100644 +--- a/external/FindLibObs.cmake ++++ b/external/FindLibObs.cmake +@@ -95,7 +95,7 @@ if(LIBOBS_FOUND) + + set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR}) + set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB}) +- include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake) ++ include(external/ObsPluginHelpers.cmake) + + # allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg) + if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES) diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/hardcode-ndi-path.patch b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/hardcode-ndi-path.patch new file mode 100644 index 000000000000..caef96c381f2 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/hardcode-ndi-path.patch @@ -0,0 +1,17 @@ +diff --git a/src/obs-ndi.cpp b/src/obs-ndi.cpp +index 493831c..7b0f8db 100644 +--- a/src/obs-ndi.cpp ++++ b/src/obs-ndi.cpp +@@ -197,11 +197,7 @@ const char* obs_module_description() + const NDIlib_v4* load_ndilib() + { + QStringList locations; +- locations << QString(qgetenv(NDILIB_REDIST_FOLDER)); +-#if defined(__linux__) || defined(__APPLE__) +- locations << "/usr/lib"; +- locations << "/usr/local/lib"; +-#endif ++ locations << "@NDI@/lib"; + + for (QString path : locations) { + blog(LOG_INFO, "Trying '%s'", path.toUtf8().constData()); diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/linuxbrowser.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/linuxbrowser.nix new file mode 100644 index 000000000000..134e0cb8a9e3 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/linuxbrowser.nix @@ -0,0 +1,49 @@ +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f . -iA obs-linuxbrowser +# mkdir -p ~/.config/obs-studio/plugins +# ln -s ~/.nix-profile/share/obs/obs-plugins/obs-linuxbrowser ~/.config/obs-studio/plugins/ + +{ stdenv, fetchFromGitHub, obs-studio, cmake, libcef }: + +stdenv.mkDerivation rec { + pname = "obs-linuxbrowser"; + version = "0.6.1-6-gf86dba6"; + + src = fetchFromGitHub { + owner = "bazukas"; + repo = "obs-linuxbrowser"; + rev = version; + sha256 = "08d7qz0721va88bcyia8p0ycw50f6x3yk97s3vzhsc9xpq691kpi"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ obs-studio ]; + postUnpack = '' + mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/ + for i in ${libcef}/share/cef/*; do + ln -s $i cef/Release/ + ln -s $i cef/Resources/ + done + ln -s ${libcef}/lib/libcef.so cef/Release/ + ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/ + ln -s ${libcef}/include cef/ + ''; + cmakeFlags = [ + "-DCEF_ROOT_DIR=../../cef" + "-DOBS_INCLUDE_SEARCH_DIR=${obs-studio}/include/obs" + ]; + installPhase = '' + mkdir -p $out/share/obs/obs-plugins + cp -r build/obs-linuxbrowser $out/share/obs/obs-plugins/ + ''; + + meta = with stdenv.lib; { + description = "Browser source plugin for obs-studio based on Chromium Embedded Framework"; + homepage = https://github.com/bazukas/obs-linuxbrowser; + maintainers = with maintainers; [ puffnfresh ]; + license = licenses.gpl2; + platforms = with platforms; linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/metadata.nix new file mode 100644 index 000000000000..7903599bf3f7 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/GeorgesStavracas/obs-studio"; + branch = "feaneron/egl-wayland"; + rev = "8553a0139bda9e99fdf50669471ab524cde2fa49"; + sha256 = "sha256-3sz5ZynM6FIPXaQqTQiLToZsTdoln1uKEvz4XgiddRQ="; + revdate = "2020-08-10 13:48:20Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/obs-ndi.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/obs-ndi.nix new file mode 100644 index 000000000000..452793f442ee --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/obs-ndi.nix @@ -0,0 +1,41 @@ +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f "<nixpkgs>" -iA obs-ndi +# mkdir -p ~/.config/obs-studio/plugins/bin +# ln -s ~/.nix-profile/lib/obs-plugins/obs-ndi.so ~/.config/obs-studio/plugins/bin/ + +{ stdenv, fetchFromGitHub, obs-studio, cmake, qt5, ndi }: + +stdenv.mkDerivation rec { + pname = "obs-ndi"; + version = "4.7.1"; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ obs-studio qt5.qtbase ndi ]; + + src = fetchFromGitHub { + owner = "Palakis"; + repo = "obs-ndi"; + rev = version; + sha256 = "040fkbf3f3qgqcrd3072y3zrjb4fwga8zr10jym744xd7bgyylqh"; + }; + + patches = [ ./fix-search-path.patch ./hardcode-ndi-path.patch ]; + + postPatch = "sed -i -e s,@NDI@,${ndi},g src/obs-ndi.cpp"; + + cmakeFlags = [ + "-DLIBOBS_INCLUDE_DIR=${obs-studio}/include/obs" + "-DLIBOBS_LIB=${obs-studio}/lib" + "-DCMAKE_CXX_FLAGS=-I${obs-studio.src}/UI/obs-frontend-api" + ]; + + meta = with stdenv.lib; { + description = "Network A/V plugin for OBS Studio"; + homepage = https://github.com/Palakis/obs-ndi; + maintainers = with maintainers; [ peti ]; + license = licenses.gpl2; + platforms = with platforms; linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/wlrobs.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/wlrobs.nix new file mode 100644 index 000000000000..05b826c9cefc --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-studio/wlrobs.nix @@ -0,0 +1,42 @@ +# (the following is somewhat lifted from ./linuxbrowser.nix) +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f . -iA obs-wlrobs +# mkdir -p ~/.config/obs-studio/plugins/wlrobs/bin/64bit +# ln -s ~/.nix-profile/share/obs/obs-plugins/wlrobs/bin/64bit/libwlrobs.so ~/.config/obs-studio/plugins/wlrobs/bin/64bit +{ stdenv, fetchhg, wayland, obs-studio +, meson, ninja, pkgconfig, libX11 +, dmabufSupport ? false, libdrm ? null, libGL ? null}: + +assert dmabufSupport -> libdrm != null && libGL != null; + +stdenv.mkDerivation { + pname = "obs-wlrobs"; + version = "20200111"; + + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/wlrobs"; + rev = "8345bf985e390896d89e35e2feae1fa37722f4be"; + sha256 = "0j01wkhwhhla4qx8mwyrq2qj9cfhxksxaq2k8rskmy2qbdkvvdpb"; + }; + + buildInputs = [ libX11 libGL libdrm meson ninja pkgconfig wayland obs-studio ]; + + installPhase = '' + mkdir -p $out/share/obs/obs-plugins/wlrobs/bin/64bit + cp ./libwlrobs.so $out/share/obs/obs-plugins/wlrobs/bin/64bit/ + ''; + + mesonFlags = [ + "-Duse_dmabuf=${if dmabufSupport then "true" else "false"}" + ]; + + meta = with stdenv.lib; { + description = "An obs-studio plugin that allows you to screen capture on wlroots based wayland compositors"; + homepage = https://hg.sr.ht/~scoopta/wlrobs; + maintainers = with maintainers; [ grahamc ]; + license = licenses.gpl3; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/default.nix new file mode 100644 index 000000000000..e1ac542559aa --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/default.nix @@ -0,0 +1,40 @@ +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f . -iA wlrobs +# mkdir -p ~/.config/obs-studio/plugins +# ln -s ~/.nix-profile/share/obs/obs-plugins/wlrobs ~/.config/obs-studio/plugins/ + +{ stdenv, fetchhg +, meson, ninja, pkg-config +, obs-studio, wlroots, wayland +, libX11, libGL, libdrm +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "wlrobs-${version}"; + version = metadata.rev; + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/wlrobs"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + nativeBuildInputs = [ meson ninja pkg-config ]; + buildInputs = [ obs-studio wayland wlroots libX11 libGL libdrm ]; + + installPhase = '' + mkdir -p $out/share/obs/obs-plugins/wlrobs/bin/64bit + cp libwlrobs.so $out/share/obs/obs-plugins/wlrobs/bin/64bit + ''; + + meta = with stdenv.lib; { + description = "wlrobs is an obs-studio plugin that allows you to screen capture on wlroots based wayland compositors"; + homepage = "https://sr.ht/~scoopta/wlrobs"; + maintainers = with maintainers; [ colemickens ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + #platforms = with platforms; linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/metadata.nix new file mode 100644 index 000000000000..73cf32ddd133 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/obs-wlrobs/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_hg = "https://hg.sr.ht/~scoopta/wlrobs"; + branch = "default"; + rev = "c0b86a1f57b8"; + sha256 = "sha256-GiYNV8KRWTStbmI3BhHmR46jYCPxhdj/OB2FQmkcot4="; + revdate = "2020-08-12 12:00:28"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/oguri/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/oguri/default.nix new file mode 100644 index 000000000000..70606885f934 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/oguri/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, cairo, gdk_pixbuf, wayland, wayland-protocols +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "oguri-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "vilhalmer"; + repo = "oguri"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ cairo gdk_pixbuf wayland wayland-protocols ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A very nice animated wallpaper tool for Wayland compositors"; + homepage = https://github.com/vilhalmer/oguri; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/oguri/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/oguri/metadata.nix new file mode 100644 index 000000000000..e9e078e561ef --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/oguri/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/vilhalmer/oguri"; + branch = "master"; + rev = "abf26bf2646d00d91b27cf0336cca38d17057bed"; + sha256 = "1bkd448d6359cylwjar7xnlpic3bvzc650a7fbdcc11l1jw21gq5"; + revdate = "2020-05-27 14:14:43Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/575.patch b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/575.patch new file mode 100644 index 000000000000..d731d8ec43ad --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/575.patch @@ -0,0 +1,51 @@ +From 467156efccc5e36a36bec8c0b64cc5a70f14d5ed Mon Sep 17 00:00:00 2001 +From: Yegor Timoshenko <yegortimoshenko@riseup.net> +Date: Tue, 16 Jan 2018 11:43:46 +0000 +Subject: [PATCH] Fix Autoconf script + +gettext/intltool macros are not used correctly, see: +https://bugs.launchpad.net/inkscape/+bug/1418943 +--- + bootstrap | 6 +----- + configure.ac | 5 +---- + 2 files changed, 2 insertions(+), 9 deletions(-) + +diff --git a/bootstrap b/bootstrap +index 0599cf5..40b1dca 100755 +--- a/bootstrap ++++ b/bootstrap +@@ -1,7 +1,3 @@ + #!/bin/sh + +-# change to root directory +-cd $(dirname "$0") +- +-autopoint --force && \ +- AUTOPOINT="intltoolize --automake --copy" autoreconf --force --install --verbose ++autoreconf --force --install && intltoolize +diff --git a/configure.ac b/configure.ac +index be0b51a..a2e7c42 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -17,6 +17,7 @@ AC_PROG_OBJC # For macOS support modules + AC_LANG([C]) + + AC_PROG_INTLTOOL([0.50]) ++AC_SUBST(LIBINTL) + + AC_CANONICAL_HOST + +@@ -51,10 +52,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [ + ]) + AC_LANG_POP([Objective C]) + +-# Checks for libraries. +-AM_GNU_GETTEXT_VERSION([0.17]) +-AM_GNU_GETTEXT([external]) +- + GETTEXT_PACKAGE=redshift + AC_SUBST(GETTEXT_PACKAGE) + AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext]) +-- +2.15.1 + diff --git a/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/default.nix new file mode 100644 index 000000000000..e1f177831b90 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/default.nix @@ -0,0 +1,90 @@ +{ stdenv, fetchFromGitHub, autoconf, automake, gettext, intltool +, libtool, pkgconfig, wrapGAppsHook, wrapPython, gobjectIntrospection +, gtk3, python, pygobject3, hicolor-icon-theme, pyxdg + +, withRandr ? stdenv.isLinux, libxcb +, withDrm ? stdenv.isLinux, libdrm +, withWayland ? stdenv.isLinux, wayland, wayland-protocols, wlroots +, withGeoclue ? stdenv.isLinux, geoclue }: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "redshift-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "minus7"; + repo = "redshift"; + rev = version; + sha256 = metadata.sha256; + }; + + patches = [ + # https://github.com/jonls/redshift/pull/575 + ./575.patch + ]; + + nativeBuildInputs = [ + autoconf + automake + gettext + intltool + libtool + pkgconfig + wrapGAppsHook + wrapPython + ]; + + configureFlags = [ + "--enable-randr=${if withRandr then "yes" else "no"}" + "--enable-geoclue2=${if withGeoclue then "yes" else "no"}" + "--enable-drm=${if withDrm then "yes" else "no"}" + "--enable-wayland=${if withWayland then "yes" else "no"}" + ]; + + buildInputs = [ + gobjectIntrospection + gtk3 + python + hicolor-icon-theme + ] ++ stdenv.lib.optional withRandr libxcb + ++ stdenv.lib.optional withGeoclue geoclue + ++ stdenv.lib.optional withDrm libdrm + ++ stdenv.lib.optionals withWayland [ wayland wayland-protocols wlroots ] + ; + + pythonPath = [ pygobject3 pyxdg ]; + + preConfigure = "./bootstrap"; + + postFixup = "wrapPythonPrograms"; + + # the geoclue agent may inspect these paths and expect them to be + # valid without having the correct $PATH set + postInstall = '' + substituteInPlace $out/share/applications/redshift.desktop \ + --replace 'Exec=redshift' "Exec=$out/bin/redshift" + substituteInPlace $out/share/applications/redshift.desktop \ + --replace 'Exec=redshift-gtk' "Exec=$out/bin/redshift-gtk" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Screen color temperature manager"; + longDescription = '' + Redshift adjusts the color temperature according to the position + of the sun. A different color temperature is set during night and + daytime. During twilight and early morning, the color temperature + transitions smoothly from night to daytime temperature to allow + your eyes to slowly adapt. At night the color temperature should + be set to match the lamps in your room. + ''; + license = licenses.gpl3Plus; + homepage = http://jonls.dk/redshift; + platforms = platforms.linux; + maintainers = with maintainers; [ yegortimoshenko ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/metadata.nix new file mode 100644 index 000000000000..7ba22c2eed93 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/redshift-wayland/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/minus7/redshift"; + branch = "wayland"; + rev = "7da875d34854a6a34612d5ce4bd8718c32bec804"; + sha256 = "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"; + revdate = "2019-08-24 15:20:17Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/rootbar/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/rootbar/default.nix new file mode 100644 index 000000000000..d045c37c14a4 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/rootbar/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchhg +, meson, ninja, pkgconfig +, wayland, wayland-protocols +, gtk3, json_c, libpulseaudio +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "rootbar"; + version = metadata.rev; + + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/rootbar"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig + ]; + + buildInputs = [ + wayland wayland-protocols + gtk3 json_c libpulseaudio + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "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"; + homepage = "https://hg.sr.ht/~scoopta/rootbar"; + #license = #TODO; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/rootbar/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/rootbar/metadata.nix new file mode 100644 index 000000000000..6a31762368a8 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/rootbar/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_hg = "https://hg.sr.ht/~scoopta/rootbar"; + branch = "default"; + rev = "1fdbe65e12e2"; + sha256 = "0p24jhi7lghhcbn6r13kk9156vp3zplandibb8d8nzxf5sr6jnfw"; + revdate = "2020-04-07 01:06:53"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/slurp/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/slurp/default.nix new file mode 100644 index 000000000000..b556b921856f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/slurp/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, cairo, wayland, wayland-protocols +, scdoc, buildDocs ? true +, libxkbcommon +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "slurp-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = "slurp"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ] ++ stdenv.lib.optional buildDocs scdoc; + buildInputs = [ + cairo wayland wayland-protocols + libxkbcommon + ]; + mesonFlags = [ + "-Dauto_features=enabled" + ] ++ stdenv.lib.optional (!buildDocs) "-Dman-pages=disabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Select a region in a Wayland compositor"; + homepage = https://github.com/emersion/slurp; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/slurp/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/slurp/metadata.nix new file mode 100644 index 000000000000..4c9667795324 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/slurp/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/slurp"; + branch = "master"; + rev = "24d30b74d8063659c22abbde6aea34a03e467aa6"; + sha256 = "0fs4vfw01qxn1gznbypjl3asjwgwi8pb5l8awjv56jl0hzslqfzs"; + revdate = "2020-08-03 09:44:19Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/sway/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/sway/default.nix new file mode 100644 index 000000000000..9bc77b0f5b9b --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/sway/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, makeWrapper +, meson, ninja +, pkgconfig, scdoc +, wayland, libxkbcommon, pcre, json_c, dbus, libevdev +, pango, cairo, libinput, libcap, pam, gdk-pixbuf +, wlroots, wayland-protocols +}: + +let metadata = import ./metadata.nix; in +stdenv.mkDerivation rec { + pname = "sway-unwrapped"; + version = "${metadata.rev}"; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "sway"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + patches = [ + ./sway-config-no-nix-store-references.patch + ./load-configuration-from-etc.patch + ]; + + postPatch = '' + # replace the version + date="$(date -d '${metadata.revdate}' +'%b %d %Y')" + sed -i "s/\([ \t]\)version: '\(.*\)',/\1version: '\2-${stdenv.lib.substring 0 8 metadata.rev} ($date, branch \\\'${metadata.branch}\\\')',/" meson.build + ''; + + nativeBuildInputs = [ + pkgconfig meson ninja scdoc + ]; + + buildInputs = [ + wayland libxkbcommon pcre json_c dbus libevdev + pango cairo libinput libcap pam gdk-pixbuf + wlroots wayland-protocols + ]; + + enableParallelBuilding = true; + + mesonFlags = [ + "-Ddefault-wallpaper=false" "-Dxwayland=enabled" "-Dgdk-pixbuf=enabled" + "-Dtray=enabled" "-Dman-pages=enabled" + ]; + + meta = with stdenv.lib; { + description = "i3-compatible tiling Wayland compositor"; + homepage = https://swaywm.org; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos synthetica ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/sway/load-configuration-from-etc.patch b/overlays/patches/nixpkgs-wayland/pkgs/sway/load-configuration-from-etc.patch new file mode 100644 index 000000000000..ba883682e7bb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/sway/load-configuration-from-etc.patch @@ -0,0 +1,43 @@ +From 26f9c65ef037892977a824f0d7d7111066856b53 Mon Sep 17 00:00:00 2001 +From: Michael Weiss <dev.primeos@gmail.com> +Date: Sat, 27 Apr 2019 14:26:16 +0200 +Subject: [PATCH] Load configs from /etc but fallback to /nix/store + +This change will load all configuration files from /etc, to make it easy +to override them, but fallback to /nix/store/.../etc/sway/config to make +Sway work out-of-the-box with the default configuration on non NixOS +systems. +--- + meson.build | 3 ++- + sway/config.c | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 02b5d606..c03a9c0f 100644 +--- a/meson.build ++++ b/meson.build +@@ -129,7 +129,8 @@ if scdoc.found() + endforeach + endif + +-add_project_arguments('-DSYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c') ++add_project_arguments('-DSYSCONFDIR="/@0@"'.format(sysconfdir), language : 'c') ++add_project_arguments('-DNIX_SYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c') + + version = '"@0@"'.format(meson.project_version()) + if git.found() +diff --git a/sway/config.c b/sway/config.c +index 4cd21bbc..dd855753 100644 +--- a/sway/config.c ++++ b/sway/config.c +@@ -317,6 +317,7 @@ static char *get_config_path(void) { + "$XDG_CONFIG_HOME/i3/config", + SYSCONFDIR "/sway/config", + SYSCONFDIR "/i3/config", ++ NIX_SYSCONFDIR "/sway/config", + }; + + char *config_home = getenv("XDG_CONFIG_HOME"); +-- +2.19.2 + diff --git a/overlays/patches/nixpkgs-wayland/pkgs/sway/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/sway/metadata.nix new file mode 100644 index 000000000000..463484605992 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/sway/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/swaywm/sway"; + branch = "master"; + upattr = "sway-unwrapped"; + rev = "6991ac8c70869ca19a87cfc173e280cab7ff20d0"; + sha256 = "sha256-LJFnprMblFxmTv782gwCls2X+6qDLD//b6fbuDJ8cTg="; + revdate = "2020-08-11 22:37:11Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/sway/sway-config-no-nix-store-references.patch b/overlays/patches/nixpkgs-wayland/pkgs/sway/sway-config-no-nix-store-references.patch new file mode 100644 index 000000000000..009c12959430 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/sway/sway-config-no-nix-store-references.patch @@ -0,0 +1,21 @@ +diff --git a/config.in b/config.in +--- a/config.in ++++ b/config.in +@@ -21,8 +21,8 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec + + ### Output configuration + # +-# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/) +-output * bg @datadir@/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill ++# Default wallpaper ++#output * bg ~/.config/sway/backgrounds/Sway_Wallpaper_Blue_1920x1080.png fill + # + # Example configuration: + # +@@ -213,5 +213,3 @@ bar { + inactive_workspace #32323200 #32323200 #5c5c5c + } + } +- +-include @sysconfdir@/sway/config.d/* + diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swaybg/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/swaybg/default.nix new file mode 100644 index 000000000000..738a17f24a49 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swaybg/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, cairo, wayland, wayland-protocols +, gdk_pixbuf, nonPngSupport ? true +, scdoc, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "swaybg"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "swaybg"; + rev = version; + sha256 = metadata.sha256; + }; + + postPatch = '' + sed -iE "0,/version: '.*',/ s//version: '${version}',/" meson.build + ''; + + nativeBuildInputs = [ pkgconfig meson ninja ] ++ stdenv.lib.optional buildDocs scdoc; + + buildInputs = [ cairo wayland wayland-protocols ] ++ stdenv.lib.optional nonPngSupport gdk_pixbuf; + + mesonFlags = stdenv.lib.optional nonPngSupport "-Dgdk-pixbuf=enabled" + ++ stdenv.lib.optional buildDocs "-Dman-pages=enabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Wallpaper tool for Wayland compositors"; + homepage = https://github.com/swaywm/swaybg; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swaybg/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/swaybg/metadata.nix new file mode 100644 index 000000000000..19ba8baddc8b --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swaybg/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/swaywm/swaybg"; + branch = "master"; + rev = "a8f109af90353369e7e2e689efe8ce06eb9c60ac"; + sha256 = "0w0vyckh01mzr479jjqdc6dyj84gcc2k8q7x8v4b0d445za4hrar"; + revdate = "2019-08-08 23:03:44Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swayidle/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/swayidle/default.nix new file mode 100644 index 000000000000..b495654894a6 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swayidle/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub +, meson, ninja +, pkgconfig, scdoc +, wayland, wayland-protocols +, systemd +, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "swayidle"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "swayidle"; + rev = version; + sha256 = metadata.sha256; + }; + + postPatch = '' + sed -iE "0,/version: '.*',/ s//version: '${version}',/" meson.build + ''; + + nativeBuildInputs = [ + pkgconfig meson ninja + ] ++ stdenv.lib.optional buildDocs scdoc; + + buildInputs = [ + systemd + wayland wayland-protocols + ]; + + mesonFlags = [ + "-Dlogind=enabled" + "-Dlogind-provider=systemd" + ] ++ stdenv.lib.optional buildDocs "-Dman-pages=enabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Sway's idle management daemon"; + homepage = https://swaywm.org; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos synthetica ]; # Trying to keep it up-to-date. + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swayidle/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/swayidle/metadata.nix new file mode 100644 index 000000000000..2ab0ce765e93 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swayidle/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/swaywm/swayidle"; + branch = "master"; + rev = "04a176ee91aee6cca45aa91b95f2626ecb2fbb28"; + sha256 = "0g5h1fvc8g6ap0p2zj3srkxy4gp296ycacxnd08x1gh4gah97242"; + revdate = "2020-04-30 10:15:57Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swaylock/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/swaylock/default.nix new file mode 100644 index 000000000000..2ec64efdbec4 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swaylock/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchFromGitHub +, meson, ninja +, pkgconfig, scdoc +, wayland, wayland-protocols +, libxkbcommon, cairo, pango, gdk_pixbuf, pam +, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "swaylock"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "swaylock"; + rev = version; + sha256 = metadata.sha256; + }; + + postPatch = '' + sed -iE "0,/version: '.*',/ s//version: '${version}',/" meson.build + ''; + + nativeBuildInputs = [ + pkgconfig meson ninja + ] ++ stdenv.lib.optional buildDocs scdoc; + + buildInputs = [ + wayland wayland-protocols + libxkbcommon cairo pango gdk_pixbuf pam + ]; + + mesonFlags = [ + "-Dswaylock-version=${version}" + "-Dpam=enabled" + "-Dgdk-pixbuf=enabled" + ] ++ stdenv.lib.optional buildDocs "-Dman-pages=enabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Screen locker for Wayland"; + homepage = https://swaywm.org; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos synthetica ]; # Trying to keep it up-to-date. + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/swaylock/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/swaylock/metadata.nix new file mode 100644 index 000000000000..9f50a0e2113f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/swaylock/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/swaywm/swaylock"; + branch = "master"; + rev = "c46a5197a24c7597404199165763239eb60fe714"; + sha256 = "0lklk9j90wnziakya25j6y3x6iq6vqjvhj3iazpwkfmhd8rvkdr5"; + revdate = "2020-07-13 13:49:10Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waybar/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/waybar/default.nix new file mode 100644 index 000000000000..715f3e098c91 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waybar/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig, scdoc +, wayland, wayland-protocols, sway, wlroots +, libpulseaudio, libinput, libnl, gtkmm3 +, fmt, jsoncpp, libdbusmenu-gtk3 +, glib +, spdlog +, mpd_clientlib +, gtk-layer-shell +, coreutils +, howard-hinnant-date +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "waybar-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "Alexays"; + repo = "Waybar"; + rev = version; + sha256 = metadata.sha256; + }; + + postPatch = '' + date="$(date -d '${metadata.revdate}' +'%b %d %Y')" + sed -i "s/\([ \t]\)version: '\(.*\)',/\1version: '\2-${stdenv.lib.substring 0 8 metadata.rev} ($date, branch \\\'${metadata.branch}\\\')',/" meson.build + ''; + + nativeBuildInputs = [ meson ninja pkgconfig scdoc ]; + buildInputs = [ + wayland wayland-protocols sway wlroots + libpulseaudio libinput libnl gtkmm3 + fmt jsoncpp libdbusmenu-gtk3 + glib + spdlog + mpd_clientlib + gtk-layer-shell + coreutils + howard-hinnant-date + ]; + mesonFlags = [ + "-Dauto_features=enabled" + "-Dout=${placeholder "out"}" + "-Dsystemd=disabled" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Highly customizable Wayland Polybar like bar for Sway and Wlroots based compositors."; + homepage = https://github.com/Alexays/Waybar; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} + diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waybar/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/waybar/metadata.nix new file mode 100644 index 000000000000..ce251b9934e9 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waybar/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/Alexays/Waybar"; + branch = "master"; + rev = "0cf3b25d50c4ef0fc3b57913685add5fd65e2c42"; + sha256 = "1pci4xgr1x4fq6mi8s7zzvk3m8smrm09igg6sp330kgz3qzpbj4l"; + revdate = "2020-08-15 08:59:12Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waybox/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/waybox/default.nix new file mode 100644 index 000000000000..1dce3390b247 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waybox/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, wlroots, wayland, wayland-protocols +, pixman, libxkbcommon +, libudev, mesa_noglu, libX11 # not mentioned in meson.build... +, libGL +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "waybox-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "wizbright"; + repo = "waybox"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wlroots wayland wayland-protocols wlroots + pixman libxkbcommon libudev mesa_noglu libX11 + libGL + ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "An openbox clone on Wayland (WIP)"; + homepage = "https://github.com/wizbright/waybox"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waybox/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/waybox/metadata.nix new file mode 100644 index 000000000000..894abbca1812 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waybox/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/wizbright/waybox"; + branch = "master"; + rev = "93811898f0eea3035145f593938d49d5af759b46"; + sha256 = "08q5iid7jsj5w4xf8jhhm4bx3jc08kaz0pbvng8ww3qhl0x4mrr0"; + revdate = "2020-05-01 03:02:14Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wayfire/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wayfire/default.nix new file mode 100644 index 000000000000..9459d7d14c56 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wayfire/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchFromGitHub +, meson, pkgconfig, ninja +, wayland, wayland-protocols +, cairo, glm +, libevdev, freetype, libinput +, pixman, libxkbcommon, libdrm +, libjpeg, libpng +, libGL, mesa +, libcap, xcbutilerrors, xcbutilwm, libxml2 +, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "wayfire"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "WayfireWM"; + repo = "wayfire"; + rev = version; + sha256 = metadata.sha256; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + # egl glesv2 + wayland wayland-protocols + cairo glm + libevdev freetype libinput + pixman libxkbcommon libdrm + libjpeg libpng + libGL mesa + libcap xcbutilerrors xcbutilwm libxml2 + ]; + mesonFlags = [ + "-Duse_system_wlroots=disabled" + "-Duse_system_wfconfig=disabled" + "-Dwlroots:logind-provider=systemd" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "3D wayland compositor"; + homepage = "https://wayfire.org/"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wayfire/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wayfire/metadata.nix new file mode 100644 index 000000000000..239ef9979bb0 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wayfire/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/WayfireWM/wayfire"; + branch = "master"; + rev = "66e9a6480105efc52c9e9264c7881c8efd4b6286"; + sha256 = "0jflybnr2c94l3fzd1d6bavi2m8hwddnpirs7pgrhyx9kfn7mma6"; + revdate = "2020-08-15 15:55:56Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waypipe/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/waypipe/default.nix new file mode 100644 index 000000000000..1a5de663b237 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waypipe/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchgit +, meson, ninja, pkgconfig, python3 +, wayland, wayland-protocols +, libffi, mesa_noglu +, lz4, zstd, ffmpeg_4, libva +, scdoc +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "waypipe-${version}"; + version = metadata.rev; + + src = fetchgit { + url = "https://gitlab.freedesktop.org/mstoeckl/waypipe.git"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja python3 scdoc ]; + buildInputs = [ + wayland wayland-protocols + libffi mesa_noglu + lz4 zstd ffmpeg_4 libva + ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + NIX_CFLAGS_COMPILE = "-Wno-error=unused-result"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Network transparency with Wayland"; + homepage = "https://gitlab.freedesktop.org/mstoeckl/waypipe/"; + license = licenses.mit; # expat?? TODO + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/waypipe/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/waypipe/metadata.nix new file mode 100644 index 000000000000..c316ce75af61 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/waypipe/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://gitlab.freedesktop.org/mstoeckl/waypipe.git"; + branch = "master"; + rev = "5eef66b997400d7beecc2ef914f59b27e5505b2c"; + sha256 = "0bkmibask7gfnwkn3fg3l6zaabp95n1zsdnz3dwng8j80a0kakyy"; + revdate = "2020-07-06 00:16:52Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/default.nix new file mode 100644 index 000000000000..3c299cffa64d --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, meson, ninja +, wayland, wayland-protocols +, libxkbcommon, libvncserver +, libpthreadstubs +, pixman, libuv, libglvnd +, neatvnc, libX11, libdrm +, aml, mesa +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "wayvnc-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "any1"; + repo = "wayvnc"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon libvncserver + libpthreadstubs + pixman libuv libglvnd + neatvnc libX11 libdrm + aml mesa + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A VNC server for wlroots based Wayland compositors"; + homepage = "https://github.com/any1/wayvnc"; + license = licenses.isc; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/metadata.nix new file mode 100644 index 000000000000..807973abfbf0 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wayvnc/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/any1/wayvnc"; + branch = "master"; + rev = "d8f94d261386c47559e9681757805829388dcbc3"; + sha256 = "0vgfr5hyvivkj3hsp1ajcl9ncdj6icghyj95w24xwziy0rx3ldhz"; + revdate = "2020-07-31 18:23:25Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/default.nix new file mode 100644 index 000000000000..ccd2cf3a5756 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/default.nix @@ -0,0 +1,36 @@ +{stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, gtk3, epoxy +, wayland, wayland-protocols +, scdoc, buildDocs ? true +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "wdisplays"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "cyclopsian"; + repo = "wdisplays"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ] ++ stdenv.lib.optional buildDocs scdoc; + buildInputs = [ gtk3 epoxy wayland wayland-protocols ]; + mesonFlags = [ "-Dauto_features=enabled" ] + ++ stdenv.lib.optional (!buildDocs) "-Dman-pages=disabled"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "GUI display configurator for wlroots compositors"; + homepage = "https://github.com/cyclopsian/wdisplays"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/metadata.nix new file mode 100644 index 000000000000..0d3206aad58f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wdisplays/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/cyclopsian/wdisplays"; + branch = "master"; + rev = "dd7e1e22ee04cf37ecc8b48cdb0c103de18e8761"; + sha256 = "1dyaqhlfv4s5w9mgyl2li2ca7ya5wx2j8942vkkra8z0rbs3m3qi"; + revdate = "2020-05-09 19:42:15Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wev/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wev/default.nix new file mode 100644 index 000000000000..6ab67d0385cb --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wev/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchgit +, pkgconfig, scdoc +, wayland, wayland-protocols +, libxkbcommon +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "wev"; + version = metadata.rev; + + src = fetchgit { + url = metadata.repo_git; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig scdoc ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon + ]; + + installFlags = [ + "PREFIX=$(out)" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A tool for debugging events on a Wayland window, analagous to the X11 tool xev."; + homepage = "https://git.sr.ht/~sircmpwn/wev"; + #license = licenses.unknown; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos synthetica ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wev/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wev/metadata.nix new file mode 100644 index 000000000000..dcaab9ad7ec5 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wev/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://git.sr.ht/~sircmpwn/wev"; + branch = "master"; + rev = "0be512fb705831b55020e1eaf86eedba0eae4a75"; + sha256 = "0dbw4fc7j28mvvd85kj941vpjikdj2wvkw5kpz61h1akg9m0pdg2"; + revdate = "2020-07-07 15:20:53Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/default.nix new file mode 100644 index 000000000000..c88a008136ca --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, wayland, wayland-protocols +, ffmpeg, x264, libpulseaudio +, scdoc, opencl-headers, ocl-icd +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "wf-recorder"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "ammen99"; + repo = pname; + inherit (metadata) rev sha256; + }; + + nativeBuildInputs = [ meson ninja pkgconfig scdoc ]; + buildInputs = [ wayland wayland-protocols ffmpeg x264 libpulseaudio opencl-headers ocl-icd ]; + + meta = with stdenv.lib; { + description = "Utility program for screen recording of wlroots-based compositors"; + homepage = https://github.com/ammen99/wf-recorder; + license = licenses.mit; + maintainers = with maintainers; [ CrazedProgrammer ]; + platforms = platforms.linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/metadata.nix new file mode 100644 index 000000000000..50b606c98bed --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wf-recorder/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/ammen99/wf-recorder"; + branch = "master"; + rev = "02a527aba870629283208667d2a66a1b2c9523c1"; + sha256 = "0c3j1vk084qb4qb803488mzrwvh9jh3y3k645wsxj2csdmnanxzb"; + revdate = "2020-07-19 12:45:44Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/default.nix new file mode 100644 index 000000000000..f8f5bac2561f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, wayland, wayland-protocols +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "wl-clipboard-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "bugaevc"; + repo = "wl-clipboard"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ wayland wayland-protocols ]; + mesonFlags = [ "-Dfishcompletiondir=no"]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Select a region in a Wayland compositor"; + homepage = https://github.com/bugaevc/wl-clipboard; + #license = licenses.mit; # TODO none listed + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/metadata.nix new file mode 100644 index 000000000000..a4d1379ba678 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wl-clipboard/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/bugaevc/wl-clipboard"; + branch = "master"; + rev = "2c3cee1c8173d75b1411997b2c0f3e486194ac0c"; + sha256 = "1apdzrs7l6gqjg05z2xv1ib2wm05c5856v0xlc1kpcp3wm3g5ph0"; + revdate = "2020-02-13 16:44:26Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/default.nix new file mode 100644 index 000000000000..0efa75221324 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, wayland, wayland-protocols +, gtk3, wlroots +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "wl-gammactl"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "mischw"; + repo = pname; + inherit (metadata) rev sha256; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + buildInputs = [ + gtk3 wlroots + wayland wayland-protocols + ]; + + preConfigure = '' + sed -i 32,46d ./meson.build + ''; + + meta = with stdenv.lib; { + description = "Small GTK GUI application to set contrast, brightness and gamma for wayland compositors which support the wlr-gamma-control protocol extension."; + homepage = "https://github.com/mischw/wl-gammactl"; + license = licenses.mit; + maintainers = with maintainers; [ colemickens ]; + platforms = platforms.linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/metadata.nix new file mode 100644 index 000000000000..f78c3e83b975 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wl-gammactl/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/mischw/wl-gammactl"; + branch = "master"; + rev = "611846ce8f5f6e7fe1afb100416cceb8af54afb2"; + sha256 = "0s54hq6l2552bwm0c7v0higlj5bpiwf12nc6wb130a06jgrbgxz2"; + revdate = "2020-02-16 12:53:36Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlay/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlay/default.nix new file mode 100644 index 000000000000..10499971866f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlay/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub +, cmake, extra-cmake-modules, pkgconfig +, wayland, wayland-protocols +, epoxy, libpthreadstubs +, libGL, glfw3 +, libX11, libXau, libXdmcp, libXrandr, libXext, libXinerama +, libXcursor, libXfixes +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "wlay"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "atx"; + repo = "wlay"; + fetchSubmodules = true; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig cmake extra-cmake-modules ]; + buildInputs = [ + wayland wayland-protocols + epoxy libpthreadstubs + libGL glfw3 + libX11 libXau libXdmcp libXrandr libXext libXinerama + libXcursor libXfixes + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Graphical output management for Wayland"; + homepage = "https://github.com/atx/wlay"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlay/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlay/metadata.nix new file mode 100644 index 000000000000..b8f4401ecaf2 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlay/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/atx/wlay"; + branch = "master"; + rev = "1e316ca92d38856c517af4a0a7d88c8589bd2131"; + sha256 = "1p19zr9qfd94wrjf53gcqn8cc9axjrcgkv5jvlhblhqal2vfnzp7"; + revdate = "2019-07-04 17:03:15Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wldash/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wldash/default.nix new file mode 100644 index 000000000000..d7afca489853 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wldash/default.nix @@ -0,0 +1,41 @@ +{ lib, rustPlatform, fetchFromGitHub +, pkgconfig +, dbus, libpulseaudio, alsaLib, libxkbcommon +, wayland, fontconfig +}: + +let + metadata = import ./metadata.nix; + libraryPath = lib.makeLibraryPath [ wayland libxkbcommon ]; +in +rustPlatform.buildRustPackage rec { + name = "wldash-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "kennylevinsen"; + repo = "wldash"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + cargoSha256 = metadata.cargoSha256; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ dbus libpulseaudio alsaLib fontconfig ]; + + dontPatchELF = true; + + postInstall = '' + patchelf --set-rpath ${libraryPath}:$(patchelf --print-rpath $out/bin/wldash) $out/bin/wldash + ''; + + meta = with lib; { + description = "Wayland launcher/dashboard"; + homepage = "https://wldash.org"; + licence = licenses.gpl3; + maintainers = with maintainers; [ alexarice ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wldash/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wldash/metadata.nix new file mode 100644 index 000000000000..331bbeb49dc2 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wldash/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://github.com/kennylevinsen/wldash"; + branch = "master"; + rev = "2e49b98b82427fde046554b9ead825680348fb17"; + sha256 = "1w1b8gznswdrd778si4pnz67957mqgsvfag0kpdazzhq1mmcxxz4"; + cargoSha256 = "1vzwnz0a86idwxbfjmhb6rakv7h9ypsbayjngdndpc82vggnkmmc"; + revdate = "2020-07-22 10:42:48Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/default.nix new file mode 100644 index 000000000000..ded46e5fa0b9 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/default.nix @@ -0,0 +1,81 @@ +{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig +, alsaLib, ffmpeg, glib, openssl, pcre, zlib +, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama, libXrandr, libXrender, libXv +, libxkbcommon, libxkbfile +, libusb1 +, wayland +, gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc +, libpulseaudio ? null +, cups ? null +, pcsclite ? null +, systemd ? null +, buildServer ? true +, nocaps ? false +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "freerdp"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "FreeRDP"; + repo = "FreeRDP"; + rev = version; + sha256 = metadata.sha256; + }; + + # outputs = [ "bin" "out" "dev" ]; + + prePatch = '' + export HOME=$TMP + substituteInPlace "libfreerdp/freerdp.pc.in" \ + --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@" + '' + lib.optionalString (pcsclite != null) '' + substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \ + --replace "libpcsclite.so" "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so" + '' + lib.optionalString nocaps '' + substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \ + --replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL" + ''; + + buildInputs = with lib; [ + alsaLib cups ffmpeg glib openssl pcre pcsclite libpulseaudio zlib + gstreamer gst-plugins-base gst-plugins-good libunwind orc + libX11 libXcursor libXdamage libXext libXi libXinerama libXrandr libXrender libXv + libxkbcommon libxkbfile + wayland libusb1 + ] ++ optional stdenv.isLinux systemd; + + nativeBuildInputs = [ + cmake pkgconfig + ]; + + enableParallelBuilding = true; + + doCheck = false; + + cmakeFlags = with lib; [ + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DWITH_CUNIT=OFF" + "-DWITH_OSS=OFF" + ] ++ optional (libpulseaudio != null) "-DWITH_PULSE=ON" + ++ optional (cups != null) "-DWITH_CUPS=ON" + ++ optional (pcsclite != null) "-DWITH_PCSC=ON" + ++ optional buildServer "-DWITH_SERVER=ON" + ++ optional (stdenv.isx86_64) "-DWITH_SSE2=ON"; + + meta = with lib; { + description = "A Remote Desktop Protocol Client"; + longDescription = '' + FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) + following the Microsoft Open Specifications. + ''; + homepage = http://www.freerdp.com/; + license = licenses.asl20; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.unix; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/metadata.nix new file mode 100644 index 000000000000..0b707dfe2a0b --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlfreerdp/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/FreeRDP/FreeRDP"; + branch = "master"; + rev = "2d715e4681b92108d012fede181fd0a9b401e7e3"; + sha256 = "sha256-ybTQ4bhdKoR+F5H+ezYjHXjdjHeTYL4ZOIzs4mCiUTU="; + revdate = "2020-08-11 12:34:07Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlogout/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlogout/default.nix new file mode 100644 index 000000000000..df693b2e0fed --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlogout/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchgit +, pkgconfig, meson, ninja, scdoc +, wayland, wayland-protocols +, libxkbcommon, gtk3 +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "wlogout"; + version = metadata.rev; + + src = fetchgit { + url = metadata.repo_git; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja scdoc ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon gtk3 + ]; + + patchPhase = '' + substituteInPlace style.css --replace \ + "/usr/share/wlogout" \ + "$out/share/${pname}" + + # Fix path in `access(/etc/wlogout/$config_file$)` + substituteInPlace main.c --replace \ + "/etc/wlogout" \ + "$out/etc/${pname}" + ''; + + mesonFlags = [ + "--datadir=${placeholder "out"}/share" + "--sysconfdir=${placeholder "out"}/etc" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A wayland based logout menu"; + homepage = "https://github.com/ArtsyMacaw/wlogout"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; []; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlogout/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlogout/metadata.nix new file mode 100644 index 000000000000..db8e780e4f20 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlogout/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/ArtsyMacaw/wlogout"; + branch = "master"; + rev = "0a4289e02c6c4337756d4df7ff31605f8c8795c3"; + sha256 = "1swhzkqkzli59c89pvrakfvicd00x7ga860c3x2pbb4y3xziqfvi"; + revdate = "2020-03-14 05:34:47Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/default.nix new file mode 100644 index 000000000000..7f0d9ab1c691 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, wayland, wayland-protocols +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + pname = "wlr-randr"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = pname; + inherit (metadata) rev sha256; + }; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + buildInputs = [ + wayland wayland-protocols + ]; + + meta = with stdenv.lib; { + description = "An xrandr clone for wlroots compositors"; + homepage = "https://github.com/emersion/wlr-randr"; + license = licenses.mit; + maintainers = with maintainers; [ colemickens ]; + platforms = platforms.linux; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/metadata.nix new file mode 100644 index 000000000000..07949898e25f --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlr-randr/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/wlr-randr"; + branch = "master"; + rev = "988a802f5b4050dd3db1138a0cf3464789131dfb"; + sha256 = "10c8zzp78s5bw34vvjhilipa28bsdx3jbyhnxgp8f8kawh3cvgsc"; + revdate = "2020-07-27 14:33:25Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlroots/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlroots/default.nix new file mode 100644 index 000000000000..2b9a27080513 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlroots/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchFromGitHub, fetchpatch, meson, ninja, pkgconfig +, wayland, libGL, wayland-protocols, libinput, libxkbcommon, pixman +, xcbutilwm, libX11, libcap, xcbutilimage, xcbutilerrors, mesa_noglu +, libglvnd +, libpng, ffmpeg_4 +}: + +let + metadata = import ./metadata.nix; + pname = "wlroots"; + version = metadata.rev; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchFromGitHub { + owner = "swaywm"; + repo = "wlroots"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + # $out for the library, $bin for rootston, and $examples for the example + # programs (in examples) AND rootston + outputs = [ "out" "examples" ]; + + nativeBuildInputs = [ meson ninja pkgconfig ]; + + buildInputs = [ + wayland libGL wayland-protocols libinput libxkbcommon pixman + xcbutilwm libX11 libcap xcbutilimage xcbutilerrors mesa_noglu + libpng ffmpeg_4 + libglvnd + ]; + + mesonFlags = [ + "-Dlibcap=enabled" "-Dlogind-provider=systemd" "-Dxwayland=enabled" "-Dx11-backend=enabled" + "-Dxcb-icccm=enabled" "-Dxcb-xkb=enabled" "-Dxcb-errors=enabled" + ]; + + postInstall = '' + # Install ALL example programs to $examples: + # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle + # screenshot output-layout multi-pointer rotation tablet touch pointer + # simple + mkdir -p $examples/bin + cd ./examples + for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do + cp "$binary" "$examples/bin/wlroots-$binary" + done + ''; + + meta = with stdenv.lib; { + description = "A modular Wayland compositor library"; + inherit (src.meta) homepage; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wlroots/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wlroots/metadata.nix new file mode 100644 index 000000000000..f43dcce25b33 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wlroots/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/swaywm/wlroots"; + branch = "master"; + rev = "379835c42f182aa2c8fa814dea20a325361f8bdf"; + sha256 = "sha256-6+wsyT328lEFWXuIzc3acvPhcofK/TzRj6B7Tn36T0I="; + revdate = "2020-08-14 15:57:31Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/default.nix new file mode 100644 index 000000000000..bb2274adb2d4 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchgit +, meson, ninja, pkgconfig +, wlroots, wayland, wayland-protocols +, pixman, libxkbcommon +, libudev, mesa_noglu, libX11 +, libGL +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "wltrunk-${version}"; + version = metadata.rev; + + src = fetchgit { + url = "https://git.sr.ht/~bl4ckb0ne/wltrunk"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wlroots wayland wayland-protocols + pixman libxkbcommon libudev mesa_noglu libX11 + libGL + ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "High-level Wayland compositor library based on wlroots"; + homepage = "https://git.sr.ht/~bl4ckb0ne/wltrunk"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/metadata.nix new file mode 100644 index 000000000000..4745521a6994 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wltrunk/metadata.nix @@ -0,0 +1,8 @@ +{ + repo_git = "https://git.sr.ht/~bl4ckb0ne/wltrunk"; + branch = "master"; + rev = "af40ca52bd0023130b680f407eabf8424f23d058"; + sha256 = "0kpjp5s17w0lyk3rqzhgdpi6s2fhi526n67li2k0al22vw7sj33d"; + revdate = "2020-03-11 13:38:35Z"; + skip = true; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wofi/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wofi/default.nix new file mode 100644 index 000000000000..41d500ca65ce --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wofi/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchhg +, meson, ninja, pkgconfig +, wayland, wayland-protocols +, gtk3 +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "wofi"; + version = metadata.rev; + + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/wofi"; + rev = version; + sha256 = metadata.sha256; + }; + + postPatch = '' + sed -i "s/run_command('hg', 'identify').stdout().strip()/\'${version}\'/g" ./meson.build + ''; + + nativeBuildInputs = [ + meson ninja pkgconfig + ]; + + buildInputs = [ + wayland wayland-protocols + gtk3 + ]; + +# preConfigure = '' +# cd Release +# ''; + +# installPhase = '' +# mkdir -p "$out/bin" +# mv wofi $out/bin/ +# ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Wofi is a launcher/menu program for wlroots based wayland compositors such as sway"; + homepage = "https://hg.sr.ht/~scoopta/wofi"; + #license = #TODO; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wofi/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wofi/metadata.nix new file mode 100644 index 000000000000..dd1124e51556 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wofi/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_hg = "https://hg.sr.ht/~scoopta/wofi"; + branch = "default"; + rev = "3414ab984249"; + sha256 = "sha256-rvjqKslUDntpVDWcuFFlW2p8BM/JDrHPI9Yx3Oc9S8o="; + revdate = "2020-08-11 19:07:49"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wtype/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/wtype/default.nix new file mode 100644 index 000000000000..40acdd235d74 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wtype/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, meson, ninja +, wayland, wayland-protocols +, libxkbcommon +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "wtype-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "atx"; + repo = "wtype"; + rev = metadata.rev; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ + wayland wayland-protocols + libxkbcommon + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "xdotool type for wayland"; + homepage = "https://github.com/atx/wtype"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/wtype/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/wtype/metadata.nix new file mode 100644 index 000000000000..ec015495a5a2 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/wtype/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/atx/wtype"; + branch = "master"; + rev = "643400d7c9f4b20e3f8a05f5329c60ff338cf105"; + sha256 = "0mfhr3qxdvmv8rlfwc3n30srx6l69dw0ihqg6jikc7icwqhhliyv"; + revdate = "2020-08-05 16:06:59Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/default.nix b/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/default.nix new file mode 100644 index 000000000000..a0463240144a --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub +, meson, ninja, pkgconfig +, systemd, wayland, wayland-protocols +, pipewire, libdrm +}: + +let + metadata = import ./metadata.nix; +in +stdenv.mkDerivation rec { + name = "xdg-desktop-portal-wlr-${version}"; + version = metadata.rev; + + src = fetchFromGitHub { + owner = "emersion"; + repo = "xdg-desktop-portal-wlr"; + rev = version; + sha256 = metadata.sha256; + }; + + nativeBuildInputs = [ pkgconfig meson ninja ]; + buildInputs = [ systemd wayland wayland-protocols pipewire libdrm ]; + mesonFlags = [ "-Dauto_features=enabled" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "xdg-desktop-portal backend for wlroots"; + homepage = "https://github.com/emersion/xdg-desktop-portal-wlr"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ colemickens ]; + }; +} diff --git a/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/metadata.nix b/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/metadata.nix new file mode 100644 index 000000000000..a1790cc42973 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/pkgs/xdg-desktop-portal-wlr/metadata.nix @@ -0,0 +1,7 @@ +{ + repo_git = "https://github.com/emersion/xdg-desktop-portal-wlr"; + branch = "master"; + rev = "68f9759a78935db01dbad34035e5fa2648ca1f71"; + sha256 = "sha256-G/a+vhlSTWM0FRaIjlI5C+pqX/wA0BDNZ4SrEE4jm5w="; + revdate = "2020-08-07 16:33:26Z"; +} diff --git a/overlays/patches/nixpkgs-wayland/shell.nix b/overlays/patches/nixpkgs-wayland/shell.nix new file mode 100644 index 000000000000..e6f0cf1db938 --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/shell.nix @@ -0,0 +1,6 @@ +(import (fetchTarball { + url="https://github.com/edolstra/flake-compat/archive/c75e76f80c57784a6734356315b306140646ee84.tar.gz"; + sha256="071aal00zp2m9knnhddgr2wqzlx6i6qa1263lv1y7bdn2w20h10h"; +}) { + src = builtins.fetchGit ./.; +}).shellNix \ No newline at end of file diff --git a/overlays/patches/nixpkgs-wayland/update.sh b/overlays/patches/nixpkgs-wayland/update.sh new file mode 100755 index 000000000000..0965f801938c --- /dev/null +++ b/overlays/patches/nixpkgs-wayland/update.sh @@ -0,0 +1,195 @@ +#!/usr/bin/env bash +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +set -euo pipefail +set -x + +unset NIX_PATH + +# build up commit msg +defaultcommitmsg="auto-updates:" +commitmsg="${defaultcommitmsg}"; + +# keep track of what we build for the README +pkgentries=(); nixpkgentries=(); +cache="nixpkgs-wayland"; +build_attr="${1:-"waylandPkgs"}" + +function update() { + set +x + typ="${1}" + pkg="${2}" + + echo "============================================================================" + echo "${pkg}: checking" + + metadata="${pkg}/metadata.nix" + pkgname="$(basename "${pkg}")" + + # TODO: nix2json, update in parallel + # TODO: aka, not in bash + + branch="$(nix-instantiate "${metadata}" --eval --json -A branch 2>/dev/null | jq -r .)" + rev="$(nix-instantiate "${metadata}" --eval --json -A rev 2>/dev/null | jq -r .)" + date="$(nix-instantiate "${metadata}" --eval --json -A revdate 2>/dev/null | jq -r .)" + sha256="$(nix-instantiate "${metadata}" --eval --json -A sha256 2>/dev/null | jq -r .)" + upattr="$(nix-instantiate "${metadata}" --eval --json -A upattr 2>/dev/null | jq -r . || echo "${pkgname}")" + url="$(nix-instantiate "${metadata}" --eval --json -A url 2>/dev/null | jq -r . || echo "missing_url")" + cargoSha256="$(nix-instantiate "${metadata}" --eval --json -A cargoSha256 2>/dev/null | jq -r . || echo "missing_cargoSha256")" + vendorSha256="$(nix-instantiate "${metadata}" --eval --json -A vendorSha256 2>/dev/null | jq -r . || echo "missing_vendorSha256")" + skip="$(nix-instantiate "${metadata}" --eval --json -A skip 2>/dev/null | jq -r . || echo "false")" + + newdate="${date}" + if [[ "${skip}" != "true" ]]; then + # Determine RepoTyp (git/hg) + if nix-instantiate "${metadata}" --eval --json -A repo_git &>/dev/null; then repotyp="git"; + elif nix-instantiate "${metadata}" --eval --json -A repo_hg &>/dev/null; then repotyp="hg"; + else echo "unknown repo_typ" && exit 1; + fi + + # Update Rev + if [[ "${repotyp}" == "git" ]]; then + repo="$(nix-instantiate "${metadata}" --eval --json -A repo_git | jq -r .)" + newrev="$(git ls-remote "${repo}" "${branch}" | awk '{ print $1}')" + elif [[ "${repotyp}" == "hg" ]]; then + repo="$(nix-instantiate "${metadata}" --eval --json -A repo_hg | jq -r .)" + newrev="$(hg identify "${repo}" -r "${branch}")" + fi + + if [[ "${rev}" != "${newrev}" ]]; then + commitmsg="${commitmsg} ${pkgname}," + + echo "${pkg}: ${rev} => ${newrev}" + + set -x + + # Update RevDate + d="$(mktemp -d)" + if [[ "${repotyp}" == "git" ]]; then + git clone -b "${branch}" --single-branch --depth=1 "${repo}" "${d}" &>/dev/null + newdate="$(cd "${d}"; TZ=UTC git show --quiet --date='format-local:%Y-%m-%d %H:%M:%SZ' --format="%cd")" + elif [[ "${repotyp}" == "hg" ]]; then + hg clone "${repo}#${branch}" "${d}" + newdate="$(cd "${d}"; TZ=UTC hg log -l1 --template "{date(date, '%Y-%m-%d %H:%M:%S')}\n")" &>/dev/null + fi + rm -rf "${d}" + + # Update Sha256 + if [[ "${typ}" == "pkgs" ]]; then + newsha256="$(NIX_PATH="nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz" \ + nix-prefetch --output raw \ + -E "(import ./packages.nix).${upattr}" \ + --rev "${newrev}")" + elif [[ "${typ}" == "nixpkgs" ]]; then + newsha256="$(NIX_PATH="${tmpnixpath}" nix-prefetch-url --unpack "${url}" 2>/dev/null)" + fi + + # TODO: do this with nix instead of sed? + sed -i "s/${rev}/${newrev}/" "${metadata}" + sed -i "s|${date}|${newdate}|" "${metadata}" + sed -i "s|${sha256}|${newsha256}|" "${metadata}" + + # CargoSha256 has to happen AFTER the other rev/sha256 bump + if [[ "${cargoSha256}" != "missing_cargoSha256" ]]; then + newcargoSha256="$(NIX_PATH="nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz" \ + nix-prefetch \ + "{ sha256 }: let p=(import ./packages.nix).${upattr}; in p.cargoDeps.overrideAttrs (_: { cargoSha256 = sha256; })")" + sed -i "s|${cargoSha256}|${newcargoSha256}|" "${metadata}" + fi + + # VendorSha256 has to happen AFTER the other rev/sha256 bump + if [[ "${vendorSha256}" != "missing_vendorSha256" ]]; then + newvendorSha256="$(NIX_PATH="nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz" \ + nix-prefetch \ + "{ sha256 }: let p=(import ./packages.nix).${upattr}; in p.go-modules.overrideAttrs (_: { vendorSha256 = sha256; })")" + sed -i "s|${vendorSha256}|${newvendorSha256}|" "${metadata}" + fi + + set +x + fi + fi + + if [[ "${skip}" == "true" ]]; then + newdate="${newdate} (pinned)" + fi + if [[ "${typ}" == "pkgs" ]]; then + desc="$(nix-instantiate --eval -E "(import ./packages.nix).${upattr}.meta.description" | jq -r .)" + home="$(nix-instantiate --eval -E "(import ./packages.nix).${upattr}.meta.homepage" | jq -r .)" + pkgentries=("${pkgentries[@]}" "| [${pkgname}](${home}) | ${newdate} | ${desc} |"); + elif [[ "${typ}" == "nixpkgs" ]]; then + nixpkgentries=("${nixpkgentries[@]}" "| ${pkgname} | ${newdate} |"); + fi +} + +function update_readme() { + set +x + + replace="$(printf "<!--pkgs-->")" + replace="$(printf "%s\n| Package | Last Updated (UTC) | Description |" "${replace}")" + replace="$(printf "%s\n| ------- | ------------------ | ----------- |" "${replace}")" + for p in "${pkgentries[@]}"; do + replace="$(printf "%s\n%s\n" "${replace}" "${p}")" + done + replace="$(printf "%s\n<!--pkgs-->" "${replace}")" + + rg --multiline '(?s)(.*)<!--pkgs-->(.*)<!--pkgs-->(.*)' "README.md" \ + --replace "\$1${replace}\$3" \ + > README2.md; mv README2.md README.md + + replace="$(printf "<!--nixpkgs-->")" + replace="$(printf "%s\n| Channel | Last Channel Commit Time |" "${replace}")" + replace="$(printf "%s\n| ------- | ------------------------ |" "${replace}")" + for p in "${nixpkgentries[@]}"; do + replace="$(printf "%s\n%s\n" "${replace}" "${p}")" + done + replace="$(printf "%s\n<!--nixpkgs-->" "${replace}")" + + rg --multiline '(?s)(.*)<!--nixpkgs-->(.*)<!--nixpkgs-->(.*)' "README.md" \ + --replace "\$1${replace}\$3" \ + > README2.md; mv README2.md README.md +} + +# update flake inputs +nix --experimental-features 'nix-command flakes' \ + flake update \ + --update-input master \ + --update-input nixpkgs \ + --update-input cachixpkgs \ + --update-input flake-utils + +# update our package sources/sha256s +for p in `ls -d -- pkgs/*/`; do + update "pkgs" "${p}" +done + +update_readme + +set -x + +out="$(mktemp -d)" +nix-build-uncached \ + --option "extra-binary-caches" "https://cache.nixos.org https://nixpkgs-wayland.cachix.org" \ + --option "trusted-public-keys" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" \ + --option "build-cores" "0" \ + --option "narinfo-cache-negative-ttl" "0" \ + --out-link "${out}/result" packages.nix + +results=(); shopt -s nullglob + +ls "${out}" + +for f in ${out}/result*; do + results=("${results[@]}" "${f}") +done + +echo "${results[@]}" | cachix push "${cache}" + +if [[ "${JOB_ID:-""}" != "" ]]; then + git status + git add -A . + git status + git diff-index --cached --quiet HEAD || git commit -m "${commitmsg}" + + echo "we're building on sr.ht, pushing..." + git push origin HEAD +fi + |