From 58d972c3f40a27c3b79227bd5ca7cb4e9ea1a21d Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sun, 8 Feb 2026 11:04:28 -0600 Subject: [PATCH 1/5] try to fix flake --- flake.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 0c69358..f36798f 100644 --- a/flake.nix +++ b/flake.nix @@ -112,11 +112,19 @@ DATABASE_URL = "sqlite:///home/chris/.local/share/lumina/library-db.sqlite3"; }; defaultPackage = naersk'.buildPackage { - src = ./.; + src = self; + gitSubmodules = true; + # gitAllRefs = true; + # submodules = true; + # singleStep = true; }; packages = { default = naersk'.buildPackage { - src = ./.; + src = self; + gitSubmodules = true; + # gitAllRefs = true; + # submodules = true; + # singleStep = true; }; }; } From 6e05f96131e8a26b9885d04c04d66ab8cefd7278 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sun, 8 Feb 2026 11:05:32 -0600 Subject: [PATCH 2/5] grr --- flake.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index f36798f..4551a1a 100644 --- a/flake.nix +++ b/flake.nix @@ -114,17 +114,17 @@ defaultPackage = naersk'.buildPackage { src = self; gitSubmodules = true; - # gitAllRefs = true; - # submodules = true; - # singleStep = true; + gitAllRefs = true; + submodules = true; + singleStep = true; }; packages = { default = naersk'.buildPackage { src = self; gitSubmodules = true; - # gitAllRefs = true; - # submodules = true; - # singleStep = true; + gitAllRefs = true; + submodules = true; + singleStep = true; }; }; } From 34f240e5391bd2b7ffd84229c99a7ed1128bfb06 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sun, 8 Feb 2026 11:12:38 -0600 Subject: [PATCH 3/5] try to use crane --- flake.nix | 67 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index 4551a1a..1f0e485 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,7 @@ naersk.url = "github:nix-community/naersk"; flake-utils.url = "github:numtide/flake-utils"; fenix.url = "github:nix-community/fenix"; + crane.url = "github:ipetkov/crane"; }; outputs = @@ -19,6 +20,7 @@ overlays = [ fenix.overlays.default ]; # overlays = [cargo2nix.overlays.default]; }; + craneLib = crane.mkLib pkgs; naersk' = pkgs.callPackage naersk { }; nbi = with pkgs; [ # Rust tools @@ -111,20 +113,61 @@ # LIBCLANG_PATH = "${pkgs.clang}"; DATABASE_URL = "sqlite:///home/chris/.local/share/lumina/library-db.sqlite3"; }; - defaultPackage = naersk'.buildPackage { - src = self; - gitSubmodules = true; - gitAllRefs = true; - submodules = true; - singleStep = true; + defaultPackage = craneLib.buildPackage { + src = craneLib.cleanCargoSource ./.; + buildInputs = bi; + nativeBuildInputs = nbi; + LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${ + with pkgs; + pkgs.lib.makeLibraryPath [ + pkgs.alsa-lib + pkgs.gst_all_1.gst-libav + pkgs.gst_all_1.gstreamer + pkgs.gst_all_1.gst-plugins-bad + pkgs.gst_all_1.gst-plugins-good + pkgs.gst_all_1.gst-plugins-ugly + pkgs.gst_all_1.gst-plugins-base + pkgs.gst_all_1.gst-plugins-rs + pkgs.gst_all_1.gst-vaapi + pkgs.glib + pkgs.fontconfig + pkgs.vulkan-loader + pkgs.wayland + pkgs.wayland-protocols + pkgs.libxkbcommon + pkgs.mupdf + pkgs.libclang + ] + }"; }; packages = { - default = naersk'.buildPackage { - src = self; - gitSubmodules = true; - gitAllRefs = true; - submodules = true; - singleStep = true; + default = craneLib.buildPackage { + + src = craneLib.cleanCargoSource ./.; + buildInputs = bi; + nativeBuildInputs = nbi; + LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${ + with pkgs; + pkgs.lib.makeLibraryPath [ + pkgs.alsa-lib + pkgs.gst_all_1.gst-libav + pkgs.gst_all_1.gstreamer + pkgs.gst_all_1.gst-plugins-bad + pkgs.gst_all_1.gst-plugins-good + pkgs.gst_all_1.gst-plugins-ugly + pkgs.gst_all_1.gst-plugins-base + pkgs.gst_all_1.gst-plugins-rs + pkgs.gst_all_1.gst-vaapi + pkgs.glib + pkgs.fontconfig + pkgs.vulkan-loader + pkgs.wayland + pkgs.wayland-protocols + pkgs.libxkbcommon + pkgs.mupdf + pkgs.libclang + ] + }"; }; }; } From 39341817694726dec1e7a5e9e4c6e99a53c1cb63 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Mon, 9 Feb 2026 06:38:30 -0600 Subject: [PATCH 4/5] almost a working nix build --- flake.lock | 16 ++++++ flake.nix | 151 +++++++++++++++++++++++++---------------------------- 2 files changed, 86 insertions(+), 81 deletions(-) diff --git a/flake.lock b/flake.lock index 6f39b8d..f4c6489 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "nodes": { + "crane": { + "locked": { + "lastModified": 1770419512, + "narHash": "sha256-o8Vcdz6B6bkiGUYkZqFwH3Pv1JwZyXht3dMtS7RchIo=", + "owner": "ipetkov", + "repo": "crane", + "rev": "2510f2cbc3ccd237f700bb213756a8f35c32d8d7", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "fenix": { "inputs": { "nixpkgs": "nixpkgs", @@ -128,6 +143,7 @@ }, "root": { "inputs": { + "crane": "crane", "fenix": "fenix", "flake-utils": "flake-utils", "naersk": "naersk", diff --git a/flake.nix b/flake.nix index 1f0e485..3960526 100644 --- a/flake.nix +++ b/flake.nix @@ -20,8 +20,21 @@ overlays = [ fenix.overlays.default ]; # overlays = [cargo2nix.overlays.default]; }; - craneLib = crane.mkLib pkgs; + inherit (pkgs) lib; + craneLib = (crane.mkLib pkgs).overrideToolchain fenix.packages.${system}.stable.toolchain; naersk' = pkgs.callPackage naersk { }; + + unfilteredRoot = ./.; # The original, unfiltered source + src = lib.fileset.toSource { + root = unfilteredRoot; + fileset = lib.fileset.unions [ + # Default files from crane (Rust and cargo files) + (craneLib.fileset.commonCargoSources unfilteredRoot) + # Include all the .sql migrations as well + ./migrations + ]; + }; + nbi = with pkgs; [ # Rust tools alejandra @@ -37,7 +50,6 @@ vulkan-loader wayland wayland-protocols - libxkbcommon pkg-config sccache ]; @@ -51,6 +63,7 @@ cmake clang libclang + libxkbcommon makeWrapper vulkan-headers vulkan-loader @@ -78,6 +91,59 @@ sqlx-cli cargo-watch ]; + + ldLibPaths = "$LD_LIBRARY_PATH:${ + with pkgs; + pkgs.lib.makeLibraryPath [ + pkgs.alsa-lib + pkgs.gst_all_1.gst-libav + pkgs.gst_all_1.gstreamer + pkgs.gst_all_1.gst-plugins-bad + pkgs.gst_all_1.gst-plugins-good + pkgs.gst_all_1.gst-plugins-ugly + pkgs.gst_all_1.gst-plugins-base + pkgs.gst_all_1.gst-plugins-rs + pkgs.gst_all_1.gst-vaapi + pkgs.glib + pkgs.fontconfig + pkgs.vulkan-loader + pkgs.wayland + pkgs.wayland-protocols + pkgs.libxkbcommon + pkgs.mupdf + pkgs.libclang + ] + }"; + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + + commonArgs = { + inherit src; + strictDeps = true; + + nativeBuildInputs = nbi; + buildInputs = bi; + + LD_LIBRARY_PATH = ldLibPaths; + }; + + lumina = craneLib.buildPackage ( + commonArgs + // { + inherit cargoArtifacts; + doInstallCargoArtifacts = true; + + nativeBuildInputs = (commonArgs.nativeBuildInputs or [ ]) ++ [ + pkgs.sqlx-cli + ]; + + preBuild = '' + export DATABASE_URL=sqlite:./db.sqlite3 + sqlx database create + sqlx migrate run + ''; + } + ); + in rec { devShell = @@ -88,88 +154,11 @@ { nativeBuildInputs = nbi; buildInputs = bi; - LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${ - with pkgs; - pkgs.lib.makeLibraryPath [ - pkgs.alsa-lib - pkgs.gst_all_1.gst-libav - pkgs.gst_all_1.gstreamer - pkgs.gst_all_1.gst-plugins-bad - pkgs.gst_all_1.gst-plugins-good - pkgs.gst_all_1.gst-plugins-ugly - pkgs.gst_all_1.gst-plugins-base - pkgs.gst_all_1.gst-plugins-rs - pkgs.gst_all_1.gst-vaapi - pkgs.glib - pkgs.fontconfig - pkgs.vulkan-loader - pkgs.wayland - pkgs.wayland-protocols - pkgs.libxkbcommon - pkgs.mupdf - pkgs.libclang - ] - }"; + LD_LIBRARY_PATH = ldLibPaths; # LIBCLANG_PATH = "${pkgs.clang}"; DATABASE_URL = "sqlite:///home/chris/.local/share/lumina/library-db.sqlite3"; }; - defaultPackage = craneLib.buildPackage { - src = craneLib.cleanCargoSource ./.; - buildInputs = bi; - nativeBuildInputs = nbi; - LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${ - with pkgs; - pkgs.lib.makeLibraryPath [ - pkgs.alsa-lib - pkgs.gst_all_1.gst-libav - pkgs.gst_all_1.gstreamer - pkgs.gst_all_1.gst-plugins-bad - pkgs.gst_all_1.gst-plugins-good - pkgs.gst_all_1.gst-plugins-ugly - pkgs.gst_all_1.gst-plugins-base - pkgs.gst_all_1.gst-plugins-rs - pkgs.gst_all_1.gst-vaapi - pkgs.glib - pkgs.fontconfig - pkgs.vulkan-loader - pkgs.wayland - pkgs.wayland-protocols - pkgs.libxkbcommon - pkgs.mupdf - pkgs.libclang - ] - }"; - }; - packages = { - default = craneLib.buildPackage { - - src = craneLib.cleanCargoSource ./.; - buildInputs = bi; - nativeBuildInputs = nbi; - LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${ - with pkgs; - pkgs.lib.makeLibraryPath [ - pkgs.alsa-lib - pkgs.gst_all_1.gst-libav - pkgs.gst_all_1.gstreamer - pkgs.gst_all_1.gst-plugins-bad - pkgs.gst_all_1.gst-plugins-good - pkgs.gst_all_1.gst-plugins-ugly - pkgs.gst_all_1.gst-plugins-base - pkgs.gst_all_1.gst-plugins-rs - pkgs.gst_all_1.gst-vaapi - pkgs.glib - pkgs.fontconfig - pkgs.vulkan-loader - pkgs.wayland - pkgs.wayland-protocols - pkgs.libxkbcommon - pkgs.mupdf - pkgs.libclang - ] - }"; - }; - }; + packages.default = lumina; } ); } From 57ded93e2a0b416cc5c8a97191141880b5ed919d Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Mon, 9 Feb 2026 10:19:37 -0600 Subject: [PATCH 5/5] grrrrr --- flake.nix | 76 +++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/flake.nix b/flake.nix index 3960526..0f022c9 100644 --- a/flake.nix +++ b/flake.nix @@ -69,8 +69,6 @@ vulkan-loader vulkan-tools libGL - cargo-flamegraph - bacon fontconfig glib @@ -87,50 +85,48 @@ mupdf # yt-dlp - just - sqlx-cli - cargo-watch + ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + pkgs.libiconv ]; ldLibPaths = "$LD_LIBRARY_PATH:${ with pkgs; - pkgs.lib.makeLibraryPath [ - pkgs.alsa-lib - pkgs.gst_all_1.gst-libav - pkgs.gst_all_1.gstreamer - pkgs.gst_all_1.gst-plugins-bad - pkgs.gst_all_1.gst-plugins-good - pkgs.gst_all_1.gst-plugins-ugly - pkgs.gst_all_1.gst-plugins-base - pkgs.gst_all_1.gst-plugins-rs - pkgs.gst_all_1.gst-vaapi - pkgs.glib - pkgs.fontconfig - pkgs.vulkan-loader - pkgs.wayland - pkgs.wayland-protocols - pkgs.libxkbcommon - pkgs.mupdf - pkgs.libclang + lib.makeLibraryPath [ + alsa-lib + gst_all_1.gst-libav + gst_all_1.gstreamer + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-ugly + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-rs + gst_all_1.gst-vaapi + glib + fontconfig + vulkan-loader + wayland + wayland-protocols + libxkbcommon + mupdf + libclang ] }"; - cargoArtifacts = craneLib.buildDepsOnly commonArgs; commonArgs = { inherit src; strictDeps = true; - nativeBuildInputs = nbi; buildInputs = bi; - LD_LIBRARY_PATH = ldLibPaths; }; + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + lumina = craneLib.buildPackage ( commonArgs // { inherit cargoArtifacts; - doInstallCargoArtifacts = true; nativeBuildInputs = (commonArgs.nativeBuildInputs or [ ]) ++ [ pkgs.sqlx-cli @@ -146,18 +142,20 @@ in rec { - devShell = - pkgs.mkShell.override - { - # stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.clangStdenv; - } - { - nativeBuildInputs = nbi; - buildInputs = bi; - LD_LIBRARY_PATH = ldLibPaths; - # LIBCLANG_PATH = "${pkgs.clang}"; - DATABASE_URL = "sqlite:///home/chris/.local/share/lumina/library-db.sqlite3"; - }; + checks = { + inherit lumina; + }; + devShells.default = craneLib.devShell { + checks = self.checks.${system}; + inputsFrom = [ lumina ]; + packages = with pkgs; [ + sqlx-cli + cargo-flamegraph + bacon + just + cargo-watch + ]; + }; packages.default = lumina; } );