diff --git a/index.html b/index.html index 1978097..573195e 100644 --- a/index.html +++ b/index.html @@ -286,7 +286,8 @@ pre.pygments .tok-il { color: #666666 } /* Literal.Number.Integer.Long */
  • 10.5. Build/runtime environments
  • 10.6. An (old-style) Nix shell with access to a flake
  • @@ -5133,15 +5134,93 @@ Line 15 should be replaced with:

    Unresolved directive in recipes/build/main.adoc - include::haskell-pkg/main-generated.adoc[leveloffset=+1]

    + +
    +

    10.5.2. Access to a Haskell package defined in a flake

    -

    Unresolved directive in recipes/build/main.adoc - include::haskell-flake/main-generated.adoc[leveloffset=+1]

    +

    In this example we will access three Haskell packages +(pandoc-linear-table, pandoc-logic-proof, and pandoc-columns) +that are defined as flakes on my hard drive. +We are using haskell-flake, so the development environment is +set up automatically; no need to define devShells.

    +
    +
    +
    flake.nix
    +
    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    {
    +  description = "Pandoc build system for maths web";
    +
    +  inputs = {
    +    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
    +    flake-parts.url = "github:hercules-ci/flake-parts";
    +    haskell-flake.url = "github:srid/haskell-flake";
    +    pandoc-linear-table.url = "/home/amy/github/pandoc-linear-table";
    +    pandoc-logic-proof.url = "/home/amy/github/pandoc-logic-proof";
    +    pandoc-columns.url = "/home/amy/github/pandoc-columns";
    +    pandoc-query.url = "/home/amy/codeberg/pandoc-query";
    +  };
    +  outputs = inputs@{ self, nixpkgs, flake-parts, pandoc-linear-table, pandoc-logic-proof, pandoc-columns, pandoc-query, ... }:
    +    flake-parts.lib.mkFlake { inherit inputs; } {
    +      systems = nixpkgs.lib.systems.flakeExposed;
    +      imports = [ inputs.haskell-flake.flakeModule ];
    +
    +      perSystem = { self', pkgs, ... }: {
    +        haskellProjects.default = {
    +	  # use my versions of some Haskell pagkages instead of the nixpkgs versions
    +	  packages = {
    +	    pandoc-linear-table.source = inputs.pandoc-linear-table;
    +	    pandoc-logic-proof.source = inputs.pandoc-logic-proof;
    +	    pandoc-columns.source = inputs.pandoc-columns;
    +	    pandoc-query.source = inputs.pandoc-query;
    +	  };
    +	};
    +
    +        # haskell-flake doesn't set the default package, but you can do it here.
    +        packages.default = self'.packages.pandoc-maths-web;
    +      };
    +    };
    +}
    +
    +

    Unresolved directive in recipes/build/main.adoc - include::env-var/main-generated.adoc[leveloffset=+1]

    -

    10.5.2. Access a non-flake package (not in nixpkgs)

    +

    10.5.3. Access a non-flake package (not in nixpkgs)

    In this example, we will use a nix package (not a flake) defined in a remote git repo. However, you can use any of the flake reference styles defined in Section 10.1.2, “Run a flake”.

    @@ -5306,7 +5385,7 @@ In that case, adding the dependency to buildInputs is sufficient.
    -

    Here’s a demonstration using the shell.

    +

    Here’s a demonstration using the flake.

    @@ -5376,7 +5455,7 @@ Hello from your flake!
    diff --git a/source/recipes/build/flake/tempwork/flake.lock b/source/recipes/build/flake/tempwork/flake.lock new file mode 100644 index 0000000..af219d2 --- /dev/null +++ b/source/recipes/build/flake/tempwork/flake.lock @@ -0,0 +1,128 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "hello-flake": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1757875192, + "narHash": "sha256-JBkm6NAOYjR3Sc3BxJ2ijrTqW8Ga0NlN9GPUJ/NUsGM=", + "ref": "refs/heads/main", + "rev": "2d9363f255c44a41be2e5291dd624e078e7f4139", + "revCount": 25, + "type": "git", + "url": "https://codeberg.org/mhwombat/hello-flake" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/mhwombat/hello-flake" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1757873102, + "narHash": "sha256-kYhNxLlYyJcUouNRazBufVfBInMWMyF+44xG/xar2yE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "88cef159e47c0dc56f151593e044453a39a6e547", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1757945769, + "narHash": "sha256-z/SdByTaDnEx4Zj0pyMwzY+uKxV/2TpQQ6ZKijKc2t0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "62b2408b85dc46dab0b8ca4250471b9cb23425f0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "hello-flake": "hello-flake", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/source/recipes/build/flake/tempwork/flake.nix b/source/recipes/build/flake/tempwork/flake.nix new file mode 100644 index 0000000..0db427b --- /dev/null +++ b/source/recipes/build/flake/tempwork/flake.nix @@ -0,0 +1,21 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + hello-flake.url = "git+https://codeberg.org/mhwombat/hello-flake"; + }; + + outputs = { self, nixpkgs, flake-utils, hello-flake }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + devShells = rec { + default = pkgs.mkShell { + buildInputs = [ hello-flake.packages.${system}.hello ]; + }; + }; + } + ); +} diff --git a/source/recipes/build/haskell-flake/tempwork/flake.lock b/source/recipes/build/haskell-flake/tempwork/flake.lock deleted file mode 100644 index 1136567..0000000 --- a/source/recipes/build/haskell-flake/tempwork/flake.lock +++ /dev/null @@ -1,405 +0,0 @@ -{ - "nodes": { - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, - "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, - "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" - }, - "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" - }, - "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1757871215, - "narHash": "sha256-jwZT6Ns4BXlrFHaXjZgZwfhSaw8nTCTKZ8fCDylrONM=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "2acbf1c9bb7aac38b59dcc3c1bd78911cf37e42c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-flake_2": { - "locked": { - "lastModified": 1756607542, - "narHash": "sha256-+99fEAk0HwjYgIW2tEOs7ayBDxnU9NAM5E29ZxgyX40=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "73e3891fb135c679a1c30fae4b101e5b41b8ca61", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-flake_3": { - "locked": { - "lastModified": 1756607542, - "narHash": "sha256-+99fEAk0HwjYgIW2tEOs7ayBDxnU9NAM5E29ZxgyX40=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "73e3891fb135c679a1c30fae4b101e5b41b8ca61", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-flake_4": { - "locked": { - "lastModified": 1756607542, - "narHash": "sha256-+99fEAk0HwjYgIW2tEOs7ayBDxnU9NAM5E29ZxgyX40=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "73e3891fb135c679a1c30fae4b101e5b41b8ca61", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-flake_5": { - "locked": { - "lastModified": 1756607542, - "narHash": "sha256-+99fEAk0HwjYgIW2tEOs7ayBDxnU9NAM5E29ZxgyX40=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "73e3891fb135c679a1c30fae4b101e5b41b8ca61", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1757873102, - "narHash": "sha256-kYhNxLlYyJcUouNRazBufVfBInMWMyF+44xG/xar2yE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "88cef159e47c0dc56f151593e044453a39a6e547", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-lib_2": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-lib_3": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-lib_4": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-lib_5": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1756911493, - "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1756911493, - "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1756911493, - "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1756911493, - "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "pandoc-columns": { - "inputs": { - "flake-parts": "flake-parts_2", - "haskell-flake": "haskell-flake_2", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1757244346, - "narHash": "sha256-Ewpv8f+CvF0du1egjRJoeOZhKsdoqPkb2ecrwTPI+os=", - "path": "/home/amy/github/pandoc-columns", - "type": "path" - }, - "original": { - "path": "/home/amy/github/pandoc-columns", - "type": "path" - } - }, - "pandoc-linear-table": { - "inputs": { - "flake-parts": "flake-parts_3", - "haskell-flake": "haskell-flake_3", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1757174454, - "narHash": "sha256-a3BkFxqZpPrK0m+r1wWpP7XksSTzW89iaTpS6ADDa0Q=", - "path": "/home/amy/github/pandoc-linear-table", - "type": "path" - }, - "original": { - "path": "/home/amy/github/pandoc-linear-table", - "type": "path" - } - }, - "pandoc-logic-proof": { - "inputs": { - "flake-parts": "flake-parts_4", - "haskell-flake": "haskell-flake_4", - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1757174539, - "narHash": "sha256-+mZYpyR6CcF/AclduN+pjyEVjSw7izpXs4PzD3Ua/W8=", - "path": "/home/amy/github/pandoc-logic-proof", - "type": "path" - }, - "original": { - "path": "/home/amy/github/pandoc-logic-proof", - "type": "path" - } - }, - "pandoc-query": { - "inputs": { - "flake-parts": "flake-parts_5", - "haskell-flake": "haskell-flake_5", - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1757175462, - "narHash": "sha256-ERKXLSL/vzk7MyfY3EyMEf6IIMJL387vs9e8H4NfpIk=", - "path": "/home/amy/codeberg/pandoc-query", - "type": "path" - }, - "original": { - "path": "/home/amy/codeberg/pandoc-query", - "type": "path" - } - }, - "root": { - "inputs": { - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs", - "pandoc-columns": "pandoc-columns", - "pandoc-linear-table": "pandoc-linear-table", - "pandoc-logic-proof": "pandoc-logic-proof", - "pandoc-query": "pandoc-query" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/source/recipes/build/haskell-flake/tempwork/flake.nix b/source/recipes/build/haskell-flake/tempwork/flake.nix deleted file mode 100644 index 0b86c0f..0000000 --- a/source/recipes/build/haskell-flake/tempwork/flake.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - description = "Pandoc build system for maths web"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; - haskell-flake.url = "github:srid/haskell-flake"; - pandoc-linear-table.url = "/home/amy/github/pandoc-linear-table"; - pandoc-logic-proof.url = "/home/amy/github/pandoc-logic-proof"; - pandoc-columns.url = "/home/amy/github/pandoc-columns"; - pandoc-query.url = "/home/amy/codeberg/pandoc-query"; - }; - outputs = inputs@{ self, nixpkgs, flake-parts, pandoc-linear-table, pandoc-logic-proof, pandoc-columns, pandoc-query, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - systems = nixpkgs.lib.systems.flakeExposed; - imports = [ inputs.haskell-flake.flakeModule ]; - - perSystem = { self', pkgs, ... }: { - haskellProjects.default = { - # use my versions of some Haskell pagkages instead of the nixpkgs versions - packages = { - pandoc-linear-table.source = inputs.pandoc-linear-table; - pandoc-logic-proof.source = inputs.pandoc-logic-proof; - pandoc-columns.source = inputs.pandoc-columns; - pandoc-query.source = inputs.pandoc-query; - }; - }; - - # haskell-flake doesn't set the default package, but you can do it here. - packages.default = self'.packages.pandoc-maths-web; - }; - }; -}