{ 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 ]; 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 {}; typst-bot = pkgs.callPackage ./typst-bot.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 = p: # p.overrideAttrs (old: { # nativeBuildInputs = (old.nativeBuildInputs or []) ++ [pkgs.installShellFiles]; # postInstall = # (old.postInstall or "") # + '' # 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 = p: p.overrideAttrs (old: { nativeBuildInputs = (old.nativeBuildInputs or []) ++ [pkgs.installShellFiles]; postInstall = (old.postInstall or "") + '' 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"; }; }