Drop flake parts

Use native nix functions to speed up and reduce complexity
This commit is contained in:
Primrose 2025-02-05 19:02:18 +01:00
parent 85e2bd6728
commit daefd1534f
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
15 changed files with 501 additions and 423 deletions

View file

@ -1,203 +1,209 @@
{
self,
lib,
inputs,
systems,
...
}:
}@inputs:
let
inherit (inputs.nixpkgs) lib;
in
{
flake = {
lib.mkNerdFont = ./mkNerdFont.nix;
overlays = {
packages =
final: _:
let
stable = import inputs.nixpkgs-stable { inherit (final) system; };
in
self.overlays.packages' stable stable;
packageOverlays = {
packages =
final: _:
let
stable = import inputs.nixpkgs-stable { inherit (final) system; };
in
self.overlays.packages' stable stable;
packages' =
final: _:
let
mkNerdFont = final.callPackage self.lib.mkNerdFont { };
packages' =
final: _:
let
mkNerdFont = final.callPackage self.lib.mkNerdFont { };
mkHaskellPackage =
{
src,
name,
apply ? lib.id,
}:
let
drv = final.haskellPackages.callCabal2nix name src { };
in
lib.pipe drv [
apply
final.haskell.lib.dontHaddock
final.haskell.lib.justStaticExecutables
];
in
lib.fix (ps: {
# fonts
hiosevka = final.callPackage ./hiosevka { };
hiosevka-nerd-font-mono = mkNerdFont {
font = ps.hiosevka;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
mkHaskellPackage =
{
src,
name,
apply ? lib.id,
}:
let
drv = final.haskellPackages.callCabal2nix name src { };
in
lib.pipe drv [
apply
final.haskell.lib.dontHaddock
final.haskell.lib.justStaticExecutables
];
in
lib.fix (ps: {
# fonts
hiosevka = final.callPackage ./hiosevka { };
hiosevka-nerd-font-mono = mkNerdFont {
font = ps.hiosevka;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
};
hiosevka-nerd-font-propo = mkNerdFont {
font = ps.hiosevka;
extraArgs = [
"--name {/.}-NFP"
"--variable-width-glyphs"
];
};
altiosevka = final.callPackage ./altiosevka { };
altiosevka-nerd-font-mono = mkNerdFont {
font = ps.altiosevka;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
};
altiosevka-nerd-font-propo = mkNerdFont {
font = ps.altiosevka;
extraArgs = [
"--name {/.}-NFP"
"--variable-width-glyphs"
];
};
# static version of noto-fonts cjk serif
noto-fonts-cjk-serif' = final.callPackage ./noto-fonts-cjk-serif.nix { };
logisim-evolution = final.callPackage ./logisim-evolution.nix { };
necrolib = final.callPackage ./necrolib.nix { };
why3-wrapped =
let
why3-pinned = import (final.fetchFromGitHub {
owner = "nixos";
repo = "nixpkgs";
rev = "805a384895c696f802a9bf5bf4720f37385df547";
hash = "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=";
}) { inherit (final) system; };
alt-ergo-pinned =
import
(final.fetchFromGitHub {
owner = "nixos";
repo = "nixpkgs";
rev = "1b95daa381fa4a0963217a5d386433c20008208a";
hash = "sha256-vwEtkxIEQjymeTk89Ty1MGfRVSWL1/3j1wt5xB5ua88=";
})
{
inherit (final) system;
config.allowUnfree = true;
};
in
why3-pinned.callPackage ./why3.nix { inherit (alt-ergo-pinned) alt-ergo; };
maeel = final.callPackage ./maeel.nix { };
tokei = final.callPackage ./tokei { }; # alpha tokei with typst, skel, hledger
typst-mutilate = final.callPackage ./typst-mutilate.nix { };
typst-bot = final.callPackage ./typst-bot.nix { };
webtoon_downloader = final.callPackage ./webtoon_downloader.nix { };
posy-cursor = final.callPackage ./posy-cursor.nix { };
nd = final.callPackage ./nd { };
xbrightness = final.callPackage ./xbrightness.nix { };
ffgun = final.callPackage ./ffgun.nix { };
easyscan = final.callPackage ./easyscan.nix { };
# my repositories
hbf = mkHaskellPackage {
name = "hbrainfuck";
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "hbrainfuck";
rev = "81c1d0d7ef1595bda1f8e4d86592d06e33bfd422";
hash = "sha256-NSCqJwcM5UgsAMpIpDSTy534hEK0wMicqwoE3DC8CGk=";
};
hiosevka-nerd-font-propo = mkNerdFont {
font = ps.hiosevka;
extraArgs = [
"--name {/.}-NFP"
"--variable-width-glyphs"
];
apply =
p:
p.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ final.installShellFiles ];
postInstall =
(old.postInstall or "")
+ ''
installShellCompletion --cmd hbf \
--bash <("$out/bin/hbf" --bash-completion-script "$out/bin/hbf") \
--fish <("$out/bin/hbf" --fish-completion-script "$out/bin/hbf") \
--zsh <("$out/bin/hbf" --zsh-completion-script "$out/bin/hbf")
'';
});
};
prop-solveur = mkHaskellPackage {
name = "prop-solveur";
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "prop_solveur";
rev = "814082ed223f77f15484fcd62ab130c7c7ba1b17";
hash = "sha256-YNl9n3T0NfPQxbkLo4WVbg9huwAxKy96jQJxzt77z2w=";
};
apply =
p:
p.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ final.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")
'';
});
};
altiosevka = final.callPackage ./altiosevka { };
altiosevka-nerd-font-mono = mkNerdFont {
font = ps.altiosevka;
extraArgs = [
"--name {/.}-NFM"
"--use-single-width-glyphs"
];
hutils = mkHaskellPackage {
name = "hutils";
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "hutils";
rev = "544a2a6077e7c41fb2656bfe03b8b965bc0e50a7";
hash = "sha256-kzXA8GU8BWuOOIitxB74kgT7or1Wn3TciSaNAyBcw9o=";
};
altiosevka-nerd-font-propo = mkNerdFont {
font = ps.altiosevka;
extraArgs = [
"--name {/.}-NFP"
"--variable-width-glyphs"
];
};
# static version of noto-fonts cjk serif
noto-fonts-cjk-serif' = final.callPackage ./noto-fonts-cjk-serif.nix { };
};
logisim-evolution = final.callPackage ./logisim-evolution.nix { };
necrolib = final.callPackage ./necrolib.nix { };
why3-wrapped =
let
why3-pinned = import (final.fetchFromGitHub {
owner = "nixos";
repo = "nixpkgs";
rev = "805a384895c696f802a9bf5bf4720f37385df547";
hash = "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=";
}) { inherit (final) system; };
alt-ergo-pinned =
import
(final.fetchFromGitHub {
owner = "nixos";
repo = "nixpkgs";
rev = "1b95daa381fa4a0963217a5d386433c20008208a";
hash = "sha256-vwEtkxIEQjymeTk89Ty1MGfRVSWL1/3j1wt5xB5ua88=";
})
{
inherit (final) system;
config.allowUnfree = true;
};
in
why3-pinned.callPackage ./why3.nix { inherit (alt-ergo-pinned) alt-ergo; };
maeel = final.callPackage ./maeel.nix { };
tokei = final.callPackage ./tokei { }; # alpha tokei with typst, skel, hledger
typst-mutilate = final.callPackage ./typst-mutilate.nix { };
typst-bot = final.callPackage ./typst-bot.nix { };
webtoon_downloader = final.callPackage ./webtoon_downloader.nix { };
posy-cursor = final.callPackage ./posy-cursor.nix { };
nd = final.callPackage ./nd { };
xbrightness = final.callPackage ./xbrightness.nix { };
ffgun = final.callPackage ./ffgun.nix { };
easyscan = final.callPackage ./easyscan.nix { };
# my repositories
hbf = mkHaskellPackage {
name = "hbrainfuck";
audio-lint =
let
rev = "3ea38c85c5f6135958e51ad4ff13a96ccd68a21c";
in
final.rustPlatform.buildRustPackage rec {
pname = "audio-lint";
version = lib.substring 0 8 rev;
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "hbrainfuck";
rev = "81c1d0d7ef1595bda1f8e4d86592d06e33bfd422";
hash = "sha256-NSCqJwcM5UgsAMpIpDSTy534hEK0wMicqwoE3DC8CGk=";
repo = "audio-lint";
inherit rev;
hash = "sha256-h1SnWAh3FPL5GweOXVXXtp+swZApgecYaWjy7rM/J+w=";
};
apply =
p:
p.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ final.installShellFiles ];
postInstall =
(old.postInstall or "")
+ ''
installShellCompletion --cmd hbf \
--bash <("$out/bin/hbf" --bash-completion-script "$out/bin/hbf") \
--fish <("$out/bin/hbf" --fish-completion-script "$out/bin/hbf") \
--zsh <("$out/bin/hbf" --zsh-completion-script "$out/bin/hbf")
'';
});
cargoLock.lockFile = "${src}/Cargo.lock";
};
});
prop-solveur = mkHaskellPackage {
name = "prop-solveur";
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "prop_solveur";
rev = "814082ed223f77f15484fcd62ab130c7c7ba1b17";
hash = "sha256-YNl9n3T0NfPQxbkLo4WVbg9huwAxKy96jQJxzt77z2w=";
};
apply =
p:
p.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ final.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 = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "hutils";
rev = "544a2a6077e7c41fb2656bfe03b8b965bc0e50a7";
hash = "sha256-kzXA8GU8BWuOOIitxB74kgT7or1Wn3TciSaNAyBcw9o=";
};
};
audio-lint =
let
rev = "3ea38c85c5f6135958e51ad4ff13a96ccd68a21c";
in
final.rustPlatform.buildRustPackage rec {
pname = "audio-lint";
version = lib.substring 0 8 rev;
src = final.fetchFromGitea {
domain = "codeberg.org";
owner = "leana8959";
repo = "audio-lint";
inherit rev;
hash = "sha256-h1SnWAh3FPL5GweOXVXXtp+swZApgecYaWjy7rM/J+w=";
};
cargoLock.lockFile = "${src}/Cargo.lock";
};
});
};
};
perSystem =
{ pkgs, ... }:
{
packages = lib.composeManyExtensions [
self.overlays.packages
self.overlays.reexports
] pkgs pkgs;
};
packages =
let
packageOf =
system:
let
pkgs = import inputs.nixpkgs { inherit system; };
in
lib.composeManyExtensions [
self.overlays.packages
self.overlays.reexports
] pkgs pkgs;
in
lib.genAttrs systems packageOf;
}

