diff --git a/.forgejo/workflows/main.yml b/.forgejo/workflows/main.yml deleted file mode 100644 index e3658b1..0000000 --- a/.forgejo/workflows/main.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: CI - -on: - pull_request: - push: - -jobs: - build-nix: - runs-on: ubuntu-latest - steps: - - run: apt-get update -y && apt-get install sudo - - uses: actions/checkout@v4 - - - name: Install Nix - uses: cachix/install-nix-action@V28 - with: - github_access_token: ${{ secrets.GH_TOKEN }} - extra_nix_config: | - access-tokens = github.com=${{ secrets.GH_TOKEN }} - allow-import-from-derivation = true - auto-optimise-store = true - experimental-features = nix-command flakes - substituters = https://cache.nixos.org https://cache.iog.io - trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= - - - name: Build with cachix - uses: cachix/cachix-action@v15 - env: - USER: $(whoami) - with: - name: hakyll-nix-template - - - run: nix build --accept-flake-config - - # TODO: Push artifact? diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ba79d38 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: rpearce diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..1f97b0b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +version: 2 +updates: + +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: daily + time: '00:00' + timezone: UTC + open-pull-requests-limit: 10 + commit-message: + prefix: "chore" + include: "scope" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..caceb35 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,58 @@ +name: CI + +on: + pull_request: + push: + +jobs: + build-nix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Nix + uses: cachix/install-nix-action@v18 + with: + github_access_token: ${{ secrets.GITHUB_TOKEN }} + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + allow-import-from-derivation = true + auto-optimise-store = true + experimental-features = nix-command flakes + substituters = https://cache.nixos.org https://cache.iog.io https://cache.zw3rk.com + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk= + + - name: Build with cachix + uses: cachix/cachix-action@v12 + with: + name: hakyll-nix-template + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + + - run: nix build --accept-flake-config + + - name: Artifact pages + uses: actions/upload-artifact@v3 + with: + name: pages + path: result/dist + + deploy: + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + needs: [build-nix] + + steps: + - name: Download artifact + uses: actions/download-artifact@v2 + with: + name: pages + path: result + + - name: Deploy to GitHub Pages + if: success() + uses: crazy-max/ghaction-github-pages@v3.1.0 + with: + build_dir: result + target_branch: gh-pages + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index ae1768b..e72c8e7 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,6 @@ [Hakyll](https://jaspervdj.be/hakyll/) + [Nix](https://nixos.org) template -## Quick tips - -* Read the tutorial to get started! https://robertwpearce.com/the-hakyll-nix-template-tutorial.html -* If you make changes to anything inside of `ssg/`, you'll need to clean the - hakyll cache and rebuild. This is the preferred series of commands for - rebuilding (with logs), cleaning the cache, and re-running the dev server: - - ```default - nix build --print-build-logs && \ - nix run . clean && \ - nix run . watch - ``` - ## Features * Build your site into the `./result/dist` folder: diff --git a/flake.lock b/flake.lock index c14bce6..050a98c 100644 --- a/flake.lock +++ b/flake.lock @@ -16,6 +16,21 @@ "type": "github" } }, + "blank": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "cabal-32": { "flake": false, "locked": { @@ -36,11 +51,11 @@ "cabal-34": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -53,11 +68,11 @@ "cabal-36": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -83,6 +98,64 @@ "type": "github" } }, + "devshell": { + "inputs": { + "flake-utils": [ + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "dmerge": { + "inputs": { + "nixlib": [ + "haskellNix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "haskellNix", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -100,16 +173,89 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, + "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -135,51 +281,33 @@ "type": "github" } }, - "ghc98X": { - "flake": false, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_2", + "utils": "utils" + }, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" } }, "hackage": { "flake": false, "locked": { - "lastModified": 1706574159, - "narHash": "sha256-OcE1NT4zQfV4h8Ybq1ttNT+TkXjTV1O2doiCfJzjCbw=", + "lastModified": 1674865626, + "narHash": "sha256-tNwL6Ar78Xn1z7t/knaom67Sor0oz40ECh1QrVfOARg=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "ccff69cc942afd51dbdd7466192e3f4cfe09cde2", + "rev": "f81e5c52cf6068d35fa2c1c47025a5100afc50fa", "type": "github" }, "original": { @@ -196,21 +324,12 @@ "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", "flake-compat": "flake-compat", + "flake-utils": "flake-utils_2", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "ghc98X": "ghc98X", - "ghc99": "ghc99", "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", - "nix-tools-static": "nix-tools-static", "nixpkgs": [ "haskellNix", "nixpkgs-unstable" @@ -220,18 +339,17 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "stackage": "stackage", + "tullia": "tullia" }, "locked": { - "lastModified": 1706575804, - "narHash": "sha256-/2oEg1CD3FtXOsF0dQm/5RLGZ5LwILA5Gnuw/FkNm4w=", + "lastModified": 1674867065, + "narHash": "sha256-JZ7bOjbSNmlmk5SP8t+1VmiIqz1LUAUlw+LLB4LsiuY=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "8bc501003577cf9a1077f04d2dabf58f68b256b6", + "rev": "40364a66179bcb2cd186909389dff7a176375ac3", "type": "github" }, "original": { @@ -240,125 +358,6 @@ "type": "github" } }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "hpc-coveralls": { "flake": false, "locked": { @@ -386,11 +385,11 @@ ] }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { @@ -401,11 +400,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -431,6 +430,46 @@ "type": "github" } }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": [ + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, "nix": { "inputs": { "lowdown-src": "lowdown-src", @@ -438,51 +477,122 @@ "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", + "ref": "2.6.0", "repo": "nix", "type": "github" } }, - "nix-tools-static": { - "flake": false, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": [ + "haskellNix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "haskellNix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "haskellNix", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1706266250, - "narHash": "sha256-9t+GRk3eO9muCtKdNAwBtNBZ5dH1xHcnS17WaQyftwA=", - "owner": "input-output-hk", - "repo": "haskell-nix-example", - "rev": "580cb6db546a7777dad3b9c0fa487a366c045c4e", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "haskell-nix-example", + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "haskellNix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, "nixpkgs-2003": { @@ -535,11 +645,11 @@ }, "nixpkgs-2205": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1663981975, + "narHash": "sha256-TKaxWAVJR+a5JJauKZqibmaM5e/Pi5tBDx9s8fl/kSE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "309faedb8338d3ae8ad8f1043b3ccf48c9cc2970", "type": "github" }, "original": { @@ -551,11 +661,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "lastModified": 1669997163, + "narHash": "sha256-vhjC0kZMFoN6jzK0GR+tBzKi5KgBXgehadfidW8+Va4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "6f87491a54d8d64d30af6663cb3bf5d2ee7db958", "type": "github" }, "original": { @@ -565,38 +675,6 @@ "type": "github" } }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -607,25 +685,71 @@ "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "id": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" + "type": "indirect" } }, "nixpkgs-unstable": { "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, @@ -659,11 +783,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1706573344, - "narHash": "sha256-nOc8eVWcS//QjV4tdZlJVMWPyGauD71BNdCXjvTRXDs=", + "lastModified": 1674778180, + "narHash": "sha256-Oz7Ywn6G5P/Hg26ZazeC88kiuxOF2R9lQ37M5aM8hz0=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "c911e99f7ab959a8d2b83c038a803c255a6d215a", + "rev": "16105932ab32c4f2a95ab80d979b9d4bd76ab0a4", "type": "github" }, "original": { @@ -672,18 +796,103 @@ "type": "github" } }, - "systems": { + "std": { + "inputs": { + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_4", + "makes": [ + "haskellNix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "haskellNix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_4", + "yants": "yants" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container", + "nixpkgs": [ + "haskellNix", + "nixpkgs" + ], + "std": "std" + }, + "locked": { + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "utils": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "yants": { + "inputs": { + "nixpkgs": [ + "haskellNix", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660507851, + "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "owner": "divnix", + "repo": "yants", + "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", "type": "github" } } diff --git a/flake.nix b/flake.nix index c70f8d2..b6e0c33 100644 --- a/flake.nix +++ b/flake.nix @@ -6,9 +6,11 @@ bash-prompt = "[hakyll-nix]λ "; extra-substituters = [ "https://cache.iog.io" + "https://cache.zw3rk.com" # https://github.com/input-output-hk/haskell.nix/issues/1408 ]; extra-trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" + "loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk=" ]; }; @@ -23,8 +25,7 @@ (final: prev: { hakyllProject = final.haskell-nix.project' { src = ./ssg; - compiler-nix-name = "ghc948"; - modules = [{ doHaddock = false; }]; + compiler-nix-name = "ghc925"; shell.buildInputs = [ hakyll-site ]; @@ -44,9 +45,7 @@ flake = pkgs.hakyllProject.flake {}; - executable = "ssg:exe:hakyll-site"; - - hakyll-site = flake.packages.${executable}; + hakyll-site = flake.packages."ssg:exe:hakyll-site"; website = pkgs.stdenv.mkDerivation { name = "website"; @@ -67,12 +66,12 @@ "${pkgs.glibcLocales}/lib/locale/locale-archive"; buildPhase = '' - ${flake.packages.${executable}}/bin/hakyll-site build --verbose + ${hakyll-site}/bin/hakyll-site build --verbose ''; installPhase = '' mkdir -p "$out/dist" - cp -a dist/. "$out/dist" + cp -r dist/* "$out/dist" ''; }; diff --git a/src/CNAME b/src/CNAME index 1ce262e..34bf8db 100644 --- a/src/CNAME +++ b/src/CNAME @@ -1 +1 @@ -mywebsite123456789123456789.com +mywebsite123456789123456789.io diff --git a/src/_config.yaml b/src/_config.yaml index 1f83507..7a30e5f 100644 --- a/src/_config.yaml +++ b/src/_config.yaml @@ -1,8 +1 @@ -# This is a Jekyll config file. Jekyll is used by GitHub -# Pages to manage static site generation / distribution. -# If you don't use GitHub Pages or don't need to customize -# it, you can delete this file and remove its entry in -# `../ssg/src/Main.hs`. -# -# https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll include: [] diff --git a/src/css/default.css b/src/css/default.css index 99baccb..23bb11d 100644 --- a/src/css/default.css +++ b/src/css/default.css @@ -21,8 +21,6 @@ body { font-feature-settings: "kern", "liga", "clig", "calt"; scroll-behavior: smooth; font-size: 2rem; - margin-left: 4ch; - margin-right: 4ch; } body, input, @@ -51,20 +49,6 @@ small { p { font-size: 1.8rem; } -img, -.sourceCode { - width: max-content; - border-radius: 0.5ch; -} pre.sourceCode { - padding: 1.5ch 3ch 1.5ch 1.5ch !important; -} -.postMetadata { - opacity: 0.6; -} -@media (prefers-color-scheme: dark) { - body { - background: black; - color: white; - } + padding: 2rem 1.5rem; } diff --git a/src/index.html b/src/index.html index c705cdc..30f5fb6 100644 --- a/src/index.html +++ b/src/index.html @@ -11,7 +11,7 @@ title: "Hello, world!" A woman sitting on a bench amongst trees at the end of a boardwalk leading to a pond with mountains in the background
diff --git a/src/js/script.js b/src/js/script.js index 9efe503..4fc48a9 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -1,3 +1,3 @@ -;(function() { - console.log('Hello, world!'); -})(); +;(function(w, d) { + console.log('Hello, world!', w, d) +})(window, document); diff --git a/src/posts/2020-09-21-hello-world.md b/src/posts/2020-09-21-hello-world.md index 1cdd699..6fb6b67 100644 --- a/src/posts/2020-09-21-hello-world.md +++ b/src/posts/2020-09-21-hello-world.md @@ -14,7 +14,7 @@ Hello, world! I am here! Grapevines among rolling hills leading to the sea Haskell, for example: diff --git a/src/posts/2020-09-22-hola-mundo.md b/src/posts/2020-09-22-hola-mundo.md index 3e17349..2bb0db9 100644 --- a/src/posts/2020-09-22-hola-mundo.md +++ b/src/posts/2020-09-22-hola-mundo.md @@ -14,7 +14,7 @@ updated: "2020-09-23T12:00:00Z" Grapevines among rolling hills leading to the sea Haskell, por ejemplo: diff --git a/src/templates/default.html b/src/templates/default.html index 67a44af..b099c14 100644 --- a/src/templates/default.html +++ b/src/templates/default.html @@ -26,28 +26,24 @@ $endif$ - $if(image)$ - - $endif$ + $if(image)$ + + $endif$ $if(authorTwitter)$ $endif$ - - - - $body$ - + diff --git a/src/templates/post.html b/src/templates/post.html index a8b9ef5..7023a6c 100644 --- a/src/templates/post.html +++ b/src/templates/post.html @@ -4,9 +4,11 @@

