about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/oranda
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/oranda')
-rw-r--r--nixpkgs/pkgs/applications/misc/oranda/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/misc/oranda/tailwind.patch52
2 files changed, 68 insertions, 3 deletions
diff --git a/nixpkgs/pkgs/applications/misc/oranda/default.nix b/nixpkgs/pkgs/applications/misc/oranda/default.nix
index 759a929e4988..1471afed1d66 100644
--- a/nixpkgs/pkgs/applications/misc/oranda/default.nix
+++ b/nixpkgs/pkgs/applications/misc/oranda/default.nix
@@ -5,20 +5,28 @@
 , oniguruma
 , stdenv
 , darwin
+, tailwindcss
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "oranda";
-  version = "0.2.0";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "axodotdev";
     repo = "oranda";
     rev = "v${version}";
-    hash = "sha256-1pkAIz6Zh0ArIDmRSLHTnIgySWdxrDx0amTkdZhY6vY=";
+    hash = "sha256-v/4FPDww142V5mx+pHhaHkDiIUN70dwei8mTeZELztc=";
   };
 
-  cargoHash = "sha256-TKpPAzqwWBH2dlBNvU2kuqqOVu5WhSnSR3wW5FsW7yk=";
+  cargoHash = "sha256-Q5EY9PB50DxFXFTPiv3RktI37b2TCDqLVNISxixnspY=";
+
+  patches = [
+    # oranda-generate-css which is used in the build script tries to download
+    # tailwindcss from the internet, so we have to patch it to use the
+    # tailwindcss from nixpkgs
+    ./tailwind.patch
+  ];
 
   nativeBuildInputs = [
     pkg-config
@@ -33,10 +41,15 @@ rustPlatform.buildRustPackage rec {
   # requires internet access
   checkFlags = [
     "--skip=build"
+    "--skip=integration"
   ];
 
   env = {
     RUSTONIG_SYSTEM_LIBONIG = true;
+    TAILWINDCSS = lib.getExe tailwindcss;
+  } // lib.optionalAttrs stdenv.isDarwin {
+    # without this, tailwindcss fails with OpenSSL configuration error
+    OPENSSL_CONF = "";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/misc/oranda/tailwind.patch b/nixpkgs/pkgs/applications/misc/oranda/tailwind.patch
new file mode 100644
index 000000000000..6a1ffb3c959f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/oranda/tailwind.patch
@@ -0,0 +1,52 @@
+--- a/generate-css/src/lib.rs
++++ b/generate-css/src/lib.rs
+@@ -28,48 +28,7 @@ pub fn default_css_output_dir() -> Utf8PathBuf {
+ }
+ 
+ pub fn build_css(dist_dir: &Utf8Path) -> Result<()> {
+-    // Fetch our cache dir
+-    let project_dir = ProjectDirs::from("dev", "axo", "oranda")
+-        .expect("Unable to create cache dir for downloading Tailwind!");
+-    let cache_dir = project_dir.cache_dir();
+-    // Figure out our target "double" (tailwind has weird naming around this)
+-    let double = match (env::consts::OS, env::consts::ARCH) {
+-        ("linux", "x86_64") => "linux-x64",
+-        ("linux", "aarch64") => "linux-arm64",
+-        ("linux", "arm") => "linux-armv7",
+-        ("macos", "x86_64") => "macos-x64",
+-        ("macos", "aarch64") => "macos-arm64",
+-        ("windows", "x86_64") => "windows-x64.exe",
+-        ("windows", "aarch64") => "windows-arm64.exe",
+-        _ => "linux-x64",
+-    };
+-    let mut binary_path = Utf8PathBuf::from(cache_dir.display().to_string());
+-    LocalAsset::create_dir_all(&binary_path)?;
+-    binary_path.push(format!("tailwindcss-{double}"));
+-    if !binary_path.exists() {
+-        // Fetch the binary from GitHub if it doesn't exist
+-        tracing::info!("Fetching Tailwind binary from GitHub release...");
+-        let url = format!(
+-			"https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-{double}"
+-		);
+-        let handle = tokio::runtime::Handle::current();
+-        let response = handle.block_on(reqwest::get(url))?;
+-        let bytes = handle.block_on(response.bytes())?;
+-        let file = LocalAsset::new(&binary_path, Vec::from(bytes))?;
+-        file.write(
+-            binary_path
+-                .parent()
+-                .expect("Tailwind binary path has no parent!?"),
+-        )?;
+-
+-        // On non-Windows platforms, we need to mark the file as executable
+-        #[cfg(target_family = "unix")]
+-        {
+-            use std::os::unix::prelude::PermissionsExt;
+-            let user_execute = std::fs::Permissions::from_mode(0o755);
+-            std::fs::set_permissions(&binary_path, user_execute)?;
+-        }
+-    }
++    let binary_path = env!("TAILWINDCSS");
+ 
+     tracing::info!("Building oranda CSS using Tailwind...");
+     let css_src_path = manifest_dir().join(CSS_SRC_PATH);