site/flake.nix

98 lines
3.4 KiB
Nix

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-21.11";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
in
rec {
packages = rec {
bulma = pkgs.fetchzip {
url = "https://github.com/jgthms/bulma/releases/download/0.9.0/bulma-0.9.0.zip";
sha256 = "sha256-FKWdkq6pRukCzR2IQ88OHlPkIJbeeEz7NdIWv44k8TM=";
};
podlove-subscribe-button = pkgs.fetchzip {
url = "https://github.com/podlove/podlove-subscribe-button/releases/download/v17/podlove-subscribe-button-v17.zip";
sha256 = "sha256-N+lxzDpw2mNOg0i+pOFuvwNMi5Q7rZK4H9WEzf5/1us=";
stripRoot = false;
};
podlove-web-player = pkgs.fetchzip {
url = "https://registry.npmjs.org/@podlove/web-player/-/web-player-4.5.13.tgz";
sha256 = "sha256-U7REkg0FwBaMO25M4lHRRWcNNhgZPPjx/AR48usPqCU=";
};
schulischer-schabernack = pkgs.callPackage
({ stdenv
, ffmpeg-full
, python3
, zola
, staging ? false
}:
let
linkVendor = ''
mkdir -p vendor static/vendor
ln -sfT ${packages.bulma} vendor/bulma
# !!! XXX hack
# copying is required at least with interactive shell, because zola does not copy symlinks to output directory
# to keep it up to date, it is removed before that
rm -rf static/vendor/{podlove-subscribe-button,podlove-web-player}
cp --reflink=auto --no-preserve=mode,ownership -rf ${packages.podlove-subscribe-button} static/vendor/podlove-subscribe-button
cp --reflink=auto --no-preserve=mode,ownership -rf ${packages.podlove-web-player} static/vendor/podlove-web-player
'';
in
stdenv.mkDerivation {
name = "schulischer-schabernack";
src = self;
nativeBuildInputs = [
(ffmpeg-full.override { nonfreeLicensing = true; fdkaacExtlib = true; })
(python3.withPackages (ps: with ps; [ mutagen ]))
zola
];
SCHABERNACK_ENV = if staging then "staging" else "production";
postPatch = ''
patchShebangs .
'';
configurePhase = ''
runHook preConfigure
${linkVendor}
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
./build.sh
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r public $out
runHook postInstall
'';
shellHook = ''
${linkVendor}
export NIXOPS_DEPLOYMENT=schulischer-schabernack-hcloud
export NIX_PATH=nixpkgs=${nixpkgs}
'';
})
{ };
schulischer-schabernack-staging = schulischer-schabernack.override { staging = true; };
};
defaultPackage = packages.schulischer-schabernack;
});
}