diff --git a/css/resrok.css b/css/resrok.css new file mode 100644 index 0000000..bed50f5 --- /dev/null +++ b/css/resrok.css @@ -0,0 +1,538 @@ +/* + * JFDIC theme + */ + +/* + * Global resets + * + * Update the foundational and global aspects of the page. + */ + +/* Prevent scroll on narrow devices */ +html, +body { + overflow-x: hidden; +} + +html { + font-family: "PT Serif", Georgia, "Times New Roman", serif; +} + +h1, h2, h3, h4, h5, h6 { + font-family: "PT Sans", Helvetica, Arial, sans-serif; + font-weight: 400; + color: #313131; + letter-spacing: -.025rem; +} + + +/* + * Wrapper + * + * The wrapper is used to position site content when the sidebar is toggled. We + * use an outter wrap to position the sidebar without interferring with the + * regular page content. + */ + +.wrap { + position: relative; + width: 100%; +} + + +/* + * Container + * + * Center the page content. + */ + +.container { + max-width: 28rem; +} +@media (min-width: 38em) { + .container { + max-width: 32rem; + } +} +@media (min-width: 56em) { + .container { + max-width: 38rem; + } +} + + +/* + * Masthead + * + * Super small header above the content for site name and short description. + */ + +.masthead { + padding-top: 1rem; + padding-bottom: 1rem; + margin-bottom: 3rem; + border-bottom: 1px solid #eee; +} +.masthead-title { + margin-top: 0; + margin-bottom: 0; + color: #505050; +} +.masthead-title a { + color: #505050; +} +.masthead-title img { + max-width: 10%; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; +} +.masthead-title small { + font-size: 75%; + font-weight: 400; + color: #c0c0c0; + letter-spacing: 0; +} + +@media (max-width: 48em) { + .masthead-title { + text-align: center; + } + .masthead-title small { + display: none; + } +} + + +/* + * Sidebar + * + * The sidebar is the drawer, the item we are toggling with our handy hamburger + * button in the corner of the page. + * + * This particular sidebar implementation was inspired by Chris Coyier's + * "Offcanvas Menu with CSS Target" article, and the checkbox variation from the + * comments by a reader. It modifies both implementations to continue using the + * checkbox (no change in URL means no polluted browser history), but this uses + * `position` for the menu to avoid some potential content reflow issues. + * + * Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504 + */ + +/* Style and "hide" the sidebar */ +.sidebar { + position: fixed; + top: 0; + bottom: 0; + left: -14rem; + width: 14rem; + visibility: hidden; + overflow-y: auto; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + font-size: .875rem; /* 15px */ + color: rgba(255,255,255,.6); + background-color: #202020; + -webkit-transition: all .3s ease-in-out; + transition: all .3s ease-in-out; +} +@media (min-width: 30em) { + .sidebar { + font-size: .75rem; /* 14px */ + } +} + +/* Sidebar content */ +.sidebar a { + font-weight: normal; + color: #fff; +} +.sidebar-item { + padding: 1rem; +} +.sidebar-item p:last-child { + margin-bottom: 0; +} + +/* Sidebar nav */ +.sidebar-nav { + border-bottom: 1px solid rgba(255,255,255,.1); +} +.sidebar-nav-item { + display: block; + padding: .5rem 1rem; + border-top: 1px solid rgba(255,255,255,.1); +} +.sidebar-nav-item.active, +a.sidebar-nav-item:hover, +a.sidebar-nav-item:focus { + text-decoration: none; + background-color: rgba(255,255,255,.1); + border-color: transparent; +} + +@media (min-width: 48em) { + .sidebar-item { + padding: 1.5rem; + } + .sidebar-nav-item { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} + +/* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */ +.sidebar-checkbox { + position: absolute; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +/* Style the `label` that we use to target the `.sidebar-checkbox` */ +.sidebar-toggle { + position: absolute; + top: .8rem; + left: 1rem; + display: flex; + align-items: center; + padding: .25rem .75rem; + color: #505050; + background-color: #fff; + border-radius: .25rem; + cursor: pointer; +} + +.sidebar-toggle::before { + display: inline-block; + width: 32px; + height: 32px; + content: ""; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23555' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat; +} + +.sidebar-toggle:active, +#sidebar-checkbox:focus ~ .sidebar-toggle, +#sidebar-checkbox:checked ~ .sidebar-toggle { + color: #fff; + background-color: #555; +} + +.sidebar-toggle:active:before, +#sidebar-checkbox:focus ~ .sidebar-toggle::before, +#sidebar-checkbox:checked ~ .sidebar-toggle::before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat; +} + +@media (min-width: 30.1em) { + .sidebar-toggle { + position: fixed; + } +} + +@media print { + .sidebar-toggle { + display: none; + } +} + +/* Slide effect + * + * Handle the sliding effects of the sidebar and content in one spot, seperate + * from the default styles. + * + * As an a heads up, we don't use `transform: translate3d()` here because when + * mixed with `position: fixed;` for the sidebar toggle, it creates a new + * containing block. Put simply, the fixed sidebar toggle behaves like + * `position: absolute;` when transformed. + * + * Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/. + */ + +.wrap, +.sidebar, +.sidebar-toggle { + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} +.wrap, +.sidebar-toggle { + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; +} + +#sidebar-checkbox:checked + .sidebar { + z-index: 10; + visibility: visible; +} +#sidebar-checkbox:checked ~ .sidebar, +#sidebar-checkbox:checked ~ .wrap, +#sidebar-checkbox:checked ~ .sidebar-toggle { + -webkit-transform: translateX(14rem); + -ms-transform: translateX(14rem); + transform: translateX(14rem); +} + + +/* + * Posts and pages + * + * Each post is wrapped in `.post` and is used on default and post layouts. Each + * page is wrapped in `.page` and is only used on the page layout. + */ + +.page, +.post { + margin-bottom: 4em; +} + +/* Blog post or page title */ +.page-title, +.post-title, +.post-title a { + color: #303030; +} +.page-title, +.post-title { + margin-top: 0; +} + +/* Meta data line below post title */ +.post-date { + display: block; + margin-top: -.5rem; + margin-bottom: 1rem; + color: #9a9a9a; +} + +/* Related posts */ +.related { + padding-top: 2rem; + padding-bottom: 2rem; + border-top: 1px solid #eee; +} +.related-posts { + padding-left: 0; + list-style: none; +} +.related-posts h3 { + margin-top: 0; +} +.related-posts li small { + font-size: 75%; + color: #999; +} +.related-posts li a:hover { + color: #268bd2; + text-decoration: none; +} +.related-posts li a:hover small { + color: inherit; +} + + +/* + * Pagination + * + * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when + * there are no more previous or next posts to show. + */ + +.pagination { + overflow: hidden; /* clearfix */ + margin-left: -1rem; + margin-right: -1rem; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + color: #ccc; + text-align: center; +} + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { + display: block; + padding: 1rem; + border: 1px solid #eee; +} +.pagination-item:first-child { + margin-bottom: -1px; +} + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { + background-color: #f5f5f5; +} + +@media (min-width: 30em) { + .pagination { + margin: 3rem 0; + } + .pagination-item { + float: left; + width: 50%; + } + .pagination-item:first-child { + margin-bottom: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination-item:last-child { + margin-left: -1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +} + + +/* + * Reverse layout + * + * Flip the orientation of the page by placing the `.sidebar` and sidebar toggle + * on the right side. + */ + +.layout-reverse .sidebar { + left: auto; + right: -14rem; +} +.layout-reverse .sidebar-toggle { + left: auto; + right: 1rem; +} + +.layout-reverse #sidebar-checkbox:checked ~ .sidebar, +.layout-reverse #sidebar-checkbox:checked ~ .wrap, +.layout-reverse #sidebar-checkbox:checked ~ .sidebar-toggle { + -webkit-transform: translateX(-14rem); + -ms-transform: translateX(-14rem); + transform: translateX(-14rem); +} + + +/* + * Themes + * + * Apply custom color schemes by adding the appropriate class to the `body`. + * Based on colors from Base16: http://chriskempson.github.io/base16/#default. + */ + +/* Red */ +.theme-base-08 .sidebar, +.theme-base-08 .sidebar-toggle:active, +.theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #ac4142; +} +.theme-base-08 .container a, +.theme-base-08 .sidebar-toggle, +.theme-base-08 .related-posts li a:hover { + color: #ac4142; +} + +/* Orange */ +.theme-base-09 .sidebar, +.theme-base-09 .sidebar-toggle:active, +.theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #d28445; +} +.theme-base-09 .container a, +.theme-base-09 .sidebar-toggle, +.theme-base-09 .related-posts li a:hover { + color: #d28445; +} + +/* Yellow */ +.theme-base-0a .sidebar, +.theme-base-0a .sidebar-toggle:active, +.theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #f4bf75; +} +.theme-base-0a .container a, +.theme-base-0a .sidebar-toggle, +.theme-base-0a .related-posts li a:hover { + color: #f4bf75; +} + +/* Green */ +.theme-base-0b .sidebar, +.theme-base-0b .sidebar-toggle:active, +.theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #90a959; +} +.theme-base-0b .container a, +.theme-base-0b .sidebar-toggle, +.theme-base-0b .related-posts li a:hover { + color: #90a959; +} + +/* Cyan */ +.theme-base-0c .sidebar, +.theme-base-0c .sidebar-toggle:active, +.theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #75b5aa; +} +.theme-base-0c .container a, +.theme-base-0c .sidebar-toggle, +.theme-base-0c .related-posts li a:hover { + color: #75b5aa; +} + +/* Blue */ +.theme-base-0d .sidebar, +.theme-base-0d .sidebar-toggle:active, +.theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #6a9fb5; +} +.theme-base-0d .container a, +.theme-base-0d .sidebar-toggle, +.theme-base-0d .related-posts li a:hover { + color: #6a9fb5; +} + +/* Magenta */ +.theme-base-0e .sidebar, +.theme-base-0e .sidebar-toggle:active, +.theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #aa759f; +} +.theme-base-0e .container a, +.theme-base-0e .sidebar-toggle, +.theme-base-0e .related-posts li a:hover { + color: #aa759f; +} + +/* Brown */ +.theme-base-0f .sidebar, +.theme-base-0f .sidebar-toggle:active, +.theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle { + background-color: #8f5536; +} +.theme-base-0f .container a, +.theme-base-0f .sidebar-toggle, +.theme-base-0f .related-posts li a:hover { + color: #8f5536; +} + + +/* + * Overlay sidebar + * + * Make the sidebar content overlay the viewport content instead of pushing it + * aside when toggled. + */ + +.sidebar-overlay #sidebar-checkbox:checked ~ .wrap { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar-toggle { + box-shadow: 0 0 0 .25rem #fff; +} +.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar { + box-shadow: .25rem 0 .5rem rgba(0,0,0,.1); +} + +/* Only one tweak for a reverse layout */ +.layout-reverse.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar { + box-shadow: -.25rem 0 .5rem rgba(0,0,0,.1); +} diff --git a/default.nix b/default.nix index ca72fcc..0a2dad3 100644 --- a/default.nix +++ b/default.nix @@ -1 +1,22 @@ -(import ./release.nix { }).project +{ nixpkgs ? import { }, compiler ? "default" }: +let + inherit (nixpkgs) pkgs; + haskellPackages = if compiler == "default" then + pkgs.haskellPackages + else + pkgs.haskell.packages.${compiler}; + resrok-org = haskellPackages.callPackage ./resrok-web.nix { }; +in nixpkgs.stdenv.mkDerivation { + name = "resrok-org-website"; + buildInputs = [ resrok-org ]; + src = ./.; + buildPhase = '' + echo "Setting LC_ALL to C.UTF-8 to avoid invalid byte sequence." + export LC_ALL=C.UTF-8 + site build + ''; + installPhase = '' + mkdir $out + cp -R _site/* $out + ''; +} diff --git a/nix/sources.json b/nix/sources.json index b0b9f35..a59212e 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -12,15 +12,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixpkgs-unstable", - "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", - "homepage": "https://github.com/NixOS/nixpkgs", - "owner": "NixOS", - "repo": "nixpkgs-channels", - "rev": "10100a97c8964e82b30f180fda41ade8e6f69e41", - "sha256": "011f36kr3c1ria7rag7px26bh73d1b0xpqadd149bysf4hg17rln", + "branch": "nixos-21.05", + "description": "Nix Packages collection", + "homepage": "", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9e86f5f7a19db6da2445f07bafa6694b556f9c6d", + "sha256": "0i2j7bf6jq3s13n12xahramami0n6zn1mksqgi01k7flpgyymcck", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/10100a97c8964e82b30f180fda41ade8e6f69e41.tar.gz", + "url": "https://github.com/nixos/nixpkgs/archive/9e86f5f7a19db6da2445f07bafa6694b556f9c6d.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/nix/sources.nix b/nix/sources.nix index 8a725cb..1938409 100644 --- a/nix/sources.nix +++ b/nix/sources.nix @@ -6,52 +6,63 @@ let # The fetchers. fetch_ fetches specs of type . # - fetch_file = pkgs: spec: - if spec.builtin or true then - builtins_fetchurl { inherit (spec) url sha256; } - else - pkgs.fetchurl { inherit (spec) url sha256; }; + fetch_file = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchurl { inherit (spec) url sha256; name = name'; } + else + pkgs.fetchurl { inherit (spec) url sha256; name = name'; }; - fetch_tarball = pkgs: spec: - if spec.builtin or true then - builtins_fetchTarball { inherit (spec) url sha256; } - else - pkgs.fetchzip { inherit (spec) url sha256; }; + fetch_tarball = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchTarball { name = name'; inherit (spec) url sha256; } + else + pkgs.fetchzip { name = name'; inherit (spec) url sha256; }; - fetch_git = spec: - builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; }; + fetch_git = name: spec: + let + ref = + if spec ? ref then spec.ref else + if spec ? branch then "refs/heads/${spec.branch}" else + if spec ? tag then "refs/tags/${spec.tag}" else + abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; + in + builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }; - fetch_builtin-tarball = spec: - builtins.trace - '' - WARNING: - The niv type "builtin-tarball" will soon be deprecated. You should - instead use `builtin = true`. + fetch_local = spec: spec.path; - $ niv modify -a type=tarball -a builtin=true - '' - builtins_fetchTarball { inherit (spec) url sha256; }; + fetch_builtin-tarball = name: throw + ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=tarball -a builtin=true''; - fetch_builtin-url = spec: - builtins.trace - '' - WARNING: - The niv type "builtin-url" will soon be deprecated. You should - instead use `builtin = true`. - - $ niv modify -a type=file -a builtin=true - '' - (builtins_fetchurl { inherit (spec) url sha256; }); + fetch_builtin-url = name: throw + ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=file -a builtin=true''; # # Various helpers # + # https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695 + sanitizeName = name: + ( + concatMapStrings (s: if builtins.isList s then "-" else s) + ( + builtins.split "[^[:alnum:]+._?=-]+" + ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) + ) + ); + # The set of packages used when specs are fetched using non-builtins. - mkPkgs = sources: + mkPkgs = sources: system: let sourcesNixpkgs = - import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {}; + import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; }; hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; hasThisAsNixpkgsPath = == ./.; in @@ -71,14 +82,27 @@ let if ! builtins.hasAttr "type" spec then abort "ERROR: niv spec ${name} does not have a 'type' attribute" - else if spec.type == "file" then fetch_file pkgs spec - else if spec.type == "tarball" then fetch_tarball pkgs spec - else if spec.type == "git" then fetch_git spec - else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec - else if spec.type == "builtin-url" then fetch_builtin-url spec + else if spec.type == "file" then fetch_file pkgs name spec + else if spec.type == "tarball" then fetch_tarball pkgs name spec + else if spec.type == "git" then fetch_git name spec + else if spec.type == "local" then fetch_local spec + else if spec.type == "builtin-tarball" then fetch_builtin-tarball name + else if spec.type == "builtin-url" then fetch_builtin-url name else abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; + # If the environment variable NIV_OVERRIDE_${name} is set, then use + # the path directly as opposed to the fetched source. + replace = name: drv: + let + saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name; + ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}"; + in + if ersatz == "" then drv else + # this turns the string into an actual Nix path (for both absolute and + # relative paths) + if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}"; + # Ports of functions for older nix versions # a Nix version of mapAttrs if the built-in doesn't exist @@ -87,23 +111,37 @@ let listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) ); + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 + range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 + stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 + stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); + concatMapStrings = f: list: concatStrings (map f list); + concatStrings = builtins.concatStringsSep ""; + + # https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331 + optionalAttrs = cond: as: if cond then as else {}; + # fetchTarball version that is compatible between all the versions of Nix - builtins_fetchTarball = { url, sha256 }@attrs: + builtins_fetchTarball = { url, name ? null, sha256 }@attrs: let inherit (builtins) lessThan nixVersion fetchTarball; in if lessThan nixVersion "1.12" then - fetchTarball { inherit url; } + fetchTarball ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) else fetchTarball attrs; # fetchurl version that is compatible between all the versions of Nix - builtins_fetchurl = { url, sha256 }@attrs: + builtins_fetchurl = { url, name ? null, sha256 }@attrs: let inherit (builtins) lessThan nixVersion fetchurl; in if lessThan nixVersion "1.12" then - fetchurl { inherit url; } + fetchurl ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) else fetchurl attrs; @@ -115,14 +153,15 @@ let then abort "The values in sources.json should not have an 'outPath' attribute" else - spec // { outPath = fetch config.pkgs name spec; } + spec // { outPath = replace name (fetch config.pkgs name spec); } ) config.sources; # The "config" used by the fetchers mkConfig = - { sourcesFile ? ./sources.json - , sources ? builtins.fromJSON (builtins.readFile sourcesFile) - , pkgs ? mkPkgs sources + { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null + , sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile) + , system ? builtins.currentSystem + , pkgs ? mkPkgs sources system }: rec { # The sources, i.e. the attribute set of spec name to spec inherit sources; @@ -130,5 +169,6 @@ let # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers inherit pkgs; }; + in mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); } diff --git a/pages/About.rst b/pages/About.rst index 32497b8..eac222a 100644 --- a/pages/About.rst +++ b/pages/About.rst @@ -2,6 +2,9 @@ title: About --- -We're the spiritual successor to `C@T`_. + "With the abolition of private property, then, we shall have true, beautiful, + healthy Individualism. Nobody will waste his life in accumulating things, and + the symbols for things. One will live. To live is the rarest thing in the + world. Most people exist, that is all." -.. _C@T:: https://web.archive.org/web/20070102063147/http://cat.org.au/ + -- Oscar Wilde diff --git a/pages/Contact.rst b/pages/Contact.rst index b0edf07..ebeb681 100644 --- a/pages/Contact.rst +++ b/pages/Contact.rst @@ -2,4 +2,21 @@ title: Contact --- -You can contact the JFDI collective via our Matrix room. +We have always lived in slums and holes in the wall. We will know how to +accommodate ourselves for a while. + + For you must not forget that we can also build. + +It is we who built these palaces and cities, here in Spain and America and +everywhere. We, the workers. We can build others to take their place. And +better ones. + + We are not in the least afraid of ruins. + +We are going to inherit the earth; there is not the slightest doubt about that. The bourgeoisie might blast and ruin its own world before it leaves the stage of history. + + We carry a new world here, in our hearts. + +That world is growing in this minute. + +-- Buenaventura Durruti diff --git a/posts/1902-05-01-mutual-aid.rst b/posts/1902-05-01-mutual-aid.rst new file mode 100644 index 0000000..92aa259 --- /dev/null +++ b/posts/1902-05-01-mutual-aid.rst @@ -0,0 +1,30 @@ +--- +title: "Mutual Aid: A Factor Of Evolution" +author: Pyotr Kropotkin +tags: jfdi +--- + +Each time, however, that an attempt to return to this old principle was made, +it's fundamental idea itself was widened. From the clan it was extended to the +stem, to the federation of stems, to the nation, and finally—in ideal, at +least—to the whole of mankind. It was also refined at the same time. In +primitive Buddhism, in primitive Christianity, in the writings of some of the +Mussulman teachers, in the early movements of the Reform, and especially in the +ethical and philosophical movements of the last century and of our own times, +the total abandonment of the idea of revenge, or of “due reward”—of good for +good and evil for evil—is affirmed more and more vigorously. The higher +conception of “no revenge for wrongs,” and of freely giving more than one +expects to receive from his neighbours, is proclaimed as being the real +principle of morality—a principle superior to mere equivalence, equity, or +justice, and more conducive to happiness. And man is appealed to to be guided +in his acts, not merely by love, which is always personal, or at the best +tribal, but by the perception of his oneness with each human being. + + In the practice of mutual aid, which we can retrace to the earliest + beginnings of evolution, we thus find the positive and undoubted origin of + our ethical conceptions; + +and we can affirm that in the ethical progress of man, mutual support not +mutual struggle—has had the leading part. In its wide extension, even at the +present time, we also see the best guarantee of a still loftier evolution of +our species. diff --git a/posts/1908-07-19-what_i_believe.rst b/posts/1908-07-19-what_i_believe.rst new file mode 100644 index 0000000..8613304 --- /dev/null +++ b/posts/1908-07-19-what_i_believe.rst @@ -0,0 +1,20 @@ +--- +title: What I Believe +author: Emma Goldman +published: 1908-07-19 +tags: skeleton +--- + +The student of the history of progressive thought is well aware that every idea +in its early stages has been misrepresented, and the adherents of such ideas +have been maligned and persecuted. One need not go back two thousand years to +the time when those who believed in the gospel of Jesus were thrown into the +arena or hunted into dungeons to realize how little great beliefs or earnest +believers are understood. + + The history of progress is written in the blood of men and women who have + dared to espouse an unpopular cause, as, for instance, the black man’s right + to his body, or woman’s right to her soul. + +If, then, from time immemorial, the New has met with opposition and +condemnation, why should my beliefs be exempt from a crown of thorns? diff --git a/posts/1974-05-01-the_dispossessed.rst b/posts/1974-05-01-the_dispossessed.rst new file mode 100644 index 0000000..0c576c0 --- /dev/null +++ b/posts/1974-05-01-the_dispossessed.rst @@ -0,0 +1,19 @@ +--- +title: The Dispossessed +author: Ursula K. Le Guin +published: 1974-05-01 +tags: skeleton +--- + +It is our suffering that brings us together. It is not love. Love does not obey +the mind, and turns to hate when forced. The bond that binds us is beyond +choice. We are brothers. We are brothers in what we share. In pain, which each +of us must suffer alone, in hunger, in poverty, in hope, we know our +brotherhood. We know it, because we have had to learn it. + + We know that there is no help for us but from one another, that no hand will + save us if we do not reach out our hand. And the hand that you reach out is + empty, as mine is. + +You have nothing. You possess nothing. You own nothing. You are free. All you have +is what you are, and what you give. diff --git a/posts/1986-05-01-connotations_of_anarchy.rst b/posts/1986-05-01-connotations_of_anarchy.rst new file mode 100644 index 0000000..ca00866 --- /dev/null +++ b/posts/1986-05-01-connotations_of_anarchy.rst @@ -0,0 +1,19 @@ +--- +title: Connotations of Anarchy +author: Dr Joseph Toscano +published: 1986-05-01 +tags: skeleton +--- + +Anarchy is a bogey word: we are coming out of the closet, as it were, to show +that we do not have horns or tails. We are simply Australians who have a +different philosophy of life. We don't believe in Big Government: in fact, we +don't believe in government at all. Government, any government is based on +violence and power. If you don't believe it, just look at your headlines over +the past few weeks. + + Anarchy doesn't mean bombs in the street or supersonic bomber raids, it + means 'without rulers'. + +Anarchy means voluntary co-operation and self-management, equality, shared +economic decision making. diff --git a/posts/2015-08-12-spqr.markdown b/posts/2015-08-12-spqr.markdown deleted file mode 100644 index b147fcd..0000000 --- a/posts/2015-08-12-spqr.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: S.P.Q.R. -tags: Mauris, lorem ---- - -Mauris in lorem nisl. Maecenas tempus facilisis ante, eget viverra nisl -tincidunt et. Donec turpis lectus, mattis ac malesuada a, accumsan eu libero. -Morbi condimentum, tortor et tincidunt ullamcorper, sem quam pretium nulla, id -convallis lectus libero nec turpis. Proin dapibus nisi id est sodales nec -ultrices tortor pellentesque. Vivamus vel nisi ac lacus sollicitudin vulputate -ac ut ligula. Nullam feugiat risus eget eros gravida in molestie sapien euismod. -Nunc sed hendrerit orci. Nulla mollis consequat lorem ac blandit. Ut et turpis -mauris. Nulla est odio, posuere id ullamcorper sit amet, tincidunt vel justo. -Curabitur placerat tincidunt varius. Nulla vulputate, ipsum eu consectetur -mollis, dui nibh aliquam neque, at ultricies leo ligula et arcu. Proin et mi -eget tellus sodales lobortis. Sed tempor, urna vel pulvinar faucibus, lectus -urna vehicula ante, at facilisis dolor odio at lorem. Morbi vehicula euismod -urna, et imperdiet urna ornare vitae. - -Sed tincidunt sollicitudin ultrices. In hac habitasse platea dictumst. Morbi -ligula lectus, egestas at ultricies nec, fringilla et tellus. Duis urna lorem, -bibendum a ornare sed, euismod sed nunc. Aliquam tempor massa at velit fringilla -fringilla. Praesent sit amet tempor felis. Maecenas id felis ac velit aliquam -tempor a sit amet orci. Nunc placerat nulla pellentesque sem commodo cursus. -Praesent quis sapien orci, quis ultricies augue. Nam vestibulum sem non augue -semper tincidunt pellentesque ipsum volutpat. Duis congue, nunc a aliquam -luctus, quam ante convallis nisi, ac pellentesque lacus orci vel turpis. Cum -sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Suspendisse hendrerit nisl eu felis sagittis faucibus. Nunc eu congue -lorem. Quisque non nibh nisi, et ultrices massa. Sed vitae erat vitae nulla -pellentesque fermentum. - -Ut diam nunc, consectetur ut ultrices eu, iaculis sed felis. Sed lacinia, odio -et accumsan luctus, arcu ipsum accumsan erat, sit amet malesuada libero lacus et -velit. Donec accumsan tristique tristique. Proin a metus magna, vitae mattis -nisl. Integer a libero ipsum. Mauris faucibus eleifend metus id sodales. Morbi -ornare, nibh nec facilisis imperdiet, turpis sem commodo lorem, id commodo -mauris metus vitae justo. Etiam at pellentesque tortor. Proin mollis accumsan -ligula, nec tempus augue auctor quis. Nulla lacinia, mi quis lobortis auctor, -nisi diam posuere dui, pulvinar feugiat dui libero eget quam. Fusce eu risus -nunc, a consectetur orci. Class aptent taciti sociosqu ad litora torquent per -conubia nostra, per inceptos himenaeos. Maecenas venenatis aliquet orci, a -ultricies sem facilisis eu. Donec dolor purus, porta condimentum convallis nec, -dignissim nec libero. - -Etiam rutrum ultricies dui, et interdum metus elementum et. Nulla sapien nunc, -interdum tristique porttitor in, laoreet vitae mi. Ut vehicula auctor mauris sit -amet bibendum. Phasellus adipiscing mattis libero, eget adipiscing erat -dignissim at. Vivamus convallis malesuada metus nec cursus. Ut cursus, lorem -eleifend sollicitudin condimentum, felis tortor sodales augue, ac tempus lacus -ipsum vitae quam. Vestibulum vitae lacus non tortor vehicula iaculis faucibus -quis massa. - -Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus -mus. Duis malesuada neque nec ante porttitor accumsan. Suspendisse potenti. -Aliquam in lacus magna, imperdiet laoreet lectus. Praesent id diam nec ante -commodo rhoncus nec vel augue. Pellentesque tortor massa, dignissim ut sagittis -sed, hendrerit vitae nunc. Nam gravida, urna vitae hendrerit rutrum, felis augue -vulputate tortor, ut varius velit libero nec lectus. In adipiscing massa in est -scelerisque ullamcorper. Vivamus in nisi metus. diff --git a/posts/2015-10-07-rosa-rosa-rosam.markdown b/posts/2015-10-07-rosa-rosa-rosam.markdown deleted file mode 100644 index 8cfaaca..0000000 --- a/posts/2015-10-07-rosa-rosa-rosam.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Rosa Rosa Rosam -author: Ovidius -tags: lorem ---- - -Suspendisse pharetra ullamcorper sem et auctor. Suspendisse vitae tellus eu -turpis dignissim gravida ut ut tortor. Cum sociis natoque penatibus et magnis -dis parturient montes, nascetur ridiculus mus. Morbi aliquam sapien quis nisl -sodales non aliquet nisl iaculis. Curabitur fermentum orci vel sapien -pellentesque id condimentum metus vehicula. Curabitur turpis purus, scelerisque -at interdum quis, placerat sit amet tortor. Aliquam erat volutpat. - -Integer posuere felis non arcu suscipit ullamcorper. Nam tempus risus venenatis -orci sagittis eu aliquam ante tincidunt. Aenean vehicula ipsum id sapien -tincidunt commodo. Aliquam erat volutpat. Curabitur vehicula libero ac turpis -cursus consectetur. Praesent posuere egestas purus et dapibus. Mauris egestas, -lectus vitae scelerisque ultricies, metus lorem tempor nisi, sed vehicula tortor -mauris nec urna. Quisque urna tellus, facilisis at mollis eget, adipiscing in -nisl. Proin quam arcu, euismod et imperdiet sed, ultricies sed orci. - -Nulla malesuada sem eget lectus scelerisque nec rhoncus metus interdum. In dui -felis, rhoncus id scelerisque eget, vulputate id sem. Nulla facilisi. Vestibulum -eleifend, metus dignissim lacinia ornare, magna nulla vehicula nisi, sed -molestie mauris ipsum vel turpis. Class aptent taciti sociosqu ad litora -torquent per conubia nostra, per inceptos himenaeos. Nulla urna leo, vehicula -eget dignissim a, hendrerit ut risus. Fusce ultricies elementum placerat. Nam at -dolor sed nisi mollis sollicitudin vitae at urna. Vestibulum iaculis adipiscing -eros et mollis. - -Phasellus ultricies elit eu risus sagittis eu dictum ante ultrices. Nulla -congue, augue ac placerat tempor, orci mi luctus nisi, at varius ipsum sem sed -eros. Vivamus eget velit eget felis posuere ornare. In sed metus non est iaculis -facilisis dapibus sit amet enim. Aliquam viverra tortor eget neque volutpat in -auctor urna rutrum. Aliquam ligula augue, congue sit amet rutrum in, semper vel -nulla. Sed tempus porttitor faucibus. Donec cursus sodales nulla, quis lacinia -mi vehicula vel. Sed nec purus orci. Nam leo sapien, rutrum a ultrices quis, -placerat vel ligula. Donec massa quam, pellentesque et molestie nec, hendrerit -id mauris. In hac habitasse platea dictumst. Cras quis quam sem. Curabitur in -arcu diam, in interdum mauris. - -Proin lorem sapien, iaculis et faucibus nec, dictum sed nunc. Pellentesque in -purus justo. Vestibulum facilisis rutrum nisi, a egestas nunc suscipit sed. Ut -quis tortor a arcu bibendum placerat non sed ante. Praesent orci sem, posuere -sit amet cursus molestie, volutpat ut purus. Curabitur aliquam, purus in -pharetra viverra, lorem leo aliquam tellus, vel consequat felis neque et mauris. -Aliquam erat volutpat. diff --git a/posts/2015-11-28-carpe-diem.markdown b/posts/2015-11-28-carpe-diem.markdown deleted file mode 100644 index fcdf7a2..0000000 --- a/posts/2015-11-28-carpe-diem.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Carpe Diem -tags: lorem, quam ---- - -Fusce tortor quam, egestas in posuere quis, porttitor vel turpis. Donec -vulputate porttitor augue at rhoncus. Proin iaculis consectetur sagittis. -Curabitur venenatis turpis sit amet purus tristique nec posuere risus laoreet. -Nullam nisi sem, dapibus id semper id, egestas vel arcu. Morbi porttitor ipsum -placerat erat consequat sed consequat purus feugiat. Donec auctor elit ut risus -mattis facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -Proin vulputate sapien facilisis leo ornare pulvinar. Fusce tempus massa a risus -semper iaculis. Suspendisse sollicitudin posuere nunc, sit amet rutrum leo -facilisis mattis. Sed ornare auctor dui, vitae rutrum neque auctor sit amet. -Proin ac dui magna. Mauris vehicula interdum augue, nec ultrices libero egestas -quis. Nunc convallis euismod ipsum, id sollicitudin orci consequat ac. Fusce -bibendum congue libero, in rutrum nulla congue non. Cras sit amet risus tortor, -eu pellentesque dui. Phasellus euismod enim non nibh sodales quis consectetur -lorem laoreet. Vivamus a egestas quam. Curabitur in tortor augue, vitae varius -tellus. Integer varius, elit ac gravida suscipit, eros erat pellentesque nisi, -et tristique augue odio id nulla. Aliquam sit amet nunc vel tellus hendrerit -tempus ac vel sem. - -Aenean tincidunt sollicitudin sapien ut porttitor. Curabitur molestie adipiscing -lorem vel scelerisque. Donec vitae interdum est. Proin rutrum vulputate -faucibus. Suspendisse sit amet felis odio, non volutpat ante. Sed eu lectus -quam. Curabitur tristique rhoncus est, vel commodo tortor suscipit semper. -Maecenas feugiat vestibulum nisi id facilisis. Nulla non tincidunt libero. -Praesent ultrices interdum commodo. Sed euismod nisl auctor leo ultrices rutrum. -Aliquam nibh felis, congue molestie blandit at, bibendum at eros. Aenean -tincidunt, tortor iaculis placerat sollicitudin, lorem justo tempor diam, et -posuere sapien leo et magna. Quisque vel aliquam mauris. - -Proin varius tempus fermentum. Cum sociis natoque penatibus et magnis dis -parturient montes, nascetur ridiculus mus. Sed tincidunt nunc id magna -adipiscing non sollicitudin turpis tempor. Etiam vel elit ipsum, quis euismod -velit. Quisque elementum magna vitae quam venenatis lacinia. Sed at arcu ipsum. -Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos -himenaeos. Donec ut lorem ac sapien cursus lacinia sit amet mollis dolor. -Vivamus tempus odio nec magna faucibus sed hendrerit lorem tempor. - -Vestibulum eu nisi arcu. Curabitur nisi risus, fermentum ut lacinia ut, interdum -nec magna. Nunc aliquet gravida massa, eu aliquam lorem faucibus at. Sed -sollicitudin volutpat velit id tempor. In nibh justo, pharetra et pretium -dignissim, tempus in turpis. Phasellus eget lobortis nisl. Phasellus sed -fermentum diam. Nam tempus pharetra odio, quis congue eros imperdiet eu. Aliquam -dui eros, hendrerit et vulputate vel, porta eu eros. Nullam nisi dui, commodo -eget pharetra ut, ornare sit amet nunc. Fusce vel neque urna. Maecenas nulla -ante, egestas at consequat quis, fermentum a enim. Aliquam id tristique urna. -Integer augue justo, scelerisque et consectetur id, rhoncus eget enim. diff --git a/posts/2015-12-07-tu-quoque.markdown b/posts/2015-12-07-tu-quoque.markdown deleted file mode 100644 index c547d81..0000000 --- a/posts/2015-12-07-tu-quoque.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Tu Quoque -author: Julius -tags: lorem, quam ---- - -Vestibulum leo turpis, dignissim quis ultrices sit amet, iaculis ac ligula. -Pellentesque tristique, velit eget scelerisque scelerisque, est dolor ultrices -arcu, quis ullamcorper justo arcu luctus mauris. Integer congue molestie nisi id -posuere. Fusce pellentesque gravida tempus. Integer viverra tortor nec eros -mollis quis convallis sem laoreet. Nulla id libero ac erat varius laoreet. Proin -sed est est. Curabitur lacinia fermentum lorem, elementum malesuada ipsum -malesuada ut. Donec suscipit elit id leo vehicula mattis non sed leo. Morbi -varius eleifend varius. Nulla vestibulum, neque vitae aliquam eleifend, nisi -tellus placerat nunc, quis suscipit elit turpis eu tortor. Etiam euismod -convallis lectus quis venenatis. Phasellus laoreet magna in nibh cursus eu -egestas nulla convallis. Aliquam vel ullamcorper risus. Fusce dictum, massa id -consequat viverra, nulla ante tristique est, a faucibus nisi enim nec dui. Donec -metus ligula, condimentum at porttitor eget, lobortis at quam. - -Aenean vel libero in magna ultricies congue in a odio. Donec faucibus rutrum -ornare. Fusce dictum eleifend fermentum. Vestibulum vel nibh a metus porttitor -rhoncus. Pellentesque id quam neque, eget molestie arcu. Integer in elit vel -neque viverra ultricies in eget massa. Nam ut convallis est. Pellentesque eros -eros, sodales non vehicula et, tincidunt ut odio. Cras suscipit ultrices metus -sit amet molestie. Fusce enim leo, vehicula sed sodales quis, adipiscing at -ipsum. - -Nunc tempor dignissim enim, sed tincidunt eros bibendum quis. Curabitur et dolor -augue, id laoreet mi. Nulla cursus felis id dui vehicula vitae ornare lorem -blandit. Cras eget dui nec odio volutpat pharetra. Fusce hendrerit justo justo, -vel imperdiet enim. Vivamus elit risus, interdum ultrices accumsan eleifend, -vestibulum vitae sapien. Integer bibendum ullamcorper tristique. Nulla quis odio -lectus, quis eleifend augue. Integer a ligula mauris. Aenean et tempus tortor. -Quisque at tortor mi. Vivamus accumsan feugiat est a blandit. Sed vitae enim ut -dolor semper sodales. Duis tristique, ante et placerat elementum, nulla tellus -pellentesque sapien, quis posuere velit mi eget nulla. Sed vestibulum nunc non -est porttitor ut rutrum nibh semper. Pellentesque habitant morbi tristique -senectus et netus et malesuada fames ac turpis egestas. - -Nulla adipiscing ultricies lobortis. Vivamus iaculis nisl vitae tellus laoreet -vitae aliquet lacus mollis. Phasellus ut lacus urna, sed sagittis ante. Etiam -consectetur pretium nisl sed dignissim. Pellentesque convallis, nisl eget -commodo mollis, sem magna consequat arcu, sed pretium ipsum arcu sit amet neque. -Aliquam erat volutpat. Morbi sed mi sed urna vestibulum placerat vitae vel -metus. Fusce ac ante at justo pharetra vehicula. Vivamus vel tortor eget augue -aliquet aliquet at vel odio. Nunc venenatis, magna quis facilisis fringilla, -augue tellus varius neque, in vulputate est eros ut tortor. Duis lorem neque, -aliquam congue posuere id, condimentum non dui. Phasellus ut dui massa, -porttitor suscipit augue. Praesent quis tellus quam, vel volutpat metus. Vivamus -enim est, aliquam in imperdiet et, sagittis eu ligula. Vestibulum hendrerit -placerat orci et aliquet. Cras pharetra, dolor placerat lobortis tempor, metus -odio cursus ligula, et posuere lacus ligula quis dui. - -Donec a lectus eu nibh malesuada aliquam. Proin at metus quam, et tincidunt leo. -Quisque lacus justo, scelerisque sodales pulvinar sed, dignissim ut sapien. -Vivamus diam felis, adipiscing sollicitudin ultricies id, accumsan ac felis. In -eu posuere ligula. Suspendisse potenti. Donec porttitor dictum dui id vehicula. -Integer ante velit, congue id dictum et, adipiscing a tortor. diff --git a/release.nix b/release.nix index 16a893f..3804653 100644 --- a/release.nix +++ b/release.nix @@ -1,9 +1,5 @@ -let - sources = import ./nix/sources.nix; -in -{ compiler ? "ghc883" -, pkgs ? import sources.nixpkgs { } -}: +let sources = import ./nix/sources.nix; +in { compiler ? "ghc8104", pkgs ? import sources.nixpkgs { } }: let inherit (pkgs.lib.trivial) flip pipe; @@ -11,12 +7,10 @@ let haskellPackages = pkgs.haskell.packages.${compiler}.override { overrides = hpNew: hpOld: { - hakyll = - pipe - hpOld.hakyll - [ (flip appendPatch ./hakyll.patch) - (flip appendConfigureFlags [ "-f" "watchServer" "-f" "previewServer" ]) - ]; + hakyll = pipe hpOld.hakyll [ + (flip appendPatch ./hakyll.patch) + (flip appendConfigureFlags [ "-f" "watchServer" "-f" "previewServer" ]) + ]; resrok-web = hpNew.callCabal2nix "resrok-web" ./. { }; @@ -25,22 +19,16 @@ let }; project = haskellPackages.resrok-web; -in -{ +in { project = project; shell = haskellPackages.shellFor { - packages = p: with p; [ - project + packages = p: with p; [ project ]; + buildInputs = with haskellPackages; [ + ghcid # GHCi based IDE + hlint # or ormolu + pkgs.niv # Nix dependency management ]; - #buildInputs = with haskellPackages; [ - # ghcid - # hlint # or ormolu - # niv - # pkgs.cacert # needed for niv - # pkgs.nix # needed for niv - # zlib - #]; withHoogle = true; }; } diff --git a/jfdic-web.cabal b/resrok-web.cabal similarity index 92% rename from jfdic-web.cabal rename to resrok-web.cabal index 2b3950e..438a967 100644 --- a/jfdic-web.cabal +++ b/resrok-web.cabal @@ -1,4 +1,4 @@ -name: jfdic-web +name: resrok-web version: 0.1.0.0 build-type: Simple cabal-version: >= 1.10 diff --git a/jfdic-web.nix b/resrok-web.nix similarity index 91% rename from jfdic-web.nix rename to resrok-web.nix index ec5fd02..bd05bad 100644 --- a/jfdic-web.nix +++ b/resrok-web.nix @@ -1,6 +1,6 @@ { mkDerivation, base, hakyll, stdenv }: mkDerivation { - pname = "jfdic-web"; + pname = "resrok-web"; version = "0.1.0.0"; src = ./.; isLibrary = false; diff --git a/site.hs b/site.hs index a02ea19..991fd64 100644 --- a/site.hs +++ b/site.hs @@ -120,7 +120,7 @@ feedConfig :: FeedConfiguration feedConfig = FeedConfiguration { feedTitle = "Resilient Rockhampton" , feedDescription = "All We Have Is Each Other" - , feedAuthorName = "Resilient Rockhampton" + , feedAuthorName = "the collective" , feedAuthorEmail = "collective@resrok.org" , feedRoot = "https://resrok.org" } @@ -135,11 +135,11 @@ siteCtx = constField "tagline" "All We Have Is Each Other" `mappend` constField "site-title" "Resilient Rockhampton" `mappend` constField "copy-year" "2021" `mappend` - constField "github-repo" "https://source.resrok.org/resrok/resrok-web" `mappend` + constField "github-repo" "https://source.jfdic.org/resrok/resrok-web" `mappend` defaultContext baseCtx = - constField "baseurl" "http://localhost:8000" + constField "baseurl" "https://resrok.org" -------------------------------------------------------------------------------- diff --git a/templates/default.html b/templates/default.html index c3c7d05..406bc48 100644 --- a/templates/default.html +++ b/templates/default.html @@ -13,6 +13,7 @@

+ $site-title$ $tagline$

@@ -26,7 +27,7 @@ - + diff --git a/templates/head.html b/templates/head.html index 0945e9a..41f1ae9 100644 --- a/templates/head.html +++ b/templates/head.html @@ -20,9 +20,9 @@ $endif$ $endif$ - - - + + + $for(list_pages)$ $if(title)$ - $title$ + $title$ $endif$ $endfor$ - Archive + Archive GitHub project @@ -30,7 +30,7 @@ © $copy-year$. All rights reserved.

- + Site created with Hakyll.