{ 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}"; ghc = haskellPackages.ghcWithPackages haskellDeps; stack = pkgs.stdenv.mkDerivation { name = "stack"; dontUnpack = true; dontConfigure = true; dontBuild = true; nativeBuildInputs = [ pkgs.makeWrapper ]; installPhase = '' makeWrapper ${pkgs.stack}/bin/stack $out/bin/stack \ --prefix PATH : ${ghc}/bin \ --add-flags '--no-nix --system-ghc --no-install-ghc' ''; }; 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; }; utoy = pkgs.haskell.lib.justStaticExecutables (haskellPackages.callPackage utoy' {}); in { packages.x86_64-linux = { inherit ghc; inherit stack; inherit utoy; docker = pkgs.dockerTools.buildImage { name = "git.pbrinkmeier.de/paul/utoy"; tag = utoy.version; config.Cmd = [ "${utoy}/bin/utoy" ]; }; default = utoy; }; devShells.x86_64-linux.default = pkgs.mkShell { packages = [ stack ghc haskellPackages.haskell-language-server haskellPackages.implicit-hie ]; shellHook = '' PS1+="(utoy) "; ''; }; }; }