diff --git a/flake.lock b/flake.lock index 32302cb..d6355ba 100644 --- a/flake.lock +++ b/flake.lock @@ -1,8 +1,52 @@ { "nodes": { + "bun2nix": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1778446047, + "narHash": "sha256-oQvcadh2BCkrog+SGrG6YffKJrveYpjj3TdQJWaKhaM=", + "owner": "nix-community", + "repo": "bun2nix", + "rev": "f2bc12af1a6369648aac41041ceeaa0b866599c6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "bun2nix", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "bun2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777988971, + "narHash": "sha256-qIoWPDs+0/8JecyYgE3gpKQxW/4bLW/gp45vow9ioCQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1731533236, @@ -36,6 +80,7 @@ }, "root": { "inputs": { + "bun2nix": "bun2nix", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } @@ -54,6 +99,42 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "bun2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775636079, + "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 3e8f493..768fc37 100644 --- a/flake.nix +++ b/flake.nix @@ -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); + }; + } + ); }