diff --git a/flake.nix b/flake.nix index 0adcd04..c88c4c8 100644 --- a/flake.nix +++ b/flake.nix @@ -179,19 +179,15 @@ dotnet-sdk = pkgs.dotnetCorePackages.sdk_8_0; dotnet-runtime = pkgs.dotnetCorePackages.aspnetcore_8_0; }; - + yonge-street = pkgs.writeShellApplication { - name = "yong-street"; - runtimeInputs = [ ]; - text = '' - cd ${web-server}/lib/YongeStreet - pwd - export PREPROCESSED_DUCKDB_FILE="${processed-duckdb-file}" - ${web-server}/bin/YongeStreet - ''; + name = "yong-street"; + runtimeInputs = [ ]; + text = '' + cd ${web-server}/lib/YongeStreet + exec ${web-server}/bin/YongeStreet --urls http://0.0.0.0:$PORT + ''; }; - - python-virtual-env = pkgs.python312.withPackages (ps: [ ps.matplotlib @@ -229,5 +225,38 @@ nuget-to-nix ]; }; + nixosModules = { config, lib, ... }: { + options.services.all-dressed-programming.yonge-street = { + enable = lib.mkEnableOption "enable YongeStreet server"; + port = lib.mkOption { + type = lib.types.int; + default = 9876; + description = "The tcp port the YongeStreet will serve on."; + }; + }; + # options.services.all-dressed-programming.yonge-street + config = lib.mkIf + config.services.all-dressed-programming.yonge-street.enable { + users.groups.yonge-street = { }; + + users.users.yonge-street = { + createHome = false; + isSystemUser = true; + group = "yonge-street"; + }; + + systemd.services.yonge-street = { + wantedBy = [ "multi-user.target" ]; + environment.DOTNET_HTTP_PORTS = (builtins.toString + config.services.all-dressed-programming.yonge-street.port); + serviceConfig = { + User = "yonge-street"; + Group = "yonge-street"; + Restart = "always"; + ExecStart = "${yonge-street}/bin/yonge-street"; + }; + }; + }; + }; }); }