Rebased on hakyll-skeleton
This commit is contained in:
parent
321ac6c77d
commit
9e2c51f9fb
538
css/resrok.css
Normal file
538
css/resrok.css
Normal file
|
@ -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);
|
||||
}
|
23
default.nix
23
default.nix
|
@ -1 +1,22 @@
|
|||
(import ./release.nix { }).project
|
||||
{ nixpkgs ? import <nixpkgs> { }, 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
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.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/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
}
|
||||
}
|
||||
|
|
132
nix/sources.nix
132
nix/sources.nix
|
@ -6,52 +6,63 @@ let
|
|||
# The fetchers. fetch_<type> fetches specs of type <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 <package> -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 <package> -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 = <nixpkgs> == ./.;
|
||||
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); }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
30
posts/1902-05-01-mutual-aid.rst
Normal file
30
posts/1902-05-01-mutual-aid.rst
Normal file
|
@ -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.
|
20
posts/1908-07-19-what_i_believe.rst
Normal file
20
posts/1908-07-19-what_i_believe.rst
Normal file
|
@ -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?
|
19
posts/1974-05-01-the_dispossessed.rst
Normal file
19
posts/1974-05-01-the_dispossessed.rst
Normal file
|
@ -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.
|
19
posts/1986-05-01-connotations_of_anarchy.rst
Normal file
19
posts/1986-05-01-connotations_of_anarchy.rst
Normal file
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
36
release.nix
36
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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
name: jfdic-web
|
||||
name: resrok-web
|
||||
version: 0.1.0.0
|
||||
build-type: Simple
|
||||
cabal-version: >= 1.10
|
|
@ -1,6 +1,6 @@
|
|||
{ mkDerivation, base, hakyll, stdenv }:
|
||||
mkDerivation {
|
||||
pname = "jfdic-web";
|
||||
pname = "resrok-web";
|
||||
version = "0.1.0.0";
|
||||
src = ./.;
|
||||
isLibrary = false;
|
6
site.hs
6
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"
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<img src=/images/hakyll-logo.svg" class=logo style="display: inline;"/>
|
||||
<a href="$baseurl$" title="Home">$site-title$</a>
|
||||
<small>$tagline$</small>
|
||||
</h3>
|
||||
|
@ -26,7 +27,7 @@
|
|||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
<script src='$baseurl$/public/js/script.js'></script>
|
||||
<script src="/js/script.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
$endif$
|
||||
$endif$
|
||||
|
||||
<link rel="stylesheet" href="$baseurl$/css/base.css">
|
||||
<link rel="stylesheet" href="$baseurl$/css/syntax.css">
|
||||
<link rel="stylesheet" href="$baseurl$/css/jfdic.css">
|
||||
<link rel="stylesheet" href="/css/base.css">
|
||||
<link rel="stylesheet" href="/css/syntax.css">
|
||||
<link rel="stylesheet" href="/css/resrok.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Serif:400,400italic,700%7CPT+Sans:400">
|
||||
|
||||
<!---
|
||||
|
|
|
@ -9,17 +9,17 @@
|
|||
</div>
|
||||
|
||||
<nav class="sidebar-nav">
|
||||
<a class="sidebar-nav-item$if(home)$ active$endif$" href="$baseurl$">Home</a>
|
||||
<a class="sidebar-nav-item$if(home)$ active$endif$" href="/">Home</a>
|
||||
|
||||
<!--- The code below dynamically generates a sidebar nav of the files in the folder /pages -->
|
||||
|
||||
$for(list_pages)$
|
||||
$if(title)$
|
||||
<a class="sidebar-nav-item$if(eval(title))$ active$endif$" href="$baseurl$$node-url$">$title$</a>
|
||||
<a class="sidebar-nav-item$if(eval(title))$ active$endif$" href="$node-url$">$title$</a>
|
||||
$endif$
|
||||
$endfor$
|
||||
|
||||
<a class="sidebar-nav-item$if(archive)$ active$endif$" href="$baseurl$/archive.html">Archive</a>
|
||||
<a class="sidebar-nav-item$if(archive)$ active$endif$" href="/archive.html">Archive</a>
|
||||
|
||||
<a class="sidebar-nav-item" href="$github-repo$">GitHub project</a>
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
|||
© $copy-year$. All rights reserved.
|
||||
</p>
|
||||
<p>
|
||||
<img src="$baseurl$/images/haskell-logo.png" class=logo style="display: inline;"/>
|
||||
<img src="/images/haskell-logo.png" class=logo style="display: inline;"/>
|
||||
Site created with
|
||||
<a href="https://jaspervdj.be/hakyll">Hakyll</a>.
|
||||
</p>
|
||||
|
|
Loading…
Reference in a new issue