Dwm

From NixOS Wiki
Revision as of 10:27, 13 May 2021 by imported>Alexnortung (typo)

dwm is a window manager made by the suckless team

Installation

Installation is simple when using an xserver. In your configuration.nix just enable dwm like this:

services.xserver.windowManager.dwm.enable = true;


Creating overlay

To apply patches, and modify config file, you have to create an overlay for dwm which will be used to override config files and applying patches. This can be done like the following

nixpkgs.overlays = [
  (self: super: {
    dwn = super.dwm.overrideAttrs (oldAttrs: rec {
      # ...
    })
  })
];

Configuration

Missing. For now, refer to st, this explains how to modify config st, you have to do it in a similar way for dwm, but you have to use the overlay instead of the way it is done for st.

Patching

Patches can be applied by using the patches array:

nixpkgs.overlays = [
  (self: super: {
    dwn = super.dwm.overrideAttrs (oldAttrs: rec {
      patches = [
        #Your patches here
      ]
    })
  })
];

Patches can be applied in different ways and in combination with each other

Patches using local files

patches can be installed by just giving the path to a local diff files. for example:

nixpkgs.overlays = [
  (self: super: {
    dwn = super.dwm.overrideAttrs (oldAttrs: rec {
      patches = [
        ./path/to/local.diff
      ]
    })
  })
];

patches using fetchpatch

If you want to use fetchpatch you need to obtain the hash for the patch you want to apply .

To obtain the hash of a patch you need to run the command nix-prefetch-url <url> for example:

$ nix-prefetch-url https://dwm.suckless.org/patches/steam/dwm-steam-6.2.diff

This will output the hash that you need.

In your patches array you can then apply the patch in the following way using fetchpatch

nixpkgs.overlays = [
  (self: super: {
    dwm = super.dwm.overrideAttrs (oldAttrs: rec {
      patches = [
        (super.fetchpatch {
          url = "https://dwm.suckless.org/patches/steam/dwm-steam-6.2.diff";
          sha256 = "1ld1z3fh6p5f8gr62zknx3axsinraayzxw3rz1qwg73mx2zk5y1f";
        })
      ];
    });
  })
];

See also

st