# This file is maintained by @IvanMalison and @LSLeary (github) # See NIX.md for an overview of module usage. { inputs = { flake-utils.url = "github:numtide/flake-utils"; git-ignore-nix.url = "github:hercules-ci/gitignore.nix/master"; xmonad.url = "github:xmonad/xmonad"; }; outputs = { self, flake-utils, nixpkgs, git-ignore-nix, xmonad }: with xmonad.lib; let hoverlay = final: prev: hself: hsuper: { xmonad-contrib = hself.callCabal2nix "xmonad-contrib" (git-ignore-nix.lib.gitignoreSource ./.) { }; }; defComp = if builtins.pathExists ./comp.nix then import ./comp.nix else { }; overlay = fromHOL hoverlay defComp; overlays = [ overlay (fromHOL xmonad.hoverlay defComp) ]; nixosModule = { config, lib, ... }: with lib; let cfg = config.services.xserver.windowManager.xmonad; comp = { inherit (cfg.flake) prefix compiler; }; in { config = mkIf (cfg.flake.enable && cfg.enableContribAndExtras) { nixpkgs.overlays = [ (fromHOL hoverlay comp) ]; }; }; nixosModules = [ nixosModule ] ++ xmonad.nixosModules; in flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system overlays; }; hpkg = pkgs.lib.attrsets.getAttrFromPath (hpath defComp) pkgs; modifyDevShell = if builtins.pathExists ./develop.nix then import ./develop.nix else _: x: x; in rec { devShell = hpkg.shellFor (modifyDevShell pkgs { packages = p: [ p.xmonad-contrib ]; nativeBuildInputs = [ pkgs.cabal-install ]; }); defaultPackage = hpkg.xmonad-contrib; modernise = xmonad.modernise.${system}; }) // { inherit hoverlay overlay overlays nixosModule nixosModules; } ; }