From ff2ddb551ef48bc67782eeefb4b54cda516e77c8 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 25 May 2026 20:56:38 +0200 Subject: [PATCH] nix: add packaging infrastructure, provide rpm package --- flake.nix | 6 ++++- nix/packaging/default.nix | 52 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 nix/packaging/default.nix diff --git a/flake.nix b/flake.nix index 9f2930c..6397889 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,10 @@ outputs = { self, nixpkgs }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; - + packaging = import ./nix/packaging { + inherit pkgs; + inherit (self.packages.${system}) zedless; + }; in { devShells.${system}.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ @@ -23,6 +26,7 @@ source = self.packages.${system}.zedless-source; }; default = self.packages.${system}.zedless; + inherit (packaging) rpm; }; }; } diff --git a/nix/packaging/default.nix b/nix/packaging/default.nix new file mode 100644 index 0000000..29ac959 --- /dev/null +++ b/nix/packaging/default.nix @@ -0,0 +1,52 @@ +{ pkgs, zedless }: + +let + zedless-fhs = pkgs.runCommand "zedless-fhs-${zedless.version}" { + } '' + cp -r --no-preserve=mode ${zedless} $out + patchelf $out/bin/zedless $out/libexec/zedless-editor --set-interpreter /lib64/ld-linux-x86-64.so.2 --remove-rpath + ''; + + nfpmConfig = pkgs.writeText "nfpm.json" (builtins.toJSON { + name = zedless.pname; + inherit (zedless) version; + arch = "amd64"; + platform = "linux"; + homepage = "https://zedless.org"; + description = "Zedless Editor"; + license = zedless.meta.license.spdxId; + contents = [ + { + type = "tree"; + src = zedless-fhs; + dst = "/usr"; + } + ]; + rpm.compression = "zstd"; + }); +in + +{ + rpm = pkgs.runCommand "zedless-rpm-${zedless.version}" { + nativeBuildInputs = [ + pkgs.elfdeps + pkgs.nfpm + pkgs.jq + ]; + } '' + mkdir $out + ( + elfdeps --requires ${zedless-fhs}/bin/zedless + elfdeps --requires ${zedless-fhs}/libexec/zedless-editor + ) | sort -u | jq --raw-input --slurp --slurpfile config ${nfpmConfig} ' + $config[0] * { + overrides: { + rpm: { + depends: split("\n") | map(select(length > 0)) + } + } + } + ' > nfpm.json + nfpm package --config nfpm.json --target $out/${zedless.name}.rpm --packager rpm + ''; +}