Repository: colemickens/nixpkgs-wayland
Branch: dev
Commit: 0f2e1c75ea21
Files: 87
Total size: 82.3 KB
Directory structure:
gitextract_knidfuyg/
├── .envrc
├── .git-blame-ignore-revs
├── .github/
│ ├── dependabot.yml
│ ├── init
│ └── workflows/
│ ├── advance.yaml
│ ├── build.yaml
│ ├── check.yaml
│ └── update.yaml
├── .gitignore
├── README.md
├── default.nix
├── demo/
│ ├── README.md
│ ├── configuration.nix
│ ├── flake.nix
│ ├── home/
│ │ ├── profile.nix
│ │ └── sway-config
│ ├── legacy/
│ │ └── default.nix
│ ├── profile.nix
│ ├── vm-build.sh
│ └── vm-run.sh
├── flake.nix
├── main.nu
├── overlay.nix
├── packages.nix
├── pkgs/
│ ├── aml/
│ │ └── metadata.nix
│ ├── cage/
│ │ └── metadata.nix
│ ├── drm_info/
│ │ └── metadata.nix
│ ├── dunst/
│ │ └── metadata.nix
│ ├── eww/
│ │ └── metadata.nix
│ ├── foot/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── freerdp3/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── gebaar-libinput/
│ │ └── metadata.nix
│ ├── glpaper/
│ │ └── metadata.nix
│ ├── grim/
│ │ └── metadata.nix
│ ├── gtk-layer-shell/
│ │ └── metadata.nix
│ ├── i3status-rust/
│ │ └── metadata.nix
│ ├── imv/
│ │ └── metadata.nix
│ ├── kanshi/
│ │ └── metadata.nix
│ ├── lavalauncher/
│ │ └── metadata.nix
│ ├── libvncserver_master/
│ │ ├── metadata.nix
│ │ └── pkgconfig.patch
│ ├── mako/
│ │ └── metadata.nix
│ ├── neatvnc/
│ │ └── metadata.nix
│ ├── new-wayland-protocols/
│ │ └── metadata.nix
│ ├── obs-wlrobs/
│ │ └── metadata.nix
│ ├── rootbar/
│ │ └── metadata.nix
│ ├── salut/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── shotman/
│ │ └── metadata.nix
│ ├── sirula/
│ │ └── metadata.nix
│ ├── slurp/
│ │ └── metadata.nix
│ ├── sway-unwrapped/
│ │ └── metadata.nix
│ ├── swaybg/
│ │ └── metadata.nix
│ ├── swayidle/
│ │ └── metadata.nix
│ ├── swaylock/
│ │ └── metadata.nix
│ ├── swaylock-effects/
│ │ └── metadata.nix
│ ├── swww/
│ │ └── metadata.nix
│ ├── waybar/
│ │ └── metadata.nix
│ ├── waypipe/
│ │ └── metadata.nix
│ ├── wayvnc/
│ │ └── metadata.nix
│ ├── wbg/
│ │ └── metadata.nix
│ ├── wdisplays/
│ │ └── metadata.nix
│ ├── wev/
│ │ └── metadata.nix
│ ├── wf-recorder/
│ │ └── metadata.nix
│ ├── wl-clipboard/
│ │ └── metadata.nix
│ ├── wl-gammarelay-rs/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wl-screenrec/
│ │ └── metadata.nix
│ ├── wlay/
│ │ └── metadata.nix
│ ├── wldash/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wlogout/
│ │ └── metadata.nix
│ ├── wlr-randr/
│ │ └── metadata.nix
│ ├── wlroots/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wlsunset/
│ │ └── metadata.nix
│ ├── wlvncc/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wob/
│ │ └── metadata.nix
│ ├── wofi/
│ │ └── metadata.nix
│ ├── wshowkeys/
│ │ └── metadata.nix
│ ├── wtype/
│ │ └── metadata.nix
│ └── xdg-desktop-portal-wlr/
│ └── metadata.nix
├── shell.nix
└── templates/
└── template.nix
================================================
FILE CONTENTS
================================================
================================================
FILE: .envrc
================================================
use flake
================================================
FILE: .git-blame-ignore-revs
================================================
# format with `nixfmt-rfc-style`
1030752c7fa96902b95212d522f7ea0fe7859b95
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
================================================
FILE: .github/init
================================================
#!/usr/bin/env bash
set -euo pipefail
git config --global user.name 'Cole Botkens'
git config --global user.email 'cole.mickens+colebot@gmail.com'
git remote update
================================================
FILE: .github/workflows/advance.yaml
================================================
name: "Advance"
concurrency: update-advance
on:
schedule:
- cron: '13 */6 * * *'
workflow_dispatch:
workflow_call:
jobs:
advance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: setup-nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
accept-flake-config = true
- name: prepare
run: nix develop -c .github/init
- name: advance
env:
CACHIX_SIGNING_KEY_NIXPKGS_WAYLAND: "${{ secrets.cachix_signing_key_nixpkgs_wayland }}"
run: nix develop -c ./main.nu advance
================================================
FILE: .github/workflows/build.yaml
================================================
name: "Build"
on:
push:
branches:
- master
schedule:
- cron: '17 */14 * * *'
workflow_dispatch:
workflow_call:
jobs:
build:
runs-on: ubuntu-latest
concurrency: build-${{matrix.jobs.branch}}-${{matrix.jobs.target}}
steps:
- uses: actions/checkout@v4
- name: setup-nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
accept-flake-config = true
- name: prepare
run: nix develop -c .github/init
- name: build
env:
CACHIX_SIGNING_KEY_NIXPKGS_WAYLAND: "${{ secrets.cachix_signing_key_nixpkgs_wayland }}"
run: nix develop -c ./main.nu build
================================================
FILE: .github/workflows/check.yaml
================================================
name: "Check"
on:
push:
branches:
- master
schedule:
- cron: '17 */14 * * *'
pull_request:
workflow_dispatch:
workflow_call:
jobs:
check:
runs-on: ubuntu-latest
concurrency: build-${{matrix.jobs.branch}}-${{matrix.jobs.target}}
steps:
- uses: actions/checkout@v4
- name: setup-nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
accept-flake-config = true
- name: prepare
run: nix develop -c .github/init
- name: check
run: nix develop -c ./main.nu check
- name: success
run: echo "we made it, yay"
================================================
FILE: .github/workflows/update.yaml
================================================
name: "Update"
concurrency: update-advance
on:
schedule:
- cron: '38 */12 * * *'
workflow_dispatch:
workflow_call:
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: setup-nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
accept-flake-config = true
- name: prepare
run: nix develop -c .github/init
- name: update
env:
CACHIX_SIGNING_KEY_NIXPKGS_WAYLAND: "${{ secrets.cachix_signing_key_nixpkgs_wayland }}"
run: nix develop -c ./main.nu update
================================================
FILE: .gitignore
================================================
.ci/commit-message
.direnv
*.qcow2
result
result-*
================================================
FILE: README.md
================================================
# nixpkgs-wayland
[](https://github.com/nix-community/nixpkgs-wayland/actions/workflows/build.yaml)
[](https://github.com/nix-community/nixpkgs-wayland/actions/workflows/update.yaml)
[](https://github.com/nix-community/nixpkgs-wayland/actions/workflows/advance.yaml)
## overview
Automated, pre-built, (potentially) pre-release packages for Wayland (sway/wlroots) tools for NixOS (**nixos-unstable** channel).
These packages are auto-updated to the latest version available from their upstream source control. This means this overlay and package
set will often contain **unreleased** versions.
Community chat is on Matrix: [#nixpkgs-wayland:matrix.org](https://matrix.to/#/#nixpkgs-wayland:matrix.org). We are not on Libera.
Started by: [**@colemickens**](https://github.com/colemickens)
and co-maintained by [**@Artturin**](https://github.com/Artturin) (🙏).
<!-- TOC -->
- [overview](#overview)
- [Usage](#usage)
- [Binary Cache](#binary-cache)
- [Continuous Integration](#continuous-integration)
- [Flake Usage](#flake-usage)
- [Install for NixOS (non-flakes, manual import)](#install-for-nixos-non-flakes-manual-import)
- [Install for non-NixOS users](#install-for-non-nixos-users)
- [Packages](#packages)
- [Tips](#tips)
- [General](#general)
- [`sway`](#sway)
- [Nvidia Users](#nvidia-users)
- [Development Guide](#development-guide)
<!-- /TOC -->
## Usage
### Binary Cache
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.
### Continuous Integration
We have multiple CI jobs:
1. Update - this tries to advance nixpkgs and upgrade all packages. If it can successfully build them, the updates are push to master.
2. Advance - this tries to advance nixpkgs without touching the packages. This can help show when nixpkgs upgrades via `nixos-unstable` has advanced
into a state where we are broken building against it.
3. Build - this just proves that `master` was working against `nixos-unstable` at the point in time captured by whatever is in `flake.lock` on `master`.
We don't have CI on Pull Requests, but I keep an eye on it after merging external contributions.
### Flake Usage
- Build and run [the Wayland-fixed up](https://github.com/obsproject/obs-studio/pull/2484) version of [OBS-Studio](https://obsproject.com/):
```
nix shell "github:nix-community/nixpkgs-wayland#obs-studio" --command obs
```
- Build and run `waybar`:
```
nix run "github:nix-community/nixpkgs-wayland#waybar"
```
* Use as an overlay or package set via flakes:
```nix
{
inputs = {
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
# only needed if you use as a package set:
nixpkgs-wayland.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs: {
nixosConfigurations."my-laptop-hostname" =
let system = "x86_64-linux";
in nixpkgs.lib.nixosSystem {
inherit system;
modules = [({pkgs, config, ... }: {
config = {
nix.settings = {
# add binary caches
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
substituters = [
"https://cache.nixos.org"
"https://nixpkgs-wayland.cachix.org"
];
};
# use it as an overlay
nixpkgs.overlays = [ inputs.nixpkgs-wayland.overlay ];
# or, pull specific packages (built against inputs.nixpkgs, usually `nixos-unstable`)
environment.systemPackages = [
inputs.nixpkgs-wayland.packages.${system}.waybar
];
};
})];
};
};
}
```
### Install for NixOS (non-flakes, manual import)
If you are not using Flakes, then consult the [NixOS Wiki page on Overlays](https://nixos.wiki/wiki/Overlays). Also, you can expand this section for a more literal, direct example. If you do pin, use a tool like `niv` to do the pinning so that you don't forget and wind up stuck on an old version.
<details>
```nix
{ config, lib, pkgs, ... }:
let
rev = "master"; # 'rev' could be a git rev, to pin the overlay.
url = "https://github.com/nix-community/nixpkgs-wayland/archive/${rev}.tar.gz";
waylandOverlay = (import "${builtins.fetchTarball url}/overlay.nix");
in
{
nixpkgs.overlays = [ waylandOverlay ];
environment.systemPackages = with pkgs; [ wayvnc ];
# ...
}
```
You could write that to a file `./wayland.nix` next to your `configuration.nix` and then use it like so:
```nix
{ config, lib, pkgs, ... }:
{
# ...
imports = [
# ...
./wayland.nix
];
}
```
</details>
### Install for non-NixOS users
Non-NixOS users have many options, but here are two explicitly:
1. Activate flakes mode, then just run them outright like the first example in this README.
2. See the following details block for an example of how to add `nixpkgs-wayland` as a user-level
overlay and then install a package with `nix-env`.
<details>
1. There are two ways to activate an overlay for just your user:
1. Add a new entry in ``~/.config/nixpkgs/overlays.nix`:
```nix
let
url = "https://github.com/nix-community/nixpkgs-wayland/archive/master.tar.gz";
in
[
(import "${builtins.fetchTarball url}/overlay.nix")
]
```
2. Add a new file under a dir, `~/.config/nixpkgs/overlays/nixpkgs-wayland.nix`:
```nix
let
url = "https://github.com/nix-community/nixpkgs-wayland/archive/master.tar.gz";
in
(import "${builtins.fetchTarball url}/overlay.nix")
```
Note, this method does not pin `nixpkgs-wayland`. That's left to the reader. (Just use flakes...)
2. Then, `nix-env` will have access to the packages:
```nix
nix-env -iA neatvnc
```
</details>
## Packages
<!--pkgs-start-->
| Package | Description |
| --- | --- |
| [aml](https://github.com/any1/aml) | Another main loop |
| [cage](https://github.com/Hjdskes/cage) | Wayland kiosk that runs a single, maximized application |
| [drm_info](https://github.com/ascent12/drm_info) | Small utility to dump info about DRM devices |
| [dunst](https://github.com/dunst-project/dunst) | Lightweight and customizable notification daemon |
| [eww](https://github.com/elkowar/eww) | Widget system made in Rust to create widgets for any WM |
| [foot](https://codeberg.org/dnkl/foot/) | Fast, lightweight and minimalistic Wayland terminal emulator |
| [freerdp3](https://www.freerdp.com/) | A Remote Desktop Protocol Client |
| [gebaar-libinput](https://github.com/Osleg/gebaar-libinput-fork) | Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput |
| [glpaper](https://hg.sr.ht/~scoopta/glpaper) | 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) | Grab images from a Wayland compositor |
| [gtk-layer-shell](https://github.com/wmww/gtk-layer-shell) | Library to create panels and other desktop components for Wayland using the Layer Shell protocol |
| [i3status-rust](https://github.com/greshake/i3status-rust) | Very resource-friendly and feature-rich replacement for i3status |
| [imv](https://git.sr.ht/~exec64/imv) | Command line image viewer for tiling window managers |
| [kanshi](https://git.sr.ht/~emersion/kanshi) | Dynamic display configuration tool |
| [lavalauncher](https://git.sr.ht/~leon_plickat/lavalauncher) | Simple launcher panel for Wayland desktops |
| [libvncserver_master](https://github.com/LibVNC/libvncserver) | VNC server library |
| [mako](https://github.com/emersion/mako) | Lightweight Wayland notification daemon |
| [neatvnc](https://github.com/any1/neatvnc) | VNC server library |
| [new-wayland-protocols](https://gitlab.freedesktop.org/wayland/wayland-protocols/) | Wayland protocol extensions |
| [obs-wlrobs](https://hg.sr.ht/~scoopta/wlrobs) | Obs-studio plugin that allows you to screen capture on wlroots based wayland compositors |
| [rootbar](https://hg.sr.ht/~scoopta/rootbar) | Bar for Wayland WMs |
| [salut](https://gitlab.com/snakedye/salut) | A sleek notification daemon |
| [shotman](https://git.sr.ht/~whynothugo/shotman) | Uncompromising screenshot GUI for Wayland compositors |
| [sirula](https://github.com/DorianRudolph/sirula) | Simple app launcher for wayland written in rust |
| [slurp](https://github.com/emersion/slurp) | Select a region in a Wayland compositor |
| [sway-unwrapped](https://github.com/swaywm/sway) | I3-compatible tiling Wayland compositor |
| [swaybg](https://github.com/swaywm/swaybg) | Wallpaper tool for Wayland compositors |
| [swayidle](https://github.com/swaywm/swayidle) | Idle management daemon for Wayland |
| [swaylock](https://github.com/swaywm/swaylock) | Screen locker for Wayland |
| [swaylock-effects](https://github.com/jirutka/swaylock-effects) | Screen locker for Wayland |
| [swww](https://github.com/Horus645/swww) | Efficient animated wallpaper daemon for wayland, controlled at runtime |
| [waybar](https://github.com/Alexays/Waybar) | Highly customizable Wayland bar for Sway and Wlroots based compositors |
| [waypipe](https://gitlab.freedesktop.org/mstoeckl/waypipe/) | Network proxy for Wayland clients (applications) |
| [wayvnc](https://github.com/any1/wayvnc) | VNC server for wlroots based Wayland compositors |
| [wbg](https://codeberg.org/dnkl/wbg) | Wallpaper application for Wayland compositors |
| [wdisplays](https://github.com/artizirk/wdisplays) | Graphical application for configuring displays in Wayland compositors |
| [wev](https://git.sr.ht/~sircmpwn/wev) | Wayland event viewer |
| [wf-recorder](https://github.com/ammen99/wf-recorder) | Utility program for screen recording of wlroots-based compositors |
| [wl-clipboard](https://github.com/bugaevc/wl-clipboard) | Command-line copy/paste utilities for Wayland |
| [wl-gammarelay-rs](https://github.com/MaxVerevkin/wl-gammarelay-rs) | A simple program that provides DBus interface to control display temperature and brightness under wayland without flickering |
| [wlay](https://github.com/atx/wlay) | Graphical output management for Wayland |
| [wldash](https://wldash.org) | Wayland launcher/dashboard |
| [wlogout](https://github.com/ArtsyMacaw/wlogout) | Wayland based logout menu |
| [wlr-randr](https://git.sr.ht/~emersion/wlr-randr) | Xrandr clone for wlroots compositors |
| [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots/) | Modular Wayland compositor library |
| [wlsunset](https://git.sr.ht/~kennylevinsen/wlsunset) | Day/night gamma adjustments for Wayland |
| [wlvncc](https://github.com/any1/wlvncc) | A Wayland Native VNC Client |
| [wob](https://github.com/francma/wob) | Lightweight overlay bar for Wayland |
| [wofi](https://hg.sr.ht/~scoopta/wofi) | Launcher/menu program for wlroots based wayland compositors such as sway |
| [wshowkeys](https://github.com/ammgws/wshowkeys) | Displays keys being pressed on a Wayland session |
| [wtype](https://github.com/atx/wtype) | xdotool type for wayland |
| [xdg-desktop-portal-wlr](https://github.com/emersion/xdg-desktop-portal-wlr) | xdg-desktop-portal backend for wlroots |
<!--pkgs-end-->
</details>
## Tips
#### General
- I recommend using [`home-manager`](https://github.com/rycee/home-manager/)!
- It has modules and options for:
- `sway`
- `waybar`
- `obs` and plugins!
- more!
#### `sway`
- You will likely want a default config file to place at `$HOME/.config/sway/config`. You can use the upstream default as a starting point: https://github.com/swaywm/sway/blob/master/config.in
- If you start `sway` from a raw TTY, make sure you use `exec sway` so that if sway crashes, an unlocked TTY is not exposed.
#### Nvidia Users
- Everything should just work now (aka, wlroots/sway don't need patching).
- This is a known-good working config, at least at one point in time:
[mixins/nvidia.nix@ccd992](https://github.com/cole-mickens/nixcfg/blob/cdd9929d5d36ce5b4d64cf80bdeb1df3f2cba332/mixins/nvidia.nix)
## Development Guide
- Use `nix develop`
- `./main.nu`:
- `./main.nu build` - builds and caches derivations that don't exist in the cache, use `nix-eval-jobs`
- `./main.nu advance` - advances the flake inputs, runs `main build`
- `./main.nu update` - advances the flake inputs, updates pkg revs, runs `main build`
- `build` pushes to the `nixpkgs-wayland` cachix
If for some reason the overlay isn't progressing and you want to help,
just clone the repo, run `nix develop -c ./main.nu update`
================================================
FILE: default.nix
================================================
# This file provides backward compatibility to nix < 2.4 clients
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
inherit (lock.nodes.flake-compat.locked)
owner
repo
rev
narHash
;
flake-compat = fetchTarball {
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat { src = ./.; };
warn = msg: builtins.trace "[1;31mwarning: ${msg}[0m";
example = ''
nixpkgs.overlays=[(import "''${builtins.fetchurl "https://github.com/nix-community/nixpkgs-wayland/archive/master.tar.gz"}/overlay.nix")];
'';
warning = "change your 'nixpkgs-wayland' import statement to import 'overlay.nix' directly. example:\n ${example}";
in
warn warning flake.defaultNix
================================================
FILE: demo/README.md
================================================
# Demo
This is a WIP demo
## QEMU Demo
./vm-build.sh && ./vm-run.sh
================================================
FILE: demo/configuration.nix
================================================
{ ... }:
{
imports = [ (import ./profile.nix { user = "demo"; }) ];
nix.settings.trusted-users = [
"root"
"@wheel"
];
security.sudo.enable = true;
users.users.demo = {
uid = 1000;
isNormalUser = true;
password = "demo1234";
extraGroups = [
# allow demo to administer the machine
"wheel"
];
};
users.users.root = {
password = "root1234";
};
services.xserver.enable = false;
services.getty.helpLine = ''
Welcome to the Sway demo
login: demo
password: demo1234
Once logged-in, type `sway` to start the desktop environment.
'';
}
================================================
FILE: demo/flake.nix
================================================
{
description = "nixpkgs-wayland";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
lib-aggregate = {
url = "github:nix-community/lib-aggregate";
};
nixpkgs-wayland = {
url = "github:nix-community/nixpkgs-wayland";
};
home-manager = {
url = "github:nix-community/home-manager";
};
};
nixConfig = {
extra-substituters = [ "https://nixpkgs-wayland.cachix.org" ];
extra-trusted-public-keys = [
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
};
outputs =
inputs:
let
inherit (inputs.lib-aggregate) lib;
inherit (inputs) self;
in
lib.flake-utils.eachSystem
[
"aarch64-linux"
"x86_64-linux"
"riscv64-linux"
]
(system: {
nixosConfigurations.demo = inputs.nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
};
modules = [
./configuration.nix
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ inputs.nixpkgs-wayland.overlays.default ];
}
)
(
{ pkgs, modulesPath, ... }:
{
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
virtualisation = {
memorySize = 1024 * 8;
diskSize = 1024 * 2;
cores = 8;
};
# For running Sway in a QEMU VM the Arch Linux Wiki recommends to use
# the QXL virtualized graphics card:
# https://wiki.archlinux.org/title/sway#Virtualization
# The screen resolution isn't automatically scaled. Full HD seems to
# be a good default that should work on most systems well.
virtualisation.qemu.options = [ "-device qxl-vga,xres=1920,yres=1080" ];
# The Arch Linux Wiki suggests using the qxl and bochs_drm kernel
# modules:
# https://wiki.archlinux.org/title/QEMU#qxl
boot.kernelModules = [
"qxl"
"bochs_drm"
];
}
)
];
};
packages = {
demo-vm = self.nixosConfigurations.${system}.demo.config.system.build.vmWithBootLoader;
};
});
}
================================================
FILE: demo/home/profile.nix
================================================
{ pkgs, ... }:
{
home.packages =
with pkgs;
[
brightnessctl
dmenu
pavucontrol
playerctl
termite
xdg_utils # needed for termite URL opening
xwayland
]
++ (with waylandPkgs; [
grim # screenshot CLI
waybar
kanshi # broken: display configurator
mako # notification manager
slurp # dimension-grabbing CLI, to use with grim
swayidle # lock screen manager
]);
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;
};
};
xdg.configFile."chromium-flags.conf" = {
source = pkgs.writeText "chromium-flags.conf" ''
--force-device-scale-factor=1
'';
};
gtk.enable = true;
home.stateVersion = "23.11";
}
================================================
FILE: demo/home/sway-config
================================================
# 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:
bar {
swaybar_command waybar
}
================================================
FILE: demo/legacy/default.nix
================================================
let
nixpkgs = builtins.fetchTarball {
url = "https://github.com/nixos/nixpkgs/archive/master.tar.gz";
sha256 = "195mgl12xa3qdxj2qnqswff4ic205442ankz0mgfrlsvp3jpm4qr";
};
rev = "master";
# 'rev' could be a git rev, to pin the overla.
# if you pin, you should use a tool like `niv` maybe, but please consider trying flakes
url = "https://github.com/colemickens/nixpkgs-wayland/archive/${rev}.tar.gz";
waylandOverlay = import (builtins.fetchTarball url);
pkgs = import nixpkgs { overlays = [ waylandOverlay ]; };
in
pkgs.waylandPkgs.waybar
================================================
FILE: demo/profile.nix
================================================
{ user }:
{ pkgs, inputs, ... }@args:
let
inherit (inputs) home-manager;
in
{
imports = [ "${home-manager}/nixos" ];
nixpkgs.overlays = [ (import ../overlay.nix) ];
# When this is enabled, the QEMU VM goes blank after boot
networking.networkmanager.enable = true;
fonts.packages = with pkgs; [
dejavu_fonts # just a basic good font
font-awesome_5
];
# add sound support
hardware.pulseaudio.enable = true;
# setup the user's home
home-manager.users."${user}" = (import ./home/profile.nix) args;
# Sway
programs.sway.enable = true;
programs.sway.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.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"
];
};
}
================================================
FILE: demo/vm-build.sh
================================================
#!/usr/bin/env bash
nix build ".#packages.x86_64-linux.demo-vm"
================================================
FILE: demo/vm-run.sh
================================================
#!/usr/bin/env bash
if [[ ! -e ./result ]]; then
echo Run ./vm-build.sh first
exit 1
fi
exec ./result/bin/run-nixos-vm
================================================
FILE: flake.nix
================================================
{
description = "nixpkgs-wayland";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
lib-aggregate = {
url = "github:nix-community/lib-aggregate";
};
flake-compat = {
url = "github:nix-community/flake-compat";
};
};
nixConfig = {
extra-substituters = [ "https://nixpkgs-wayland.cachix.org" ];
extra-trusted-substituters = [ "https://nixpkgs-wayland.cachix.org" ];
extra-trusted-public-keys = [
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
};
outputs =
inputs:
let
inherit (inputs.lib-aggregate) lib;
inherit (inputs) self;
waylandOverlay =
final: prev:
let
template =
{
attrName,
nixpkgsAttrName ? "",
extra ? { },
replace ? { },
replaceInput ? { },
deprecationWarning ? "",
}:
import ./templates/template.nix {
inherit
prev
attrName
extra
replace
nixpkgsAttrName
replaceInput
deprecationWarning
;
};
checkMutuallyExclusive = lib.mutuallyExclusive (map (e: e.attrName) attrsExtraChangesNeeded) (
map (e: e.attrName) attrsNoExtraChangesNeeded
);
genPackagesGH =
if checkMutuallyExclusive then
lib.listToAttrs (
map (a: {
name = a.attrName;
value = template a;
}) (attrsExtraChangesNeeded ++ attrsNoExtraChangesNeeded)
)
else
throw "some 'attrName' value is in both attrsExtraChangesNeeded and attrsNoExtraChangesNeeded";
# these need extra nativeBuildInputs or buildInputs or the patches cleared
attrsExtraChangesNeeded = [
{
attrName = "drm_info";
extra.nativeBuildInputs = [ prev.scdoc ];
}
{
attrName = "swaylock";
replace.patches = [ ];
}
{
attrName = "grim";
replace.patches = [ ];
}
{
attrName = "waybar";
deprecationWarning = "'waybar' will be removed in October 2025. Please use the flake from https://github.com/Alexays/Waybar.";
extra.buildInputs = [ prev.gpsd ];
replace = previousAttrs: {
patches = [];
postUnpack =
let
# Derived from subprojects/cava.wrap
libcava = rec {
version = "0.10.4";
src = prev.fetchFromGitHub {
owner = "LukashonakV";
repo = "cava";
rev = version;
hash = "sha256-9eTDqM+O1tA/3bEfd1apm8LbEcR9CVgELTIspSVPMKM=";
};
};
# Derived from subprojects/catch2.wrap
catch2 = rec {
version = "3.7.0";
src = prev.fetchFromGitHub {
owner = "catchorg";
repo = "Catch2";
rev = "v${version}";
hash = "sha256-U9hv6DaqN5eCMcAQdfFPqWpsbqDFxRQixELSGbNlc0g=";
};
};
in
''
(
cd "$sourceRoot"
cp -R --no-preserve=mode,ownership ${libcava.src} subprojects/cava-${libcava.version}
cp -R --no-preserve=mode,ownership ${catch2.src} subprojects/Catch2-${catch2.version}
patchShebangs .
)
'';
};
}
{
attrName = "gtk-layer-shell";
extra.nativeBuildInputs = [ prev.vala ];
replace.patches = [ ];
}
{
attrName = "sway-unwrapped";
extra.buildInputs = [ prev.xorg.xcbutilwm ];
replaceInput = {
wlroots = final.wlroots;
wayland-protocols = final.new-wayland-protocols;
};
replace = previousAttrs: {
mesonFlags = lib.remove "-Dxwayland=disabled" (
lib.remove "-Dxwayland=enabled" prev.sway-unwrapped.mesonFlags
);
patches =
let
patchesToRemove = [
(prev.fetchpatch {
name = "libinput-1.27-p1.patch";
url = "https://github.com/swaywm/sway/commit/bbadf9b8b10d171a6d5196da7716ea50ee7a6062.patch";
hash = "sha256-lA+oL1vqGQOm7K+AthzHYBzmOALrDgxzX/5Dx7naq84=";
})
(prev.fetchpatch {
name = "libinput-1.27-p2.patch";
url = "https://github.com/swaywm/sway/commit/e2409aa49611bee1e1b99033461bfab0a7550c48.patch";
hash = "sha256-l598qfq+rpKy3/0arQruwd+BsELx85XDjwIDkb/o6og=";
})
];
in
(lib.filter (
patch: !(lib.any (rmpatch: rmpatch != patch) patchesToRemove)
) previousAttrs.patches);
};
}
{
attrName = "cage";
extra.buildInputs = [ prev.xorg.xcbutilwm ];
replaceInput = {
wlroots_0_18 = prev.wlroots_0_19;
};
# _FORTIFY_SOURCE requires compiling with optimization (-O)
# PR https://github.com/NixOS/nixpkgs/pull/232917 added -O0
replace.CFLAGS = "";
# https://github.com/cage-kiosk/cage/commit/d3fb99d6654325ec46277cfdb589f89316bed701
replace.mesonFlags = lib.remove "-Dxwayland=true" (
lib.remove "-Dxwayland=false" prev.cage.mesonFlags
);
}
{
attrName = "wob";
extra.buildInputs = [
prev.pixman
prev.cmocka
];
}
{
attrName = "libvncserver_master";
nixpkgsAttrName = "libvncserver";
# The version in nixpkgs has different paths so the patch is updated here.
replace.patches = [ ./pkgs/libvncserver_master/pkgconfig.patch ];
}
{
attrName = "wayvnc";
nixpkgsAttrName = "wayvnc";
extra.buildInputs = [ prev.jansson ];
}
{
attrName = "eww";
nixpkgsAttrName = "eww";
extra.buildInputs = [
prev.libdbusmenu
prev.libdbusmenu-gtk3
];
# patch was applied upstream
replace.cargoPatches = [ ];
# cargoPatches is addded to patches
replace.patches = [ ];
}
{
attrName = "wf-recorder";
replace.patches = [];
extra.buildInputs = [
prev.mesa
prev.pipewire
];
}
{
attrName = "xdg-desktop-portal-wlr";
nixpkgsAttrName = "xdg-desktop-portal-wlr";
replace.patches = [ ];
}
{
attrName = "new-wayland-protocols";
nixpkgsAttrName = "wayland-protocols";
}
# {
# attrName = "wl-screenrec";
# # soon in nixpkgs
# extra.buildInputs = [ prev.libdrm ];
# replace.doCheck = false;
# }
{
attrName = "wbg";
extra.buildInputs = [
prev.libjxl
prev.pixman
];
}
{
attrName = "dunst";
# remove once nixpkgs is above 1.11.1
replace = previousAttrs: {
postInstall =
builtins.replaceStrings
[
''
substituteInPlace $out/share/zsh/site-functions/_dunstctl $out/share/fish/vendor_completions.d/{dunstctl,dunstify} \
--replace-fail "jq" "${lib.getExe prev.jq}"
''
]
[
''
substituteInPlace $out/share/zsh/site-functions/_dunstctl $out/share/fish/vendor_completions.d/{dunstctl,dunstify}.fish \
--replace-fail "jq" "${lib.getExe prev.jq}"
''
]
previousAttrs.postInstall;
};
}
{
attrName = "neatvnc";
replace.patches = [];
replaceInput = {
ffmpeg = prev.ffmpeg_7;
};
}
{
attrName = "waypipe";
extra = {
depsBuildBuild = [ prev.pkg-config ];
nativeBuildInputs = [ prev.pkg-config prev.wayland-scanner ];
buildInputs = [ prev.wayland ];
};
}
];
# these do not need changes from the package that nixpkgs has
attrsNoExtraChangesNeeded = lib.attrValues (
lib.genAttrs
[
"gebaar-libinput"
"glpaper"
"imv"
"mako"
"slurp"
"swaybg"
"swayidle"
"swaylock-effects"
"wl-clipboard"
"wlogout"
"wlr-randr"
"wofi"
"wtype"
"wshowkeys"
"aml"
"wdisplays"
"kanshi"
"wev"
"lavalauncher"
"wlsunset"
"rootbar"
"sirula"
"swww"
"wlay"
"i3status-rust"
"shotman"
]
(s: {
attrName = s;
})
);
waylandPkgs = genPackagesGH // rec {
# wlroots-related
salut = prev.callPackage ./pkgs/salut { };
wlvncc = prev.callPackage ./pkgs/wlvncc { libvncserver = final.libvncserver_master; };
obs-wlrobs = template {
nixpkgsAttrName = "obs-studio-plugins.wlrobs";
attrName = "obs-wlrobs";
};
# the above should actually be, but there's eval error and doing
# 'nix build -f packages.nix' would build all packages in obs-studio-plugins
# obs-studio-plugins = prev.obs-studio-plugins // {
# wlrobs = template {
# nixpkgsAttrName = "obs-studio-plugins.wlrobs";
# attrName = "wlrobs";
# };
# };
wldash = prev.callPackage ./pkgs/wldash { };
wlroots = prev.callPackage ./pkgs/wlroots {
wlroots = prev.wlroots_0_18;
wayland-protocols = final.new-wayland-protocols;
};
wl-gammarelay-rs = prev.callPackage ./pkgs/wl-gammarelay-rs { };
freerdp3 = prev.callPackage ./pkgs/freerdp3 {
inherit (prev.darwin.apple_sdk.frameworks)
AudioToolbox
AVFoundation
Carbon
Cocoa
CoreMedia
;
inherit (prev.gst_all_1) gstreamer gst-plugins-base gst-plugins-good;
};
# misc
foot = prev.callPackage ./pkgs/foot { inherit foot; };
};
in
waylandPkgs // { inherit waylandPkgs; };
in
lib.flake-utils.eachSystem
[
"aarch64-linux"
"x86_64-linux"
"riscv64-linux"
]
(
system:
let
pkgsFor =
pkgs: overlays:
import pkgs {
inherit system overlays;
config.allowUnfree = true;
config.allowAliases = false;
};
pkgs_ = lib.genAttrs (builtins.attrNames inputs) (inp: pkgsFor inputs."${inp}" [ ]);
opkgs_ = overlays: lib.genAttrs (builtins.attrNames inputs) (inp: pkgsFor inputs."${inp}" overlays);
waypkgs = (opkgs_ [ self.overlays.default ]).nixpkgs;
in
rec {
devShells.default = pkgs_.nixpkgs.mkShell {
nativeBuildInputs = with pkgs_.nixpkgs; [
nix
nushell
cachix
cacert
git
mercurial
ripgrep
sd
];
};
formatter = pkgs_.nixpkgs.nixfmt;
bundle = pkgs_.nixpkgs.symlinkJoin {
name = "nixpkgs-wayland-bundle";
paths = builtins.attrValues (
lib.filterAttrs (_: v: lib.meta.availableOn pkgs_.nixpkgs.stdenv.hostPlatform v) waypkgs.waylandPkgs
);
};
packages = waypkgs.waylandPkgs // {
default = bundle;
};
}
)
// {
# overlays have to be outside of eachSystem block
overlay = waylandOverlay;
overlays.default = waylandOverlay;
};
}
================================================
FILE: main.nu
================================================
#!/usr/bin/env nu
let system = "x86_64-linux";
let forceCheck = false; # use for development to re-update all pkgs
$env.CACHIX_CACHE = (
if "CACHIX_CACHE" in $env { $env.CACHIX_CACHE }
else "nixpkgs-wayland"
)
$env.CACHIX_SIGNING_KEY = (
if "CACHIX_SIGNING_KEY_NIXPKGS_WAYLAND" in $env { $env.CACHIX_SIGNING_KEY_NIXPKGS_WAYLAND }
else "null"
)
def getBadHash [ attrName: string ] {
let val = ((do -i { ^nix build --no-link $attrName }| complete)
| get stderr
| split row "\n"
| where ($it | str contains "got:")
| str replace --regex '\s+got:(.*)(sha256-.*)' '$2'
| get 0
)
$val
}
def replaceHash [ packageName: string, position: string, hashName: string, oldHash: string ] {
let fakeSha256 = "0000000000000000000000000000000000000000000000000000";
do -c { ^sd -s $"($oldHash)" $"($fakeSha256)" $"($position)" }
let newHash = (getBadHash $".#($packageName)")
do -c { ^sd -s $"($fakeSha256)" $"($newHash)" $"($position)" }
print -e {packageName: $packageName, hashName: $hashName, oldHash: $oldHash, newHash: $newHash}
}
def updatePkg [packageName: string] {
let position = $"pkgs/($packageName)/metadata.nix"
let verinfo = (^nix eval --json -f $position | str trim | from json)
let skip = (("skip" in ($verinfo | transpose | get column0)) and $verinfo.skip)
if $skip {
print -e $"(ansi light_yellow) update ($packageName) - (ansi light_cyan_underline)skipped(ansi reset)"
} else {
# Try update rev
let newrev = (
if ("repo_git" in ($verinfo | transpose | get column0)) {
(do -c {
^git ls-remote $verinfo.repo_git $"refs/heads/($verinfo.branch)"
} | complete | get stdout | str trim | str replace --regex '(\s+)(.*)$' "")
} else if ( "repo_hg" in ($verinfo | transpose | get column0) ) {
(do -c {
^hg identify $verinfo.repo_hg -r $verinfo.branch
} | complete | get stdout | str trim)
} else {
error make { msg: "unknown repo type" }
}
)
let shouldUpdate = (if ($forceCheck) {
print -e $"(ansi light_yellow) update ($packageName) - (ansi light_yellow_underline)forced(ansi reset)"
true
} else if ($newrev != $verinfo.rev) {
print -e $"(ansi light_yellow) update ($packageName) - (ansi light_yellow_underline)update to ($newrev)(ansi reset)"
true
} else {
print -e $"(ansi dark_gray) update ($packageName) - noop(ansi reset)"
false
})
if ($shouldUpdate) {
do -c { ^sd -s $"($verinfo.rev)" $"($newrev)" $"($position)" }
print -e {packageName: $packageName, oldrev: $verinfo.rev, newrev: $newrev}
replaceHash $packageName $position "sha256" $verinfo.sha256
if "vendorSha256" in ($verinfo | transpose | get column0) {
replaceHash $packageName $position "vendorSha256" $verinfo.vendorSha256
}
do -c {
^git commit $position -m $"auto-update: ($packageName): ($verinfo.rev) => ($newrev)"
} | complete
}
null
} # end !skip
}
def updatePkgs [] {
let pkgs = (^nix eval --json $".#packages.($system)" --apply 'x: builtins.attrNames x' | str trim | from json)
let pkgs = ($pkgs | where ($it != "default"))
for pkg in $pkgs {
updatePkg $pkg
}
}
def "main rereadme" [] {
let color = "yellow"
let packageNames = (nix eval --json $".#packages.($system)" --apply 'x: builtins.attrNames x' | str trim | from json)
let pkgList = ($packageNames | where ($it != "default"))
let delimStart = "<!--pkgs-start-->"
let delimEnd = "<!--pkgs-end-->"
let pkgrows = ($pkgList | each { |packageName|
let meta = (do -c {
nix eval --json $".#packages.($system).($packageName).meta" | str trim | from json
})
let home = (if "homepage" in ($meta | transpose | get column0) {
$meta.homepage
} else { "__missing__" })
($"| [($packageName)]\(($home)\) | ($meta.description) |")
})
let rows = [
$delimStart
"| Package | Description |"
"| --- | --- |"
$pkgrows
$delimEnd
]
let tableText = ($rows | flatten | str join "\n")
let regexString = ([ '(?s)(.*)' $delimStart '(.*)' $delimEnd '(.*)' ] | str join '')
let replaceText = $"\$1($tableText)\$3"
^rg --multiline $regexString "README.md" --replace $replaceText | save --raw README2.md
mv -f README2.md README.md
do -i { ^git commit -m "auto-update: updated readme" "./README.md" }
}
def flakeAdvance [] {
^nix flake update --recreate-lock-file --commit-lock-file
}
def gitPush [] {
print -e ":: git push origin HEAD"
^git push origin HEAD
}
def "main build" [--cache] {
print -e ":: nix build bundle (cachix)"
rm -rf result*
^nix build --keep-going '.#bundle.x86_64-linux'
if $cache {
^ls -d result* | ^tee "/dev/stderr" | cachix push $"($env.CACHIX_CACHE)"
}
rm -rf result*
print -e ":: nix build devshell-inputDrv (cachix)"
^nix build --keep-going $".#devShells.($system).default.inputDerivation"
if $cache {
^ls -d result* | ^tee "/dev/stderr" | cachix push $"($env.CACHIX_CACHE)"
}
}
def "main advance" [] {
flakeAdvance
main build
gitPush
}
def "main update" [packageName?: string] {
print -e ":: update"
if $packageName == null {
flakeAdvance
updatePkgs
main build --cache=true
main rereadme
gitPush
} else {
updatePkg $packageName
}
}
def "main check" [packageName?: string] {
print -e ":: ci checks"
main build --cache=false
main rereadme
}
def main [] {
print -e "commands: [advance, update, build]"
}
================================================
FILE: overlay.nix
================================================
# This file provides backward compatibility to nix < 2.4 clients
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
inherit (lock.nodes.flake-compat.locked)
owner
repo
rev
narHash
;
flake-compat = fetchTarball {
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat { src = ./.; };
in
flake.defaultNix.overlays.default
================================================
FILE: packages.nix
================================================
# This file provides backward compatibility to nix < 2.4 clients
{
system ? builtins.currentSystem,
}:
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
inherit (lock.nodes.flake-compat.locked)
owner
repo
rev
narHash
;
flake-compat = fetchTarball {
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat {
inherit system;
src = ./.;
};
in
flake.defaultNix.packages.${builtins.currentSystem}
================================================
FILE: pkgs/aml/metadata.nix
================================================
rec {
domain = "github.com";
owner = "any1";
repo = "aml";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "685035c9830aa89df02a43df89b644690bd885f5";
sha256 = "sha256-10gm6YphZrpLShj3NUj/AG24dSVLZAZbbnXr7GiF4DI=";
}
================================================
FILE: pkgs/cage/metadata.nix
================================================
rec {
domain = "github.com";
owner = "Hjdskes";
repo = "cage";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "2e593fe5a8a2186a558ceb414674775e4ba5d2b1";
sha256 = "sha256-AgBlauOEQvLr4+LMoLRa8rcS4GDtwOFd9flBHyLUhxE=";
}
================================================
FILE: pkgs/drm_info/metadata.nix
================================================
rec {
domain = "github.com";
owner = "ascent12";
repo = "drm_info";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "e9cabcd98038e4e97e4b10d20be81df0f153d793";
sha256 = "sha256-RxT+i/syPdiOjQexY4sFKUCs10RK12AfYK8CW1woMy0=";
}
================================================
FILE: pkgs/dunst/metadata.nix
================================================
rec {
domain = "github.com";
owner = "dunst-project";
repo = "dunst";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "ee63a720acad34f62567a1ae6a8e7b0636e56a50";
sha256 = "sha256-tktbQHEl9YmuaeF+dbz8GWnjYBGwcbvrCCx03fXtZNI=";
}
================================================
FILE: pkgs/eww/metadata.nix
================================================
rec {
domain = "github.com";
owner = "elkowar";
repo = "eww";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "fddb4a09b107237819e661151e007b99b5cab36d";
sha256 = "sha256-PJW4LvW9FmkG9HyUtgXOq7MDjYtBc/iJuOxyf29nD0Y=";
}
================================================
FILE: pkgs/foot/default.nix
================================================
{
stdenv,
lib,
fetchFromGitea,
fetchurl,
runCommand,
fcft,
freetype,
pixman,
libxkbcommon,
fontconfig,
wayland,
meson,
ninja,
ncurses,
scdoc,
tllist,
wayland-protocols,
wayland-scanner,
pkg-config,
utf8proc,
allowPgo ? !stdenv.hostPlatform.isMusl,
python3, # for PGO
# for clang stdenv check
foot,
llvmPackages,
}:
let
metadata = import ./metadata.nix;
pname = "foot";
version = metadata.rev;
src = fetchFromGitea {
domain = "codeberg.org";
owner = "dnkl";
repo = pname;
rev = version;
inherit (metadata) sha256;
};
# build stimuli file for PGO build and the script to generate it
# independently of the foot's build, so we can cache the result
# and avoid unnecessary rebuilds as it can take relatively long
# to generate
#
# For every bump, make sure that the hash is still accurate.
stimulusGenerator = stdenv.mkDerivation {
name = "foot-generate-alt-random-writes";
src = "${src}/scripts/generate-alt-random-writes.py";
dontUnpack = true;
buildInputs = [ python3 ];
installPhase = ''
install -Dm755 $src $out
'';
};
stimuliFile = runCommand "pgo-stimulus-file" { } ''
${stimulusGenerator} \
--rows=67 --cols=135 \
--scroll --scroll-region \
--colors-regular --colors-bright --colors-256 --colors-rgb \
--attr-bold --attr-italic --attr-underline \
--sixel \
--seed=2305843009213693951 \
$out
'';
compilerName =
if stdenv.cc.isClang then
"clang"
else if stdenv.cc.isGNU then
"gcc"
else
"unknown";
# https://codeberg.org/dnkl/foot/src/branch/master/INSTALL.md#performance-optimized-pgo
pgoCflags =
{
"clang" = "-O3 -Wno-ignored-optimization-argument";
"gcc" = "-O3";
}
."${compilerName}";
# ar with lto support
ar =
stdenv.cc.bintools.targetPrefix
+ {
"clang" = "llvm-ar";
"gcc" = "gcc-ar";
"unknown" = "ar";
}
."${compilerName}";
# PGO only makes sense if we are not cross compiling and
# using a compiler which foot's PGO build supports (clang or gcc)
doPgo = allowPgo && (stdenv.hostPlatform == stdenv.buildPlatform) && compilerName != "unknown";
terminfoDir = "${placeholder "terminfo"}/share/terminfo";
in
stdenv.mkDerivation {
inherit version pname src;
separateDebugInfo = true;
depsBuildBuild = [
pkg-config
];
nativeBuildInputs =
[
wayland-scanner
meson
ninja
ncurses
scdoc
pkg-config
]
++ lib.optionals (compilerName == "clang") [
stdenv.cc.cc.libllvm.out
];
buildInputs = [
tllist
wayland-protocols
fontconfig
freetype
pixman
wayland
libxkbcommon
fcft
utf8proc
];
# recommended build flags for performance optimized foot builds
# https://codeberg.org/dnkl/foot/src/branch/master/INSTALL.md#release-build
CFLAGS = if !doPgo then "-O3" else pgoCflags;
# ar with gcc plugins for lto objects
preConfigure = ''
export AR="${ar}"
'';
mesonBuildType = "release";
# See https://codeberg.org/dnkl/foot/src/tag/1.9.2/INSTALL.md#options
mesonFlags = [
# Use lto
"-Db_lto=true"
# “Build” and install terminfo db
"-Dterminfo=enabled"
# Ensure TERM=foot is used
"-Ddefault-terminfo=foot"
# Tell foot to set TERMINFO and where to install the terminfo files
"-Dcustom-terminfo-install-location=${terminfoDir}"
# Install systemd user units for foot-server
"-Dsystemd-units-dir=${placeholder "out"}/lib/systemd/user"
# Especially -Wunused-command-line-argument is a problem with clang
"-Dwerror=false"
];
# build and run binary generating PGO profiles,
# then reconfigure to build the normal foot binary utilizing PGO
preBuild =
lib.optionalString doPgo ''
meson configure -Db_pgo=generate
ninja
# make sure there is _some_ profiling data on all binaries
meson test
./footclient --version
./foot --version
./utils/xtgettcap
# generate pgo data of wayland independent code
./pgo ${stimuliFile} ${stimuliFile} ${stimuliFile}
meson configure -Db_pgo=use
''
+ lib.optionalString (doPgo && compilerName == "clang") ''
llvm-profdata merge default_*profraw --output=default.profdata
'';
# Install example themes which can be added to foot.ini via the include
# directive to a separate output to save a bit of space
postInstall = ''
moveToOutput share/foot/themes "$themes"
'';
doCheck = true;
strictDeps = true;
outputs = [
"out"
"terminfo"
"themes"
];
passthru.tests = {
clang-default-compilation = foot.override {
inherit (llvmPackages) stdenv;
};
noPgo = foot.override {
allowPgo = false;
};
# By changing name, this will get rebuilt everytime we change version,
# even if the hash stays the same. Consequently it'll fail if we introduce
# a hash mismatch when updating.
stimulus-script-is-current = stimulusGenerator.src.overrideAttrs (_: {
name = "generate-alt-random-writes-${version}.py";
});
};
meta = with lib; {
homepage = "https://codeberg.org/dnkl/foot/";
changelog = "https://codeberg.org/dnkl/foot/releases/tag/${version}";
description = "Fast, lightweight and minimalistic Wayland terminal emulator";
license = licenses.mit;
maintainers = [
maintainers.sternenseemann
maintainers.abbe
];
platforms = platforms.linux;
mainProgram = "foot";
};
}
================================================
FILE: pkgs/foot/metadata.nix
================================================
rec {
type = "gitea";
domain = "codeberg.org";
owner = "dnkl";
repo = "foot";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "72d9a13c0c6b6ee4b56a38f508c2e8d5c56616b5";
sha256 = "sha256-cUUoAVBtlhnZJWfuCYqHjjYKIpKf9JBHcE5YCi5WscI=";
}
================================================
FILE: pkgs/freerdp3/default.nix
================================================
{
stdenv,
lib,
fetchFromGitHub,
cmake,
docbook-xsl-nons,
libxslt,
pkg-config,
alsa-lib,
faac,
faad2,
ffmpeg,
glib,
openh264,
openssl,
pcre2,
zlib,
libX11,
libXcursor,
libXdamage,
libXdmcp,
libXext,
libXi,
libXinerama,
libXrandr,
libXrender,
libXtst,
libXv,
libxkbcommon,
libxkbfile,
libv4l,
wayland,
wayland-scanner,
gstreamer,
gst-plugins-base,
gst-plugins-good,
libunwind,
orc,
cairo,
libusb1,
libpulseaudio,
cups,
pcsclite,
systemd,
libjpeg_turbo,
icu,
SDL2,
SDL2_ttf,
krb5,
cjson,
pkcs11helper,
webkitgtk_4_1,
buildServer ? true,
nocaps ? false,
AudioToolbox,
AVFoundation,
Carbon,
Cocoa,
CoreMedia,
fuse3,
withUnfree ? false,
}:
let
metadata = import ./metadata.nix;
cmFlag = flag: if flag then "ON" else "OFF";
disabledTests = lib.optionals stdenv.isDarwin [
{
dir = "winpr/libwinpr/sysinfo/test";
file = "TestGetComputerName.c";
}
];
inherit (lib) optionals;
in
stdenv.mkDerivation rec {
pname = "freerdp";
version = metadata.rev;
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
inherit (metadata) rev sha256;
};
postPatch =
''
export HOME=$TMP
# skip NIB file generation on darwin
sed -z 's/NIB file generation.*//' -i client/Mac{,/cli}/CMakeLists.txt
# failing test(s)
${lib.concatMapStringsSep "\n" (e: ''
substituteInPlace ${e.dir}/CMakeLists.txt \
--replace ${e.file} ""
rm ${e.dir}/${e.file}
'') disabledTests}
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" "${lib.getLib pcsclite}/lib/libpcsclite.so"
''
+ lib.optionalString nocaps ''
substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \
--replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL"
'';
buildInputs =
[
cairo
cups
faad2
ffmpeg
fuse3
glib
gst-plugins-base
gst-plugins-good
gstreamer
icu
libX11
libXcursor
libXdamage
libXdmcp
libXext
libXi
libXinerama
libXrandr
libXrender
libXtst
libXv
libjpeg_turbo
libpulseaudio
libunwind
libusb1
libxkbcommon
libxkbfile
openh264
openssl
orc
pcre2
pcsclite
zlib
SDL2
SDL2_ttf
krb5
cjson
pkcs11helper
webkitgtk_4_1
]
++ optionals stdenv.isLinux [
alsa-lib
libv4l
systemd
wayland
]
++ optionals stdenv.isDarwin [
AudioToolbox
AVFoundation
Carbon
Cocoa
CoreMedia
]
++ optionals withUnfree [ faac ];
nativeBuildInputs = [
cmake
libxslt
docbook-xsl-nons
pkg-config
] ++ optionals stdenv.isLinux [
wayland-scanner
];
doCheck = true;
# https://github.com/FreeRDP/FreeRDP/issues/8526#issuecomment-1357134746
cmakeFlags =
[
"-Wno-dev"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DDOCBOOKXSL_DIR=${docbook-xsl-nons}/xml/xsl/docbook"
]
++ lib.mapAttrsToList (k: v: "-D${k}=${cmFlag v}") {
BUILD_TESTING = false; # false is recommended by upstream
WITH_CAIRO = cairo != null;
WITH_CUPS = cups != null;
WITH_FAAC = withUnfree && faac != null;
WITH_FAAD2 = faad2 != null;
WITH_JPEG = libjpeg_turbo != null;
WITH_OPENH264 = openh264 != null;
WITH_OSS = false;
WITH_PCSC = pcsclite != null;
WITH_PULSE = libpulseaudio != null;
WITH_SERVER = buildServer;
WITH_VAAPI = false; # false is recommended by upstream
WITH_X11 = true;
};
env = {
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-DTARGET_OS_IPHONE=0 -DTARGET_OS_WATCH=0 -include AudioToolbox/AudioToolbox.h";
NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework AudioToolbox";
};
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 = "https://www.freerdp.com/";
license = licenses.asl20;
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.unix;
};
}
================================================
FILE: pkgs/freerdp3/metadata.nix
================================================
rec {
domain = "github.com";
owner = "FreeRDP";
repo = "FreeRDP";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "6111ac458c041e7d21d88910deb2f061317a743f";
sha256 = "sha256-yOkJ1uT8CwnhsjAR2E9nD2F+FXFm3ZbZFVY4913rVI4=";
# Can't find SDL2 started in https://github.com/FreeRDP/FreeRDP/pull/10996 probably
skip = true;
}
================================================
FILE: pkgs/gebaar-libinput/metadata.nix
================================================
rec {
domain = "github.com";
owner = "Osleg";
repo = "gebaar-libinput-fork";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "6ce14eb64a9f4bb8201bae26052521ae5e64f553";
sha256 = "sha256-NwF9TOJ6SzJJBa7mrUOCLEhz2xf0it7rVuOzhqvDwt0=";
}
================================================
FILE: pkgs/glpaper/metadata.nix
================================================
rec {
type = "hgsourcehut";
domain = "hg.sr.ht";
owner = "~scoopta";
repo = "glpaper";
repo_hg = "https://${domain}/${owner}/${repo}";
branch = "default";
rev = "af9827d20bfe";
sha256 = "sha256-zgvnWqsw243jZ9e6fG6L0hDfRRHwzmIdsxwnnWhimu0=";
}
================================================
FILE: pkgs/grim/metadata.nix
================================================
rec {
domain = "github.com";
owner = "emersion";
repo = "grim";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "47e2658619c6b5a790732c5876fb84e8273f08a9";
sha256 = "sha256-X3NHAFe27hnjM6YQ5YsFJWkGYe+mRAFUjiR20R5tTAQ=";
}
================================================
FILE: pkgs/gtk-layer-shell/metadata.nix
================================================
rec {
domain = "github.com";
owner = "wmww";
repo = "gtk-layer-shell";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "2a8ddaa09844ba78783c95d288300a1d8a93e429";
sha256 = "sha256-+vJouQEauTe/dp2WdOJcc2Byv1+Hb0iaUgwBPnV9g48=";
}
================================================
FILE: pkgs/i3status-rust/metadata.nix
================================================
rec {
domain = "github.com";
owner = "greshake";
repo = "i3status-rust";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "bb1a479bbb77cf6b390be87f948a3b4f756fa8c0";
sha256 = "sha256-utEFjWCyCbp5Jw1+NP4abaCuEGGKXrjZhSWqdTaxYHI=";
}
================================================
FILE: pkgs/imv/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~exec64";
repo = "imv";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "8f36d35ff6a844de7d338a4e9b34bc98f114014b";
sha256 = "sha256-aJ2EXgsS0WUTxMqC1Q+uOWLG8BeuwAyXPmJB/9/NCCU=";
}
================================================
FILE: pkgs/kanshi/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~emersion";
repo = "kanshi";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "00a653a9c5172a7fe97c4669f63703ac4a681007";
sha256 = "sha256-14n7k3GWghRfqjA7BwRofkUeajo2XH0fWAaICSc7pAM=";
}
================================================
FILE: pkgs/lavalauncher/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~leon_plickat";
repo = "lavalauncher";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "da17d8a29bfc6b78280242b8fdbcb1b6df4f8aff";
sha256 = "sha256-hobhZ6s9m2xCdAurdj0EF1BeS88j96133zu+2jb1FMM=";
}
================================================
FILE: pkgs/libvncserver_master/metadata.nix
================================================
rec {
domain = "github.com";
owner = "LibVNC";
repo = "libvncserver";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "4c15a85d448c33f08ddd3d713672c70ea507f5ee";
sha256 = "sha256-YHe4DYlYNy1L7KzfvdVlLDxEi8we3UezEAaMSBfIhhc=";
}
================================================
FILE: pkgs/libvncserver_master/pkgconfig.patch
================================================
diff --git a/src/libvncclient/libvncclient.pc.cmakein b/src/libvncclient/libvncclient.pc.cmakein
index ceeda39d..2516e643 100644
--- a/src/libvncclient/libvncclient.pc.cmakein
+++ b/src/libvncclient/libvncclient.pc.cmakein
@@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
-libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
-includedir=@CMAKE_INSTALL_PREFIX@/include
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: LibVNCClient
Description: A library for easy implementation of a VNC client.
diff --git a/src/libvncserver/libvncserver.pc.cmakein b/src/libvncserver/libvncserver.pc.cmakein
index 33ec6685..57244742 100644
--- a/src/libvncserver/libvncserver.pc.cmakein
+++ b/src/libvncserver/libvncserver.pc.cmakein
@@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
-libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
-includedir=@CMAKE_INSTALL_PREFIX@/include
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: LibVNCServer
Description: A library for easy implementation of a VNC server.
================================================
FILE: pkgs/mako/metadata.nix
================================================
rec {
domain = "github.com";
owner = "emersion";
repo = "mako";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "84637d1cb42def0ef74d6ec961e05c3900b4c23f";
sha256 = "sha256-5Mv0P/SoUiJIiYvGm5wvNZhtz2ytwsqqRc3Pk3ju0WA=";
}
================================================
FILE: pkgs/neatvnc/metadata.nix
================================================
rec {
domain = "github.com";
owner = "any1";
repo = "neatvnc";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "4962e0af5d550b2c4fd34c79dbdca543f233d87c";
sha256 = "sha256-6xHasCH27useFWYPzDlUe0eaZ81WZu4JtftPb+ks+kk=";
}
================================================
FILE: pkgs/new-wayland-protocols/metadata.nix
================================================
rec {
type = "gitlab";
domain = "gitlab.freedesktop.org";
owner = "wayland";
repo = "wayland-protocols";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "main";
rev = "6a73aacd7c04a1e40d64ce28d48fe10df550b6fb";
sha256 = "sha256-ykzFUVSg8kCkhYwO8IBiwiCAURumU5bQqqjn2gHi1sA=";
}
================================================
FILE: pkgs/obs-wlrobs/metadata.nix
================================================
rec {
type = "hgsourcehut";
domain = "hg.sr.ht";
owner = "~scoopta";
repo = "wlrobs";
repo_hg = "https://${domain}/${owner}/${repo}";
branch = "default";
rev = "b8668b4d6d6d";
sha256 = "sha256-gqGnDrfID5hTcpX3EkSGg4yDwa/ZKCQCqJ3feq44I1I=";
}
================================================
FILE: pkgs/rootbar/metadata.nix
================================================
rec {
type = "hgsourcehut";
domain = "hg.sr.ht";
owner = "~scoopta";
repo = "rootbar";
repo_hg = "https://${domain}/${owner}/${repo}";
branch = "default";
rev = "36333af9fd8d";
sha256 = "sha256-CpORCSJyHZhcK14EhjxoPt/h0026NU5J/kicL1dX96o=";
}
================================================
FILE: pkgs/salut/default.nix
================================================
{
lib,
rustPlatform,
fetchFromGitLab,
pkg-config,
libxkbcommon,
fontconfig,
}:
let
metadata = import ./metadata.nix;
in
rustPlatform.buildRustPackage rec {
pname = "salut";
version = metadata.rev;
src = fetchFromGitLab {
inherit (metadata)
owner
repo
rev
sha256
;
};
cargoLock = {
lockFile = src + "/Cargo.lock";
allowBuiltinFetchGit = true;
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libxkbcommon
fontconfig
];
meta = with lib; {
description = "A sleek notification daemon";
homepage = "https://gitlab.com/snakedye/salut";
license = licenses.mpl20;
};
}
================================================
FILE: pkgs/salut/metadata.nix
================================================
rec {
owner = "snakedye";
repo = "salut";
repo_git = "https://gitlab.com/${owner}/${repo}";
branch = "master";
rev = "aa57c4d190812908a9c32cd49cff14390c6dfdcb";
sha256 = "sha256-W0lhhImSXtYJDeMbxyEioYu/Bh7ZclwR1/5DzNbxM8o=";
}
================================================
FILE: pkgs/shotman/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~whynothugo";
repo = "shotman";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "main";
rev = "da244d40ac8e60b37c77ecef4fde053cfbb6b82d";
sha256 = "sha256-j9HNqRJnGiy720uS0zC6Tt1WjF4b6+XqPEMTqTEOD6w=";
}
================================================
FILE: pkgs/sirula/metadata.nix
================================================
rec {
domain = "github.com";
owner = "DorianRudolph";
repo = "sirula";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "83efe28847060c30be311f6861e71bef6a407718";
sha256 = "sha256-njXsPgagJwpuqYQ2QxmOQS5SWElouwh1pomf52dYeG4=";
}
================================================
FILE: pkgs/slurp/metadata.nix
================================================
rec {
domain = "github.com";
owner = "emersion";
repo = "slurp";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "1de937788344c0c2beafd4a264fd8bfcf919bd93";
sha256 = "sha256-ywQwXK+1B6/TknkRDhOR0rTtQcLn35JK27UM/Ez4aF0=";
}
================================================
FILE: pkgs/sway-unwrapped/metadata.nix
================================================
rec {
upattr = "sway-unwrapped";
domain = "github.com";
owner = "swaywm";
repo = "sway";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "340505bb6f6ad2418448445fa7e5d58f771c3b4d";
sha256 = "sha256-AdggynGr51YRzrro1723JTASQJhtUY2hoZLhSLEUppE=";
}
================================================
FILE: pkgs/swaybg/metadata.nix
================================================
rec {
domain = "github.com";
owner = "swaywm";
repo = "swaybg";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "1bf721fcb61a7c78cc618868640a3ab24c5a3077";
sha256 = "sha256-AYZGM8EDQvpyv+vVHzihakltSWapSvnxio9yJcBWvRo=";
}
================================================
FILE: pkgs/swayidle/metadata.nix
================================================
rec {
domain = "github.com";
owner = "swaywm";
repo = "swayidle";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "c5e0e1fd11677b7732c073e1709cf92be9184c04";
sha256 = "sha256-CWp7YVG1qedSzZR3bO19Ppn1ojKpaB5xRYFw4rdAPUM=";
}
================================================
FILE: pkgs/swaylock/metadata.nix
================================================
rec {
domain = "github.com";
owner = "swaywm";
repo = "swaylock";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "b0f417c488fd12b1ac9f7c3eea9b49d6221b761d";
sha256 = "sha256-5JAA8mCY3vOsauvRK2zquBrzA2ROakEfahzp4a6j/Ac=";
}
================================================
FILE: pkgs/swaylock-effects/metadata.nix
================================================
rec {
domain = "github.com";
owner = "jirutka";
repo = "swaylock-effects";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "496059a8565c2d5eed672c2e5bc5e1edd14b3de8";
sha256 = "sha256-8RDaa7IvMpG3GK6wd0EPO+lLeQlr5ioVa5oyR9wct1U=";
}
================================================
FILE: pkgs/swww/metadata.nix
================================================
rec {
owner = "Horus645";
repo = "swww";
repo_git = "https://github.com/${owner}/${repo}";
branch = "main";
rev = "63d71f2b8c6d1533b5fef748dfc490dd461e343c";
sha256 = "sha256-KzuedC2yJU56sRBeMlndPuXK6UWHxSUtgAmJ/+Gww6I=";
}
================================================
FILE: pkgs/waybar/metadata.nix
================================================
rec {
domain = "github.com";
owner = "Alexays";
repo = "Waybar";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "0776e694df56c2c849b682369148210d81324e93";
sha256 = "sha256-rwN74KZdAQVLdengxHpUwkyaZTdoRzFjJ3SSr6rx2/o=";
}
================================================
FILE: pkgs/waypipe/metadata.nix
================================================
rec {
type = "gitlab";
domain = "gitlab.freedesktop.org";
owner = "mstoeckl";
repo = "waypipe";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "21639c783328e22faadeb1de8fab5b17b8d36abb";
sha256 = "sha256-BlKhtnhJkvVHxwW9UNDK7eCda2Awp2+h2TEuTpSWHtA=";
}
================================================
FILE: pkgs/wayvnc/metadata.nix
================================================
rec {
domain = "github.com";
owner = "any1";
repo = "wayvnc";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "1f7d299a318abd60af29c37b04175429f7a6c060";
sha256 = "sha256-FC3JT6G+8exK3WT+EmweOf/vrwmARiMnBh3zEuT2ZJs=";
}
================================================
FILE: pkgs/wbg/metadata.nix
================================================
rec {
type = "gitea";
domain = "codeberg.org";
owner = "dnkl";
repo = "wbg";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "bc00df2244a0d8f88d4051f505ef9aebb51447ca";
sha256 = "sha256-L+20795gILq4ClmKQFwBd2QJAJdH1sG2YXiTDMEVi7s=";
}
================================================
FILE: pkgs/wdisplays/metadata.nix
================================================
rec {
domain = "github.com";
owner = "artizirk";
repo = "wdisplays";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "157b8c51e850dc5f6b490f56f35cb101a9054e4c";
sha256 = "sha256-KabaW2BH4zAS0xWkzCM8YaAnP/hkZL7Wq3EARantRis=";
}
================================================
FILE: pkgs/wev/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~sircmpwn";
repo = "wev";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "2a46014ec5e375139f91aed456d5f01065964f86";
sha256 = "sha256-0ZA44dMDuVYfplfutOfI2EdPNakE9KnOuRfk+CEDCRk=";
}
================================================
FILE: pkgs/wf-recorder/metadata.nix
================================================
rec {
domain = "github.com";
owner = "ammen99";
repo = "wf-recorder";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "664fc451caa7559a39c2cdd70ff02ea781e2d4b3";
sha256 = "sha256-poQ8Fe5cjpuf2t9OMI05PmCcFlium+cCiJB55x9jHvs=";
}
================================================
FILE: pkgs/wl-clipboard/metadata.nix
================================================
rec {
domain = "github.com";
owner = "bugaevc";
repo = "wl-clipboard";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "aaa927ee7f7d91bcc25a3b68f60d01005d3b0f7f";
sha256 = "sha256-V8JAai4gZ1nzia4kmQVeBwidQ+Sx5A5on3SJGSevrUU=";
}
================================================
FILE: pkgs/wl-gammarelay-rs/default.nix
================================================
{
lib,
fetchFromGitHub,
rustPlatform,
}:
let
metadata = import ./metadata.nix;
in
rustPlatform.buildRustPackage rec {
pname = "wl-gammarelay-rs";
version = metadata.rev;
src = fetchFromGitHub {
inherit (metadata)
owner
repo
rev
sha256
;
};
cargoLock = {
lockFile = src + "/Cargo.lock";
allowBuiltinFetchGit = true;
};
meta = with lib; {
description = "A simple program that provides DBus interface to control display temperature and brightness under wayland without flickering ";
homepage = "https://github.com/MaxVerevkin/wl-gammarelay-rs";
license = licenses.gpl3;
maintainers = with maintainers; [ artturin ];
};
}
================================================
FILE: pkgs/wl-gammarelay-rs/metadata.nix
================================================
rec {
domain = "github.com";
owner = "MaxVerevkin";
repo = "wl-gammarelay-rs";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "main";
rev = "1dde760b03a5afd4761af17d8c49b7058cbd800d";
sha256 = "sha256-WdY90CUtphtUUFAh+daSQGmlWTn28Qc79A5yHTV3IOY=";
}
================================================
FILE: pkgs/wl-screenrec/metadata.nix
================================================
rec {
domain = "github.com";
owner = "russelltg";
repo = "wl-screenrec";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "main";
rev = "a3d0b5da69487441ce81ebfc3be8ba8d2255c714";
sha256 = "sha256-DE0Olwc2hYuGjkA1p1kbEXxMmoWOH7PTrne6pm1z97s=";
}
================================================
FILE: pkgs/wlay/metadata.nix
================================================
rec {
domain = "github.com";
owner = "atx";
repo = "wlay";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "ed316060ac3ac122c0d3d8918293e19dfe9a6c90";
sha256 = "sha256-Lu+EyoDHiXK9QzD4jdwbllCOCl2aEU+uK6/KxC2AUGQ=";
}
================================================
FILE: pkgs/wldash/default.nix
================================================
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
dbus,
libpulseaudio,
alsa-lib,
libxkbcommon,
wayland,
fontconfig,
}:
let
metadata = import ./metadata.nix;
libraryPath = lib.makeLibraryPath [
wayland
];
in
rustPlatform.buildRustPackage rec {
pname = "wldash";
version = metadata.rev;
src = fetchFromGitHub {
owner = "kennylevinsen";
repo = "wldash";
inherit (metadata) rev;
inherit (metadata) sha256;
};
cargoLock = {
lockFile = src + "/Cargo.lock";
allowBuiltinFetchGit = true;
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
dbus
libpulseaudio
alsa-lib
fontconfig
libxkbcommon
];
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";
license = licenses.gpl3;
maintainers = with maintainers; [ alexarice ];
platforms = [
"x86_64-linux"
"i686-linux"
];
};
}
================================================
FILE: pkgs/wldash/metadata.nix
================================================
rec {
domain = "github.com";
owner = "kennylevinsen";
repo = "wldash";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "1156b3503a04780bbdcb6a781cce87281b8bf87d";
sha256 = "sha256-1MKZByK2afNHvd2h4ISb2ON6O0XCegBJ+xX3C223PY0=";
}
================================================
FILE: pkgs/wlogout/metadata.nix
================================================
rec {
domain = "github.com";
owner = "ArtsyMacaw";
repo = "wlogout";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "350fe88bd5fe818b386d503d766fe34b6ba0f87d";
sha256 = "sha256-/JEuFRKvtXiQPWswbXzFuqivNifP8VVfSKJQWZNbDlw=";
}
================================================
FILE: pkgs/wlr-randr/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~emersion";
repo = "wlr-randr";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "3eac217684b8d9da2f9d4ab1784d0227dd04aa4a";
sha256 = "sha256-ncIUhePR/Njxti2OZU77umNgk60YVGhhOLETpHZgrcI=";
}
================================================
FILE: pkgs/wlroots/default.nix
================================================
args_@{
lib,
fetchFromGitLab,
wlroots,
libdisplay-info,
hwdata,
lcms2,
...
}:
let
metadata = import ./metadata.nix;
ignore = [
"wlroots"
"hwdata"
"libdisplay-info"
"lcms2"
];
args = lib.filterAttrs (n: _v: (!builtins.elem n ignore)) args_;
in
(wlroots.override args).overrideAttrs (old: {
version = "${metadata.rev}";
buildInputs = old.buildInputs ++ [
hwdata
libdisplay-info
lcms2
];
src = fetchFromGitLab {
inherit (metadata)
domain
owner
repo
rev
sha256
;
};
})
================================================
FILE: pkgs/wlroots/metadata.nix
================================================
rec {
domain = "gitlab.freedesktop.org";
owner = "wlroots";
repo = "wlroots";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "12316417b033465114705430105785e72dfe345d";
sha256 = "sha256-o0a0GBlKnDNZL/vAZN/a+QbZ8NWjD4F2bcQLAaPvkoY=";
}
================================================
FILE: pkgs/wlsunset/metadata.nix
================================================
rec {
type = "gitsourcehut";
domain = "git.sr.ht";
owner = "~kennylevinsen";
repo = "wlsunset";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "c056294f0f6022abec4eeab2fb7a1732f5a20f08";
sha256 = "sha256-GhU27nmE6FEDhU1GT1xN6bB7MXePAVK8ZPFlEbHG8VQ=";
}
================================================
FILE: pkgs/wlvncc/default.nix
================================================
{
stdenv,
lib,
fetchFromGitHub,
pkg-config,
meson,
ninja,
wayland,
wayland-protocols,
wayland-scanner,
libxkbcommon,
libvncserver,
libpthreadstubs,
lzo,
pixman,
libuv,
libglvnd,
libjpeg,
libpng,
neatvnc,
libX11,
libdrm,
aml,
libgbm,
ffmpeg,
openssl,
}:
let
metadata = import ./metadata.nix;
in
stdenv.mkDerivation rec {
pname = "wlvncc";
version = metadata.rev;
src = fetchFromGitHub {
owner = "any1";
repo = "wlvncc";
inherit (metadata) rev;
inherit (metadata) sha256;
};
nativeBuildInputs = [
pkg-config
wayland-scanner
meson
ninja
];
buildInputs = [
wayland
wayland-protocols
libxkbcommon
libvncserver
libpthreadstubs
lzo
pixman
libuv
libglvnd
libjpeg
libpng
neatvnc
libX11
libdrm
aml
libgbm
ffmpeg
openssl
];
enableParallelBuilding = true;
meta = with lib; {
description = "A Wayland Native VNC Client";
homepage = "https://github.com/any1/wlvncc";
license = licenses.isc;
platforms = platforms.linux;
maintainers = with maintainers; [ colemickens ];
};
}
================================================
FILE: pkgs/wlvncc/metadata.nix
================================================
rec {
domain = "github.com";
owner = "any1";
repo = "wlvncc";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "860232f34a77837915a94078efe8cd527fa582e3";
sha256 = "sha256-4VaBvocqnDf58RlIgCYwSy1YKlnKmzGU9kTYsxd4y98=";
}
================================================
FILE: pkgs/wob/metadata.nix
================================================
rec {
domain = "github.com";
owner = "francma";
repo = "wob";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "f7668d9715256a9d0dd05bc9eba7799d5ab2ce2d";
sha256 = "sha256-tLz2A/RLHkA7iEfCLr22rVcTmnWLVp8BM58MuJ/NGEI=";
}
================================================
FILE: pkgs/wofi/metadata.nix
================================================
rec {
type = "hgsourcehut";
domain = "hg.sr.ht";
owner = "~scoopta";
repo = "wofi";
repo_hg = "https://${domain}/${owner}/${repo}";
branch = "default";
rev = "ab9ba6305016";
sha256 = "sha256-XNM1vbdQOcm3pC6wgbTJeBxUqtGGnEi4ljZ6AQEkQ6o=";
}
================================================
FILE: pkgs/wshowkeys/metadata.nix
================================================
rec {
domain = "github.com";
owner = "ammgws";
repo = "wshowkeys";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "main";
rev = "e8bfc78f08ebdd1316daae59ecc77e62bba68b2b";
sha256 = "sha256-/HvNCQWsXOJZeCxHWmsLlbBDhBzF7XP/SPLdDiWMDC4=";
}
================================================
FILE: pkgs/wtype/metadata.nix
================================================
rec {
domain = "github.com";
owner = "atx";
repo = "wtype";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "d71be3a7b3f93b534a2823fd68cabd7ac2a02359";
sha256 = "sha256-TfpzAi0mkXugQn70MISyNFOXIJpDwvgh3enGv0Xq8S4=";
}
================================================
FILE: pkgs/xdg-desktop-portal-wlr/metadata.nix
================================================
rec {
domain = "github.com";
owner = "emersion";
repo = "xdg-desktop-portal-wlr";
repo_git = "https://${domain}/${owner}/${repo}";
branch = "master";
rev = "e471c3dfe5fe03921fd7109e6affe7740f9503c3";
sha256 = "sha256-9T73obDmx4gsGo6KdaQHoBqOCig4/6TVJWhx7tOpym4=";
}
================================================
FILE: shell.nix
================================================
# This file provides backward compatibility to nix < 2.4 clients
{
system ? builtins.currentSystem,
}:
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
inherit (lock.nodes.flake-compat.locked)
owner
repo
rev
narHash
;
flake-compat = fetchTarball {
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat {
inherit system;
src = ./.;
};
in
flake.shellNix
================================================
FILE: templates/template.nix
================================================
args_@{
attrName,
# the attr in nixpkgs could be different from what we want to provide
# example: us libvncserver_master nixpkgs libvncserver
nixpkgsAttrName,
prev,
extra,
replace,
replaceInput,
deprecationWarning,
...
}:
let
inherit (prev) lib;
metadata = import ../pkgs/${attrName}/metadata.nix;
ignore = [
"attrName"
"nixpkgsAttrName"
"prev"
"extra"
"replace"
"replaceInput"
"deprecationWarning"
];
args = builtins.removeAttrs (args_ // replaceInput) ignore;
nixpkgsAttr = if nixpkgsAttrName != "" then nixpkgsAttrName else attrName;
overridenAttr =
(lib.attrByPath (lib.splitString "." nixpkgsAttr)
(throw "attr ${attrName} does not exist in nixpkgs")
prev
).override
args;
overridenAttr' = lib.warnIf (
deprecationWarning != ""
) "nixpkgs-wayland: ${deprecationWarning}" overridenAttr;
fetchers =
let
fetchSubmodules = metadata.fetchSubmodules or overridenAttr.src.fetchSubmodules or false;
in
{
github = prev.fetchFromGitHub {
inherit (metadata)
owner
repo
rev
sha256
;
inherit fetchSubmodules;
};
gitlab = prev.fetchFromGitLab {
inherit (metadata)
owner
repo
rev
sha256
;
domain = metadata.domain or "gitlab.com";
# uncomment after https://github.com/NixOS/nixpkgs/pull/198489
#inherit fetchSubmodules;
};
gitea = prev.fetchFromGitea {
inherit (metadata)
owner
repo
rev
sha256
domain
;
inherit fetchSubmodules;
};
gitsourcehut = prev.fetchFromSourcehut {
inherit (metadata)
owner
repo
rev
sha256
;
inherit fetchSubmodules;
};
hgsourcehut = prev.fetchFromSourcehut {
inherit (metadata)
owner
repo
rev
sha256
;
vc = "hg";
};
};
src = fetchers.${metadata.type or "github"};
cargoLock = {
lockFile = src + "/Cargo.lock";
allowBuiltinFetchGit = true;
};
replace' = previousAttrs: if builtins.isFunction replace then replace previousAttrs else replace;
in
overridenAttr'.overrideAttrs (
previousAttrs:
(
{
pname = attrName;
version = "+${lib.substring 0 7 metadata.rev}";
inherit src;
# `--version` will be different than the version above
dontVersionCheck = true;
}
// lib.optionalAttrs (src ? meta.homepage) {
meta = previousAttrs.meta // {
inherit (src.meta) homepage;
# null changelog as it may use `finalAttrs.src.tag` while we use `rev`
changelog = null;
};
}
// lib.optionalAttrs (extra ? depsBuildBuild) {
depsBuildBuild = extra.depsBuildBuild ++ previousAttrs.depsBuildBuild;
}
// lib.optionalAttrs (extra ? nativeBuildInputs) {
nativeBuildInputs = extra.nativeBuildInputs ++ previousAttrs.nativeBuildInputs;
}
// lib.optionalAttrs (extra ? mesonFlags) {
mesonFlags = previousAttrs.mesonFlags ++ extra.mesonFlags;
}
// lib.optionalAttrs (extra ? buildInputs) {
buildInputs = extra.buildInputs ++ previousAttrs.buildInputs;
}
// lib.optionalAttrs (previousAttrs ? cargoDeps) {
cargoDeps = prev.rustPlatform.importCargoLock cargoLock;
cargoHash = null;
}
// replace' previousAttrs
)
)
gitextract_knidfuyg/
├── .envrc
├── .git-blame-ignore-revs
├── .github/
│ ├── dependabot.yml
│ ├── init
│ └── workflows/
│ ├── advance.yaml
│ ├── build.yaml
│ ├── check.yaml
│ └── update.yaml
├── .gitignore
├── README.md
├── default.nix
├── demo/
│ ├── README.md
│ ├── configuration.nix
│ ├── flake.nix
│ ├── home/
│ │ ├── profile.nix
│ │ └── sway-config
│ ├── legacy/
│ │ └── default.nix
│ ├── profile.nix
│ ├── vm-build.sh
│ └── vm-run.sh
├── flake.nix
├── main.nu
├── overlay.nix
├── packages.nix
├── pkgs/
│ ├── aml/
│ │ └── metadata.nix
│ ├── cage/
│ │ └── metadata.nix
│ ├── drm_info/
│ │ └── metadata.nix
│ ├── dunst/
│ │ └── metadata.nix
│ ├── eww/
│ │ └── metadata.nix
│ ├── foot/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── freerdp3/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── gebaar-libinput/
│ │ └── metadata.nix
│ ├── glpaper/
│ │ └── metadata.nix
│ ├── grim/
│ │ └── metadata.nix
│ ├── gtk-layer-shell/
│ │ └── metadata.nix
│ ├── i3status-rust/
│ │ └── metadata.nix
│ ├── imv/
│ │ └── metadata.nix
│ ├── kanshi/
│ │ └── metadata.nix
│ ├── lavalauncher/
│ │ └── metadata.nix
│ ├── libvncserver_master/
│ │ ├── metadata.nix
│ │ └── pkgconfig.patch
│ ├── mako/
│ │ └── metadata.nix
│ ├── neatvnc/
│ │ └── metadata.nix
│ ├── new-wayland-protocols/
│ │ └── metadata.nix
│ ├── obs-wlrobs/
│ │ └── metadata.nix
│ ├── rootbar/
│ │ └── metadata.nix
│ ├── salut/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── shotman/
│ │ └── metadata.nix
│ ├── sirula/
│ │ └── metadata.nix
│ ├── slurp/
│ │ └── metadata.nix
│ ├── sway-unwrapped/
│ │ └── metadata.nix
│ ├── swaybg/
│ │ └── metadata.nix
│ ├── swayidle/
│ │ └── metadata.nix
│ ├── swaylock/
│ │ └── metadata.nix
│ ├── swaylock-effects/
│ │ └── metadata.nix
│ ├── swww/
│ │ └── metadata.nix
│ ├── waybar/
│ │ └── metadata.nix
│ ├── waypipe/
│ │ └── metadata.nix
│ ├── wayvnc/
│ │ └── metadata.nix
│ ├── wbg/
│ │ └── metadata.nix
│ ├── wdisplays/
│ │ └── metadata.nix
│ ├── wev/
│ │ └── metadata.nix
│ ├── wf-recorder/
│ │ └── metadata.nix
│ ├── wl-clipboard/
│ │ └── metadata.nix
│ ├── wl-gammarelay-rs/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wl-screenrec/
│ │ └── metadata.nix
│ ├── wlay/
│ │ └── metadata.nix
│ ├── wldash/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wlogout/
│ │ └── metadata.nix
│ ├── wlr-randr/
│ │ └── metadata.nix
│ ├── wlroots/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wlsunset/
│ │ └── metadata.nix
│ ├── wlvncc/
│ │ ├── default.nix
│ │ └── metadata.nix
│ ├── wob/
│ │ └── metadata.nix
│ ├── wofi/
│ │ └── metadata.nix
│ ├── wshowkeys/
│ │ └── metadata.nix
│ ├── wtype/
│ │ └── metadata.nix
│ └── xdg-desktop-portal-wlr/
│ └── metadata.nix
├── shell.nix
└── templates/
└── template.nix
Condensed preview — 87 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (93K chars).
[
{
"path": ".envrc",
"chars": 10,
"preview": "use flake\n"
},
{
"path": ".git-blame-ignore-revs",
"chars": 74,
"preview": "# format with `nixfmt-rfc-style`\n1030752c7fa96902b95212d522f7ea0fe7859b95\n"
},
{
"path": ".github/dependabot.yml",
"chars": 118,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"github-actions\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n"
},
{
"path": ".github/init",
"chars": 166,
"preview": "#!/usr/bin/env bash\nset -euo pipefail\n\ngit config --global user.name 'Cole Botkens'\ngit config --global user.email 'cole"
},
{
"path": ".github/workflows/advance.yaml",
"chars": 592,
"preview": "name: \"Advance\"\nconcurrency: update-advance\non:\n schedule:\n - cron: '13 */6 * * *'\n workflow_dispatch:\n workflow_c"
},
{
"path": ".github/workflows/build.yaml",
"chars": 663,
"preview": "name: \"Build\"\non:\n push:\n branches:\n - master\n schedule:\n - cron: '17 */14 * * *'\n workflow_dispatch:\n work"
},
{
"path": ".github/workflows/check.yaml",
"chars": 626,
"preview": "name: \"Check\"\non:\n push:\n branches:\n - master\n schedule:\n - cron: '17 */14 * * *'\n pull_request:\n workflow_"
},
{
"path": ".github/workflows/update.yaml",
"chars": 589,
"preview": "name: \"Update\"\nconcurrency: update-advance\non:\n schedule:\n - cron: '38 */12 * * *'\n workflow_dispatch:\n workflow_c"
},
{
"path": ".gitignore",
"chars": 51,
"preview": ".ci/commit-message\n.direnv\n*.qcow2\nresult\nresult-*\n"
},
{
"path": "README.md",
"chars": 13060,
"preview": "# nixpkgs-wayland\n\n[](h"
},
{
"path": "default.nix",
"chars": 773,
"preview": "# This file provides backward compatibility to nix < 2.4 clients\nlet\n lock = builtins.fromJSON (builtins.readFile ./fla"
},
{
"path": "demo/README.md",
"chars": 81,
"preview": "# Demo\n\nThis is a WIP demo\n\n## QEMU Demo\n\n ./vm-build.sh && ./vm-run.sh\n \n\n"
},
{
"path": "demo/configuration.nix",
"chars": 620,
"preview": "{ ... }:\n{\n imports = [ (import ./profile.nix { user = \"demo\"; }) ];\n\n nix.settings.trusted-users = [\n \"root\"\n \""
},
{
"path": "demo/flake.nix",
"chars": 2461,
"preview": "{\n description = \"nixpkgs-wayland\";\n\n inputs = {\n nixpkgs = {\n url = \"github:nixos/nixpkgs/nixos-unstable\";\n "
},
{
"path": "demo/home/profile.nix",
"chars": 1060,
"preview": "{ pkgs, ... }:\n{\n home.packages =\n with pkgs;\n [\n brightnessctl\n dmenu\n pavucontrol\n playerct"
},
{
"path": "demo/home/sway-config",
"chars": 7155,
"preview": "# Default config for sway\n#\n# Copy this to ~/.config/sway/config and edit it to your liking.\n#\n# Read `man 5 sway` for a"
},
{
"path": "demo/legacy/default.nix",
"chars": 563,
"preview": "let\n nixpkgs = builtins.fetchTarball {\n url = \"https://github.com/nixos/nixpkgs/archive/master.tar.gz\";\n sha256 ="
},
{
"path": "demo/profile.nix",
"chars": 1429,
"preview": "{ user }:\n{ pkgs, inputs, ... }@args:\nlet\n inherit (inputs) home-manager;\nin\n{\n imports = [ \"${home-manager}/nixos\" ];"
},
{
"path": "demo/vm-build.sh",
"chars": 64,
"preview": "#!/usr/bin/env bash\nnix build \".#packages.x86_64-linux.demo-vm\"\n"
},
{
"path": "demo/vm-run.sh",
"chars": 125,
"preview": "#!/usr/bin/env bash\n\nif [[ ! -e ./result ]]; then\n echo Run ./vm-build.sh first\n exit 1\nfi\n\nexec ./result/bin/run-nixo"
},
{
"path": "flake.nix",
"chars": 13671,
"preview": "{\n description = \"nixpkgs-wayland\";\n\n inputs = {\n nixpkgs = {\n url = \"github:nixos/nixpkgs/nixos-unstable\";\n "
},
{
"path": "main.nu",
"chars": 5509,
"preview": "#!/usr/bin/env nu\n\nlet system = \"x86_64-linux\";\nlet forceCheck = false; # use for development to re-update all pkgs\n\n$en"
},
{
"path": "overlay.nix",
"chars": 434,
"preview": "# This file provides backward compatibility to nix < 2.4 clients\nlet\n lock = builtins.fromJSON (builtins.readFile ./fla"
},
{
"path": "packages.nix",
"chars": 518,
"preview": "# This file provides backward compatibility to nix < 2.4 clients\n{\n system ? builtins.currentSystem,\n}:\nlet\n lock = bu"
},
{
"path": "pkgs/aml/metadata.nix",
"chars": 257,
"preview": "rec {\n domain = \"github.com\";\n owner = \"any1\";\n repo = \"aml\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n br"
},
{
"path": "pkgs/cage/metadata.nix",
"chars": 261,
"preview": "rec {\n domain = \"github.com\";\n owner = \"Hjdskes\";\n repo = \"cage\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n"
},
{
"path": "pkgs/drm_info/metadata.nix",
"chars": 266,
"preview": "rec {\n domain = \"github.com\";\n owner = \"ascent12\";\n repo = \"drm_info\";\n repo_git = \"https://${domain}/${owner}/${rep"
},
{
"path": "pkgs/dunst/metadata.nix",
"chars": 268,
"preview": "rec {\n domain = \"github.com\";\n owner = \"dunst-project\";\n repo = \"dunst\";\n repo_git = \"https://${domain}/${owner}/${r"
},
{
"path": "pkgs/eww/metadata.nix",
"chars": 260,
"preview": "rec {\n domain = \"github.com\";\n owner = \"elkowar\";\n repo = \"eww\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n "
},
{
"path": "pkgs/foot/default.nix",
"chars": 5568,
"preview": "{\n stdenv,\n lib,\n fetchFromGitea,\n fetchurl,\n runCommand,\n fcft,\n freetype,\n pixman,\n libxkbcommon,\n fontconfi"
},
{
"path": "pkgs/foot/metadata.nix",
"chars": 278,
"preview": "rec {\n type = \"gitea\";\n domain = \"codeberg.org\";\n owner = \"dnkl\";\n repo = \"foot\";\n repo_git = \"https://${domain}/${"
},
{
"path": "pkgs/freerdp3/default.nix",
"chars": 4546,
"preview": "{\n stdenv,\n lib,\n fetchFromGitHub,\n cmake,\n docbook-xsl-nons,\n libxslt,\n pkg-config,\n alsa-lib,\n faac,\n faad2,"
},
{
"path": "pkgs/freerdp3/metadata.nix",
"chars": 365,
"preview": "rec {\n domain = \"github.com\";\n owner = \"FreeRDP\";\n repo = \"FreeRDP\";\n repo_git = \"https://${domain}/${owner}/${repo}"
},
{
"path": "pkgs/gebaar-libinput/metadata.nix",
"chars": 275,
"preview": "rec {\n domain = \"github.com\";\n owner = \"Osleg\";\n repo = \"gebaar-libinput-fork\";\n repo_git = \"https://${domain}/${own"
},
{
"path": "pkgs/glpaper/metadata.nix",
"chars": 259,
"preview": "rec {\n type = \"hgsourcehut\";\n domain = \"hg.sr.ht\";\n owner = \"~scoopta\";\n repo = \"glpaper\";\n repo_hg = \"https://${do"
},
{
"path": "pkgs/grim/metadata.nix",
"chars": 262,
"preview": "rec {\n domain = \"github.com\";\n owner = \"emersion\";\n repo = \"grim\";\n repo_git = \"https://${domain}/${owner}/${repo}\";"
},
{
"path": "pkgs/gtk-layer-shell/metadata.nix",
"chars": 269,
"preview": "rec {\n domain = \"github.com\";\n owner = \"wmww\";\n repo = \"gtk-layer-shell\";\n repo_git = \"https://${domain}/${owner}/${"
},
{
"path": "pkgs/i3status-rust/metadata.nix",
"chars": 271,
"preview": "rec {\n domain = \"github.com\";\n owner = \"greshake\";\n repo = \"i3status-rust\";\n repo_git = \"https://${domain}/${owner}/"
},
{
"path": "pkgs/imv/metadata.nix",
"chars": 284,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~exec64\";\n repo = \"imv\";\n repo_git = \"https://${doma"
},
{
"path": "pkgs/kanshi/metadata.nix",
"chars": 289,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~emersion\";\n repo = \"kanshi\";\n repo_git = \"https://$"
},
{
"path": "pkgs/lavalauncher/metadata.nix",
"chars": 299,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~leon_plickat\";\n repo = \"lavalauncher\";\n repo_git = "
},
{
"path": "pkgs/libvncserver_master/metadata.nix",
"chars": 268,
"preview": "rec {\n domain = \"github.com\";\n owner = \"LibVNC\";\n repo = \"libvncserver\";\n repo_git = \"https://${domain}/${owner}/${r"
},
{
"path": "pkgs/libvncserver_master/pkgconfig.patch",
"chars": 1138,
"preview": "diff --git a/src/libvncclient/libvncclient.pc.cmakein b/src/libvncclient/libvncclient.pc.cmakein\nindex ceeda39d..2516e64"
},
{
"path": "pkgs/mako/metadata.nix",
"chars": 262,
"preview": "rec {\n domain = \"github.com\";\n owner = \"emersion\";\n repo = \"mako\";\n repo_git = \"https://${domain}/${owner}/${repo}\";"
},
{
"path": "pkgs/neatvnc/metadata.nix",
"chars": 261,
"preview": "rec {\n domain = \"github.com\";\n owner = \"any1\";\n repo = \"neatvnc\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n"
},
{
"path": "pkgs/new-wayland-protocols/metadata.nix",
"chars": 303,
"preview": "rec {\n type = \"gitlab\";\n domain = \"gitlab.freedesktop.org\";\n owner = \"wayland\";\n repo = \"wayland-protocols\";\n repo_"
},
{
"path": "pkgs/obs-wlrobs/metadata.nix",
"chars": 258,
"preview": "rec {\n type = \"hgsourcehut\";\n domain = \"hg.sr.ht\";\n owner = \"~scoopta\";\n repo = \"wlrobs\";\n repo_hg = \"https://${dom"
},
{
"path": "pkgs/rootbar/metadata.nix",
"chars": 259,
"preview": "rec {\n type = \"hgsourcehut\";\n domain = \"hg.sr.ht\";\n owner = \"~scoopta\";\n repo = \"rootbar\";\n repo_hg = \"https://${do"
},
{
"path": "pkgs/salut/default.nix",
"chars": 671,
"preview": "{\n lib,\n rustPlatform,\n fetchFromGitLab,\n pkg-config,\n libxkbcommon,\n fontconfig,\n}:\n\nlet\n metadata = import ./me"
},
{
"path": "pkgs/salut/metadata.nix",
"chars": 239,
"preview": "rec {\n owner = \"snakedye\";\n repo = \"salut\";\n repo_git = \"https://gitlab.com/${owner}/${repo}\";\n branch = \"master\";\n "
},
{
"path": "pkgs/shotman/metadata.nix",
"chars": 290,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~whynothugo\";\n repo = \"shotman\";\n repo_git = \"https:"
},
{
"path": "pkgs/sirula/metadata.nix",
"chars": 269,
"preview": "rec {\n domain = \"github.com\";\n owner = \"DorianRudolph\";\n repo = \"sirula\";\n repo_git = \"https://${domain}/${owner}/${"
},
{
"path": "pkgs/slurp/metadata.nix",
"chars": 263,
"preview": "rec {\n domain = \"github.com\";\n owner = \"emersion\";\n repo = \"slurp\";\n repo_git = \"https://${domain}/${owner}/${repo}\""
},
{
"path": "pkgs/sway-unwrapped/metadata.nix",
"chars": 289,
"preview": "rec {\n upattr = \"sway-unwrapped\";\n domain = \"github.com\";\n owner = \"swaywm\";\n repo = \"sway\";\n repo_git = \"https://$"
},
{
"path": "pkgs/swaybg/metadata.nix",
"chars": 262,
"preview": "rec {\n domain = \"github.com\";\n owner = \"swaywm\";\n repo = \"swaybg\";\n repo_git = \"https://${domain}/${owner}/${repo}\";"
},
{
"path": "pkgs/swayidle/metadata.nix",
"chars": 264,
"preview": "rec {\n domain = \"github.com\";\n owner = \"swaywm\";\n repo = \"swayidle\";\n repo_git = \"https://${domain}/${owner}/${repo}"
},
{
"path": "pkgs/swaylock/metadata.nix",
"chars": 264,
"preview": "rec {\n domain = \"github.com\";\n owner = \"swaywm\";\n repo = \"swaylock\";\n repo_git = \"https://${domain}/${owner}/${repo}"
},
{
"path": "pkgs/swaylock-effects/metadata.nix",
"chars": 273,
"preview": "rec {\n domain = \"github.com\";\n owner = \"jirutka\";\n repo = \"swaylock-effects\";\n repo_git = \"https://${domain}/${owner"
},
{
"path": "pkgs/swww/metadata.nix",
"chars": 236,
"preview": "rec {\n owner = \"Horus645\";\n repo = \"swww\";\n repo_git = \"https://github.com/${owner}/${repo}\";\n branch = \"main\";\n re"
},
{
"path": "pkgs/waybar/metadata.nix",
"chars": 263,
"preview": "rec {\n domain = \"github.com\";\n owner = \"Alexays\";\n repo = \"Waybar\";\n repo_git = \"https://${domain}/${owner}/${repo}\""
},
{
"path": "pkgs/waypipe/metadata.nix",
"chars": 296,
"preview": "rec {\n type = \"gitlab\";\n domain = \"gitlab.freedesktop.org\";\n owner = \"mstoeckl\";\n repo = \"waypipe\";\n repo_git = \"ht"
},
{
"path": "pkgs/wayvnc/metadata.nix",
"chars": 260,
"preview": "rec {\n domain = \"github.com\";\n owner = \"any1\";\n repo = \"wayvnc\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n "
},
{
"path": "pkgs/wbg/metadata.nix",
"chars": 277,
"preview": "rec {\n type = \"gitea\";\n domain = \"codeberg.org\";\n owner = \"dnkl\";\n repo = \"wbg\";\n repo_git = \"https://${domain}/${o"
},
{
"path": "pkgs/wdisplays/metadata.nix",
"chars": 267,
"preview": "rec {\n domain = \"github.com\";\n owner = \"artizirk\";\n repo = \"wdisplays\";\n repo_git = \"https://${domain}/${owner}/${re"
},
{
"path": "pkgs/wev/metadata.nix",
"chars": 286,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~sircmpwn\";\n repo = \"wev\";\n repo_git = \"https://${do"
},
{
"path": "pkgs/wf-recorder/metadata.nix",
"chars": 268,
"preview": "rec {\n domain = \"github.com\";\n owner = \"ammen99\";\n repo = \"wf-recorder\";\n repo_git = \"https://${domain}/${owner}/${r"
},
{
"path": "pkgs/wl-clipboard/metadata.nix",
"chars": 269,
"preview": "rec {\n domain = \"github.com\";\n owner = \"bugaevc\";\n repo = \"wl-clipboard\";\n repo_git = \"https://${domain}/${owner}/${"
},
{
"path": "pkgs/wl-gammarelay-rs/default.nix",
"chars": 704,
"preview": "{\n lib,\n fetchFromGitHub,\n rustPlatform,\n}:\n\nlet\n metadata = import ./metadata.nix;\nin\nrustPlatform.buildRustPackage"
},
{
"path": "pkgs/wl-gammarelay-rs/metadata.nix",
"chars": 275,
"preview": "rec {\n domain = \"github.com\";\n owner = \"MaxVerevkin\";\n repo = \"wl-gammarelay-rs\";\n repo_git = \"https://${domain}/${o"
},
{
"path": "pkgs/wl-screenrec/metadata.nix",
"chars": 269,
"preview": "rec {\n domain = \"github.com\";\n owner = \"russelltg\";\n repo = \"wl-screenrec\";\n repo_git = \"https://${domain}/${owner}/"
},
{
"path": "pkgs/wlay/metadata.nix",
"chars": 257,
"preview": "rec {\n domain = \"github.com\";\n owner = \"atx\";\n repo = \"wlay\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n br"
},
{
"path": "pkgs/wldash/default.nix",
"chars": 1094,
"preview": "{\n lib,\n rustPlatform,\n fetchFromGitHub,\n pkg-config,\n dbus,\n libpulseaudio,\n alsa-lib,\n libxkbcommon,\n wayland"
},
{
"path": "pkgs/wldash/metadata.nix",
"chars": 269,
"preview": "rec {\n domain = \"github.com\";\n owner = \"kennylevinsen\";\n repo = \"wldash\";\n repo_git = \"https://${domain}/${owner}/${"
},
{
"path": "pkgs/wlogout/metadata.nix",
"chars": 267,
"preview": "rec {\n domain = \"github.com\";\n owner = \"ArtsyMacaw\";\n repo = \"wlogout\";\n repo_git = \"https://${domain}/${owner}/${re"
},
{
"path": "pkgs/wlr-randr/metadata.nix",
"chars": 292,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~emersion\";\n repo = \"wlr-randr\";\n repo_git = \"https:"
},
{
"path": "pkgs/wlroots/default.nix",
"chars": 566,
"preview": "args_@{\n lib,\n fetchFromGitLab,\n wlroots,\n libdisplay-info,\n hwdata,\n lcms2,\n ...\n}:\n\nlet\n metadata = import ./m"
},
{
"path": "pkgs/wlroots/metadata.nix",
"chars": 276,
"preview": "rec {\n domain = \"gitlab.freedesktop.org\";\n owner = \"wlroots\";\n repo = \"wlroots\";\n repo_git = \"https://${domain}/${ow"
},
{
"path": "pkgs/wlsunset/metadata.nix",
"chars": 296,
"preview": "rec {\n type = \"gitsourcehut\";\n domain = \"git.sr.ht\";\n owner = \"~kennylevinsen\";\n repo = \"wlsunset\";\n repo_git = \"ht"
},
{
"path": "pkgs/wlvncc/default.nix",
"chars": 1163,
"preview": "{\n stdenv,\n lib,\n fetchFromGitHub,\n pkg-config,\n meson,\n ninja,\n wayland,\n wayland-protocols,\n wayland-scanner,"
},
{
"path": "pkgs/wlvncc/metadata.nix",
"chars": 260,
"preview": "rec {\n domain = \"github.com\";\n owner = \"any1\";\n repo = \"wlvncc\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n "
},
{
"path": "pkgs/wob/metadata.nix",
"chars": 260,
"preview": "rec {\n domain = \"github.com\";\n owner = \"francma\";\n repo = \"wob\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n "
},
{
"path": "pkgs/wofi/metadata.nix",
"chars": 256,
"preview": "rec {\n type = \"hgsourcehut\";\n domain = \"hg.sr.ht\";\n owner = \"~scoopta\";\n repo = \"wofi\";\n repo_hg = \"https://${domai"
},
{
"path": "pkgs/wshowkeys/metadata.nix",
"chars": 263,
"preview": "rec {\n domain = \"github.com\";\n owner = \"ammgws\";\n repo = \"wshowkeys\";\n repo_git = \"https://${domain}/${owner}/${repo"
},
{
"path": "pkgs/wtype/metadata.nix",
"chars": 258,
"preview": "rec {\n domain = \"github.com\";\n owner = \"atx\";\n repo = \"wtype\";\n repo_git = \"https://${domain}/${owner}/${repo}\";\n b"
},
{
"path": "pkgs/xdg-desktop-portal-wlr/metadata.nix",
"chars": 280,
"preview": "rec {\n domain = \"github.com\";\n owner = \"emersion\";\n repo = \"xdg-desktop-portal-wlr\";\n repo_git = \"https://${domain}/"
},
{
"path": "shell.nix",
"chars": 481,
"preview": "# This file provides backward compatibility to nix < 2.4 clients\n{\n system ? builtins.currentSystem,\n}:\nlet\n lock = bu"
},
{
"path": "templates/template.nix",
"chars": 3519,
"preview": "args_@{\n attrName,\n # the attr in nixpkgs could be different from what we want to provide\n # example: us libvncserver"
}
]
About this extraction
This page contains the full source code of the colemickens/nixpkgs-wayland GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 87 files (82.3 KB), approximately 27.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.