From b17e388400fa07e4b6611401b44aff6a28fd5fb1 Mon Sep 17 00:00:00 2001
From: Jan Beinke <git@janbeinke.com>
Date: Thu, 1 Apr 2021 00:27:38 +0200
Subject: [PATCH] Add build support for nix

---
 default.nix | 11 +++++++++++
 flake.lock  | 25 +++++++++++++++++++++++++
 flake.nix   | 32 ++++++++++++++++++++++++++++++++
 3 files changed, 68 insertions(+)
 create mode 100644 default.nix
 create mode 100644 flake.lock
 create mode 100644 flake.nix

diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..b8c5877
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,11 @@
+{ pkgs ? import <nixpkgs> {}, haskellPackages ? pkgs.haskellPackages, args ? {}}:
+
+let
+  inherit (pkgs) lib haskell;
+
+  rawdrv = haskellPackages.callCabal2nix "qbar" ./. args;
+  drv = haskell.lib.generateOptparseApplicativeCompletions [ "qbar" ] rawdrv;
+
+in
+
+  if lib.inNixShell then drv.env else drv
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..95a72bf
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,25 @@
+{
+  "nodes": {
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1616527350,
+        "narHash": "sha256-VkMevY2WLU+K7T/P4wVj18Ms8zyeRfp05ILf556m5Y8=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "d3f7e969b9860fb80750147aeb56dab1c730e756",
+        "type": "github"
+      },
+      "original": {
+        "id": "nixpkgs",
+        "type": "indirect"
+      }
+    },
+    "root": {
+      "inputs": {
+        "nixpkgs": "nixpkgs"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..4728067
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,32 @@
+{
+  outputs = { self, nixpkgs }: let
+
+    lib = nixpkgs.lib;
+
+    systems = lib.platforms.unix;
+
+    forAllSystems = f: lib.genAttrs systems (system: f system);
+
+  in {
+
+    packages = forAllSystems (system: {
+      qbar = import ./. {
+        pkgs = nixpkgs.legacyPackages."${system}";
+      };
+    });
+
+    overlay = self: super: {
+      qbar = self.haskellPackages.qd;
+      haskell = super.haskell // {
+        packageOverrides = hself: hsuper: super.haskell.packageOverrides hself hsuper // {
+          qbar = import ./. { pkgs = self; haskellPackages = hself; };
+        };
+      };
+    };
+
+    defaultPackage = forAllSystems (system: self.packages.${system}.qbar);
+
+    devShell = forAllSystems (system: self.packages.${system}.qbar.env);
+
+  };
+}
-- 
GitLab