82 lines
2.5 KiB
Nix
82 lines
2.5 KiB
Nix
{
|
|
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
|
|
pkgs = import nixpkgs { inherit system; };
|
|
|
|
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";
|
|
};
|
|
});
|
|
};
|
|
}
|
|
|