Compare commits

...
Sign in to create a new pull request.

221 commits

Author SHA1 Message Date
f1c9bf2323
posixlycorrect: add zfs external disk for backups and storage 2025-09-07 12:09:23 -06:00
5a1c08a9bd
modules: add thunderbird 2025-08-29 18:32:03 -06:00
8057335921
homepage: update look of about page 2025-08-29 12:42:36 -06:00
f8c530203c
general: update gpg/ssh keys and remove public_files from repo 2025-08-29 00:38:22 -06:00
e62691fbda
vps: add dufs 2025-08-28 18:34:17 -06:00
aa14f6f7ef
general: move fonts config to baseline 2025-08-28 18:32:42 -06:00
9294335882
nix fmt 2025-08-28 16:26:31 -06:00
286fcc67d2
xdg: fix typo in settings which prevented default apps from being set 2025-08-28 16:25:44 -06:00
f598491ab3
waybar: fix jumping when switching workspace 2025-08-28 15:05:34 -06:00
a739323b41
general: modularize borg/rsync config 2025-08-28 14:42:59 -06:00
db0040dcf4
vps: enable borg backups 2025-08-27 18:55:31 -06:00
943deed8bd
flake.lock: Update
Flake lock file updates:

• Updated input 'homepage':
    'path:./homepage'
  → 'path:./homepage'
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b1b3291469652d5a2edb0becc4ef0246fff97a7c?narHash=sha256-wY1%2B2JPH0ZZC4BQefoZw/k%2B3%2BDowFyfOxv17CN/idKs%3D' (2025-08-23)
  → 'github:nixos/nixpkgs/4e7667a90c167f7a81d906e5a75cba4ad8bee620?narHash=sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo%3D' (2025-08-26)
• Updated input 'nur':
    'github:nix-community/NUR/9824fee9eb7676a3624d8dcf8e36879fdbe5ccf6?narHash=sha256-ao6Bmp1ktX933EEGVEk22Poi2FwimF/GROZf2kioB5o%3D' (2025-08-27)
  → 'github:nix-community/NUR/1f693539e1da901a6da002555d5480e887a5adc1?narHash=sha256-SBiHiR%2BY074U9OZhnIrIgu/6iLZPxYhlBOmnP7ymBME%3D' (2025-08-27)
• Updated input 'nur/nixpkgs':
    'github:nixos/nixpkgs/3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5?narHash=sha256-XexyKZpf46cMiO5Vbj%2BdWSAXOnr285GHsMch8FBoHbc%3D' (2025-08-25)
  → 'github:nixos/nixpkgs/8a6d5427d99ec71c64f0b93d45778c889005d9c2?narHash=sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM%3D' (2025-08-27)
• Updated input 'trivionomicon':
    'path:./trivionomicon'
  → 'path:./trivionomicon'
• Updated input 'unstable':
    'github:nixos/nixpkgs/3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5?narHash=sha256-XexyKZpf46cMiO5Vbj%2BdWSAXOnr285GHsMch8FBoHbc%3D' (2025-08-25)
  → 'github:nixos/nixpkgs/8a6d5427d99ec71c64f0b93d45778c889005d9c2?narHash=sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM%3D' (2025-08-27)
2025-08-27 18:14:39 -06:00
d06acb4f55
add backup paths 2025-08-27 18:13:21 -06:00
584e64333e
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/fc3add429f21450359369af74c2375cb34a2d204?narHash=sha256-oV695RvbAE4%2BR9pcsT9shmp6zE/%2BIZe6evHWX63f2Qg%3D' (2025-07-27)
  → 'github:nix-community/home-manager/54b2879ce622d44415e727905925e21b8f833a98?narHash=sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI%3D' (2025-08-26)
• Updated input 'homepage':
    'path:./homepage'
  → 'path:./homepage'
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e728d7ae4bb6394bbd19eec52b7358526a44c414?narHash=sha256-YzNTExe3kMY9lYs23mZR7jsVHe5TWnpwNrsPOpFs/b8%3D' (2025-08-07)
  → 'github:nixos/nixpkgs/b1b3291469652d5a2edb0becc4ef0246fff97a7c?narHash=sha256-wY1%2B2JPH0ZZC4BQefoZw/k%2B3%2BDowFyfOxv17CN/idKs%3D' (2025-08-23)
• Updated input 'nur':
    'github:nix-community/NUR/a7f9761c9dd71359cd9a6529078302a83e6deaac?narHash=sha256-GH%2BUMIOJj7u/bW55dOOpD8HpVpc9WfU61iweM2nM68A%3D' (2025-08-08)
  → 'github:nix-community/NUR/9824fee9eb7676a3624d8dcf8e36879fdbe5ccf6?narHash=sha256-ao6Bmp1ktX933EEGVEk22Poi2FwimF/GROZf2kioB5o%3D' (2025-08-27)
• Updated input 'nur/nixpkgs':
    'github:nixos/nixpkgs/c2ae88e026f9525daf89587f3cbee584b92b6134?narHash=sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs%3D' (2025-08-06)
  → 'github:nixos/nixpkgs/3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5?narHash=sha256-XexyKZpf46cMiO5Vbj%2BdWSAXOnr285GHsMch8FBoHbc%3D' (2025-08-25)
• Updated input 'trivionomicon':
    'path:./trivionomicon'
  → 'path:./trivionomicon'
• Updated input 'unstable':
    'github:nixos/nixpkgs/c2ae88e026f9525daf89587f3cbee584b92b6134?narHash=sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs%3D' (2025-08-06)
  → 'github:nixos/nixpkgs/3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5?narHash=sha256-XexyKZpf46cMiO5Vbj%2BdWSAXOnr285GHsMch8FBoHbc%3D' (2025-08-25)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/94f162b0a1194115a289b2f1e0f9d13b200d6d0e?narHash=sha256-Vuc6jQNHsXhzJGusRG%2BK9fcI5aEnW9ZQRK22dlM0e2A%3D' (2025-08-08)
  → 'github:vpsfreecz/vpsadminos/20f55b1d9bee4fdab62494d4471854d6586d3637?narHash=sha256-%2BYzznL/mHiSjDFC8vJsSgQ%2BpvjhqWMsLRjegEKSNv/4%3D' (2025-08-23)
2025-08-26 23:21:25 -06:00
ff69b90dfe
general: enable dconf on all platforms 2025-08-26 22:49:17 -06:00
6de4d0bd81
zed: turn off whitespace removal on save 2025-08-26 22:01:46 -06:00
39397e92ce
homepage: add leaderboard 2025-08-26 22:01:27 -06:00
103c975ee0
removed unused services 2025-08-26 21:28:03 -06:00
8f6e2b9ce2
vps: fix infinite recursion error 2025-08-26 20:53:57 -06:00
f0dee85621
config: add zed editor 2025-08-26 19:02:42 -06:00
fab1778ec8
config: replace kitty with foot 2025-08-26 19:01:54 -06:00
040ce540c8
trivionomicon: add motd module 2025-08-26 15:02:26 -06:00
61da57ac9d
sway: add a more visible color to focused windows' titlebar 2025-08-26 14:23:09 -06:00
07e51a12db
remove shiori
also add blog back to the navbar on the homepage
2025-08-26 13:23:06 -06:00
9b257e31fb
homepage: add blog index
also minor bug fixes
2025-08-26 13:20:04 -06:00
e71a06b6f0
replace gwenview with qimgv 2025-08-26 10:28:32 -06:00
db1e3dcdc6
config: add borg backups 2025-08-26 02:51:51 -06:00
02529ca146
nix fmt 2025-08-26 00:34:31 -06:00
8df0b79311
config: update flake 2025-08-26 00:03:12 -06:00
bf5f0e3ec2
config: update readme 2025-08-25 23:52:05 -06:00
f5f43fe952
homepage: add tabs
also general minor updates
2025-08-25 23:41:38 -06:00
784f4643e8
config: update README 2025-08-25 23:40:44 -06:00
f97c234a5a
update readme 2025-08-25 23:39:30 -06:00
be458dc782
switch homepage to a submodule 2025-08-25 23:18:01 -06:00
3abff4437a Add 'homepage/' from commit 'a07048bb01'
git-subtree-dir: homepage
git-subtree-mainline: 557d85391c
git-subtree-split: a07048bb01
2025-08-25 23:07:52 -06:00
557d85391c
general fixes and minor improvements 2025-08-25 23:07:11 -06:00
10514ecd65
remove old xserver config 2025-08-25 20:20:43 -06:00
bcc65ec0ad
apply formatter 2025-08-25 17:14:48 -06:00
64735fc5bd
hotfixes for switch to standard trivionomicon flake.nix 2025-08-25 16:40:09 -06:00
59bf994c50
Merge commit '0ae8676d50' 2025-08-25 16:11:51 -06:00
935ca29100
remove redundant functions from pkgs that are in trivionomicon 2025-08-25 16:07:01 -06:00
051303028a
remove st override 2025-08-25 16:03:51 -06:00
af48beee8c
remove homepage as an input for pkgs 2025-08-25 16:03:06 -06:00
06d2140124
move to standard trivionomicon flake.nix 2025-08-25 12:24:25 -06:00
b9c3c4f45a
fmt mako.nix 2025-08-25 12:23:50 -06:00
f585491296 Add 'trivionomicon/' from commit 'bf39923f9c'
git-subtree-dir: trivionomicon
git-subtree-mainline: 98a32736d6
git-subtree-split: bf39923f9c
2025-08-25 09:07:16 -06:00
98a32736d6
remove tooltip from waybar clock 2025-08-09 14:13:27 -06:00
4807859d85
add mako config 2025-08-09 14:11:14 -06:00
a715f50f2b
update readme 2025-08-08 15:52:53 -06:00
abb4fe5712
update gtlock style 2025-08-08 15:32:34 -06:00
b149e90f67
update sway config 2025-08-08 15:32:20 -06:00
9dc042fcce
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121?narHash=sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I%2B5OPGEmIE%3D' (2025-08-04)
  → 'github:nixos/nixpkgs/e728d7ae4bb6394bbd19eec52b7358526a44c414?narHash=sha256-YzNTExe3kMY9lYs23mZR7jsVHe5TWnpwNrsPOpFs/b8%3D' (2025-08-07)
• Updated input 'nur':
    'github:nix-community/NUR/0d75abff8343adaa20cd89b79e1f58d334101534?narHash=sha256-5aNGYEe4nf4IkFw2JN2v3jpcqLhRwCY0rlVhGtOYcV4%3D' (2025-08-07)
  → 'github:nix-community/NUR/a7f9761c9dd71359cd9a6529078302a83e6deaac?narHash=sha256-GH%2BUMIOJj7u/bW55dOOpD8HpVpc9WfU61iweM2nM68A%3D' (2025-08-08)
• Updated input 'nur/nixpkgs':
    'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03)
  → 'github:nixos/nixpkgs/c2ae88e026f9525daf89587f3cbee584b92b6134?narHash=sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs%3D' (2025-08-06)
