{ inputs = { nixpkgs.url = "flake:nixpkgs"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; gtk-helpers.url = "github:keera-studios/gtk-helpers"; gtk-helpers.flake = false; }; outputs = inputs: let pkg = "arpeggigon"; inherit (inputs.nixpkgs) lib; forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec { inherit system; pkgs = inputs.nixpkgs.legacyPackages.${system}; # pkgs.haskellPackages currently defaults to GHC 9.0.1 # Use something like pkgs.haskell.packages.ghc810 for a specific GHC version. haskellPackages = pkgs.haskellPackages.extend (with pkgs.haskell.lib; hfinal: hsuper: { ${pkg} = buildFromSdist (hfinal.callCabal2nix pkg ./. { }); gtk-helpers = hfinal.callCabal2nix "gtk-helpers" ( pkgs.applyPatches { name = "gtk-helpers"; src = inputs.gtk-helpers; patches = map pkgs.fetchpatch [ { meta.description = "Fix build with GHC 9"; url = "https://github.com/keera-studios/gtk-helpers/pull/13.diff"; sha256 = "sha256-4wgLvvloBwC4zCKmfDQKCh3CrtRJ4zgLMaoEPJvF6fQ="; } ]; } + "/gtk2" ) { }; keera-hails-reactivevalues = dontCheck (doJailbreak (unmarkBroken hsuper.keera-hails-reactivevalues)); }); }); in rec { # nix -L build defaultPackage = forAllSystems ({ haskellPackages, ... }: haskellPackages.${pkg}); packages = forAllSystems ({ haskellPackages, ... }: { }); # nix -L develop or direnv allow devShell = forAllSystems ({ pkgs, haskellPackages, system, ... }: haskellPackages.shellFor { packages = ps: [ ps.${pkg} ]; nativeBuildInputs = [ haskellPackages.cabal-install #haskellPackages.ghcid #haskellPackages.haskell-language-server #haskellPackages.hlint #haskellPackages.hsc2hs #pkgs.git-chglog #pkgs.reuse #pkgs.gobject-introspection #(pkgs.python3.withPackages (p: with p; [ # pygobject3 #])) ]; withHoogle = false; inherit (checks.${system}.pre-commit-check) shellHook; }); # nix flake check checks = forAllSystems (args: with args; { pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { src = ./.; #settings.ormolu.cabalDefaultExtensions = true; settings.ormolu.defaultExtensions = [ "ImportQualifiedPost" "TypeApplications" ]; hooks = { hlint.enable = true; nixpkgs-fmt.enable = true; fourmolu.enable = true; cabal-fmt.enable = true; }; }; }); }; }