$title$

-
- $date$ $if(updated)$(updated: $updated$)$endif$
- $author$ +
+ $date$ + $if(updated)$ + (updated: $updated$) + $endif$
diff --git a/ssg/src/Main.hs b/ssg/src/Main.hs index 14494ef..cd565dd 100644 --- a/ssg/src/Main.hs +++ b/ssg/src/Main.hs @@ -1,12 +1,10 @@ {-# LANGUAGE OverloadedStrings #-} import Control.Monad (forM_) -import Data.List (isPrefixOf, isSuffixOf) import Data.Maybe (fromMaybe) import Hakyll import qualified Data.Text as T import qualified Data.Text.Slugger as Slugger -import System.FilePath (takeFileName) import Text.Pandoc ( Extension (Ext_fenced_code_attributes, Ext_footnotes, Ext_gfm_auto_identifiers, Ext_implicit_header_references, Ext_smart), Extensions, @@ -19,54 +17,28 @@ import Text.Pandoc ) import Text.Pandoc.Highlighting (Style, breezeDark, styleToCss) --------------------------------------------------------------------------------- --- PERSONALIZATION - -mySiteName :: String -mySiteName = "My Site Name" - -mySiteRoot :: String -mySiteRoot = "https://my-site.com" - -myFeedTitle :: String -myFeedTitle = "My Feed Title" - -myFeedDescription :: String -myFeedDescription = "My Site Description" - -myFeedAuthorName :: String -myFeedAuthorName = "My Name" - -myFeedAuthorEmail :: String -myFeedAuthorEmail = "me@myemail.com" - -myFeedRoot :: String -myFeedRoot = mySiteRoot - -------------------------------------------------------------------------------- -- CONFIG --- Default configuration: https://github.com/jaspervdj/hakyll/blob/cd74877d41f41c4fba27768f84255e797748a31a/lib/Hakyll/Core/Configuration.hs#L101-L125 +root :: String +root = + "https://my-site.com" + +siteName :: String +siteName = + "My Site Name" + config :: Configuration config = defaultConfiguration { destinationDirectory = "dist" - , ignoreFile = ignoreFile' + , ignoreFile = const False , previewHost = "127.0.0.1" , previewPort = 8000 , providerDirectory = "src" , storeDirectory = "ssg/_cache" , tmpDirectory = "ssg/_tmp" } - where - ignoreFile' path - | "." `isPrefixOf` fileName = False - | "#" `isPrefixOf` fileName = True - | "~" `isSuffixOf` fileName = True - | ".swp" `isSuffixOf` fileName = True - | otherwise = False - where - fileName = takeFileName path -------------------------------------------------------------------------------- -- BUILD @@ -107,9 +79,8 @@ main = hakyllWith config $ do let indexCtx = listField "posts" postCtx (return posts) - <> constField "root" mySiteRoot - <> constField "feedTitle" myFeedTitle - <> constField "siteName" mySiteName + <> constField "root" root + <> constField "siteName" siteName <> defaultContext getResourceBody @@ -126,8 +97,8 @@ main = hakyllWith config $ do let pages = posts sitemapCtx = - constField "root" mySiteRoot - <> constField "siteName" mySiteName + constField "root" root + <> constField "siteName" siteName <> listField "pages" postCtx (return pages) makeItem ("" :: String) @@ -145,6 +116,7 @@ main = hakyllWith config $ do route idRoute compile (makeStyle pandocHighlightStyle) + -------------------------------------------------------------------------------- -- COMPILER HELPERS @@ -163,9 +135,8 @@ feedCtx = postCtx :: Context String postCtx = - constField "root" mySiteRoot - <> constField "feedTitle" myFeedTitle - <> constField "siteName" mySiteName + constField "root" root + <> constField "siteName" siteName <> dateField "date" "%Y-%m-%d" <> defaultContext @@ -227,7 +198,6 @@ pandocHighlightStyle :: Style pandocHighlightStyle = breezeDark -- https://hackage.haskell.org/package/pandoc/docs/Text-Pandoc-Highlighting.html --------------------------------------------------------------------------------- -- FEEDS type FeedRenderer = @@ -245,19 +215,23 @@ feedCompiler renderer = feedConfiguration :: FeedConfiguration feedConfiguration = FeedConfiguration - { feedTitle = myFeedTitle - , feedDescription = myFeedDescription - , feedAuthorName = myFeedAuthorName - , feedAuthorEmail = myFeedAuthorEmail - , feedRoot = myFeedRoot + { feedTitle = "My Site" + , feedDescription = "My Site Description" + , feedAuthorName = "My Name" + , feedAuthorEmail = "me@myemail.com" + , feedRoot = root } -------------------------------------------------------------------------------- -- CUSTOM ROUTE +getTitleFromMeta :: Metadata -> String +getTitleFromMeta = + fromMaybe "no title" . lookupString "title" + fileNameFromTitle :: Metadata -> FilePath fileNameFromTitle = - T.unpack . (`T.append` ".html") . Slugger.toSlug . T.pack . safeTitle + T.unpack . (`T.append` ".html") . Slugger.toSlug . T.pack . getTitleFromMeta titleRoute :: Metadata -> Routes titleRoute = diff --git a/ssg/ssg.cabal b/ssg/ssg.cabal index 47cea1f..2c474c0 100644 --- a/ssg/ssg.cabal +++ b/ssg/ssg.cabal @@ -1,4 +1,4 @@ -cabal-version: 3.6 +cabal-version: 2.4 name: ssg version: 0.1.0.0 @@ -7,23 +7,12 @@ license: BSD-3-Clause license-file: LICENSE executable hakyll-site - default-language: Haskell2010 main-is: Main.hs hs-source-dirs: src - build-depends: base == 4.* - , hakyll == 4.15.* - , filepath >= 1.0 + build-depends: base >= 4.8 + , hakyll >= 4.14 , pandoc >= 2.11 - , slugger >= 0.1.0.2 - , text >= 1 && < 3 - ghc-options: -Wall - -Wcompat - -Widentities - -Wincomplete-record-updates - -Wincomplete-uni-patterns - -Wpartial-fields - -Wredundant-constraints - -O2 - -threaded - -rtsopts - -with-rtsopts=-N + , slugger >= 0.1.0.1 + , text >= 1.2 && < 1.3 + ghc-options: -Wall -threaded + default-language: Haskell2010