85 lines
2.2 KiB
Nix
85 lines
2.2 KiB
Nix
|
{
|
||
|
description = "renegade-solar.co.uk";
|
||
|
inputs = {
|
||
|
flake-utils.url = "github:numtide/flake-utils";
|
||
|
};
|
||
|
outputs =
|
||
|
{
|
||
|
self,
|
||
|
nixpkgs,
|
||
|
flake-utils,
|
||
|
}:
|
||
|
flake-utils.lib.eachDefaultSystem (
|
||
|
system:
|
||
|
let
|
||
|
nodeDeps = import ./node-deps.nix { inherit pkgs; };
|
||
|
inherit (nodeDeps) packageJSON nodeModules;
|
||
|
|
||
|
pkgs = import nixpkgs {
|
||
|
inherit system;
|
||
|
};
|
||
|
|
||
|
# Common build inputs
|
||
|
commonBuildInputs = with pkgs; [
|
||
|
djlint
|
||
|
sass
|
||
|
vscode-langservers-extracted
|
||
|
yarn
|
||
|
yarn2nix
|
||
|
];
|
||
|
|
||
|
# Helper function to create scripts
|
||
|
mkScript =
|
||
|
name:
|
||
|
(pkgs.writeScriptBin name (builtins.readFile ./bin/${name})).overrideAttrs (old: {
|
||
|
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
||
|
});
|
||
|
|
||
|
# Helper function to create packages
|
||
|
mkPackage =
|
||
|
name:
|
||
|
pkgs.symlinkJoin {
|
||
|
inherit name;
|
||
|
paths = [ (mkScript name) ] ++ commonBuildInputs;
|
||
|
buildInputs = [ pkgs.makeWrapper ];
|
||
|
postBuild = "wrapProgram $out/bin/${name} --prefix PATH : $out/bin";
|
||
|
};
|
||
|
|
||
|
# Script names
|
||
|
scripts = [
|
||
|
"build"
|
||
|
"serve"
|
||
|
];
|
||
|
|
||
|
# Generate all packages
|
||
|
scriptPackages = builtins.listToAttrs (
|
||
|
map (name: {
|
||
|
inherit name;
|
||
|
value = mkPackage name;
|
||
|
}) scripts
|
||
|
);
|
||
|
|
||
|
in
|
||
|
rec {
|
||
|
defaultPackage = packages.serve;
|
||
|
packages = scriptPackages;
|
||
|
|
||
|
devShells = rec {
|
||
|
default = dev;
|
||
|
dev = pkgs.mkShell {
|
||
|
buildInputs = commonBuildInputs ++ (builtins.attrValues packages);
|
||
|
shellHook = ''
|
||
|
rm -rf node_modules
|
||
|
rm -rf package.json
|
||
|
ln -sf ${packageJSON} package.json
|
||
|
ln -sf ${nodeModules}/node_modules .
|
||
|
echo "Development environment ready!"
|
||
|
echo "Run 'serve' to start development server"
|
||
|
echo "Run 'build' to build the site in the _site directory"
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
}
|