kompas3d/flake.nix

82 lines
2.6 KiB
Nix
Raw Normal View History

2026-02-16 22:51:38 +03:00
{
description = "Kompas3D FHS wrapper";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
systems = [ "x86_64-linux" "aarch64-linux" ];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
in
{
packages = forAllSystems (system:
let
2026-02-17 08:29:08 +03:00
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
2026-02-16 22:51:38 +03:00
kompas = pkgs.kdePackages.callPackage ./default.nix { };
pname = "kompas3d-fhs";
in
{
default = pkgs.buildFHSEnv rec {
inherit pname;
inherit (kompas) version;
targetPkgs = pkgs': [
kompas
pkgs'.open-sans
];
extraBuildCommands = ''
mkdir -p $out/usr/local/
'';
extraBwrapArgs = [
"--tmpfs" "/usr/local"
"--bind-try" "/etc/nixos/" "/etc/nixos/"
];
# symlink shared assets, including icons and desktop entries
extraInstallCommands = ''
ln -s "${kompas}/share" "$out/"
ln -s "$out/bin/${pname}" "$out/bin/${kompas.meta.mainProgram}"
'';
profile = ''
(
custom_font_dir="/usr/local/share/fonts"
if [ -d "$custom_font_dir" ]; then
echo "Font directory $custom_font_dir already exists, skipping font linking"
return 0
fi
echo "Start font linking inside FHS env cause kompas only checks /usr/{,local/}share/fonts/ dirs"
mkdir -p "$custom_font_dir"
for font in $(${pkgs.fontconfig}/bin/fc-list -f "%{file}\n" | sort -u | awk -F/ '{if (!seen[$NF]++) print $0}'); do
[ -L "$font" ] && font=$(readlink -f "$font")
relpath=$(dirname $(echo $font | sed 's|.*/share/fonts/||'))
target="$custom_font_dir/$relpath/"
mkdir -p "$target"
ln -s "$font" "$target"
done
)
'';
runScript = "${pkgs.bash}/bin/bash ${pkgs.writeText "kompas-wrapper" ''
export QT_QPA_PLATFORM=xcb
export QT_STYLE_OVERRIDE=Fusion
cd /opt/ascon/kompas3d-v24/Bin/
./kKompas
''}";
};
});
apps = forAllSystems (system: {
default = {
type = "app";
program = "${self.packages.${system}.default}/bin/kompas3d-fhs";
};
});
};
}