lumina/flake.nix
2025-08-04 14:50:34 -05:00

133 lines
4 KiB
Nix

{
description = "A Church Presentation Application";
inputs = {
# cargo2nix.url = "github:cargo2nix/cargo2nix/release-0.11.0";
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 = [ fenix.overlays.default ];
# overlays = [cargo2nix.overlays.default];
};
naersk' = pkgs.callPackage naersk { };
nbi = with pkgs; [
# ffmpeg
alejandra
(pkgs.fenix.stable.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
rust-analyzer
qt6.wrapQtAppsHook
];
bi = with pkgs; [
gcc
stdenv
gnumake
gdb
qtcreator
cmake
kdePackages.extra-cmake-modules
pkg-config
makeWrapper
openssl.dev
openssl.out
clang-tools
clang
libclang
# libwebp
# clang-format
qt6.full
qt6.qttools
# qt6.qtbase
# qt6.qtquickcontrols2
# qt6.qtx11extras
qt6.qtmultimedia
qt6.qtwayland
qt6.qtwebengine
qt6.qtimageformats
kdePackages.kirigami
# kdePackages.kfilemetadata
# libsForQt5.breeze-icons
# libsForQt5.breeze-qt5
kdePackages.qqc2-desktop-style
# libsForQt5.kirigami-addons
# libsForQt5.ki18n
kdePackages.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;
QML_IMPORT_PATH = "${pkgs.qt6.full}/lib/qt-6/:${pkgs.qt6.qtmultimedia}/lib/qt-6/:${pkgs.qt6.qtwebengine}/lib/qt-6/:${pkgs.qt6.qtimageformats}:${pkgs.kdePackages.kirigami}/lib/qt-6/";
# KDE_INCLUDEDIR = "${pkgs.kdePackages.kirigami}/include";
# KDE_QMLDIR = "${pkgs.kdePackages.kirigami}/lib/qt-6/qml/";
# 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"
'';
# shellHook = ''
# export CMAKE_PREFIX_PATH="${pkgs.qt6.full}/lib/cmake/Qt6:$CMAKE_PREFIX_PATH"
# bashdir=$(mktemp -d)
# makeWrapper "$(type -p bash)" "$bashdir/bash" "''${qtWrapperArgs[@]}"
# exec "$bashdir/bash"
# '';
DATABASE_URL =
"sqlite:///home/chris/.local/share/lumina/library-db.sqlite3";
};
# devShell = import ./shell.nix { inherit pkgs; };
# defaultPackage = pkgs.libsForQt5.callPackage ./default.nix { };
});
}