diff --git a/pkgs/applications/window-managers/owl/default.nix b/pkgs/applications/window-managers/owl/default.nix new file mode 100644 index 000000000000..ac42c38e7aaa --- /dev/null +++ b/pkgs/applications/window-managers/owl/default.nix @@ -0,0 +1,87 @@ +{ lib +, stdenv +, fetchFromGitHub +, gnustep +, libxkbcommon +, makeWrapper +, wayland +, wayland-scanner +, darwin +}: + +assert wayland.withLibraries; + +let + mkDerivation = if stdenv.isDarwin then stdenv.mkDerivation else gnustep.gsmakeDerivation; +in +mkDerivation { + pname = "owl"; + version = "unstable-2021-11-10"; + + src = fetchFromGitHub { + owner = "owl-compositor"; + repo = "owl"; + rev = "91abf02613cd2ddb97be58b5b6703240320233a0"; + hash = "sha256-a+TznasOVEzSNrs66/y91AeMRDEfyd+WO5mO811hLj0="; + }; + + # use pregenerated nib files because generating them requires Xcode + postPatch = lib.optionalString stdenv.isDarwin '' + sed -i "/ibtool/d" configure + mkdir -p build/Owl.app/Contents/Resources/English.lproj + cp ${./mac/MainMenu.nib} build/Owl.app/Contents/Resources/English.lproj/MainMenu.nib + cp ${./mac/OwlPreferences.nib} build/Owl.app/Contents/Resources/English.lproj/OwlPreferences.nib + ''; + + strictDeps = true; + + nativeBuildInputs = [ + makeWrapper + wayland-scanner + ] ++ lib.optionals stdenv.isDarwin [ + darwin.DarwinTools + darwin.bootstrap_cmds + ] ++ lib.optionals (!stdenv.isDarwin) [ + gnustep.make + ]; + + buildInputs = [ + libxkbcommon + wayland + ] ++ lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.Cocoa + ] ++ lib.optionals (!stdenv.isDarwin) [ + gnustep.back + gnustep.base + gnustep.gui + ]; + + preConfigure = '' + mkdir -p build + cd build + ''; + + configureScript = "../configure"; + + # error: "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now." + env.NIX_CFLAGS_COMPILE = lib.optionalString (!stdenv.isDarwin) "-fobjc-runtime=gnustep-2.0"; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{Applications,bin} + mv Owl.app $out/Applications + makeWrapper $out/{Applications/Owl.app${lib.optionalString stdenv.isDarwin "/Contents/MacOS"},bin}/Owl + + runHook postInstall + ''; + + meta = with lib; { + description = "A portable Wayland compositor in Objective-C"; + homepage = "https://github.com/owl-compositor/owl"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ wegank ]; + platforms = platforms.unix; + mainProgram = "Owl"; + }; +} diff --git a/pkgs/applications/window-managers/owl/mac/MainMenu.nib b/pkgs/applications/window-managers/owl/mac/MainMenu.nib new file mode 100644 index 000000000000..ea5c6f8fe3a0 Binary files /dev/null and b/pkgs/applications/window-managers/owl/mac/MainMenu.nib differ diff --git a/pkgs/applications/window-managers/owl/mac/OwlPreferences.nib b/pkgs/applications/window-managers/owl/mac/OwlPreferences.nib new file mode 100644 index 000000000000..14f187d144e5 Binary files /dev/null and b/pkgs/applications/window-managers/owl/mac/OwlPreferences.nib differ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5916d8dd930c..61f45316eb0a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30917,6 +30917,8 @@ with pkgs; offpunk = callPackage ../applications/networking/browsers/offpunk { }; + owl-compositor = callPackage ../applications/window-managers/owl { }; + p2pool = callPackage ../applications/misc/p2pool { }; pass2csv = python3Packages.callPackage ../tools/security/pass2csv { };