summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2026-02-08 12:19:55 -0600
committerChris Wells <chris@mathematicaster.org>2026-02-08 12:19:55 -0600
commit8711224f2fbec7fbf7b0633f3e35fee051e030cb (patch)
tree78b5bc4c3eca03b57353ee745006536dd4d05552 /flake.nix
parentbcc218171696a4830e5d3f173ce86ddb73164433 (diff)
downloadmain-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar.gz
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar.bz2
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar.lz
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar.xz
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.tar.zst
main-8711224f2fbec7fbf7b0633f3e35fee051e030cb.zip
Utilities for adding assets for testing as well as nix script for
building and deploying
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix66
1 files changed, 62 insertions, 4 deletions
diff --git a/flake.nix b/flake.nix
index 66caa92..79c9327 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,9 +5,16 @@
flake-parts.url = "github:hercules-ci/flake-parts";
systems.url = "github:nix-systems/default";
nix-filter.url = "github:numtide/nix-filter";
+ www-assets = {
+ url = "git://git.mathematicaster.org/www/assets.git";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ flake-parts.follows = "flake-parts";
+ };
+ };
};
- outputs = inputs@{self, flake-parts, nixpkgs, ... }: flake-parts.lib.mkFlake { inherit self inputs; } {
+ outputs = inputs@{self, flake-parts, nixpkgs, nix-filter, ... }: flake-parts.lib.mkFlake { inherit self inputs; } {
systems = import inputs.systems;
flake.lib = {
@@ -45,8 +52,17 @@
flake.overlays.default = final: prev: {
haskellPackages = prev.haskellPackages.extend (hfinal: _hprev: {
- www-main = let
- src = ./.;
+ www-main = let
+ src = nix-filter {
+ root = ./.;
+ include = [
+ "src"
+ "app"
+ "templates"
+ "package.yaml"
+ "www-main.cabal"
+ ];
+ };
in hfinal.callCabal2nix "www-main" src {};
});
};
@@ -54,7 +70,10 @@
perSystem = { self', config, pkgs, system, ... }: {
_module.args.pkgs = import nixpkgs {
inherit system;
- overlays = [ self.overlays.default ];
+ overlays = [
+ self.overlays.default
+ inputs.www-assets.overlays.default
+ ];
};
# haskellProjects.default = {
# projectRoot = ./.;
@@ -70,6 +89,22 @@
pkgs.texlive.combined.scheme-full
];
};
+ site = pkgs.runCommandLocal "build-site" {} ''
+ mkdir $out
+ cd $out
+ cp -r ${./data} data
+ cp -r ${./www} www
+ mkdir assets
+
+ ${www-main-exe}/bin/www-main rebuild
+ '';
+ deploy = pkgs.writeShellApplication {
+ name = "deploy";
+ text = ''
+ cd ${site}
+ ${www-main-exe}/bin/www-main deploy
+ '';
+ };
};
devShells.default = pkgs.haskellPackages.shellFor {
@@ -83,6 +118,29 @@
pkgs.haskell-language-server
pkgs.zlib
pkgs.icu
+ (pkgs.writeShellApplication {
+ name = "site-rebuild";
+ text = ''
+ nix run ${self}#www-main-exe -- rebuild "''${@}"
+ '';
+ })
+ (pkgs.writeShellApplication {
+ name = "site-watch";
+ text = ''
+ nix run ${self}#www-main-exe -- watch "''${@}"
+ '';
+ })
+ (pkgs.writeShellApplication {
+ name = "mkassets";
+ text = ''
+ toplevel="$(git rev-parse --show-toplevel)"
+ cd "$toplevel"
+
+ dir="$toplevel/assets"
+ rm -rf "$dir"
+ cp -r "${pkgs.www-assets}" "$dir"
+ '';
+ })
];
};
};