From d520ef29a4ef46a5f78e3bddf5d9f9c084d50aad Mon Sep 17 00:00:00 2001 From: jurraca Date: Mon, 18 Nov 2024 16:15:39 +0000 Subject: [PATCH] Remove flake-inputs; refactor and split out package --- flake.lock | 42 +++---------------------- flake.nix | 91 ++++++++++++++++++----------------------------------- module.nix | 3 +- package.nix | 38 ++++++++++++++++++++++ 4 files changed, 74 insertions(+), 100 deletions(-) create mode 100644 package.nix diff --git a/flake.lock b/flake.lock index 00f33f9..1d30fde 100644 --- a/flake.lock +++ b/flake.lock @@ -19,8 +19,7 @@ "root": { "inputs": { "nixpkgs": "nixpkgs", - "rpki-cli": "rpki-cli", - "utils": "utils_2" + "rpki-cli": "rpki-cli" } }, "rpki-cli": { @@ -33,11 +32,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1727388158, - "narHash": "sha256-WtNCxHZ7jtpZHEagvWMcyY4pHjFAHk9k/3Z0K3pJka8=", + "lastModified": 1727819346, + "narHash": "sha256-QX4V5J2Faf2MlUnclQNzlHdF/0K72cH/4BRgJTpPWGY=", "owner": "asmap", "repo": "rpki-client-nix", - "rev": "b9b68b6d4b8170213c741362797ea13029913222", + "rev": "0a01e84611e878394a6453e5ac572ad736418230", "type": "github" }, "original": { @@ -95,21 +94,6 @@ "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" - } - }, "utils": { "inputs": { "systems": "systems" @@ -127,24 +111,6 @@ "repo": "flake-utils", "type": "github" } - }, - "utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 3439931..21a9962 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; - utils.url = "github:numtide/flake-utils"; # the rpki-client binary will be built from the flake at this URL. rpki-cli.url = "github:asmap/rpki-client-nix"; rpki-cli.inputs.nixpkgs.follows = "nixpkgs"; @@ -12,22 +11,25 @@ outputs = { self, nixpkgs, - utils, rpki-cli, - }: - # Add a kartograf module for NixOS (see module.nix for details) - { nixosModules.kartograf = import ./module.nix self; } // - # Build for all default systems: ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"] - utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + }: let + forAllSystems = nixpkgs.lib.genAttrs [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; - rpki-client = rpki-cli.defaultPackage.${system}; - pythonBuildDeps = pkgs.python311.withPackages (ps: [ - ps.beautifulsoup4 - ps.pandas - ps.requests - ps.tqdm - ]); + nixpkgsFor = system: import nixpkgs { inherit system;}; + in { + # This flake exposes the following attributes: + # * A development shell containing the rpki-client and the necessary + # Python env and packages to run kartograf. To use, run 'nix develop' + # in the current directory. + # * A default/kartograf package + # * A NixOS module + devShells.default = forAllSystems (system: let + pkgs = nixpkgsFor system; pythonDevDeps = pkgs.python311.withPackages (ps: [ ps.beautifulsoup4 ps.pandas @@ -36,51 +38,20 @@ ps.requests ps.tqdm ]); - kartografDeps = [ - pythonBuildDeps - rpki-client - ]; - in { - # This flake exposes the following attributes: - # * A development shell containing the rpki-client and the necessary - # Python env and packages to run kartograf. To use, run 'nix develop' - # in the current directory. - # * A default/kartograf package - # * A NixOS module - devShells.default = pkgs.mkShell { - packages = [rpki-client pythonDevDeps]; - }; - packages = { - kartograf = pkgs.stdenv.mkDerivation { - # not a python-installable package, so just manually copy files - pname = "kartograf"; - version = "1.0.0"; - src = ./.; - nativeBuildInputs = [pkgs.makeWrapper]; - buildInputs = kartografDeps; - propagatedBuildInputs = [rpki-client]; - buildPhase = '' - mkdir -p $out/lib/kartograf - cp -r ${./kartograf}/* $out/lib/kartograf/ - ''; - installPhase = '' - mkdir -p $out/bin - cp ${./run} $out/bin/kartograf - chmod +x $out/bin/kartograf - ''; - fixupPhase = '' - wrapProgram $out/bin/kartograf \ - --set PYTHONPATH $out/lib:$PYTHONPATH - wrapProgram $out/bin/kartograf \ - --set PATH ${rpki-cli.defaultPackage.${system}}/bin:$PATH - ''; - meta = with pkgs.lib; { - description = "Kartograf: IP to ASN mapping for everyone"; - license = licenses.mit; - homepage = "https://github.com/asmap/kartograf"; - }; - }; - default = self.packages.${system}.kartograf; + in + pkgs.mkShell { + packages = [pythonDevDeps rpki-cli.defaultPackage.${system}]; + }); + + packages = forAllSystems (system: let + pkgs = nixpkgsFor system; + in rec { + kartograf = pkgs.callPackage ./package.nix { + rpki-client = rpki-cli.defaultPackage.${system}; }; + default = kartograf; }); + + nixosModules.default = import ./module.nix; + }; } diff --git a/module.nix b/module.nix index 8ab2b03..7e62ed8 100644 --- a/module.nix +++ b/module.nix @@ -1,9 +1,8 @@ -flake: { config, pkgs, lib, ... }: +{ config, pkgs, lib, ... }: with lib; let - inherit (flake.packages.${pkgs.stdenv.hostPlatform.system}) kartograf; cfg = config.services.kartograf; postScript = pkgs.writeScriptBin "post-script" /* bash */ '' #!/${pkgs.bash}/bin/bash diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..437a61b --- /dev/null +++ b/package.nix @@ -0,0 +1,38 @@ +{pkgs, rpki-client }: +let + pythonBuildDeps = pkgs.python311.withPackages (ps: [ + ps.beautifulsoup4 + ps.pandas + ps.requests + ps.tqdm + ]); +in + pkgs.stdenv.mkDerivation { + # not a python-installable package, so just manually copy files + pname = "kartograf"; + version = "1.0.0"; + src = ./.; + nativeBuildInputs = [pkgs.makeWrapper]; + buildInputs = [ pythonBuildDeps ]; + propagatedBuildInputs = [ rpki-client ]; + buildPhase = '' + mkdir -p $out/lib/kartograf + cp -r ${./kartograf}/* $out/lib/kartograf/ + ''; + installPhase = '' + mkdir -p $out/bin + cp ${./run} $out/bin/kartograf + chmod +x $out/bin/kartograf + ''; + fixupPhase = '' + wrapProgram $out/bin/kartograf \ + --set PYTHONPATH $out/lib:$PYTHONPATH + wrapProgram $out/bin/kartograf \ + --set PATH ${rpki-client}/bin:$PATH + ''; + meta = with pkgs.lib; { + description = "Kartograf: IP to ASN mapping for everyone"; + license = licenses.mit; + homepage = "https://github.com/asmap/kartograf"; + }; + }