• Updated input 'unstable':
    'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03)
  → 'github:nixos/nixpkgs/c2ae88e026f9525daf89587f3cbee584b92b6134?narHash=sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs%3D' (2025-08-06)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/483e04c5556e7a42a0dcd176caab7ad450244515?narHash=sha256-gVTM1eIYzHx/Z/2WVhhf3Eov3JuARF5fuIrWjvc73wo%3D' (2025-08-03)
  → 'github:vpsfreecz/vpsadminos/94f162b0a1194115a289b2f1e0f9d13b200d6d0e?narHash=sha256-Vuc6jQNHsXhzJGusRG%2BK9fcI5aEnW9ZQRK22dlM0e2A%3D' (2025-08-08)
2025-08-08 14:59:29 -06:00
0d7022d7c1
add privacy and disk to waybar 2025-08-08 13:57:57 -06:00
158c761ae2
replace wofi with bemenu 2025-08-08 13:26:38 -06:00
6382debb3b
configure sway colors 2025-08-08 11:22:38 -06:00
aa7265e49e
add and configure gtklock 2025-08-08 10:49:07 -06:00
ef8b281c19
configure tmux 2025-08-08 00:44:41 -06:00
5d1408254a
configure sway (this is a huge rice) 2025-08-07 16:48:34 -06:00
4316165e9d
remove conduwuit 2025-08-06 22:33:18 -06:00
edeeb5c169
flake.lock: Update
Flake lock file updates:

• Removed input 'conduwuit'
• Removed input 'conduwuit/attic'
• Removed input 'conduwuit/attic/crane'
• Removed input 'conduwuit/attic/crane/nixpkgs'
• Removed input 'conduwuit/attic/flake-compat'
• Removed input 'conduwuit/attic/flake-utils'
• Removed input 'conduwuit/attic/nixpkgs'
• Removed input 'conduwuit/attic/nixpkgs-stable'
• Removed input 'conduwuit/cachix'
• Removed input 'conduwuit/cachix/devenv'
• Removed input 'conduwuit/cachix/devenv/cachix'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/flake-compat'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/nix'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/nix/flake-compat'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/nix/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/nix/nixpkgs-regression'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix/flake-utils'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix/flake-utils/systems'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix/nix-github-actions'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix/nix-github-actions/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/poetry2nix/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/cachix/devenv/pre-commit-hooks'
• Removed input 'conduwuit/cachix/devenv/cachix/flake-compat'
• Removed input 'conduwuit/cachix/devenv/cachix/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/cachix/pre-commit-hooks'
• Removed input 'conduwuit/cachix/devenv/flake-compat'
• Removed input 'conduwuit/cachix/devenv/nix'
• Removed input 'conduwuit/cachix/devenv/nix/flake-compat'
• Removed input 'conduwuit/cachix/devenv/nix/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/nix/nixpkgs-regression'
• Removed input 'conduwuit/cachix/devenv/nixpkgs'
• Removed input 'conduwuit/cachix/devenv/pre-commit-hooks'
• Removed input 'conduwuit/cachix/flake-compat'
• Removed input 'conduwuit/cachix/nixpkgs'
• Removed input 'conduwuit/cachix/pre-commit-hooks'
• Removed input 'conduwuit/cachix/pre-commit-hooks/flake-compat'
• Removed input 'conduwuit/cachix/pre-commit-hooks/gitignore'
• Removed input 'conduwuit/cachix/pre-commit-hooks/gitignore/nixpkgs'
• Removed input 'conduwuit/cachix/pre-commit-hooks/nixpkgs'
• Removed input 'conduwuit/cachix/pre-commit-hooks/nixpkgs-stable'
• Removed input 'conduwuit/complement'
• Removed input 'conduwuit/crane'
• Removed input 'conduwuit/crane/nixpkgs'
• Removed input 'conduwuit/fenix'
• Removed input 'conduwuit/fenix/nixpkgs'
• Removed input 'conduwuit/fenix/rust-analyzer-src'
• Removed input 'conduwuit/flake-compat'
• Removed input 'conduwuit/flake-utils'
• Removed input 'conduwuit/flake-utils/systems'
• Removed input 'conduwuit/liburing'
• Removed input 'conduwuit/nix-filter'
• Removed input 'conduwuit/nixpkgs'
• Removed input 'conduwuit/rocksdb'
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3ff0e34b1383648053bba8ed03f201d3466f90c9?narHash=sha256-CdX2Rtvp5I8HGu9swBmYuq%2BILwRxpXdJwlpg8jvN4tU%3D' (2025-07-24)
  → 'github:nixos/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121?narHash=sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I%2B5OPGEmIE%3D' (2025-08-04)
• Updated input 'nur':
    'github:nix-community/NUR/445dc705bfda4e2c67c19d1f6646609fa4198342?narHash=sha256-dWNJiSUVglc9HPepthYNbOOmqbfYlW/3fxxG3tsE1b0%3D' (2025-07-28)
  → 'github:nix-community/NUR/0d75abff8343adaa20cd89b79e1f58d334101534?narHash=sha256-5aNGYEe4nf4IkFw2JN2v3jpcqLhRwCY0rlVhGtOYcV4%3D' (2025-08-07)
• Updated input 'nur/nixpkgs':
    'github:nixos/nixpkgs/7fd36ee82c0275fb545775cc5e4d30542899511d?narHash=sha256-9h7%2B4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ%2BSJjk%3D' (2025-07-25)
  → 'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03)
• Added input 'trivionomicon':
    'git+https://git.posixlycorrect.com/deepState/trivionomicon?ref=master&rev=c651b8c4706cfc750303db12ae19e58164a6bebb' (2025-08-06)
• Added input 'trivionomicon/flake-utils':
    'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D' (2024-11-13)
• Added input 'trivionomicon/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e?narHash=sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768%3D' (2023-04-09)
• Added input 'trivionomicon/nixpkgs':
    follows 'nixpkgs'
• Updated input 'unstable':
    'github:nixos/nixpkgs/7fd36ee82c0275fb545775cc5e4d30542899511d?narHash=sha256-9h7%2B4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ%2BSJjk%3D' (2025-07-25)
  → 'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/93226272f9854ef148a30cbb388c3a9932a18f3b?narHash=sha256-7LN%2BI58H/7WWKrDz5Ic9aLdqN0gzOUCX2kaT/hBrjlk%3D' (2025-07-27)
  → 'github:vpsfreecz/vpsadminos/483e04c5556e7a42a0dcd176caab7ad450244515?narHash=sha256-gVTM1eIYzHx/Z/2WVhhf3Eov3JuARF5fuIrWjvc73wo%3D' (2025-08-03)
