diff --git a/cbits/nix.cpp b/cbits/nix.cpp index 6305001..52b13e9 100644 --- a/cbits/nix.cpp +++ b/cbits/nix.cpp @@ -1,8 +1,10 @@ #include #include -#include -#include -#include + +#include +#include +#include + #include "nix.hh" using namespace nix; diff --git a/default.nix b/default.nix index f8a169d..cb27f93 100644 --- a/default.nix +++ b/default.nix @@ -1,9 +1,14 @@ -(import ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - in fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; } -) { - src = ./.; -}).defaultNix +(import + ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { + src = ./.; + } +).defaultNix diff --git a/flake.lock b/flake.lock index b4bbcf0..dc11c83 100644 --- a/flake.lock +++ b/flake.lock @@ -18,16 +18,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732238832, - "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", + "lastModified": 1744174375, + "narHash": "sha256-oxI9TLgnQbQ/WL0tIwVSIooLbXq4PW1QUhf5aQmXFgk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", + "rev": "ef3a956f697525883b77192cbe208233ea0f8f79", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 07eb857..f578d3d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,7 @@ -{ inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; +{ + inputs = { + # Temporary, until Nixpkgs master has Nix 2.28 + nixpkgs.url = "github:NixOS/nixpkgs/master"; utils.url = "github:numtide/flake-utils"; @@ -9,7 +11,8 @@ }; }; - outputs = { nixpkgs, utils, ... }: + outputs = + { nixpkgs, utils, ... }: let compiler = "ghc94"; @@ -21,25 +24,21 @@ haskell = prev.haskell // { packages = prev.haskell.packages // { "${compiler}" = prev.haskell.packages."${compiler}".override (old: { - overrides = - final.lib.fold final.lib.composeExtensions (old.overrides or (_: _: { })) [ - (final.haskell.lib.packageSourceOverrides { - nix-serve-ng = ./.; + overrides = final.lib.fold final.lib.composeExtensions (old.overrides or (_: _: { })) [ + (final.haskell.lib.packageSourceOverrides { + nix-serve-ng = ./.; - base16 = "1.0"; - }) - (haskellPackagesNew: haskellPackagesOld: { - nix-serve-ng = - final.haskell.lib.overrideCabal - haskellPackagesOld.nix-serve-ng - (old: { - executableSystemDepends = (old.executableSystemDepends or []) ++ [ - final.boost.dev - final.nixVersions.nix_2_24 - ]; - }); - }) - ]; + base16 = "1.0"; + }) + (haskellPackagesNew: haskellPackagesOld: { + nix-serve-ng = final.haskell.lib.overrideCabal haskellPackagesOld.nix-serve-ng (old: { + executableSystemDepends = (old.executableSystemDepends or [ ]) ++ [ + final.boost.dev + final.nixVersions.nix_2_28 + ]; + }); + }) + ]; }); }; }; @@ -50,58 +49,62 @@ }; in - utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { - config = { }; + utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + config = { }; - overlays = [ overlay ]; + overlays = [ overlay ]; - inherit system; - }; - - inherit (pkgs) nix-serve-ng; - - in - rec { - packages.default = nix-serve-ng; - - defaultPackage = packages.default; - - apps.default = { - type = "app"; - - program = "${nix-serve-ng}/bin/nix-serve"; - }; - - defaultApp = apps.default; - - devShells.default = - (pkgs.haskell.lib.doBenchmark - pkgs.haskell.packages."${compiler}".nix-serve-ng - ).env; - - devShell = devShells.default; - }) // rec { - overlays = { - # The default overlay only adds the exports for - # `pkgs.haskell.packages."${compiler}".nix-serve-ng` and - # `pkgs.nix-serve-ng` - default = overlay; - - # This overlay additionally overrides `pkgs.nix-serve` to refer to - # `pkgs.nix-serve-ng` - override = final: prev: { - nix-serve = final.nix-serve-ng; - }; + inherit system; }; - # The NixOS module is a thin wrapper around the overlay to replace - # `nix-serve` with `nix-serve-ng` - # - # You can continue to use the old `services.nix-serve` NixOS options. - nixosModules.default = { - nixpkgs.overlays = [ overlays.default overlays.override ]; + inherit (pkgs) nix-serve-ng; + + in + rec { + packages.default = nix-serve-ng; + + defaultPackage = packages.default; + + apps.default = { + type = "app"; + + program = "${nix-serve-ng}/bin/nix-serve"; + }; + + defaultApp = apps.default; + + devShells.default = + (pkgs.haskell.lib.doBenchmark pkgs.haskell.packages."${compiler}".nix-serve-ng).env; + + devShell = devShells.default; + } + ) + // rec { + overlays = { + # The default overlay only adds the exports for + # `pkgs.haskell.packages."${compiler}".nix-serve-ng` and + # `pkgs.nix-serve-ng` + default = overlay; + + # This overlay additionally overrides `pkgs.nix-serve` to refer to + # `pkgs.nix-serve-ng` + override = final: prev: { + nix-serve = final.nix-serve-ng; }; }; + + # The NixOS module is a thin wrapper around the overlay to replace + # `nix-serve` with `nix-serve-ng` + # + # You can continue to use the old `services.nix-serve` NixOS options. + nixosModules.default = { + nixpkgs.overlays = [ + overlays.default + overlays.override + ]; + }; + }; } diff --git a/shell.nix b/shell.nix index b769069..ed7286c 100644 --- a/shell.nix +++ b/shell.nix @@ -1,9 +1,14 @@ -(import ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - in fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; } -) { - src = ./.; -}).shellNix +(import + ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { + src = ./.; + } +).shellNix