diff options
| author | Chris Wells <chris@mathematicaster.org> | 2026-02-08 12:19:55 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2026-02-08 12:19:55 -0600 |
| commit | 8711224f2fbec7fbf7b0633f3e35fee051e030cb (patch) | |
| tree | 78b5bc4c3eca03b57353ee745006536dd4d05552 /flake.nix | |
| parent | bcc218171696a4830e5d3f173ce86ddb73164433 (diff) | |
| download | main-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.nix | 66 |
1 files changed, 62 insertions, 4 deletions
@@ -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" + ''; + }) ]; }; }; |
