blog-pim/flake.nix

99 lines
2.3 KiB
Nix
Raw Normal View History

2024-04-26 08:59:32 +00:00
{
description = "A very basic flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
2024-04-26 09:48:32 +00:00
flutils.url = "github:numtide/flake-utils";
nginx = {
url = "github:nginx/nginx";
flake = false;
};
2024-04-26 08:59:32 +00:00
};
outputs = { self, nixpkgs, flutils, nginx }: flutils.lib.eachDefaultSystem (system:
2024-04-26 09:48:32 +00:00
let
pkgs = nixpkgs.legacyPackages.${system};
2024-04-26 08:59:32 +00:00
2024-04-26 09:48:32 +00:00
gems = pkgs.bundlerEnv {
name = "blog-pim";
gemdir = ./src;
};
2024-04-26 08:59:32 +00:00
2024-04-26 09:48:32 +00:00
patch-feed-date = pkgs.stdenv.mkDerivation {
name = "path-feed-date";
propagatedBuildInputs = [ pkgs.python3 ];
dontUnpack = true;
installPhase = "install -Dm755 ${./patch-feed-date.py} $out/bin/patch-feed-date";
};
nginxPort = "80";
nginxConf = pkgs.writeText "nginx.conf" ''
user nobody nobody;
daemon off;
error_log /dev/stdout info;
pid /dev/null;
events {}
http {
access_log /dev/stdout;
include ${nginx.outPath}/conf/mime.types;
server {
listen ${nginxPort};
index index.html;
location / {
root ${self.packages.${system}.static-website};
}
}
}
'';
2024-04-26 09:48:32 +00:00
in
{
packages = {
static-website = pkgs.stdenv.mkDerivation {
name = "blog-pim";
src = ./src;
sourceRoot = "src";
buildInputs = [
gems
gems.wrappedRuby
patch-feed-date
];
buildPhase = ''
bundle exec jekyll build
'';
installPhase = ''
mkdir -p $out
cp -r _site/* $out/
patch-feed-date --file _site/feed.xml > $out/feed.xml
'';
};
container-image = pkgs.dockerTools.buildLayeredImage {
name = "blog-pim";
tag = "latest";
contents = [
pkgs.fakeNss
pkgs.nginx
];
extraCommands = ''
mkdir -p tmp/nginx_client_body
mkdir -p var/log/nginx
'';
config = {
Cmd = [ "nginx" "-c" nginxConf ];
ExposedPorts = {
"${nginxPort}/tcp" = { };
};
};
};
2024-04-26 09:48:32 +00:00
};
});
2024-04-26 08:59:32 +00:00
}