View file

@ -1,63 +0,0 @@
{
lib,
nerd-font-patcher,
parallel,
stdenvNoCC,
}:
{
font,
extraArgs ? [ ],
useDefaultsArgs ? true,
}:
stdenvNoCC.mkDerivation {
/*
Credits:
https://github.com/NixOS/nixpkgs/issues/44329#issuecomment-1231189572
https://github.com/NixOS/nixpkgs/issues/44329#issuecomment-1544597422
long font names is not problematic:
https://github.com/ryanoasis/nerd-fonts/issues/1018#issuecomment-1953555781
*/
name = "${font.name}-NerdFont";
src = font;
nativeBuildInputs = [
nerd-font-patcher
parallel
];
buildPhase =
let
args =
(lib.optionals useDefaultsArgs [
"--careful"
"--complete"
"--quiet"
"--no-progressbars"
])
++ extraArgs;
in
''
mkdir -p nerd-font
find \( -name \*.ttf -o -name \*.otf \) | parallel nerd-font-patcher {} \
--outputdir nerd-font ${builtins.concatStringsSep " " args}
'';
installPhase = ''
exists() { [ -e "$1" ]; }
truetype="$out/share/fonts/truetype"
opentype="$out/share/fonts/opentype"
if exists nerd-font/*.ttf ; then
mkdir -p "$truetype"
cp nerd-font/*.ttf "$truetype"
fi
if exists nerd-font/*.otf ; then
mkdir -p "$opentype"
cp nerd-font/*.otf "$opentype"
fi
'';
}