summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2026-01-20 17:00:40 -0600
committerChris Wells <chris@mathematicaster.org>2026-01-20 17:00:40 -0600
commit5d83e36ef8210d1514259c89ff97a25c4d19600c (patch)
treebb15b5d2f15e671b6963b1088a501e0dee758f2e /flake.nix
parent8424579b0c79038510c3e763b1154cb6aea5cdfe (diff)
downloadmain-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar.gz
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar.bz2
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar.lz
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar.xz
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.tar.zst
main-5d83e36ef8210d1514259c89ff97a25c4d19600c.zip
Technically working, but I need a cleaner way to pass personA and
journalA into a list context...
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix119
1 files changed, 97 insertions, 22 deletions
diff --git a/flake.nix b/flake.nix
index 8133e51..05115eb 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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
+ # ];
+ # };
+ # });
}