]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - flakes/backports/flake.nix
Move packages to flakes
[perso/Immae/Config/Nix.git] / flakes / backports / flake.nix
diff --git a/flakes/backports/flake.nix b/flakes/backports/flake.nix
new file mode 100644 (file)
index 0000000..89a9f40
--- /dev/null
@@ -0,0 +1,100 @@
+{
+  description = "Backported packages";
+
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
+    let
+      pkgs = import nixpkgs { inherit system; overlays = []; };
+    in rec {
+      packages = {
+        apprise = pkgs.apprise;
+        bitlbee-mastodon = pkgs.bitlbee-mastodon;
+        cointop = pkgs.cointop;
+        cryptpad = pkgs.cryptpad;
+        dovecot_fts-xapian = pkgs.dovecot_fts_xapian;
+        duply = pkgs.duply;
+        fiche = pkgs.fiche;
+        influxdb2 = pkgs.influxdb2;
+        mpd = pkgs.mpd;
+        mpd-small = pkgs.mpd-small;
+        pg_activity = pkgs.pg_activity;
+        signald = pkgs.signald;
+        stgit = pkgs.stgit;
+        telegram-cli = pkgs.telegram-cli;
+        woob = pkgs.python3Packages.woob;
+        zrepl = pkgs.zrepl;
+      };
+      legacyPackages = packages;
+      apps = {
+        apprise = flake-utils.lib.mkApp { drv = packages.apprise; name = "apprise"; };
+        cointop = flake-utils.lib.mkApp { drv = packages.cointop; name = "cointop"; };
+        cryptpad = flake-utils.lib.mkApp { drv = packages.cryptpad; name = "cryptpad"; };
+        duply = flake-utils.lib.mkApp { drv = packages.duply; name = "duply"; };
+        fiche = flake-utils.lib.mkApp { drv = packages.fiche; name = "fiche"; };
+        influxd = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influxd"; };
+        influx = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influx"; };
+        mpd = flake-utils.lib.mkApp { drv = packages.mpd; name = "mpd"; };
+        mpd-small = flake-utils.lib.mkApp { drv = packages.mpd-small; name = "mpd"; };
+        pg_activity = flake-utils.lib.mkApp { drv = packages.pg_activity; name = "pg_activity"; };
+        signald = flake-utils.lib.mkApp { drv = packages.signald; name = "signald"; };
+        stgit = flake-utils.lib.mkApp { drv = packages.stgit; name = "stgit"; };
+        telegram-cli = flake-utils.lib.mkApp { drv = packages.telegram-cli; name = "telegram-cli"; };
+        woob = flake-utils.lib.mkApp { drv = packages.woob; name = "woob"; };
+        zrepl = flake-utils.lib.mkApp { drv = packages.zrepl; name = "zrepl"; };
+      };
+    }
+  ) // rec {
+    lib = {
+      overrideDeps = pkgs: package: let
+          packageDeps = builtins.attrNames package.override.__functionArgs;
+        in package.override (pkgs.lib.genAttrs packageDeps (n: pkgs."${n}"));
+    };
+    overlays = {
+      apprise = final: prev: { apprise = self.packages."${final.system}".apprise; };
+      bitlbee-mastodon = final: prev: {
+        bitlbee-mastodon = lib.overrideDeps final self.packages."${final.system}".bitlbee-mastodon;
+      };
+      cointop = final: prev: { cointop = self.packages."${final.system}".cointop; };
+      cryptpad = final: prev: { cryptpad = self.packages."${final.system}".cryptpad; };
+      dovecot_fts-xapian = final: prev: {
+        dovecot_fts-xapian = lib.overrideDeps final self.packages."${final.system}".dovecot_fts-xapian;
+      };
+      duply = final: prev: { duply = self.packages."${final.system}".duply; };
+      fiche = final: prev: { fiche = self.packages."${final.system}".fiche; };
+      influxdb2 = final: prev: { influxdb2 = self.packages."${final.system}".influxdb2; };
+      mpd = final: prev: { mpd = self.packages."${final.system}".mpd; };
+      pg_activity = final: prev: { pg_activity = self.packages."${final.system}".pg_activity; };
+      signald = final: prev: { signald = self.packages."${final.system}".signald; };
+      stgit = final: prev: { stgit = self.packages."${final.system}".stgit; };
+      telegram-cli = final: prev: { telegram-cli = self.packages."${final.system}".telegram-cli; };
+      woob = final: prev: { woob = self.packages."${final.system}".woob; };
+      zrepl = final: prev: { zrepl = self.packages."${final.system}".zrepl; };
+    };
+    overlay = final: prev: ({}
+      // overlays.apprise final prev
+      // overlays.bitlbee-mastodon final prev
+      // overlays.cointop final prev
+      // overlays.cryptpad final prev
+      // overlays.dovecot_fts-xapian final prev
+      // overlays.duply final prev
+      // overlays.fiche final prev
+      // overlays.influxdb2 final prev
+      // overlays.mpd final prev
+      // overlays.pg_activity final prev
+      // overlays.signald final prev
+      // overlays.stgit final prev
+      // overlays.telegram-cli final prev
+      // overlays.woob final prev
+      // overlays.zrepl final prev
+    );
+
+    nixosModules = {
+      influxdb2 = import (nixpkgs + "/nixos/modules/services/databases/influxdb2.nix");
+      mpd = import (nixpkgs + "/nixos/modules/services/audio/mpd.nix");
+      zrepl = import (nixpkgs + "/nixos/modules/services/backup/zrepl.nix");
+    };
+  };
+}
+