So I’m trying to build a haskell project locally through nix using flakes and haskell.nix.
{
description = "Package build for lastpass-tui";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.haskellNix.url = "github:input-output-hk/haskell.nix/master";
outputs = { self, haskellNix, nixpkgs }: {
# setup derivation for x86_64-linux
defaultPackage.x86_64-linux =
let pkgs = haskellNix.legacyPackages."x86_64-linux";
drv = pkgs.haskell-nix.project {
src = pkgs.haskell-nix.haskellLib.cleanGit {
name = "lastpass-tui";
src = ./.;
};
compiler-nix-name = "ghc884";
};
in drv.lastpass-tui.components.exes.lpt;
};
}
However I’m running into an error. Whenever I try to nix build
I get the error attribute 'components' missing in drv.components.exes.lpt
. According to the haskell.nix docs you’re supposed to run the command nix-build -A your-package-name.components.exes.your-exe-name
. So I’ve tried to access the your-exe-name
attribute directly inside the flake for the defaultPackage.x86_64-linux
attribute, but nix build
fails with the previously mentioned attribute error.Perhaps it’s possible to pass some args to nix build
like they’ve done with nix-build
in the docs, but the --attr / -A
flag no longer exists. nix build .#lastpass-tui.components.exes.lpt
didn’t work either and fails with the error
flake 'git+file:///home/skykanin/Projects/lastpass-tui' does not provide attribute 'packages.x86_64-linux.lastpass-tui.components.exes.lpt', 'legacyPackages.x86_64-linux.lastpass-tui.components.exes.lpt' or 'lastpass-tui.components.exes.lpt'
So I’m not sure how to translate the example in the docs to nix flakes.
EDIT: I’ve now tried building the project using haskell.nix
, but this time without the flake just following the docs. Running nix-build -A your-package-name.components.exes.your-exe-name
works just fine so the trouble here is just translating this to the flake.