utoy/flake.nix
2023-04-02 15:30:58 +02:00

71 lines
2.0 KiB
Nix

{
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)";
'';
};
};
}