diff --git a/nix/packages/by-name.nix b/nix/packages/by-name.nix new file mode 100644 index 00000000..04883288 --- /dev/null +++ b/nix/packages/by-name.nix @@ -0,0 +1,11 @@ +{ + sources ? import ../sources.nix, + pkgs ? import sources.nixpkgs {}, +}: let + inherit (pkgs) lib; +in + lib.mapAttrs + (name: _: pkgs.callPackage (./by-name + "/${name}/package.nix") {}) + ( + lib.filterAttrs (_: type: type == "directory") (builtins.readDir ./by-name) + ) diff --git a/nix/packages/by-name/audio-lint/package.nix b/nix/packages/by-name/audio-lint/package.nix new file mode 100644 index 00000000..117c8185 --- /dev/null +++ b/nix/packages/by-name/audio-lint/package.nix @@ -0,0 +1,19 @@ +{ + lib, + rustPlatform, + fetchFromGitea, +}: +rustPlatform.buildRustPackage (finalAttrs: { + name = "audio-lint"; + version = lib.substring 0 8 finalAttrs.src.rev; + + src = fetchFromGitea { + domain = "git.confusedcompiler.org"; + owner = "leana8959"; + repo = "audio-lint"; + rev = "3ea38c85c5f6135958e51ad4ff13a96ccd68a21c"; + hash = "sha256-h1SnWAh3FPL5GweOXVXXtp+swZApgecYaWjy7rM/J+w="; + }; + + cargoHash = "sha256-hsFUeGPvo3n6/Z35ui3N4qefa4odM0yo1rVBhzL3fLU="; +}) diff --git a/nix/packages/baguette-sharp.nix b/nix/packages/by-name/baguette-sharp/package.nix similarity index 100% rename from nix/packages/baguette-sharp.nix rename to nix/packages/by-name/baguette-sharp/package.nix diff --git a/nix/packages/easyscan.nix b/nix/packages/by-name/easyscan/package.nix similarity index 100% rename from nix/packages/easyscan.nix rename to nix/packages/by-name/easyscan/package.nix diff --git a/nix/packages/ffgun.nix b/nix/packages/by-name/ffgun/package.nix similarity index 100% rename from nix/packages/ffgun.nix rename to nix/packages/by-name/ffgun/package.nix diff --git a/nix/packages/by-name/hbrainfuck/package.nix b/nix/packages/by-name/hbrainfuck/package.nix new file mode 100644 index 00000000..0e8f9204 --- /dev/null +++ b/nix/packages/by-name/hbrainfuck/package.nix @@ -0,0 +1,33 @@ +{ + haskellPackages, + haskell, + fetchFromGitea, + installShellFiles, +}: let + inherit (haskell.lib.compose) justStaticExecutables overrideCabal; + + drv = + haskellPackages.callCabal2nix "hbrainfuck" + (fetchFromGitea { + domain = "git.confusedcompiler.org"; + owner = "leana8959"; + repo = "hbrainfuck"; + rev = "796aae9bdb222e8e0431627eb11a3e3a71c1ffef"; + hash = "sha256-4OQ//QGzuPeOe1Zi9IjttUu4vLKufPCWXJzBk9v5zXc="; + }) + {}; + + cabalOverrides = o: { + buildTools = o.buildTools or [] ++ [installShellFiles]; + postInstall = + o.postInstall or "" + + '' + installShellCompletion --cmd hbrainfuck \ + --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") + ''; + }; +in + justStaticExecutables + (overrideCabal cabalOverrides drv) diff --git a/nix/packages/by-name/hutils/package.nix b/nix/packages/by-name/hutils/package.nix new file mode 100644 index 00000000..547c3ab3 --- /dev/null +++ b/nix/packages/by-name/hutils/package.nix @@ -0,0 +1,19 @@ +{ + haskellPackages, + haskell, + fetchFromGitea, +}: let + inherit (haskell.lib.compose) justStaticExecutables; + + drv = + haskellPackages.callCabal2nix "hutils" + (fetchFromGitea { + domain = "git.confusedcompiler.org"; + owner = "leana8959"; + repo = "hutils"; + rev = "ee04ec425af81e762362bc2c4bcd5d89ad50ddc8"; + hash = "sha256-e22agWHNftl7zlXnPpzNyE3iJKPHxcE7tH1XRYfG+4Q="; + }) + {}; +in + justStaticExecutables drv diff --git a/nix/packages/ltex-ls-plus.nix b/nix/packages/by-name/ltex-ls-plus/package.nix similarity index 100% rename from nix/packages/ltex-ls-plus.nix rename to nix/packages/by-name/ltex-ls-plus/package.nix diff --git a/nix/packages/maeel.nix b/nix/packages/by-name/maeel/package.nix similarity index 100% rename from nix/packages/maeel.nix rename to nix/packages/by-name/maeel/package.nix diff --git a/nix/packages/necrolib.nix b/nix/packages/by-name/necrolib/package.nix similarity index 100% rename from nix/packages/necrolib.nix rename to nix/packages/by-name/necrolib/package.nix diff --git a/nix/packages/noto-fonts-cjk-serif.nix b/nix/packages/by-name/noto-fonts-cjk-serif'/package.nix similarity index 91% rename from nix/packages/noto-fonts-cjk-serif.nix rename to nix/packages/by-name/noto-fonts-cjk-serif'/package.nix index 1da4ac2c..4fa774b8 100644 --- a/nix/packages/noto-fonts-cjk-serif.nix +++ b/nix/packages/by-name/noto-fonts-cjk-serif'/package.nix @@ -1,3 +1,4 @@ +# static version of noto-fonts cjk serif { stdenvNoCC, fetchFromGitHub, diff --git a/nix/packages/by-name/prop-solveur/package.nix b/nix/packages/by-name/prop-solveur/package.nix new file mode 100644 index 00000000..c9200357 --- /dev/null +++ b/nix/packages/by-name/prop-solveur/package.nix @@ -0,0 +1,33 @@ +{ + haskellPackages, + haskell, + fetchFromGitea, + installShellFiles, +}: let + inherit (haskell.lib.compose) justStaticExecutables overrideCabal; + + drv = + haskellPackages.callCabal2nix "prop-solveur" + (fetchFromGitea { + domain = "git.confusedcompiler.org"; + owner = "leana8959"; + repo = "prop_solveur"; + rev = "cc2430dc5a396b01d02bd925070ce5d009d05bc4"; + hash = "sha256-jwNfRBytf/w0d2CWczXp+rVRXYNzptkuFE3OKSdOhLc="; + }) + {}; + + cabalOverrides = o: { + buildTools = o.buildTools or [] ++ [installShellFiles]; + postInstall = + o.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") + ''; + }; +in + justStaticExecutables + (overrideCabal cabalOverrides drv) diff --git a/nix/packages/tokei/default.nix b/nix/packages/by-name/tokei/package.nix similarity index 100% rename from nix/packages/tokei/default.nix rename to nix/packages/by-name/tokei/package.nix diff --git a/nix/packages/tokei/skel.patch b/nix/packages/by-name/tokei/skel.patch similarity index 100% rename from nix/packages/tokei/skel.patch rename to nix/packages/by-name/tokei/skel.patch diff --git a/nix/packages/tokei/why3.patch b/nix/packages/by-name/tokei/why3.patch similarity index 100% rename from nix/packages/tokei/why3.patch rename to nix/packages/by-name/tokei/why3.patch diff --git a/nix/packages/typst-mutilate.nix b/nix/packages/by-name/typst-mutilate/package.nix similarity index 100% rename from nix/packages/typst-mutilate.nix rename to nix/packages/by-name/typst-mutilate/package.nix diff --git a/nix/packages/webtoon_downloader.nix b/nix/packages/by-name/webtoon_downloader/package.nix similarity index 100% rename from nix/packages/webtoon_downloader.nix rename to nix/packages/by-name/webtoon_downloader/package.nix diff --git a/nix/packages/xbrightness.nix b/nix/packages/by-name/xbrightness/package.nix similarity index 100% rename from nix/packages/xbrightness.nix rename to nix/packages/by-name/xbrightness/package.nix diff --git a/nix/packages/default.nix b/nix/packages/default.nix index 6261bded..49124173 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; - - 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"; - }; -} +args: +import ./top-level.nix args +// import ./by-name.nix args diff --git a/nix/packages/top-level.nix b/nix/packages/top-level.nix new file mode 100644 index 00000000..a7af20ea --- /dev/null +++ b/nix/packages/top-level.nix @@ -0,0 +1,18 @@ +{ + sources ? import ../sources.nix, + pkgs ? import sources.nixpkgs {}, + ... +}: let + 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" + ]; + }; +}