diff --git a/nix/packages/default.nix b/nix/packages/default.nix index 6261bded..646d5138 100644 --- a/nix/packages/default.nix +++ b/nix/packages/default.nix @@ -1,99 +1,3 @@ -{ - sources ? import ../sources.nix, - pkgs ? import sources.nixpkgs {}, - ... -}: let - inherit (pkgs) lib; +args: - 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; - - iosevka-pin = import sources.pin-iosevka {}; - mkNerdFont = iosevka-pin.callPackage ../lib/mkNerdFont.nix {}; -in rec { - # fonts - altiosevka = iosevka-pin.callPackage ./altiosevka {}; - altiosevka-nerd-font-mono = mkNerdFont { - font = altiosevka; - 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 {}; - - necrolib = pkgs.callPackage ./necrolib.nix {}; - - 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 {}; - - 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"; - }; -} +import ./top-level.nix args diff --git a/nix/packages/top-level.nix b/nix/packages/top-level.nix new file mode 100644 index 00000000..6261bded --- /dev/null +++ b/nix/packages/top-level.nix @@ -0,0 +1,99 @@ +{ + sources ? import ../sources.nix, + pkgs ? import sources.nixpkgs {}, + ... +}: let + inherit (pkgs) lib; + + 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; + + iosevka-pin = import sources.pin-iosevka {}; + mkNerdFont = iosevka-pin.callPackage ../lib/mkNerdFont.nix {}; +in rec { + # fonts + altiosevka = iosevka-pin.callPackage ./altiosevka {}; + altiosevka-nerd-font-mono = mkNerdFont { + font = altiosevka; + 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 {}; + + necrolib = pkgs.callPackage ./necrolib.nix {}; + + 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 {}; + + 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"; + }; +}