add(flake.nix): bun2nix

This commit is contained in:
2026-06-07 18:21:56 +01:00
parent 5ae28029ef
commit e23169c699
2 changed files with 159 additions and 79 deletions
+77 -78
View File
@@ -4,87 +4,86 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
flake-utils.url = "github:numtide/flake-utils";
# Added for oh-my-pi
bun2nix.url = "github:nix-community/bun2nix";
bun2nix.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
{
self,
nixpkgs,
flake-utils,
}@inputs:
(nixpkgs.lib.recursiveUpdate
(flake-utils.lib.eachSystem
[
"x86_64-linux"
"aarch64-linux"
]
(
system:
let
pkgs = import nixpkgs {
inherit system;
config = {
allowUnfree = true;
};
outputs = {
self,
nixpkgs,
bun2nix,
flake-utils,
} @ inputs: (
nixpkgs.lib.recursiveUpdate
(
flake-utils.lib.eachSystem
[
"x86_64-linux"
"aarch64-linux"
]
(
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [bun2nix.overlays.default];
config = {
allowUnfree = true;
};
inherit (pkgs) lib;
scope = lib.makeScope pkgs.newScope (final: self.overlays.default (pkgs // final) pkgs);
recursePackage =
name: pkg:
let
isDrv = lib.isDerivation pkg;
isAttrs = lib.isAttrs pkg;
isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg;
in
if !isSameSystem then
[ ]
else if isDrv then
[
(lib.nameValuePair name pkg)
]
else if isAttrs then
lib.mapAttrsToList (nameNew: subPkg: recursePackage "${name}-${nameNew}" subPkg) pkg
else
[ ];
flatPackages = builtins.listToAttrs (
lib.lists.flatten (lib.mapAttrsToList (name: pkg: recursePackage name pkg) scope)
);
workingPackages = lib.filterAttrs (_: pkg: !pkg.meta.broken) flatPackages;
# Disable for now
# recursePackageSets =
# pkg:
# let
# isDrv = lib.isDerivation pkg;
# isAttrs = lib.isAttrs pkg;
# isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg;
# in
# if isDrv && isSameSystem then
# pkg
# else if isAttrs then
# lib.mapAttrs (_: subPkg: recursePackageSets subPkg) pkg
# else
# null;
#
# # Recursively filter out nulls and remove overrides (probably a btter way to do this but it works for now)
# packageSets = lib.filterAttrsRecursive (k: v: v != null && k != "override") (
# lib.mapAttrs (name: pkg: recursePackageSets pkg) scope
# );
};
inherit (pkgs) lib;
scope = lib.makeScope pkgs.newScope (final: self.overlays.default (pkgs // final) pkgs);
recursePackage = name: pkg: let
isDrv = lib.isDerivation pkg;
isAttrs = lib.isAttrs pkg;
isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg;
in
{
overlays = final: prev: flatPackages;
packages = flatPackages;
checks = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") workingPackages;
devShells.default = pkgs.mkShellNoCC {
packages = [ pkgs.nvfetcher ];
};
}
)
if !isSameSystem
then []
else if isDrv
then [
(lib.nameValuePair name pkg)
]
else if isAttrs
then lib.mapAttrsToList (nameNew: subPkg: recursePackage "${name}-${nameNew}" subPkg) pkg
else [];
flatPackages = builtins.listToAttrs (
lib.lists.flatten (lib.mapAttrsToList (name: pkg: recursePackage name pkg) scope)
);
workingPackages = lib.filterAttrs (_: pkg: !pkg.meta.broken) flatPackages;
# Disable for now
# recursePackageSets =
# pkg:
# let
# isDrv = lib.isDerivation pkg;
# isAttrs = lib.isAttrs pkg;
# isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg;
# in
# if isDrv && isSameSystem then
# pkg
# else if isAttrs then
# lib.mapAttrs (_: subPkg: recursePackageSets subPkg) pkg
# else
# null;
#
# # Recursively filter out nulls and remove overrides (probably a btter way to do this but it works for now)
# packageSets = lib.filterAttrsRecursive (k: v: v != null && k != "override") (
# lib.mapAttrs (name: pkg: recursePackageSets pkg) scope
# );
in {
overlays = final: prev: flatPackages;
packages = flatPackages;
checks = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") workingPackages;
devShells.default = pkgs.mkShellNoCC {
packages = [pkgs.nvfetcher];
};
}
)
{
overlays = {
default =
final: prev: ((import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev);
};
}
);
)
{
overlays = {
default = final: prev: ((import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev);
};
}
);
}