{ description = "Build my xmonad config"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs, }: let forAllSystems = function: nixpkgs.lib.genAttrs ["x86_64-linux" "aarch64-linux"] (system: function rec { inherit system; compilerVersion = "ghc966"; pkgs = nixpkgs.legacyPackages.${system}; hsPkgs = pkgs.haskell.packages.${compilerVersion}.override { overrides = hfinal: hprev: { # Internal Packages xmonad-config = hfinal.callCabal2nix "xmonad-config" ./. {}; xmonad-contrib = pkgs.haskell.lib.compose.doJailbreak (pkgs.haskell.lib.compose.overrideCabal (drv: { version = "0.18.1"; sha256 = "sha256-BXOdIErNhNNS3slNBhiskH/zljVREjx0fu836BOGZDI="; }) hprev.xmonad-contrib); xmonad-extras = pkgs.haskell.lib.compose.doJailbreak (pkgs.haskell.lib.compose.overrideCabal (drv: { version = "0.17.2"; sha256 = "sha256-KAqC6sDbvd79lhyByfbA0cYwSINJ+JkivsieUE2rm2U="; }) hprev.xmonad-extras); }; }; }); in { formatter = forAllSystems ({pkgs, ...}: pkgs.alejandra); packages = forAllSystems ({hsPkgs, ...}: ({ default = hsPkgs.xmonad-config; })); devShells = forAllSystems ({ hsPkgs, pkgs, ... }: { default = hsPkgs.shellFor { name = "xmonad-config"; packages = p: [ p.xmonad-config ]; buildInputs = with pkgs; [ hsPkgs.haskell-language-server hsPkgs.cabal-install cabal2nix haskellPackages.ghcid ]; }; }); }; }