2025-08-06 22:32:55 -06:00
6c66eb0e36
switch to sway 2025-08-06 22:31:17 -06:00
52e1424f48
add trivionomicon input 2025-08-05 21:59:10 -06:00
ef8939612e
add sway and xdg config 2025-08-05 21:58:46 -06:00
9687235d30
add i3lock to sys config 2025-08-05 20:26:52 -06:00
0249e2941b
apply config changes for 25.05 2025-07-27 21:15:13 -06:00
2c2fa2b6c1
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/d5f1f641b289553927b3801580598d200a501863?narHash=sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz%2BAFQF7n9NmNc%3D' (2025-05-19)
  → 'github:nix-community/home-manager/fc3add429f21450359369af74c2375cb34a2d204?narHash=sha256-oV695RvbAE4%2BR9pcsT9shmp6zE/%2BIZe6evHWX63f2Qg%3D' (2025-07-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/50ab793786d9de88ee30ec4e4c24fb4236fc2674?narHash=sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT%2Bg%3D' (2025-06-30)
  → 'github:nixos/nixpkgs/3ff0e34b1383648053bba8ed03f201d3466f90c9?narHash=sha256-CdX2Rtvp5I8HGu9swBmYuq%2BILwRxpXdJwlpg8jvN4tU%3D' (2025-07-24)
2025-07-27 20:56:39 -06:00
19f637c777
update to 25.05 2025-07-27 20:55:53 -06:00
60fa062bc6
flake.lock: Update
Flake lock file updates:

• Updated input 'nur':
    'github:nix-community/NUR/e0759865ed946bed60a4343add96ae6d0b20c114?narHash=sha256-09EfYrpsERWY9MwFk6ihHSb5Pz2CsjNGOaU0PlIyzSo%3D' (2025-07-28)
  → 'github:nix-community/NUR/445dc705bfda4e2c67c19d1f6646609fa4198342?narHash=sha256-dWNJiSUVglc9HPepthYNbOOmqbfYlW/3fxxG3tsE1b0%3D' (2025-07-28)
2025-07-27 20:31:54 -06:00
d098a49d2c
updated flake.lock 2025-05-09 09:56:13 -06:00
fccdb255c3
replace deluge with qbittorrent 2025-03-13 14:19:50 -06:00
53c2980f38
add mapping software 2025-02-18 09:41:13 -06:00
bc559154f0
apply format 2025-02-17 15:45:00 -06:00
d2eb1518c7
vps: add mealie 2025-02-12 19:01:17 -06:00
1755bf7d18
add deepState dependencies 2025-02-07 18:53:00 -06:00
8ecb978605
update syncthing module 2025-02-07 16:41:07 -06:00
d26ff604e6
add syncthing 2025-02-07 14:21:59 -06:00
95930bc83e
improve firefox module 2025-02-07 13:44:32 -06:00
86cf517738
update firefox module 2025-01-31 08:33:02 -06:00
7854100358
apply formatter 2025-01-31 08:24:40 -06:00
d7ea157761
vps: enable forgejo actions 2025-01-28 12:51:49 -06:00
48d230a108
improve firefox module 2025-01-28 12:30:06 -06:00
d7f1c06f40
modularize gui and browsers modules 2025-01-28 12:15:31 -06:00
5b194ca54a
add readme 2025-01-27 23:21:05 -06:00
62a361c5eb
apply formatter and fix typo 2025-01-27 23:17:54 -06:00
ae37ebf22a
vps: add wiki-js 2025-01-27 23:17:12 -06:00
cbda46edd5
modularize steam 2025-01-27 19:52:25 -06:00
9f0e9811e3
home: remove zoom 2025-01-27 19:51:38 -06:00
4acb6e2408
split theme into its own module and add xdg configuration 2025-01-27 19:01:09 -06:00
7f692459a9
add vpn addresses to fail2ban whitelist 2025-01-25 00:15:24 -06:00
4a7bda944f
add ipv6 support, net module and wireguard vpn 2025-01-25 00:10:50 -06:00
63a190bc7c
vps: change syncthing datadir to vps NAS 2025-01-24 12:00:01 -06:00
09a74648a1
vps: reduce immich worker concurrency 2025-01-24 11:59:23 -06:00
3fefd5b072
apply formatter 2025-01-23 13:16:29 -06:00
9636646eb4
vps: add immich 2025-01-23 13:15:59 -06:00
7748c67e45
vps: add nas exports for immich and syncthing 2025-01-23 12:25:43 -06:00
22eecd6e66
remove 2011 nas export
this was used for bepasty
2025-01-23 12:15:39 -06:00
a785cce6b0
vps: add mosh 2025-01-23 10:03:33 -06:00
dd6a8f9e1c
vps: add calibre 2025-01-23 09:54:43 -06:00
05d397f53e
vps: add shiori 2025-01-23 08:16:51 -06:00
6372c2bc04
update flake.nix
homepage updated
2025-01-23 07:49:00 -06:00
a07048bb01
remove tabs to removed modules 2025-01-23 07:46:19 -06:00
9db5b156dd
vps: remove unused modues
authentik
bepasty
firefly
jellyfin
jitsi
kuma
roundcube
2025-01-23 07:40:49 -06:00
4e63a64248
vps: add syncthing 2025-01-23 06:30:15 -06:00
8c2e1b74ef
vps: upgrade to trilium-next 2025-01-21 08:53:29 -06:00
86e778fe8b
flake.lock: Update
Flake lock file updates:

• Updated input 'nur':
    'github:nix-community/NUR/475fc8ab8cc0883a25e1a7fa2ac8c58599c49684?narHash=sha256-Y0bQJP6mRKodHiYS0i0WIu/NW1S8m5C1C5mBNzawhik%3D' (2025-01-20)
  → 'github:nix-community/NUR/a44b412c5d24f7bb55d81370501a8f9e6e824ec6?narHash=sha256-St/dzvMCXfPPZNJME5bi86n4mEuohG9pMKp%2Ba9l5ZqI%3D' (2025-01-21)
2025-01-21 08:48:34 -06:00
3c2751c807
flake.lock: Update
Flake lock file updates:

• Updated input 'authentik-nix':
    'github:nix-community/authentik-nix/5db6f7711a28abd4b6bbe152c8a7de9d00b1e30d?narHash=sha256-a/sqKV5GvqEcQEGfUGQkhWaUnqIRi8oiDAHbBG1oFZg%3D' (2025-01-04)
  → 'github:nix-community/authentik-nix/bf5a5bf42189ff5f468f0ff26c9296233a97eb6c?narHash=sha256-%2Bf1MWPtja%2BLRlTHJP/i/3yxmnzo2LGtZmxtJJTdAp8o%3D' (2025-01-09)
• Updated input 'authentik-nix/authentik-src':
    'github:goauthentik/authentik/e87a17fd8169d3fa92bcc47eb2743928df83bc95?narHash=sha256-CkUmsVKzAQ/VWIhtxWxlcGtrWVa8hxqsMqvfcsG5ktA%3D' (2024-12-23)
  → 'github:goauthentik/authentik/9d81f0598c7735e2b4616ee865ab896056a67408?narHash=sha256-Z3rFFrXrOKaF9NpY/fInsEbzdOWnWqLfEYl7YX9hFEU%3D' (2025-01-09)
• Updated input 'home-manager':
    'github:nix-community/home-manager/613691f285dad87694c2ba1c9e6298d04736292d?narHash=sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM%3D' (2024-12-28)
  → 'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56?narHash=sha256-dinzAqCjenWDxuy%2BMqUQq0I4zUSfaCvN9rzuCmgMZJY%3D' (2025-01-08)
• Updated input 'impermanence':
    'github:nix-community/impermanence/d000479f4f41390ff7cf9204979660ad5dd16176?narHash=sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY%3D' (2024-12-23)
  → 'github:nix-community/impermanence/c64bed13b562fc3bb454b48773d4155023ac31b7?narHash=sha256-1Zl9xahw399UiZSJ9Vxs1W4WRFjO1SsNdVZQD4nghz0%3D' (2025-01-12)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/cbd8ec4de4469333c82ff40d057350c30e9f7d36?narHash=sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60%3D' (2025-01-05)
  → 'github:nixos/nixpkgs/107d5ef05c0b1119749e381451389eded30fb0d5?narHash=sha256-Qw2PwmkXDK8sPQ5YQ/y/icbQ%2BTYgbxfjhgnkNJyT1X8%3D' (2025-01-19)
• Updated input 'nur':
    'github:nix-community/NUR/c03408924cf08dea2eb171942d6b3e463b2741dc?narHash=sha256-pVNRdhEA32ZyiernLrsvpzxxCw2zV7lbw5lzYhHcPU8%3D' (2025-01-06)
  → 'github:nix-community/NUR/475fc8ab8cc0883a25e1a7fa2ac8c58599c49684?narHash=sha256-Y0bQJP6mRKodHiYS0i0WIu/NW1S8m5C1C5mBNzawhik%3D' (2025-01-20)
• Updated input 'nur/nixpkgs':
    'github:nixos/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
  → 'github:nixos/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16)
• Updated input 'unstable':
    'github:nixos/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
  → 'github:nixos/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/83ddccf4462f155f12596af773e9291d7ebc37a3?narHash=sha256-xZEbuwAAbxwujrGtuydDNBjzMLnE9YOcuLv3hdudZe4%3D' (2024-12-17)
  → 'github:vpsfreecz/vpsadminos/0af10d77ca146293b2ed19d5dcfd98474f1fc285?narHash=sha256-wMy7IbQs87VUxJOqRSbfFIdxRRTUBQh8G1L/zwI36vY%3D' (2025-01-17)
2025-01-19 21:07:30 -06:00
9cbd93c9fd
add xdg portal 2025-01-19 21:06:35 -06:00
534d3b0032
vps: remove templatestyles 2025-01-09 03:00:19 -06:00
dd862904fe
configure gajim 2025-01-09 00:13:25 -06:00
2e0c03a5ec
fix qt, gtk and darkmode settings 2025-01-05 23:31:19 -06:00
97056c6bfc
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d29ab98cd4a70a387b8ceea3e930b3340d41ac5a?narHash=sha256-vk0xwGZSlvZ/596yxOtsk4gxsIx2VemzdjiU8zhjgWw%3D' (2025-01-03)
  → 'github:nixos/nixpkgs/cbd8ec4de4469333c82ff40d057350c30e9f7d36?narHash=sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60%3D' (2025-01-05)
• Updated input 'nur':
    'github:nix-community/NUR/c069281f9ef15582d5c1c59995e9d6cf2c0ed1b6?narHash=sha256-E2pP/HI/adDIzDhYR25xlTQpvMnssZPhozHbTg66H/E%3D' (2025-01-05)
  → 'github:nix-community/NUR/c03408924cf08dea2eb171942d6b3e463b2741dc?narHash=sha256-pVNRdhEA32ZyiernLrsvpzxxCw2zV7lbw5lzYhHcPU8%3D' (2025-01-06)
2025-01-05 22:29:37 -06:00
3e0e6e4d5d
add xdg config 2025-01-05 22:23:56 -06:00
bc73e4b350
add pv 2025-01-05 21:04:10 -06:00
5bfbb7ebe5
even more dark theme 2025-01-05 20:33:01 -06:00
03952d8198
posixlycorrect: add gajim 2025-01-05 02:00:58 -06:00
4c33c15c11
replace nur.overlay with nur.overlays.default 2025-01-05 01:47:55 -06:00
3803a1e1b9
add dark theme to everything 2025-01-05 01:45:40 -06:00
b5cd20b71b
remove conduit 2025-01-05 01:37:58 -06:00
dd202a0c99
flake.lock: Update
Flake lock file updates:

• Updated input 'authentik-nix':
    'github:nix-community/authentik-nix/9d9c0a3a94a91cfed654a18239e27cf56970daa4?narHash=sha256-P2VVlzRGKBNsiHsN1yMZcSMXpwtIx9ysMFZAqKFJ14o%3D' (2024-11-21)
  → 'github:nix-community/authentik-nix/5db6f7711a28abd4b6bbe152c8a7de9d00b1e30d?narHash=sha256-a/sqKV5GvqEcQEGfUGQkhWaUnqIRi8oiDAHbBG1oFZg%3D' (2025-01-04)
• Updated input 'authentik-nix/authentik-src':
    'github:goauthentik/authentik/527e584699abc93712114b05f70f59c5187caa66?narHash=sha256-4Pv35cnZGiTxe6j2O0F9L9sHzxVIC1SazeAUD5kWeBs%3D' (2024-11-21)
  → 'github:goauthentik/authentik/e87a17fd8169d3fa92bcc47eb2743928df83bc95?narHash=sha256-CkUmsVKzAQ/VWIhtxWxlcGtrWVa8hxqsMqvfcsG5ktA%3D' (2024-12-23)
• Updated input 'authentik-nix/poetry2nix':
    'github:nix-community/poetry2nix/43a898b4d76f7f3f70df77a2cc2d40096bc9d75e?narHash=sha256-eHYcKVLIRRv3J1vjmxurS6HVdGphB53qxUeAkylYrZY%3D' (2024-10-30)
  → 'github:nix-community/poetry2nix/1fb01e90771f762655be7e0e805516cd7fa4d58e?narHash=sha256-DaWy%2Bvo3c4TQ93tfLjUgcpPaSoDw4qV4t76Y3Mhu84I%3D' (2024-12-25)
• Updated input 'conduwuit/nixpkgs':
    'github:NixOS/nixpkgs/55d15ad12a74eb7d4646254e13638ad0c4128776?narHash=sha256-M1%2BuCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo%3D' (2024-12-03)
  → 'github:NixOS/nixpkgs/7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9?narHash=sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y%3D' (2024-07-12)
• Updated input 'home-manager':
    'github:nix-community/home-manager/f3111f62a23451114433888902a55cf0692b408d?narHash=sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c%3D' (2024-11-24)
  → 'github:nix-community/home-manager/613691f285dad87694c2ba1c9e6298d04736292d?narHash=sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM%3D' (2024-12-28)
• Updated input 'impermanence':
    'github:nix-community/impermanence/3ed3f0eaae9fcc0a8331e77e9319c8a4abd8a71a?narHash=sha256-B3C3JLbGw0FtLSWCjBxU961gLNv%2BBOOBC6WvstKLYMw%3D' (2024-11-10)
  → 'github:nix-community/impermanence/d000479f4f41390ff7cf9204979660ad5dd16176?narHash=sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY%3D' (2024-12-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c71ad5c34d51dcbda4c15f44ea4e4aa6bb6ac1e9?narHash=sha256-fYNXgpu1AEeLyd3fQt4Ym0tcVP7cdJ8wRoqJ%2BCtTRyY%3D' (2024-11-28)
  → 'github:nixos/nixpkgs/d29ab98cd4a70a387b8ceea3e930b3340d41ac5a?narHash=sha256-vk0xwGZSlvZ/596yxOtsk4gxsIx2VemzdjiU8zhjgWw%3D' (2025-01-03)
• Updated input 'nur':
    'github:nix-community/NUR/d711073b26533360c2bc595b4e6a824b873f8e22?narHash=sha256-d/wq3j57flyYQ1F3s/B2f0bHCaOKF6d7JTxzfMCGRmw%3D' (2024-12-01)
  → 'github:nix-community/NUR/c069281f9ef15582d5c1c59995e9d6cf2c0ed1b6?narHash=sha256-E2pP/HI/adDIzDhYR25xlTQpvMnssZPhozHbTg66H/E%3D' (2025-01-05)
• Added input 'nur/flake-parts':
    'github:hercules-ci/flake-parts/205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9?narHash=sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c%3D' (2024-12-04)
• Added input 'nur/flake-parts/nixpkgs-lib':
    follows 'nur/nixpkgs'
• Added input 'nur/nixpkgs':
    'github:nixos/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
• Added input 'nur/treefmt-nix':
    'github:numtide/treefmt-nix/49717b5af6f80172275d47a418c9719a31a78b53?narHash=sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM%3D' (2024-12-03)
• Added input 'nur/treefmt-nix/nixpkgs':
    follows 'nur/nixpkgs'
• Updated input 'unstable':
    'github:nixos/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370?narHash=sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE%3D' (2024-11-28)
  → 'github:nixos/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/adea302cd4033be844cd033d30bc552270025331?narHash=sha256-n1JQ6x5nh7/sgKKe8uWWdrw2pz2tkJm6IRpI5%2BI1chI%3D' (2024-11-30)
  → 'github:vpsfreecz/vpsadminos/83ddccf4462f155f12596af773e9291d7ebc37a3?narHash=sha256-xZEbuwAAbxwujrGtuydDNBjzMLnE9YOcuLv3hdudZe4%3D' (2024-12-17)
2025-01-05 01:37:36 -06:00
5ccd556ae4
remove matrix 2025-01-05 01:36:36 -06:00
d00756c2d5
add gnucash 2024-12-04 15:41:54 -06:00
6d8d9fe28c
add todos 2024-12-03 00:33:08 -06:00
ba80ec391a
hide titlebars and default to tabbed workspace layout 2024-12-03 00:31:41 -06:00
00152f179e
add adbusers group 2024-12-02 23:31:24 -06:00
da7fdf91d2
remove tp-auto-kbbl 2024-12-02 23:24:18 -06:00
e6a8a66432
add t14 sys platform 2024-12-02 21:41:49 -06:00
b64c85e314
modularize bluetooth 2024-12-02 21:31:27 -06:00
8fed4a320d
apply format 2024-12-02 21:07:06 -06:00
360138e76f
remove comments 2024-12-02 20:38:10 -06:00
119c0ab771
modularize users
and other stuff
2024-12-02 19:57:02 -06:00
1add39aae0
re-order configuration 2024-12-02 14:58:44 -06:00
33ab479e22
modularize android support 2024-12-02 14:38:20 -06:00
ff1b655d3c
modularize virtualization settings 2024-12-02 14:34:37 -06:00
99816f0d3f
modularize system graphics settings 2024-12-02 14:33:54 -06:00
01f1576b8a
modularize audio 2024-12-02 14:23:52 -06:00
1221aaf0fc
modularize yubikey 2024-12-02 14:14:13 -06:00
d5afd4b1a7
modularize baseline system configuration 2024-12-02 14:10:10 -06:00
80e5a5e8a6
stateVersion synced across all configurations 2024-12-02 12:37:53 -06:00
a38110ee55
add history config to zshrc 2024-12-02 12:22:23 -06:00
93946beae2
add zsh auto suggestion 2024-12-01 22:01:04 -06:00
e0614b99b4
replace multicursor plugin 2024-12-01 21:58:23 -06:00
e0ef9b14ba
update zshrc 2024-12-01 21:51:35 -06:00
bd18abd3e8
add fixes in order to be compatible with 24.11 2024-11-30 21:19:51 -06:00
b9087c333b
switch from pulseaudio to pipewire 2024-11-30 20:22:44 -06:00
96e0b06807
flake.lock: Update
Flake lock file updates:

• Updated input 'authentik-nix':
    'github:nix-community/authentik-nix/91ff8d93f089104d3d75c85758832252989c6a04' (2024-11-14)
  → 'github:nix-community/authentik-nix/9d9c0a3a94a91cfed654a18239e27cf56970daa4' (2024-11-21)
• Updated input 'authentik-nix/authentik-src':
    'github:goauthentik/authentik/66a4970014da49ceec0715e5dec8c9aa032a3146' (2024-11-14)
  → 'github:goauthentik/authentik/527e584699abc93712114b05f70f59c5187caa66' (2024-11-21)
• Updated input 'home-manager':
    'github:nix-community/home-manager/2f23fa308a7c067e52dfcc30a0758f47043ec176' (2024-09-22)
  → 'github:nix-community/home-manager/f3111f62a23451114433888902a55cf0692b408d' (2024-11-24)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e8c38b73aeb218e27163376a2d617e61a2ad9b59' (2024-11-16)
  → 'github:nixos/nixpkgs/c71ad5c34d51dcbda4c15f44ea4e4aa6bb6ac1e9' (2024-11-28)
• Updated input 'nur':
    'github:nix-community/NUR/a1d4c79a93b4a56127c152f4eec71eee63f8f5e6' (2024-11-20)
  → 'github:nix-community/NUR/d711073b26533360c2bc595b4e6a824b873f8e22' (2024-12-01)
• Updated input 'unstable':
    'github:nixos/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367' (2024-11-19)
  → 'github:nixos/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370' (2024-11-28)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/c387a0c9461e1ea261987897d342edec12c1af4f' (2024-11-20)
  → 'github:vpsfreecz/vpsadminos/adea302cd4033be844cd033d30bc552270025331' (2024-11-30)
2024-11-30 19:42:49 -06:00
cb2549c417
update to 24.11 2024-11-30 19:41:45 -06:00
81c8ad2e15
add memorias de seda to public files 2024-11-29 17:56:17 -06:00
d10cf8b25f
update gpg settings 2024-11-29 12:48:00 -06:00
60fa9da64c
enable ssh-agent 2024-11-29 12:24:10 -06:00
f77410de7c
update zshrc 2024-11-29 12:23:51 -06:00
06b9135417
fix typos 2024-11-29 11:35:32 -06:00
4cc51e93dc remove LGPL 2024-11-29 11:03:43 -06:00
80a2195f50 remove extra packages from vps 2024-11-29 02:05:09 -06:00
1c99d945fd fix typo in neovim module 2024-11-29 02:02:08 -06:00
f6305533f4 fix typo in gaming module 2024-11-29 02:00:13 -06:00
265f1bd9c0 update vps to use home modules 2024-11-29 01:53:20 -06:00
9c98f9a0a3 update kitty module 2024-11-29 01:41:05 -06:00
6a51c08183 re-structure package configuration. fully modularize everything 2024-11-29 01:37:41 -06:00
9418588fed modularize accounts 2024-11-29 01:12:43 -06:00
541f80ff91 update baseline to configure git 2024-11-29 01:01:35 -06:00
a7827e619c modularize gpg 2024-11-29 00:56:20 -06:00
4ec61784ed modularize zsh 2024-11-29 00:44:04 -06:00
a5db281643 fix public key path 2024-11-29 00:12:49 -06:00
4fbe064802 fix baseline module typo 2024-11-29 00:05:35 -06:00
4e6eaf4bf3 update public file index and add @soto's digial signature 2024-11-29 00:00:31 -06:00
995b085d82 improve baseline module 2024-11-28 18:23:37 -06:00
bcd049b8c5 modularize gui 2024-11-28 18:23:16 -06:00
61eb9ed8c5 vps: disable firefly 2024-11-21 23:40:56 -06:00
187a20201a vps: add roundcube 2024-11-21 23:40:44 -06:00
edae8a4dea restructure apps config 2024-11-21 02:09:06 -06:00
2818223d9b remove vlc 2024-11-21 01:48:20 -06:00
50943bb142 modularize browsers 2024-11-21 01:47:28 -06:00
f5cfd50183 modularize yubikey 2024-11-21 01:42:04 -06:00
f577fd237d add basic cli packages to baseline 2024-11-21 00:38:11 -06:00
8b8aa68811
modularize steam 2024-11-20 23:36:53 -06:00
a09e88cf3e
fix typo 2024-11-20 23:26:48 -06:00
68c7147fa7
add license 2024-11-20 18:46:38 -06:00
d38554456a
flake.lock: Update
Flake lock file updates:

• Updated input 'authentik-nix':
    'github:nix-community/authentik-nix/0fd076529b40e7fc7304a398618cab76ff7e96c3' (2024-09-08)
  → 'github:nix-community/authentik-nix/91ff8d93f089104d3d75c85758832252989c6a04' (2024-11-14)
• Updated input 'authentik-nix/authentik-src':
    'github:goauthentik/authentik/f5580d311d01f2202b666f76931ed04f30b9ec30' (2024-09-07)
  → 'github:goauthentik/authentik/66a4970014da49ceec0715e5dec8c9aa032a3146' (2024-11-14)
• Updated input 'authentik-nix/flake-parts':
    'github:hercules-ci/flake-parts/567b938d64d4b4112ee253b9274472dc3a346eb6' (2024-09-01)
  → 'github:hercules-ci/flake-parts/3d04084d54bedc3d6b8b736c70ef449225c361b1' (2024-10-01)
• Updated input 'authentik-nix/flake-parts/nixpkgs-lib':
    'https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz?narHash=sha256-Ss8QWLXdr2JCBPcYChJhz4xJm%2Bh/xjl4G0c0XlP6a74%3D' (2024-09-01)
  → 'https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz?narHash=sha256-0xHYkMkeLVQAMa7gvkddbPqpxph%2BhDzdu1XdGPJR%2BOs%3D' (2024-10-01)
• Updated input 'authentik-nix/flake-utils':
    'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
  → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17)
• Updated input 'authentik-nix/poetry2nix':
    'github:nix-community/poetry2nix/a313fd7169ae43ecd1a2ea2f1e4899fe3edba4d2' (2024-09-05)
  → 'github:nix-community/poetry2nix/43a898b4d76f7f3f70df77a2cc2d40096bc9d75e' (2024-10-30)
• Updated input 'authentik-nix/poetry2nix/nix-github-actions':
    'github:nix-community/nix-github-actions/5163432afc817cf8bd1f031418d1869e4c9d5547' (2023-12-29)
  → 'github:nix-community/nix-github-actions/e04df33f62cdcf93d73e9a04142464753a16db67' (2024-10-24)
• Updated input 'authentik-nix/poetry2nix/treefmt-nix':
    'github:numtide/treefmt-nix/8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd' (2024-06-30)
  → 'github:numtide/treefmt-nix/9ef337e492a5555d8e17a51c911ff1f02635be15' (2024-10-28)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
  → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b' (2024-11-13)
• Updated input 'home-manager':
    'github:nix-community/home-manager/208df2e558b73b6a1f0faec98493cb59a25f62ba' (2024-09-07)
  → 'github:nix-community/home-manager/2f23fa308a7c067e52dfcc30a0758f47043ec176' (2024-09-22)
• Updated input 'homepage':
    'git+https://git.posixlycorrect.com/fabian/homepage.git?ref=master&rev=a49523cc42d61e0dac0d3dcb01cc1ca3fad7070c' (2024-09-04)
  → 'git+https://git.posixlycorrect.com/fabian/homepage.git?ref=master&rev=e5a63ce5af105227df8ed01447919b013cb9a0f2' (2024-11-21)
• Updated input 'impermanence':
    'github:nix-community/impermanence/63f4d0443e32b0dd7189001ee1894066765d18a5' (2024-09-07)
  → 'github:nix-community/impermanence/3ed3f0eaae9fcc0a8331e77e9319c8a4abd8a71a' (2024-11-10)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/44a71ff39c182edaf25a7ace5c9454e7cba2c658' (2024-09-10)
  → 'github:nixos/nixpkgs/e8c38b73aeb218e27163376a2d617e61a2ad9b59' (2024-11-16)
• Updated input 'nur':
    'github:nix-community/NUR/0c3404cce1f91b1582168544584c13c60fb23eb2' (2024-09-13)
  → 'github:nix-community/NUR/a1d4c79a93b4a56127c152f4eec71eee63f8f5e6' (2024-11-20)
• Updated input 'unstable':
    'github:nixos/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f' (2024-09-11)
  → 'github:nixos/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367' (2024-11-19)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/e6e4245dc1e6365a601ddf5022976b14de789e0e' (2024-09-13)
  → 'github:vpsfreecz/vpsadminos/c387a0c9461e1ea261987897d342edec12c1af4f' (2024-11-20)
2024-11-20 18:06:22 -06:00
e5a63ce5af
remove depreicated services 2024-11-20 18:04:47 -06:00
42530f5cfc
unified all nixos configurations 2024-11-20 17:52:37 -06:00
001642dc94
modularize neovim and terminal 2024-11-20 17:04:00 -06:00
85dfcfdb72
fix terminal config 2024-11-20 16:48:27 -06:00
1565c00bf8
remove firefly 2024-11-19 04:44:50 -06:00
50e1411608
add kdenlive 2024-11-19 04:43:41 -06:00
67de0bda65
add calibre 2024-11-07 17:33:45 -06:00
7a303815d1
add neovim home-manager config 2024-10-01 00:01:32 -06:00
6efd802700
rename lib to apps 2024-09-30 11:46:31 -06:00
b7dded2710
remove gperftools 2024-09-30 11:46:08 -06:00
f5770f524f
add u2f support 2024-09-19 01:25:03 -06:00
699bf6ac93
add bullets to about page 2024-09-18 21:45:09 -06:00
c5ba6530fb
remove old public key page 2024-09-18 20:57:39 -06:00
d26219c00d
add pki links 2024-09-18 20:53:54 -06:00
e15777ab93
add picom config 2024-09-17 19:36:41 -06:00
a6be515925
add yubikey support 2024-09-17 17:56:39 -06:00
6e9af8b303
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f4c846aee8e1e29062aa8514d5e0ab270f4ec2f9' (2024-09-08)
  → 'github:nixos/nixpkgs/44a71ff39c182edaf25a7ace5c9454e7cba2c658' (2024-09-10)
• Updated input 'nur':
    'github:nix-community/NUR/d1d1e8640bbcff47c11c5d8f575d6c47be956089' (2024-09-11)
  → 'github:nix-community/NUR/0c3404cce1f91b1582168544584c13c60fb23eb2' (2024-09-13)
• Updated input 'unstable':
    'github:nixos/nixpkgs/574d1eac1c200690e27b8eb4e24887f8df7ac27c' (2024-09-06)
  → 'github:nixos/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f' (2024-09-11)
• Updated input 'vpsadminos':
    'github:vpsfreecz/vpsadminos/37c5eb47ca3f11deac83e4ada20a6c21d5487f29' (2024-09-08)
  → 'github:vpsfreecz/vpsadminos/e6e4245dc1e6365a601ddf5022976b14de789e0e' (2024-09-13)
2024-09-13 12:49:43 -06:00
106bc1348d
add desktop platform 2024-09-13 12:48:28 -06:00
a598918c63
impprove platform enumeration 2024-09-08 15:20:09 -06:00
2da7c4da32
update gitignore 2024-09-08 14:52:31 -06:00
3d2418b194
remove irrelevant flake.lock 2024-09-08 14:52:19 -06:00
3044c426fd
apply format 2024-09-08 14:50:36 -06:00
34e3cdaf81
finish flake and remove old trash 2024-09-08 14:17:34 -06:00
c8791adf39
baseline 2024-09-05 12:28:09 -06:00
a49523cc42
add notes tab 2024-09-04 02:19:49 -06:00
4fd192a71d
add docs tab 2024-08-28 12:27:31 -06:00
9a14976e84
remove blog tab (all content relocated to wiki) 2024-08-28 12:27:18 -06:00
b781111772
add alejandra formatter 2024-08-24 01:54:58 -06:00
18b56328ed
trim theme, change bg color 2024-08-23 17:25:59 -06:00
af81b24225
add status link 2024-08-19 15:11:43 -06:00
21fb163a04
update layout and add digital gardening link 2024-08-13 20:08:49 -06:00
8a8a20ce19
move gpg key to separate page 2024-08-13 16:45:06 -06:00
83d16f0514
restructure lib and add be_methodical.md 2024-08-13 16:34:09 -06:00
13158da584
add link to matrix contact 2024-08-12 17:26:17 -06:00
e741f38270
add jellyfin tab 2024-08-10 02:58:53 -06:00
96d377be91
add pastebin tab 2024-08-08 12:04:42 -06:00
c974f2cfe2
update page titles 2024-08-08 01:02:42 -06:00
b75b01c617
update git url 2024-08-08 00:58:03 -06:00
e310700175
add git link 2024-08-08 00:43:40 -06:00
ff07dcd388
change projects url 2024-08-08 00:18:19 -06:00
43b74d99e2
replace meet with comms tab 2024-08-07 18:28:43 -06:00
665d960f32
add gitignore 2024-08-03 15:34:17 -06:00
7a32292dda
initial commit 2024-08-03 15:31:15 -06:00
211 changed files with 8171 additions and 222 deletions

View file

@ -1,8 +1,43 @@
### Push:
# Nix configuration
## Updating
Update flake
nix flake update --commit-lock-file
Switch current machine
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
### Pull:
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.

577
flake.lock generated
View file

@ -1,8 +1,112 @@
{
"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",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
"systems": [
"authentik-nix",
"systems"
]
},
"locked": {
"lastModified": 1731533236,
@ -18,13 +122,245 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"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=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"hm-isolation": {
"locked": {
"lastModified": 1675806557,
"narHash": "sha256-39NPKKwU7JflyDG9Cn36UPPelkcNATsrCaoazuIO5PA=",
"owner": "3442",
"repo": "hm-isolation",
"rev": "0b435299c3735231bf4faf1ea7de32d03f070056",
"type": "github"
},
"original": {
"owner": "3442",
"repo": "hm-isolation",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756245065,
"narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "54b2879ce622d44415e727905925e21b8f833a98",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"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,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"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",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1752054764,
"narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=",
"owner": "guibou",
"repo": "nixGL",
"rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5",
"type": "github"
},
"original": {
"owner": "guibou",
"repo": "nixGL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1754292888,
"narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=",
"lastModified": 1746378225,
"narHash": "sha256-OeRSuL8PUjIfL3Q0fTbNJD/fmv1R+K2JAOqWJd3Oceg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ce01daebf8489ba97bd1609d185ea276efdeb121",
"rev": "93e8cdce7afc64297cfec447c311470788131cd9",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"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=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
"type": "github"
},
"original": {
@ -34,13 +370,124 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1756266583,
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1756332267,
"narHash": "sha256-SBiHiR+Y074U9OZhnIrIgu/6iLZPxYhlBOmnP7ymBME=",
"owner": "nix-community",
"repo": "NUR",
"rev": "1f693539e1da901a6da002555d5480e887a5adc1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"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": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
"authentik-nix": "authentik-nix",
"flake-utils": "flake-utils_2",
"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"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -54,6 +501,124 @@
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"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",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"path": "./trivionomicon",
"type": "path"
},
"original": {
"path": "./trivionomicon",
"type": "path"
},
"parent": []
},
"unstable": {
"locked": {
"lastModified": 1756266583,
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"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",

233
flake.nix
View file

@ -1,218 +1,57 @@
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
flake-utils,
}: let
mapOverlayOverride = namespace: overlay: final: prev: let
overlayPkgs = overlay final prev;
in
{
"${namespace}" = builtins.removeAttrs overlayPkgs ["override"];
}
// (overlayPkgs.override or {});
doctrineNoPkgs = self.lib.mkDoctrine {
lib = nixpkgs.lib;
pkgs = null;
};
in
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {inherit system;};
in {
formatter = pkgs.alejandra;
packages =
(import nixpkgs {
inherit system;
overlays = [(mapOverlayOverride doctrineNoPkgs.prefix (import ./pkgs))];
}).${
doctrineNoPkgs.prefix
};
})
// {
templates = let
system-flake = {
path = ./templates/system-flake;
description = "Opinionated flake for a NixOS system with Home Manager";
};
in {
inherit system-flake;
default = system-flake;
trivionomicon = {
url = "./trivionomicon";
inputs.nixpkgs.follows = "nixpkgs";
};
overlays = let
overlay = mapOverlayOverride doctrineNoPkgs.prefix (import ./pkgs);
in {
default = overlay;
${doctrineNoPkgs.prefix} = overlay;
homepage = {
url = "./homepage";
inputs.nixpkgs.follows = "nixpkgs";
};
homeManagerModules.default = ./modules;
nixosModules.default = ./modules;
lib = {
mkDoctrine = import ./doctrine;
mkSystemFlake = {
flakes,
system,
doctrinePrefix ? null,
formatter ? "alejandra",
paths ? {},
}: let
mkDoctrine = args:
self.lib.mkDoctrine
(args
// optionalAttrs (doctrinePrefix != null) {
prefix = doctrinePrefix;
});
doctrineNoPkgs = mkDoctrine {
lib = nixpkgs.lib;
pkgs = null;
authentik-nix = {
url = "github:nix-community/authentik-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
optionalFlake = name:
if flakes ? "${name}"
then flakes.${name}
else null;
requireFlake = name:
if flakes ? "${name}"
then flakes.${name}
else throw "Required flake input '${name}' is missing";
nur = optionalFlake "nur";
nixpkgs = requireFlake "nixpkgs";
unstable = optionalFlake "unstable";
home-manager =
if hmSourcePath != null
then requireFlake "home-manager"
else null;
pathFromSelf = path: builtins.toPath "${flakes.self}" + "/${path}";
localOverlayPath = pathFromSelf paths.localOverlay;
nixpkgsConfigPath = pathFromSelf paths.nixpkgsConfig;
nixosSourcePath = pathFromSelf paths.nixosSource;
nixosPlatformsPath = pathFromSelf paths.nixosPlatforms;
hmSourcePath = pathFromSelf paths.hmSource;
hmPlatformsPath = pathFromSelf paths.hmPlatforms;
pkgs = importPkgs nixpkgs;
importPkgs = flake:
import flake ({
inherit system;
overlays = let
conditions = [
{
overlay = nur.overlays.default;
condition = nur != null;
}
# NB: Preserve the relative order
{
overlay = self.overlays.default;
condition = true;
}
{
overlay = flakes.self.overlays.default;
condition = true;
}
];
in
builtins.map (cond: cond.overlay) (builtins.filter (cond: cond.condition) conditions);
}
// optionalAttrs (paths ? nixpkgsConfig) {
config = import nixpkgsConfigPath {inherit (nixpkgs) lib;};
});
inherit (pkgs) lib;
inherit (nixpkgs.lib) optionalAttrs; # Prevents infinite recursion
inherit (doctrineNoPkgs) prefix;
inherit (doctrineNoPkgs.lib) importAll;
in
{
formatter.${system} =
if formatter == "alejandra"
then pkgs.alejandra
else if formatter == "nixpkgs-fmt"
then pkgs.nixpkgs-fmt
else throw "Unknown formatter: '${formatter}'";
packages.${system} = pkgs.${prefix};
overlays.default = final: prev: let
overlay = final: prev:
if paths ? localOverlay
then import localOverlayPath {inherit final prev flakes;}
else {};
in
mapOverlayOverride prefix overlay final prev
// optionalAttrs (unstable != null) {
unstable = importPkgs unstable;
mediawikiSkinCitizen = {
url = "github:StarCitizenTools/mediawiki-skins-Citizen/v2.27.0";
flake = false;
};
}
// optionalAttrs (paths ? nixosSource) {
nixosConfigurations = let
nixosSystem = {modules}:
lib.makeOverridable nixpkgs.lib.nixosSystem {
inherit modules pkgs system;
specialArgs = {
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:
flakes.trivionomicon.lib.mkSystemFlake {
inherit flakes;
doctrine = mkDoctrine {
inherit pkgs;
namespace = "sys";
};
};
};
system = "x86_64-linux";
doctrinePrefix = "local";
hostConfig = platform:
nixosSystem {
modules = [
self.nixosModules.default
nixosSourcePath
platform
];
};
in
lib.mapAttrs (_: hostConfig) (importAll {root = nixosPlatformsPath;});
}
// optionalAttrs (paths ? hmSource) {
homeConfigurations = let
home = name: platform:
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
paths = {
localOverlay = "pkgs";
nixpkgsConfig = "pkgs/config";
extraSpecialArgs = {
inherit flakes;
nixosSource = "sys";
nixosPlatforms = "sys/platforms";
doctrine = mkDoctrine {
inherit pkgs;
namespace = "hm";
};
};
modules = [
self.homeManagerModules.default
hmSourcePath
platform
];
};
in
lib.mapAttrs home (importAll {root = hmPlatformsPath;});
};
hmSource = "home";
hmPlatforms = "home/platforms";
};
};
}

14
home/default.nix Normal file
View file

@ -0,0 +1,14 @@
{
flakes,
config,
pkgs,
lib,
...
}:
with lib; {
imports = [
./modules
flakes.trivionomicon.homeManagerModules.default
flakes.hm-isolation.homeManagerModule
];
}

22
home/modules/accounts.nix Normal file
View file

@ -0,0 +1,22 @@
{
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";
};
};
};
}

51
home/modules/baseline.nix Normal file
View file

@ -0,0 +1,51 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.baseline;
in {
options.local.baseline = {
enable = mkEnableOption "Basic home settings";
};
config = mkIf cfg.enable {
xdg = {
enable = true;
};
home = {
stateVersion = "24.05"; # DO NOT CHANGE
packages = with pkgs; [
calc
file
gcc
htop
killall
man-pages
man-pages-posix
pv
tree
units
unzip
vim
zip
];
keyboard = {
layout = "us";
variant = "altgr-intl";
};
sessionVariables = {
"EDITOR" = mkDefault "vim";
};
};
programs.git = {
enable = true;
userEmail = "fabian@posixlycorrect.com";
userName = "Fabian Montero";
};
};
}

View file

@ -0,0 +1,17 @@
{
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";
};
};
}

24
home/modules/default.nix Normal file
View file

