aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix80
1 files changed, 52 insertions, 28 deletions
diff --git a/flake.nix b/flake.nix
index 79e6953..a752a6e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -8,39 +8,63 @@
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
- let pkgs = nixpkgs.legacyPackages.${system};
- in {
- defaultPackage = with pkgs;
- stdenv.mkDerivation {
- pname = "fcuny.net";
- version = self.lastModifiedDate;
- src = ./.;
- buildInputs = [ hugo git ];
- buildPhase = ''
- mkdir -p $out
- hugo --minify --destination $out
- '';
- dontInstall = true;
+ let
+ pkgs = nixpkgs.legacyPackages.${system};
+ caddyfile = ./Caddyfile;
+ in
+ {
+ packages = {
+ site = with pkgs;
+ stdenv.mkDerivation {
+ pname = "fcuny.net";
+ version = self.lastModifiedDate;
+ src = ./.;
+ buildInputs = [ hugo git ];
+ buildPhase = ''
+ mkdir -p $out
+ hugo --minify --destination $out
+ '';
+ dontInstall = true;
+ };
+ container = pkgs.dockerTools.buildLayeredImage {
+ name = self.packages."${system}".site.pname;
+ tag = self.packages."${system}".site.version;
+ config = {
+ Cmd = [ "${pkgs.caddy}/bin/caddy" "run" "--adapter" "caddyfile" "--config" "${caddyfile}" ];
+ Env = [
+ "SITE_ROOT=${self.packages."${system}".site}"
+ ];
+ };
};
-
- defaultApp = pkgs.writers.writeBashBin "run-hugo" ''
- set -e
- set -o pipefail
- export PATH=${pkgs.lib.makeBinPath [ pkgs.hugo pkgs.git ]}
- hugo server -D
- '';
-
- apps = {
- deploy = pkgs.pkgs.writeShellScriptBin "run-deploy" ''
+ deploy = pkgs.writeShellScriptBin "deploy" ''
set -euxo pipefail
- export PATH=${
- pkgs.lib.makeBinPath [ pkgs.hugo pkgs.git pkgs.jq pkgs.flyctl ]
- }:$PATH
- bash ./scripts/deploy.sh
+ export PATH="${pkgs.lib.makeBinPath [(pkgs.docker.override { clientOnly = true; }) pkgs.flyctl]}:$PATH"
+ archive=${self.packages.x86_64-linux.container}
+ # load archive, drop all output except last line case of warnings), print image name
+ image=$(docker load < $archive | tail -n1 | awk '{ print $3; }')
+ flyctl deploy --image $image --local-only
'';
+ hugo = pkgs.writeShellScriptBin "hugo" ''
+ set -euo pipefail
+ export PATH=${pkgs.lib.makeBinPath [ pkgs.hugo pkgs.git ]}
+ hugo server -D
+ '';
+ };
+
+ apps = {
+ deploy = {
+ type = "app";
+ program = "${self.packages."${system}".deploy}/bin/deploy";
+ };
+ default = {
+ type = "app";
+ program = "${self.packages."${system}".hugo}/bin/hugo";
+ };
};
+ defaultPackage = self.packages."${system}".container;
+
devShell =
- pkgs.mkShell { buildInputs = with pkgs; [ hugo flyctl git jq ]; };
+ pkgs.mkShell { buildInputs = with pkgs; [ hugo flyctl git ]; };
});
}