From 26975c2004f2448106fb0f6285ec3d4ee59030b9 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Tue, 11 Mar 2025 17:25:23 -0500 Subject: [PATCH] updating to newer shell model and updating rust --- flake.lock | 59 +++++++++++++++++- flake.nix | 177 +++++++++++++++++++++++++++++++++-------------------- 2 files changed, 165 insertions(+), 71 deletions(-) diff --git a/flake.lock b/flake.lock index 6b82aa5..31a9ccf 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,24 @@ { "nodes": { + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs", + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1741675036, + "narHash": "sha256-sb0mRPmUK//i6F6hhjJg2fShlha452ipS94fQDxqWgw=", + "owner": "nix-community", + "repo": "fenix", + "rev": "f2c879a1319e0eb6b842a68791f3ae625bfc8724", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -20,7 +39,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1721727458, @@ -37,6 +56,22 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1741513245, + "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 0, "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", @@ -48,7 +83,7 @@ "type": "indirect" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1725634671, "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", @@ -66,9 +101,27 @@ }, "root": { "inputs": { + "fenix": "fenix", "flake-utils": "flake-utils", "naersk": "naersk", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1741630355, + "narHash": "sha256-8icmsH+PAqJbhYjor1rWLZGWII3z4MqXfLGS3rIxQnk=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "44f18c3d05dab7505ac0689e690f3c47f3be1418", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" } }, "systems": { diff --git a/flake.nix b/flake.nix index 9f64ab6..66bb2d4 100644 --- a/flake.nix +++ b/flake.nix @@ -6,77 +6,118 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; naersk.url = "github:nix-community/naersk"; flake-utils.url = "github:numtide/flake-utils"; + fenix.url = "github:nix-community/fenix"; # nixpkgs.follows = "cargo2nix/nixpkgs"; }; - outputs = inputs: with inputs; - flake-utils.lib.eachDefaultSystem - (system: - let - pkgs = import nixpkgs { - inherit system; - # overlays = [cargo2nix.overlays.default]; - }; - naersk' = pkgs.callPackage naersk {}; - # src = ./.; - # rustPkgs = pkgs.rustBuilder.makePackageSet { - # rustVersion = "1.61.0"; - # packageFun = import ./Cargo.nix; - # }; - # The workspace defines a development shell with all of the dependencies - # and environment settings necessary for a regular `cargo build`. - # Passes through all arguments to pkgs.mkShell for adding supplemental - # dependencies. - # workspaceShell = rustPkgs.workspaceShell { - # packages = with pkgs; [ - # gcc - # stdenv - # bintools - # gnumake - # gdb - # qtcreator - # cmake - # extra-cmake-modules - # pkg-config - # libsForQt5.wrapQtAppsHook - # makeWrapper + outputs = inputs: + with inputs; + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ fenix.overlays.default ]; + # overlays = [cargo2nix.overlays.default]; + }; + naersk' = pkgs.callPackage naersk { }; - # clang-tools - # clang - # libclang - # qt5.qtbase - # qt5.qttools - # qt5.qtquickcontrols2 - # qt5.qtx11extras - # qt5.qtmultimedia - # qt5.qtwayland - # qt5.qtwebengine - # libsForQt5.kirigami2 - # libsForQt5.qqc2-desktop-style - # libsForQt5.karchive - # mpv - # ffmpeg_6-full - # # Rust tools - # clippy - # rustc - # cargo - # rustfmt - # rust-analyzer - # corrosion - # ]; - # # shellHook = '' - # # export PS1="\033[0;31m☠dev-shell☠ $ \033[0m" - # # ''; - # }; + nbi = with pkgs; [ + # ffmpeg + alejandra + (pkgs.fenix.stable.withComponents [ + "cargo" + "clippy" + "rust-src" + "rustc" + "rustfmt" + ]) + rust-analyzer + ]; - in rec - { - # packages = { - # crate = (rustPkgs.workspace.libre-presenter { }).bin; - # default = packages.crate; - # }; - devShell = import ./shell.nix { inherit pkgs; }; - defaultPackage = pkgs.libsForQt5.callPackage ./default.nix { }; - } - ); + bi = with pkgs; [ + gcc + stdenv + gnumake + gdb + qtcreator + cmake + kdePackages.extra-cmake-modules + pkg-config + qt6.wrapQtAppsHook + makeWrapper + + openssl.dev + openssl.out + + clang-tools + clang + libclang + # libwebp + # clang-format + qt6.qtbase + qt6.qttools + # qt6.qtquickcontrols2 + # qt6.qtx11extras + qt6.qtmultimedia + qt6.qtwayland + qt6.qtwebengine + qt6.qtimageformats + kdePackages.kirigami + kdePackages.mpvqt + # kdePackages.kfilemetadata + # libsForQt5.breeze-icons + # libsForQt5.breeze-qt5 + kdePackages.qqc2-desktop-style + # libsForQt5.kirigami-addons + # libsForQt5.ki18n + # libsForQt5.kcoreaddons + # libsForQt5.kguiaddons + # libsForQt5.kconfig + + # podofo + mpv + kdePackages.mpvqt + ffmpeg-full + # yt-dlp + + # Rust tools + just + clippy + rustc + cargo + rustfmt + rust-analyzer + sqlx-cli + cargo-watch + corrosion + ]; + + in rec { + # packages = { + # crate = (rustPkgs.workspace.libre-presenter { }).bin; + # default = packages.crate; + # }; + devShell = pkgs.mkShell { + nativeBuildInputs = nbi; + buildInputs = bi; + + RUST_BACKTRACE = "1"; + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + CMAKE_C_COMPILER = "${pkgs.gcc}/bin/gcc"; + CMAKE_CXX_COMPILER = "${pkgs.gcc}/bin/g++"; + CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG = true; + + # This creates the proper qt env so that plugins are found right. + shellHook = '' + setQtEnvironment=$(mktemp --suffix .setQtEnvironment.sh) + echo "shellHook: setQtEnvironment = $setQtEnvironment" + makeQtWrapper "/bin/sh" "$setQtEnvironment" "''${qtWrapperArgs[@]}" + sed "/^exec/d" -i "$setQtEnvironment" + source "$setQtEnvironment" + ''; + DATABASE_URL = "sqlite:///home/chris/.local/share/lumina/library-db.sqlite3"; + }; + # devShell = import ./shell.nix { inherit pkgs; }; + # defaultPackage = pkgs.libsForQt5.callPackage ./default.nix { }; + }); }