@ -0,0 +1,24 @@
{
config,
lib,
pkgs,
...
}: {
imports = [
./terminal.nix
./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
];
}

View file

@ -0,0 +1,34 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.apps.defaultDesktopPack;
in {
options.local.apps.defaultDesktopPack = {
enable = mkEnableOption "common desktop apps";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
calibre
chromium
discord
libreoffice-fresh
mpv
obs-studio
pavucontrol
pdfarranger
qimgv
qpdfview
runelite
spotify
tdesktop
usbutils
vpsfree-client
vscodium-fhs
zola
];
};
}

31
home/modules/firefox.nix Normal file
View file

@ -0,0 +1,31 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.apps.firefox;
in {
options.local.apps.firefox = {
enable = mkEnableOption "firefox settings";
};
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"];
};
};
};
home.sessionVariables.DEFAULT_BROWSER = "${lib.getExe pkgs.firefox}";
};
}

20
home/modules/gaming.nix Normal file
View file

@ -0,0 +1,20 @@
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.local.apps.gaming;
in {
options.local.apps.gaming = {
enable = mkEnableOption "gaming apps";
};
config = mkIf cfg.enable {
home.packages = [
pkgs.lutris
pkgs.openrct2
pkgs.prismlauncher
];
};
}

61
home/modules/gpg.nix Normal file
View file

