summary refs log tree commit diff
path: root/pkgs/applications/window-managers/i3
diff options
context:
space:
mode:
authorBenno Fünfstück <benno.fuenfstueck@gmail.com>2017-07-01 19:53:11 +0200
committerGitHub <noreply@github.com>2017-07-01 19:53:11 +0200
commitbe4fc9ec1fb5a407f9a7a028c9a7ee235bb80601 (patch)
tree7042466858d9c86cb2784f60566fc927114f4b05 /pkgs/applications/window-managers/i3
parent36b1d11188dd935a1a24e53df9eb454273562225 (diff)
parentdd4c1e2b019a31ee7362f0d9a042f13e1038f008 (diff)
downloadnixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar.gz
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar.bz2
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar.lz
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar.xz
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.tar.zst
nixlib-be4fc9ec1fb5a407f9a7a028c9a7ee235bb80601.zip
Merge pull request #26983 from Ma27/i3/allow-custom-configuration
i3: add `configFile` to enable cutom configuration locations
Diffstat (limited to 'pkgs/applications/window-managers/i3')
-rw-r--r--pkgs/applications/window-managers/i3/default.nix121
1 files changed, 67 insertions, 54 deletions
diff --git a/pkgs/applications/window-managers/i3/default.nix b/pkgs/applications/window-managers/i3/default.nix
index df7ba69c5c5f..a4eb850f9390 100644
--- a/pkgs/applications/window-managers/i3/default.nix
+++ b/pkgs/applications/window-managers/i3/default.nix
@@ -1,72 +1,85 @@
 { fetchurl, stdenv, which, pkgconfig, makeWrapper, libxcb, xcbutilkeysyms
 , xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre, libev
 , yajl, xcb-util-cursor, coreutils, perl, pango, perlPackages, libxkbcommon
-, xorgserver, xvfb_run }:
+, xorgserver, xvfb_run, symlinkJoin, configFile ? null }:
 
-stdenv.mkDerivation rec {
-  name = "i3-${version}";
+let
   version = "4.13";
 
-  src = fetchurl {
-    url = "http://i3wm.org/downloads/${name}.tar.bz2";
-    sha256 = "12ngz32swh9n85xy0cz1lq16aqi9ys5hq19v589q9a97wn1k3hcl";
-  };
+  i3 = stdenv.mkDerivation rec {
+    name = "i3-${version}";
 
-  nativeBuildInputs = [ which pkgconfig makeWrapper ];
+    src = fetchurl {
+      url = "http://i3wm.org/downloads/${name}.tar.bz2";
+      sha256 = "12ngz32swh9n85xy0cz1lq16aqi9ys5hq19v589q9a97wn1k3hcl";
+    };
 
-  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.TestMore perlPackages.InlineC
-    xorgserver xvfb_run
-  ];
+    nativeBuildInputs = [ which pkgconfig makeWrapper ];
 
-  configureFlags = [ "--disable-builddir" ];
+    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.TestMore perlPackages.InlineC
+      xorgserver xvfb_run
+    ];
 
-  enableParallelBuilding = true;
+    configureFlags = [ "--disable-builddir" ];
 
-  postPatch = ''
-    patchShebangs .
-  '';
+    enableParallelBuilding = true;
 
-  # 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.system == "x86_64-linux";
-
-  checkPhase = stdenv.lib.optionalString (stdenv.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
-  '';
+    postPatch = ''
+      patchShebangs .
+    '';
 
-  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
-  '';
+    # 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.system == "x86_64-linux";
+
+    checkPhase = stdenv.lib.optionalString (stdenv.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
+    '';
 
-  separateDebugInfo = true;
-
-  meta = with stdenv.lib; {
-    description = "A tiling window manager";
-    homepage    = "http://i3wm.org";
-    maintainers = with maintainers; [ garbas modulistic fpletz ];
-    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.
+    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
     '';
+
+    separateDebugInfo = true;
+
+    meta = with stdenv.lib; {
+      description = "A tiling window manager";
+      homepage    = "http://i3wm.org";
+      maintainers = with maintainers; [ garbas modulistic fpletz ];
+      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.
+      '';
+    };
+
   };
+in if configFile == null then i3 else symlinkJoin {
+  name = "i3-with-config-${version}";
+  paths = [ i3 ];
+
+  buildInputs = [ makeWrapper ];
 
+  postBuild = ''
+      wrapProgram $out/bin/i3 \
+      --add-flags "-c ${configFile}"
+  '';
 }