diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 119 |
1 files changed, 97 insertions, 22 deletions
@@ -2,35 +2,110 @@ description = "Main library for my webpage"; inputs = { nixpkgs.url = "github:nixos/nixpkgs"; - flake-utils.url = "github:numtide/flake-utils"; - nix-filter.url = "github:numtide/nix-filter"; + flake-parts.url = "github:hercules-ci/flake-parts"; + systems.url = "github:nix-systems/default"; + haskell-flake.url = "github:srid/haskell-flake"; + # flake-utils.url = "github:numtide/flake-utils"; + # nix-filter.url = "github:numtide/nix-filter"; }; - outputs = { self, nixpkgs, flake-utils, nix-filter, ... }: { + outputs = inputs@{self, flake-parts, nixpkgs, ... }: flake-parts.lib.mkFlake { inherit self inputs; } { + systems = import inputs.systems; - overlays.default = import ./nix/overlay.nix { inherit nix-filter; }; + imports = [ + inputs.haskell-flake.flakeModule + ]; - } // flake-utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs { + flake.lib = { + rubberWith = { pkgs, texPath }: pkgs.symlinkJoin rec { + name = "rubber"; + nativeBuildInputs = [ + pkgs.makeWrapper + ]; + paths = [ + pkgs.rubber + ]; + postBuild = '' + for x in $out/bin/*; do + wrapProgram "$x" --prefix PATH : ${pkgs.lib.makeBinPath paths} + done + ''; + }; + + hakyllWith = { pkgs, site, paths ? [], texPath ? null }: pkgs.symlinkJoin { + inherit (site) name; + nativeBuildInputs = [ + pkgs.makeWrapper + ]; + paths = [ + (pkgs.haskell.lib.compose.justStaticExecutables site) + pkgs.rsync + ] ++ paths ++ pkgs.lib.optional (texPath != null) (self.lib.rubberWith { inherit pkgs texPath; }); + postBuild = '' + for x in $out/bin/*; do + wrapProgram "$x" --prefix PATH : ${pkgs.lib.makeBinPath paths} + done + ''; + }; + }; + + flake.overlays.default = final: prev: { + haskellPackages = prev.haskellPackages.extend (hfinal: _hprev: { + www-main = hfinal.callCabal2nix "www-main" ./. {}; + }); + }; + + perSystem = { self', config, pkgs, system, ... }: { + _module.args.pkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; - in { - packages = { - inherit (pkgs) www-main; - default = pkgs.www-main; - }; + # haskellProjects.default = { + # projectRoot = ./.; + # }; - devShells.default = pkgs.haskellPackages.shellFor { - packages = _: []; - # packages = p: [ p.www-main ]; - withHoogle = true; - buildInputs = with pkgs.haskellPackages; [ - cabal-install - hpack - pkgs.zlib - pkgs.icu - ]; + packages = rec { + default = www-main-exe; + www-main-exe = self.lib.hakyllWith { + inherit pkgs; + # site = config.packages.www-main; + site = pkgs.haskellPackages.www-main; + texPath = [ + pkgs.texlive.combined.scheme-full + ]; + }; }; - }); + }; + }; + + # outputs = { self, nixpkgs, flake-utils, nix-filter, ... }: { + # + # overlays.default = import ./nix/overlay.nix { inherit nix-filter; }; + # + # } // flake-utils.lib.eachDefaultSystem (system: let + # pkgs = import nixpkgs { + # inherit system; + # overlays = [ self.overlays.default ]; + # }; + # in { + # packages = { + # inherit (pkgs) www-main; + # default = pkgs.www-main; + # }; + # + # devShells.default = pkgs.haskellPackages.shellFor { + # packages = _: []; + # # packages = p: [ p.www-main ]; + # withHoogle = true; + # buildInputs = with pkgs.haskellPackages; [ + # cabal-install + # hpack + # hlint + # fast-tags + # pkgs.haskell-language-server + # pkgs.zlib + # pkgs.icu + # ]; + # }; + # }); } |
