From 4265d646d354daf57e1d04b780bcf028373a68e8 Mon Sep 17 00:00:00 2001 From: Alexis Hildebrandt Date: Fri, 11 Apr 2025 21:39:33 +0200 Subject: [PATCH 1/3] drawterm-cocoa: init at 0-unstable-2025-03-18 --- pkgs/tools/admin/drawterm/default.nix | 14 +++++++++++--- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/admin/drawterm/default.nix b/pkgs/tools/admin/drawterm/default.nix index ef46917fbee3..98cf0ea56751 100644 --- a/pkgs/tools/admin/drawterm/default.nix +++ b/pkgs/tools/admin/drawterm/default.nix @@ -5,6 +5,7 @@ unstableGitUpdater, installShellFiles, makeWrapper, + apple-sdk_13, xorg, pkg-config, wayland-scanner, @@ -39,6 +40,7 @@ stdenv.mkDerivation { wayland-scanner ]; unix = [ makeWrapper ]; + osx-cocoa = [ ]; } ."${config}" or (throw "unsupported CONF"); @@ -55,11 +57,11 @@ stdenv.mkDerivation { xorg.libX11 xorg.libXt ]; + osx-cocoa = [ apple-sdk_13 ]; } ."${config}" or (throw "unsupported CONF"); - # TODO: macos - makeFlags = [ "CONF=${config}" ]; + makeFlags = [ "CONF=${config}" ] ++ lib.optional (config == "osx-cocoa") "CC=clang"; installPhase = { @@ -72,6 +74,12 @@ stdenv.mkDerivation { install -Dm755 -t $out/bin/ drawterm.bin makeWrapper ${pulseaudio}/bin/padsp $out/bin/drawterm --add-flags $out/bin/drawterm.bin ''; + osx-cocoa = '' + mkdir -p $out/{Applications,bin} + mv gui-cocoa/drawterm.app $out/Applications/ + mv drawterm $out/Applications/drawterm.app/ + ln -s $out/Applications/drawterm.app/drawterm $out/bin/ + ''; } ."${config}" or (throw "unsupported CONF") + '' @@ -88,7 +96,7 @@ stdenv.mkDerivation { homepage = "https://drawterm.9front.org/"; license = licenses.mit; maintainers = with maintainers; [ moody ]; - platforms = platforms.linux; + platforms = platforms.linux ++ platforms.darwin; mainProgram = "drawterm"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3ed4554f61ac..1f1415a39d75 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14131,6 +14131,7 @@ with pkgs; drawterm = callPackage ../tools/admin/drawterm { config = "unix"; }; drawterm-wayland = callPackage ../tools/admin/drawterm { config = "linux"; }; + drawterm-cocoa = callPackage ../tools/admin/drawterm { config = "osx-cocoa"; }; droopy = python3Packages.callPackage ../applications/networking/droopy { }; From 399c9e5999f5d7a168c741a8ef6f1ffdb12e2405 Mon Sep 17 00:00:00 2001 From: Alexis Hildebrandt Date: Fri, 11 Apr 2025 21:57:19 +0200 Subject: [PATCH 2/3] drawterm: migrate to by-name --- .../default.nix => by-name/dr/drawterm/package.nix} | 0 pkgs/top-level/all-packages.nix | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename pkgs/{tools/admin/drawterm/default.nix => by-name/dr/drawterm/package.nix} (100%) diff --git a/pkgs/tools/admin/drawterm/default.nix b/pkgs/by-name/dr/drawterm/package.nix similarity index 100% rename from pkgs/tools/admin/drawterm/default.nix rename to pkgs/by-name/dr/drawterm/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1f1415a39d75..515377109edf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14129,9 +14129,9 @@ with pkgs; buildServerGui = false; }; - drawterm = callPackage ../tools/admin/drawterm { config = "unix"; }; - drawterm-wayland = callPackage ../tools/admin/drawterm { config = "linux"; }; - drawterm-cocoa = callPackage ../tools/admin/drawterm { config = "osx-cocoa"; }; + drawterm = callPackage ../by-name/dr/drawterm/package.nix { config = "unix"; }; + drawterm-wayland = callPackage ../by-name/dr/drawterm/package.nix { config = "linux"; }; + drawterm-cocoa = callPackage ../by-name/dr/drawterm/package.nix { config = "osx-cocoa"; }; droopy = python3Packages.callPackage ../applications/networking/droopy { }; From aabb4c5b41675c35796f88cafb0c823e707b1252 Mon Sep 17 00:00:00 2001 From: Alexis Hildebrandt Date: Sat, 12 Apr 2025 22:23:41 +0200 Subject: [PATCH 3/3] drawterm: Refactor to introduce withWayland option --- pkgs/by-name/dr/drawterm/package.nix | 102 +++++++++++++-------------- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 52 insertions(+), 54 deletions(-) diff --git a/pkgs/by-name/dr/drawterm/package.nix b/pkgs/by-name/dr/drawterm/package.nix index 98cf0ea56751..cce9fef8ec3f 100644 --- a/pkgs/by-name/dr/drawterm/package.nix +++ b/pkgs/by-name/dr/drawterm/package.nix @@ -15,10 +15,12 @@ libxkbcommon, wlr-protocols, pulseaudio, - config, nixosTests, + withWayland ? false, }: - +let + withXorg = !(withWayland || stdenv.hostPlatform.isDarwin); +in stdenv.mkDerivation { pname = "drawterm"; version = "0-unstable-2025-03-18"; @@ -33,57 +35,55 @@ stdenv.mkDerivation { enableParallelBuilding = true; strictDeps = true; nativeBuildInputs = - [ installShellFiles ] - ++ { - linux = [ - pkg-config - wayland-scanner - ]; - unix = [ makeWrapper ]; - osx-cocoa = [ ]; - } - ."${config}" or (throw "unsupported CONF"); + [ + installShellFiles + makeWrapper + ] + ++ lib.optionals withWayland [ + pkg-config + wayland-scanner + ]; buildInputs = - { - linux = [ - pipewire - wayland - wayland-protocols - libxkbcommon - wlr-protocols - ]; - unix = [ - xorg.libX11 - xorg.libXt - ]; - osx-cocoa = [ apple-sdk_13 ]; - } - ."${config}" or (throw "unsupported CONF"); + lib.optionals withWayland [ + pipewire + wayland + wayland-protocols + libxkbcommon + wlr-protocols + ] + ++ lib.optionals withXorg [ + xorg.libX11 + xorg.libXt + ] + ++ lib.optional stdenv.hostPlatform.isDarwin apple-sdk_13; - makeFlags = [ "CONF=${config}" ] ++ lib.optional (config == "osx-cocoa") "CC=clang"; + makeFlags = + lib.optional withWayland "CONF=linux" + ++ lib.optional (!(withWayland || stdenv.hostPlatform.isDarwin)) "CONF=unix" + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + "CONF=osx-cocoa" + "CC=clang" + ]; installPhase = - { - linux = '' - install -Dm755 -t $out/bin/ drawterm - ''; - unix = '' - # wrapping the oss output with pulse seems to be the easiest - mv drawterm drawterm.bin - install -Dm755 -t $out/bin/ drawterm.bin - makeWrapper ${pulseaudio}/bin/padsp $out/bin/drawterm --add-flags $out/bin/drawterm.bin - ''; - osx-cocoa = '' - mkdir -p $out/{Applications,bin} - mv gui-cocoa/drawterm.app $out/Applications/ - mv drawterm $out/Applications/drawterm.app/ - ln -s $out/Applications/drawterm.app/drawterm $out/bin/ - ''; - } - ."${config}" or (throw "unsupported CONF") - + '' + '' installManPage drawterm.1 + '' + + lib.optionalString withWayland '' + install -Dm755 -t $out/bin/ drawterm + '' + + lib.optionalString (!(withWayland || stdenv.hostPlatform.isDarwin)) '' + # wrapping the oss output with pulse seems to be the easiest + mv drawterm drawterm.bin + install -Dm755 -t $out/bin/ drawterm.bin + makeWrapper ${pulseaudio}/bin/padsp $out/bin/drawterm --add-flags $out/bin/drawterm.bin + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir -p $out/{Applications,bin} + mv gui-cocoa/drawterm.app $out/Applications/ + mv drawterm $out/Applications/drawterm.app/ + ln -s $out/Applications/drawterm.app/drawterm $out/bin/ ''; passthru = { @@ -91,12 +91,12 @@ stdenv.mkDerivation { tests = nixosTests.drawterm; }; - meta = with lib; { + meta = { description = "Connect to Plan 9 CPU servers from other operating systems"; homepage = "https://drawterm.9front.org/"; - license = licenses.mit; - maintainers = with maintainers; [ moody ]; - platforms = platforms.linux ++ platforms.darwin; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ moody ]; + platforms = with lib.platforms; linux ++ darwin; mainProgram = "drawterm"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 515377109edf..f669b57cf0dd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14129,9 +14129,7 @@ with pkgs; buildServerGui = false; }; - drawterm = callPackage ../by-name/dr/drawterm/package.nix { config = "unix"; }; - drawterm-wayland = callPackage ../by-name/dr/drawterm/package.nix { config = "linux"; }; - drawterm-cocoa = callPackage ../by-name/dr/drawterm/package.nix { config = "osx-cocoa"; }; + drawterm-wayland = callPackage ../by-name/dr/drawterm/package.nix { withWayland = true; }; droopy = python3Packages.callPackage ../applications/networking/droopy { };