From db165e864e0014e3346563b133c9923857de2a29 Mon Sep 17 00:00:00 2001 From: Noah Pederson Date: Sat, 27 Dec 2025 19:20:00 -0600 Subject: [PATCH] Add foks --- flake.lock | 56 ++++++++++---------- home.nix | 2 + packages/foks-server.nix | 107 +++++++++++++++++++++++++++++++++++++++ packages/foks.nix | 55 ++++++++++++++++++++ 4 files changed, 192 insertions(+), 28 deletions(-) create mode 100644 packages/foks-server.nix create mode 100644 packages/foks.nix diff --git a/flake.lock b/flake.lock index 6dd155d..75e887a 100644 --- a/flake.lock +++ b/flake.lock @@ -46,37 +46,37 @@ "determinate-nixd-aarch64-darwin": { "flake": false, "locked": { - "narHash": "sha256-6PWoqx52nvlWzlElTjcn7KAPKitfcKZYEFSsC3PoEoE=", + "narHash": "sha256-vDaEQ5T4eA7kEPREmm68IVWGR6zT0aDL5slZxA6dkSc=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/macOS" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/macOS" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/macOS" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/macOS" } }, "determinate-nixd-aarch64-linux": { "flake": false, "locked": { - "narHash": "sha256-b1e25BUPL7Qf0QVbYlfZ/+QiClrP/SHIjMPtA47aOLc=", + "narHash": "sha256-Hf4JsIv5G3IR0Q0RHGLSNdmDzFv97sVQQKwzY6A0vV4=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/aarch64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/aarch64-linux" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/aarch64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/aarch64-linux" } }, "determinate-nixd-x86_64-linux": { "flake": false, "locked": { - "narHash": "sha256-8EI2f8IftPcRFlR6K4+cpIEAVf5UIeMCjHysEtVqDw0=", + "narHash": "sha256-J+J4E02XpEl0ZkpzMbUmGCf6S4yk0gYCYmiGzZ058ik=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/x86_64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/x86_64-linux" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.14.0/x86_64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/x86_64-linux" } }, "determinite": { @@ -90,12 +90,12 @@ ] }, "locked": { - "lastModified": 1765254444, - "narHash": "sha256-kAO/ZeBnjaF+uqOP6qweXlRk2ylocLuv/9Dn8FsuPlU=", - "rev": "3ccc0297525e51ac3d7905509e0616c9c8350108", - "revCount": 316, + "lastModified": 1766177528, + "narHash": "sha256-Bl+p766mM7qNCZtMqmTz13RuUbOMKsFa+/vnGYoxgPk=", + "rev": "b159c082f0f9bdefa6c386189a13c5fa0734d8d8", + "revCount": 317, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.14.0/019b0160-c5de-7941-9c26-cb47bc17eec3/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.15.0/019b3865-57a1-7d80-98c5-962fac29c404/source.tar.gz" }, "original": { "type": "tarball", @@ -230,11 +230,11 @@ ] }, "locked": { - "lastModified": 1765979862, - "narHash": "sha256-/r9/1KamvbHJx6I40H4HsSXnEcBAkj46ZwibhBx9kg0=", + "lastModified": 1766292113, + "narHash": "sha256-sWTtmkQujRpjWYCnZc8LWdDiCzrRlSBPrGovkZpLkBI=", "owner": "nix-community", "repo": "home-manager", - "rev": "d3135ab747fd9dac250ffb90b4a7e80634eacbe9", + "rev": "fdec8815a86db36f42fc9c8cb2931cd8485f5aed", "type": "github" }, "original": { @@ -253,12 +253,12 @@ "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1765252170, - "narHash": "sha256-p98D44tYJMgB5Qet5S8cTQFdffk/GmoaGkpQtZ3hqJU=", - "rev": "1ddd28880651054346c34009d7bb9de36f1db2c1", - "revCount": 23362, + "lastModified": 1766174426, + "narHash": "sha256-0ZofAQZNgg5nfIKsVb7g4It6ufmIyLtfFRPOf+6WRkk=", + "rev": "15d6091194b5b90d292e8d6283db77f09c303b1e", + "revCount": 24285, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.14.0/019b0159-8907-7fab-a120-9d287c7e6d2e/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.15.0/019b3854-cca6-7298-a91c-0fd8551a7270/source.tar.gz" }, "original": { "type": "tarball", @@ -315,11 +315,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1765779637, - "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", + "lastModified": 1766309749, + "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", + "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "type": "github" }, "original": { @@ -345,11 +345,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1765838191, - "narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=", + "lastModified": 1766201043, + "narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6", + "rev": "b3aad468604d3e488d627c0b43984eb60e75e782", "type": "github" }, "original": { diff --git a/home.nix b/home.nix index 726dcd3..1281675 100644 --- a/home.nix +++ b/home.nix @@ -138,6 +138,8 @@ #telegram-desktop #unstable.google-chrome #unstable.jetbrains-toolbox + (pkgs.callPackage ./packages/foks.nix { }) + (pkgs.callPackage ./packages/foks-server.nix { }) ]; nix = { diff --git a/packages/foks-server.nix b/packages/foks-server.nix new file mode 100644 index 0000000..153b628 --- /dev/null +++ b/packages/foks-server.nix @@ -0,0 +1,107 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + buildNpmPackage, + pcsclite, + pkg-config, + nix-update-script, + stdenv, + tailwindcss_4, + templ, + uglify-js, + versionCheckHook, +}: + +let + src = fetchFromGitHub { + owner = "foks-proj"; + repo = "go-foks"; + tag = "v${version}"; + hash = "sha256-/+Z/afzj5y4CVU3qRymSIUzCabT2jAEBlKKoYgKlPRE="; + }; + version = "0.1.5"; + templFoks = templ.overrideAttrs (old: { + pname = "templ-foks"; + version = "0.3.833"; + src = old.src.override { + hash = "sha256-4K1MpsM3OuamXRYOllDsxxgpMRseFGviC4RJzNA7Cu8="; + }; + vendorHash = "sha256-OPADot7Lkn9IBjFCfbrqs3es3F6QnWNjSOHxONjG4MM="; + }); + foksNodeModules = buildNpmPackage { + pname = "foks-node-modules"; + inherit version src; + npmDepsHash = "sha256-mASu3taprCYP+muRh4b+qUTce7YTdISf/QnmSvUy6Mo="; + dontNpmBuild = true; + sourceRoot = "${src.name}/server/web/frontend"; + installPhase = '' + mkdir -p $out + cp -r node_modules $out/node_modules + ''; + }; +in +buildGoModule (finalAttrs: { + pname = "foks-server"; + inherit version src; + + vendorHash = "sha256-nTHsYMQjVaQM+g2MM++/BDVYfzIM4CaMM6eK5GQE6Cc="; + + postPatch = + # Generate templates + '' + pushd ./server/web/templates + ${templFoks}/bin/templ generate + popd + '' + # Generate tailwind + + '' + pushd ./server/web/frontend + mkdir -p ../static/css + ${lib.getExe tailwindcss_4} -i ./css/input.css -o ../static/css/style.min.css --minify + ${lib.getExe tailwindcss_4} -i ./css/input.css -o ../static/css/style.css + ${lib.getExe uglify-js} -c < ../static/js/foks.js > ../static/js/foks.min.js + popd + '' + # Copy htmx dependency from node modules + + '' + pushd ./server/web/static + mkdir -p ./js + cp ${foksNodeModules}/node_modules/htmx.org/dist/htmx.js ./js/htmx.js + cp ${foksNodeModules}/node_modules/htmx.org/dist/htmx.min.js ./js/htmx.min.js + popd + ''; + subPackages = [ + "server/foks-server" + "server/foks-tool" + ]; + excludedPackages = [ "client" ]; + + buildInputs = lib.optionals (stdenv.hostPlatform.isLinux) [ pcsclite ]; + nativeBuildInputs = [ + pkg-config + ]; + ldflags = [ + "-X main.LinkerVersion=v${finalAttrs.version}" + ]; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckProgramArg = "version"; + doInstallCheck = true; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "Federated key management and distribution system"; + homepage = "https://foks.pub"; + downloadPage = "https://github.com/foks-proj/go-foks"; + changelog = "https://github.com/foks-proj/go-foks/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ poptart ]; + mainProgram = "foks-server"; + }; +}) diff --git a/packages/foks.nix b/packages/foks.nix new file mode 100644 index 0000000..413ea62 --- /dev/null +++ b/packages/foks.nix @@ -0,0 +1,55 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + pcsclite, + pkg-config, + stdenv, + buildPackages, +}: +let + templFoks = buildPackages.templ.overrideAttrs (old: { + pname = "templ-foks"; + version = "0.3.833"; + src = old.src.override { + hash = "sha256-4K1MpsM3OuamXRYOllDsxxgpMRseFGviC4RJzNA7Cu8="; + }; + vendorHash = "sha256-OPADot7Lkn9IBjFCfbrqs3es3F6QnWNjSOHxONjG4MM="; + }); +in +buildGoModule (finalAttrs: { + pname = "foks"; + version = "0.1.5"; + + src = fetchFromGitHub { + owner = "foks-proj"; + repo = "go-foks"; + tag = "v${finalAttrs.version}"; + hash = "sha256-/+Z/afzj5y4CVU3qRymSIUzCabT2jAEBlKKoYgKlPRE="; + }; + + vendorHash = "sha256-nTHsYMQjVaQM+g2MM++/BDVYfzIM4CaMM6eK5GQE6Cc="; + + postPatch = '' + cd ./server/web/templates + ${templFoks}/bin/templ generate + cd - + ''; + subPackages = [ "client/foks" ]; + excludedPackages = [ "server" ]; + + buildInputs = lib.optionals (stdenv.hostPlatform.isLinux) [ pcsclite ]; + nativeBuildInputs = [ + pkg-config + ]; + + meta = { + description = "Federated key management and distribution system"; + homepage = "https://foks.pub"; + downloadPage = "https://github.com/foks-proj/go-foks"; + changelog = "https://github.com/foks-proj/go-foks/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ poptart ]; + mainProgram = "foks"; + }; +}) -- 2.51.2