@ -0,0 +1,61 @@
{
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;
};
};
};
}

View file

@ -0,0 +1,70 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.local.gui;
monitorType = {setName}: (
types.submodule ({name ? null, ...}: {
options = {
width = mkOption {
type = types.str;
default = "1920";
example = "1920";
};
height = mkOption {
type = types.str;
default = "1080";
example = "1080";
};
rate = mkOption {
type = types.str;
description = "refresh rate";
example = "143.85";
};
posX = mkOption {
type = types.str;
description = "x axis position";
default = "0";
example = "0";
};
posY = mkOption {
type = types.str;
description = "y axis position";
default = "0";
example = "0";
};
};
})
);
in {
options.local.gui = {
enable = mkEnableOption "GUI settings";
monitors = mkOption {
type = types.attrsOf (monitorType {setName = true;});
};
};
imports = [
./fonts.nix
./theme.nix
./sway.nix
./waybar.nix
./mako.nix
];
config = mkIf cfg.enable {
xdg = {
enable = true;
mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = with pkgs; ["qpdfview.desktop"];
"x-scheme-handler/file" = with pkgs; ["foot.desktop"];
};
};
};
};
}

View file

@ -0,0 +1,41 @@
{
config,
lib,
pkgs,
...
}: {
fonts.fontconfig = {
enable = true;
defaultFonts = {
monospace = [
"JetBrains Mono"
"Noto Sans Mono CJK SC"
"Noto Sans Mono"
"Noto Color Emoji"
];
sansSerif = [
"Noto Sans"
"Noto Sans CJK SC"
"Noto Color Emoji"
];
serif = [
"Noto Serif"
"Noto Serif CJK SC"
"Noto Color Emoji"
];
emoji = ["Noto Color Emoji"];
};
};
# this is probably not necessary since they are already installed in sys
# with fonts.packages buy im too lazy to check
home.packages = with pkgs; [
jetbrains-mono
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
noto-fonts-extra
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
];
}

28
home/modules/gui/mako.nix Normal file
View file

@ -0,0 +1,28 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.gui;
in {
config = mkIf cfg.enable {
services.mako = {
enable = true;
settings = {
actions = true;
anchor = "top-right";
background-color = "#000000";
border-color = "#000000";
progress-color = "over #FFFFFF";
border-radius = 0;
default-timeout = 7000;
font = "JetBrains Mono 10";
icons = true;
ignore-timeout = false;
layer = "top";
};
};
};
}

189
home/modules/gui/sway.nix Normal file
View file

@ -0,0 +1,189 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.gui;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [
wlr-randr
bemenu
];
home.sessionVariables = {
"BEMENU_BACKEND" = "wayland";
};
services = {
swayidle = {
enable = true;
timeouts = [
{
timeout = 600;
command = "${getExe pkgs.gtklock} -d";
}
];
};
};
systemd.user.services.wl-gammarelay-rs = {
Unit.After = ["sway-session.target"];
Install.WantedBy = ["sway-session.target"];
Service.ExecStart = getExe pkgs.wl-gammarelay-rs;
};
wayland.windowManager.sway = {
enable = true;
config = {
output =
lib.mapAttrs (k: v: {
mode = "${toString v.width}x${toString v.height}@${v.rate}Hz";
pos = "${toString v.posX} ${toString v.posY}";
})
cfg.monitors;
modifier = "Mod4";
focus = {
followMouse = true;
wrapping = "workspace";
};
input = {
"*" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
};
fonts = {
names = ["JetBrains Mono"];
style = "Regular";
size = 8.0;
};
gaps = {
inner = 8;
outer = -10;
smartBorders = "on";
smartGaps = true;
};
bars = singleton {
command = "waybar";
position = "top";
};
window = {
hideEdgeBorders = "both";
titlebar = false;
border = 2;
};
floating = {
border = 0;
titlebar = false;
};
menu = "bemenu-run";
workspaceLayout = "tabbed";
colors = {
background = "#141414";
focused = {
border = "#444444";
background = "#000000";
text = "#eaeaea";
indicator = "#000000";
childBorder = "#000000";
};
focusedInactive = {
border = "#000000";
background = "#000000";
text = "#eaeaea";
indicator = "#000000";
childBorder = "#000000";
};
unfocused = {
border = "#000000";
background = "#000000";
text = "#eaeaea";
indicator = "#000000";
childBorder = "#000000";
};
urgent = {
border = "#ff6666";
background = "#ff6666";
text = "#eaeaea";
indicator = "#ff6666";
childBorder = "#ff6666";
};
placeholder = {
border = "#000000";
background = "#000000";
text = "#eaeaea";
indicator = "#000000";
childBorder = "#000000";
};
};
keybindings = let
mod = config.wayland.windowManager.sway.config.modifier;
grimshot = getExe pkgs.sway-contrib.grimshot;
bemenuCommand = ''bemenu-run --center --width-factor 0.2 --fixed-height --list 10 --scrollbar none --auto-select --accept-single --fn "JetBrains Mono 12" --prompt "" --tb "#000000" --tf "#EAEAEA" --fb "#000000" --ff "#EAEAEA" --cb "#EAEAEA" --cf "#000000" --nb "#000000" --nf "#EAEAEA" --sb "#000000" --sf "#EAEAEA" --hb "#000000" --hf "#EAEAEA" --fbb "#000000" --fbf "#000000" --ab "#000000" --af "#EAEAEA"'';
in
mkOptionDefault {
"${mod}+a" = "focus parent";
"${mod}+c" = "focus child";
"${mod}+d" = "exec ${bemenuCommand}";
"${mod}+l" = "exec ${getExe pkgs.gtklock} -d";
"${mod}+Return" = "exec ${lib.getExe pkgs.foot} ${lib.getExe pkgs.tmux}";
"${mod}+Shift+s" = "exec ${grimshot} copy area";
"${mod}+Shift+a" = "exec ${grimshot} copy output";
"${mod}+Tab" = "focus right";
"${mod}+Shift+Tab" = "focus left";
"${mod}+Shift+w" = "move workspace to output right";
};
startup = [
{
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";
always = true;
}
{
command = "${lib.getExe pkgs.networkmanagerapplet}";
}
];
};
extraSessionCommands = ''
export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
swaynag.enable = true;
systemd.enable = true;
xwayland = true;
};
};
}

