{ description = "Personal XMonad configuration."; inputs = { nixpkgs = { type = "github"; owner = "NixOS"; repo = "nixpkgs"; ref = "nixpkgs-unstable"; }; flake-utils = { type = "github"; owner = "numtide"; repo = "flake-utils"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-compat = { type = "github"; owner = "edolstra"; repo = "flake-compat"; ref = "master"; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; project = returnShellEnv: pkgs.haskellPackages.developPackage { inherit returnShellEnv; name = "xmonad-ng"; root = ./.; overrides = self: _: with pkgs.haskell.lib; let version = "0.17.0"; in { xmonad = dontCheck (self.callHackage "xmonad" version { }); xmonad-contrib = dontCheck (self.callHackage "xmonad-contrib" version { }); }; modifier = drv: pkgs.haskell.lib.addBuildTools drv (with pkgs.haskellPackages; [ brittany cabal-install haskell-language-server hlint hpack stack ]); }; in { defaultPackage = project false; overlay = _: _: { xmonad-ng = self.defaultPackage.${system}; }; devShell = project true; }); }