{ description = "Unicode toy"; inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; outputs = { self, nixpkgs }: let overlay = import ./nix/overlay.nix; settings = import ./nix/settings.nix; haskellDeps = import ./nix/haskell-deps.nix; pkgs = nixpkgs.legacyPackages.x86_64-linux.extend overlay; haskellPackages = pkgs.haskell.packages."${settings.ghc}"; stack = pkgs.stdenv.mkDerivation { pname = "stack"; version = "0"; dontUnpack = true; dontConfigure = true; dontBuild = true; nativeBuildInputs = [ pkgs.makeWrapper ]; installPhase = '' makeWrapper ${pkgs.stack}/bin/stack $out/bin/stack \ --add-flags '--no-nix --no-install-ghc' ''; }; in { packages.x86_64-linux.stack = stack; packages.x86_64-linux.utoy = let utoy = { mkDerivation }: mkDerivation { version = "0.5"; pname = "utoy"; license = pkgs.lib.licenses.mit; src = let buildFiles = [ ./LICENSE ./utoy.cabal ./Setup.hs ./app ./src ./static ./test ]; in pkgs.lib.sources.cleanSourceWith { src = ./.; filter = path: _type: pkgs.lib.any (prefix: pkgs.lib.hasPrefix (toString prefix) path) buildFiles; }; libraryHaskellDepends = haskellDeps haskellPackages; }; in pkgs.haskell.lib.justStaticExecutables (haskellPackages.callPackage utoy {}); packages.x86_64-linux.default = self.packages.x86_64-linux.utoy; devShells.default = pkgs.mkShell { buildInputs = [ stack ]; shellHook = '' PS1+=" (utoy)"; ''; }; }; }