.files/nix/packages/default.nix
2025-05-20 11:05:05 +02:00

130 lines
3.8 KiB
Nix

{
sources ? import ../sources.nix,
pkgs ? import sources.nixpkgs {},
...
}: let
inherit (pkgs) lib;
mkNerdFont = pkgs.callPackage ../lib/mkNerdFont.nix {};
mkHaskellPackage = {
src,
name,
apply ? lib.id,
}: let
drv = pkgs.haskellPackages.callCabal2nix name src {};
in
lib.pipe drv [
apply
pkgs.haskell.lib.dontHaddock
pkgs.haskell.lib.justStaticExecutables
];
infuse-lib = import sources.infuse {
inherit lib;
sugars = infuse-lib.v1.default-sugars;
};
infuse = lib.flip infuse-lib.v1.infuse;
in rec {
# fonts
altiosevka = pkgs.callPackage ./altiosevka {};
altiosevka-nerd-font-mono = mkNerdFont {
font = altiosevka;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
};
altiosevka-nerd-font-propo = mkNerdFont {
font = altiosevka;
extraArgs = [
"--name {/.}-NFP"
"--variable-width-glyphs"
];
};
bront-nerd-font-mono = mkNerdFont {
font = pkgs.bront_fonts;
extraArgs = [
"--name Bront-NFM"
"--use-single-width-glyphs"
];
};
inconsolata-nerd-font-mono = mkNerdFont {
font = pkgs.inconsolata;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
};
# static version of noto-fonts cjk serif
noto-fonts-cjk-serif' = pkgs.callPackage ./noto-fonts-cjk-serif.nix {};
logisim-evolution = pkgs.callPackage ./logisim-evolution.nix {};
necrolib = pkgs.callPackage ./necrolib.nix {};
why3-wrapped = let
why3-pinned = import sources.pin-why3 {};
alt-ergo-pinned = import sources.pin-alt-ergo {
config.allowUnfree = true;
};
in
why3-pinned.callPackage ./why3.nix {inherit (alt-ergo-pinned) alt-ergo;};
maeel = pkgs.callPackage ./maeel.nix {};
tokei = pkgs.callPackage ./tokei {}; # alpha tokei with typst, skel, hledger
typst-mutilate = pkgs.callPackage ./typst-mutilate.nix {};
webtoon_downloader = pkgs.callPackage ./webtoon_downloader.nix {};
posy-cursor = pkgs.callPackage ./posy-cursor.nix {};
nd = pkgs.callPackage ./nd {};
xbrightness = pkgs.callPackage ./xbrightness.nix {};
ffgun = pkgs.callPackage ./ffgun.nix {};
easyscan = pkgs.callPackage ./easyscan.nix {};
baguette-sharp = pkgs.callPackage ./baguette-sharp.nix {};
# TODO: remove when channel update
ltex-ls-plus = pkgs.callPackage ./ltex-ls-plus.nix {};
# my repositories
hbrainfuck = mkHaskellPackage {
name = "hbrainfuck";
src = sources.hbrainfuck;
apply = infuse {
__output.nativeBuildInputs.__append = [pkgs.installShellFiles];
__output.postInstall.__append = ''
installShellCompletion --cmd hbrainfuck \
--bash <("$out/bin/hbrainfuck" --bash-completion-script "$out/bin/hbrainfuck") \
--fish <("$out/bin/hbrainfuck" --fish-completion-script "$out/bin/hbrainfuck") \
--zsh <("$out/bin/hbrainfuck" --zsh-completion-script "$out/bin/hbrainfuck")
'';
};
};
prop-solveur = mkHaskellPackage {
name = "prop-solveur";
src = sources.prop_solveur;
apply = infuse {
__output.nativeBuildInputs.__append = [pkgs.installShellFiles];
__output.postInstall.__append = ''
installShellCompletion --cmd prop-solveur \
--bash <("$out/bin/prop-solveur" --bash-completion-script "$out/bin/prop-solveur") \
--fish <("$out/bin/prop-solveur" --fish-completion-script "$out/bin/prop-solveur") \
--zsh <("$out/bin/prop-solveur" --zsh-completion-script "$out/bin/prop-solveur")
'';
};
};
hutils = mkHaskellPackage {
name = "hutils";
src = sources.hutils;
};
audio-lint = pkgs.rustPlatform.buildRustPackage rec {
pname = "audio-lint";
version = lib.substring 0 8 sources.audio-lint.rev;
src = sources.audio-lint;
cargoLock.lockFile = "${src}/Cargo.lock";
};
}