View file

@ -0,0 +1,43 @@
{
config,
lib,
pkgs,
...
}:
with lib; {
gtk = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
theme = {
package = pkgs.materia-theme;
name = "Materia-dark";
};
gtk2.extraConfig = ''
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-menu-images=1
gtk-button-images=1
'';
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
home.sessionVariables = {
# Use gtk in jvm apps
_JAVA_OPTIONS = concatStringsSep " " [
"-Dawt.useSystemAAFontSettings=on"
"-Dswing.aatext=true"
"-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
"-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
];
};
}

182
home/modules/gui/waybar.nix Normal file
View file

@ -0,0 +1,182 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.gui;
in {
config = mkIf cfg.enable {
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 20;
spacing = 0;
modules-left = [
"sway/workspaces"
"sway/mode"
];
modules-center = [
"clock"
];
modules-right = [
"privacy"
"cpu"
"memory"
"disk"
"temperature"
"keyboard-state"
"tray"
];
"keyboard-state" = {
numlock = true;
capslock = true;
};
"tray" = {
icon-size = 13;
spacing = 8;
};
"clock" = {
interval = 60;
format = "{:%A %B %d %Y %H:%M}";
tooltip = false;
};
"cpu" = {
format = "cpu {usage}%";
tooltip = false;
};
"memory" = {
format = "mem {percentage}%";
tooltip = true;
tooltip-format = "{used}/{total}";
};
"disk" = {
format = "disk {specific_used:0.0f}/{specific_total:0.0f}";
unit = "GiB";
tooltip = false;
};
"privacy" = {
icon-size = 12;
};
};
};
style = ''
* {
font-family: "JetBrains Mono", monospace;
font-size: 12px;
font-weight: 500;
border: none;
box-shadow: none;
}
/* Entire bar: fully transparent, no border */
window#waybar {
background: transparent;
color: #eaeaea;
margin: 0;
padding: 0;
}
/* Optional: small edge breathing room (comment out if you want edge-to-edge) */
/* window#waybar { margin: 3px 6px 0 6px; } */
/* Module containers */
.modules-left, .modules-center, .modules-right {
padding: 0;
margin: 0 6px;
}
/* Subtle separators between modules (no boxes) */
.modules-left > widget:not(:first-child),
.modules-center > widget:not(:first-child),
.modules-right > widget:not(:first-child) {
margin-left: 12px;
padding-left: 12px;
border-left: 1px solid rgba(255, 255, 255, 0.08);
}
/* Tightest possible workspaces */
#workspaces { padding: 0; margin: 0; }
#workspaces button {
margin: 0;
padding: 0 3px;
min-width: 0;
border-radius: 0;
background: transparent;
color: #cfcfcf;
}
#workspaces button:hover {
background: rgba(255, 255, 255, 0.06);
}
#workspaces button.active,
#workspaces button.focused {
background: rgba(255, 255, 255, 0.10);
color: #ffffff;
box-shadow: inset 0 -2px #ffffff;
}
#workspaces button.urgent {
background: rgba(255, 80, 80, 0.25);
box-shadow: inset 0 -2px #ff5050;
}
/* Focused window title: single line, no glow */
#window {
padding: 0 6px;
margin: 0;
color: #dedede;
}
/* Sway mode indicator: visible only when active, no bloat */
#mode {
padding: 0 6px;
margin: 0;
background: rgba(255, 255, 255, 0.10);
color: #ffffff;
box-shadow: inset 0 -2px #ffffff;
}
/* Status modules keep them flat and compact */
#clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray {
padding: 0 6px;
margin: 0;
background: transparent;
color: #eaeaea;
}
/* States (battery, network, audio) */
#battery.charging { color: #c9ffbf; }
#battery.warning:not(.charging) { color: #ffd29a; }
#battery.critical:not(.charging) { color: #ff9a9a; }
#network.disconnected { color: #ffb4b4; }
#pulseaudio.muted { color: #9aa0a6; }
/* Tray: compress icons */
#tray > .passive { opacity: 0.6; }
#tray > .needs-attention { opacity: 1; }
/* Tooltips: clean and readable */
tooltip {
background: rgba(30, 30, 30, 0.95);
border: 1px solid rgba(255, 255, 255, 0.08);
color: #eaeaea;
padding: 6px 8px;
}
/* Remove any leftover borders around everything */
#custom-*, #idle_inhibitor, #privacy, #bluetooth {
border: none;
background: transparent;
margin: 0;
padding: 0 6px;
}
'';
};
};
}

19
home/modules/mapping.nix Normal file
View file

@ -0,0 +1,19 @@
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.local.apps.mapping;
in {
options.local.apps.mapping = {
enable = mkEnableOption "mapping apps";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
qgis
openorienteering-mapper
];
};
}

51
home/modules/neovim.nix Normal file
View file

@ -0,0 +1,51 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.apps.neovim;
in {
options.local.apps.neovim = {
enable = mkEnableOption "Neovim settings";
};
config = mkIf cfg.enable {
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
extraConfig = ''
set nobackup
set showmatch " show matching
set hlsearch " highlight search
set incsearch " incremental search
set tabstop=4 " number of columns occupied by a tab
set softtabstop=4 " see multiple spaces as tabstops so <BS> does the right thing
set shiftwidth=4 " width for autoindents
set autoindent " indent a new line the same amount as the line just typed
set number " add line numbers
set wildmode=longest,list " get bash-like tab completions
set cc=80 " set an 80 column border for good coding style
filetype plugin indent on " allow auto-indenting depending on file type
syntax on " syntax highlighting
set mouse=a " enable mouse click
set clipboard=unnamedplus " using system clipboard
filetype plugin on
set cursorline " highlight current cursorline
set ttyfast " Speed up scrolling in Vim
set noswapfile " disable creating swap file
'';
plugins = with pkgs.vimPlugins; [
vim-nix
vim-visual-multi
];
};
home.sessionVariables = {
"EDITOR" = mkForce "neovim";
};
};
}

View file

@ -0,0 +1,20 @@
{
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;
};
};
}

117
home/modules/terminal.nix Normal file
View file

@ -0,0 +1,117 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.apps.terminal;
in {
options.local.apps.terminal.enable = mkEnableOption "terminal emulator settings";
config = mkIf cfg.enable {
programs = {
foot = {
enable = true;
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";
dpi-aware = "yes";
initial-window-size-pixels = "1200x600";
};
cursor = {
style = "block";
blink = "yes";
};
colors = {
background = "000000";
regular0 = "616161";
regular1 = "ff4d51";
regular2 = "35d450";
regular3 = "e9e836";
regular4 = "5dc5f8";
regular5 = "feabf2";
regular6 = "24dfc4";
regular7 = "ffffff";
};
bell = {
system = "no";
urgent = "no";
notify = "no";
visual = "no";
command-focused = "no";
};
mouse = {
hide-when-typing = "no";
};
key-bindings = {
clipboard-copy = "Control+Shift+c";
clipboard-paste = "Control+Shift+v";
font-increase = "Control+Shift+equal";
font-decrease = "Control+Shift+minus";
font-reset = "Control+Shift+BackSpace";
};
mouse-bindings = {
scrollback-up-mouse = "BTN_WHEEL_BACK";
scrollback-down-mouse = "BTN_WHEEL_FORWARD";
font-increase = "Control+BTN_WHEEL_BACK";
font-decrease = "Control+BTN_WHEEL_FORWARD";
select-begin = "BTN_LEFT";
select-begin-block = "Control+BTN_LEFT";
select-extend = "BTN_RIGHT";
select-extend-character-wise = "Control+BTN_RIGHT";
select-word = "BTN_LEFT-2";
select-word-whitespace = "Control+BTN_LEFT-2";
select-quote = " BTN_LEFT-3";
select-row = "BTN_LEFT-4";
};
};
};
tmux = {
enable = true;
aggressiveResize = true;
clock24 = true;
escapeTime = 10;
terminal = "xterm-256color";
keyMode = "emacs";
mouse = true;
extraConfig = ''
set -ga update-environment " LIFT_PID"
set -g set-titles on
set -g renumber-windows on
set -sa terminal-overrides ',xterm-termite:RGB'
set -g status-style bg=default,fg=colour250
set -g pane-border-style fg=colour236
set -g pane-active-border-style fg=colour240
set -g window-status-format " #I:#W "
set -g window-status-style bg=default,fg=colour244
set -g window-status-current-format " #I:#W "
set -g window-status-current-style bg=colour236,fg=white,bold
set -g status-position bottom
set -g status-left-length 20
set -g status-right-length 60
set -g status-left ""
set -g window-status-separator ""
set -g status-justify left
'';
};
};
home = {
sessionVariables = {
"TERMINAL" = "foot";
};
};
};
}

20
home/modules/yubikey.nix Normal file
View file

@ -0,0 +1,20 @@
{
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
];
};
}

93
home/modules/zed.nix Normal file
View file

@ -0,0 +1,93 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.apps.zed;
in {
options.local.apps.zed.enable = mkEnableOption "zed editor settings";
config = mkIf cfg.enable {
programs.zed-editor = {
enable = true;
extensions = [
"nix"
"codebook"
"vscode-dark-high-contrast"
"catppuccin-icons"
];
extraPackages = with pkgs; [
nixd
];
userSettings = {
disable_ai = true;
theme = {
dark = "VSCode Dark High Contrast";
light = "VSCode Dark High Contrast";
};
icon_theme = {
dark = "Catppuccin Latte";
light = "Catppuccin Latte";
};
file_icons = true;
rulers = [80 120];
preferred_line_length = 120;
scroll_past_end = true;
cursor = {
blink_interval = 600;
smooth_scroll = true;
};
autosave = "on_focus_change";
auto_update = false;
buffer_font_family = "JetBrains Mono";
buffer_font_size = 22;
hide_mouse = "never";
minimap.show = "auto";
tabs = {
file_icons = true;
git_status = true;
activate_on_close = "neighbour";
show_close_button = "always";
};
toolbar = {
breadcrumbs = true;
quick_actions = true;
selections_menu = true;
agent_review = false;
code_actions = false;
};
format_on_save = "off";
use_autoclose = false;
git = {
git_gutter = "tracked_files";
inline_blame = {
enabled = true;
delay_ms = 5000;
};
};
indent_guides = {
enabled = true;
line_width = 1;
active_line_width = 1;
coloring = "fixed";
background_coloring = "disabled";
};
hour_format = "hour24";
remove_trailing_whitespace_on_save = false;
use_smartcase_search = true;
soft_wrap = "editor_width";
tab_size = 2;
telemetry = {
diagnostics = false;
metrics = false;
};
auto_fold_dirs = false;
scrollbar = {
show = "always";
};
unnecessary_code_fade = 0.0;
};
};
};
}

