uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,30 @@
{ lib, stdenv, fetchFromGitHub, patches
, libxcb, xcbutilkeysyms, xcbutilwm
, libX11, xcbutil, xcbutilxrm }:
stdenv.mkDerivation rec {
version = "0.3";
pname = "2bwm";
src = fetchFromGitHub {
owner = "venam";
repo = "2bwm";
rev = "v${version}";
sha256 = "1xwib612ahv4rg9yl5injck89dlpyp5475xqgag0ydfd0r4sfld7";
};
# Allow users set their own list of patches
inherit patches;
buildInputs = [ libxcb xcbutilkeysyms xcbutilwm libX11 xcbutil xcbutilxrm ];
installPhase = "make install DESTDIR=$out PREFIX=\"\"";
meta = with lib; {
homepage = "https://github.com/venam/2bwm";
description = "A fast floating WM written over the XCB library and derived from mcwm";
license = licenses.mit;
maintainers = [ maintainers.sternenseemann ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,85 @@
{ lib, stdenv, fetchurl, pkg-config
, libtiff
, fltk, gtk
, libICE, libSM
, dbus
, fetchpatch
}:
stdenv.mkDerivation rec {
pname = "afterstep";
version = "2.2.12";
sourceName = "AfterStep-${version}";
src = fetchurl {
urls = [ "ftp://ftp.afterstep.org/stable/${sourceName}.tar.bz2" ];
sha256 = "1j7vkx1ig4kzwffdxnkqv3kld9qi3sam4w2nhq18waqjsi8xl5gz";
};
patches = [
(fetchpatch {
url = "https://salsa.debian.org/debian/afterstep/raw/master/debian/patches/44-Fix-build-with-gcc-5.patch";
sha256 = "1vipy2lzzd2gqrsqk85pwgcdhargy815fxlbn57hsm45zglc3lj4";
})
# Fix pending upstream inclusion for binutils-2.36 support:
# https://github.com/afterstep/afterstep/pull/7
(fetchpatch {
name = "binutils-2.36.patch";
url = "https://github.com/afterstep/afterstep/commit/5e9e897cf8c455390dd6f5b27fec49707f6b9088.patch";
sha256 = "1kk97max05r2p1a71pvpaza79ff0klz32rggik342p7ki3516qv8";
})
];
postPatch = ''
# Causes fatal ldconfig cache generation attempt on non-NixOS Linux
for mkfile in autoconf/Makefile.common.lib.in libAfter{Base,Image}/Makefile.in; do
substituteInPlace $mkfile \
--replace 'test -w /etc' 'false'
done
'';
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libtiff fltk gtk libICE libSM dbus ];
# A strange type of bug: dbus is not immediately found by pkg-config
preConfigure = ''
# binutils 2.37 fix
# https://github.com/afterstep/afterstep/issues/2
fixupList=(
"autoconf/Makefile.defines.in"
"libAfterImage/aftershow/Makefile.in"
"libAfterImage/apps/Makefile.in"
"libAfterBase/Makefile.in"
"libAfterImage/Makefile.in"
)
for toFix in "''${fixupList[@]}"; do
substituteInPlace "$toFix" --replace "clq" "cq"
done
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config dbus-1 --cflags)"
'';
# Parallel build fails due to missing dependencies between private libaries:
# ld: cannot find ../libAfterConf/libAfterConf.a: No such file or directory
# Let's disable parallel builds until it's fixed upstream:
# https://github.com/afterstep/afterstep/issues/8
enableParallelBuilding = false;
meta = with lib; {
description = "A NEXTStep-inspired window manager";
longDescription = ''
AfterStep is a window manager for the Unix X Window
System. Originally based on the look and feel of the NeXTStep
interface, it provides end users with a consistent, clean, and
elegant desktop. The goal of AfterStep development is to provide
for flexibility of desktop configuration, improving aestetics,
and efficient use of system resources.
'';
homepage = "http://www.afterstep.org/";
license = licenses.gpl2;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,108 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch
, lua, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf
, xorg, libstartup_notification, libxdg_basedir, libpthreadstubs
, xcb-util-cursor, makeWrapper, pango, gobject-introspection
, which, dbus, nettools, git, doxygen
, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs
, libxkbcommon, xcbutilxrm, hicolor-icon-theme
, asciidoctor
, fontsConf
, gtk3Support ? false, gtk3 ? null
}:
# needed for beautiful.gtk to work
assert gtk3Support -> gtk3 != null;
let
luaEnv = lua.withPackages(ps: [ ps.lgi ps.ldoc ]);
in
stdenv.mkDerivation rec {
pname = "awesome";
version = "4.3";
src = fetchFromGitHub {
owner = "awesomewm";
repo = "awesome";
rev = "v${version}";
sha256 = "1i7ajmgbsax4lzpgnmkyv35x8vxqi0j84a14k6zys4blx94m9yjf";
};
patches = [
# Pull upstream fix for -fno-common toolchain support:
# https://github.com/awesomeWM/awesome/pull/3065
(fetchpatch {
name = "fno-common-prerequisite.patch";
url = "https://github.com/awesomeWM/awesome/commit/c5202a48708585cc33528065af8d1b1d28b1a6e0.patch";
sha256 = "0sv36xf0ibjcm63gn9k3bl039sqavb2b5i6d65il4bdclkc0n08b";
})
(fetchpatch {
name = "fno-common.patch";
url = "https://github.com/awesomeWM/awesome/commit/d256d9055095f27a33696e0aeda4ee20ed4fb1a0.patch";
sha256 = "1n3y4wnjra8blss7642jgpxnm9n92zhhjj541bb9i60m4b7bgfzz";
})
];
nativeBuildInputs = [
cmake
doxygen
imagemagick
makeWrapper
pkg-config
xmlto docbook_xml_dtd_45
docbook_xsl findXMLCatalogs
asciidoctor
];
outputs = [ "out" "doc" ];
FONTCONFIG_FILE = toString fontsConf;
propagatedUserEnvPkgs = [ hicolor-icon-theme ];
buildInputs = [ cairo librsvg dbus gdk-pixbuf gobject-introspection
git luaEnv libpthreadstubs libstartup_notification
libxdg_basedir lua nettools pango xcb-util-cursor
xorg.libXau xorg.libXdmcp xorg.libxcb xorg.libxshmfence
xorg.xcbutil xorg.xcbutilimage xorg.xcbutilkeysyms
xorg.xcbutilrenderutil xorg.xcbutilwm libxkbcommon
xcbutilxrm ]
++ lib.optional gtk3Support gtk3;
cmakeFlags = [
#"-DGENERATE_MANPAGES=ON"
"-DOVERRIDE_VERSION=${version}"
] ++ lib.optional lua.pkgs.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so"
;
GI_TYPELIB_PATH = "${pango.out}/lib/girepository-1.0";
# LUA_CPATH and LUA_PATH are used only for *building*, see the --search flags
# below for how awesome finds the libraries it needs at runtime.
LUA_CPATH = "${luaEnv}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = "${luaEnv}/share/lua/${lua.luaversion}/?.lua;;";
postInstall = ''
# Don't use wrapProgram or the wrapper will duplicate the --search
# arguments every restart
mv "$out/bin/awesome" "$out/bin/.awesome-wrapped"
makeWrapper "$out/bin/.awesome-wrapped" "$out/bin/awesome" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--add-flags '--search ${luaEnv}/lib/lua/${lua.luaversion}' \
--add-flags '--search ${luaEnv}/share/lua/${lua.luaversion}' \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
wrapProgram $out/bin/awesome-client \
--prefix PATH : "${which}/bin"
'';
passthru = {
inherit lua;
};
meta = with lib; {
description = "Highly configurable, dynamic window manager for X";
homepage = "https://awesomewm.org/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ lovek323 rasendubi ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,77 @@
{ lib
, stdenv
, fetchFromGitHub
, copyDesktopItems
, fontconfig
, freetype
, libX11
, libXext
, libXft
, libXinerama
, makeDesktopItem
, pkg-config
, which
}:
stdenv.mkDerivation rec {
pname = "berry";
version = "0.1.11";
src = fetchFromGitHub {
owner = "JLErvin";
repo = pname;
rev = version;
hash = "sha256-cs1NVwaANMIteCQuGqPcEWuUbfJulhjmfWnlU8Eb2OM=";
};
nativeBuildInputs = [
copyDesktopItems
pkg-config
which
];
buildInputs =[
libX11
libXext
libXft
libXinerama
fontconfig
freetype
];
preConfigure = ''
patchShebangs configure
'';
desktopItems = [
(makeDesktopItem {
name = pname;
exec = "berry";
comment = meta.description;
desktopName = "Berry Window Manager";
genericName = "Berry Window Manager";
categories = [ "Utility" ];
})
];
meta = with lib; {
homepage = "https://berrywm.org/";
description = "A healthy, bite-sized window manager";
longDescription = ''
berry is a healthy, bite-sized window manager written in C for unix
systems. Its main features include:
- Controlled via a powerful command-line client, allowing users to control
windows via a hotkey daemon such as sxhkd or expand functionality via
shell scripts.
- Small, hackable source code.
- Extensible themeing options with double borders, title bars, and window
text.
- Intuitively place new windows in unoccupied spaces.
- Virtual desktops.
'';
license = licenses.mit;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchFromGitHub, libX11, libXrandr, libXft }:
stdenv.mkDerivation rec {
pname = "bevelbar";
version = "16.11";
src = fetchFromGitHub {
owner = "vain";
repo = "bevelbar";
rev = "v${version}";
sha256 = "1hbwg3vdxw9fyshy85skv476p0zr4ynvhcz2xkijydpzm2j3rmjm";
};
buildInputs = [ libX11 libXrandr libXft ];
installFlags = [ "prefix=$(out)" ];
meta = with lib; {
description = "An X11 status bar with fancy schmancy 1985-ish beveled borders";
inherit (src.meta) homepage;
license = licenses.mit;
platforms = platforms.all;
maintainers = [ maintainers.neeasade ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchFromGitHub, libxcb, libXinerama
, xcbutil, xcbutilkeysyms, xcbutilwm
}:
stdenv.mkDerivation rec {
pname = "bspwm";
version = "0.9.10";
src = fetchFromGitHub {
owner = "baskerville";
repo = "bspwm";
rev = version;
sha256 = "0qlv7b4c2mmjfd65y100d11x8iqyg5f6lfiws3cgmpjidhdygnxc";
};
buildInputs = [ libxcb libXinerama xcbutil xcbutilkeysyms xcbutilwm ];
makeFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
description = "A tiling window manager based on binary space partitioning";
homepage = "https://github.com/baskerville/bspwm";
maintainers = with maintainers; [ meisternu epitrochoid ];
license = licenses.bsd2;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,44 @@
{ lib, stdenv, fetchFromGitHub
, meson, ninja, pkg-config, wayland-scanner, scdoc, makeWrapper
, wlroots, wayland, wayland-protocols, pixman, libxkbcommon
, systemd, libGL, libX11, mesa
, xwayland ? null
, nixosTests
}:
stdenv.mkDerivation rec {
pname = "cage";
version = "0.1.4";
src = fetchFromGitHub {
owner = "Hjdskes";
repo = "cage";
rev = "v${version}";
sha256 = "0vm96gxinhy48m3x9p1sfldyd03w3gk6iflb7n9kn06j1vqyswr6";
};
nativeBuildInputs = [ meson ninja pkg-config wayland-scanner scdoc makeWrapper ];
buildInputs = [
wlroots wayland wayland-protocols pixman libxkbcommon
mesa # for libEGL headers
systemd libGL libX11
];
mesonFlags = [ "-Dxwayland=${lib.boolToString (xwayland != null)}" ];
postFixup = lib.optionalString (xwayland != null) ''
wrapProgram $out/bin/cage --prefix PATH : "${xwayland}/bin"
'';
# Tests Cage using the NixOS module by launching xterm:
passthru.tests.basic-nixos-module-functionality = nixosTests.cage;
meta = with lib; {
description = "A Wayland kiosk that runs a single, maximized application";
homepage = "https://www.hjdskes.nl/projects/cage/";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos ];
};
}

View file

@ -0,0 +1,36 @@
From 9a4523d47efeafd674d419169fe161e5a3b31cb3 Mon Sep 17 00:00:00 2001
From: Jan Beich <jbeich@FreeBSD.org>
Date: Thu, 3 Jun 2021 17:53:11 +0000
Subject: [PATCH 1/3] view: chase swaywm/wlroots@9e58301df7f0
view.c:238:52: error: no member named 'subsurfaces' in 'struct wlr_surface'
wl_list_for_each (subsurface, &view->wlr_surface->subsurfaces, parent_link) {
~~~~~~~~~~~~~~~~~ ^
/usr/include/wayland-util.h:443:30: note: expanded from macro 'wl_list_for_each'
for (pos = wl_container_of((head)->next, pos, member); \
^~~~
/usr/include/wayland-util.h:409:32: note: expanded from macro 'wl_container_of'
(__typeof__(sample))((char *)(ptr) - \
^~~
Based on https://github.com/swaywm/sway/commit/3162766eef14
---
view.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/view.c b/view.c
index b9ba9c2..3f3b0ed 100644
--- a/view.c
+++ b/view.c
@@ -235,7 +235,10 @@ view_map(struct cg_view *view, struct wlr_surface *surface)
view->wlr_surface = surface;
struct wlr_subsurface *subsurface;
- wl_list_for_each (subsurface, &view->wlr_surface->subsurfaces, parent_link) {
+ wl_list_for_each (subsurface, &view->wlr_surface->subsurfaces_below, parent_link) {
+ subsurface_create(view, subsurface);
+ }
+ wl_list_for_each (subsurface, &view->wlr_surface->subsurfaces_above, parent_link) {
subsurface_create(view, subsurface);
}

View file

@ -0,0 +1,88 @@
{ lib
, stdenv
, fetchFromGitHub
, cairo
, fontconfig
, libevdev
, libinput
, libxkbcommon
, makeWrapper
, mesa
, meson
, ninja
, nixosTests
, pango
, pixman
, pkg-config
, scdoc
, systemd
, wayland
, wayland-protocols
, withXwayland ? true , xwayland
, wlroots
}:
stdenv.mkDerivation rec {
pname = "cagebreak";
version = "1.8.1";
src = fetchFromGitHub {
owner = "project-repo";
repo = pname;
rev = version;
hash = "sha256-YaLGRlvppTUCSHFlt3sEfHgN3pYHuc5oGt3dt0DDw3I=";
};
nativeBuildInputs = [
makeWrapper
meson
ninja
pkg-config
scdoc
wayland
];
buildInputs = [
cairo
fontconfig
libevdev
libinput
libxkbcommon
mesa # for libEGL headers
pango
pixman
systemd
wayland
wayland-protocols
wlroots
];
mesonFlags = [
"-Dman-pages=true"
"-Dversion_override=${version}"
"-Dxwayland=${lib.boolToString withXwayland}"
];
postPatch = ''
# TODO: investigate why is this happening
sed -i -e 's|<drm_fourcc.h>|<libdrm/drm_fourcc.h>|' *.c
# Patch cagebreak to read its default configuration from $out/share/cagebreak
sed -i "s|/etc/xdg/cagebreak|$out/share/cagebreak|" meson.build cagebreak.c
'';
postFixup = lib.optionalString withXwayland ''
wrapProgram $out/bin/cagebreak \
--prefix PATH : "${lib.makeBinPath [ xwayland ]}"
'';
meta = with lib; {
homepage = "https://github.com/project-repo/cagebreak";
description = "A Wayland tiling compositor inspired by ratpoison";
license = licenses.mit;
maintainers = with maintainers; [ berbiche ];
platforms = platforms.linux;
};
passthru.tests.basic = nixosTests.cagebreak;
}

View file

@ -0,0 +1,118 @@
{ lib
, stdenv
, fetchFromGitLab
, fetchurl
, fetchgit
, ffmpeg
, libGL
, libX11
, libcap
, libdrm
, libinput
, libpng
, libxcb
, libxkbcommon
, mesa
, meson
, ninja
, pandoc
, pixman
, pkg-config
, unzip
, wayland
, wayland-protocols
, xcbutilerrors
, xcbutilimage
, xcbutilwm
}:
let
# cereal.wrap
cereal-wrap = fetchurl {
name = "cereal-1.3.0.tar.gz";
url = "https://github.com/USCiLab/cereal/archive/v1.3.0.tar.gz";
hash = "sha256-Mp6j4xMLAmwDpKzFDhaOfa/05uZhvGp9/sDXe1cIUdU=";
};
cereal-wrapdb = fetchurl {
name = "cereal-1.3.0-1-wrap.zip";
url = "https://wrapdb.mesonbuild.com/v1/projects/cereal/1.3.0/1/get_zip";
hash = "sha256-QYck5UT7fPLqtLDb1iOSX4Hnnns48Jj23Ae/LCfLSKY=";
};
# expected.wrap
expected-wrap = fetchgit {
name = "expected";
url = "https://gitlab.com/cardboardwm/expected";
rev = "0ee13cb2b058809aa9708c45ca18d494e72a759e";
sha256 = "sha256-gYr4/pjuLlr3k6Jcrg2/SzJLtbgyA+ZN2oMHkHXANDo=";
};
# wlroots.wrap
wlroots-wrap = fetchgit {
name = "wlroots";
url = "https://github.com/swaywm/wlroots";
rev = "0.12.0";
sha256 = "sha256-1rE3D+kQprjcjobc95/mQkUa5y1noY0MdoYJ/SpFQwY=";
};
in
stdenv.mkDerivation rec {
pname = "cardboard";
version = "0.pre+unstable=2021-05-10";
src = fetchFromGitLab {
owner = "cardboardwm";
repo = pname;
rev = "b54758d85164fb19468f5ca52588ebea576cd027";
hash = "sha256-Kn5NyQSDyX7/nn2bKZPnsuepkoppi5XIkdu7IDy5r4w=";
};
nativeBuildInputs = [
meson
ninja
pandoc
pkg-config
unzip
];
buildInputs = [
ffmpeg
libGL
libX11
libcap
libdrm
libinput
libpng
libxcb
libxkbcommon
mesa
pixman
wayland
wayland-protocols
xcbutilerrors
xcbutilimage
xcbutilwm
];
postPatch = ''
(cd subprojects
tar xvf ${cereal-wrap}
unzip ${cereal-wrapdb}
cp -r ${expected-wrap} ${expected-wrap.name}
cp -r ${wlroots-wrap} ${wlroots-wrap.name}
)
'';
# "Inherited" from Nixpkgs expression for wlroots
mesonFlags = [
"-Dman=true"
"-Dwlroots:logind-provider=systemd"
"-Dwlroots:libseat=disabled"
];
meta = with lib; {
homepage = "https://gitlab.com/cardboardwm/cardboard";
description = "A scrollable, tiling Wayland compositor inspired on PaperWM";
license = licenses.gpl3Only;
maintainers = with maintainers; [ AndersonTorres ];
platforms = with platforms; unix;
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchFromGitHub, libX11, libXinerama, libXrandr, libXft, bison, pkg-config }:
stdenv.mkDerivation rec {
pname = "cwm";
version = "6.7";
src = fetchFromGitHub {
owner = "leahneukirchen";
repo = pname;
rev = "v${version}";
sha256 = "0f9xmki2hx10k8iisfzc7nm1l31zkf1r06pdgn06ar9w9nizrld9";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libX11 libXinerama libXrandr libXft bison ];
prePatch = ''sed -i "s@/usr/local@$out@" Makefile'';
meta = with lib; {
description = "A lightweight and efficient window manager for X11";
homepage = "https://github.com/leahneukirchen/cwm";
maintainers = with maintainers; [ _0x4A6F mkf ];
license = licenses.isc;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,96 @@
{ lib
, stdenv
, fetchFromGitHub
, libinput
, libxcb
, libxkbcommon
, pixman
, pkg-config
, wayland
, wayland-protocols
, wlroots
, writeText
, enable-xwayland ? true, xwayland, libX11
, conf ? null
, patches ? [ ]
}:
let
totalPatches = patches ++ [ ];
in
stdenv.mkDerivation rec {
pname = "dwl";
version = "0.2.2";
src = fetchFromGitHub {
owner = "djpohly";
repo = pname;
rev = "v${version}";
hash = "sha256-T2GqDehBNO8eublqZUmA5WADjnwElzT+bp9Dp1bqSgg=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libinput
libxcb
libxkbcommon
pixman
wayland
wayland-protocols
wlroots
] ++ lib.optionals enable-xwayland [
libX11
xwayland
];
# Allow users to set their own list of patches
patches = totalPatches;
# Last line of config.mk enables XWayland
prePatch = lib.optionalString enable-xwayland ''
sed -i -e '$ s|^#||' config.mk
'';
# Allow users to set an alternative config.def.h
postPatch = let
configFile = if lib.isDerivation conf || builtins.isPath conf
then conf
else writeText "config.def.h" conf;
in lib.optionalString (conf != null) "cp ${configFile} config.def.h";
NIX_CFLAGS_COMPILE = [
# https://github.com/djpohly/dwl/issues/186
"-Wno-error=unused-result"
];
dontConfigure = true;
installPhase = ''
runHook preInstall
install -d $out/bin
install -m755 dwl $out/bin
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/djpohly/dwl/";
description = "Dynamic window manager for Wayland";
longDescription = ''
dwl is a compact, hackable compositor for Wayland based on wlroots. It is
intended to fill the same space in the Wayland world that dwm does in X11,
primarily in terms of philosophy, and secondarily in terms of
functionality. Like dwm, dwl is:
- Easy to understand, hack on, and extend with patches
- One C source file (or a very small number) configurable via config.h
- Limited to 2000 SLOC to promote hackability
- Tied to as few external dependencies as possible
'';
license = licenses.gpl3Only;
maintainers = with maintainers; [ AndersonTorres ];
inherit (wayland.meta) platforms;
};
}
# TODO: custom patches from upstream website

View file

@ -0,0 +1,48 @@
{ lib, stdenv, fetchurl, libX11, libXinerama, libXft, writeText, patches ? [ ], conf ? null}:
stdenv.mkDerivation rec {
pname = "dwm";
version = "6.3";
src = fetchurl {
url = "https://dl.suckless.org/dwm/${pname}-${version}.tar.gz";
sha256 = "utqgKFKbH7of1/moTztk8xGQRmyFgBG1Pi97cMajB40=";
};
buildInputs = [ libX11 libXinerama libXft ];
prePatch = ''
sed -i "s@/usr/local@$out@" config.mk
'';
# Allow users set their own list of patches
inherit patches;
# Allow users to set the config.def.h file containing the configuration
postPatch =
let
configFile =
if lib.isDerivation conf || builtins.isPath conf
then conf else writeText "config.def.h" conf;
in
lib.optionalString (conf != null) "cp ${configFile} config.def.h";
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
meta = with lib; {
homepage = "https://dwm.suckless.org/";
description = "An extremely fast, small, and dynamic window manager for X";
longDescription = ''
dwm is a dynamic window manager for X. It manages windows in tiled,
monocle and floating layouts. All of the layouts can be applied
dynamically, optimising the environment for the application in use and the
task performed.
Windows are grouped by tags. Each window can be tagged with one or
multiple tags. Selecting certain tags displays all windows with these
tags.
'';
license = licenses.mit;
maintainers = with maintainers; [ viric neonfuz ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,38 @@
{ lib, rustPlatform, fetchFromGitHub, dbus, gdk-pixbuf, libnotify, makeWrapper, pkg-config, xorg
, enableAlsaUtils ? true, alsa-utils, coreutils
, enableNetwork ? true, dnsutils, iproute2, wirelesstools }:
let
bins = lib.optionals enableAlsaUtils [ alsa-utils coreutils ]
++ lib.optionals enableNetwork [ dnsutils iproute2 wirelesstools ];
in
rustPlatform.buildRustPackage rec {
pname = "dwm-status";
version = "1.7.3";
src = fetchFromGitHub {
owner = "Gerschtli";
repo = pname;
rev = version;
sha256 = "sha256-dkVo9NpGt3G6by9Of1kOlXaZn7xsVSvfNXq7KPO6HE4=";
};
nativeBuildInputs = [ makeWrapper pkg-config ];
buildInputs = [ dbus gdk-pixbuf libnotify xorg.libX11 ];
cargoSha256 = "sha256-QPnr7dUsq/RzuNLpbTRQbGB3zU6lNuPPPM9FmH4ydzY=";
postInstall = lib.optionalString (bins != []) ''
wrapProgram $out/bin/dwm-status --prefix "PATH" : "${lib.makeBinPath bins}"
'';
meta = with lib; {
description = "Highly performant and configurable DWM status service";
homepage = "https://github.com/Gerschtli/dwm-status";
license = with licenses; [ mit ];
maintainers = with maintainers; [ gerschtli ];
mainProgram = pname;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,38 @@
{ lib, stdenv, fetchurl, pkg-config, libX11, libXft, libXinerama, libXpm }:
stdenv.mkDerivation rec {
pname = "dzen2";
version = "0.9.5";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libX11 libXft libXinerama libXpm ];
src = fetchurl {
url = "https://github.com/robm/dzen/tarball/master/dzen2-${version}git.tar.gz";
sha256 = "d4f7943cd39dc23fd825eb684b49dc3484860fa8443d30b06ee38af72a53b556";
};
patchPhase = ''
CFLAGS=" -Wall -Os ''${INCS} -DVERSION=\"''${VERSION}\" -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT `pkg-config --cflags xft`"
LIBS=" -L/usr/lib -lc -lXft -lXpm -lXinerama -lX11"
echo "CFLAGS=$CFLAGS" >>config.mk
echo "LIBS=$LIBS" >>config.mk
echo "LDFLAGS=$LIBS" >>config.mk
substituteInPlace config.mk --replace /usr/local "$out"
substituteInPlace gadgets/config.mk --replace /usr/local "$out"
'';
buildPhase = ''
mkdir -p $out/bin $out/man/man1
make clean install
cd gadgets
make clean install
'';
meta = {
homepage = "https://github.com/robm/dzen";
license = lib.licenses.mit;
description = "X notification utility";
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,62 @@
{ lib
, stdenv
, fetchurl
, pkg-config
, freetype
, imlib2
, libSM
, libXcomposite
, libXdamage
, libXext
, libXfixes
, libXft
, libXinerama
, libXrandr
, libpulseaudio
, libsndfile
, pango
, perl
}:
stdenv.mkDerivation rec {
pname = "e16";
version = "1.0.24";
src = fetchurl {
url = "mirror://sourceforge/enlightenment/e16-${version}.tar.xz";
sha256 = "1anmwfjyynwl0ylkyksa7bnsqzf58l1yccjzp3kbwq6nw1gs7dbv";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
freetype
imlib2
libSM
libXcomposite
libXdamage
libXext
libXfixes
libXft
libXinerama
libXrandr
libpulseaudio
libsndfile
pango
perl
];
postPatch = ''
substituteInPlace scripts/e_gen_menu --replace "/usr/local:" "/run/current-system/sw:/usr/local:"
'';
meta = with lib; {
homepage = "https://www.enlightenment.org/e16";
description = "Enlightenment DR16 window manager";
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = [ maintainers.romildo ];
};
}

View file

@ -0,0 +1,50 @@
{ lib
, stdenv
, fetchurl
, libX11
, libXext
, libXrandr
, libXrender
, xorgproto
, patches ? [ ]
}:
stdenv.mkDerivation rec {
pname = "evilwm";
version = "1.1.1";
src = fetchurl {
url = "http://www.6809.org.uk/evilwm/evilwm-${version}.tar.gz";
sha256 = "79589c296a5915ee0bae1d231e8912601fc794d9f0a9cacb6b648ff9a5f2602a";
};
buildInputs = [
libX11
libXext
libXrandr
libXrender
xorgproto
];
postPatch = ''
substituteInPlace ./Makefile \
--replace /usr $out \
--replace "CC = gcc" "#CC = gcc"
'';
# Allow users set their own list of patches
inherit patches;
meta = with lib; {
homepage = "http://www.6809.org.uk/evilwm/";
description = "Minimalist window manager for the X Window System";
license = {
shortName = "evilwm";
fullName = "Custom, inherited from aewm and 9wm";
url = "http://www.6809.org.uk/evilwm/";
free = true;
}; # like BSD/MIT, but Share-Alike'y; See README.
maintainers = with maintainers; [ amiloradovsky ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,45 @@
{ lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, gtk3
, withWayland ? false
, gtk-layer-shell
, stdenv
}:
rustPlatform.buildRustPackage rec {
pname = "eww";
version = "0.2.0";
src = fetchFromGitHub {
owner = "elkowar";
repo = pname;
rev = "v${version}";
sha256 = "050zc3w1z9f2vg6sz86mdxf345gd3s3jf09gf4y8y1mqkzs86b8x";
};
cargoSha256 = "sha256-LejnTVv9rhL9CVW1fgj2gFv4amHQeziu5uaH2ae8AAw=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk3 ] ++ lib.optional withWayland gtk-layer-shell;
buildNoDefaultFeatures = withWayland;
buildFeatures = lib.optional withWayland "wayland";
cargoBuildFlags = [ "--bin" "eww" ];
cargoTestFlags = cargoBuildFlags;
# requires unstable rust features
RUSTC_BOOTSTRAP = 1;
meta = with lib; {
description = "ElKowars wacky widgets";
homepage = "https://github.com/elkowar/eww";
license = licenses.mit;
maintainers = with maintainers; [ figsoda lom ];
broken = stdenv.isDarwin;
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchurl, pkg-config
, libX11, libXmu, libXpm, gtk2, libpng, libjpeg, libtiff, librsvg, gdk-pixbuf, gdk-pixbuf-xlib
}:
stdenv.mkDerivation rec {
pname = "fbpanel";
version = "6.1";
src = fetchurl {
url = "mirror://sourceforge/fbpanel/${pname}-${version}.tbz2";
sha256 = "e14542cc81ea06e64dd4708546f5fd3f5e01884c3e4617885c7ef22af8cf3965";
};
buildInputs =
[ pkg-config libX11 libXmu libXpm gtk2 libpng libjpeg libtiff librsvg gdk-pixbuf gdk-pixbuf-xlib.dev ];
preConfigure = "patchShebangs .";
postConfigure = ''
substituteInPlace config.mk \
--replace "CFLAGSX =" "CFLAGSX = -I${gdk-pixbuf-xlib.dev}/include/gdk-pixbuf-2.0"
'';
NIX_LDFLAGS="-lX11";
meta = with lib; {
description = "A stand-alone panel";
maintainers = with maintainers; [ raskin ];
platforms = platforms.linux;
license = licenses.mit;
};
passthru = {
updateInfo = {
downloadPage = "fbpanel.sourceforge.net";
};
};
}

View file

@ -0,0 +1,53 @@
{ lib, stdenv, fetchurl, pkg-config
, freetype, fribidi
, libXext, libXft, libXpm, libXrandr, libXrender, xorgproto
, libXinerama
, imlib2 }:
with lib;
stdenv.mkDerivation rec {
pname = "fluxbox";
version = "1.3.7";
src = fetchurl {
url = "mirror://sourceforge/fluxbox/${pname}-${version}.tar.xz";
sha256 = "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w";
};
patches = [
# Upstream fix to build against gcc-11.
(fetchurl {
name = "gcc-11.patch";
url = "http://git.fluxbox.org/fluxbox.git/patch/?id=22866c4d30f5b289c429c5ca88d800200db4fc4f";
sha256 = "1x7126rlmzky51lk370fczssgnjs7i6wgfaikfib9pvn4vv945ai";
})
];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ freetype fribidi libXext libXft libXpm libXrandr libXrender xorgproto libXinerama imlib2 ];
enableParallelBuilding = true;
preConfigure = ''
substituteInPlace util/fluxbox-generate_menu.in \
--subst-var-by PREFIX "$out"
'';
meta = {
description = "Full-featured, light-resource X window manager";
longDescription = ''
Fluxbox is a X window manager based on Blackbox 0.61.1 window
manager sources. It is very light on resources and easy to
handle but yet full of features to make an easy, and extremely
fast, desktop experience. It is written in C++ and licensed
under MIT license.
'';
homepage = "http://fluxbox.org/";
license = licenses.mit;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}
# Many thanks Jack Ryan from Nix-dev mailing list!

View file

@ -0,0 +1,43 @@
{ autoreconfHook, enableGestures ? false, lib, stdenv, fetchFromGitHub
, pkg-config, cairo, fontconfig, freetype, libXft, libXcursor, libXinerama
, libXpm, libXt, librsvg, libpng, fribidi, perl, libstroke, readline, libxslt }:
stdenv.mkDerivation rec {
pname = "fvwm";
version = "2.6.9";
src = fetchFromGitHub {
owner = "fvwmorg";
repo = pname;
rev = version;
sha256 = "14jwckhikc9n4h93m00pzjs7xm2j0dcsyzv3q5vbcnknp6p4w5dh";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [
cairo
fontconfig
freetype
libXft
libXcursor
libXinerama
libXpm
libXt
librsvg
libpng
fribidi
perl
readline
libxslt
] ++ lib.optional enableGestures libstroke;
configureFlags = [ "--enable-mandoc" "--disable-htmldoc" ];
meta = {
homepage = "http://fvwm.org";
description = "A multiple large virtual desktop window manager";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ edanaher ];
};
}

View file

@ -0,0 +1,97 @@
{ lib, stdenv, fetchurl, cmake, pkg-config, python3, libX11, libXext, libXinerama, libXrandr, libXft, libXrender, libXdmcp, libXfixes, freetype, asciidoc
, xdotool, xorgserver, xsetroot, xterm, runtimeShell
, nixosTests }:
stdenv.mkDerivation rec {
pname = "herbstluftwm";
version = "0.9.4";
src = fetchurl {
url = "https://herbstluftwm.org/tarballs/herbstluftwm-${version}.tar.gz";
sha256 = "1k03rdr6irsgnjl4w0vac0kk9nsz46qhy74iflmaycxgfv8fxy7f";
};
outputs = [
"out"
"doc"
"man"
];
cmakeFlags = [
"-DCMAKE_INSTALL_SYSCONF_PREFIX=${placeholder "out"}/etc"
];
nativeBuildInputs = [
cmake
pkg-config
];
depsBuildBuild = [
asciidoc
];
buildInputs = [
libX11
libXext
libXinerama
libXrandr
libXft
libXrender
libXdmcp
libXfixes
freetype
];
patches = [
./test-path-environment.patch
];
postPatch = ''
patchShebangs doc/gendoc.py
# fix /etc/xdg/herbstluftwm paths in documentation and scripts
grep -rlZ /etc/xdg/herbstluftwm share/ doc/ scripts/ | while IFS="" read -r -d "" path; do
substituteInPlace "$path" --replace /etc/xdg/herbstluftwm $out/etc/xdg/herbstluftwm
done
# fix shebang in generated scripts
substituteInPlace tests/conftest.py --replace "/usr/bin/env bash" ${runtimeShell}
substituteInPlace tests/test_herbstluftwm.py --replace "/usr/bin/env bash" ${runtimeShell}
'';
doCheck = true;
checkInputs = [
(python3.withPackages (ps: with ps; [ ewmh pytest xlib ]))
xdotool
xorgserver
xsetroot
xterm
python3.pkgs.pytestCheckHook
];
# make the package's module avalaible
preCheck = ''
export PYTHONPATH="$PYTHONPATH:../python"
'';
pytestFlagsArray = [ "../tests" ];
disabledTests = [
"test_title_different_letters_are_drawn" # font problems
"test_completable_commands" # font problems
"test_autostart" # $PATH problems
"test_wmexec_to_other" # timeouts in sandbox
];
passthru = {
tests.herbstluftwm = nixosTests.herbstluftwm;
};
meta = with lib; {
description = "A manual tiling window manager for X";
homepage = "https://herbstluftwm.org/";
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = with maintainers; [ thibautmarty ];
};
}

View file

@ -0,0 +1,10 @@
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -43,6 +43,7 @@
self.next_client_id = 0
self.env = {
'DISPLAY': display,
+ 'PATH': os.environ['PATH']
}
self.env = extend_env_with_whitelist(self.env)
self.hlwm_process = hlwm_process

View file

@ -0,0 +1,64 @@
{ lib, stdenv, fetchzip
, pkg-config, bmake
, cairo, glib, libevdev, libinput, libxkbcommon, linux-pam, pango, pixman
, libucl, wayland, wayland-protocols, wlroots, mesa
, features ? {
gammacontrol = true;
layershell = true;
screencopy = true;
xwayland = true;
}
}:
stdenv.mkDerivation rec {
pname = "hikari";
version = "2.3.2";
src = fetchzip {
url = "https://hikari.acmelabs.space/releases/${pname}-${version}.tar.gz";
sha256 = "sha256-At4b6mkArKe6knNWouLdZ9v8XhfHaUW+aB+CHyEBg8o=";
};
nativeBuildInputs = [ pkg-config bmake ];
buildInputs = [
cairo
glib
libevdev
libinput
libxkbcommon
linux-pam
pango
pixman
libucl
mesa # for libEGL
wayland
wayland-protocols
wlroots
];
enableParallelBuilding = true;
makeFlags = with lib; [ "PREFIX=$(out)" ]
++ optional stdenv.isLinux "WITH_POSIX_C_SOURCE=YES"
++ mapAttrsToList (feat: enabled:
optionalString enabled "WITH_${toUpper feat}=YES"
) features;
postPatch = ''
# Can't suid in nix store
# Run hikari as root (it will drop privileges as early as possible), or create
# a systemd unit to give it the necessary permissions/capabilities.
substituteInPlace Makefile --replace '4555' '555'
sed -i 's@<drm_fourcc.h>@<libdrm/drm_fourcc.h>@' src/*.c
'';
meta = with lib; {
description = "Stacking Wayland compositor which is actively developed on FreeBSD but also supports Linux";
homepage = "https://hikari.acmelabs.space";
license = licenses.bsd2;
platforms = platforms.linux ++ platforms.freebsd;
maintainers = with maintainers; [ jpotier ];
};
}

View file

@ -0,0 +1,25 @@
{ lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "i3altlayout";
version = "0.3";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "1h0phf3s6ljffxw0bs73k041wildaz01h37iv5mxhami41wrh4qf";
};
pythonPath = with python3Packages; [ enum-compat i3ipc docopt ];
doCheck = false;
pythonImportsCheck = [ "i3altlayout" ];
meta = with lib; {
maintainers = with maintainers; [ magnetophon ];
description = "Helps you handle more efficiently your screen real estate in i3wm by auto-splitting windows on their longest side";
homepage = "https://github.com/deadc0de6/i3altlayout";
license = licenses.gpl3Only;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,26 @@
{ lib, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "i3-auto-layout";
version = "0.2";
src = fetchFromGitHub {
owner = "chmln";
repo = pname;
rev = "v${version}";
sha256 = "0ps08lga6qkgc8cgf5cx2lgwlqcnd2yazphh9xd2fznnzrllfxxz";
};
cargoSha256 = "1i01kqvsykanzs7pi94gab9k2dqg1ki40mmjrwa22n0ypkbnvsmx";
# Currently no tests are implemented, so we avoid building the package twice
doCheck = false;
meta = with lib; {
description = "Automatic, optimal tiling for i3wm";
homepage = "https://github.com/chmln/i3-auto-layout";
license = licenses.mit;
maintainers = with maintainers; [ mephistophiles ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,23 @@
{ lib, buildPythonPackage, fetchPypi, i3ipc }:
buildPythonPackage rec {
pname = "i3-balance-workspace";
version = "1.8.6";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0=";
};
propagatedBuildInputs = [ i3ipc ];
doCheck = false; # project has no test
pythonImportsCheck = [ "i3_balance_workspace" ];
meta = {
description = "Balance windows and workspaces in i3wm";
homepage = "https://pypi.org/project/i3-balance-workspace/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pacien ];
};
}

View file

@ -0,0 +1,55 @@
{ fetchFromGitHub, lib, stdenv, perl, makeWrapper
, iproute2, acpi, sysstat, alsa-utils
, scripts ? [ "bandwidth" "battery" "cpu_usage" "disk" "iface"
"load_average" "memory" "volume" "wifi" ]
}:
with lib;
let
perlscripts = [ "battery" "cpu_usage" "openvpn" "temperature" ];
contains_any = l1: l2: 0 < length( intersectLists l1 l2 );
in
stdenv.mkDerivation rec {
pname = "i3blocks-gaps";
version = "1.4";
src = fetchFromGitHub {
owner = "Airblader";
repo = "i3blocks-gaps";
rev = "4cfdf93c75f729a2c96d471004d31734e923812f";
sha256 = "0v9307ij8xzwdaxay3r75sd2cp453s3qb6q7dy9fks2p6wwqpazi";
};
makeFlags = [ "all" ];
installFlags = [ "PREFIX=\${out}" "VERSION=${version}" ];
buildInputs = optional (contains_any scripts perlscripts) perl;
nativeBuildInputs = [ makeWrapper ];
postFixup = optionalString (elem "bandwidth" scripts) ''
wrapProgram $out/libexec/i3blocks/bandwidth \
--prefix PATH : ${makeBinPath [ iproute2 ]}
'' + optionalString (elem "battery" scripts) ''
wrapProgram $out/libexec/i3blocks/battery \
--prefix PATH : ${makeBinPath [ acpi ]}
'' + optionalString (elem "cpu_usage" scripts) ''
wrapProgram $out/libexec/i3blocks/cpu_usage \
--prefix PATH : ${makeBinPath [ sysstat ]}
'' + optionalString (elem "iface" scripts) ''
wrapProgram $out/libexec/i3blocks/iface \
--prefix PATH : ${makeBinPath [ iproute2 ]}
'' + optionalString (elem "volume" scripts) ''
wrapProgram $out/libexec/i3blocks/volume \
--prefix PATH : ${makeBinPath [ alsa-utils ]}
'';
meta = with lib; {
description = "A flexible scheduler for your i3bar blocks -- this is a fork to use with i3-gaps";
homepage = "https://github.com/Airblader/i3blocks-gaps";
license = licenses.gpl3;
maintainers = with maintainers; [ carlsverre ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,33 @@
{ fetchFromGitHub, fetchpatch, lib, stdenv, autoreconfHook, pkg-config }:
with lib;
stdenv.mkDerivation {
pname = "i3blocks";
version = "1.5";
src = fetchFromGitHub {
owner = "vivien";
repo = "i3blocks";
rev = "3417602a2d8322bc866861297f535e1ef80b8cb0";
sha256 = "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv";
};
patches = [
# XDG_CONFIG_DIRS can contain multiple elements separated by colons, which should be searched in order.
(fetchpatch {
# https://github.com/vivien/i3blocks/pull/405
url = "https://github.com/edef1c/i3blocks/commit/d57b32f9a364aeaf36869efdd54240433c737e57.patch";
sha256 = "102xb0ax0hmg82dz2gzfag470dkckzf2yizai0izacvrz0d3ngj1";
})
];
nativeBuildInputs = [ autoreconfHook pkg-config ];
meta = {
description = "A flexible scheduler for your i3bar blocks";
homepage = "https://github.com/vivien/i3blocks";
license = licenses.gpl3;
platforms = with platforms; freebsd ++ linux;
};
}

View file

@ -0,0 +1,82 @@
{ fetchurl, lib, stdenv, pkg-config, makeWrapper, meson, ninja, installShellFiles, libxcb, xcbutilkeysyms
, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre, libev
, yajl, xcb-util-cursor, perl, pango, perlPackages, libxkbcommon
, xorgserver, xvfb-run
, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs
}:
stdenv.mkDerivation rec {
pname = "i3";
version = "4.20.1";
src = fetchurl {
url = "https://i3wm.org/downloads/${pname}-${version}.tar.xz";
sha256 = "1rpwdgykcvmrmdz244f0wm7446ih1dcw8rlc1hm1c7cc42pyrq93";
};
nativeBuildInputs = [
pkg-config makeWrapper meson ninja installShellFiles perl
asciidoc xmlto docbook_xml_dtd_45 docbook_xsl findXMLCatalogs
];
mesonFlags = [
"-Ddocs=true"
"-Dmans=true"
];
buildInputs = [
libxcb xcbutilkeysyms xcbutil xcbutilwm xcbutilxrm libxkbcommon
libstartup_notification libX11 pcre libev yajl xcb-util-cursor perl pango
perlPackages.AnyEventI3 perlPackages.X11XCB perlPackages.IPCRun
perlPackages.ExtUtilsPkgConfig perlPackages.InlineC
xorgserver xvfb-run
];
configureFlags = [ "--disable-builddir" ];
postPatch = ''
patchShebangs .
'';
# Tests have been failing (at least for some people in some cases)
# and have been disabled until someone wants to fix them. Some
# initial digging uncovers that the tests call out to `git`, which
# they shouldn't, and then even once that's fixed have some
# perl-related errors later on. For more, see
# https://github.com/NixOS/nixpkgs/issues/7957
doCheck = false; # stdenv.hostPlatform.system == "x86_64-linux";
checkPhase = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux")
''
(cd testcases && xvfb-run ./complete-run.pl -p 1 --keep-xserver-output)
! grep -q '^not ok' testcases/latest/complete-run.log
'';
postInstall = ''
wrapProgram "$out/bin/i3-save-tree" --prefix PERL5LIB ":" "$PERL5LIB"
for program in $out/bin/i3-sensible-*; do
sed -i 's/which/command -v/' $program
done
installManPage man/*.1
'';
separateDebugInfo = true;
meta = with lib; {
description = "A tiling window manager";
homepage = "https://i3wm.org";
maintainers = with maintainers; [ modulistic fpletz globin ];
license = licenses.bsd3;
platforms = platforms.all;
longDescription = ''
A tiling window manager primarily targeted at advanced users and
developers. Based on a tree as data structure, supports tiling,
stacking, and tabbing layouts, handled dynamically, as well as
floating windows. Configured via plain text file. Multi-monitor.
UTF-8 clean.
'';
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, xorgproto, libxcb, xcbutilkeysyms
, xorg , i3ipc-glib , glib
}:
stdenv.mkDerivation {
pname = "i3easyfocus";
version = "20190411";
src = fetchFromGitHub {
owner = "cornerman";
repo = "i3-easyfocus";
rev = "fffb468f7274f9d7c9b92867c8cb9314ec6cf81a";
sha256 = "1db23vzzmp0hnfss1fkd80za6d2pajx7hdwikw50pk95jq0w8wfm";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libxcb xcbutilkeysyms xorgproto xorg.libX11.dev i3ipc-glib glib.dev ];
# Makefile has no rule for 'install'
installPhase = ''
mkdir -p $out/bin
cp i3-easyfocus $out/bin
'';
meta = with lib; {
description = "Focus and select windows in i3";
homepage = "https://github.com/cornerman/i3-easyfocus";
maintainers = with maintainers; [teto];
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,29 @@
{ fetchFromGitHub, lib, i3 }:
i3.overrideAttrs (oldAttrs : rec {
pname = "i3-gaps";
version = "4.20.1";
src = fetchFromGitHub {
owner = "Airblader";
repo = "i3";
rev = version;
sha256 = "sha256-aS1dLs8KxoJaTf3RlQX+zRrtNmHEFZgkXDjt+8SuGDw=";
};
meta = with lib; {
description = "A fork of the i3 tiling window manager with some additional features";
homepage = "https://github.com/Airblader/i3";
maintainers = with maintainers; [ fmthoma ];
license = licenses.bsd3;
platforms = platforms.linux ++ platforms.netbsd ++ platforms.openbsd;
longDescription = ''
Fork of i3wm, a tiling window manager primarily targeted at advanced users
and developers. Based on a tree as data structure, supports tiling,
stacking, and tabbing layouts, handled dynamically, as well as floating
windows. This fork adds a few features such as gaps between windows.
Configured via plain text file. Multi-monitor. UTF-8 clean.
'';
};
})

View file

@ -0,0 +1,26 @@
{ lib, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "i3-ratiosplit";
version = "0.1.0";
src = fetchFromGitHub {
owner = "333fred";
repo = pname;
rev = "v${version}";
sha256 = "0yfmr5zk2c2il9d31yjjbr48sqgcq6hp4a99hl5mjm2ajyhy5bz3";
};
cargoSha256 = "134sgc9d0j57swknl9sgil6212rws2hhp92s3cg1yzz5ygx21c76";
# Currently no tests are implemented, so we avoid building the package twice
doCheck = false;
meta = with lib; {
description = "Resize newly created windows";
homepage = "https://github.com/333fred/i3-ratiosplit";
license = licenses.mit;
maintainers = with maintainers; [ svrana ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,22 @@
{ lib, buildPythonApplication, click, i3ipc, psutil, natsort, fetchPypi, xprop, xdotool, importlib-metadata }:
buildPythonApplication rec {
pname = "i3-resurrect";
version = "1.4.3";
src = fetchPypi {
inherit pname version;
sha256 = "0h181frdwpqfj9agw43qgicdvzv1i7xwky0vs0ksd8h18qxqp4hr";
};
propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ];
doCheck = false; # no tests
meta = with lib; {
homepage = "https://github.com/JonnyHaystack/i3-resurrect";
description = "A simple but flexible solution to saving and restoring i3 workspaces";
license = licenses.gpl3;
platforms= platforms.linux;
maintainers = with maintainers; [ magnetophon ];
};
}

View file

@ -0,0 +1,34 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, xorgproto, libxcb
, autoreconfHook, json-glib, gtk-doc, which
, gobject-introspection
}:
stdenv.mkDerivation rec {
pname = "i3ipc-glib";
version = "1.0.1";
src = fetchFromGitHub {
owner = "acrisci";
repo = "i3ipc-glib";
rev = "v${version}";
sha256 = "01fzvrbnzcwx0vxw29igfpza9zwzp2s7msmzb92v01z0rz0y5m0p";
};
nativeBuildInputs = [ autoreconfHook which pkg-config ];
buildInputs = [ libxcb json-glib gtk-doc xorgproto gobject-introspection ];
preAutoreconf = ''
gtkdocize
'';
meta = with lib; {
description = "A C interface library to i3wm";
homepage = "https://github.com/acrisci/i3ipc-glib";
maintainers = with maintainers; [teto];
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,39 @@
{ lib, stdenv, fetchFromGitHub, vim, makeWrapper, jq, rofi, xrandr, xdotool, i3, gawk, libnotify }:
let
path = lib.makeBinPath [ vim jq rofi xrandr xdotool i3 gawk libnotify ];
in
stdenv.mkDerivation rec {
pname = "i3-layout-manager";
version = "unstable-2020-05-04";
src = fetchFromGitHub {
owner = "klaxalk";
repo = pname;
rev = "df54826bba351d8bcd7ebeaf26c07c713af7912c";
sha256 = "0ccvr43yp26fnh5d82cw7jcfq2sbxzzmdx2cp15bmxr8ixr8knc3";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
runHook preInstall
install -D layout_manager.sh $out/bin/layout_manager
wrapProgram $out/bin/layout_manager \
--prefix PATH : "${path}"
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/klaxalk/i3-layout-manager";
description = "Saving, loading and managing layouts for i3wm";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ ];
};
}

View file

@ -0,0 +1,32 @@
{ i3lock-color, lib, stdenv, fetchFromGitHub, fetchpatch }:
i3lock-color.overrideAttrs (oldAttrs : rec {
pname = "i3lock-blur";
version = "2.10";
src = fetchFromGitHub {
owner = "karulont";
repo = "i3lock-blur";
rev = version;
sha256 = "sha256-rBQHYVD9rurzTEXrgEnOziOP22D2EePC1+EV9Wi2pa0=";
};
patches = [
# Pull patch pending upstream inclusion for -fno-common toolchain
# support: https://github.com/karulont/i3lock-blur/pull/22
(fetchpatch {
name = "fno-common.patch";
url = "https://github.com/karulont/i3lock-blur/commit/ec8fe0e7f7d78bf445602ed517efd5c324bb32f7.patch";
sha256 = "sha256-0hXUr+ZEB1tpI3xw80/hGzKyeGuna4CQmEvK6t0VBqU=";
})
];
meta = with lib; {
description = "An improved screenlocker based upon XCB and PAM with background blurring filter";
homepage = "https://github.com/karulont/i3lock-blur/";
license = licenses.bsd3;
maintainers = with maintainers; [ dan4ik605743 ];
platforms = platforms.all;
broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/i3lock-blur.x86_64-darwin
};
})

View file

@ -0,0 +1,61 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, libxcb,
xcbutilkeysyms , xcbutilimage, pam, libX11, libev, cairo, libxkbcommon,
libxkbfile, libjpeg_turbo, xcbutilxrm
}:
stdenv.mkDerivation rec {
version = "2.13.c.4";
pname = "i3lock-color";
src = fetchFromGitHub {
owner = "PandorasFox";
repo = "i3lock-color";
rev = version;
sha256 = "sha256-bbjkvgSKD57sdOtPYGLAKpQoIsJnF6s6ySq4dTWC3tI=";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [ libxcb xcbutilkeysyms xcbutilimage pam libX11
libev cairo libxkbcommon libxkbfile libjpeg_turbo xcbutilxrm ];
makeFlags = [ "all" ];
preInstall = ''
mkdir -p $out/share/man/man1
'';
installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" "MANDIR=\${out}/share/man" ];
postInstall = ''
mv $out/bin/i3lock $out/bin/i3lock-color
mv $out/share/man/man1/i3lock.1 $out/share/man/man1/i3lock-color.1
sed -i 's/\(^\|\s\|"\)i3lock\(\s\|$\)/\1i3lock-color\2/g' $out/share/man/man1/i3lock-color.1
'';
meta = with lib; {
description = "A simple screen locker like slock, enhanced version with extra configuration options";
longDescription = ''
Simple screen locker. After locking, a colored background (default: white) or
a configurable image is shown, and a ring-shaped unlock-indicator gives feedback
for every keystroke. After entering your password, the screen is unlocked again.
i3lock-color is forked from i3lock (https://i3wm.org/i3lock/) with the following
enhancements / additional configuration options:
- indicator:
- shape: ring or bar
- size: configurable
- all colors: configurable
- all texts: configurable
- visibility: can be always visible, can be restricted to some screens
- background: optionally show a blurred screen instead of a single color
- more information: show text at configurable positions:
- clock: time/date with configurable format
- keyboard-layout
'';
homepage = "https://github.com/PandorasFox/i3lock-color";
maintainers = with maintainers; [ malyn ];
license = licenses.bsd3;
platforms = platforms.all;
broken = stdenv.isDarwin;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchFromGitHub, xorg, i3lock }:
stdenv.mkDerivation rec {
pname = "i3lock-fancy-rapid";
version = "2019-10-09";
src = fetchFromGitHub {
owner = "yvbbrjdr";
repo = "i3lock-fancy-rapid";
rev = "c67f09bc8a48798c7c820d7d4749240b10865ce0";
sha256 = "0jhvlj6v6wx70239pgkjxd42z1s2bzfg886ra6n1rzsdclf4rkc6";
};
buildInputs = [ xorg.libX11 ];
propagatedBuildInputs = [ i3lock ];
postPatch = ''
substituteInPlace i3lock-fancy-rapid.c \
--replace '"i3lock"' '"${i3lock}/bin/i3lock"'
'';
installPhase = ''
install -D i3lock-fancy-rapid $out/bin/i3lock-fancy-rapid
'';
meta = with lib; {
description = "A faster implementation of i3lock-fancy";
homepage = "https://github.com/yvbbrjdr/i3lock-fancy-rapid";
maintainers = with maintainers; [ nickhu ];
license = licenses.bsd3;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,54 @@
{ lib
, stdenv
, fetchFromGitHub
, coreutils
, scrot
, imagemagick
, gawk
, i3lock-color
, getopt
, fontconfig
}:
stdenv.mkDerivation rec {
pname = "i3lock-fancy";
version = "unstable-2018-11-25";
src = fetchFromGitHub {
owner = "meskarune";
repo = "i3lock-fancy";
rev = "7accfb2aa2f918d1a3ab975b860df1693d20a81a";
sha256 = "00lqsvz1knb8iqy8lnkn3sf4c2c4nzb0smky63qf48m8za5aw9b1";
};
postPatch = ''
sed -i i3lock-fancy \
-e "s|mktemp|${coreutils}/bin/mktemp|" \
-e "s|'rm -f |'${coreutils}/bin/rm -f |" \
-e "s|scrot -z |${scrot}/bin/scrot -z |" \
-e "s|convert |${imagemagick.out}/bin/convert |" \
-e "s|awk -F|${gawk}/bin/awk -F|" \
-e "s| awk | ${gawk}/bin/awk |" \
-e "s|i3lock -i |${i3lock-color}/bin/i3lock-color -i |" \
-e 's|icon="/usr/share/i3lock-fancy/icons/lockdark.png"|icon="'$out'/share/i3lock-fancy/icons/lockdark.png"|' \
-e 's|icon="/usr/share/i3lock-fancy/icons/lock.png"|icon="'$out'/share/i3lock-fancy/icons/lock.png"|' \
-e "s|getopt |${getopt}/bin/getopt |" \
-e "s|fc-match |${fontconfig.bin}/bin/fc-match |" \
-e "s|shot=(import -window root)|shot=(${scrot}/bin/scrot -z -o)|"
rm Makefile
'';
installPhase = ''
mkdir -p $out/bin $out/share/i3lock-fancy/icons
cp i3lock-fancy $out/bin/i3lock-fancy
cp icons/lock*.png $out/share/i3lock-fancy/icons
'';
meta = with lib; {
description = "i3lock is a bash script that takes a screenshot of the desktop, blurs the background and adds a lock icon and text";
homepage = "https://github.com/meskarune/i3lock-fancy";
maintainers = with maintainers; [ ];
license = licenses.mit;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,37 @@
{ fetchurl, lib, stdenv, which, pkg-config, libxcb, xcbutilkeysyms, xcbutilimage,
xcbutilxrm, pam, libX11, libev, cairo, libxkbcommon, libxkbfile }:
stdenv.mkDerivation rec {
pname = "i3lock";
version = "2.13";
src = fetchurl {
url = "https://i3wm.org/i3lock/${pname}-${version}.tar.bz2";
sha256 = "02szjsaz7rqrdkd0r2nwgwa85c4hwfrcskxw7ryk695kmjcfhzv3";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ which libxcb xcbutilkeysyms xcbutilimage xcbutilxrm
pam libX11 libev cairo libxkbcommon libxkbfile ];
makeFlags = [ "all" ];
installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" ];
postInstall = ''
mkdir -p $out/share/man/man1
cp *.1 $out/share/man/man1
'';
meta = with lib; {
description = "A simple screen locker like slock";
longDescription = ''
Simple screen locker. After locking, a colored background (default: white) or
a configurable image is shown, and a ring-shaped unlock-indicator gives feedback
for every keystroke. After entering your password, the screen is unlocked again.
'';
homepage = "https://i3wm.org/i3lock/";
maintainers = with maintainers; [ malyn domenkozar ];
license = licenses.bsd3;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,59 @@
{ lib
, fetchFromGitHub
, libpulseaudio
, libnotify
, gobject-introspection
, python3Packages
, wrapGAppsHook
, extraLibs ? [] }:
python3Packages.buildPythonApplication rec {
# i3pystatus moved to rolling release:
# https://github.com/enkore/i3pystatus/issues/584
version = "unstable-2020-06-12";
pname = "i3pystatus";
src = fetchFromGitHub {
owner = "enkore";
repo = "i3pystatus";
rev = "dad5eb0c5c8a2ecd20c37ade4732586c6e53f44b";
sha256 = "18ygvkl92yr69kxsym57k1mc90asdxpz4b943i61qr0s4fc5n4mq";
};
buildInputs = [ libpulseaudio libnotify gobject-introspection ];
propagatedBuildInputs = with python3Packages; [
keyring colour netifaces psutil basiciw pygobject3
] ++ extraLibs;
makeWrapperArgs = [
# LC_TIME != C results in locale.Error: unsupported locale setting
"--set" "LC_TIME" "C"
"--suffix" "LD_LIBRARY_PATH" ":" "${lib.makeLibraryPath [ libpulseaudio ]}"
];
postPatch = ''
makeWrapperArgs+=(--set GI_TYPELIB_PATH "$GI_TYPELIB_PATH")
'';
postInstall = ''
makeWrapper ${python3Packages.python.interpreter} $out/bin/${pname}-python-interpreter \
--prefix PYTHONPATH : "$PYTHONPATH" \
''${makeWrapperArgs[@]}
'';
# no tests in tarball
doCheck = false;
meta = with lib; {
homepage = "https://github.com/enkore/i3pystatus";
description = "A complete replacement for i3status";
longDescription = ''
i3pystatus is a growing collection of python scripts for status output compatible
to i3status / i3bar of the i3 window manager.
'';
license = licenses.mit;
platforms = platforms.linux;
maintainers = [ maintainers.igsha ];
};
}

View file

@ -0,0 +1,21 @@
{ fetchFromGitHub, lib, i3 }:
i3.overrideAttrs (oldAttrs: rec {
pname = "i3-rounded";
version = "unstable-2021-10-03";
src = fetchFromGitHub {
owner = "LinoBigatti";
repo = "i3-rounded";
rev = "524c9f7b50f8c540b2ae3480b242c30d8775f98e";
sha256 = "0y7m1s1y8f9vgkp7byi33js8n4rigiykd71s936i5d4rwlzrxiwm";
};
meta = with lib; {
description = "A fork of i3-gaps that adds rounding to window corners";
homepage = "https://github.com/LinoBigatti/i3-rounded";
maintainers = with maintainers; [ marsupialgutz ];
license = licenses.bsd3;
platforms = platforms.unix;
};
})

View file

@ -0,0 +1,63 @@
{ lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, makeWrapper
, dbus
, libpulseaudio
, notmuch
, openssl
, ethtool
, lm_sensors
, iw
, iproute2
}:
rustPlatform.buildRustPackage rec {
pname = "i3status-rust";
version = "0.21.10";
src = fetchFromGitHub {
owner = "greshake";
repo = pname;
rev = "v${version}";
sha256 = "sha256-HtPgl52ysE/CVX706YeKBFc6CgGpHzvHwZoS+DzHADY=";
};
cargoSha256 = "sha256-ini0AIYwvTskNFMSC+Gy23ohL75PTET95e1mjpjCsWE=";
nativeBuildInputs = [ pkg-config makeWrapper ];
buildInputs = [ dbus libpulseaudio notmuch openssl lm_sensors ];
buildFeatures = [
"notmuch"
"maildir"
"pulseaudio"
];
prePatch = ''
substituteInPlace src/util.rs \
--replace "/usr/share/i3status-rust" "$out/share"
'';
postInstall = ''
mkdir -p $out/share
cp -R examples files/* $out/share
'';
postFixup = ''
wrapProgram $out/bin/i3status-rs --prefix PATH : ${lib.makeBinPath [ iproute2 ethtool iw ]}
'';
# Currently no tests are implemented, so we avoid building the package twice
doCheck = false;
meta = with lib; {
description = "Very resource-friendly and feature-rich replacement for i3status";
homepage = "https://github.com/greshake/i3status-rust";
license = licenses.gpl3Only;
maintainers = with maintainers; [ backuitist globin ma27 ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,23 @@
{ fetchurl, lib, stdenv, libconfuse, yajl, alsa-lib, libpulseaudio, libnl, meson, ninja, perl, pkg-config, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl }:
stdenv.mkDerivation rec {
pname = "i3status";
version = "2.14";
src = fetchurl {
url = "https://i3wm.org/i3status/i3status-${version}.tar.xz";
sha256 = "0929chhvyq9hg4scpcz8r9zn3s9jvbg6a86k3wqa77qg85rh4kaw";
};
nativeBuildInputs = [ meson ninja perl pkg-config asciidoc xmlto docbook_xml_dtd_45 docbook_xsl ];
buildInputs = [ libconfuse yajl alsa-lib libpulseaudio libnl ];
meta = {
description = "Generates a status line for i3bar, dzen2, xmobar or lemonbar";
homepage = "https://i3wm.org";
maintainers = [ ];
license = lib.licenses.bsd3;
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,44 @@
{ lib
, buildPythonApplication
, fetchFromGitHub
, poetry-core
, i3ipc
, xlib
, six
}:
buildPythonApplication rec {
pname = "i3-swallow";
version = "unstable-2022-02-19";
format = "pyproject";
src = fetchFromGitHub {
owner = "jamesofarrell";
repo = "i3-swallow";
rev = "6fbc04645c483fe733de56b56743e453693d4c78";
sha256 = "1l3x8mixwq4n0lnyp0wz5vijgnypamq6lqjazcd2ywl2jv8d6fif";
};
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
i3ipc
xlib
six
];
# No tests available
doCheck = false;
meta = with lib; {
homepage = "https://github.com/jamesofarrell/i3-swallow";
description = "Swallow a terminal window in i3wm";
license = licenses.mit;
platforms = platforms.linux;
mainProgram = "swallow";
maintainers = [ maintainers.ivar ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, fetchFromGitHub, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "i3-wk-switch";
version = "2020-03-18";
src = fetchFromGitHub {
owner = "tmfink";
repo = pname;
rev = "a618cb8f52120aa8d533bb7c0c8de3ff13b3dc06";
sha256 = "0ci0w5igjk5xa8x4rx17cpgmdkamwjmavxhp0vp6213cl93ybjhz";
};
propagatedBuildInputs = with python3Packages; [ i3ipc ];
dontBuild = true;
doCheck = false;
installPhase = ''
mkdir -p "$out/bin"
cp i3-wk-switch.py "$out/bin/i3-wk-switch"
'';
meta = with lib; {
description = "XMonad-like workspace switching for i3 and sway";
maintainers = with maintainers; [ synthetica ];
platforms = platforms.linux;
license = licenses.mit;
homepage = "https://travisf.net/i3-wk-switcher";
};
}

View file

@ -0,0 +1,32 @@
{ lib, fetchFromGitHub, rustPlatform
, xorg, python3, pkg-config, cairo, libxkbcommon }:
rustPlatform.buildRustPackage rec {
pname = "wmfocus";
version = "1.3.0";
src = fetchFromGitHub {
owner = "svenstaro";
repo = pname;
rev = "v${version}";
sha256 = "sha256-HrS+C/6KDG2Rn/3u/mMmp4vzQ5YAHUFL4HFecteuzsc=";
};
cargoSha256 = "sha256-EzgYnfUgwK2ldzrlqe9N9jeGgK+RzQPjbOjJCGEkcwE=";
nativeBuildInputs = [ python3 pkg-config ];
buildInputs = [ cairo libxkbcommon xorg.xcbutilkeysyms ];
# For now, this is the only available featureset. This is also why the file is
# in the i3 folder, even though it might be useful for more than just i3
# users.
buildFeatures = [ "i3" ];
meta = with lib; {
description = "Visually focus windows by label";
homepage = "https://github.com/svenstaro/wmfocus";
license = licenses.mit;
maintainers = with maintainers; [ synthetica ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,27 @@
{ lib
, rustPlatform
, fetchFromGitHub
}:
rustPlatform.buildRustPackage rec {
pname = "workstyle";
version = "unstable-2021-05-09";
src = fetchFromGitHub {
owner = "pierrechevalier83";
repo = pname;
rev = "f2023750d802259ab3ee7d7d1762631ec157a0b1";
sha256 = "04xds691sw4pi2nq8xvdhn0312wwia60gkd8b1bjqy11zrqbivbx";
};
cargoSha256 = "0xwv8spr96z4aimjlr15bhwl6i3zqp7jr45d9zr3sbi9d8dbdja2";
doCheck = false; # No tests
meta = with lib; {
description = "Sway workspaces with style";
homepage = "https://github.com/pierrechevalier83/workstyle";
license = licenses.mit;
maintainers = with maintainers; [ FlorianFranzen ];
};
}

View file

@ -0,0 +1,33 @@
{ lib, fetchFromGitHub, rustPlatform, libxcb, python3 }:
rustPlatform.buildRustPackage rec {
pname = "i3wsr";
version = "2.1.1";
src = fetchFromGitHub {
owner = "roosta";
repo = pname;
rev = "v${version}";
sha256 = "sha256-Mq4TpQDiIYePUS3EwBfOe2+QmvF6+WEDK12WahbuhSU=";
};
cargoSha256 = "sha256-hybvzHwHM0rQwgZfQpww/w9wQDW5h9P2KSjpAScVTBo=";
nativeBuildInputs = [ python3 ];
buildInputs = [ libxcb ];
# has not tests
doCheck = false;
meta = with lib; {
description = "Automatically change i3 workspace names based on their contents";
longDescription = ''
Automatically sets the workspace names to match the windows on the workspace.
The chosen name for a workspace is a user-defined composite of the WM_CLASS X11
window property for each window in a workspace.
'';
homepage = "https://github.com/roosta/i3wsr";
license = licenses.mit;
maintainers = [ maintainers.sebbadk ];
};
}

View file

@ -0,0 +1,122 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, asciidoc
, cmake
, expat
, fontconfig
, freetype
, fribidi
, gdk-pixbuf
, gdk-pixbuf-xlib
, gettext
, giflib
, glib
, imlib2
, libICE
, libSM
, libX11
, libXcomposite
, libXdamage
, libXdmcp
, libXext
, libXfixes
, libXft
, libXinerama
, libXpm
, libXrandr
, libjpeg
, libpng
, libpthreadstubs
, libsndfile
, libtiff
, libxcb
, mkfontdir
, pcre
, perl
, pkg-config
}:
stdenv.mkDerivation rec {
pname = "icewm";
version = "2.9.6";
src = fetchFromGitHub {
owner = "ice-wm";
repo = pname;
rev = version;
hash = "sha256-qC8gEVJ/cmsEbF8jMzv7zyvVcjlbXhgHU3ixe7RLcnA=";
};
nativeBuildInputs = [
asciidoc
cmake
perl
pkg-config
];
buildInputs = [
expat
fontconfig
freetype
fribidi
gdk-pixbuf
gdk-pixbuf-xlib
gettext
giflib
glib
imlib2
libICE
libSM
libX11
libXcomposite
libXdamage
libXdmcp
libXext
libXfixes
libXft
libXinerama
libXpm
libXrandr
libjpeg
libpng
libpthreadstubs
libsndfile
libtiff
libxcb
mkfontdir
pcre
];
cmakeFlags = [
"-DPREFIX=$out"
"-DCFGDIR=/etc/icewm"
];
# install legacy themes
postInstall = ''
cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/
'';
meta = with lib; {
homepage = "https://ice-wm.org/";
description = "A simple, lightweight X window manager";
longDescription = ''
IceWM is a window manager for the X Window System. The goal of IceWM is
speed, simplicity, and not getting in the users way. It comes with a
taskbar with pager, global and per-window keybindings and a dynamic menu
system. Application windows can be managed by keyboard and mouse. Windows
can be iconified to the taskbar, to the tray, to the desktop or be made
hidden. They are controllable by a quick switch window (Alt+Tab) and in a
window list. A handful of configurable focus models are menu-selectable.
Setups with multiple monitors are supported by RandR and Xinerama. IceWM
is very configurable, themeable and well documented. It includes an
optional external background wallpaper manager with transparency support,
a simple session manager and a system tray.
'';
license = licenses.lgpl2Only;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,30 @@
{ lib, stdenv, fetchurl, xlibsWrapper, lua, gettext, groff }:
stdenv.mkDerivation rec {
pname = "ion";
version = "3-20090110";
src = fetchurl {
url = "https://tuomov.iki.fi/software/ion/dl/ion-${version}.tar.gz";
sha256 = "1nkks5a95986nyfkxvg2rik6zmwx0lh7szd5fji7yizccwzc9xns";
};
buildInputs = [ xlibsWrapper lua gettext groff ];
buildFlags = [ "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" "PREFIX=\${out}" ];
# Build system is missing depends for autogenerated export headers:
# luac -o mod_tiling.lc mod_tiling.lua
# main.c:21:10: fatal error: exports.h: No such file or directory
enableParallelBuilding = false;
installFlags = [ "PREFIX=\${out}" ];
meta = with lib; {
description = "Tiling tabbed window manager designed with keyboard users in mind";
homepage = "https://modeemi.fi/~tuomov/ion";
platforms = with platforms; linux;
license = licenses.lgpl21;
maintainers = with maintainers; [ ];
};
}

View file

@ -0,0 +1,84 @@
{ lib
, stdenv
, fetchFromGitHub
, autoconf
, automake
, expat
, fontconfig
, freetype
, gettext
, libX11
, libXau
, libXdmcp
, libXext
, libXft
, libXinerama
, libXmu
, libXpm
, libjpeg
, libpng
, librsvg
, pango
, pkg-config
, which
, xorg
, xorgproto
, gitUpdater
}:
stdenv.mkDerivation rec {
pname = "jwm";
version = "2.4.2";
src = fetchFromGitHub {
owner = "joewing";
repo = "jwm";
rev = "v${version}";
sha256 = "sha256-rvuz2Pmon3XBqRMgDwZNrQlWDyLNSK30JPmmQTlN+Rs=";
};
nativeBuildInputs = [
autoconf
automake
gettext
pkg-config
which
];
buildInputs = [
expat
fontconfig
freetype
libX11
libXau
libXdmcp
libXext
libXft
libXinerama
libXmu
libXpm
libjpeg
libpng
librsvg
pango
xorg.libXrender
xorgproto
];
preConfigure = "NOCONFIGURE=1 ./autogen.sh";
enableParallelBuilding = true;
passthru.updateScript = gitUpdater {
inherit pname version;
rev-prefix = "v";
};
meta = {
homepage = "http://joewing.net/projects/jwm/";
description = "Joe's Window Manager is a light-weight X11 window manager";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.romildo ];
};
}

View file

@ -0,0 +1,48 @@
{ lib, stdenv, fetchbzr, cmake, pkg-config, gettext, libXpm, libGL, fltk, hicolor-icon-theme, glib, gnome2, which }:
stdenv.mkDerivation rec {
pname = "jwm-settings-manager";
version = "2019-01-27";
src = fetchbzr {
url = "lp:${pname}";
rev = "292";
sha256 = "1yqc1ac2pbkc88z7p1qags1jygdlr5y1rhc5mx6gapcf54bk0lmi";
};
nativeBuildInputs = [
cmake
pkg-config
gettext
];
buildInputs = [
libXpm
libGL
fltk
hicolor-icon-theme
which # needed at runtime to locate optional programs
glib.bin # provides gsettings
gnome2.GConf # provides gconftool-2
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace 'CMAKE_INSTALL_PREFIX "/usr"' "CMAKE_INSTALL_PREFIX $out"
substituteInPlace data/CMakeLists.txt \
--replace 'DESTINATION usr/share' "DESTINATION share"
'';
postConfigure = ''
substituteInPlace cmake_install.cmake \
--replace "/var/empty" "/usr"
'';
meta = with lib; {
description = "A full configuration manager for JWM";
homepage = "https://joewing.net/projects/jwm";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.romildo ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, dbus-glib, autoreconfHook, xorg }:
stdenv.mkDerivation {
pname = "kbdd";
version = "unstable-2021-04-26";
src = fetchFromGitHub {
owner = "qnikst";
repo = "kbdd";
rev = "3145099e1fbbe65b27678be72465aaa5b5872874";
sha256 = "1gzcjnflgdqnjgphiqpzwbcx60hm0h2cprncm7i8xca3ln5q6ba1";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [ xorg.libX11 dbus-glib ];
meta = {
description = "Simple daemon and library to make per window layout using XKB";
homepage = "https://github.com/qnikst/kbdd";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.wedens ];
};
}

View file

@ -0,0 +1,64 @@
{ lib
, stdenv
, fetchFromGitHub
, cairo
, glib
, libdrm
, libinput
, libxcb
, libxkbcommon
, libxml2
, meson
, ninja
, pango
, pkg-config
, scdoc
, wayland
, wayland-protocols
, wlroots
, xwayland
}:
stdenv.mkDerivation rec {
pname = "labwc";
version = "0.5.0";
src = fetchFromGitHub {
owner = "labwc";
repo = pname;
rev = version;
hash = "sha256-G0EQuXSHftl4JLXKIro+tmhbApwAhlzcjPEL7DP6LHk=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
scdoc
];
buildInputs = [
cairo
glib
libdrm
libinput
libxcb
libxkbcommon
libxml2
pango
wayland
wayland-protocols
wlroots
xwayland
];
mesonFlags = [ "-Dxwayland=enabled" ];
meta = with lib; {
homepage = "https://github.com/labwc/labwc";
description = "A Wayland stacking compositor, similar to Openbox";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
inherit (wayland.meta) platforms;
};
}

View file

@ -0,0 +1,24 @@
{ lib, stdenv, fetchurl, imake, gccmakedep, libX11, libXext, libXmu }:
stdenv.mkDerivation rec {
pname = "larswm";
version = "7.5.3";
src = fetchurl {
url = "mirror://sourceforge/larswm/larswm-${version}.tar.gz";
sha256 = "1xmlx9g1nhklxjrg0wvsya01s4k5b9fphnpl9zdwp29mm484ni3v";
};
nativeBuildInputs = [ imake gccmakedep ];
buildInputs = [ libX11 libXext libXmu ];
makeFlags = [ "BINDIR=$(out)/bin" "MANPATH=$(out)/share/man" ];
installTargets = [ "install" "install.man" ];
meta = {
homepage = "http://www.fnurt.net/larswm";
description = "9wm-like tiling window manager";
license = lib.licenses.free;
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,39 @@
{ stdenv, lib, fetchFromGitHub, rustPlatform, libX11, libXinerama }:
let
rpathLibs = [ libXinerama libX11 ];
in
rustPlatform.buildRustPackage rec {
pname = "leftwm";
version = "0.2.11";
src = fetchFromGitHub {
owner = "leftwm";
repo = "leftwm";
rev = version;
sha256 = "sha256-GLHmX628UUdIM+xYJhPtqFg4whQqaF8hFxg0Z5grPac=";
};
cargoSha256 = "sha256-4Pu3TDLmi0c2nyUj1lTRincgRqL40A/g0PkyJOen0is=";
buildInputs = rpathLibs;
postInstall = ''
for p in $out/bin/leftwm*; do
patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $p
done
'';
dontPatchELF = true;
meta = with lib; {
broken = (stdenv.isLinux && stdenv.isAarch64);
description = "A tiling window manager for the adventurer";
homepage = "https://github.com/leftwm/leftwm";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ mschneider ];
changelog = "https://github.com/leftwm/leftwm/blob/${version}/CHANGELOG";
};
}

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchFromGitHub, perl, libxcb }:
stdenv.mkDerivation rec {
pname = "lemonbar";
version = "1.4";
src = fetchFromGitHub {
owner = "LemonBoy";
repo = "bar";
rev = "v${version}";
sha256 = "sha256-lmppcnQ8r4jEuhegpTBxYqxfTTS/IrbtQVZ44HqnoWo=";
};
buildInputs = [ libxcb perl ];
installFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
meta = with lib; {
description = "A lightweight xcb based bar";
homepage = "https://github.com/LemonBoy/bar";
maintainers = with maintainers; [ meisternu fortuneteller2k ];
license = licenses.mit;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchFromGitHub, perl, libxcb, libXft }:
stdenv.mkDerivation {
pname = "lemonbar-xft";
version = "unstable-2020-09-10";
src = fetchFromGitHub {
owner = "drscream";
repo = "lemonbar-xft";
rev = "481e12363e2a0fe0ddd2176a8e003392be90ed02";
sha256 = "sha256-BNYBbUouqqsRQaPkpg+UKg62IV9uI34gKJuiAM94CBU=";
};
buildInputs = [ libxcb libXft perl ];
installFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
meta = with lib; {
description = "A lightweight xcb based bar with XFT-support";
homepage = "https://github.com/drscream/lemonbar-xft";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ fortuneteller2k ];
};
}

View file

@ -0,0 +1,45 @@
{ lib, stdenv, fetchurl
, imake, libX11, libSM, libXext, libICE }:
stdenv.mkDerivation rec {
pname = "lwm";
version = "1.2.4";
src = fetchurl {
url = "http://www.jfc.org.uk/files/lwm/${pname}-${version}.tar.gz";
sha256 = "1bcdr173f0gl61fyl43p3gr145angci7lvjqb8rl00y9f9amvh3y";
};
nativeBuildInputs = [ imake ];
buildInputs = [ libX11 libSM libXext libICE ];
dontConfigure = true;
preBuild = ''
sed -i 's|^LOCAL_LIBRARIES.*|& $(ICELIB)|' Imakefile
xmkmf
'';
installPhase = ''
install -dm755 $out/bin $out/share/man/man1
install -m755 lwm $out/bin/lwm
install -m644 lwm.man $out/share/man/man1/lwm.1
'';
meta = with lib; {
description = "Lightweight Window Manager";
longDescription = ''
lwm is a window manager for X that tries to keep out of your face. There
are no icons, no button bars, no icon docks, no root menus, no nothing: if
you want all that, then other programs can provide it. There's no
configurability either: if you want that, you want a different window
manager; one that helps your operating system in its evil conquest of your
disc space and its annexation of your physical memory.
'';
homepage = "http://www.jfc.org.uk/software/lwm.html";
license = licenses.gpl2;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,31 @@
{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libmatchbox, libX11, libXext }:
stdenv.mkDerivation rec {
pname = "matchbox";
version = "1.2";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libmatchbox ];
NIX_LDFLAGS = "-lX11 -L${libX11}/lib -lXext -L${libXext}/lib";
src = fetchurl {
url = "https://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/${version}/matchbox-window-manager-${version}.tar.bz2";
sha256 = "1zyfq438b466ygcz78nvsmnsc5bhg4wcfnpxb43kbkwpyx53m8l1";
};
patches = [
# Pull upstream fix for -fno-common tollchains:
(fetchpatch {
name = "fno-common.patch";
url = "https://git.yoctoproject.org/matchbox-window-manager/patch/?id=844f61069896fe3f549ab425d731c061028f697c";
sha256 = "1md2s7q094hn4gzg21pfyz8d426y07d5rbx2icas9nvc8jj7bwfc";
})
];
meta = {
description = "X window manager for non-desktop embedded systems";
homepage = "https://www.yoctoproject.org/software-item/matchbox/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,53 @@
{ lib, stdenv, fetchFromGitHub, gccmakedep, libX11, libXext, libXpm, imake, installShellFiles, ... }:
stdenv.mkDerivation rec {
pname = "mlvwm";
version = "0.9.4";
src = fetchFromGitHub {
owner = "morgant";
repo = pname;
rev = version;
sha256 = "sha256-ElKmi+ANuB3LPwZTMcr5HEMESjDwENbYnNIGdRP24d0=";
};
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ gccmakedep libX11 libXext libXpm imake ];
buildPhase = ''
(cd man && xmkmf)
(cd sample_rc && xmkmf)
(cd mlvwm && xmkmf)
xmkmf
make
'';
installPhase = ''
mkdir -p $out/{bin,etc}
cp mlvwm/mlvwm $out/bin
cp sample_rc/Mlvwmrc* $out/etc
runHook postInstall
'';
postInstall = ''
mv man/mlvwm.man man/mlvwm.1
installManPage man/mlvwm.1
'';
meta = with lib; {
homepage = "https://github.com/morgant/mlvwm";
description = "Macintosh-like Virtual Window Manager";
license = licenses.mit;
longDescription = ''
MLVWM or Macintosh-Like Virtual Window Manager,
is an FVWM descendant created by Takashi Hasegawa
in 1997 while studying at Nagoya University and
was written entirely in the C programming language.
As its name implies, it attempts to emulate the
pre-Mac OS X Macintosh look and feel in its layout and window design.
'';
platforms = platforms.linux;
maintainers = [ maintainers.j0hax ];
};
}

View file

@ -0,0 +1,88 @@
{ lib, stdenv
, fetchFromGitHub
, asciidoc
, docbook_xml_dtd_45
, docbook_xsl
, freetype
, judy
, libGL
, libconfig
, libdrm
, libxml2
, libxslt
, libXcomposite
, libXdamage
, libXext
, libXinerama
, libXrandr
, libXrender
, libXres
, pcre
, pkg-config
}:
stdenv.mkDerivation rec {
pname = "neocomp";
version = "unstable-2021-04-06";
src = fetchFromGitHub {
owner = "DelusionalLogic";
repo = "NeoComp";
rev = "ccd340d7b2dcd3f828aff958a638cc23686aee6f";
sha256 = "sha256-tLLEwpAGNVTC+N41bM7pfskIli4Yvc95wH2/NT0OZ+8=";
};
nativeBuildInputs = [
asciidoc
docbook_xml_dtd_45
docbook_xsl
pkg-config
];
buildInputs = [
freetype
judy
libGL
libconfig
libdrm
libxml2
libxslt
libXcomposite
libXdamage
libXext
libXinerama
libXrandr
libXrender
libXres
pcre
];
makeFlags = [
"PREFIX=${placeholder "out"}"
"CFGDIR=${placeholder "out"}/etc/xdg/neocomp"
"ASTDIR=${placeholder "out"}/share/neocomp/assets"
"COMPTON_VERSION=${version}"
];
postPatch = ''
substituteInPlace src/compton.c --replace \
"assets_add_path(\"./assets/\");" \
"assets_add_path(\"$out/share/neocomp/assets/\");"
substituteInPlace src/assets/assets.c --replace \
"#define MAX_PATH_LENGTH 64" \
"#define MAX_PATH_LENGTH 128"
'';
meta = with lib; {
homepage = "https://github.com/DelusionalLogic/NeoComp";
license = licenses.gpl3Only;
maintainers = with maintainers; [ twey fortuneteller2k ];
platforms = platforms.linux;
description = "A fork of Compton, a compositor for X11";
longDescription = ''
NeoComp is a (hopefully) fast and (hopefully) simple compositor
for X11, focused on delivering frames from the window to the
framebuffer as quickly as possible.
'';
};
}

View file

@ -0,0 +1,39 @@
{ lib, stdenv, fetchFromGitHub, pkg-config
, lua, gettext, which, groff, xmessage, xterm
, readline, fontconfig, libX11, libXext, libSM
, libXinerama, libXrandr, libXft
, xlibsWrapper, makeWrapper
}:
stdenv.mkDerivation rec {
pname = "notion";
version = "4.0.2";
src = fetchFromGitHub {
owner = "raboof";
repo = pname;
rev = version;
sha256 = "14swd0yqci8lxn259fkd9w92bgyf4rmjwgvgyqp78wlfix6ai4mv";
};
nativeBuildInputs = [ pkg-config makeWrapper groff ];
buildInputs = [ lua gettext which readline fontconfig libX11 libXext libSM
libXinerama libXrandr libXft xlibsWrapper ];
buildFlags = [ "LUA_DIR=${lua}" "X11_PREFIX=/no-such-path" ];
makeFlags = [ "NOTION_RELEASE=${version}" "PREFIX=\${out}" ];
postInstall = ''
wrapProgram $out/bin/notion \
--prefix PATH ":" "${xmessage}/bin:${xterm}/bin" \
'';
meta = with lib; {
description = "Tiling tabbed window manager";
homepage = "https://notionwm.net";
license = licenses.lgpl21;
maintainers = with maintainers; [ jfb AndersonTorres raboof ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,68 @@
{ lib, stdenv, fetchurl, autoreconfHook, pkg-config, python3
, libxml2, libXinerama, libXcursor, libXau, libXrandr, libICE, libSM
, imlib2, pango, libstartup_notification, makeWrapper }:
stdenv.mkDerivation rec {
pname = "openbox";
version = "3.6.1";
nativeBuildInputs = [
autoreconfHook
pkg-config
makeWrapper
python3.pkgs.wrapPython
];
buildInputs = [
libxml2
libXinerama libXcursor libXau libXrandr libICE libSM
libstartup_notification
python3
];
propagatedBuildInputs = [
pango imlib2
];
pythonPath = with python3.pkgs; [
pyxdg
];
src = fetchurl {
url = "http://openbox.org/dist/openbox/${pname}-${version}.tar.gz";
sha256 = "1xvyvqxlhy08n61rjkckmrzah2si1i7nmc7s8h07riqq01vc0jlb";
};
setlayoutSrc = fetchurl {
url = "http://openbox.org/dist/tools/setlayout.c";
sha256 = "1ci9lq4qqhl31yz1jwwjiawah0f7x0vx44ap8baw7r6rdi00pyiv";
};
patches = [
# Use fetchurl to avoid "fetchpatch: ignores file renames" #32084
# This patch adds python3 support
(fetchurl {
url = "https://raw.githubusercontent.com/archlinux/svntogit-community/90cb57ef53d952bb6ab4c33a184f815bbe1791c0/openbox/trunk/py3.patch";
sha256 = "1ks99awlkhd5ph9kz94s1r6m1bfvh42g4rmxd14dyg5b421p1ljc";
})
];
postBuild = "gcc -O2 -o setlayout $(pkg-config --cflags --libs x11) $setlayoutSrc";
# Openbox needs XDG_DATA_DIRS set or it can't find its default theme
postInstall = ''
cp -a setlayout "$out"/bin
wrapProgram "$out/bin/openbox" --prefix XDG_DATA_DIRS : "$out/share"
wrapProgram "$out/bin/openbox-session" --prefix XDG_DATA_DIRS : "$out/share"
wrapProgram "$out/bin/openbox-gnome-session" --prefix XDG_DATA_DIRS : "$out/share"
wrapProgram "$out/bin/openbox-kde-session" --prefix XDG_DATA_DIRS : "$out/share"
wrapPythonProgramsIn "$out/libexec" "$out $pythonPath"
'';
meta = {
description = "X window manager for non-desktop embedded systems";
homepage = "http://openbox.org/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,61 @@
{ lib
, stdenv
, fetchurl
, freetype
, fribidi
, libICE
, libSM
, libXaw
, libXext
, libXft
, libXinerama
, libXmu
, libXpm
, libXrandr
, libXrender
, libXt
, pkg-config
, xorgproto
}:
stdenv.mkDerivation rec {
pname = "oroborus";
version = "2.0.20";
src = fetchurl {
url = "mirror://debian/pool/main/o/oroborus/oroborus_${version}.tar.gz";
hash = "sha256-UiClQLz2gSxnc/vlg9nqP1T0UsusVb7cqt66jDqae4k=a";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
freetype
fribidi
libICE
libSM
libXaw
libXext
libXft
libXinerama
libXmu
libXpm
libXrandr
libXrender
libXt
xorgproto
];
# Workaround build failure on -fno-common toolchains:
# ld: workspaces.o:src/keyboard.h:93: multiple definition of
# `NumLockMask'; client.o:src/keyboard.h:93: first defined here
NIX_CFLAGS_COMPILE = "-fcommon";
meta = with lib; {
homepage = "https://web.archive.org/web/20191129172107/https://www.oroborus.org/";
description = "A really minimalistic X window manager";
license = licenses.gpl2Plus;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,72 @@
{ lib
, stdenv
, fetchFromGitHub
, awk
, grep
, sed
, runtimeShell
, cmake
, libXext
, libXft
, libXinerama
, libXpm
, libXrandr
, libjpeg
, libpng
, pkg-config
}:
stdenv.mkDerivation rec {
pname = "pekwm";
version = "0.2.1";
src = fetchFromGitHub {
owner = "pekdon";
repo = "pekwm";
rev = "release-${version}";
hash= "sha256-voHPstdcd4CHnAdD3PMxca0A6MyMYJi8Ik0UlFB0vG0=";
};
nativeBuildInputs = [
cmake
pkg-config
];
cmakeFlags = [
"-DAWK=${awk}/bin/awk"
"-DGREP=${grep}/bin/grep"
"-DSED=${sed}/bin/sed"
"-DSH=${runtimeShell}"
];
buildInputs = [
libXext
libXft
libXinerama
libXpm
libXrandr
libjpeg
libpng
];
meta = with lib; {
homepage = "https://www.pekwm.se/";
description = "A lightweight window manager";
longDescription = ''
pekwm is a window manager that once upon a time was based on the aewm++
window manager, but it has evolved enough that it no longer resembles
aewm++ at all. It has a much expanded feature-set, including window
grouping (similar to ion, pwm, or fluxbox), autoproperties, xinerama,
keygrabber that supports keychains, and much more.
- Lightweight and Unobtrusive, a window manager shouldn't be noticed.
- Very configurable, we all work and think in different ways.
- Automatic properties, for all the lazy people, make things appear as
they should when starting applications.
- Chainable Keygrabber, usability for everyone.
'';
license = licenses.gpl2Plus;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,127 @@
{ lib
, stdenv
, fetchFromGitLab
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, libhandy
, libxkbcommon
, libgudev
, callaudiod
, pulseaudio
, glib
, gtk3
, gnome
, gnome-desktop
, gcr
, pam
, systemd
, upower
, wayland
, dbus
, xvfb-run
, phoc
, feedbackd
, networkmanager
, polkit
, libsecret
}:
stdenv.mkDerivation rec {
pname = "phosh";
version = "0.17.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
group = "World";
owner = "Phosh";
repo = pname;
rev = "v${version}";
fetchSubmodules = true; # including gvc and libcall-ui which are designated as subprojects
sha256 = "sha256-o/0NJZo1EPpXguN/tkUc+/9XaVTQWaLGe+2pU0B91Cg=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
python3
wrapGAppsHook
];
buildInputs = [
phoc
libhandy
libsecret
libxkbcommon
libgudev
callaudiod
pulseaudio
glib
gcr
networkmanager
polkit
gnome.gnome-control-center
gnome-desktop
gnome.gnome-session
gtk3
pam
systemd
upower
wayland
feedbackd
];
checkInputs = [
dbus
xvfb-run
];
# Temporarily disabled - Test is broken (SIGABRT)
doCheck = false;
mesonFlags = [ "-Dsystemd=true" "-Dcompositor=${phoc}/bin/phoc" ];
postPatch = ''
chmod +x build-aux/post_install.py
patchShebangs build-aux/post_install.py
'';
checkPhase = ''
runHook preCheck
export NO_AT_BRIDGE=1
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
meson test --print-errorlogs
runHook postCheck
'';
# Depends on GSettings schemas in gnome-shell
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${gnome.gnome-shell}/share/gsettings-schemas/${gnome.gnome-shell.name}"
--set GNOME_SESSION "${gnome.gnome-session}/bin/gnome-session"
)
'';
postFixup = ''
mkdir -p $out/share/wayland-sessions
ln -s $out/share/applications/sm.puri.Phosh.desktop $out/share/wayland-sessions/
'';
passthru = {
providedSessions = [
"sm.puri.Phosh"
];
};
meta = with lib; {
description = "A pure Wayland shell prototype for GNOME on mobile devices";
homepage = "https://gitlab.gnome.org/World/Phosh/phosh";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jtojnar masipcat zhaofengli ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,117 @@
{ asciidoc
, dbus
, docbook_xml_dtd_45
, docbook_xsl
, fetchFromGitHub
, lib
, libconfig
, libdrm
, libev
, libGL
, libX11
, libxcb
, libxdg_basedir
, libXext
, libXinerama
, libxml2
, libxslt
, makeWrapper
, meson
, ninja
, pcre
, pixman
, pkg-config
, stdenv
, uthash
, xcbutilimage
, xcbutilrenderutil
, xorgproto
, xwininfo
, withDebug ? false
}:
stdenv.mkDerivation rec {
pname = "picom";
version = "9.1";
src = fetchFromGitHub {
owner = "yshui";
repo = "picom";
rev = "v${version}";
sha256 = "sha256-Fqk6bPAOg4muxmSP+ezpGUNw6xrMWchZACKemeA08mA=";
fetchSubmodules = true;
};
nativeBuildInputs = [
asciidoc
docbook_xml_dtd_45
docbook_xsl
makeWrapper
meson
ninja
pkg-config
uthash
];
buildInputs = [
dbus
libconfig
libdrm
libev
libGL
libX11
libxcb
libxdg_basedir
libXext
libXinerama
libxml2
libxslt
pcre
pixman
xcbutilimage
xcbutilrenderutil
xorgproto
];
# Use "debugoptimized" instead of "debug" so perhaps picom works better in
# normal usage too, not just temporary debugging.
mesonBuildType = if withDebug then "debugoptimized" else "release";
dontStrip = withDebug;
mesonFlags = [
"-Dwith_docs=true"
];
installFlags = [ "PREFIX=$(out)" ];
# In debug mode, also copy src directory to store. If you then run `gdb picom`
# in the bin directory of picom store path, gdb finds the source files.
postInstall = ''
wrapProgram $out/bin/picom-trans \
--prefix PATH : ${lib.makeBinPath [ xwininfo ]}
'' + lib.optionalString withDebug ''
cp -r ../src $out/
'';
meta = with lib; {
description = "A fork of XCompMgr, a sample compositing manager for X servers";
longDescription = ''
A fork of XCompMgr, which is a sample compositing manager for X
servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
extensions. It enables basic eye-candy effects. This fork adds
additional features, such as additional effects, and a fork at a
well-defined and proper place.
The package can be installed in debug mode as:
picom.override { withDebug = true; }
For gdb to find the source files, you need to run gdb in the bin directory
of picom package in the nix store.
'';
license = licenses.mit;
homepage = "https://github.com/yshui/picom";
maintainers = with maintainers; [ ertes twey thiagokokada ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,13 @@
{ picom, lib, fetchFromGitHub }:
picom.overrideAttrs (oldAttrs: rec {
pname = "picom-next";
version = "unstable-2022-02-05";
src = fetchFromGitHub {
owner = "yshui";
repo = "picom";
rev = "928963721c8789fc5f27949e8b0730771aab940d";
sha256 = "sha256-qu9HnUG5VQbiSgduW1oR/tVvzEckaD2TWzds4R5zI+Y=";
};
meta.maintainers = with lib.maintainers; oldAttrs.meta.maintainers ++ [ GKasparov ];
})

View file

@ -0,0 +1,96 @@
{ lib
, fetchFromGitHub
, python3
, python3Packages
, mypy
, glib
, pango
, pkg-config
, libinput
, libxkbcommon
, wayland
, wlroots
, xcbutilcursor
}:
let
unwrapped = python3Packages.buildPythonPackage rec {
pname = "qtile";
version = "0.21.0";
src = fetchFromGitHub {
owner = "qtile";
repo = "qtile";
rev = "v${version}";
sha256 = "3QCI1TZIh1LcWuklVQkqgR1MQphi6CzZKc1UZcytV0k=";
};
patches = [
./fix-restart.patch # https://github.com/NixOS/nixpkgs/issues/139568
];
postPatch = ''
substituteInPlace libqtile/pangocffi.py \
--replace libgobject-2.0.so.0 ${glib.out}/lib/libgobject-2.0.so.0 \
--replace libpangocairo-1.0.so.0 ${pango.out}/lib/libpangocairo-1.0.so.0 \
--replace libpango-1.0.so.0 ${pango.out}/lib/libpango-1.0.so.0
substituteInPlace libqtile/backend/x11/xcursors.py \
--replace libxcb-cursor.so.0 ${xcbutilcursor.out}/lib/libxcb-cursor.so.0
'';
SETUPTOOLS_SCM_PRETEND_VERSION = version;
nativeBuildInputs = [
pkg-config
] ++ (with python3Packages; [
setuptools-scm
]);
propagatedBuildInputs = with python3Packages; [
xcffib
(cairocffi.override { withXcffib = true; })
setuptools
python-dateutil
dbus-python
dbus-next
mpd2
psutil
pyxdg
pygobject3
pywayland
pywlroots
xkbcommon
];
buildInputs = [
libinput
wayland
wlroots
libxkbcommon
];
# for `qtile check`, needs `stubtest` and `mypy` commands
makeWrapperArgs = [
"--suffix PATH : ${lib.makeBinPath [ mypy ]}"
];
doCheck = false; # Requires X server #TODO this can be worked out with the existing NixOS testing infrastructure.
meta = with lib; {
homepage = "http://www.qtile.org/";
license = licenses.mit;
description = "A small, flexible, scriptable tiling window manager written in Python";
platforms = platforms.linux;
maintainers = with maintainers; [ kamilchm ];
};
};
in
(python3.withPackages (_: [ unwrapped ])).overrideAttrs (_: {
# otherwise will be exported as "env", this restores `nix search` behavior
name = "${unwrapped.pname}-${unwrapped.version}";
# export underlying qtile package
passthru = { inherit unwrapped; };
# restore original qtile attrs
inherit (unwrapped) pname version meta;
})

View file

@ -0,0 +1,22 @@
diff --git a/libqtile/core/lifecycle.py b/libqtile/core/lifecycle.py
index 0d4d119d..c37d1799 100644
--- a/libqtile/core/lifecycle.py
+++ b/libqtile/core/lifecycle.py
@@ -25,7 +25,7 @@ class LifeCycle:
def _atexit(self) -> None:
if self.behavior is Behavior.RESTART:
- argv = [sys.executable] + sys.argv
+ argv = sys.argv
if "--no-spawn" not in argv:
argv.append("--no-spawn")
argv = [s for s in argv if not s.startswith("--with-state")]
@@ -33,7 +33,7 @@ class LifeCycle:
argv.append("--with-state=" + self.state_file)
logger.warning("Restarting Qtile with os.execv(...)")
# No other code will execute after the following line does
- os.execv(sys.executable, argv)
+ os.execv(sys.argv[0], argv)
elif self.behavior is Behavior.TERMINATE:
logger.warning("Qtile will now terminate")
elif self.behavior is Behavior.NONE:

View file

@ -0,0 +1,58 @@
{ lib, stdenv, fetchurl, pkg-config, perl, autoconf, automake
, libX11, xorgproto, libXt, libXpm, libXft, libXtst, libXi
, libXrandr, fontconfig, freetype, readline
}:
stdenv.mkDerivation rec {
pname = "ratpoison";
version = "1.4.9";
src = fetchurl {
url = "mirror://savannah/ratpoison/${pname}-${version}.tar.xz";
sha256 = "1wfir1gvh5h7izgvx2kd1pr2k7wlncd33zq7qi9s9k2y0aza93yr";
};
outputs = [ "out" "contrib" "man" "doc" "info" ];
configureFlags = [
# >=1.4.9 requires this even with readline in inputs
"--enable-history"
];
nativeBuildInputs = [ pkg-config autoconf automake ];
buildInputs =
[ perl
libX11 xorgproto libXt libXpm libXft libXtst libXi libXrandr
fontconfig freetype readline ];
postInstall = ''
mkdir -p $contrib/{bin,share}
mv $out/bin/rpws $contrib/bin
mv $out/share/ratpoison $contrib/share
'';
meta = with lib; {
homepage = "https://www.nongnu.org/ratpoison/";
description = "Simple mouse-free tiling window manager";
license = licenses.gpl2Plus;
longDescription = ''
Ratpoison is a simple window manager with no fat library
dependencies, no fancy graphics, no window decorations, and no
rodent dependence. It is largely modelled after GNU Screen which
has done wonders in the virtual terminal market.
The screen can be split into non-overlapping frames. All windows
are kept maximized inside their frames to take full advantage of
your precious screen real estate.
All interaction with the window manager is done through keystrokes.
Ratpoison has a prefix map to minimize the key clobbering that
cripples Emacs and other quality pieces of software.
'';
platforms = platforms.unix;
maintainers = [ maintainers.AndersonTorres ];
};
}

View file

@ -0,0 +1,71 @@
{ lib
, stdenv
, fetchFromGitHub
, zig
, wayland
, pkg-config
, scdoc
, xwayland
, wayland-protocols
, wlroots
, libxkbcommon
, pixman
, udev
, libevdev
, libinput
, libGL
, libX11
, xwaylandSupport ? true
}:
stdenv.mkDerivation rec {
pname = "river";
version = "0.1.3";
src = fetchFromGitHub {
owner = "riverwm";
repo = pname;
rev = "v${version}";
sha256 = "sha256-bHfHhyDx/Wzhvhr7mAeVzJf0TBJgMTGb/ClGjWMLlQ8=";
fetchSubmodules = true;
};
nativeBuildInputs = [ zig wayland xwayland scdoc pkg-config ];
buildInputs = [
wayland-protocols
wlroots
libxkbcommon
pixman
udev
libevdev
libinput
libGL
] ++ lib.optional xwaylandSupport libX11;
dontConfigure = true;
preBuild = ''
export HOME=$TMPDIR
'';
installPhase = ''
runHook preInstall
zig build -Drelease-safe -Dcpu=baseline ${lib.optionalString xwaylandSupport "-Dxwayland"} -Dman-pages --prefix $out install
runHook postInstall
'';
/* Builder patch install dir into river to get default config
When installFlags is removed, river becomes half broken.
See https://github.com/riverwm/river/blob/7ffa2f4b9e7abf7d152134f555373c2b63ccfc1d/river/main.zig#L56
*/
installFlags = [ "DESTDIR=$(out)" ];
meta = with lib; {
homepage = "https://github.com/ifreund/river";
description = "A dynamic tiling wayland compositor";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ fortuneteller2k ];
};
}

View file

@ -0,0 +1,88 @@
{ lib
, stdenv
, fetchurl
, autoreconfHook
, gdk-pixbuf-xlib
, gettext
, gtk2
, imlib
, libICE
, libSM
, libXinerama
, libXrandr
, libXtst
, librep
, makeWrapper
, pango
, pkg-config
, rep-gtk
, texinfo
, which
}:
stdenv.mkDerivation rec {
pname = "sawfish";
version = "1.13.0";
src = fetchurl {
url = "https://download.tuxfamily.org/sawfish/${pname}_${version}.tar.xz";
sha256 = "sha256-gWs8W/pMtQjbH8FEifzNAj3siZzxPd6xm8PmXXhyr10=";
};
nativeBuildInputs = [
autoreconfHook
gettext
librep
makeWrapper
pkg-config
texinfo
which
];
buildInputs = [
gdk-pixbuf-xlib
gtk2
imlib
libICE
libSM
libXinerama
libXrandr
libXtst
librep
pango
rep-gtk
];
postPatch = ''
sed -e 's|REP_DL_LOAD_PATH=|REP_DL_LOAD_PATH=$(REP_DL_LOAD_PATH):|g' -i Makedefs.in
sed -e 's|$(repexecdir)|$(libdir)/rep|g' -i src/Makefile.in
'';
strictDeps = true;
postInstall = ''
for i in $out/lib/sawfish/sawfish-menu \
$out/bin/sawfish-about \
$out/bin/sawfish-client \
$out/bin/sawfish-config \
$out/bin/sawfish; do
wrapProgram $i \
--prefix REP_DL_LOAD_PATH : "$out/lib/rep" \
--set REP_LOAD_PATH "$out/share/sawfish/lisp"
done
'';
meta = with lib; {
homepage = "http://sawfish.tuxfamily.org/";
description = "An extensible, Lisp-based window manager";
longDescription = ''
Sawfish is an extensible window manager using a Lisp-based scripting
language. Its policy is very minimal compared to most window managers. Its
aim is simply to manage windows in the most flexible and attractive manner
possible. All high-level WM functions are implemented in Lisp for future
extensibility or redefinition.
'';
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,38 @@
{ lib, stdenv, fetchFromGitHub
, doxygen, graphviz, libX11, libXrandr }:
stdenv.mkDerivation rec {
pname = "smallwm";
version = "2020-02-28";
src = fetchFromGitHub {
owner = "adamnew123456";
repo = "SmallWM";
rev = "c2dc72afa87241bcf7e646630f4aae216ce78613";
sha256 = "0cqhy81ymdcdyvgi55a401rr96h2akskcxi9ddzjbln4a71yjlz8";
};
nativeBuildInputs = [ doxygen graphviz ];
buildInputs = [ libX11 libXrandr ];
dontConfigure = true;
makeFlags = [ "CC=${stdenv.cc}/bin/cc" "CXX=${stdenv.cc}/bin/c++" ];
buildFlags = [ "all" "doc" ];
installPhase = ''
install -dm755 $out/bin $out/share/doc/${pname}-${version}
install -m755 bin/smallwm -t $out/bin
cp -r README.markdown doc/html doc/latex $out/share/doc/${pname}-${version}
'';
meta = with lib;{
description = "A small X window manager, extended from tinywm";
homepage = "https://github.com/adamnew123456/SmallWM";
license = licenses.bsd2;
maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,48 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, xorg }:
stdenv.mkDerivation {
pname = "spectrwm";
version = "3.4.1";
src = fetchFromGitHub {
owner = "conformal";
repo = "spectrwm";
rev = "SPECTRWM_3_4_1";
sha256 = "0bf0d25yr0craksamczn2mdy6cjp27l88smihlw9bw4p6a2qhi41";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = with xorg; [
libXrandr
libXcursor
libXft
libXt
xcbutil
xcbutilkeysyms
xcbutilwm
];
prePatch = let
subdir = if stdenv.isDarwin then "osx" else "linux";
in "cd ${subdir}";
makeFlags = [ "PREFIX=${placeholder "out"}" ];
meta = with lib; {
description = "A tiling window manager";
homepage = "https://github.com/conformal/spectrwm";
maintainers = with maintainers; [ christianharke ];
license = licenses.isc;
platforms = platforms.all;
longDescription = ''
spectrwm is a small dynamic tiling window manager for X11. It
tries to stay out of the way so that valuable screen real estate
can be used for much more important stuff. It has sane defaults
and does not require one to learn a language to do any
configuration. It was written by hackers for hackers and it
strives to be small, compact and fast.
'';
};
}

View file

@ -0,0 +1,51 @@
{ autoreconfHook
, docbook_xml_dtd_44
, docbook-xsl-ns
, fetchFromGitHub
, lib
, libX11
, libXpm
, libxslt
, stdenv
}:
stdenv.mkDerivation rec {
pname = "stalonetray";
version = "0.8.4";
src = fetchFromGitHub {
owner = "kolbusa";
repo = pname;
rev = "v${version}";
sha256 = "sha256-grxPqSYPLUstLIOKqzMActaSQ2ftYrjbalfR4HcPDRY=";
};
preConfigure =
let
db_root = "${docbook-xsl-ns}/share/xml/docbook-xsl-ns";
ac_str = "AC_SUBST(DOCBOOK_ROOT)";
ac_str_sub = "DOCBOOK_ROOT=${db_root}; ${ac_str}";
in
''
substituteInPlace configure.ac --replace '${ac_str}' '${ac_str_sub}'
'';
nativeBuildInputs = [
autoreconfHook
docbook-xsl-ns
docbook_xml_dtd_44
libX11
libXpm
libxslt
];
hardeningDisable = [ "format" ];
meta = with lib; {
description = "Stand alone tray";
homepage = "https://github.com/kolbusa/stalonetray";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = with maintainers; [ raskin ];
};
}

View file

@ -0,0 +1,43 @@
{ lib, stdenv, substituteAll, fetchFromGitHub, gnused, ncurses, xorg, rlwrap }:
stdenv.mkDerivation {
pname = "stumpish";
version = "0.0.1";
src = fetchFromGitHub {
owner = "stumpwm";
repo = "stumpwm-contrib";
rev = "9f5f06652c480159ec57d1fd8751b16f02db06dc";
sha256 = "1dxzsnir3158p8y2128s08r9ca0ywr9mcznivmhn1lycw8mg4nfl";
};
buildInputs = [
gnused xorg.xprop rlwrap ncurses
];
patches = [
(substituteAll {
src = ./paths.patch;
sed = "${gnused}/bin/sed";
xprop = "${xorg.xprop}/bin/xprop";
rlwrap = "${rlwrap}/bin/rlwrap";
tput = "${ncurses}/bin/tput";
})
];
buildPhase = ''
mkdir -p $out/bin
'';
installPhase = ''
cp util/stumpish/stumpish $out/bin
'';
meta = with lib; {
homepage = "https://github.com/stumpwm/stumpwm-contrib";
description = "STUMPwm Interactive SHell";
license = licenses.gpl2;
maintainers = [ maintainers.ebzzry ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,87 @@
diff --git a/util/stumpish/stumpish b/util/stumpish/stumpish
index 830cb1b..64213dc 100755
--- a/util/stumpish/stumpish
+++ b/util/stumpish/stumpish
@@ -28,8 +28,8 @@ then
fi
# replace -E with -r option for old versions of GNU sed
-if ! sed -E 1p /dev/null 2>/dev/null; then
- sed() { shift; command sed -r "$@"; }
+if ! @sed@ -E 1p /dev/null 2>/dev/null; then
+ sed() { shift; command @sed@ -r "$@"; }
fi
# parse C-style backslash sequences by default
@@ -41,9 +41,9 @@ wait_result ()
{
while true
do
- RESULT=$(xprop -root -f STUMPWM_COMMAND_RESULT 8s \
+ RESULT=$(@xprop@ -root -f STUMPWM_COMMAND_RESULT 8s \
STUMPWM_COMMAND_RESULT 2>/dev/null |
- sed -E 's/\\([[:digit:]]+)/\\0\1/g')
+ @sed@ -E 's/\\([[:digit:]]+)/\\0\1/g')
if echo "$RESULT" | grep -v -q 'not found.$'
then
break
@@ -52,7 +52,7 @@ wait_result ()
sleep $DELAY
done
- xprop -root -remove STUMPWM_COMMAND_RESULT
+ @xprop@ -root -remove STUMPWM_COMMAND_RESULT
if echo "$RESULT" | grep -q '= $'
then
@@ -60,7 +60,7 @@ wait_result ()
fi
echo "$RESULT" |
- sed -E 's/[^"\\n]+"//
+ @sed@ -E 's/[^"\\n]+"//
/^"[[:space:]]*$/d
s/(^|[^\\])\\n/\1\
/g
@@ -80,7 +80,7 @@ send_cmd ()
exit
fi
- xprop -root -f STUMPWM_COMMAND 8s -set STUMPWM_COMMAND "$cmd"
+ @xprop@ -root -f STUMPWM_COMMAND 8s -set STUMPWM_COMMAND "$cmd"
wait_result
}
@@ -123,8 +123,8 @@ tput ()
local cap1=$1 cap2=$2
shift 2
- command tput $cap1 $@ 2>/dev/null ||
- command tput $cap2 $@ 2>/dev/null
+ command @tput@ $cap1 $@ 2>/dev/null ||
+ command @tput@ $cap2 $@ 2>/dev/null
}
READLINE=yes
@@ -156,18 +156,18 @@ then
else
if [ -t 0 ]
then
- if ! type rlwrap 2>/dev/null >&2
+ if ! type @rlwrap@ 2>/dev/null >&2
then
warn rlwrap not found, command completion won\'t work
elif [ $READLINE = yes ]
then
COMMANDS="${TMPDIR:-/tmp}/stumpish.commands.$$"
echo $(send_cmd "commands") |
- sed -E 's/[[:space:]]+/\
+ @sed@ -E 's/[[:space:]]+/\
/g' |
sort > "$COMMANDS"
trap 'rm -f "$COMMANDS"' exit int term
- rlwrap -b '' -f "$COMMANDS" "$0" -r
+ @rlwrap@ -b '' -f "$COMMANDS" "$0" -r
exit
fi

View file

@ -0,0 +1,39 @@
{ lib, stdenv, fetchFromGitHub
, meson, ninja, pkg-config, scdoc
, wayland, wayland-protocols, cairo, gdk-pixbuf
, wayland-scanner
}:
stdenv.mkDerivation rec {
pname = "swaybg";
version = "1.1.1";
src = fetchFromGitHub {
owner = "swaywm";
repo = "swaybg";
rev = "v${version}";
hash = "sha256-Lt/hn/K+CjcmU3Bs5wChiZq0VGNcraH4tSVYsmYnKjc=";
};
strictDeps = true;
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
buildInputs = [ wayland wayland-protocols cairo gdk-pixbuf ];
mesonFlags = [
"-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
];
meta = with lib; {
description = "Wallpaper tool for Wayland compositors";
longDescription = ''
A wallpaper utility for Wayland compositors, that is compatible with any
Wayland compositor which implements the following Wayland protocols:
wlr-layer-shell, xdg-output, and xdg-shell.
'';
inherit (src.meta) homepage;
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos ];
};
}

View file

@ -0,0 +1,97 @@
{ lib, stdenv
, fetchurl
, coreutils
, makeWrapper
, sway-unwrapped
, installShellFiles
, wl-clipboard
, libnotify
, slurp
, grim
, jq
, bash
, python3Packages
}:
{
grimshot = stdenv.mkDerivation rec {
pname = "grimshot";
version = sway-unwrapped.version;
src = sway-unwrapped.src;
dontBuild = true;
dontConfigure = true;
outputs = [ "out" "man" ];
strictDeps = true;
nativeBuildInputs = [ makeWrapper installShellFiles ];
buildInputs = [ bash ];
installPhase = ''
installManPage contrib/grimshot.1
install -Dm 0755 contrib/grimshot $out/bin/grimshot
wrapProgram $out/bin/grimshot --set PATH \
"${lib.makeBinPath [
sway-unwrapped
wl-clipboard
coreutils
libnotify
slurp
grim
jq
] }"
'';
doInstallCheck = true;
installCheckPhase = ''
# check always returns 0
if [[ $($out/bin/grimshot check | grep "NOT FOUND") ]]; then false
else
echo "grimshot check passed"
fi
'';
meta = with lib; {
description = "A helper for screenshots within sway";
homepage = "https://github.com/swaywm/sway/tree/master/contrib";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [
sway-unwrapped.meta.maintainers
evils
];
};
};
inactive-windows-transparency = python3Packages.buildPythonApplication rec {
# long name is long
lname = "inactive-windows-transparency";
pname = "sway-${lname}";
version = sway-unwrapped.version;
src = sway-unwrapped.src;
format = "other";
dontBuild = true;
dontConfigure = true;
propagatedBuildInputs = [ python3Packages.i3ipc ];
installPhase = ''
install -Dm 0755 $src/contrib/${lname}.py $out/bin/${lname}.py
'';
meta = sway-unwrapped.meta // {
description = "It makes inactive sway windows transparent";
homepage = "https://github.com/swaywm/sway/tree/${sway-unwrapped.version}/contrib";
};
};
}

View file

@ -0,0 +1,95 @@
{ lib, stdenv, fetchFromGitHub, substituteAll, swaybg
, meson, ninja, pkg-config, wayland-scanner, scdoc
, wayland, libxkbcommon, pcre, json_c, libevdev
, pango, cairo, libinput, libcap, pam, gdk-pixbuf, librsvg
, wlroots, wayland-protocols, libdrm
, nixosTests
# Used by the NixOS module:
, isNixOS ? false
, enableXWayland ? true
, systemdSupport ? stdenv.isLinux
, dbusSupport ? true
, dbus
, trayEnabled ? systemdSupport && dbusSupport
}:
# The "sd-bus-provider" meson option does not include a "none" option,
# but it is silently ignored iff "-Dtray=disabled". We use "basu"
# (which is not in nixpkgs) instead of "none" to alert us if this
# changes: https://github.com/swaywm/sway/issues/6843#issuecomment-1047288761
assert trayEnabled -> systemdSupport && dbusSupport;
let sd-bus-provider = if systemdSupport then "libsystemd" else "basu"; in
stdenv.mkDerivation rec {
pname = "sway-unwrapped";
version = "1.7";
src = fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = version;
sha256 = "0ss3l258blyf2d0lwd7pi7ga1fxfj8pxhag058k7cmjhs3y30y5l";
};
patches = [
./load-configuration-from-etc.patch
(substituteAll {
src = ./fix-paths.patch;
inherit swaybg;
})
] ++ lib.optionals (!isNixOS) [
# References to /nix/store/... will get GC'ed which causes problems when
# copying the default configuration:
./sway-config-no-nix-store-references.patch
] ++ lib.optionals isNixOS [
# Use /run/current-system/sw/share and /etc instead of /nix/store
# references:
./sway-config-nixos-paths.patch
];
strictDeps = true;
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
meson ninja pkg-config wayland-scanner scdoc
];
buildInputs = [
wayland libxkbcommon pcre json_c libevdev
pango cairo libinput libcap pam gdk-pixbuf librsvg
wayland-protocols libdrm
(wlroots.override { inherit enableXWayland; })
] ++ lib.optionals dbusSupport [
dbus
];
mesonFlags =
[ "-Dsd-bus-provider=${sd-bus-provider}" ]
++ lib.optional (!enableXWayland) "-Dxwayland=disabled"
++ lib.optional (!trayEnabled) "-Dtray=disabled"
;
passthru.tests.basic = nixosTests.sway;
meta = with lib; {
description = "An i3-compatible tiling Wayland compositor";
longDescription = ''
Sway is a tiling Wayland compositor and a drop-in replacement for the i3
window manager for X11. It works with your existing i3 configuration and
supports most of i3's features, plus a few extras.
Sway allows you to arrange your application windows logically, rather
than spatially. Windows are arranged into a grid by default which
maximizes the efficiency of your screen and can be quickly manipulated
using only the keyboard.
'';
homepage = "https://swaywm.org";
changelog = "https://github.com/swaywm/sway/releases/tag/${version}";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos synthetica ma27 ];
};
}

View file

@ -0,0 +1,11 @@
--- a/sway/config.c
+++ b/sway/config.c
@@ -276,7 +276,7 @@
if (!(config->active_bar_modifiers = create_list())) goto cleanup;
- if (!(config->swaybg_command = strdup("swaybg"))) goto cleanup;
+ if (!(config->swaybg_command = strdup("@swaybg@/bin/swaybg"))) goto cleanup;
if (!(config->config_chain = create_list())) goto cleanup;
config->current_config_path = NULL;

View file

@ -0,0 +1,38 @@
{ lib, stdenv, fetchFromGitHub
, meson, ninja, pkg-config, scdoc, wayland-scanner
, wayland, wayland-protocols
, systemdSupport ? stdenv.isLinux, systemd
}:
stdenv.mkDerivation rec {
pname = "swayidle";
version = "1.7.1";
src = fetchFromGitHub {
owner = "swaywm";
repo = "swayidle";
rev = version;
sha256 = "06iq12p4438d6bv3jlqsf01wjaxrzlnj1bnicn41kad563aq41xl";
};
strictDeps = true;
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
buildInputs = [ wayland wayland-protocols ]
++ lib.optionals systemdSupport [ systemd ];
mesonFlags = [ "-Dman-pages=enabled" "-Dlogind=${if systemdSupport then "enabled" else "disabled"}" ];
postPatch = "substituteInPlace main.c --replace '%lu' '%zu'";
meta = with lib; {
description = "Idle management daemon for Wayland";
longDescription = ''
Sway's idle management daemon. It is compatible with any Wayland
compositor which implements the KDE idle protocol.
'';
inherit (src.meta) homepage;
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos ];
};
}

View file

@ -0,0 +1,48 @@
From 92283df3acbffa5c1bb21f23cdd686113d905114 Mon Sep 17 00:00:00 2001
From: Patrick Hilhorst <git@hilhorst.be>
Date: Wed, 31 Mar 2021 21:14:13 +0200
Subject: [PATCH] Load configs from /etc but fallback to /nix/store
This change will load all configuration files from /etc, to make it easy
to override them, but fallback to /nix/store/.../etc/sway/config to make
Sway work out-of-the-box with the default configuration on non NixOS
systems.
Original patch by Michael Weiss, updated for Sway 1.6 by Patrick Hilhorst
Co-authored-by: Michael Weiss <dev.primeos@gmail.com>
---
meson.build | 3 ++-
sway/config.c | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index b7a29660..8ae8ceb3 100644
--- a/meson.build
+++ b/meson.build
@@ -164,7 +164,8 @@ if scdoc.found()
endforeach
endif
-add_project_arguments('-DSYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c')
+add_project_arguments('-DSYSCONFDIR="/@0@"'.format(sysconfdir), language : 'c')
+add_project_arguments('-DNIX_SYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'c')
version = '"@0@"'.format(meson.project_version())
git = find_program('git', native: true, required: false)
diff --git a/sway/config.c b/sway/config.c
index 76b9ec08..fb5b51aa 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -374,7 +374,8 @@ static char *get_config_path(void) {
{ .prefix = home, .config_folder = ".i3"},
{ .prefix = config_home, .config_folder = "i3"},
{ .prefix = SYSCONFDIR, .config_folder = "sway"},
- { .prefix = SYSCONFDIR, .config_folder = "i3"}
+ { .prefix = SYSCONFDIR, .config_folder = "i3"},
+ { .prefix = NIX_SYSCONFDIR, .config_folder = "sway"},
};
size_t num_config_paths = sizeof(config_paths)/sizeof(config_paths[0]);
--
2.30.1

View file

@ -0,0 +1,52 @@
{ lib
, stdenv
, fetchFromGitHub
, meson
, ninja
, pkg-config
, scdoc
, wayland
, wayland-protocols
, wayland-scanner
, libxkbcommon
, cairo
, gdk-pixbuf
, pam
}:
stdenv.mkDerivation rec {
pname = "swaylock-effects";
version = "unstable-2021-10-21";
src = fetchFromGitHub {
owner = "mortie";
repo = "swaylock-effects";
rev = "a8fc557b86e70f2f7a30ca9ff9b3124f89e7f204";
sha256 = "sha256-GN+cxzC11Dk1nN9wVWIyv+rCrg4yaHnCePRYS1c4JTk=";
};
postPatch = ''
sed -iE "s/version: '1\.3',/version: '${version}',/" meson.build
'';
strictDeps = true;
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner];
buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
mesonFlags = [
"-Dpam=enabled"
"-Dgdk-pixbuf=enabled"
"-Dman-pages=enabled"
];
meta = with lib; {
description = "Screen locker for Wayland";
longDescription = ''
Swaylock, with fancy effects
'';
inherit (src.meta) homepage;
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ gnxlxnxx ma27 ];
};
}

View file

@ -0,0 +1,51 @@
{ lib, stdenv, fetchFromGitHub, coreutils, grim, gawk, jq, swaylock
, imagemagick, getopt, fontconfig, wmctrl, makeWrapper, bash
}:
let
depsPath = lib.makeBinPath [
coreutils
grim
gawk
jq
swaylock
imagemagick
getopt
fontconfig
wmctrl
];
in stdenv.mkDerivation rec {
pname = "swaylock-fancy-unstable";
version = "2021-10-11";
src = fetchFromGitHub {
owner = "Big-B";
repo = "swaylock-fancy";
rev = "265fbfb438392339bf676b0a9dbe294abe2a699e";
sha256 = "NjxeJyWYXBb1P8sXKgb2EWjF+cNodTE83r1YwRYoBjM=";
};
postPatch = ''
substituteInPlace swaylock-fancy \
--replace "/usr/share" "$out/share"
'';
strictDeps = true;
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ bash ];
makeFlags = [ "PREFIX=${placeholder "out"}" ];
postInstall = ''
wrapProgram $out/bin/swaylock-fancy \
--prefix PATH : "${depsPath}"
'';
meta = with lib; {
description = "This is an swaylock bash script that takes a screenshot of the desktop, blurs the background and adds a lock icon and text";
homepage = "https://github.com/Big-B/swaylock-fancy";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ ma27 ];
};
}

View file

@ -0,0 +1,47 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch
, meson, ninja, pkg-config, scdoc, wayland-scanner
, wayland, wayland-protocols, libxkbcommon, cairo, gdk-pixbuf, pam
}:
stdenv.mkDerivation rec {
pname = "swaylock";
version = "1.6";
src = fetchFromGitHub {
owner = "swaywm";
repo = "swaylock";
rev = version;
sha256 = "sha256-VVGgidmSQWKxZNx9Cd6z52apxpxVfmX3Ut/G9kzfDcY=";
};
patches = [
# remove once when updating to 1.7
# https://github.com/swaywm/swaylock/pull/235
(fetchpatch {
url = "https://github.com/swaywm/swaylock/commit/5a1e6ad79aa7d79b32d36cda39400f3e889b8f8f.diff";
sha256 = "sha256-ZcZVImUzvng7sluC6q2B5UL8sVunLe4PIfc+tyw48RQ=";
})
];
strictDeps = true;
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner ];
buildInputs = [ wayland wayland-protocols libxkbcommon cairo gdk-pixbuf pam ];
mesonFlags = [
"-Dpam=enabled" "-Dgdk-pixbuf=enabled" "-Dman-pages=enabled"
];
meta = with lib; {
description = "Screen locker for Wayland";
longDescription = ''
swaylock is a screen locking utility for Wayland compositors.
Important note: If you don't use the Sway module (programs.sway.enable)
you need to set "security.pam.services.swaylock = {};" manually.
'';
inherit (src.meta) homepage;
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos ];
};
}

View file

@ -0,0 +1,21 @@
diff --git a/config.in b/config.in
index 08703bef..f3872730 100644
--- a/config.in
+++ b/config.in
@@ -22,8 +22,8 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec --
### Output configuration
#
-# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/)
-output * bg @datadir@/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
+# Default wallpaper (more resolutions are available in /run/current-system/sw/share/backgrounds/sway/)
+output * bg /run/current-system/sw/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
#
# Example configuration:
#
@@ -214,4 +214,4 @@ bar {
}
}
-include @sysconfdir@/sway/config.d/*
+include /etc/sway/config.d/*

View file

@ -0,0 +1,21 @@
diff --git a/config.in b/config.in
--- a/config.in
+++ b/config.in
@@ -21,8 +21,8 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec
### Output configuration
#
-# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/)
-output * bg @datadir@/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
+# Default wallpaper
+#output * bg ~/.config/sway/backgrounds/Sway_Wallpaper_Blue_1920x1080.png fill
#
# Example configuration:
#
@@ -213,5 +213,3 @@ bar {
inactive_workspace #32323200 #32323200 #5c5c5c
}
}
-
-include @sysconfdir@/sway/config.d/*

View file

@ -0,0 +1,63 @@
{ lib
, sway-unwrapped
, makeWrapper, symlinkJoin, writeShellScriptBin
, withBaseWrapper ? true, extraSessionCommands ? "", dbus
, withGtkWrapper ? false, wrapGAppsHook, gdk-pixbuf, glib, gtk3
, extraOptions ? [] # E.g.: [ "--verbose" ]
# Used by the NixOS module:
, isNixOS ? false
, enableXWayland ? true
, dbusSupport ? true
}:
assert extraSessionCommands != "" -> withBaseWrapper;
with lib;
let
sway = sway-unwrapped.override { inherit isNixOS enableXWayland; };
baseWrapper = writeShellScriptBin "sway" ''
set -o errexit
if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then
export XDG_CURRENT_DESKTOP=sway
${extraSessionCommands}
export _SWAY_WRAPPER_ALREADY_EXECUTED=1
fi
if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then
export DBUS_SESSION_BUS_ADDRESS
exec ${sway}/bin/sway "$@"
else
exec ${if !dbusSupport then "" else "${dbus}/bin/dbus-run-session"} ${sway}/bin/sway "$@"
fi
'';
in symlinkJoin {
name = "sway-${sway.version}";
paths = (optional withBaseWrapper baseWrapper)
++ [ sway ];
strictDeps = false;
nativeBuildInputs = [ makeWrapper ]
++ (optional withGtkWrapper wrapGAppsHook);
buildInputs = optionals withGtkWrapper [ gdk-pixbuf glib gtk3 ];
# We want to run wrapProgram manually
dontWrapGApps = true;
postBuild = ''
${optionalString withGtkWrapper "gappsWrapperArgsHook"}
wrapProgram $out/bin/sway \
${optionalString withGtkWrapper ''"''${gappsWrapperArgs[@]}"''} \
${optionalString (extraOptions != []) "${concatMapStrings (x: " --add-flags " + x) extraOptions}"}
'';
passthru = {
inherit (sway.passthru) tests;
providedSessions = [ "sway" ];
};
inherit (sway) meta;
}

View file

@ -0,0 +1,33 @@
{ lib, fetchFromGitHub, rustPlatform, libxcb, python3 }:
rustPlatform.buildRustPackage rec {
pname = "swaywsr";
version = "1.1.0";
src = fetchFromGitHub {
owner = "pedroscaff";
repo = pname;
rev = "6c4671c702f647395d983aaf607286db1c692db6";
sha256 = "0bmpbhyvgnbi5baj6v0wdxpdh9cnlzvcc44vh3vihmzsp6i5q05a";
};
cargoSha256 = "1pmkyw60ggn5filb47nyf97g1arrw7nfa4yjndnx35zw12mkj61d";
nativeBuildInputs = [ python3 ];
buildInputs = [ libxcb ];
# has not tests
doCheck = false;
meta = with lib; {
description = "Automatically change sway workspace names based on their contents";
longDescription = ''
Automatically sets the workspace names to match the windows on the workspace.
The chosen name for a workspace is a composite of the app_id or WM_CLASS X11
window property for each window in a workspace.
'';
homepage = "https://github.com/pedroscaff/swaywsr";
license = licenses.mit;
maintainers = [ maintainers.sebbadk ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchFromGitHub, asciidoc, libxcb, xcbutil, xcbutilkeysyms
, xcbutilwm
}:
stdenv.mkDerivation rec {
pname = "sxhkd";
version = "0.6.2";
src = fetchFromGitHub {
owner = "baskerville";
repo = "sxhkd";
rev = version;
sha256 = "1winwzdy9yxvxnrv8gqpigl9y0c2px27mnms62bdilp4x6llrs9r";
};
buildInputs = [ asciidoc libxcb xcbutil xcbutilkeysyms xcbutilwm ];
makeFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
description = "Simple X hotkey daemon";
homepage = "https://github.com/baskerville/sxhkd";
license = licenses.bsd2;
maintainers = with maintainers; [ vyp ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchgit, xorgproto, libX11, libXft, customConfig ? null, patches ? [ ] }:
stdenv.mkDerivation {
pname = "tabbed";
version = "unstable-2018-03-10";
src = fetchgit {
url = "https://git.suckless.org/tabbed";
rev = "b5f9ec647aae2d9a1d3bd586eb7523a4e0a329a3";
sha256 = "0frj2yjaf0mfjwgyfappksfir52mx2xxd3cdg5533m5d88vbmxss";
};
inherit patches;
postPatch = lib.optionalString (customConfig != null) ''
cp ${builtins.toFile "config.h" customConfig} ./config.h
'';
buildInputs = [ xorgproto libX11 libXft ];
makeFlags = [ "CC:=$(CC)" ];
installFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
homepage = "https://tools.suckless.org/tabbed";
description = "Simple generic tabbed fronted to xembed aware applications";
license = licenses.mit;
maintainers = with maintainers; [ vrthra ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,29 @@
{ lib, stdenv, ghcWithPackages, taffybar, makeWrapper, packages ? (x: []) }:
let
taffybarEnv = ghcWithPackages (self: [
self.taffybar
] ++ packages self);
in stdenv.mkDerivation {
pname = "taffybar-with-packages";
inherit (taffybarEnv) version;
nativeBuildInputs = [ makeWrapper ];
buildCommand = ''
mkdir -p $out/bin
makeWrapper ${taffybarEnv}/bin/taffybar $out/bin/taffybar \
--set NIX_GHC "${taffybarEnv}/bin/ghc"
'';
# Trivial derivation
preferLocalBuild = true;
allowSubstitutes = false;
# For hacking purposes
passthru.env = taffybarEnv;
buildInputs = [ taffybarEnv ];
shellHook = "eval $(egrep ^export ${taffybarEnv}/bin/ghc)";
inherit (taffybar) meta;
}

View file

@ -0,0 +1,28 @@
{ lib, stdenv, wlroots, pkg-config, wayland-scanner
, libxkbcommon, pixman, udev, wayland, wayland-protocols
}:
stdenv.mkDerivation {
pname = "tinywl";
inherit (wlroots) version src;
sourceRoot = "source/tinywl";
nativeBuildInputs = [ pkg-config wayland-scanner ];
buildInputs = [ libxkbcommon pixman udev wayland wayland-protocols wlroots ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp tinywl $out/bin
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/swaywm/wlroots/tree/master/tinywl";
description = ''A "minimum viable product" Wayland compositor based on wlroots'';
maintainers = with maintainers; [ qyliss ] ++ wlroots.meta.maintainers;
license = licenses.cc0;
inherit (wlroots.meta) platforms;
};
}

View file

@ -0,0 +1,52 @@
{ lib, stdenv, fetchFromGitHub
, libX11 }:
stdenv.mkDerivation rec {
pname = "tinywm";
version = "2014-04-22";
src = fetchFromGitHub {
owner = "mackstann";
repo = pname;
rev = "9d05612f41fdb8bc359f1fd9cc930bf16315abb1";
sha256 = "1s7r4f2d3lk1i8h089v2vyrr02hh0y9i3ihl9kqgk9s87hqw8q5b";
};
buildInputs = [ libX11 ];
dontConfigure = true;
buildPhase = ''
${stdenv.cc}/bin/cc -Wall -pedantic -I${libX11}/include tinywm.c -L${libX11}/lib -lX11 -o tinywm
'';
installPhase = ''
install -dm755 $out/bin $out/share/doc/${pname}-${version}
install -m755 tinywm -t $out/bin/
# The annotated source code is a piece of documentation
install -m644 annotated.c README -t $out/share/doc/${pname}-${version}
'';
meta = with lib;{
description = "A tiny window manger for X11";
longDescription = ''
TinyWM is a tiny window manager that I created as an exercise in
minimalism. It is also maybe helpful in learning some of the very basics
of creating a window manager. It is only around 50 lines of C. There is
also a Python version using python-xlib.
It lets you do four basic things:
- Move windows interactively with Alt+Button1 drag (left mouse button)
- Resize windows interactively with Alt+Button3 drag (right mouse button)
- Raise windows with Alt+F1 (not high on usability I know, but I needed a
keybinding in there somewhere)
- Focus windows with the mouse pointer (X does this on its own)
'';
homepage = "http://incise.org/tinywm.html";
maintainers = with maintainers; [ AndersonTorres ];
platforms = libX11.meta.platforms;
license = licenses.publicDomain;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, gdk-pixbuf, gtk2 }:
stdenv.mkDerivation rec {
pname = "trayer";
version = "1.1.8";
src = fetchFromGitHub {
owner = "sargon";
repo = "trayer-srg";
rev = "${pname}-${version}";
sha256 = "1mvhwaqa9bng9wh3jg3b7y8gl7nprbydmhg963xg0r076jyzv0cg";
};
postPatch = ''
patchShebangs configure
'';
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gdk-pixbuf gtk2 ];
makeFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
homepage = "https://github.com/sargon/trayer-srg";
license = licenses.mit;
description = "A lightweight GTK2-based systray for UNIX desktop";
platforms = platforms.linux;
maintainers = with maintainers; [ pSub ];
};
}

Some files were not shown because too many files have changed in this diff Show more