diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix index 53285fbce877..d71738ea633f 100644 --- a/nixos/modules/services/x11/window-managers/default.nix +++ b/nixos/modules/services/x11/window-managers/default.nix @@ -26,6 +26,7 @@ in ./leftwm.nix ./lwm.nix ./metacity.nix + ./mlvwm.nix ./mwm.nix ./openbox.nix ./pekwm.nix diff --git a/nixos/modules/services/x11/window-managers/mlvwm.nix b/nixos/modules/services/x11/window-managers/mlvwm.nix new file mode 100644 index 000000000000..08dd04020296 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/mlvwm.nix @@ -0,0 +1,41 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.services.xserver.windowManager.mlvwm; + +in +{ + + options.services.xserver.windowManager.mlvwm = { + enable = mkEnableOption "Macintosh-like Virtual Window Manager"; + + configFile = mkOption { + default = null; + type = with types; nullOr path; + description = '' + Path to the mlvwm configuration file. + If left at the default value, $HOME/.mlvwmrc will be used. + ''; + }; + }; + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = [{ + name = "mlvwm"; + start = '' + ${pkgs.mlvwm}/bin/mlvwm ${optionalString (cfg.configFile != null) + "-f /etc/mlvwm/mlvwmrc" + } & + waitPID=$! + ''; + }]; + + environment.etc."mlvwm/mlvwmrc" = mkIf (cfg.configFile != null) { + source = cfg.configFile; + }; + + environment.systemPackages = [ pkgs.mlvwm ]; + }; +} diff --git a/pkgs/applications/window-managers/mlvwm/default.nix b/pkgs/applications/window-managers/mlvwm/default.nix new file mode 100644 index 000000000000..14170be53ac6 --- /dev/null +++ b/pkgs/applications/window-managers/mlvwm/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, fetchFromGitHub, gccmakedep, libX11, libXext, libXpm, imake, installShellFiles, ... }: + +stdenv.mkDerivation rec { + pname = "mlvwm"; + version = "0.9.3"; + + src = fetchFromGitHub { + owner = "morgant"; + repo = pname; + rev = version; + sha256 = "sha256-Sps2+XyMTcNuhQTLrW/8vSZIcSzMejoi1m64SK129YI="; + }; + + 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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6a9ad85faa60..12337c3d4b13 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25858,6 +25858,8 @@ in ocamlPackages = ocaml-ng.ocamlPackages_4_08; }; + mlvwm = callPackage ../applications/window-managers/mlvwm { }; + MMA = callPackage ../applications/audio/MMA { }; mmex = callPackage ../applications/office/mmex {