Compare commits
27 commits
Author | SHA1 | Date | |
---|---|---|---|
935c82cced | |||
3a692719f2 | |||
4bc3853bcb | |||
d40c4b2413 | |||
77a1e74bbb | |||
e4d2f83c9b | |||
d7bc9b85a0 | |||
8024a1ed64 | |||
3e9486099d | |||
b89521fb7b | |||
e5df34d7e2 | |||
7b5c19a19a | |||
d41d67a858 | |||
84cacc56d2 | |||
a2849b213f | |||
62cd093202 | |||
82f58738ad | |||
9f9bb57797 | |||
739fcca51a | |||
726cb23d3e | |||
a5cc2f536d | |||
d33b712fc1 | |||
ad9c16de0c | |||
00d3799f90 | |||
dd6508a03d | |||
e9a92ab48f | |||
b77f64cc27 |
146 changed files with 181 additions and 5036 deletions
45
README.md
45
README.md
|
@ -1,43 +1,12 @@
|
|||
# Nix configuration
|
||||
## Unified nix configuration
|
||||
|
||||
## Updating
|
||||
Update whole flake (clean working directory 1st): `nix flake update --commit-lock-file`
|
||||
|
||||
Update flake
|
||||
Switch current machine: `sudo nixos-rebuild switch --flake . --show-trace`
|
||||
|
||||
nix flake update --commit-lock-file
|
||||
Switch current home manager: `home-manager switch --flake . --show-trace`
|
||||
|
||||
Switch current machine
|
||||
## Maintenance shit ()
|
||||
Clean shit de Home: `nix store gc`
|
||||
|
||||
sudo nixos-rebuild switch --flake . --show-trace
|
||||
|
||||
Switch current home manager
|
||||
|
||||
home-manager switch --flake . --show-trace
|
||||
|
||||
Switch server
|
||||
|
||||
nixos-rebuild switch --target-host root@posixlycorrect.com --use-substitutes --show-trace --flake .\#vps
|
||||
|
||||
|
||||
## Cleanup
|
||||
|
||||
Collect garbage (run with sudo to collect root garbage)
|
||||
|
||||
nix-collect-garbage -d
|
||||
|
||||
|
||||
## Submodule management
|
||||
|
||||
Trivionomicon
|
||||
|
||||
git subtree push --prefix=trivionomicon forgejo@git.posixlycorrect.com:deepState/trivionomicon.git master
|
||||
git subtree pull --prefix=trivionomicon forgejo@git.posixlycorrect.com:deepState/trivionomicon.git master
|
||||
|
||||
Homepage
|
||||
|
||||
git subtree push --prefix=homepage forgejo@git.posixlycorrect.com:fabian/homepage.git master
|
||||
git subtree pull --prefix=homepage forgejo@git.posixlycorrect.com:fabian/homepage.git master
|
||||
|
||||
|
||||
## About
|
||||
This is a unification of my old configs, which had a combined 506 commits.
|
||||
Clean shit de sys: `sudo nix store gc`
|
||||
|
|
370
flake.lock
generated
370
flake.lock
generated
|
@ -1,86 +1,6 @@
|
|||
{
|
||||
"nodes": {
|
||||
"authentik-nix": {
|
||||
"inputs": {
|
||||
"authentik-src": "authentik-src",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts",
|
||||
"flake-utils": "flake-utils",
|
||||
"napalm": "napalm",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-build-systems": "pyproject-build-systems",
|
||||
"pyproject-nix": "pyproject-nix",
|
||||
"systems": "systems",
|
||||
"uv2nix": "uv2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1753369162,
|
||||
"narHash": "sha256-pSAsUVueht3WyyFJ3K+QJKWqFZNbyvsXijHOAHApeLk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "authentik-nix",
|
||||
"rev": "1361d269fe10c527528264185567a053252e22b0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "authentik-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"authentik-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1753187012,
|
||||
"narHash": "sha256-bs/ThY3YixwBObahcS7BrOWj0gsaUXI664ldUQlJul8=",
|
||||
"owner": "goauthentik",
|
||||
"repo": "authentik",
|
||||
"rev": "23ffad1c6be80bea223caf5f1cf265b984b76328",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "goauthentik",
|
||||
"ref": "version/2025.6.4",
|
||||
"repo": "authentik",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749398372,
|
||||
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nur",
|
||||
|
@ -103,10 +23,7 @@
|
|||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": [
|
||||
"authentik-nix",
|
||||
"systems"
|
||||
]
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
|
@ -144,42 +61,6 @@
|
|||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"inputs": {
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
|
@ -216,11 +97,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756245065,
|
||||
"narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=",
|
||||
"lastModified": 1755928099,
|
||||
"narHash": "sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "54b2879ce622d44415e727905925e21b8f833a98",
|
||||
"rev": "4a44fb9f7555da362af9d499817084f4288a957f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -230,23 +111,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"homepage": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"path": "./homepage",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "./homepage",
|
||||
"type": "path"
|
||||
},
|
||||
"parent": []
|
||||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1737831083,
|
||||
|
@ -262,52 +126,9 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mediawikiSkinCitizen": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1724097552,
|
||||
"narHash": "sha256-+o5FDWMrEqnva5qcdc45wAYyE2ZtUhEjygUGVt0HsaA=",
|
||||
"owner": "StarCitizenTools",
|
||||
"repo": "mediawiki-skins-Citizen",
|
||||
"rev": "28cd4e18b52aed3270fe7b55bff4545c8314a687",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "StarCitizenTools",
|
||||
"ref": "v2.27.0",
|
||||
"repo": "mediawiki-skins-Citizen",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"napalm": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"authentik-nix",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"authentik-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1725806412,
|
||||
"narHash": "sha256-lGZjkjds0p924QEhm/r0BhAxbHBJE1xMOldB/HmQH04=",
|
||||
"owner": "willibutz",
|
||||
"repo": "napalm",
|
||||
"rev": "b492440d9e64ae20736d3bec5c7715ffcbde83f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "willibutz",
|
||||
"ref": "avoid-foldl-stack-overflow",
|
||||
"repo": "napalm",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixGL": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -339,28 +160,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1748740939,
|
||||
"narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1756217674,
|
||||
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=",
|
||||
"lastModified": 1755922037,
|
||||
"narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
|
||||
"rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -372,11 +178,11 @@
|
|||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1756266583,
|
||||
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -388,15 +194,15 @@
|
|||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756332267,
|
||||
"narHash": "sha256-SBiHiR+Y074U9OZhnIrIgu/6iLZPxYhlBOmnP7ymBME=",
|
||||
"lastModified": 1756179127,
|
||||
"narHash": "sha256-X3V3G2GhSms2QT45olNd2hcU8MqlTdMxDSty+iWV1D0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "1f693539e1da901a6da002555d5480e887a5adc1",
|
||||
"rev": "278516dbc557696d283514f8c33a054dcace4ace",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -405,85 +211,31 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pyproject-build-systems": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"authentik-nix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-nix": [
|
||||
"authentik-nix",
|
||||
"pyproject-nix"
|
||||
],
|
||||
"uv2nix": [
|
||||
"authentik-nix",
|
||||
"uv2nix"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749519371,
|
||||
"narHash": "sha256-UJONN7mA2stweZCoRcry2aa1XTTBL0AfUOY84Lmqhos=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "build-system-pkgs",
|
||||
"rev": "7c06967eca687f3482624250428cc12f43c92523",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "build-system-pkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pyproject-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"authentik-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750499893,
|
||||
"narHash": "sha256-ThKBd8XSvITAh2JqU7enOp8AfKeQgf9u7zYC41cnBE4=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "pyproject.nix",
|
||||
"rev": "e824458bd917b44bf4c38795dea2650336b2f55d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "pyproject.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"authentik-nix": "authentik-nix",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"flake-utils": "flake-utils",
|
||||
"hm-isolation": "hm-isolation",
|
||||
"home-manager": "home-manager",
|
||||
"homepage": "homepage",
|
||||
"impermanence": "impermanence",
|
||||
"mediawikiSkinCitizen": "mediawikiSkinCitizen",
|
||||
"nixGL": "nixGL",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nur": "nur",
|
||||
"trivionomicon": "trivionomicon",
|
||||
"unstable": "unstable",
|
||||
"vpsadminos": "vpsadminos"
|
||||
"unstable": "unstable"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -517,39 +269,9 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_5": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"trivionomicon": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_5",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
|
@ -566,11 +288,11 @@
|
|||
},
|
||||
"unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1756266583,
|
||||
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -579,46 +301,6 @@
|
|||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"uv2nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"authentik-nix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-nix": [
|
||||
"authentik-nix",
|
||||
"pyproject-nix"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750987094,
|
||||
"narHash": "sha256-GujDElxLgYatnNvuL1U6qd18lcuG6anJMjpfYRScV08=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "uv2nix",
|
||||
"rev": "4b703d851b61e664a70238711a8ff0efa1aa2f52",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "uv2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"vpsadminos": {
|
||||
"locked": {
|
||||
"lastModified": 1755964485,
|
||||
"narHash": "sha256-+YzznL/mHiSjDFC8vJsSgQ+pvjhqWMsLRjegEKSNv/4=",
|
||||
"owner": "vpsfreecz",
|
||||
"repo": "vpsadminos",
|
||||
"rev": "20f55b1d9bee4fdab62494d4471854d6586d3637",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "vpsfreecz",
|
||||
"repo": "vpsadminos",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
28
flake.nix
28
flake.nix
|
@ -8,32 +8,16 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nur.url = "github:nix-community/NUR";
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
hm-isolation.url = "github:3442/hm-isolation";
|
||||
nixGL.url = "github:guibou/nixGL";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
trivionomicon = {
|
||||
url = "./trivionomicon";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
homepage = {
|
||||
url = "./homepage";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
authentik-nix = {
|
||||
url = "github:nix-community/authentik-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
mediawikiSkinCitizen = {
|
||||
url = "github:StarCitizenTools/mediawiki-skins-Citizen/v2.27.0";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
hm-isolation.url = "github:3442/hm-isolation";
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
nixGL.url = "github:guibou/nixGL";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
vpsadminos.url = "github:vpsfreecz/vpsadminos";
|
||||
};
|
||||
|
||||
outputs = flakes:
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.local.services.accounts;
|
||||
in {
|
||||
options.local.services.accounts.enable = mkEnableOption "accounts settings";
|
||||
config = mkIf cfg.enable {
|
||||
accounts.email.accounts = {
|
||||
"fabian@posixlycorrect.com" = {
|
||||
address = "fabian@posixlycorrect.com";
|
||||
userName = "fabianmontero@fastmail.com";
|
||||
realName = "fabian";
|
||||
primary = true;
|
||||
flavor = "fastmail.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -44,8 +44,8 @@ in {
|
|||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userEmail = "fabian@posixlycorrect.com";
|
||||
userName = "Fabian Montero";
|
||||
userEmail = "josescalante9808@gmail.com";
|
||||
userName = "josEscalante";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.local.services.deepState;
|
||||
in {
|
||||
options.local.services.deepState.enable = mkEnableOption "trivionomicon settings";
|
||||
config = mkIf cfg.enable {
|
||||
home.sessionVariables = {
|
||||
FSOCIETY_TELEGRAM_BACKUP_N = "0";
|
||||
FSOCIETY_TELEGRAM_BACKUP_LOCATION = "/extern/var/fsociety_backup";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -9,15 +9,10 @@
|
|||
./neovim.nix
|
||||
./baseline.nix
|
||||
./gaming.nix
|
||||
./yubikey.nix
|
||||
./firefox.nix
|
||||
./gui
|
||||
./zsh
|
||||
./gpg.nix
|
||||
./defaultDesktopPack.nix
|
||||
./accounts.nix
|
||||
./syncthing.nix
|
||||
./deepState.nix
|
||||
./mapping.nix
|
||||
./zed.nix
|
||||
];
|
||||
|
|
|
@ -15,20 +15,17 @@ in {
|
|||
calibre
|
||||
chromium
|
||||
discord
|
||||
kdePackages.gwenview
|
||||
libreoffice-fresh
|
||||
mpv
|
||||
obs-studio
|
||||
pavucontrol
|
||||
pdfarranger
|
||||
qimgv
|
||||
qpdfview
|
||||
runelite
|
||||
spotify
|
||||
tdesktop
|
||||
usbutils
|
||||
vpsfree-client
|
||||
vscodium-fhs
|
||||
zola
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,23 +9,37 @@ with lib; let
|
|||
in {
|
||||
options.local.apps.firefox = {
|
||||
enable = mkEnableOption "firefox settings";
|
||||
|
||||
makeDefaultBrowser = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Take a guess
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.firefox.enable = true;
|
||||
xdg = {
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/html" = ["firefox.desktop"];
|
||||
"text/uri-list" = ["firefox.desktop"];
|
||||
"x-scheme-handler/http" = ["firefox.desktop"];
|
||||
"x-scheme-handler/https" = ["firefox.desktop"];
|
||||
"x-scheme-handler/about" = ["firefox.desktop"];
|
||||
"x-scheme-handler/unknown" = ["firefox.desktop"];
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
programs.firefox.enable = true;
|
||||
}
|
||||
|
||||
(mkIf cfg.makeDefaultBrowser {
|
||||
xdg = {
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/html" = ["firefox"];
|
||||
"text/uri-list" = ["firefox"];
|
||||
"x-scheme-handler/http" = ["firefox"];
|
||||
"x-scheme-handler/https" = ["firefox"];
|
||||
"x-scheme-handler/about" = ["firefox"];
|
||||
"x-scheme-handler/unknown" = ["firefox"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
home.sessionVariables.DEFAULT_BROWSER = "${lib.getExe pkgs.firefox}";
|
||||
};
|
||||
|
||||
home.sessionVariables.DEFAULT_BROWSER = "${lib.getExe pkgs.firefox}";
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -11,10 +11,10 @@ in {
|
|||
enable = mkEnableOption "gaming apps";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [
|
||||
pkgs.lutris
|
||||
pkgs.openrct2
|
||||
pkgs.prismlauncher
|
||||
home.packages = with pkgs; [
|
||||
lutris
|
||||
openrct2
|
||||
prismlauncher
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.local.services.gpg;
|
||||
in {
|
||||
options.local.services.gpg = {
|
||||
enable = mkEnableOption "gpg settings";
|
||||
defaultKey = mkOption {
|
||||
type = types.str;
|
||||
description = "fingerprint of default public key to be used in gpg, git, email, etc.";
|
||||
example = "A8981D346F8F4130CA16A7775517E687FCCE0BB9";
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default-key = config.local.services.gpg.defaultKey;
|
||||
};
|
||||
};
|
||||
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
|
||||
enableZshIntegration = true;
|
||||
enableBashIntegration = true;
|
||||
|
||||
enableExtraSocket = true;
|
||||
enableSshSupport = true;
|
||||
|
||||
defaultCacheTtl = 3600 * 3;
|
||||
defaultCacheTtlSsh = 3600 * 3;
|
||||
|
||||
maxCacheTtl = 3600 * 6;
|
||||
maxCacheTtlSsh = 3600 * 6;
|
||||
|
||||
pinentry.package = pkgs.pinentry-emacs;
|
||||
};
|
||||
|
||||
accounts.email.accounts = {
|
||||
"fabian@posixlycorrect.com" = {
|
||||
gpg = {
|
||||
encryptByDefault = true;
|
||||
signByDefault = true;
|
||||
key = config.local.services.gpg.defaultKey;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
signing = {
|
||||
key = config.local.services.gpg.defaultKey;
|
||||
signByDefault = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -61,8 +61,8 @@ in {
|
|||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"application/pdf" = with pkgs; ["qpdfview.desktop"];
|
||||
"x-scheme-handler/file" = with pkgs; ["foot.desktop"];
|
||||
"application/pdf" = with pkgs; ["qpdfview"];
|
||||
"x-scheme-handler/file" = with pkgs; ["foot"];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -156,13 +156,7 @@ in {
|
|||
command = "${lib.getExe pkgs.sway} 'workspace 1; exec ${lib.getExe pkgs.firefox}'";
|
||||
}
|
||||
{
|
||||
command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.tdesktop}'";
|
||||
}
|
||||
{
|
||||
command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.gajim}'";
|
||||
}
|
||||
{
|
||||
command = "${lib.getExe pkgs.swaybg} -m fill -i ${config.home.homeDirectory}/Pictures/wallpapers/jupiter.png";
|
||||
command = "${lib.getExe pkgs.swaybg} -m fill -i ${config.home.homeDirectory}/Pictures/wallpapers/wallpaper.jpg";
|
||||
always = true;
|
||||
}
|
||||
{
|
||||
|
|
|
@ -75,9 +75,9 @@ in {
|
|||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Entire bar: fully transparent, no border */
|
||||
/* Entire bar: blacc, no border */
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
background: #000000;
|
||||
color: #eaeaea;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
@ -138,14 +138,14 @@ in {
|
|||
margin: 0;
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
color: #ffffff;
|
||||
box-shadow: inset 0 -2px #ffffff;
|
||||
border-bottom: 2px solid #ffffff;
|
||||
}
|
||||
|
||||
/* Status modules — keep them flat and compact */
|
||||
#clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray {
|
||||
padding: 0 6px;
|
||||
margin: 0;
|
||||
background: transparent;
|
||||
background: #000000;
|
||||
color: #eaeaea;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.local.services.syncthing;
|
||||
in {
|
||||
options.local.services.syncthing = {
|
||||
enable = mkEnableOption "syncthing settings";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
tray.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -15,10 +15,10 @@ in {
|
|||
settings = {
|
||||
main = {
|
||||
term = "xterm-256color";
|
||||
font = "JetBrains Mono:style=Medium:size=15";
|
||||
font-bold = "JetBrains Mono:style=Bold:size=15";
|
||||
font-italic = "JetBrains Mono:style=Italic:size=15";
|
||||
font-bold-italic = "JetBrains Mono:style=Bold Italic:size=15";
|
||||
font = "JetBrains Mono:style=Medium:size=12";
|
||||
font-bold = "JetBrains Mono:style=Bold:size=12";
|
||||
font-italic = "JetBrains Mono:style=Italic:size=12";
|
||||
font-bold-italic = "JetBrains Mono:style=Bold Italic:size=12";
|
||||
dpi-aware = "yes";
|
||||
initial-window-size-pixels = "1200x600";
|
||||
};
|
||||
|
@ -29,15 +29,15 @@ in {
|
|||
};
|
||||
|
||||
colors = {
|
||||
background = "000000";
|
||||
regular0 = "616161";
|
||||
regular1 = "ff4d51";
|
||||
regular2 = "35d450";
|
||||
regular3 = "e9e836";
|
||||
regular4 = "5dc5f8";
|
||||
regular5 = "feabf2";
|
||||
regular6 = "24dfc4";
|
||||
regular7 = "ffffff";
|
||||
background = "111111";
|
||||
regular0 = "1E201E"; #black
|
||||
regular1 = "BE3144"; #red
|
||||
regular2 = "1F7D53"; #green
|
||||
regular3 = "FEC260"; #yellow
|
||||
regular4 = "065084"; #blue
|
||||
regular5 = "940B92"; #magenta
|
||||
regular6 = "008B8B"; #cyan
|
||||
regular7 = "D3DAD9"; #white
|
||||
};
|
||||
|
||||
bell = {
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.local.apps.yubikey;
|
||||
in {
|
||||
options.local.apps.yubikey = {
|
||||
enable = mkEnableOption "Yubikey home settings";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
yubikey-manager
|
||||
yubico-pam
|
||||
yubikey-personalization
|
||||
];
|
||||
};
|
||||
}
|
|
@ -14,7 +14,7 @@ in {
|
|||
extensions = [
|
||||
"nix"
|
||||
"codebook"
|
||||
"vscode-dark-high-contrast"
|
||||
"one-dark"
|
||||
"catppuccin-icons"
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
|
@ -23,8 +23,8 @@ in {
|
|||
userSettings = {
|
||||
disable_ai = true;
|
||||
theme = {
|
||||
dark = "VSCode Dark High Contrast";
|
||||
light = "VSCode Dark High Contrast";
|
||||
dark = "One Dark";
|
||||
light = "One Dark";
|
||||
};
|
||||
icon_theme = {
|
||||
dark = "Catppuccin Latte";
|
||||
|
@ -41,7 +41,7 @@ in {
|
|||
autosave = "on_focus_change";
|
||||
auto_update = false;
|
||||
buffer_font_family = "JetBrains Mono";
|
||||
buffer_font_size = 22;
|
||||
buffer_font_size = 16;
|
||||
hide_mouse = "never";
|
||||
minimap.show = "auto";
|
||||
tabs = {
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
zstyle ':completion:*' original true
|
||||
zstyle ':completion:*' preserve-prefix '//[^/]##/'
|
||||
zstyle ':completion:*' verbose true
|
||||
zstyle :compinstall filename '/home/fabian/.zshrc'
|
||||
zstyle :compinstall filename '/home/chem/.zshrc'
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
@ -79,8 +79,11 @@
|
|||
alias l='ls --color -FhAltr'
|
||||
alias x='killall --ignore-case --user=$(whoami) --interactive'
|
||||
alias tree='tree -CF'
|
||||
alias lock="betterlockscreen -l"
|
||||
alias nightmode="${lib.getExe pkgs.redshift} -P -O 1000"
|
||||
alias lightmode="${lib.getExe pkgs.redshift} -x="
|
||||
alias nixoide="nix repl '<nixpkgs>'"
|
||||
alias vps="ssh -A vps"
|
||||
alias vim=nvim
|
||||
bindkey -e
|
||||
bindkey "^[[1;5D" backward-word
|
||||
bindkey "^[[1;5C" forward-word
|
||||
|
@ -98,8 +101,8 @@
|
|||
local pkg
|
||||
pkg="$1"
|
||||
shift
|
||||
echo "nix shell nixpkgs#$pkg --impure"
|
||||
nix shell "nixpkgs#$pkg" "$@" --impure
|
||||
echo "nix shell unstable#$pkg --impure"
|
||||
nix shell "unstable#$pkg" "$@" --impure
|
||||
}
|
||||
|
||||
function spawn () {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
nix.registry = {
|
||||
"system".to = {
|
||||
type = "path";
|
||||
path = "/home/fabian/nix";
|
||||
path = "/home/chem/nix";
|
||||
};
|
||||
|
||||
"nixpkgs".flake = flakes.nixpkgs;
|
||||
|
@ -28,13 +28,6 @@
|
|||
enable = true;
|
||||
prompt = "%B[%~] \${vcs_info_msg_0_}%b";
|
||||
};
|
||||
accounts.enable = true;
|
||||
deepState.enable = true;
|
||||
gpg = {
|
||||
enable = true;
|
||||
defaultKey = "A8981D346F8F4130CA16A7775517E687FCCE0BB9";
|
||||
};
|
||||
syncthing.enable = true;
|
||||
};
|
||||
|
||||
apps = {
|
||||
|
@ -42,7 +35,6 @@
|
|||
terminal.enable = true;
|
||||
neovim.enable = true;
|
||||
gaming.enable = true;
|
||||
yubikey.enable = true;
|
||||
defaultDesktopPack.enable = true;
|
||||
firefox.enable = true;
|
||||
mapping.enable = true;
|
||||
|
@ -52,15 +44,15 @@
|
|||
gui = {
|
||||
enable = true;
|
||||
monitors = {
|
||||
DP-1 = {
|
||||
HDMI-A-4 = {
|
||||
width = "1920";
|
||||
height = "1080";
|
||||
rate = "59.94";
|
||||
};
|
||||
DP-2 = {
|
||||
width = "1920";
|
||||
height = "1080";
|
||||
rate = "143.855";
|
||||
DP-1 = {
|
||||
width = "1600";
|
||||
height = "900";
|
||||
rate = "59.94";
|
||||
posX = "1920";
|
||||
};
|
||||
};
|
||||
|
@ -69,24 +61,15 @@
|
|||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
darktable
|
||||
(gajim.override {
|
||||
enableSecrets = true;
|
||||
enableUPnP = true;
|
||||
enableAppIndicator = true;
|
||||
enableE2E = true;
|
||||
enableRST = true;
|
||||
})
|
||||
gnucash
|
||||
kdePackages.kdenlive
|
||||
nmap
|
||||
qbittorrent
|
||||
thunderbird
|
||||
virt-manager
|
||||
];
|
||||
|
||||
username = "fabian";
|
||||
homeDirectory = "/home/fabian";
|
||||
username = "chem";
|
||||
homeDirectory = "/home/chem";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
|
@ -5,6 +5,6 @@
|
|||
}:
|
||||
with lib; {
|
||||
systemd.user.tmpfiles.rules = [
|
||||
"d %t/tmp 0700 fabian fabian 24h"
|
||||
"d %t/tmp 0700 chem chem 24h"
|
||||
];
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
flakes,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./systemd
|
||||
./isolation.nix
|
||||
];
|
||||
|
||||
nix.registry = {
|
||||
"system".to = {
|
||||
type = "path";
|
||||
path = "/home/fabian/nix";
|
||||
};
|
||||
|
||||
"nixpkgs".flake = flakes.nixpkgs;
|
||||
"unstable".flake = flakes.unstable;
|
||||
};
|
||||
|
||||
local = {
|
||||
baseline.enable = true;
|
||||
|
||||
services = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
prompt = "%B[%~] \${vcs_info_msg_0_}%b";
|
||||
};
|
||||
accounts.enable = true;
|
||||
gpg = {
|
||||
enable = true;
|
||||
defaultKey = "7206D8EE2474F3DF18EA876F0EC1691FF8C1A81F";
|
||||
};
|
||||
};
|
||||
|
||||
apps = {
|
||||
terminal.enable = true;
|
||||
neovim.enable = true;
|
||||
gaming.enable = true;
|
||||
yubikey.enable = true;
|
||||
browsers.enable = true;
|
||||
defaultDesktopPack.enable = true;
|
||||
};
|
||||
|
||||
gui = {
|
||||
enable = true;
|
||||
monitors = {
|
||||
eDP-1 = {
|
||||
width = "1920";
|
||||
height = "1080";
|
||||
rate = "60.00";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
];
|
||||
|
||||
username = "fabian";
|
||||
homeDirectory = "/home/fabian";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
home.isolation = {
|
||||
enable = true;
|
||||
btrfsSupport = true;
|
||||
defaults = {
|
||||
static = true;
|
||||
bindHome = "home/";
|
||||
persist = {
|
||||
base = "shenvs";
|
||||
btrfs = true;
|
||||
};
|
||||
};
|
||||
|
||||
modulesUnder = ./shenvs;
|
||||
};
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
static = true;
|
||||
|
||||
packages = with pkgs; [
|
||||
binutils
|
||||
cmake
|
||||
curl
|
||||
gdb
|
||||
gnumake
|
||||
rustup
|
||||
valgrind
|
||||
];
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
static = true;
|
||||
|
||||
packages = with pkgs; [
|
||||
pipenv
|
||||
(python310.withPackages (packages:
|
||||
with packages; [
|
||||
setuptools
|
||||
]))
|
||||
];
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
systemd.user.tmpfiles.rules = [
|
||||
"d %t/tmp 0700 fabian fabian 24h"
|
||||
];
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
flakes,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
imports = [
|
||||
];
|
||||
|
||||
nix.registry = {
|
||||
"system".to = {
|
||||
type = "path";
|
||||
path = "/home/fabian/nix";
|
||||
};
|
||||
|
||||
"nixpkgs".flake = flakes.nixpkgs;
|
||||
"unstable".flake = flakes.unstable;
|
||||
};
|
||||
|
||||
local = {
|
||||
baseline.enable = true;
|
||||
|
||||
services = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
prompt = "%B<%~> \${vcs_info_msg_0_}%b";
|
||||
};
|
||||
};
|
||||
|
||||
apps = {
|
||||
neovim.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
];
|
||||
|
||||
username = "fabian";
|
||||
homeDirectory = "/home/fabian";
|
||||
};
|
||||
}
|
2
homepage/.gitignore
vendored
2
homepage/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
!**/.keep
|
||||
result
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
stdenv,
|
||||
zola,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
stdenv.mkDerivation {
|
||||
pname = "posixlycorrect.com";
|
||||
version = "0.0.1";
|
||||
|
||||
src = ./posixlycorrect;
|
||||
|
||||
buildPhase = ''
|
||||
${getExe zola} build --output-dir $out
|
||||
'';
|
||||
}
|
58
homepage/flake.lock
generated
58
homepage/flake.lock
generated
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1719426051,
|
||||
"narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=",
|
||||
"path": "/nix/store/f0ddmw6s86y567yg06h5019z72szbzch-source",
|
||||
"rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
inputs = {
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (system: let
|
||||
pkgs = import nixpkgs {inherit system;};
|
||||
in {
|
||||
formatter = pkgs.alejandra;
|
||||
|
||||
packages = rec {
|
||||
default = posixlycorrect;
|
||||
posixlycorrect = pkgs.callPackage ./. {};
|
||||
};
|
||||
});
|
||||
}
|
1
homepage/posixlycorrect/.gitignore
vendored
1
homepage/posixlycorrect/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
public/*
|
|
@ -1,32 +0,0 @@
|
|||
base_url = "https://posixlycorrect.com"
|
||||
compile_sass = true
|
||||
build_search_index = true
|
||||
theme = "terminimal"
|
||||
title = "posixlycorrect"
|
||||
|
||||
[markdown]
|
||||
highlight_code = true
|
||||
highlight_theme = "ayu-dark"
|
||||
|
||||
[extra]
|
||||
accent_color = "orange"
|
||||
background_color = "dark"
|
||||
author = "Fabián Montero"
|
||||
logo_text = "[~] posixlycorrect"
|
||||
use_full_hack_font = true
|
||||
page_titles = "combined"
|
||||
favicon = "/favicon.png"
|
||||
favicon_mimetype = "image/png"
|
||||
|
||||
menu_items = [
|
||||
{name = "about", url = "$BASE_URL/about"},
|
||||
{name = "lib", url = "$BASE_URL/lib"},
|
||||
{name = "blog", url = "$BASE_URL/blog"},
|
||||
{name = "leaderboard", url = "$BASE_URL/leaderboard"},
|
||||
{name = "wiki↗", url = "https://wiki.posixlycorrect.com", newtab = true},
|
||||
{name = "git↗", url = "https://git.posixlycorrect.com", newtab = true},
|
||||
{name = "notes↗", url = "https://notes.posixlycorrect.com", newtab = true},
|
||||
{name = "ebooks↗", url = "https://calibre.posixlycorrect.com", newtab = true},
|
||||
{name = "photos↗", url = "https://photos.posixlycorrect.com", newtab = true},
|
||||
{name = "recipes↗", url = "https://food.posixlycorrect.com", newtab = true},
|
||||
]
|
|
@ -1,2 +0,0 @@
|
|||
+++
|
||||
+++
|
|
@ -1,8 +0,0 @@
|
|||
+++
|
||||
title = "about"
|
||||
+++
|
||||
**name:** Fabián Montero
|
||||
**bio:** Linux Embedded Engineer
|
||||
**projects:** [https://git.posixlycorrect.com/fabian/](https://git.posixlycorrect.com/fabian?tab=activity)
|
||||
**email:** fabian [at] posixlycorrect [dot] com
|
||||
**gpg key:** [click here](https://public.posixlycorrect.com/pki/A8981D346F8F4130CA16A7775517E687FCCE0BB9.asc)
|
|
@ -1,12 +0,0 @@
|
|||
+++
|
||||
title = "analog photography"
|
||||
+++
|
||||
|
||||
My main hobby is analog photography. I own a couple of *point and shoots* but I
|
||||
mainly use a Nikon F2 (with the DP-1 meter) and a Minolta XG7.
|
||||
|
||||
Here are some decent photos I have been able to take.
|
||||
|
||||
<a data-flickr-embed="true" data-footer="true" data-context="true" href="https://www.flickr.com/photos/195498995@N08/53200811755/in/dateposted-public/" title="F353"><img src="https://live.staticflickr.com/65535/53200811755_e59b308a45_b.jpg" width="696" height="1024" alt="F353"/></a><script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>
|
||||
|
||||
A bunch of photos missing, gotta add more later.
|
|
@ -1,5 +0,0 @@
|
|||
+++
|
||||
title = "blog posts"
|
||||
template = "blog_index.html"
|
||||
paginate_by = 10
|
||||
+++
|
|
@ -1,137 +0,0 @@
|
|||
+++
|
||||
title = "building a site with zola and sourcehut"
|
||||
date = 2023-06-02
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
|
||||
The following is a small tutorial on how to build a static webpage using
|
||||
<a href="https://www.getzola.org/" target="_blank">Zola</a> and
|
||||
<a href="https://builds.sr.ht/" target="_blank">Sourcehut's build service</a>.
|
||||
|
||||
This guide is kindof redundant since Zola's documentatioin is already very
|
||||
clear, but I want to write a first post in order to test this site.
|
||||
|
||||
<br>
|
||||
|
||||
# Prerequisites
|
||||
|
||||
First off, download Zola using your package manager.
|
||||
<a href="https://www.getzola.org/documentation/getting-started/installation/"
|
||||
target="_blank">Installation instructions</a> can be found on their site.
|
||||
|
||||
After that, <a href="https://builds.sr.ht/"
|
||||
target="_blank">create an account</a> on Sourcehut. I paid for the
|
||||
"Amateur Hackers" tier as I'm just getting started with this project.
|
||||
|
||||
<br>
|
||||
|
||||
# Creating a static webpage
|
||||
|
||||
All commands assume you are on the root of your project.
|
||||
|
||||
<br>
|
||||
|
||||
### Zola
|
||||
|
||||
Once you've downloaded Zola, create an empty dir, initialize you site and
|
||||
initialize a git repo:
|
||||
```bash
|
||||
$ mkdir www && cd www
|
||||
$ zola init posixlycorrect.com
|
||||
$ git init
|
||||
```
|
||||
|
||||
Test everything is fine:
|
||||
```bash
|
||||
$ zola serve
|
||||
```
|
||||
|
||||
If it is, download a theme:
|
||||
```bash
|
||||
$ mkdir -p themes
|
||||
$ cd themes
|
||||
$ git clone https://github.com/pawroman/zola-theme-terminimal.git
|
||||
```
|
||||
|
||||
Add content to your site:
|
||||
```bash
|
||||
$ mkdir -p content
|
||||
$ cd content
|
||||
$ nvim _index.md ## add to this whatever your theme needs in order to work
|
||||
## usually this is detailed on the theme's docs
|
||||
|
||||
$ nvim blog.mb ## landing page for posixlycorrect.com/blog
|
||||
$ mkdir blog && cd blog
|
||||
$ nvim building_a_site_with_zola_and_sourcehut.md ## your first post
|
||||
$ cd ..
|
||||
$ nvim about.md ## your about page
|
||||
```
|
||||
|
||||
Check that everything looks good:
|
||||
```bash
|
||||
$ zola serve
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### Sourcehut
|
||||
|
||||
Your site is now ready to be published! In order to do that, commit your changes
|
||||
and add a remote repo from sourcehut:
|
||||
```bash
|
||||
$ git add .
|
||||
$ git commit
|
||||
$ git remote add origin git@git.sr.ht:~fabianmv/posixlycorrect.com
|
||||
```
|
||||
|
||||
Add a build manifest so sourcehut knows how to publish your site:
|
||||
```bash
|
||||
$ nvim .build.yml
|
||||
```
|
||||
|
||||
My manifest looks like this:
|
||||
```yaml
|
||||
image: alpine/edge
|
||||
packages:
|
||||
- hut
|
||||
- zola
|
||||
oauth: pages.sr.ht/PAGES:RW
|
||||
environment:
|
||||
site: posixlycorrect.com
|
||||
sources:
|
||||
- https://git.sr.ht/~fabianmv/posixlycorrect.com
|
||||
tasks:
|
||||
- build: |
|
||||
cd posixlycorrect.com
|
||||
mkdir -p templates
|
||||
zola build
|
||||
- package: |
|
||||
cd posixlycorrect.com
|
||||
tar -C public -cvz . > ../site.tar.gz
|
||||
- upload: |
|
||||
hut pages publish -d $site site.tar.gz
|
||||
```
|
||||
|
||||
Add and commit your changes and push your repo:
|
||||
```bash
|
||||
$ git add .
|
||||
$ git commit
|
||||
$ git push
|
||||
```
|
||||
|
||||
Your website now should be visible! Updating it is a matter of making changes
|
||||
and pushing to your repo.
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
|
@ -1,318 +0,0 @@
|
|||
+++
|
||||
title = "introduction to gpg key usage"
|
||||
date = 2023-09-19
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
|
||||
The following is an introductory tutorial on how to use GPG keys to send secure
|
||||
and trusted messages across the internet.
|
||||
|
||||
GPG it is widely used to send secure an verified messages all over the internet,
|
||||
including in the Linux Kernel project!. In order for it to work, everyone has to
|
||||
have a key-pair.
|
||||
|
||||
Key pairs consist of two cryptographic keys: a public key and a private key.
|
||||
The public key is used to encrypt data or verify digital signatures, and it can
|
||||
be freely shared with others. Conversely, the private key is kept secret and is
|
||||
used to decrypt data encrypted with the corresponding public key or to create
|
||||
digital signatures. When someone wants to send you an encrypted message, they
|
||||
use your public key, which only you can decrypt using your private key.
|
||||
Similarly, when you digitally sign a file, others can verify its
|
||||
authenticity using your public key. This asymmetric key pair system ensures
|
||||
secure communication and data integrity in various applications, such as email
|
||||
encryption and software distribution.
|
||||
|
||||
More info on <a href="https://www.gnupg.org"
|
||||
target="_blank">the official website</a>.
|
||||
|
||||
In this guide, the following topics will be covered:
|
||||
- Generate your personal key pair
|
||||
- Export your public key with --armor so you can easily share it
|
||||
- Upload your public key to various key servers so you can even more easily
|
||||
share it
|
||||
- Encrypt and decrypt a file
|
||||
- Setup thunderbird to send and receive encrypted emails (cominng soon)
|
||||
- Setup (neo)mutt to send and receive encrypted emails (coming soon)
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Prerequisites
|
||||
|
||||
All you are going to need is the
|
||||
<a href="https://distrowatch.com/dwres.php?resource=package-in-distro&pkg=gnupg"
|
||||
target="_blank">gnupg</a> package. Get it using your distro's package manager.
|
||||
|
||||
Lets get started.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Generating your personal key pair
|
||||
|
||||
To create a key pair, run the following command:
|
||||
|
||||
```bash
|
||||
$ gpg --full-gen-key
|
||||
```
|
||||
|
||||
You should get something like this:
|
||||
```bash
|
||||
Please select what kind of key you want:
|
||||
(1) RSA and RSA
|
||||
(2) DSA and Elgamal
|
||||
(3) DSA (sign only)
|
||||
(4) RSA (sign only)
|
||||
(9) ECC (sign and encrypt) *default*
|
||||
(10) ECC (sign only)
|
||||
(14) Existing key from card
|
||||
Your selection?
|
||||
```
|
||||
|
||||
Select option 9 (which is the default anyways), then you'll get something like
|
||||
this:
|
||||
```bash
|
||||
Please select which elliptic curve you want:
|
||||
(1) Curve 25519 *default*
|
||||
(4) NIST P-384
|
||||
(6) Brainpool P-256
|
||||
Your selection?
|
||||
```
|
||||
Select the default option again.
|
||||
|
||||
Then, choose an expiration date:
|
||||
```bash
|
||||
Please specify how long the key should be valid.
|
||||
0 = key does not expire
|
||||
<n> = key expires in n days
|
||||
<n>w = key expires in n weeks
|
||||
<n>m = key expires in n months
|
||||
<n>y = key expires in n years
|
||||
Key is valid for?
|
||||
```
|
||||
|
||||
I normally choose a couple of years. It's not a good idea to have a key never
|
||||
expire.
|
||||
|
||||
Now GPG will create an identity for you:
|
||||
```bash
|
||||
GnuPG needs to construct a user ID to identify your key.
|
||||
|
||||
Real name:
|
||||
Email address:
|
||||
Comment:
|
||||
```
|
||||
|
||||
Enter a name to identify yourself (usually first and last name), your email and
|
||||
optionally a comment. Normally the comment is left blank.
|
||||
|
||||
After that, GPG will ask you to add a passphrase to protect your key. Enter a
|
||||
secure passphrase and GPG will have generated your key!
|
||||
|
||||
You should see output similar to this:
|
||||
```bash
|
||||
pub ed25519/0x1FFAC35E1798174F 2023-06-02 [SC] [expires: 2028-05-31]
|
||||
Key fingerprint = 7AA2 77E6 04A4 1739 16BB B4E9 1FFA C35E 1798 174F
|
||||
uid [ultimate] Fabian Montero <fabian@posixlycorrect.com>
|
||||
sub cv25519/0xEA4F0B28F9C039EB 2023-06-02 [E] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This is the typical way in which gpg displays keys. Lets understand this output.
|
||||
|
||||
<br>
|
||||
|
||||
### Overview of the anatomy of a GPG key
|
||||
|
||||
This will only be a quick overview, if you want more information on this, check
|
||||
out the following links:
|
||||
- <a href="https://github.com/gpg/gnupg/blob/master/doc/DETAILS"
|
||||
target="_blank">GPG docs</a>
|
||||
- <a href="https://davesteele.github.io/gpg/2014/09/20/anatomy-of-a-gpg-key/"
|
||||
target="_blank">Anatomy of a GPG Key, by David Steele (much more detailed than
|
||||
this section)</a>
|
||||
- <a href="https://unix.stackexchange.com/questions/613839/help-understanding-gpg-list-keys-output"
|
||||
target="_blank">A question on stack exchange that overviews this topic</a>
|
||||
|
||||
Lets take a look at the first line of the output:
|
||||
```bash
|
||||
pub ed25519/0x1FFAC35E1798174F 2023-06-02 [SC] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This tells us the ***type of entry*** that we're looking at. And it tells us a couple
|
||||
of things:
|
||||
- `pub`: This is a public key
|
||||
- `ed25519`: This key uses a <a href="https://en.wikipedia.org/wiki/Curve25519"
|
||||
target="_blank">elliptic curve Diffie–Hellman (ECDH) key agreement scheme</a>
|
||||
(I have no clue what that is, but as I understand it, this is most secure key
|
||||
technology developed thus far)
|
||||
- `0x1FFAC35E1798174F`: is the key id of your key, this is derived from the
|
||||
key's fingerprint
|
||||
- `2023-06-02` date in which the key was generated
|
||||
- `[SC]` means that this key has the following two capabilities: ***sign*** and
|
||||
***certify***
|
||||
- `[expires: 2028-05-31]` expiration date of the key
|
||||
|
||||
The next line looks like this:
|
||||
```bash
|
||||
Key fingerprint = 7AA2 77E6 04A4 1739 16BB B4E9 1FFA C35E 1798 174F
|
||||
```
|
||||
This is the fingerprint of your key (more on what this is in a moment).
|
||||
|
||||
The next line looks like this:
|
||||
```bash
|
||||
uid [ultimate] Fabian Montero <fabian@posixlycorrect.com>
|
||||
```
|
||||
This is the uid that corresponds to this key. The `[ultimate]` string means that
|
||||
this key is ultimately trusted. Normally this means that the private key is also
|
||||
available.
|
||||
|
||||
Finally, the last line looks like this:
|
||||
```bash
|
||||
sub cv25519/0xEA4F0B28F9C039EB 2023-06-02 [E] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This is a subkey of your key. This subkey is bound to your normal key.
|
||||
|
||||
- `sub`: This is a subkey
|
||||
- `cv25519`: This key uses a <a href="https://en.wikipedia.org/wiki/Curve25519"
|
||||
target="_blank">elliptic curve Diffie–Hellman (ECDH) key agreement scheme</a>
|
||||
- `0xEA4F0B28F9C039EB`: is the key id of your subkey, this is derived from the
|
||||
key's fingerprint
|
||||
- `2023-06-02` date in which the key was generated
|
||||
- `[E]` means that this key has the following two capability: ***encrypt***
|
||||
- `[expires: 2028-05-31]` expiration date of the key
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Exporting your key with --armor
|
||||
One way to export your public key is to export its armor. To do that, run the
|
||||
following command:
|
||||
```bash
|
||||
$ gpg --export --armor 7AA277E604A4173916BBB4E91FFAC35E1798174F
|
||||
```
|
||||
|
||||
Replacing the fingerprint with your key's fingerprint, of course.
|
||||
|
||||
This will output something like this:
|
||||
```bash
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEZHlROBYJKwYBBAHaRw8BAQdAhzA1JCghQ6KoHOuf6JPQhEmchHLVXFVye4I2
|
||||
pRUOUMO0KkZhYmlhbiBNb250ZXJvIDxmYWJpYW5AcG9zaXhseWNvcnJlY3QuY29t
|
||||
PoiUBBMWCgA8FiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwMFCQlmAYAE
|
||||
CwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEB/6w14XmBdPP2EA/i9ugFxpIFF6oOQs
|
||||
clMfr+sNj6Il0OUTJK0dqpp4mGorAP0awa6nfhU8T1Ju7UWr6cfSmnL4bM6M/4Z3
|
||||
D+AF/L5PBokCMwQQAQoAHRYhBOd6gIv5qVXWaO7qZHP6nJy18CSbBQJkeVKDAAoJ
|
||||
EHP6nJy18CSbzTkP/Reio0ObRrRW+QSw62ZXrUG0mFcNeeoM9amldCToFRyGnSDu
|
||||
wtZ9nqwLiTJ01VPBOsEZLsl4VonO3rdadqnMTZ3XqKK9VHBl6UNot3DQ8INDAcko
|
||||
GW1zvEdxNkpMxhtAja0JkcBdG7+zxc2aEGeKfEna2qDXA+xtYw5+pssOWYMip7hm
|
||||
jQ2NzYMYav2KYRBC7eXTkAIIIJi/l9pR1IwHtY3a0gfbkQymgCyt5wVG6LneYFIR
|
||||
+ycNVCObwyP8gFASdId0bWnA23rkilc9ZBOCps/cGfDLM+KQ+sLAWBFBQyQeEjcv
|
||||
tU+pLXncAEvWy/SFmprVSLDQMMooFaEJMZChojGcCkwAPG1twsihqIA3E44Q3/+G
|
||||
K0gZN57jGMnfvuQiuLuttOMdu27KwEu++t3YUt0P6S4kARpx51zZJ7A2Yj2u22aM
|
||||
7EL8qq6KTNdNoS7FgwQkrWbokdDZIl0HV+5TeMQfylPqOPhuFK/1A9qztqknBPVY
|
||||
QUx2t6FZUgH9sT7uD+5gXxyeqmEIFo2i6D8G/4TEPbKtWivJfeOqDEBn4QEY2nvE
|
||||
zgJLLU5XCv9xPz5rizRCa+h+kg+i4mH6fLCBCCAPXsbAAo0gUlGJvX4slPh7uPOa
|
||||
T2r7A/7uezResBzP/L/vostlmjO5c8cOl9Wc6D1kRZq17/AjMUgy6+KR3iVnuDgE
|
||||
ZHlROBIKKwYBBAGXVQEFAQEHQPRbCS2p8xpt3fRxfyRnDOdH9pULY4NtGmZUS0ve
|
||||
ZGkTAwEIB4h+BBgWCgAmFiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwwF
|
||||
CQlmAYAACgkQH/rDXheYF0/65AD+LtDeedCYv9zs+1Ia3DvejVZM256WEH+dRH5h
|
||||
Pm3RzQ8A/2+bXRnfsgGqacj/kKEL3spuos95ngRNRkrQ39nc1koP
|
||||
=PAxr
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
||||
|
||||
That string is what is known as the armor of your key. It can be saved into a
|
||||
file: `fabian.gpg`, for example and be imported by others like this:
|
||||
|
||||
```bash
|
||||
$ gpg --import fabian.gpg
|
||||
```
|
||||
|
||||
More info on armor in <a href="https://unix.stackexchange.com/questions/623375/what-is-the-armored-option-for-in-gnupg"
|
||||
target="_blank">this Unix Stack Exchange question</a>.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Uploading your public key to the internet
|
||||
|
||||
You can also upload your key to various key servers, so other people can search
|
||||
for it and download it. To do this, run the following command:
|
||||
```bash
|
||||
$ gpg --send-keys 7AA277E604A4173916BBB4E91FFAC35E1798174F
|
||||
```
|
||||
|
||||
Again, replacing my fingerprint for yours.
|
||||
|
||||
You can also upload it manually to <a href="https://keys.openpgp.org/"
|
||||
target="_blank">https://keys.openpgp.org/</a>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Encrypting and decrypting a file
|
||||
|
||||
Now that you have your key pair and you have published your public key, you
|
||||
can start encrypting and decrypting stuff. This is extremely easy:
|
||||
|
||||
To encrypt a file called `secrets.txt`, run:
|
||||
```bash
|
||||
$ gpg -e secrets.txt
|
||||
```
|
||||
|
||||
GPG will ask you to enter recipients:
|
||||
```bash
|
||||
You did not specify a user ID. (you may use "-r")
|
||||
|
||||
Current recipients:
|
||||
|
||||
Enter the user ID. End with an empty line:
|
||||
```
|
||||
Enter the email address of the recipient, so that the file is encrypted using
|
||||
their public key. This way only they will be able to decrypt the file using
|
||||
their corresponding private key.
|
||||
|
||||
You can add more than one recipient. It is common to add yourself as a
|
||||
recipient, that way you can also decrypt the file.
|
||||
|
||||
This will produce a file called `secrets.txt.gpg`, which is encrypted. You can
|
||||
now send this file safely to the recipient.
|
||||
|
||||
|
||||
To decrypt an encrypted file, run:
|
||||
```bash
|
||||
$ gpg -d secrets.txt.gpg
|
||||
```
|
||||
|
||||
GPG will print something like this:
|
||||
```bash
|
||||
gpg: encrypted with cv25519 key, ID 0xEA4F0B28F9C039EB, created 2023-06-02
|
||||
"Fabian Montero <fabian@posixlycorrect.com>"
|
||||
gpg: using "7AA277E604A4173916BBB4E91FFAC35E1798174F" as default secret key for signing
|
||||
```
|
||||
And the content of the decrypted file will be printed in standard output.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Setting up thunderbird to send and receive encrypted emails
|
||||
I'm still working on this part of the guide.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Setting up (neo)mutt to send and receive encrypted emails
|
||||
I'm still working on this part of the guide.
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
|
@ -1,194 +0,0 @@
|
|||
+++
|
||||
title = "Stellaris virtual rush build"
|
||||
date = 2024-05-22
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
This is a written version of [a video](https://youtu.be/jEf0JmFRkK4?si=xeTsbCpk_8HCt_SJ)
|
||||
by [Montu Plays](https://www.youtube.com/@MontuPlays). All credit goes to them.
|
||||
|
||||
It is a tall empire which leverages the new features from The Machine Age DLC.
|
||||
|
||||
As far as I know, the only other necessary DLC for this build is Humanoids and
|
||||
Astral Planes.
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Build
|
||||
- **Species:**
|
||||
- Machine
|
||||
- **Origin:**
|
||||
- Voidforged
|
||||
- **Government:**
|
||||
- Democratic
|
||||
- **Ethics:**
|
||||
- Egalitarian
|
||||
- Militarist
|
||||
- Spiritualist
|
||||
- **Civics:**
|
||||
- Parliamentary System
|
||||
- Sovereign Guardianship
|
||||
- **Traits:**
|
||||
- Machine (you get this by chosing the any machine portrait)
|
||||
- Zero G Optimized (you get this by chosing the Voidforged origin)
|
||||
- Adaptive Frames
|
||||
- Mass-Produced
|
||||
- Bulky
|
||||
- High bandwidth
|
||||
- Art Generator
|
||||
- **Leader Trait:**
|
||||
- Charismatic
|
||||
- **Starting Solar System:**
|
||||
- Void Dwellers (Sol)
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Opening
|
||||
- **Unemploy researchers** in your starting habitat
|
||||
- **Unemploy enforcers** in your starting habitat
|
||||
- Change **Diplomatic Stance** to **Isolationist**
|
||||
- Change **Subjugation War Terms** to **Benevolent Vassalage**
|
||||
- Change **First Contact Protocol** to **Proactive**
|
||||
- Start an automatic trade to **buy of 20 minerals/month**
|
||||
- Build **2 Industrial districts** in your starting habitat
|
||||
- Build **1 Reactor district** in your starting habitat
|
||||
- Send Science Ship to **survey Alpha Centauri**
|
||||
- Turn on the **Veneration of Saints** Edict
|
||||
- Turn on the **Encourage Political Thought** Edict
|
||||
- **Promote** your **Egalitarian Faction**
|
||||
- If you don't have an Egalitarian leader in your council, hire one and place
|
||||
them there
|
||||
- Send your **Military Fleet** to try and make **first contact** ASAP with as
|
||||
many empires as possible
|
||||
- Build a **second Science Ship** to scout around and try and make first contact
|
||||
ASAP with as many empires as possible
|
||||
- Build a **second Construction ship** to build as many **Minor Orbitals** on
|
||||
your capital system
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Traditions & Ascension Perks
|
||||
1. Prosperity
|
||||
1. Standard Construction Templates
|
||||
2. Everything else
|
||||
3. **One Vision Ascension Perk**
|
||||
2. Enmity
|
||||
1. Complete the whole tradition tree
|
||||
2. **Consecrated Worlds Ascension Perk**
|
||||
3. Mercantile
|
||||
1. Adaptive Economic Policies
|
||||
2. Everything else
|
||||
3. **Synthetic Age Ascension Perk**
|
||||
4. Virtuality
|
||||
1. Complete the whole tradition tree
|
||||
2. Whatever Ascension Perk you want
|
||||
5. Supremacy
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Council Agendas
|
||||
1. Whatever you start with
|
||||
1. Expand The Council
|
||||
2. Evolving Society
|
||||
3. Give and Take
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Post-opening
|
||||
- **Build** as many **Temples** as possible on your **starting habitat**
|
||||
- Build a **second habitat** on **Alpha Centauri**
|
||||
- Search for another **system with the most planets** possible in your vicinity
|
||||
in order to place your **third habitat** there
|
||||
- **After starting your third habitat**, turn on the **Inner Focus** Edict
|
||||
- Get **Planetary Unification Technology** ASAP
|
||||
- If you find an **Archeological Site**, complete it and get **Celebration of**
|
||||
**Diversity** or **Proclaim Religious Revelation**
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Mid-game
|
||||
- After year 10, an election will come up. Make sure your **current leader does
|
||||
not get re-elected**
|
||||
- After completing the Emnity Tradition, change **Diplomatic Stance** to
|
||||
**Antagonistic**
|
||||
- Build an **Autocothon Monument** on your **second habitat**
|
||||
- Build **1 Habitation District** on your **second habitat**
|
||||
- Upon making first contact with other empires, **trade alloys** for their
|
||||
**communications**
|
||||
- After trading communications with an empire, **declare them your rival**
|
||||
- **UNLESS** they are your neighbor. In that case, improve relations and try
|
||||
to form a non-aggression pact in order to prevent them from attacking you
|
||||
- After getting the Consecrated Worlds Ascension Perk, **consecrate any
|
||||
habitable planets you find**
|
||||
- If you don't have habitable planets, consecrate non-habitable ones
|
||||
- After meeting another empire, **reform your government** into an **Oligarchy**
|
||||
- **BEFORE SWITCHING** **un-employ** all **politicians** on all your habitats
|
||||
- Get the **Exalted Priesthood Ethic**
|
||||
- **Re-employ** all **politicians** after switching
|
||||
- Use your **extra council slot** you got from the Evolving Society Agenda to
|
||||
place an **Archpriest** in your Council
|
||||
- Your council should have as many Governors as possible
|
||||
- Change **Resettlement** policy to **Allowed**
|
||||
- Make sure your Egalitarian Faction stays over 80% approval after this
|
||||
- **Resettle worker class pops** towards your **new habitats**
|
||||
- If necessary, start an automatic trade to **sell of 10 alloys/month**
|
||||
- Slight loss in consumer goods is ok
|
||||
- After getting Adaptive Economic Policies Tradition, Change **Trade Policy** to
|
||||
**Consumer Benefits**
|
||||
- Build **Zero-G Districts** on **Alpha Centauri**
|
||||
- **Un-employ** all **researchers** on Alpha Centauri
|
||||
- **Build** as many **Temples** as possible on your **second habitat**
|
||||
- Switch it's **specialization** to **Ecclesiastical Station**
|
||||
- **Build** as many **Temples** as possible on your **third habitat**
|
||||
- Switch it's **specialization** to **Ecclesiastical Station**
|
||||
- If necessary, start an automatic trade to **buy more minerals/month** in order
|
||||
to build more districts
|
||||
- Employ a **Governor with the Unifier Trait** on your **capital**
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Post mid-game
|
||||
- Your **second habitat** should focus on **research**, build as many Zero-G
|
||||
districts as possible, but don't employ any pops on research
|
||||
- Your **third habitat** should focus on **alloys**, build as many industrial
|
||||
districts as possible, but don't employ any pops on them
|
||||
- After getting the Synthetic Age Ascension Perk, your **transformation** will
|
||||
begin
|
||||
- Select the **Real Time Approach**
|
||||
- The idea is to **save up unity** until you adopt Virtuality and then
|
||||
**unlock the whole tree at once**
|
||||
- **Embrace the virtual world** when prompted to chose **A New Form**
|
||||
- After adopting the whole Virtuality Tradition, change **Virtual Economy**
|
||||
**Focus** to **Research**
|
||||
- After ascending, **Restore Jobs** on all your **habitats**
|
||||
- You may need to click it a couple of times
|
||||
- After the month ends, you should be getting a large amount of all resources
|
||||
- Switch your **alloy habitat** to be a **Foundry World**
|
||||
- Switch your **research habitat** to be a **Research Station**
|
||||
- **Switch** all your **Reactor Districts** in your **capital** into
|
||||
**Astro-Mining Districts**
|
||||
- **Replace** all your **Temples** in your **capital** for **Research labs**
|
||||
- Build **Major and Minor Orbitals** **everywhere** you can
|
||||
- As soon as you can, build an **Arc-Furnace** on your capital system
|
||||
- Mercury is a great place to do this
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# End-game
|
||||
- Build a massive fleet
|
||||
- Vassalize everyone
|
|
@ -1,34 +0,0 @@
|
|||
+++
|
||||
title = "boardgame night leaderboard"
|
||||
+++
|
||||
### Catan: Cities & Knights / Seafarers
|
||||
<pre>
|
||||
Fabian: ● ● ◐
|
||||
Joshua: ● ●
|
||||
Vanessa: ● ◐
|
||||
Sofía: ●
|
||||
</pre>
|
||||
|
||||
</br>
|
||||
|
||||
### Coup
|
||||
<pre>
|
||||
Vanessa: ● ●
|
||||
Sofía: ●
|
||||
Díaz: ●
|
||||
Joshua: ●
|
||||
</pre>
|
||||
|
||||
</br>
|
||||
|
||||
### Card Assassin
|
||||
<pre>
|
||||
Chema: ● ●
|
||||
</pre>
|
||||
|
||||
</br>
|
||||
|
||||
### Skull King
|
||||
<pre>
|
||||
Chema: ● ●
|
||||
</pre>
|
|
@ -1,9 +0,0 @@
|
|||
+++
|
||||
title = "lib"
|
||||
+++
|
||||
[safire memo](@/lib/safire_memo.md)  
|
||||
[two hard things](@/lib/two_hard_things.md)  
|
||||
[visual thinking](@/lib/visual_thinking.md)  
|
||||
[be methodical](@/lib/be_methodical.md)  
|
||||
|
||||
[digital gardening](https://git.posixlycorrect.com/fabian/digital-gardeners)  
|
|
@ -1,25 +0,0 @@
|
|||
+++
|
||||
title = "art collection"
|
||||
+++
|
||||
I own a very small art collection. Here are some photos of the pieces in it and
|
||||
some info about them.
|
||||
|
||||
# La tertulia
|
||||
Screen Printing
|
||||
35x45cm
|
||||
2021
|
||||
|
||||
La Tertulia is a screen printing ("serigrafía", in spanish) by Costa Rican
|
||||
artist Rafa Gutierrez.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
This is how I framed it:
|
||||
|
||||

|
||||
|
||||
This piece has a "sister" which I gifted to my father. It's called "Caribe":
|
||||
|
||||

|
|
@ -1,17 +0,0 @@
|
|||
+++
|
||||
title = "be methodical"
|
||||
+++
|
||||
|
||||
```txt
|
||||
Lets be honest with ourselves. They beat the game. Most music duos or groups
|
||||
don't get a happy closing of the books. They go out in a rage of hellfire & fast
|
||||
lifestyles or end up splitting over varying differences or record companies
|
||||
simply taking advantage. Daft Punk? They made all the greatest tunes they could,
|
||||
and now its their time to enjoy the fruits of life & hard work without worrying
|
||||
about tours, content ect. They won. Whatever you're doing out there today,
|
||||
remember your passions, your hobbies. Go after them, be methodical & you too can
|
||||
come out the other side clean. It seems futile sometimes, but life is a chance
|
||||
not worth disregarding. Win that game.
|
||||
|
||||
-- YouTube comment by AgentZ7 on Daft Punk's Epilogue video
|
||||
```
|
|
@ -1,76 +0,0 @@
|
|||
+++
|
||||
title = "places to eat out"
|
||||
+++
|
||||
<ul id="randomize-list">
|
||||
<li>Olive Garden</li>
|
||||
<li>La Hacienda Mexicana</li>
|
||||
<li>Wings on Fire</li>
|
||||
<li>La 45</li>
|
||||
<li>El Higuerón</li>
|
||||
<li>La Casona de Laly</li>
|
||||
<li>Pizza Hut</li>
|
||||
<li>Spoon</li>
|
||||
<li>Casa Rojas</li>
|
||||
<li>Neko Sushi</li>
|
||||
<li>Fitos</li>
|
||||
<li>Cosí</li>
|
||||
<li>La Caverna de Monto</li>
|
||||
<li>Cantón</li>
|
||||
<li>Ichiraku Sushi</li>
|
||||
<li>Taquería Taquitos</li>
|
||||
<li>95 Grados</li>
|
||||
<li>Ciros</li>
|
||||
<li>Family Pizza</li>
|
||||
</ul>
|
||||
|
||||
<script>
|
||||
// Function to randomize an array using the Fisher-Yates algorithm
|
||||
function shuffleArray(array) {
|
||||
for (let i = array.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[array[i], array[j]] = [array[j], array[i]];
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
// Get the list element by its ID
|
||||
const listElement = document.getElementById('randomize-list');
|
||||
|
||||
// Function to randomize the list
|
||||
function randomizeList() {
|
||||
// Get the list items from the list element
|
||||
const listItems = Array.from(listElement.getElementsByTagName('li'));
|
||||
|
||||
// Randomize the order of list items
|
||||
const randomizedList = shuffleArray(listItems);
|
||||
|
||||
// Clear the existing list
|
||||
listElement.innerHTML = '';
|
||||
|
||||
// Append the randomized list items back to the list element
|
||||
randomizedList.forEach((item) => {
|
||||
listElement.appendChild(item);
|
||||
});
|
||||
}
|
||||
|
||||
// Create a button element
|
||||
const button = document.createElement('button');
|
||||
button.textContent = 'Randomize!';
|
||||
button.style.background = 'none';
|
||||
button.style.border = 'none';
|
||||
button.style.color = 'rgb(252, 147, 0)';
|
||||
button.style.textDecoration = 'bold';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.padding = '5';
|
||||
button.style.fontSize = '18px';
|
||||
button.style.border = '1px solid rgb(252, 147, 0)';
|
||||
button.style.borderRadius = '0';
|
||||
button.style.fontFamily = 'Liberation Mono';
|
||||
button.addEventListener('click', randomizeList);
|
||||
|
||||
// Insert the button before the list element
|
||||
listElement.parentNode.insertBefore(button, listElement);
|
||||
|
||||
// Randomize the list initially
|
||||
randomizeList();
|
||||
</script>
|
|
@ -1,54 +0,0 @@
|
|||
+++
|
||||
title = "safire memo"
|
||||
+++
|
||||
|
||||
```txt
|
||||
To : H. R. Haldeman
|
||||
From: Bill Safire July 18, 1969.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
IN EVENT OF MOON DISASTER:
|
||||
|
||||
Fate has ordained that the men who went to the moon to
|
||||
explore in peace will stay on the moon to rest in peace.
|
||||
|
||||
These brave men, Neil Armstrong and Edwin Aldrin, know
|
||||
that there is no hope for their recovery. But they also know that there
|
||||
is hope for mankind in their sacrifice.
|
||||
|
||||
These two men are laying down their lives in mankind's
|
||||
most noble goal: the search for truth and understanding.
|
||||
|
||||
They will be mourned by their families and friends; they
|
||||
will be mourned by their nation; they will be mourned by the people of
|
||||
the world; they will be mourned by a Mother Earth that dared send two
|
||||
of her sons into the unknown.
|
||||
|
||||
In their exploration, they stirred the people of the world to
|
||||
feel as one; in their sacrifice, they bind more tightly the brotherhood
|
||||
of man.
|
||||
|
||||
In ancient days, men looked at stars and saw their heroes in
|
||||
the constellations. In modern times, we do much the same, but our heroes
|
||||
are epic men of flesh and blood.
|
||||
|
||||
Others will follow, and surely find their way home. Man's
|
||||
search will not be denied. But these men were the first, and they
|
||||
will remain the foremost in our hearts.
|
||||
|
||||
For every human being who looks up at the moon in the
|
||||
nights to come will know that there is some corner of another world
|
||||
that is forever mankind.
|
||||
|
||||
PRIOR TO THE PRESIDENT'S STATEMENT:
|
||||
|
||||
The President should telephone each of the widows -to-be.
|
||||
|
||||
AFTER THE PRESIDENT'S STATEMENT, AT THE POINT WHEN NASA
|
||||
ENDS COMMUNICATIONS WITH THE MEN:
|
||||
|
||||
A clergyman should adopt the same procedure as a burial at
|
||||
sea, commending their souls to "the deepest of the deep," concluding
|
||||
with the Lord's Prayer.
|
||||
```
|
|
@ -1,10 +0,0 @@
|
|||
+++
|
||||
title = "two hard things in Computer Science"
|
||||
+++
|
||||
|
||||
```txt
|
||||
There are only two hard things in Computer Science: cache invalidation and
|
||||
naming things.
|
||||
|
||||
-- Phil Karlton
|
||||
```
|
|
@ -1,21 +0,0 @@
|
|||
+++
|
||||
title = "visual thinking"
|
||||
+++
|
||||
|
||||
```txt
|
||||
When I was a kid growing up in Far Rockaway, I had a friend named Bernie Walker.
|
||||
|
||||
We both had "labs" at home, and we would do various "experiments".
|
||||
|
||||
One time, we were discussing something - we must have been 11 or 12 at the time -
|
||||
and I said, "But thinking is nothing but talking to yourself inside."
|
||||
|
||||
"Oh yeah?" Bernie said. "Do you know the crazy shape of the crankshaft in a car?”
|
||||
|
||||
"Yeah, what of it?"
|
||||
|
||||
"Good. Now tell me: how did you describe it when you were talking to yourself?"
|
||||
So I learned from Bernie that thoughts can be visual as well as verbal.
|
||||
|
||||
-- Richard Feynman
|
||||
```
|
Binary file not shown.
Before Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
Before Width: | Height: | Size: 147 KiB |
Binary file not shown.
Before Width: | Height: | Size: 335 KiB |
Binary file not shown.
Before Width: | Height: | Size: 770 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
Before Width: | Height: | Size: 14 KiB |
|
@ -1,45 +0,0 @@
|
|||
The work in the Hack project is Copyright 2018 Source Foundry Authors and licensed under the MIT License
|
||||
|
||||
The work in the DejaVu project was committed to the public domain.
|
||||
|
||||
Bitstream Vera Sans Mono Copyright 2003 Bitstream Inc. and licensed under the Bitstream Vera License with Reserved Font Names "Bitstream" and "Vera"
|
||||
|
||||
### MIT License
|
||||
|
||||
Copyright (c) 2018 Source Foundry Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
### BITSTREAM VERA LICENSE
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
|
|
@ -1,48 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Paweł Romanowski
|
||||
|
||||
Copyright (c) 2019 panr
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
For hugo-theme-terminal:
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019 panr
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,91 +0,0 @@
|
|||
# Be sure to change these!
|
||||
base_url = "https://pawroman.github.io/zola-theme-terminimal"
|
||||
title = "Zola Terminimal theme"
|
||||
|
||||
# Sass compilation is required
|
||||
compile_sass = true
|
||||
|
||||
# Optional: enable tags
|
||||
taxonomies = [
|
||||
{name = "tags"}
|
||||
]
|
||||
|
||||
# Code highlighting
|
||||
[markdown]
|
||||
highlight_code = true
|
||||
highlight_theme = "boron"
|
||||
|
||||
[extra]
|
||||
|
||||
# One of: blue, green, orange, pink, red.
|
||||
# Defaults to blue.
|
||||
accent_color = "blue"
|
||||
|
||||
# One of: blue, dark, green, orange, pink, red.
|
||||
# Enabling dark background will also modify primary font color
|
||||
# to be darker.
|
||||
# Defaults to accent color (or, if not accent color specified, to blue).
|
||||
background_color = "blue"
|
||||
|
||||
# The logo text - defaults to "Terminimal theme"
|
||||
logo_text = "Terminimal theme"
|
||||
|
||||
# The logo link - defaults to base_url.
|
||||
#logo_home_link = "/take/me/away!"
|
||||
|
||||
# Author name: when specified, modifies the default
|
||||
# copyright text. Apart from author, it will
|
||||
# contain current year and a link to the theme.
|
||||
#author = "My Name"
|
||||
|
||||
# Copyright text in HTML format. If specified,
|
||||
# entirely replaces default copyright and author.
|
||||
#copyright_html = "My custom <b>copyright</b>"
|
||||
|
||||
# menu is enabled by adding menu_items (optional)
|
||||
menu_items = [
|
||||
# each of these is optional, name and url are required
|
||||
# $BASE_URL is going to be substituted by base_url from configuration
|
||||
{name = "blog", url = "$BASE_URL"},
|
||||
|
||||
# tags should only be enabled if you have "tags" taxonomy
|
||||
# see documentation below for more details
|
||||
{name = "tags", url = "$BASE_URL/tags"},
|
||||
{name = "archive", url = "$BASE_URL/archive"},
|
||||
{name = "about me", url = "$BASE_URL/about"},
|
||||
|
||||
# set newtab to true to make the link open in new tab
|
||||
{name = "github", url = "https://github.com/pawroman/zola-theme-terminimal", newtab = true},
|
||||
]
|
||||
|
||||
# Whether to show links to earlier and later (aka. higher/lower) posts
|
||||
# on each post page (defaults to true).
|
||||
enable_post_view_navigation = true
|
||||
|
||||
# The text shown at the bottom of a post,
|
||||
# before earlier/later post links.
|
||||
# Defaults to "Thanks for reading! Read other posts?"
|
||||
post_view_navigation_prompt = "Thanks for reading! Read other posts?"
|
||||
|
||||
# Use full Hack character set, not just a subset.
|
||||
# Switch this to true if you need full unicode support.
|
||||
# Defaults to false.
|
||||
use_full_hack_font = false
|
||||
|
||||
# Optional: Global favicon URL and mimetype.
|
||||
# Mimetype defaults to "image/x-icon".
|
||||
# The URL should point at a file located
|
||||
# in your site's "static" directory.
|
||||
# favicon = "/favicon.png"
|
||||
# favicon_mimetype = "image/png"
|
||||
|
||||
# Optional: Set how <title> elements are rendered.
|
||||
# Values:
|
||||
# - "main_only" -- only the main title (`config.title`) is rendered.
|
||||
# - "page_only" -- only the page title (if defined) is rendered,
|
||||
# falling back to `config.title` if not defined or empty.
|
||||
# - "combined" -- combine like so: "page_title | main_title",
|
||||
# or if page_title is not defined or empty, fall back to `main_title`
|
||||
#
|
||||
# Note that the main (index) page only has the main title.
|
||||
page_titles = "main_only"
|
|
@ -1,4 +0,0 @@
|
|||
+++
|
||||
paginate_by = 2
|
||||
sort_by = "date"
|
||||
+++
|
|
@ -1,26 +0,0 @@
|
|||
+++
|
||||
title = "I don't like JavaScript"
|
||||
date = 2019-02-02
|
||||
|
||||
[taxonomies]
|
||||
tags = ["javascript", "rant"]
|
||||
+++
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien.
|
||||
|
||||
[wtfjs.com](https://wtfjs.com)
|
||||
|
||||
```javascript
|
||||
>>> [1, 2, 3, 15, 30, 7, 5, 45, 60].sort()
|
||||
[1, 15, 2, 3, 30, 45, 5, 60, 7]
|
||||
```
|
||||
|
||||
<!-- more -->
|
||||
|
||||
Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies.
|
||||
|
||||
Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in.
|
||||
|
||||
Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis.
|
||||
|
||||
Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus.
|
|
@ -1,19 +0,0 @@
|
|||
+++
|
||||
title = "Learning JavaScript"
|
||||
date = 2019-01-03
|
||||
|
||||
[taxonomies]
|
||||
tags = ["javascript"]
|
||||
+++
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies.
|
||||
|
||||
Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in.
|
||||
|
||||
Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis.
|
||||
|
||||
Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus.
|
|
@ -1,19 +0,0 @@
|
|||
+++
|
||||
title = "More ranting"
|
||||
date = 2019-02-03
|
||||
|
||||
[taxonomies]
|
||||
tags = ["rant"]
|
||||
+++
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies.
|
||||
|
||||
Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in.
|
||||
|
||||
Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis.
|
||||
|
||||
Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus.
|
|
@ -1,3 +0,0 @@
|
|||
+++
|
||||
render = false
|
||||
+++
|
|
@ -1,6 +0,0 @@
|
|||
+++
|
||||
title = "About Me"
|
||||
path = "about"
|
||||
+++
|
||||
|
||||
Hello, World!
|
|
@ -1,5 +0,0 @@
|
|||
+++
|
||||
title = "Archive"
|
||||
path = "archive"
|
||||
template = "archive.html"
|
||||
+++
|
|
@ -1,101 +0,0 @@
|
|||
+++
|
||||
title = "Welcome to Terminimal Theme for Zola"
|
||||
date = 2019-02-04
|
||||
|
||||
[taxonomies]
|
||||
tags = ["zola", "theme", "showcase"]
|
||||
+++
|
||||
|
||||
Welcome to Terminimal! This is a theme showcase post.
|
||||
|
||||
Code block (using "boron" theme):
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
|
||||
class HelloPrinter:
|
||||
def __init__(self, thing):
|
||||
self.thing = thing
|
||||
|
||||
def __call__(self):
|
||||
print(f"Hello, {self.thing}!")
|
||||
|
||||
|
||||
printer = HelloPrinter("World")
|
||||
printer()
|
||||
|
||||
# prints: Hello, World!
|
||||
```
|
||||
|
||||
Inline code: `print("Hello world!")`.
|
||||
|
||||
Basic typography:
|
||||
|
||||
*Italic text*. **Bold text**. _**Italic bold**_. Link: [click me](#)
|
||||
|
||||
# Header 1
|
||||
## Header 2
|
||||
### Header 3
|
||||
#### Header 4
|
||||
|
||||
Quote:
|
||||
|
||||
> "Theory is when you know everything but nothing works.
|
||||
Practice is when everything works but no one knows why.
|
||||
In our lab, theory and practice are combined: nothing works and no one knows why."
|
||||
|
||||
Lists:
|
||||
|
||||
- A
|
||||
- B
|
||||
- CDEF
|
||||
- Nested Item
|
||||
- And more nesting
|
||||
- GHIJ
|
||||
|
||||
|
||||
1. One
|
||||
2. Two
|
||||
3. Three
|
||||
|
||||
Horizontal line:
|
||||
|
||||
---
|
||||
|
||||
This is where the post summary ends.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
The second part follows here.
|
||||
|
||||
## Shortcodes
|
||||
|
||||
`figure` shortcode:
|
||||
|
||||
```
|
||||
figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
|
||||
style="width: 25%;",
|
||||
position="center",
|
||||
caption_position="left",
|
||||
caption="Ferris, the (unofficial) Rust mascot",
|
||||
caption_style="font-weight: bold; font-style: italic;")
|
||||
```
|
||||
|
||||
{{ figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
|
||||
style="width: 25%;",
|
||||
position="center",
|
||||
caption_position="left",
|
||||
caption="Ferris, the (unofficial) Rust mascot",
|
||||
caption_style="font-weight: bold; font-style: italic;") }}
|
||||
|
||||
---
|
||||
|
||||
`image` shortcode:
|
||||
|
||||
```
|
||||
image(src="https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg",
|
||||
position="left")
|
||||
```
|
||||
|
||||
{{ image(src="https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg",
|
||||
position="left") }}
|
|
@ -1,19 +0,0 @@
|
|||
+++
|
||||
title = "Zola is nice"
|
||||
date = 2019-02-01
|
||||
|
||||
[taxonomies]
|
||||
tags = ["zola", "nice"]
|
||||
+++
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies.
|
||||
|
||||
Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in.
|
||||
|
||||
Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis.
|
||||
|
||||
Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus.
|
|
@ -1,92 +0,0 @@
|
|||
.button-container {
|
||||
display: table;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
button,
|
||||
.button,
|
||||
a.button {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 8px 18px;
|
||||
margin-bottom: 5px;
|
||||
text-align: center;
|
||||
border-radius: 8px;
|
||||
border: 1px solid transparent;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
|
||||
/* variants */
|
||||
|
||||
&.outline {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
padding: 8px 18px;
|
||||
|
||||
:hover {
|
||||
transform: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.primary {
|
||||
box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 2px 6px rgba(50, 50, 93, .21), 0 1px 3px rgba(0, 0, 0, .08);
|
||||
}
|
||||
}
|
||||
|
||||
&.link {
|
||||
background: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
|
||||
/* sizes */
|
||||
|
||||
&.small {
|
||||
font-size: .8rem;
|
||||
}
|
||||
|
||||
&.wide {
|
||||
min-width: 200px;
|
||||
padding: 14px 24px;
|
||||
}
|
||||
}
|
||||
|
||||
a.read-more,
|
||||
a.read-more:hover,
|
||||
a.read-more:active {
|
||||
display: inline-flex;
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
padding: 0;
|
||||
margin: 20px 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.code-toolbar {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.toolbar-item a {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 3px 8px;
|
||||
margin-bottom: 5px;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
border-radius: 8px;
|
||||
border: 1px solid transparent;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
:root {
|
||||
--background: #131a21;
|
||||
|
||||
--color: #A9B7C6;
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
:root {
|
||||
--background: #222129;
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
:root {
|
||||
--accent: rgb(252, 147, 0);
|
||||
--accent-alpha-70: rgba(255,168,106,.7);
|
||||
--accent-alpha-20: rgba(255,168,106,.2);
|
||||
|
||||
--background: #222129;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
/*!
|
||||
* Hack typeface https://github.com/source-foundry/Hack
|
||||
* License: https://github.com/source-foundry/Hack/blob/master/LICENSE.md
|
||||
*/
|
||||
/* FONT PATHS
|
||||
* -------------------------- */
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
/* Use full version (not a subset) for unicode icon support */
|
||||
src: url('fonts/hack-regular.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-regular.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bold-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bold-subset.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-italic-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-italic-webfont.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bolditalic-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bolditalic-subset.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
/*!
|
||||
* Hack typeface https://github.com/source-foundry/Hack
|
||||
* License: https://github.com/source-foundry/Hack/blob/master/LICENSE.md
|
||||
*/
|
||||
/* FONT PATHS
|
||||
* -------------------------- */
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-regular.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-regular.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bold.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bold.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-italic.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-italic.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bolditalic.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bolditalic.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
.footer {
|
||||
padding: 40px 0;
|
||||
flex-grow: 0;
|
||||
opacity: .5;
|
||||
|
||||
&__inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0;
|
||||
width: 760px;
|
||||
max-width: 100%;
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
font-size: 1rem;
|
||||
color: var(--light-color-secondary);
|
||||
|
||||
&--user {
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
& > *:first-child:not(:only-child) {
|
||||
margin-right: 10px;
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
flex-direction: column;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.copyright-theme-sep {
|
||||
@media (max-width: $tablet-max-width) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.copyright-theme {
|
||||
@media (max-width: $tablet-max-width) {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
@mixin menu {
|
||||
position: absolute;
|
||||
background: var(--background);
|
||||
box-shadow: var(--shadow);
|
||||
color: white;
|
||||
border: 2px solid;
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
list-style: none;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
|
||||
&__inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.menu {
|
||||
margin: 20px 0;
|
||||
|
||||
&__inner {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
&.active {
|
||||
color: var(--accent-alpha-70);
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__sub-inner {
|
||||
position: relative;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
&:not(:only-child) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
&-more {
|
||||
@include menu;
|
||||
top: 35px;
|
||||
left: 0;
|
||||
|
||||
&-trigger {
|
||||
color: var(--accent);
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
background: var(--accent);
|
||||
color: black;
|
||||
padding: 5px 10px;
|
||||
}
|
|
@ -1,248 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Hack, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
font-size: 1rem;
|
||||
line-height: 1.54;
|
||||
background-color: var(--background);
|
||||
color: var(--color);
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
|
||||
&.left {
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.right {
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
figure {
|
||||
display: table;
|
||||
max-width: 100%;
|
||||
margin: 25px 0;
|
||||
|
||||
&.left, img {
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.center, img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.right, img {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: 14px;
|
||||
padding: 5px 10px;
|
||||
margin-top: 5px;
|
||||
background: var(--accent);
|
||||
color: var(--background);
|
||||
|
||||
&.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.right {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Hack, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
font-feature-settings: normal;
|
||||
background: var(--accent-alpha-20);
|
||||
padding: 1px 6px;
|
||||
margin: 0 2px;
|
||||
font-size: .95rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: Hack, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
padding: 20px;
|
||||
font-size: .95rem;
|
||||
overflow: auto;
|
||||
border-top: 1px solid rgba(255, 255, 255, .1);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-top: 1px solid var(--accent);
|
||||
border-bottom: 1px solid var(--accent);
|
||||
margin: 40px 0;
|
||||
padding: 25px;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: '”';
|
||||
font-family: Georgia, serif;
|
||||
font-size: 3.875rem;
|
||||
position: absolute;
|
||||
left: -40px;
|
||||
top: -20px;
|
||||
}
|
||||
|
||||
p:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p:last-of-type {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
p:before {
|
||||
content: '>';
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -25px;
|
||||
color: var(--accent);
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
table-layout: fixed;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px dashed var(--accent);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
th {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin-left: 30px;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 40px;
|
||||
max-width: 864px;
|
||||
min-height: 100vh;
|
||||
margin: 0 auto;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
hr {
|
||||
width: 100%;
|
||||
border: none;
|
||||
background: var(--border-color);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
@import 'variables';
|
||||
|
||||
.pagination {
|
||||
margin-top: 50px;
|
||||
|
||||
&__title {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
margin: 100px 0 20px;
|
||||
|
||||
&-h {
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
padding: 5px 10px;
|
||||
background: var(--background);
|
||||
font-size: .8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: .1em;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
hr {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
margin-top: 15px;
|
||||
z-index: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&__buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
max-width: 40%;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
appearance: none;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
+ .button {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
display: flex;
|
||||
padding: 8px 16px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&__text {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
|
@ -1,135 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
.posts {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.post {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
margin: 20px auto;
|
||||
padding: 20px 0;
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
max-width: 660px;
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
%meta {
|
||||
font-size: 1rem;
|
||||
margin-bottom: 10px;
|
||||
color: var(--accent-alpha-70);
|
||||
}
|
||||
|
||||
&-meta {
|
||||
@extend %meta;
|
||||
}
|
||||
|
||||
&-meta-inline {
|
||||
@extend %meta;
|
||||
|
||||
display: inline;
|
||||
}
|
||||
|
||||
&-title {
|
||||
--border: 2px dashed var(--accent);
|
||||
position: relative;
|
||||
color: var(--accent);
|
||||
margin: 0 0 15px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: var(--border);
|
||||
font-weight: normal;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
%tags {
|
||||
margin-bottom: 20px;
|
||||
font-size: 1rem;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
&-tags {
|
||||
@extend %tags;
|
||||
|
||||
display: block;
|
||||
}
|
||||
|
||||
&-tags-inline {
|
||||
@extend %tags;
|
||||
|
||||
display: inline;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
&-cover {
|
||||
border: 20px solid var(--accent);
|
||||
background: transparent;
|
||||
margin: 40px 0;
|
||||
padding: 20px;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding: 10px;
|
||||
border-width: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
|
||||
li:before {
|
||||
content: '►';
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
color: var(--accent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post--regulation {
|
||||
h1 {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&+ h2 {
|
||||
margin-top: -10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post-list {
|
||||
.post-date {
|
||||
color: var(--accent-alpha-70);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.post-list-title {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.post-tag {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
@import 'buttons';
|
||||
|
||||
@import 'header';
|
||||
@import 'logo';
|
||||
@import 'main';
|
||||
@import 'post';
|
||||
@import 'pagination';
|
||||
@import 'footer';
|
|
@ -1,2 +0,0 @@
|
|||
$phone-max-width: 683px;
|
||||
$tablet-max-width: 899px;
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,16 +0,0 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block title %}
|
||||
404
|
||||
{% endblock title %}
|
||||
|
||||
{% block header_menu %}
|
||||
{{ menu_macros::menu_for(config=config, current_item="") }}
|
||||
{% endblock header_menu %}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">{% block heading %}Lost?{% endblock heading %}</h1>
|
||||
<p>{% block message %}This page does not exist.{% endblock message %}</p>
|
||||
</div>
|
||||
{% endblock content %}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue