diff --git a/default.nix b/default.nix
index 16e37dd..39bacff 100644
--- a/default.nix
+++ b/default.nix
@@ -1,27 +1,7 @@
-# SPDX-FileCopyrightText: 2020 Serokell
-#
-# SPDX-License-Identifier: MPL-2.0
-
-#
-# nix-flakes shim
-#
-
-let
- sources = builtins.removeAttrs (import ./nix/sources.nix) ["__functor"];
- # https://github.com/input-output-hk/haskell.nix/blob/master/lib/override-with.nix
- tryOverride = override: default:
- let
- try = builtins.tryEval (builtins.findFile builtins.nixPath override);
- in if try.success then
- builtins.trace "using search host <${override}>" try.value
- else
- default;
- inputs = builtins.mapAttrs (name: s: import (tryOverride "flake-${name}" s)) sources;
- flake = (import ./flake.nix).outputs (inputs // { self = flake; });
-in
-{ exposeFlake ? false }:
-if exposeFlake then
- flake
-else {
- inherit (flake.packages) with-utf8;
-}
+(import (
+ fetchTarball {
+ url = "https://github.com/edolstra/flake-compat/archive/99f1c2157fba4bfe6211a321fd0ee43199025dbf.tar.gz";
+ sha256 = "0x2jn3vrawwv9xp15674wjz9pixwjyj3j771izayl962zziivbx2"; }
+) {
+ src = ./.;
+}).defaultNix
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..dfad10c
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,60 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "haskell-nix": {
+ "locked": {
+ "lastModified": 1613524507,
+ "narHash": "sha256-vIjgOb6PKGtLpSDbKV6J2dI4nR8SOcST1I1B+qOhsR8=",
+ "owner": "input-output-hk",
+ "repo": "haskell.nix",
+ "rev": "ba87ffb84bc4158ada14908bddee9df2c81ac31b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "input-output-hk",
+ "repo": "haskell.nix",
+ "rev": "ba87ffb84bc4158ada14908bddee9df2c81ac31b",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1608007629,
+ "narHash": "sha256-lipVFC/a2pzzA5X2ULj64je+fz1JIp2XRrB5qyoizpQ=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "f02bf8ffb9a5ec5e8f6f66f1e5544fd2aa1a0693",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "f02bf8ffb9a5ec5e8f6f66f1e5544fd2aa1a0693",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "haskell-nix": "haskell-nix",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
index 0d9fdd6..48bd7e4 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,31 +3,42 @@
# SPDX-License-Identifier: MPL-2.0
{
- edition = 201911;
-
description = "Get your UTF-8 IO right on the first try";
- outputs = { self, nixpkgs, haskell-nix }:
- let
- pkgs = nixpkgs {
- overlays = haskell-nix.overlays;
- };
+ inputs = {
+ flake-utils.url = "github:numtide/flake-utils";
+ haskell-nix.url = "github:input-output-hk/haskell.nix/ba87ffb84bc4158ada14908bddee9df2c81ac31b";
+ nixpkgs.url = "github:nixos/nixpkgs/f02bf8ffb9a5ec5e8f6f66f1e5544fd2aa1a0693";
+ };
- project = pkgs.haskell-nix.stackProject {
- src = pkgs.haskell-nix.haskellLib.cleanGit {
- name = "with-utf8";
- src = ./.;
+ outputs = { self, nixpkgs, flake-utils, haskell-nix }:
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = nixpkgs.legacyPackages.${system}.extend haskell-nix.overlay;
+
+ project = pkgs.haskell-nix.stackProject {
+ src = pkgs.haskell-nix.haskellLib.cleanGit {
+ name = "with-utf8";
+ src = ./.;
+ };
};
- };
- with-utf8 = project.with-utf8;
- in {
- packages = {
- with-utf8 = with-utf8.components.library;
- };
+ with-utf8 = project.with-utf8;
+ in rec {
+ packages = {
+ with-utf8 = with-utf8.components.library;
+ };
+ defaultPackage = packages.with-utf8;
- checks = {
- build = self.packages.with-utf8;
- test = with-utf8.checks.with-utf8-test;
- };
- };
+ checks = {
+ build = packages.with-utf8;
+ test = with-utf8.checks.with-utf8-test;
+ };
+
+ apps.utf8-troubleshoot = {
+ type = "app";
+ program = "${with-utf8.components.exes.utf8-troubleshoot}/bin/utf8-troubleshoot";
+ };
+ defaultApp = apps.utf8-troubleshoot;
+ }
+ );
}
diff --git a/nix/sources.json b/nix/sources.json
deleted file mode 100644
index 831db56..0000000
--- a/nix/sources.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "haskell-nix": {
- "branch": "master",
- "description": "Alternative Haskell Infrastructure for Nixpkgs",
- "homepage": "https://input-output-hk.github.io/haskell.nix",
- "owner": "input-output-hk",
- "repo": "haskell.nix",
- "rev": "e9f59def792a01b9937ef0c27fe96903aa173829",
- "sha256": "19384g77wd8rxpryj12m2002l7nfw3j9nv1w44j2apayj9y8sbll",
- "type": "tarball",
- "url": "https://github.com/input-output-hk/haskell.nix/archive/e9f59def792a01b9937ef0c27fe96903aa173829.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "nixpkgs": {
- "branch": "master",
- "description": "Pinned Nixpkgs tree (master follows nixos-unstable-small, only tags have stable history)",
- "homepage": "",
- "owner": "serokell",
- "repo": "nixpkgs",
- "rev": "17d9bc51f6cbc37339332e9bf9e82d172c642e7c",
- "sha256": "0ckvgiif2xwbrl0sd301p4nldkc3y7qpvrvag9pykswsissbhi5v",
- "type": "tarball",
- "url": "https://github.com/serokell/nixpkgs/archive/17d9bc51f6cbc37339332e9bf9e82d172c642e7c.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- }
-}
diff --git a/nix/sources.json.license b/nix/sources.json.license
deleted file mode 100644
index 0095d07..0000000
--- a/nix/sources.json.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2020 Serokell
-
-SPDX-License-Identifier: MPL-2.0
diff --git a/nix/sources.nix b/nix/sources.nix
deleted file mode 100644
index 2de89a6..0000000
--- a/nix/sources.nix
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file has been generated by Niv.
-
-# A record, from name to path, of the third-party packages
-with rec
-{
- pkgs =
- if hasNixpkgsPath
- then
- if hasThisAsNixpkgsPath
- then import (builtins_fetchTarball { inherit (sources_nixpkgs) url sha256; }) {}
- else import {}
- else
- import (builtins_fetchTarball { inherit (sources_nixpkgs) url sha256; }) {};
-
- sources_nixpkgs =
- if builtins.hasAttr "nixpkgs" sources
- then sources.nixpkgs
- else abort
- ''
- Please specify either (through -I or NIX_PATH=nixpkgs=...) or
- add a package called "nixpkgs" to your sources.json.
- '';
-
- # fetchTarball version that is compatible between all the versions of Nix
- builtins_fetchTarball = { url, sha256 }@attrs:
- let
- inherit (builtins) lessThan nixVersion fetchTarball;
- in
- if lessThan nixVersion "1.12" then
- fetchTarball { inherit url; }
- else
- fetchTarball attrs;
-
- # fetchurl version that is compatible between all the versions of Nix
- builtins_fetchurl = { url, sha256 }@attrs:
- let
- inherit (builtins) lessThan nixVersion fetchurl;
- in
- if lessThan nixVersion "1.12" then
- fetchurl { inherit url; }
- else
- fetchurl attrs;
-
- # A wrapper around pkgs.fetchzip that has inspectable arguments,
- # annoyingly this means we have to specify them
- fetchzip = { url, sha256 }@attrs: pkgs.fetchzip attrs;
-
- # A wrapper around pkgs.fetchurl that has inspectable arguments,
- # annoyingly this means we have to specify them
- fetchurl = { url, sha256 }@attrs: pkgs.fetchurl attrs;
-
- hasNixpkgsPath = (builtins.tryEval ).success;
- hasThisAsNixpkgsPath =
- (builtins.tryEval ).success && == ./.;
-
- sources = builtins.fromJSON (builtins.readFile ./sources.json);
-
- mapAttrs = builtins.mapAttrs or (
- f: set: with builtins;
- listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
- );
-
- # borrowed from nixpkgs
- functionArgs = f: f.__functionArgs or (builtins.functionArgs f);
- callFunctionWith = autoArgs: f: args:
- let
- auto = builtins.intersectAttrs (functionArgs f) autoArgs;
- in
- f (auto // args);
-
- getFetcher = spec:
- let
- fetcherName =
- if builtins.hasAttr "type" spec
- then builtins.getAttr "type" spec
- else "builtin-tarball";
- in
- builtins.getAttr fetcherName {
- "tarball" = fetchzip;
- "builtin-tarball" = builtins_fetchTarball;
- "file" = fetchurl;
- "builtin-url" = builtins_fetchurl;
- };
-};
-# NOTE: spec must _not_ have an "outPath" attribute
-mapAttrs (
- _: spec:
- if builtins.hasAttr "outPath" spec
- then abort
- "The values in sources.json should not have an 'outPath' attribute"
- else
- if builtins.hasAttr "url" spec && builtins.hasAttr "sha256" spec
- then
- spec // { outPath = callFunctionWith spec (getFetcher spec) {}; }
- else spec
-) sources
diff --git a/nix/sources.nix.license b/nix/sources.nix.license
deleted file mode 100644
index 9505878..0000000
--- a/nix/sources.nix.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2019 Nicolas Mattia
-
-SPDX-License-Identifier: LicenseRef-MIT-nmattia