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