summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-06-27 20:31:45 +0900
committerOphestra <cat@gensokyo.uk>2025-06-27 20:33:25 +0900
commit42c21ad90626346277861471b1d6896a4e2e5058 (patch)
tree3e356fdd3606f27ccd37310e9f9f181acc4ee235 /flake.nix
parentf16ef88f9f25e1e09a2a741ba3ba4bf44b03b927 (diff)
treewide: build via nix
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix85
1 files changed, 85 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 00000000..9660390c
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,85 @@
+{
+ description = "hakurei.app website, based on grapheneos.org";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
+ };
+
+ outputs =
+ {
+ self,
+ nixpkgs,
+ }:
+ let
+ supportedSystems = [
+ "aarch64-linux"
+ "x86_64-linux"
+ ];
+
+ forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+ nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
+ in
+ {
+ checks = forAllSystems (
+ system:
+ let
+ pkgs = nixpkgsFor.${system};
+
+ inherit (pkgs)
+ runCommandLocal
+ nixfmt-rfc-style
+ deadnix
+ statix
+ ;
+ in
+ {
+ formatting = runCommandLocal "check-formatting" { nativeBuildInputs = [ nixfmt-rfc-style ]; } ''
+ cd ${./.}
+
+ echo "running nixfmt..."
+ nixfmt --check .
+
+ touch $out
+ '';
+
+ lint =
+ runCommandLocal "check-lint"
+ {
+ nativeBuildInputs = [
+ deadnix
+ statix
+ ];
+ }
+ ''
+ cd ${./.}
+
+ echo "running deadnix..."
+ deadnix --fail
+
+ echo "running statix..."
+ statix check .
+
+ touch $out
+ '';
+ }
+ );
+
+ packages = forAllSystems (
+ system:
+ let
+ inherit (self.packages.${system}) hakurei-static hakurei-static-web-server;
+ pkgs = nixpkgsFor.${system};
+ in
+ {
+ default = hakurei-static-web-server;
+ hakurei-static = pkgs.callPackage ./package.nix { };
+ hakurei-static-web-server = pkgs.writeShellScriptBin "hakurei-static-web-server" ''
+ exec ${pkgs.static-web-server}/bin/static-web-server \
+ -g info \
+ -p 49151 \
+ -d ${hakurei-static}
+ '';
+ }
+ );
+ };
+}