From 1ec0ed1babf1e6395e749ace7e8fe1b14d493a82 Mon Sep 17 00:00:00 2001 From: xenia Date: Mon, 21 Oct 2024 16:59:17 -0400 Subject: [PATCH] introduce flake that exports nixpkgs with overlays --- .gitignore | 2 ++ default.nix | 51 ++------------------------------------------------- flake.nix | 37 +++++++++++++++++++++++++++++++++++++ module.nix | 5 +++++ overlay.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 49 deletions(-) create mode 100644 flake.nix create mode 100644 module.nix create mode 100644 overlay.nix diff --git a/.gitignore b/.gitignore index c4a847d..d505bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /result +# we ignore flake.lock because this isn't intended to pin a specific version of nixpkgs +/flake.lock diff --git a/default.nix b/default.nix index 0641cee..91936d3 100644 --- a/default.nix +++ b/default.nix @@ -1,52 +1,5 @@ { ... }: - { - imports = [ - ./modules/ghidra-server - ]; - - nixpkgs.overlays = [ - (final: prev: { - fetchFromSteam = prev.callPackage ./lib/fetchsteam {}; - fetchb4 = prev.callPackage ./lib/fetchb4 {}; - - gitSource = prev.callPackage ./lib/git-source {}; - - makeSquashFs = prev.callPackage ./lib/make-squashfs {}; - makeHpcDist = final.callPackage ./lib/make-hpc-dist {}; - - ghidra_headless = prev.ghidra.override { - openjdk17 = prev.openjdk17_headless; - }; - - - # stuff that tracks upstream - ghidra = final.callPackage ./pkgs/ghidra-xenia/build.nix { - protobuf = final.protobuf_21; - }; - ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/ghidra-xenia/extensions.nix { }); - ghidra-bin = final.callPackage ./pkgs/ghidra-xenia { }; - - kicad = final.callPackage ./pkgs/kicad-xenia { }; - kicadAddons = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/kicad-xenia/addons {}); - # end stuff that tracks upstream - - - ocamlPackages = prev.ocamlPackages.overrideScope (ofinal: oprev: { - ppx_unicode = ofinal.callPackage ./pkgs/ocaml/ppx_unicode {}; - xlog = ofinal.callPackage ./pkgs/ocaml/xlog {}; - }); - - python312Packages = prev.python312Packages.overrideScope (pfinal: pprev: { - feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {}; - }); - - # add to top level because it has a binary - feedvalidator = final.python312Packages.feedvalidator; - - outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {}; - - mkNginxServer = prev.callPackage ./lib/dev-nginx {}; - }) - ]; + imports = [ ./module.nix ]; + nixpkgs.overlays = import ./overlay.nix; } diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0e3a406 --- /dev/null +++ b/flake.nix @@ -0,0 +1,37 @@ +{ + description = "dragnpkgs together with nixpkgs and lix"; + + inputs = { + lix-module = { + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; + flake = false; + }; + lix = { + url = "https://git.lix.systems/lix-project/lix/archive/2.91.0.tar.gz"; + flake = false; + }; + }; + + outputs = { self, nixpkgs, lix, lix-module }: + let + overlays = [ + (import ./overlay.nix) + (import "${lix-module}/overlay.nix" { inherit lix; }) + ]; + forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; + in { + lib = nixpkgs.lib.extend (final: prev: { + nixosSystem = (args: prev.nixosSystem { + modules = args.modules ++ [ + ({ ... }: { nixpkgs.overlays = overlays; }) + ]; + } // builtins.removeAttrs args [ "modules" ]); + }); + + legacyPackages = forAllSystems (system: + nixpkgs.legacyPackages.${system}.appendOverlays overlays + ); + + nixosModules = nixpkgs.nixosModules; + }; +} diff --git a/module.nix b/module.nix new file mode 100644 index 0000000..fb439e6 --- /dev/null +++ b/module.nix @@ -0,0 +1,5 @@ +{ ... }: { + imports = [ + ./modules/ghidra-server + ]; +} diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..11e29c2 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,42 @@ +final: prev: { + fetchFromSteam = prev.callPackage ./lib/fetchsteam {}; + fetchb4 = prev.callPackage ./lib/fetchb4 {}; + + gitSource = prev.callPackage ./lib/git-source {}; + + makeSquashFs = prev.callPackage ./lib/make-squashfs {}; + makeHpcDist = final.callPackage ./lib/make-hpc-dist {}; + + ghidra_headless = prev.ghidra.override { + openjdk17 = prev.openjdk17_headless; + }; + + + # stuff that tracks upstream + ghidra = final.callPackage ./pkgs/ghidra-xenia/build.nix { + protobuf = final.protobuf_21; + }; + ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/ghidra-xenia/extensions.nix { }); + ghidra-bin = final.callPackage ./pkgs/ghidra-xenia { }; + + kicad = final.callPackage ./pkgs/kicad-xenia { }; + kicadAddons = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/kicad-xenia/addons {}); + # end stuff that tracks upstream + + + ocamlPackages = prev.ocamlPackages.overrideScope (ofinal: oprev: { + ppx_unicode = ofinal.callPackage ./pkgs/ocaml/ppx_unicode {}; + xlog = ofinal.callPackage ./pkgs/ocaml/xlog {}; + }); + + python312Packages = prev.python312Packages.overrideScope (pfinal: pprev: { + feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {}; + }); + + # add to top level because it has a binary + feedvalidator = final.python312Packages.feedvalidator; + + outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {}; + + mkNginxServer = prev.callPackage ./lib/dev-nginx {}; +}