View file

@ -0,0 +1,34 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.services.zsh;
in {
options.local.services.zsh = {
enable = mkEnableOption "zsh settings";
prompt = mkOption {
type = types.str;
description = "prompt for your terminal";
example = literalExpression "%B[%~] \${vcs_info_msg_0_}%b";
};
};
config = mkIf cfg.enable {
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
history = {
append = true;
expireDuplicatesFirst = true;
ignoreAllDups = true;
ignoreSpace = true;
};
initContent = import ./zshrc.nix {inherit config lib pkgs;};
};
};
}

130
home/modules/zsh/zshrc.nix Normal file
View file

@ -0,0 +1,130 @@
{
config,
lib,
pkgs,
}: ''
# The following lines were added by compinstall
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' expand prefix suffix
zstyle ':completion:*' ignore-parents parent
zstyle ':completion:*' insert-unambiguous true
zstyle ':completion:*' list-colors ""
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' list-suffixes true
zstyle ':completion:*' matcher-list "" 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=** l:|=*'
zstyle ':completion:*' menu select=1
zstyle ':completion:*' original true
zstyle ':completion:*' preserve-prefix '//[^/]##/'
zstyle ':completion:*' verbose true
zstyle :compinstall filename '/home/fabian/.zshrc'
autoload -Uz compinit
compinit
# End of lines added by compinstall
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt autocd extendedglob nomatch
unsetopt beep notify
bindkey -v
# End of lines configured by zsh-newuser-install
# Prompt
setopt prompt_subst
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
zstyle ':vcs_info:*' disable bzr cdv darcs mtn svk tla cvs svn
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:git+set-message:*' hooks format_msg
function +vi-format_msg {
local branch=$(git branch --show-current)
if [[ -z "$branch" ]] ; then
branch=$(git rev-parse --short HEAD)
fi
local color=""
if [[ -z $(git status --porcelain 2>/dev/null) ]];
then
color="%F{blue}"
fi
if [[ $(git status --porcelain 2>/dev/null | grep "^A \|^M " | wc -l) > 0 ]];
then
color="%F{green}"
fi
if [[ $(git status --porcelain 2>/dev/null | grep "^??\|^AM\|^.D" | wc -l) > 0 ]]
then
color="%F{red}"
fi
ret=1
hook_com[message]="$color($branch)%f "
return 0
}
PROMPT='${config.local.services.zsh.prompt}'
# Aliases and binds
alias ls='ls --color -F'
alias l='ls --color -FhAltr'
alias x='killall --ignore-case --user=$(whoami) --interactive'
alias tree='tree -CF'
alias nixoide="nix repl '<nixpkgs>'"
alias vps="ssh -A vps"
bindkey -e
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
bindkey "\e[3~" delete-char
function use() {
local pkg
pkg="$1"
shift
echo "nix shell nixpkgs#$pkg"
nix shell "nixpkgs#$pkg" "$@"
}
function unuse() {
local pkg
pkg="$1"
shift
echo "nix shell nixpkgs#$pkg --impure"
nix shell "nixpkgs#$pkg" "$@" --impure
}
function spawn () {
if [ ! -x "$(command -v $1)" ]
then
echo "spawn: no such program: $1" >&2
return 1
fi
$@ > /dev/null 0>&1 2>&1 &
disown
}
autoload -Uz up-line-or-beginning-search
zle -N up-line-or-beginning-search
autoload -Uz down-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey '\eOA' up-line-or-beginning-search
bindkey '\e[A' up-line-or-beginning-search
bindkey '\eOB' down-line-or-beginning-search
bindkey '\e[B' down-line-or-beginning-search
# Env
export TERM=xterm-256color
export EDITOR=nvim
export VISUAL=nvim
export PATH="$PATH:$HOME/.local/bin:$HOME/.cargo/bin"
export NIXPKGS_ALLOW_UNFREE=1
''

View file

@ -0,0 +1,93 @@
{
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;
deepState.enable = true;
gpg = {
enable = true;
defaultKey = "A8981D346F8F4130CA16A7775517E687FCCE0BB9";
};
syncthing.enable = true;
};
apps = {
#todo move some of this to defaultDesktop pack?
terminal.enable = true;
neovim.enable = true;
gaming.enable = true;
yubikey.enable = true;
defaultDesktopPack.enable = true;
firefox.enable = true;
mapping.enable = true;
zed.enable = true;
};
gui = {
enable = true;
monitors = {
DP-1 = {
width = "1920";
height = "1080";
rate = "59.94";
};
DP-2 = {
width = "1920";
height = "1080";
rate = "143.855";
posX = "1920";
};
};
};
};
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";
};
programs.home-manager.enable = true;
}

View file

@ -0,0 +1,22 @@
{
pkgs,
config,
lib,
...
}:
with lib; {
home.isolation = {
enable = true;
btrfsSupport = true;
defaults = {
static = true;
bindHome = "home/";
persist = {
base = "shenvs";
btrfs = true;
};
};
modulesUnder = ./shenvs;
};
}

View file

@ -0,0 +1,13 @@
{pkgs, ...}: {
static = true;
packages = with pkgs; [
binutils
cmake
curl
gdb
gnumake
rustup
valgrind
];
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}: {
static = true;
packages = with pkgs; [
pipenv
(python310.withPackages (packages:
with packages; [
setuptools
]))
];
}

View file

@ -0,0 +1,10 @@
{
lib,
pkgs,
...
}:
with lib; {
systemd.user.tmpfiles.rules = [
"d %t/tmp 0700 fabian fabian 24h"
];
}

View file

@ -0,0 +1,68 @@
{
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;
}

View file

@ -0,0 +1,22 @@
{
pkgs,
config,
lib,
...
}:
with lib; {
home.isolation = {
enable = true;
btrfsSupport = true;
defaults = {
static = true;
bindHome = "home/";
persist = {
base = "shenvs";
btrfs = true;
};
};
modulesUnder = ./shenvs;
};
}

View file

@ -0,0 +1,13 @@
{pkgs, ...}: {
static = true;
packages = with pkgs; [
binutils
cmake
curl
gdb
gnumake
rustup
valgrind
];
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}: {
static = true;
packages = with pkgs; [
pipenv
(python310.withPackages (packages:
with packages; [
setuptools
]))
];
}

View file

@ -0,0 +1,10 @@
{
lib,
pkgs,
...
}:
with lib; {
systemd.user.tmpfiles.rules = [
"d %t/tmp 0700 fabian fabian 24h"
];
}

View file

@ -0,0 +1,44 @@
{
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 Normal file
View file

@ -0,0 +1,2 @@
!**/.keep
result

17
homepage/default.nix Normal file
View file

@ -0,0 +1,17 @@
{
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 Normal file
View file

@ -0,0 +1,58 @@
{
"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
}

21
homepage/flake.nix Normal file
View file

@ -0,0 +1,21 @@
{
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 Normal file
View file

@ -0,0 +1 @@
public/*

View file

@ -0,0 +1,32 @@
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},
]

View file

@ -0,0 +1,2 @@
+++
+++

View file

@ -0,0 +1,8 @@
+++
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)

View file

@ -0,0 +1,12 @@
+++
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.

View file

@ -0,0 +1,5 @@
+++
title = "blog posts"
template = "blog_index.html"
paginate_by = 10
+++

View file

@ -0,0 +1,137 @@
+++
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.

View file

@ -0,0 +1,318 @@
+++
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 DiffieHellman (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 DiffieHellman (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.

View file

@ -0,0 +1,194 @@
+++
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

View file

@ -0,0 +1,34 @@
+++
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>

View file

@ -0,0 +1,9 @@
+++
title = "lib"
+++
[safire memo](@/lib/safire_memo.md)&ensp;&ensp;
[two hard things](@/lib/two_hard_things.md)&ensp;&ensp;
[visual thinking](@/lib/visual_thinking.md)&ensp;&ensp;
[be methodical](@/lib/be_methodical.md)&ensp;&ensp;
[digital gardening](https://git.posixlycorrect.com/fabian/digital-gardeners)&ensp;&ensp;

View file

@ -0,0 +1,25 @@
+++
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.
![La Tertulia](../../art_collection/la_tertulia1.jpg)
![La Tertulia](../../art_collection/la_tertulia2.jpg)
This is how I framed it:
![La Tertulia](../../art_collection/la_tertulia3.jpg)
This piece has a "sister" which I gifted to my father. It's called "Caribe":
![Caribe](../../art_collection/caribe.jpg)

View file

@ -0,0 +1,17 @@
+++
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
```

View file

@ -0,0 +1,76 @@
+++
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>

View file

@ -0,0 +1,54 @@
+++
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.
```

View file

@ -0,0 +1,10 @@
+++
title = "two hard things in Computer Science"
+++
```txt
There are only two hard things in Computer Science: cache invalidation and
naming things.
-- Phil Karlton
```

View file

@ -0,0 +1,21 @@
+++
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.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,45 @@
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.

View file

@ -0,0 +1,48 @@
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.

View file

@ -0,0 +1,91 @@
# 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&nbsp;<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"

View file

@ -0,0 +1,4 @@
+++
paginate_by = 2
sort_by = "date"
+++

View file

@ -0,0 +1,26 @@
+++
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.

View file

@ -0,0 +1,19 @@
+++
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.

View file

@ -0,0 +1,19 @@
+++
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.

View file

@ -0,0 +1,3 @@
+++
render = false
+++

View file

@ -0,0 +1,6 @@
+++
title = "About Me"
path = "about"
+++
Hello, World!

View file

@ -0,0 +1,5 @@
+++
title = "Archive"
path = "archive"
template = "archive.html"
+++

View file

@ -0,0 +1,101 @@
+++
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") }}

View file

@ -0,0 +1,19 @@
+++
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.

View file

@ -0,0 +1,92 @@
.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;
}
}

View file

@ -0,0 +1,5 @@
:root {
--background: #131a21;
--color: #A9B7C6;
}

View file

@ -0,0 +1,3 @@
:root {
--background: #222129;
}

View file

@ -0,0 +1,9 @@
: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);
}

View file

@ -0,0 +1,34 @@
/*!
* 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;
}

View file

@ -0,0 +1,33 @@
/*!
* 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;
}

View file

@ -0,0 +1,64 @@
@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;
}
}
}

View file

@ -0,0 +1,78 @@
@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;
}
}
}
}
}

View file

@ -0,0 +1,8 @@
.logo {
display: flex;
align-items: center;
text-decoration: none;
background: var(--accent);
color: black;
padding: 5px 10px;
}

View file

@ -0,0 +1,248 @@
@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;
}

View file

@ -0,0 +1,77 @@
@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;
}
}

View file

@ -0,0 +1,135 @@
@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;
}
}

View file

@ -0,0 +1,8 @@
@import 'buttons';
@import 'header';
@import 'logo';
@import 'main';
@import 'post';
@import 'pagination';
@import 'footer';

View file

@ -0,0 +1,2 @@
$phone-max-width: 683px;
$tablet-max-width: 899px;

Some files were not shown because too many files have changed in this diff Show more