From def2de2d859988e6a564fa47da75a7846d7f2a15 Mon Sep 17 00:00:00 2001 From: didier amyot Date: Tue, 7 Jan 2025 11:32:46 -0500 Subject: [PATCH] added cheap way to run program from nix --- YongeStreet/Services/DataService.cs | 2 +- flake.nix | 54 +++++++++++++++++++---------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/YongeStreet/Services/DataService.cs b/YongeStreet/Services/DataService.cs index 80c4e13..dc1c1e6 100644 --- a/YongeStreet/Services/DataService.cs +++ b/YongeStreet/Services/DataService.cs @@ -18,7 +18,7 @@ public class DataService "tertiary_link", "residential", "unclassified"]; - private readonly string path = "/home/didier/dev/YongeStreet/real.duckdb"; + private readonly string path = System.Environment.GetEnvironmentVariable("PREPROCESSED_DUCKDB_FILE") ?? "/home/didier/dev/YongeStreet/real.duckdb"; public IList GetRoads(string city, DateOnly extractDate) { diff --git a/flake.nix b/flake.nix index 435efc4..0adcd04 100644 --- a/flake.nix +++ b/flake.nix @@ -102,23 +102,21 @@ doCheck = false; }; + static-server-url = "https://static.home.all-dressed-programming.com"; geofabrik-base-url = - "https://static.home.all-dressed-programming.com/download.geofabrik.de/north-america/canada/"; + "${static-server-url}/download.geofabrik.de/north-america/canada/"; osm-quebec."2020" = pkgs.fetchurl { url = "${geofabrik-base-url}quebec-200101.osm.pbf"; - hash = - "sha256-RYoz4Qo/xwiEVBoA4xRHHpt8kvNS/mHskJBmR4+3vQk="; + hash = "sha256-RYoz4Qo/xwiEVBoA4xRHHpt8kvNS/mHskJBmR4+3vQk="; }; osm-quebec."2021" = pkgs.fetchurl { url = "${geofabrik-base-url}quebec-210101.osm.pbf"; - hash = - "sha256-kKi/5hCVHaVvMVFAJWpJGPybmKwDu0QXePimYnHBKKk="; + hash = "sha256-kKi/5hCVHaVvMVFAJWpJGPybmKwDu0QXePimYnHBKKk="; }; osm-quebec."2022" = pkgs.fetchurl { url = "${geofabrik-base-url}quebec-220101.osm.pbf"; - hash = - "sha256-iZUm+vMiDH6eyf4kmee6O8z+lN/voyjAt4RtzmSU6Wo="; + hash = "sha256-iZUm+vMiDH6eyf4kmee6O8z+lN/voyjAt4RtzmSU6Wo="; }; osm-quebec."2023" = pkgs.fetchurl { url = "${geofabrik-base-url}quebec-230101.osm.pbf"; @@ -166,6 +164,35 @@ ''; }; + processed-duckdb-file = pkgs.fetchurl { + url = "${static-server-url}/yongestreet/duckdb/2025-01-06.duckdb"; + hash = "sha256-jZEkKg/D3MOVWprVGmsc/ev2fY6TVcN3tD3NH23B2h4="; + }; + + web-server = pkgs.buildDotnetModule { + pname = "YongeStreet"; + version = "0.1.0"; + src = ./.; + nugetDeps = ./nuget-deps.nix; + projectFile = "YongeStreet/YongeStreet.csproj"; + dotnetBuildFlags = [ "--no-self-contained" ]; + 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 + ''; + }; + + + python-virtual-env = pkgs.python312.withPackages (ps: [ ps.matplotlib ps.jupyter @@ -178,19 +205,10 @@ ps.jinja2 ]); - web-server = pkgs.buildDotnetModule { - pname = "YongeStreet"; - version = "0.1.0"; - src = ./.; - nugetDeps = ./nuget-deps.nix; - projectFile = "YongeStreet/YongeStreet.csproj"; - dotnetBuildFlags = [ "--no-self-contained" ]; - dotnet-sdk = pkgs.dotnetCorePackages.sdk_8_0; - dotnet-runtime = pkgs.dotnetCorePackages.aspnetcore_8_0; - }; - in { packages = { + default = yonge-street; + yonge-street = yonge-street; historical-data-dir = historical-data-dir; poly2geojson = poly2geojson; osmosis = osmosis;