diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..f09754d02 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*.{nix}] +indent_style = space +indent_size = 2 + +[*.hs] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true +charset = utf-8 +end_of_line = lf diff --git a/flake.nix b/flake.nix index 931b69197..c42776e5f 100644 --- a/flake.nix +++ b/flake.nix @@ -5,44 +5,86 @@ 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 ./.) { }; + devenv = { + url = "github:cachix/devenv"; }; - 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) ]; - }; + }; + outputs = inputs @ { + self, + flake-utils, + nixpkgs, + git-ignore-nix, + xmonad, + devenv, + }: + with xmonad.lib; let + hoverlay = final: prev: hself: hsuper: { + xmonad-contrib = + hself.callCabal2nix "xmonad-contrib" + (git-ignore-nix.lib.gitignoreSource ./.) {}; }; - 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; } ; + 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; + in rec { + devShell = devenv.lib.mkShell { + inherit inputs pkgs; + modules = [ + ({ + pkgs, + lib, + ... + }: let + libs = with pkgs; [ + xorg.libxcb + xorg.libXrender + xorg.libXrandr + xorg.libX11 + xorg.libXScrnSaver + xorg.libXext + ]; + in { + # This is your devenv configuration + packages = let + cabal = lib.getExe pkgs.haskellPackages.cabal-install; + in + [ + (pkgs.writers.writeDashBin "clean" "${cabal} clean") + (pkgs.writers.writeDashBin "clean-build" "${cabal} clean && ${cabal} build") + ] + ++ libs; + + env.LD_LIBRARY_PATH = lib.makeLibraryPath libs; + + languages.haskell = { + enable = true; + }; + }) + ]; + }; + defaultPackage = hpkg.xmonad-contrib; + modernise = xmonad.modernise.${system}; + }) + // {inherit hoverlay overlay overlays nixosModule nixosModules;}; }