flake.nix 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. {
  2. description = "Econom_app NixOS module";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
  5. };
  6. outputs = { self, nixpkgs }:
  7. let
  8. pkgs = nixpkgs.legacyPackages."x86_64-linux";
  9. in
  10. {
  11. packages = rec {
  12. econom-app = pkgs.buildNpmPackage {
  13. pname = "econom-app";
  14. version = "1.0.0";
  15. src = ./.;
  16. npmDepsHash = "sha256-HzJV9bXwgn9WE9llPHLnYLNUIL6PDeoOh+K+RJ6Dd9s=";
  17. installPhase = ''
  18. mkdir -p $out;
  19. mv dist $out;
  20. '';
  21. };
  22. default = econom-app;
  23. };
  24. nixosModules.econom-app = { config, lib, pkgs, ... }:
  25. with lib;
  26. let cfg = config.services.econom-app;
  27. in {
  28. options.services.econom-app = {
  29. enable = mkEnableOption "Deploy the econom-app service";
  30. domain = mkOption {
  31. type = types.str;
  32. default = "localhost";
  33. description = "Dommain name to serve econom-app on.";
  34. };
  35. };
  36. config = mkIf cfg.enable {
  37. services.nginx.virtualHosts.${cfg.domain} = {
  38. root = "${self.packages.econom-app}/dist";
  39. locations."/" = {
  40. index = "index.html";
  41. tryFiles = "$uri $uri/ /index.html";
  42. };
  43. };
  44. };
  45. };
  46. };
  47. }