Compare commits

...

123 commits

Author SHA1 Message Date
c7a09c5a23
vanadium: rename networking.wireless.userControlled.enable to networking.wireless.userControlled 2026-01-29 23:26:32 +01:00
8e201d91f5
nixos: use upstream xscreensaver module 2026-01-29 23:26:32 +01:00
496f2f1f46
npins: bump to master 2026-01-29 23:26:31 +01:00
7ff36d8926
home/{firefox,zen-browser}: don't always underline links
This is actually very noisy in GitHub
2026-01-29 22:48:48 +01:00
29004da42a
home/{firefox,zen-browser}: add sensible configurations 2026-01-29 17:19:44 +01:00
e78c2841d4
home/lazygit: update lazygit config due to a breaking change 2026-01-29 17:19:44 +01:00
ea3571e226
chore: run nixfmt tree-wide 2026-01-29 17:19:39 +01:00
760774d053
home/{zen-browser,firefox}: refactor 2026-01-29 15:59:23 +01:00
ae75bd7483
home/{zen-browser,firefox}: don't always use new windows
It's actually annoying
2026-01-29 15:43:35 +01:00
80d3a7234e
nvim/lsp: enable zls 2026-01-29 15:39:40 +01:00
2f4b5e59fe
nixos/system-nixconf: disable prompt to accept-flake-config 2026-01-29 15:22:28 +01:00
f8aae6bd65
vanadium: add ghostty substituter 2026-01-29 15:06:13 +01:00
2dd8b24a33
Revert "home/fish: remove fd"
fd is needed by fish.fzf, when `cat`ting current directory.

This reverts commit a9a85f16a4.
2026-01-27 11:43:03 +01:00
e645fcebfe
packages/tmux-sessionizer: add fd as dependency 2026-01-26 22:19:17 +01:00
64921628a8
home/ghostty: hide cursor when typing 2026-01-26 22:19:16 +01:00
a9a85f16a4
home/fish: remove fd 2026-01-26 22:19:16 +01:00
94e3d872f0
home/fish: use home-manager to configure vivid 2026-01-26 22:19:16 +01:00
08b934cf21
{default,shell}.nix: remove sources from arguments 2026-01-26 21:08:18 +01:00
b9093075f9
vanadium/zen-browser: +addons.shinigami-eyes 2026-01-26 16:10:18 +01:00
6c178a152d
Revert "vanadium/firefox: -addons.shinigami-eyes"
This reverts commit e537aebd15.
2026-01-26 16:07:13 +01:00
b55accdd01
Reapply "vanadium/connectivity: block youtube for a while"
This reverts commit a1d4740d26.
2026-01-26 10:37:47 +01:00
43fd967b78
Revert "vanadium/connectivity: remove instagram ban"
This reverts commit 2e6aa202e6.
2026-01-26 10:37:22 +01:00
edf313dfb3
overlays/iosevka: useless refactor 2026-01-25 22:39:53 +01:00
cc9a1be62f
npins/cornelis: use 2.7.1 due to agda's interface change 2026-01-25 22:01:36 +01:00
e538cf1fdf
nvim/agda: document how to find new symbols 2026-01-25 15:24:17 +01:00
d2ebdb0073
nvim/agda: add bindings for PFLA chapter "Induction" 2026-01-25 14:43:13 +01:00
16dfce7e6e
nvim: move out cornelis autocommands to avoid duplication 2026-01-25 11:49:00 +01:00
e63978da7f
vanadium: include config to disable useless nixos scripts 2026-01-24 23:11:00 +01:00
4514493746
nixos/lean-nixos: init 2026-01-24 23:10:48 +01:00
2a9804f87f
move zbar to shared home module
I only used it for otp code scanning anyway
2026-01-24 22:51:45 +01:00
934038691d
vanadium: -minder 2026-01-24 22:50:26 +01:00
5ffb48d5cd
vanadium: -tuba -telegram-desktop 2026-01-24 22:49:43 +01:00
a1a918193a
nvim/ftplugin: agda support 2026-01-24 22:24:56 +01:00
9c6bfa1058
overlays/ghostty-dev: patch version when using npins 2026-01-24 14:59:30 +01:00
643d736942
npins: update sources 2026-01-24 00:15:18 +01:00
69c07154c9
nvim: +cornelis 2026-01-23 23:17:30 +01:00
46447d8a02
vanadium: +cornelis 2026-01-23 23:14:07 +01:00
f8658bc793
overlays/cornelis: init 2026-01-23 23:13:59 +01:00
5045521db5
overlays/iosevka: enable brst and markdown-checkboxes 2026-01-23 20:21:26 +01:00
bd8bd280ea
overlays/iosevka: make regular and medium thicker 2026-01-23 20:21:26 +01:00
26acc21d31
vanadium: use iosevka default
It seems like I like the original the most <3
2026-01-23 19:06:36 +01:00
352be82869
Revert "vanadium: switch to IBM Plex Mono font"
This reverts commit 0ad8a3c659.
2026-01-23 17:43:32 +01:00
0ad8a3c659
vanadium: switch to IBM Plex Mono font 2026-01-23 17:05:58 +01:00
8bd410c116
vanadium: switch to ubuntu mono font
find . -type f -not -path .git -exec sed -i "s/PTMono/UbuntuMono/g" {} +
2026-01-23 17:03:04 +01:00
ad6669d42f
vanadium/xmonad: correct dmenu font configuration 2026-01-23 10:29:01 +01:00
ae75eae20f
vanadium: implement conditional fontsize in fontconfig 2026-01-23 10:27:20 +01:00
e08afde62f
overlays/iosevka: build default weight 2026-01-23 10:27:20 +01:00
51d27a224a
overlays/iosevka: document why custom built iosekva is thick 2026-01-23 10:21:29 +01:00
8cb87dff9b
vanadium: rename usages of iosevka font 2026-01-23 10:21:29 +01:00
bc67b4226f
overlays/iosevka: refactor family name in spacing overlay 2026-01-23 10:21:29 +01:00
9230f7b378
vanadium: use new iosevka pt mono
vanadium/xmonad: fix dmenu font oddity

home/ghostty: fix fontname
2026-01-23 01:34:44 +01:00
d93813d04e
vanadium/remote-builders: build more at once on hetzner 2026-01-23 01:34:43 +01:00
f2bd846e22
overlays/iosevka: refactor
iosevka overlay now uses iosevka config build plans in extesible forms!
2026-01-23 00:41:41 +01:00
acab4af809
vanadium: blahaj boot animation 2026-01-22 17:46:33 +01:00
4260ebfda0
packages/ai_blocklist: add PR as patches 2026-01-22 16:50:35 +01:00
aed2fed5a9
nvim/telescope: sort buffer picker 2026-01-22 16:28:44 +01:00
4932575819
packages/ruler: update 2026-01-21 10:54:43 +01:00
5b4c35df1c
vanadium: -chromium 2026-01-20 21:18:12 +01:00
2d6ead2145
npins: update sources 2026-01-20 18:39:15 +01:00
7e65f2d093
overlays/iosevka-term: don't slant # 2026-01-20 18:38:53 +01:00
1c8df62dfe
vanadium: update wallpaper 2026-01-20 15:55:25 +01:00
f772e03821
home/starship: drop min time to 2 seconds 2026-01-20 15:28:33 +01:00
9c728011be
networks: simplify documented command 2026-01-20 09:43:33 +01:00
3133e11a96
fish: wrap ls command 2026-01-18 22:24:42 +01:00
0a34f6cc7d
vanadium: +lsr 2026-01-18 22:23:31 +01:00
963b1afacd
Revert "home/btop: disable io mode for disks"
This reverts commit c33bef854b.
2026-01-18 18:24:12 +01:00
8eb2603a8f
vanadium/overlay: patch btop waiting for upstream response
Related to: https://github.com/NixOS/nixpkgs/issues/481249
2026-01-18 18:24:12 +01:00
98125368d3
home/fish: specify --command $SHELL in alias 2026-01-18 14:35:57 +01:00
0798147e92
home/fish: wrap "nix {build,shell}" with nom if possible 2026-01-18 01:05:15 +01:00
3acb95f745
hetzner_benchmark: update {min,max}-free with a formula 2026-01-18 00:10:07 +01:00
c43cd8b595
vanadium: update {min,max}-free with a formula 2026-01-18 00:08:19 +01:00
294868e522
vanadium: configure remote builders 2026-01-18 00:04:45 +01:00
fd5e046406
home/gpg: reduce trust of other people 2026-01-17 21:53:35 +01:00
6ae3f6932d
home/gpg: remove duplicated key 2026-01-17 21:48:57 +01:00
b15abf8bdb
Revert "home/git: disable git-lfs"
This reverts commit fdc88e415f.
2026-01-17 19:42:13 +01:00
87cb944464
npins: update sources 2026-01-17 18:48:28 +01:00
e5c88e5910
vanadium: +helix 2026-01-16 22:39:16 +01:00
ec4d17cf83
packages/ruler: update 2026-01-16 16:20:57 +01:00
bab66207cc
packages/overlay: fix iosevka-term rename 2026-01-16 16:18:32 +01:00
261ffa3ff1
nvim/leap: fix plugin binding 2026-01-16 12:18:57 +01:00
a12fabd33d
Revert "vanadium/overlay: remove xclip patch"
The crashing bug can still be sometimes triggered.
Let's keep using this branch for now.
2026-01-16 09:56:04 +01:00
bcd45dddf5
overlays/iosevka-term: trace useful message and override iosevka package 2026-01-16 09:49:22 +01:00
a3c02415f8
treewide: remove core and job count configuration 2026-01-16 00:36:36 +01:00
5a296c6e97
overlays/iosevka-term: always build iosevka term 2026-01-16 00:35:40 +01:00
810a395610
tree-wide: remove nix-monitored on headless hosts 2026-01-15 21:41:52 +01:00
3d91894fbb
overlays/pin-wireshark: drop 2026-01-15 21:35:46 +01:00
23ec902deb
overlays/pin-isabelle-2023: drop 2026-01-15 21:35:36 +01:00
a8e5776854
vanadium: remove fcitx5-table-extra patch 2026-01-15 21:34:17 +01:00
daf4d2901e
overlays/pin-emacs28: drop
I suspect that agda toolchain has moved on and I can use a newer emacs
2026-01-15 21:33:50 +01:00
085442e442
vanadium/overlay: remove xclip patch
Revert this if the error persists.
2026-01-15 21:32:17 +01:00
d2617493e8
npins: restore asFlake patch 2026-01-15 21:30:49 +01:00
627888c13f
npins: upgrade 2026-01-15 21:26:36 +01:00
4af7f74bdf
overlays/eepy: drop 2026-01-15 21:17:57 +01:00
8587f2258b
overlays/calibre-no-mime: drop 2026-01-15 21:16:13 +01:00
1c73168fdc
npins: add npins 2026-01-15 21:15:40 +01:00
a70b9db0c7
Reapply "nvim: remove relative number"
This reverts commit 92a20d36b6.
2026-01-12 23:23:42 +01:00
10da2954b7
npins: update sources 2026-01-11 16:01:20 +01:00
e47ae2d648
overlays/dix: drop 2026-01-11 15:44:47 +01:00
cdfe147f81
npins: drop dix 2026-01-11 15:30:38 +01:00
157bbd8f7d
tree-wide: drop kitty configuration 2026-01-11 15:25:50 +01:00
36367bdfaf
vanadium/home: clean up packages 2026-01-11 15:25:19 +01:00
ba80b161b8
fish: add nom as a script dependency 2026-01-11 15:22:44 +01:00
5751f70d5e
vanadium/home: clean up nix packages 2026-01-11 15:22:38 +01:00
4b12e279e0
vanadium/xmonad: ungrab cursor when making selection 2026-01-10 23:14:55 +01:00
7c335b264f
vanadium/xmonad: copyToAll 2026-01-10 23:12:33 +01:00
c0e0dbe9b9
vanadium/xmonad: remove 2d nagivation 2026-01-10 23:02:09 +01:00
d6417797db
packages/mullvad-status: show red when no internet 2026-01-10 22:40:48 +01:00
6470614a33
vanadium/xmobar: remove hrt-time 2026-01-10 22:32:53 +01:00
c2c7fd2b37
vanadium/xmobar: clean up events 2026-01-10 22:32:27 +01:00
62f81c84c5
vanadium/xmobar: mullvad-status 2026-01-10 22:32:25 +01:00
e3b843e00d
packages/mullvad-status: init 2026-01-10 22:28:56 +01:00
9e33750fd9
packages/tokei: drop
upstream has 14.0.0
2026-01-10 18:12:19 +01:00
ff476b5c66
vanadium/home: +hs-speedscope 2026-01-10 10:04:53 +01:00
40754f9b6a
packages/hs-speedscope: init 2026-01-10 10:00:17 +01:00
c23aad611a
vanadium/xmonad: different height 2026-01-09 23:47:09 +01:00
9426f74fce
home/fish: wrap nix-.* calls with "command" in alias functions 2026-01-09 12:09:22 +01:00
4728a44721
home/fish: remove clubbering nix-shell alias 2026-01-08 18:29:24 +01:00
c33bef854b
home/btop: disable io mode for disks
This doesn't seem to have an effect when using btrfs. I'd rather see the
disk usage.
2026-01-08 14:12:00 +01:00
92a20d36b6
Revert "nvim: remove relative number"
This reverts commit 563a66ff8e.
2026-01-08 13:42:37 +01:00
2d17c2c145
vanadium/xmonad: fix off by one if condition 2026-01-07 16:03:57 +01:00
245da500a0
vanadium: enable printer 2026-01-07 14:53:06 +01:00
088c6b31a5
vanadium/xmonad: remove floating window from the count 2026-01-07 14:09:47 +01:00
040afef280
vanadium/xmonad: return Nothing if the layout is not changed 2026-01-07 14:09:45 +01:00
72 changed files with 1151 additions and 764 deletions

View file

@ -0,0 +1,176 @@
" Sourced from
" https://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.VIMEditing#:~:text=agda%2Dutf8%2Evim
" (Link is dead so use wayback machine)
" To add more
" https://www.compart.com/en/unicode/
" Superscripts
imap <buffer> \^0
imap <buffer> \^1 ¹
imap <buffer> \^2 ²
imap <buffer> \^3 ³
imap <buffer> \^4
imap <buffer> \^5
imap <buffer> \^6
imap <buffer> \^7
imap <buffer> \^8
imap <buffer> \^9
imap <buffer> \^+
imap <buffer> \^-
imap <buffer> \^=
imap <buffer> \^(
imap <buffer> \^)
imap <buffer> \^n
imap <buffer> \^l ˡ
imap <buffer> \^r ʳ
imap <buffer> \'
imap <buffer> \''
imap <buffer> \''' ‴
imap <buffer> \''''
" Subscripts
imap <buffer> \_0
imap <buffer> \_1
imap <buffer> \_2
imap <buffer> \_3
imap <buffer> \_4
imap <buffer> \_5
imap <buffer> \_6
imap <buffer> \_7
imap <buffer> \_8
imap <buffer> \_9
imap <buffer> \_+
imap <buffer> \_-
imap <buffer> \_=
imap <buffer> \_(
imap <buffer> \_)
" Arrows
imap <buffer> ->
imap <buffer> <--
imap <buffer> <-->
imap <buffer> ==>
imap <buffer> <==
imap <buffer> <==>
"
" Symbols from mathematics and logic, LaTeX style
imap <buffer> \forall
imap <buffer> \exists
imap <buffer> \in
imap <buffer> \ni
imap <buffer> \empty
imap <buffer> \prod
imap <buffer> \sum
imap <buffer> \le
imap <buffer> \ge
imap <buffer> \pm ±
imap <buffer> \subset
imap <buffer> \subseteq
imap <buffer> \supset
imap <buffer> \supseteq
imap <buffer> \setminus
imap <buffer> \cap
imap <buffer> \cup
imap <buffer> \int
imap <buffer> \therefore
imap <buffer> \qed
imap <buffer> \1 𝟙
imap <buffer> \N
imap <buffer> \Z
imap <buffer> \C
imap <buffer> \Q
imap <buffer> \R
imap <buffer> \E 𝔼
imap <buffer> \F 𝔽
imap <buffer> \to
imap <buffer> \mapsto
imap <buffer> \infty
imap <buffer> \equiv
imap <buffer> \cong
imap <buffer> \:=
imap <buffer> \=: ≕
imap <buffer> \ne
imap <buffer> \approx
imap <buffer> \perp
imap <buffer> \not ̷
imap <buffer> \ldots
imap <buffer> \cdots
imap <buffer> \cdot
imap <buffer> \circ
imap <buffer> \times ×
imap <buffer> \oplus
imap <buffer> \langle
imap <buffer> \rangle
" Math
imap <buffer> \monus
" Greek alphabet...
imap <buffer> \alpha α
imap <buffer> \beta β
imap <buffer> \gamma γ
imap <buffer> \delta δ
imap <buffer> \epsilon ε
imap <buffer> \zeta ζ
imap <buffer> \nu η
imap <buffer> \theta θ
imap <buffer> \iota ι
imap <buffer> \kappa κ
imap <buffer> \lambda λ
imap <buffer> \mu μ
imap <buffer> \nu ν
imap <buffer> \xi ξ
imap <buffer> \omicron ο
imap <buffer> \pi π
imap <buffer> \rho ρ
imap <buffer> \stigma ς
imap <buffer> \sigma σ
imap <buffer> \tau τ
imap <buffer> \upsilon υ
imap <buffer> \phi ϕ
imap <buffer> \varphi φ
imap <buffer> \chi χ
imap <buffer> \psi ψ
imap <buffer> \omega ω
imap <buffer> \Alpha Α
imap <buffer> \Beta Β
imap <buffer> \Gamma Γ
imap <buffer> \Delta Δ
imap <buffer> \Epsilon Ε
imap <buffer> \Zeta Ζ
imap <buffer> \Nu Η
imap <buffer> \Theta Θ
imap <buffer> \Iota Ι
imap <buffer> \Kappa Κ
imap <buffer> \Lambda Λ
imap <buffer> \Mu Μ
imap <buffer> \Nu Ν
imap <buffer> \Xi Ξ
imap <buffer> \Omicron Ο
imap <buffer> \Pi Π
imap <buffer> \Rho Ρ
imap <buffer> \Sigma Σ
imap <buffer> \Tau Τ
imap <buffer> \Upsilon Υ
imap <buffer> \Phi Φ
imap <buffer> \Chi Χ
imap <buffer> \Psi Ψ
imap <buffer> \Omega Ω
" default cornelis mapping
nnoremap <buffer> <leader>l :CornelisLoad<CR>
nnoremap <buffer> <leader>r :CornelisRefine<CR>
nnoremap <buffer> <leader>d :CornelisMakeCase<CR>
nnoremap <buffer> <leader>, :CornelisTypeContext<CR>
nnoremap <buffer> <leader>. :CornelisTypeContextInfer<CR>
nnoremap <buffer> <leader>n :CornelisSolve<CR>
nnoremap <buffer> <leader>a :CornelisAuto<CR>
nnoremap <buffer> gd :CornelisGoToDefinition<CR>
nnoremap <buffer> [/ :CornelisPrevGoal<CR>
nnoremap <buffer> ]/ :CornelisNextGoal<CR>
nnoremap <buffer> <C-A> :CornelisInc<CR>
nnoremap <buffer> <C-X> :CornelisDec<CR>

View file

@ -0,0 +1 @@
.config/nvim/ftplugin/agda.vim

View file

@ -7,6 +7,7 @@
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" }, "cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"cornelis": { "branch": "master", "commit": "deda7eb399efe94cc49c645da7b6f94780fe0c19" },
"fidget.nvim": { "branch": "main", "commit": "64463022a1f2ff1318ab22a2ea4125ed9313a483" }, "fidget.nvim": { "branch": "main", "commit": "64463022a1f2ff1318ab22a2ea4125ed9313a483" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "130beacf8a51f00aede9c31064c749136679a321" }, "gitsigns.nvim": { "branch": "main", "commit": "130beacf8a51f00aede9c31064c749136679a321" },
@ -21,6 +22,7 @@
"nvim-cmp": { "branch": "main", "commit": "d97d85e01339f01b842e6ec1502f639b080cb0fc" }, "nvim-cmp": { "branch": "main", "commit": "d97d85e01339f01b842e6ec1502f639b080cb0fc" },
"nvim-colorizer.lua": { "branch": "master", "commit": "81e676d3203c9eb6e4c0ccf1eba1679296ef923f" }, "nvim-colorizer.lua": { "branch": "master", "commit": "81e676d3203c9eb6e4c0ccf1eba1679296ef923f" },
"nvim-dap": { "branch": "master", "commit": "818cd8787a77a97703eb1d9090543a374f79a9ac" }, "nvim-dap": { "branch": "master", "commit": "818cd8787a77a97703eb1d9090543a374f79a9ac" },
"nvim-hs.vim": { "branch": "develop", "commit": "d4a6b7278ae6a1fdc64e300c3ebc1e24719af342" },
"nvim-jdtls": { "branch": "master", "commit": "f73731b543f5971e0da9665eb1d7ceffe1fde71f" }, "nvim-jdtls": { "branch": "master", "commit": "f73731b543f5971e0da9665eb1d7ceffe1fde71f" },
"nvim-lspconfig": { "branch": "master", "commit": "41ceb6bba3a40128b7841f5b7f5a9dae7201e823" }, "nvim-lspconfig": { "branch": "master", "commit": "41ceb6bba3a40128b7841f5b7f5a9dae7201e823" },
"nvim-metals": { "branch": "main", "commit": "90dadd67bb1069ce1ba2a4dabf4e45da2807ba80" }, "nvim-metals": { "branch": "main", "commit": "90dadd67bb1069ce1ba2a4dabf4e45da2807ba80" },
@ -39,5 +41,6 @@
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-textobj-user": { "branch": "master", "commit": "41a675ddbeefd6a93664a4dc52f302fe3086a933" },
"vimtex": { "branch": "master", "commit": "2e1bbabeb2c34bb17d7bc8cfdf8f95b16dd0db0c" } "vimtex": { "branch": "master", "commit": "2e1bbabeb2c34bb17d7bc8cfdf8f95b16dd0db0c" }
} }

View file

@ -120,6 +120,19 @@ local plugins = {
lazy = false, lazy = false,
version = "^2", version = "^2",
}, },
{
"agda/cornelis",
name = "cornelis",
ft = "agda",
init = function()
vim.g.cornelis_use_global_binary = 1
-- We don't use the default binding for shortcuts (see ftplugin)
-- Also, buffer reload is done in the ftplugin too
vim.g.cornelis_no_agda_input = 1
end,
dependencies = { "neovimhaskell/nvim-hs.vim", "kana/vim-textobj-user" },
version = "*",
},
{ {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
branch = "0.1.x", branch = "0.1.x",

View file

@ -0,0 +1,17 @@
" agda related autocommands
function! CornelisLoadWrapper()
if exists(":CornelisLoad") ==# 2
CornelisLoad
endif
endfunction
au BufReadPre *.agda call CornelisLoadWrapper()
au BufReadPre *.lagda* call CornelisLoadWrapper()
au QuitPre *.agda :CornelisCloseInfoWindows
au QuitPre *.lagda* :CornelisCloseInfoWindows
" autoreload at file write
au BufWritePost *.agda execute "normal! :CornelisLoad\<CR>"
au BufWritePost *.lagda* execute "normal! :CornelisLoad\<CR>"

View file

@ -1,3 +1,3 @@
local leap = require("leap") local leap = require("leap")
vim.keymap.set({ "n", "x", "o" }, "s", function() leap.leap() end) vim.keymap.set({ "n", "x", "o" }, "s", function() leap.leap { backward = false } end)
vim.keymap.set("n", "S", function() leap.leap { backward = true } end) vim.keymap.set("n", "S", function() leap.leap { backward = true } end)

View file

@ -24,6 +24,8 @@ local servers = {
["nil"] = { formatting = { command = { "nixfmt" } } }, ["nil"] = { formatting = { command = { "nixfmt" } } },
}, },
}, },
zls = {},
} }
vim.diagnostic.config { vim.diagnostic.config {

View file

@ -52,6 +52,9 @@ telescope.setup {
live_grep = { live_grep = {
layout_config = { height = 0.7 }, layout_config = { height = 0.7 },
}, },
buffers = {
sort_lastused = true,
},
resume = { resume = {
initial_mode = "normal", initial_mode = "normal",
}, },

View file

@ -1,6 +1,6 @@
{ let
sources ? import ./npins, sources = import ./npins;
}: in
{ {
# for repl sessions # for repl sessions
inherit sources; inherit sources;

View file

@ -40,7 +40,6 @@ in
# use lix everywhere and wrap it with nom # use lix everywhere and wrap it with nom
../overlays/lix.nix ../overlays/lix.nix
../overlays/nix-monitored.nix
]; ];
}; };

View file

@ -1,9 +1,11 @@
# Protect my system from running out of storage or memory # Protect my system from running out of storage or memory
let
totalStorage = 500;
in
{ {
# 500GB Storage
nix.settings = { nix.settings = {
min-free = 50 * 1024 * 1024 * 1024; min-free = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024;
max-free = 100 * 1024 * 1024 * 1024; max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024;
}; };
systemd.services.nix-daemon.serviceConfig = { systemd.services.nix-daemon.serviceConfig = {
@ -11,11 +13,4 @@
MemoryMax = "90%"; MemoryMax = "90%";
OOMScoreAdjust = 500; OOMScoreAdjust = 500;
}; };
# 12 Cores, 64 GB RAM
# split into 4 jobs with 3C/16G
nix.settings = {
cores = 3;
max-jobs = 4;
};
} }

View file

@ -45,7 +45,6 @@ in
# use lix everywhere and wrap it with nom # use lix everywhere and wrap it with nom
../overlays/lix.nix ../overlays/lix.nix
../overlays/nix-monitored.nix
]; ];
}; };

View file

@ -54,21 +54,16 @@ in
../overlays/wired-notify.nix ../overlays/wired-notify.nix
../overlays/wallpapers.nix ../overlays/wallpapers.nix
../overlays/nil.nix ../overlays/nil.nix
../overlays/dix.nix
../overlays/eepy.nix
../overlays/calibre-no-mime.nix
../overlays/fcitx5-table-extra-taiwanese.nix
../overlays/ghostty-dev.nix ../overlays/ghostty-dev.nix
../overlays/npins.nix
../overlays/cornelis.nix
../overlays/iosevka.nix ../overlays/iosevka
../packages/overlay.nix ../packages/overlay.nix
./vanadium/overlay.nix ./vanadium/overlay.nix
./vanadium/kernel-overlay.nix ./vanadium/kernel-overlay.nix
# removed, but I need it for PLFA!
../overlays/pin-emacs28.nix
# use lix everywhere and wrap it with nom # use lix everywhere and wrap it with nom
../overlays/lix.nix ../overlays/lix.nix
../overlays/nix-monitored.nix ../overlays/nix-monitored.nix
@ -100,6 +95,7 @@ in
./vanadium/nixos/input.nix ./vanadium/nixos/input.nix
./vanadium/nixos/misc.nix ./vanadium/nixos/misc.nix
./vanadium/nixos/remote-builders.nix
./vanadium/nixos/display.nix ./vanadium/nixos/display.nix
./vanadium/nixos/gui.nix ./vanadium/nixos/gui.nix
@ -113,7 +109,6 @@ in
../nixosModules/common/network.nix ../nixosModules/common/network.nix
../nixosModules/common/sudo-conf.nix ../nixosModules/common/sudo-conf.nix
../nixosModules/common/system-nixconf.nix ../nixosModules/common/system-nixconf.nix
../nixosModules/common/xscreensaver.nix
# QUIRK: # QUIRK:
# Had issue when building the installer as it fails to bootstrap itself # Had issue when building the installer as it fails to bootstrap itself
@ -121,6 +116,7 @@ in
# ../nixosModules/extra/secure_dns.nix # ../nixosModules/extra/secure_dns.nix
../nixosModules/extra/zram.nix ../nixosModules/extra/zram.nix
../nixosModules/extra/leana.nix ../nixosModules/extra/leana.nix
../nixosModules/extra/lean-nixos.nix
# #
# Extern modules # Extern modules
@ -177,7 +173,6 @@ in
../homeModules/common/fzf.nix ../homeModules/common/fzf.nix
../homeModules/common/git.nix ../homeModules/common/git.nix
../homeModules/common/gpg.nix ../homeModules/common/gpg.nix
../homeModules/common/kitty.nix
../homeModules/common/ghostty.nix ../homeModules/common/ghostty.nix
../homeModules/common/leana.nix ../homeModules/common/leana.nix
../homeModules/common/locale.nix ../homeModules/common/locale.nix

View file

@ -27,10 +27,14 @@
pkgs.taplo # toml pkgs.taplo # toml
pkgs.vscode-langservers-extracted # JSON etc pkgs.vscode-langservers-extracted # JSON etc
pkgs.yaml-language-server # yaml pkgs.yaml-language-server # yaml
pkgs.cornelis # agda
# bash # bash
pkgs.shfmt pkgs.shfmt
pkgs.nodePackages.bash-language-server pkgs.nodePackages.bash-language-server
# ghc
pkgs.hs-speedscope
]; ];
programs.git = { programs.git = {
@ -71,6 +75,7 @@
"https://haskell-language-server.cachix.org" "https://haskell-language-server.cachix.org"
"https://helix.cachix.org" "https://helix.cachix.org"
"https://cache.iog.io" "https://cache.iog.io"
"https://ghostty.cachix.org"
]; ];
extra-trusted-public-keys = [ extra-trusted-public-keys = [
"ghc-nix.cachix.org-1:ziC/I4BPqeA4VbtOFpFpu6D1t6ymFvRWke/lc2+qjcg=" "ghc-nix.cachix.org-1:ziC/I4BPqeA4VbtOFpFpu6D1t6ymFvRWke/lc2+qjcg="
@ -78,6 +83,7 @@
"haskell-language-server.cachix.org-1:juFfHrwkOxqIOZShtC4YC1uT1bBcq2RSvC7OMKx0Nz8=" "haskell-language-server.cachix.org-1:juFfHrwkOxqIOZShtC4YC1uT1bBcq2RSvC7OMKx0Nz8="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs=" "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
"ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="
]; ];
}; };
}; };

View file

@ -115,6 +115,7 @@ in
[ [
addons.sponsorblock addons.sponsorblock
addons.return-youtube-dislikes addons.return-youtube-dislikes
addons.shinigami-eyes
addons.consent-o-matic addons.consent-o-matic
]; ];
}; };

View file

@ -17,6 +17,46 @@
monospace = [ "Iosevka" ]; monospace = [ "Iosevka" ];
emoji = [ "Noto Color Emoji" ]; emoji = [ "Noto Color Emoji" ];
}; };
configFile = {
thick-iosevka = {
enable = true;
# https://www.freedesktop.org/software/fontconfig/fontconfig-user.html
# https://gist.github.com/yuttie/adb22a6c07ef8e75d82e48d5484b7ad8
# https://github.com/N1k3YB/CS2FontChanger_ru/blob/5f1d8189220f42286d773c536ff83a49b2556da2/app.py#L227
#
# Use the following script to test
# for size in (seq 9 15)
# echo
# echo
# for weight in {regular,medium,bold}
# echo "weight=$weight:size=$size"
# fc-match "mono:weight=$weight:size=$size"
# end
# end | less
text = /* xml */ ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="family" compare="contains"><string>Iosevka</string></test>
<edit name="weight" mode="assign" binding="strong">
<if> <eq><name>weight</name><const>bold</const></eq> <!-- then --> <const>bold</const>
<if> <eq><name>weight</name><const>medium</const></eq> <!-- then --> <const>medium</const>
<!-- not bold nor medium -->
<if> <more><name>size</name><double>15</double></more> <!-- then --> <const>regular</const>
<if> <more><name>size</name><double>10</double></more> <!-- then --> <const>medium</const>
<!-- else --> <const>bold</const>
</if>
</if>
</if>
</if>
</edit>
</match>
</fontconfig>
'';
};
};
}; };
home.packages = [ home.packages = [
pkgs.noto-fonts pkgs.noto-fonts
@ -26,12 +66,12 @@
pkgs.noto-fonts-color-emoji pkgs.noto-fonts-color-emoji
pkgs.noto-fonts-emoji-blob-bin pkgs.noto-fonts-emoji-blob-bin
pkgs.ubuntu-classic pkgs.ubuntu-classic
pkgs.iosevka pkgs.Iosevka
]; ];
home.file = { home.file = {
".xscreensaver".source = "${./xscreensaver/.xscreensaver}"; ".xscreensaver".source = "${./xscreensaver/.xscreensaver}";
".wallpaper".source = "${pkgs.wallpapers.packages.knights_of_guinevere.fixing_gwen}"; ".wallpaper".source = "${pkgs.wallpapers.packages.serial_experiments_lain.lain_windows_error}";
}; };
xdg.configFile = { xdg.configFile = {
"xmonad".source = "${./xmonad}"; "xmonad".source = "${./xmonad}";

View file

@ -20,6 +20,7 @@
home.packages = [ home.packages = [
pkgs.ghc # my favorite calculator pkgs.ghc # my favorite calculator
pkgs.lsr # fast ls with io_uring
pkgs.nmap pkgs.nmap
pkgs.stow pkgs.stow
pkgs.zip pkgs.zip
@ -41,13 +42,11 @@
pkgs.macchanger pkgs.macchanger
# The file picker is not ergonomic enough, sadly # The file picker is not ergonomic enough, sadly
# pkgs.helix pkgs.helix
# pkgs.nushell # pkgs.nushell
pkgs.ruler pkgs.ruler
pkgs.mini-calc pkgs.mini-calc
pkgs.eepy
pkgs.zbar
# pdf # pdf
pkgs.poppler-utils # pdfseparate, pdfunite pkgs.poppler-utils # pdfseparate, pdfunite
@ -69,49 +68,32 @@
pkgs.onefetch pkgs.onefetch
pkgs.just pkgs.just
# nix tools pkgs.nixfmt-rfc-style # formatter
# # Alejandra handles inline comments poorly pkgs.nurl # fetcher made easy
# # https://github.com/kamadorueda/alejandra/issues/429 pkgs.nix-diff # debug cache miss
# pkgs.alejandra
pkgs.nixfmt-rfc-style
pkgs.nurl
pkgs.dix
pkgs.niv
pkgs.npins pkgs.npins
pkgs.nix-tree pkgs.nix-tree # analyze closure
pkgs.nix-output-monitor
pkgs.nh
# productivity / media # productivity / media
pkgs.evolution pkgs.evolution
pkgs.libreoffice pkgs.libreoffice
pkgs.calibre pkgs.calibre
pkgs.foliate # TODO: replace calibre with foliate
# pkgs.rawtherapee
pkgs.digikam pkgs.digikam
pkgs.gimp
pkgs.easyeffects
pkgs.nautilus pkgs.nautilus
pkgs.sushi # space bar previewer pkgs.sushi # space bar previewer
# pkgs.blender
# pkgs.inkscape
# pkgs.aseprite
# pkgs.xournalpp # pkgs.xournalpp
pkgs.nicotine-plus
pkgs.picard # music tagger pkgs.picard # music tagger
pkgs.qbittorrent
pkgs.mousai pkgs.mousai
pkgs.localsend # file share with iOS pkgs.nicotine-plus
pkgs.minder # mindmap tool pkgs.qbittorrent
pkgs.mkvtoolnix pkgs.mkvtoolnix
pkgs.localsend # file share with iOS
# social # social
pkgs.iamb pkgs.iamb
pkgs.discord # keep the app for video calls pkgs.discord # keep the app for video calls
pkgs.signal-desktop pkgs.signal-desktop
pkgs.tuba # mastodon GUI client
pkgs.emoji-picker-rs pkgs.emoji-picker-rs
pkgs.telegram-desktop # for archlinux china
# wm utilities # wm utilities
pkgs.xbrightness pkgs.xbrightness
@ -133,10 +115,6 @@
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
}; };
emacs = {
enable = true;
package = pkgs.unsafe-emacs28;
};
lazygit.enable = true; lazygit.enable = true;
fish = { fish = {
enable = true; enable = true;
@ -175,18 +153,7 @@
mouse-scroll-multiplier = 1; mouse-scroll-multiplier = 1;
}; };
}; };
kitty = { # chromium.enable = true;
enable = false;
font.size = 12; # sweet spot for framework 13
settings = {
shell = lib.getExe config.programs.fish.package;
# https://github.com/kovidgoyal/kitty/issues/1866
# https://sw.kovidgoyal.net/kitty/conf/#terminal-bell
linux_bell_theme = "elementary";
};
};
chromium.enable = true;
}; };
services = { services = {

View file

@ -18,7 +18,7 @@
lib.makeBinPath [ lib.makeBinPath [
ghc ghc
pkgs.libnotify pkgs.libnotify
pkgs.hrt-time pkgs.mullvad-status
] ]
}" }"
''; '';

View file

@ -65,20 +65,7 @@ config =
, Run $ , Run $
Com Com
"tomorrow" "tomorrow"
[ "--target", "2025-08-14" [ "--target", "2026-02-02=monmaster"
, "--target", "2025-08-21"
, "--target", "2025-08-22"
, "--target", "2025-09-16=snip snip"
, "--target", "2025-10-13=no teef"
, "--target", "2025-10-31=dragon book"
, "--target", "2025-11-19=scalpel"
, "--target", "2025-11-29=à deux"
-- , "--target", "2025-12-15=campus baguette"
-- , "--target", "2025-12-16=dragon book"
, "--target", "2025-12-18=baguette"
, "--target", "2025-12-30=seule"
, "--target", "2026-02-02=monmaster"
, "--target", "2026-02-22=dernier appel"
] ]
"" ""
(60 &minute) (60 &minute)
@ -102,7 +89,7 @@ config =
] ]
(6 &second) (6 &second)
, Run $ Com "powerprofilesctl" ["get"] "" (6 &second) , Run $ Com "powerprofilesctl" ["get"] "" (6 &second)
, Run $ Com "hrt-time" ["days"] "" (60 &minute) , Run $ Com "mullvad-status" [] "" (6 &second)
, Run XMonadLog , Run XMonadLog
, Run $ , Run $
Weather Weather
@ -124,8 +111,9 @@ config =
<> alignSep config <> alignSep config
<> intercalate "|" <> intercalate "|"
[ " %LFRN% " [ " %LFRN% "
, " %mullvad-status% "
, " %battery%, %powerprofilesctl%) " , " %battery%, %powerprofilesctl%) "
, " %hereClock% (%tomorrow%, %hrt-time%) " , " %hereClock% (%tomorrow%) "
] ]
} }

View file

@ -23,8 +23,10 @@ instance LayoutClass SetMasterNTall a where
let ws' = W.Workspace t (unSetMasterNTall l) s let ws' = W.Workspace t (unSetMasterNTall l) s
in (fmap . fmap . fmap) SetMasterNTall . runLayout ws' in (fmap . fmap . fmap) SetMasterNTall . runLayout ws'
handleMessage (SetMasterNTall l@(ResizableTall _n0 d f s)) mess handleMessage (SetMasterNTall l@(ResizableTall n0 d f s)) mess
| Just (SetMasterN n) <- fromMessage mess = pure $ Just $ SetMasterNTall $ ResizableTall n d f s | Just (SetMasterN n) <- fromMessage mess = pure $
if n0 /= n then Just $ SetMasterNTall $ ResizableTall n d f s
else Nothing
| otherwise = (fmap . fmap) SetMasterNTall . handleMessage l $ mess | otherwise = (fmap . fmap) SetMasterNTall . handleMessage l $ mess
description (SetMasterNTall l) = description l description (SetMasterNTall l) = description l

View file

@ -3,10 +3,8 @@
import XMonad import XMonad
import XMonad.Actions.CopyWindow import XMonad.Actions.CopyWindow
import XMonad.Actions.Navigation2D
import XMonad.Actions.Submap import XMonad.Actions.Submap
import XMonad.Actions.SwapWorkspaces import XMonad.Actions.SwapWorkspaces
import XMonad.Actions.Warp
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.InsertPosition import XMonad.Hooks.InsertPosition
@ -33,9 +31,9 @@ import XMonad.Util.NamedScratchpad
import XMonad.Util.SpawnOnce import XMonad.Util.SpawnOnce
import Data.Char.Greek import Data.Char.Greek
import qualified Data.Map.Strict as M
import Data.Ratio import Data.Ratio
import Data.Semigroup import Data.Semigroup
import qualified Data.Map.Strict as M
import System.Posix import System.Posix
import Graphics.X11.ExtraTypes.XF86 import Graphics.X11.ExtraTypes.XF86
@ -48,7 +46,6 @@ main =
$ withSB xmobarConfig . docks $ withSB xmobarConfig . docks
$ setEwmhActivateHook myActivateHook $ setEwmhActivateHook myActivateHook
$ ewmhFullscreen . ewmh $ ewmhFullscreen . ewmh
$ withNavigation2DConfig def
$ def $ def
{ modMask = superMask { modMask = superMask
, borderWidth = 5 , borderWidth = 5
@ -80,7 +77,7 @@ myLayout =
$ smartSpacingWithEdge 5 $ smartSpacingWithEdge 5
$ reflectMsg . reflectHoriz $ reflectMsg . reflectHoriz
$ SetMasterNTall $ SetMasterNTall
$ ResizableTall 1 (1/10) (3/7) [] $ ResizableTall 1 (1/10) (3/7) [1.2, 1, 1, 1.2]
isSioyek :: Query Bool isSioyek :: Query Bool
isSioyek = className =? "sioyek" isSioyek = className =? "sioyek"
@ -209,11 +206,21 @@ setMasterNEventHandleHook :: Event -> X All
setMasterNEventHandleHook ev = setMasterNEventHandleHook ev =
let adjustMasterCount :: X () let adjustMasterCount :: X ()
adjustMasterCount = do adjustMasterCount = do
count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset ws <- gets windowset
if count <= 3 then sendMessage (SetMasterN 1) -- Remove the floating windows in the count
else if count <= 5 then sendMessage (SetMasterN 2) let s :: Maybe (W.Stack Window)
else if count <= 7 then sendMessage (SetMasterN 3) s = W.stack $ W.workspace $ W.current ws
else pure ()
count :: Int
count =
length
$ filter (flip M.notMember (W.floating ws))
$ W.integrate' s
if count > 7 then sendMessage (SetMasterN 4)
else if count > 5 then sendMessage (SetMasterN 3)
else if count > 3 then sendMessage (SetMasterN 2)
else sendMessage (SetMasterN 1)
in do in do
case ev of case ev of
MapRequestEvent{} -> adjustMasterCount MapRequestEvent{} -> adjustMasterCount
@ -273,9 +280,6 @@ removedKeybinds =
++ [ (superMask , n) | n <- [xK_1 .. xK_9] ] ++ [ (superMask , n) | n <- [xK_1 .. xK_9] ]
++ [ (superMask .|. shiftMask, n) | n <- [xK_1 .. xK_9] ] ++ [ (superMask .|. shiftMask, n) | n <- [xK_1 .. xK_9] ]
warpToWindowCenter :: X ()
warpToWindowCenter = warpToWindow 0.5 0.5
keybinds :: [((KeyMask, KeySym), X ())] keybinds :: [((KeyMask, KeySym), X ())]
keybinds = keybinds =
[ [
@ -315,39 +319,20 @@ keybinds =
, submap $ M.fromList , submap $ M.fromList
[ ((0, xK_t), withFocused $ windows . W.sink) [ ((0, xK_t), withFocused $ windows . W.sink)
, ((0, xK_l), withFocused $ windows . flip W.float centeredFloat) , ((0, xK_l), withFocused $ windows . flip W.float centeredFloat)
, ((0, xK_c), windows copyToAll)
, ((0, xK_k), killAllOtherCopies)
] ]
) )
-- Switch between layers
, ((altMask, xK_s), switchLayer )
-- We override default focus shifting bindings to warp the cursor to the center of the new window.
-- This is especially useful because mag doesn't work well with focusFollowsMouse.
-- The order is important: focus shift, and then warp the cursor
--
-- Warp when focus shifts by binding, not by mouse (otherwise it's annoying)
-- Directional navigation of windows
, ((altMask, xK_l), windowGo R False >> warpToWindowCenter)
, ((altMask, xK_h), windowGo L False >> warpToWindowCenter)
, ((altMask, xK_k), windowGo U False >> warpToWindowCenter)
, ((altMask, xK_j), windowGo D False >> warpToWindowCenter)
-- Swap adjacent windows
, ((altMask .|. superMask, xK_l), windowSwap R False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_h), windowSwap L False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_k), windowSwap U False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_j), windowSwap D False >> warpToWindowCenter)
] ]
-- Screenshots -- Screenshots
++ (let fullscreen = "maim -u | xclip -in -selection clipboard -t image/png" ++ (let fullscreen = "maim -u | xclip -in -selection clipboard -t image/png"
withSelection = "maim -u -s -b 5 -o | xclip -in -selection clipboard -t image/png" withSelection = "maim -u -s -b 5 -o | xclip -in -selection clipboard -t image/png"
toFloat = "maim -u -s -b 5 -o | feh --auto-zoom -" toFloat = "maim -u -s -b 5 -o | feh --auto-zoom -"
in [ ((0, xK_Print), spawn fullscreen ) in [ ((0, xK_Print), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_3 ), spawn fullscreen ) , ((superMask .|. shiftMask, xK_3 ), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_4 ), spawn withSelection) , ((superMask .|. shiftMask, xK_4 ), unGrab >> spawn withSelection)
, ((superMask .|. shiftMask, xK_5 ), spawn toFloat ) , ((superMask .|. shiftMask, xK_5 ), unGrab >> spawn toFloat )
] ]
) )
@ -366,7 +351,7 @@ keybinds =
-- Launcher -- Launcher
++ (let launchFirefox = "zen" ++ (let launchFirefox = "zen"
launchDmenu = "dmenu_run -i -fn \"Iosevka-14\" -nb \"#36363a\" -nf \"#e2e2e4\" -sb \"#f7f7f8\" -sf \"#36363a\" -l 10" launchDmenu = "dmenu_run -i -fn \"Iosevka-18\" -nb \"#36363a\" -nf \"#e2e2e4\" -sb \"#f7f7f8\" -sf \"#36363a\" -l 10"
lock = "xscreensaver-command -lock" lock = "xscreensaver-command -lock"
in [ ((controlMask .|. altMask, xK_m), namedScratchpadAction myScratchpads "cmus" ) in [ ((controlMask .|. altMask, xK_m), namedScratchpadAction myScratchpads "cmus" )
, ((controlMask .|. altMask, xK_t), namedScratchpadAction myScratchpads "btop" ) , ((controlMask .|. altMask, xK_t), namedScratchpadAction myScratchpads "btop" )

View file

@ -115,6 +115,7 @@ in
[ [
addons.sponsorblock addons.sponsorblock
addons.return-youtube-dislikes addons.return-youtube-dislikes
addons.shinigami-eyes
addons.consent-o-matic addons.consent-o-matic
]; ];
}; };

View file

@ -35,7 +35,7 @@
# To enable roaming https://wiki.archlinux.org/title/Wpa_supplicant#Roaming # To enable roaming https://wiki.archlinux.org/title/Wpa_supplicant#Roaming
wireless = { wireless = {
enable = true; enable = true;
userControlled.enable = true; userControlled = true;
secretsFile = config.age.secrets.wpa_password.path; secretsFile = config.age.secrets.wpa_password.path;
scanOnLowSignal = false; scanOnLowSignal = false;
networks = networks =
@ -63,6 +63,13 @@
# This is the fascist one, just block it because I can't tell # This is the fascist one, just block it because I can't tell
0.0.0.0 nixos.wiki 0.0.0.0 nixos.wiki
# Gotta purify my smoos brain for a while
0.0.0.0 instagram.com
0.0.0.0 www.instagram.com
0.0.0.0 youtube.com
0.0.0.0 www.youtube.com
# The "people who you viewed can see you" thing is weird af # The "people who you viewed can see you" thing is weird af
0.0.0.0 linkedin.com 0.0.0.0 linkedin.com
0.0.0.0 www.linkedin.com 0.0.0.0 www.linkedin.com
@ -76,4 +83,19 @@
services.mullvad-vpn.enable = true; services.mullvad-vpn.enable = true;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
# Printing and auto-discovery of Wi-Fi printers
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
services.printing = {
enable = true;
drivers = with pkgs; [
cups-filters
cups-browsed
];
};
} }

View file

@ -1,4 +1,4 @@
{ config, ... }: { config, pkgs, ... }:
{ {
system.stateVersion = "24.11"; system.stateVersion = "24.11";
@ -15,6 +15,12 @@
"pcie_aspm=off" "pcie_aspm=off"
]; ];
boot.plymouth = {
enable = true;
themePackages = [ pkgs.plymouth-blahaj-theme ];
theme = "blahaj";
};
# Cross building # Cross building
# https://discourse.nixos.org/t/how-do-i-get-my-aarch64-linux-machine-to-build-x86-64-linux-extra-platforms-doesnt-seem-to-work/38106/2?u=leana8959 # https://discourse.nixos.org/t/how-do-i-get-my-aarch64-linux-machine-to-build-x86-64-linux-extra-platforms-doesnt-seem-to-work/38106/2?u=leana8959
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];

View file

@ -0,0 +1,31 @@
let
supportedFeatures = [
"nixos-test"
"benchmark"
"big-parallel"
"kvm"
];
in
{ pkgs, ... }:
{
nix.buildMachines = [
# NOTE: these hosts need to be put in the .ssh/config of root.
# https://wiki.nixos.org/wiki/Distributed_build#Recommended_setup:_multi-user_Nix_local_%E2%80%93%3E_multi-user_Nix_remote
{
hostName = "pancake";
sshUser = "remotebuild";
speedFactor = 2;
system = pkgs.stdenv.hostPlatform.system;
maxJobs = 1;
inherit supportedFeatures;
}
{
hostName = "hetzner_benchmark";
sshUser = "remotebuild";
speedFactor = 12;
system = pkgs.stdenv.hostPlatform.system;
maxJobs = 3;
inherit supportedFeatures;
}
];
}

View file

@ -1,8 +1,11 @@
# Protect my system from running out of storage or memory # Protect my system from running out of storage or memory
let
totalStorage = 930;
in
{ {
nix.settings = { nix.settings = {
min-free = 50 * 1024 * 1024 * 1024; min-free = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024;
max-free = 100 * 1024 * 1024 * 1024; max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024;
}; };
systemd.services.nix-daemon.serviceConfig = { systemd.services.nix-daemon.serviceConfig = {
@ -10,11 +13,4 @@
MemoryMax = "90%"; MemoryMax = "90%";
OOMScoreAdjust = 500; OOMScoreAdjust = 500;
}; };
# 16 Cores, 32 GB RAM
# split into 4 jobs with 4C/8G
nix.settings = {
cores = 2;
max-jobs = 4;
};
} }

View file

@ -16,6 +16,14 @@ infuse {
./patches/helix/W-as-write.patch ./patches/helix/W-as-write.patch
]; ];
btop.__output.patches.__append = [
(final.fetchpatch {
name = "btrfs-io-graph";
url = "https://patch-diff.githubusercontent.com/raw/aristocratos/btop/pull/1285.patch";
hash = "sha256-za6B1EiOV1JqKMJwrNQo43RKChw+C4mmC8pcoxLLau4=";
})
];
# TODO: # TODO:
# pinned branch of https://github.com/astrand/xclip/tree/xerror # pinned branch of https://github.com/astrand/xclip/tree/xerror
# use this until #43 gets resolved properly # use this until #43 gets resolved properly

View file

@ -53,10 +53,13 @@ in
"browser.tabs.loadInBackground" = true; "browser.tabs.loadInBackground" = true;
"browser.ctrlTab.sortByRecentlyUsed" = false; "browser.ctrlTab.sortByRecentlyUsed" = false;
"layout.css.devPixelsPerPx" = 1.1; "layout.css.devPixelsPerPx" = 1.1;
"browser.startup.page" = 1;
# open links in new window "browser.link.open_newwindow" = 2; # open in new tab
# this works a lot better with xmonad where I have a bunch of windows "browser.translations.automaticallyPopup" = false;
"browser.link.open_newwindow" = 2; "browser.tabs.closeWindowWithLastTab" = true;
"general.smoothScroll" = false; # makes me dizzy
"accessibility.typeaheadfind" = true; # type to find
"media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled" = true;
# Sponsored crap # Sponsored crap
# Yes # Yes

View file

@ -7,7 +7,7 @@
programs.fish = { programs.fish = {
shellAbbrs = lib.mkMerge [ shellAbbrs = lib.mkMerge [
(lib.mkIf pkgs.stdenv.isLinux { (lib.mkIf pkgs.stdenv.isLinux {
"," = "nix-shell -p"; "," = "nix-shell --command $SHELL -p";
}) })
]; ];
@ -21,10 +21,6 @@
# idiot protection # idiot protection
chmod = "chmod --preserve-root"; chmod = "chmod --preserve-root";
chown = "chown --preserve-root"; chown = "chown --preserve-root";
# I can't make alias with a space, i.e. `nom shell`
nix-shell = "nix-shell --command fish";
nom-shell = "nom-shell --command fish";
}) })
]; ];
}; };

View file

@ -11,10 +11,17 @@
# #
# Script dependencies # Script dependencies
# #
home.packages = [ pkgs.vivid ]; home.packages = [
pkgs.nix-output-monitor # pretty ui for shells
];
programs = { programs = {
fd.enable = true; fd.enable = true;
fzf.enable = true; fzf.enable = true;
# fd uses LS_COLORS
vivid = {
enable = true;
activeTheme = "solarized-light"; # similar to milou
};
}; };
# #

View file

@ -0,0 +1,7 @@
function ls
if type -q lsr
command lsr $argv
else
command ls $argv
end
end

View file

@ -1,7 +1,7 @@
function nix-build function nix-build
if type -q nom-build if type -q nom-build
nom-build $argv command nom-build $argv
else else
nix-build $argv command nix-build $argv
end end
end end

View file

@ -1,7 +1,7 @@
function nix-shell function nix-shell
if type -q nom-shell if type -q nom-shell
nom-shell $argv command nom-shell $argv
else else
nix-shell $argv command nix-shell $argv
end end
end end

View file

@ -0,0 +1,11 @@
function nix
if [ $(count $argv) -lt 1 ]
command nix $argv
end
and if [ $argv[1] = "build" -o $argv[1] = "shell" ] && type -q nom
nom $argv
else
command nix $argv
end
end

View file

@ -83,7 +83,4 @@ set -x fzf_fd_opts --hidden --exclude=.git
# fzf-fish using patdiff would show incomplete diff, it is a bug # fzf-fish using patdiff would show incomplete diff, it is a bug
# don't do it # don't do it
# fd uses LS_COLORS
set -x LS_COLORS (vivid -m 24-bit generate solarized-light) # similar to milou
set -g sponge_purge_only_on_exit true set -g sponge_purge_only_on_exit true

View file

@ -10,7 +10,7 @@ in
{ {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = [ home.packages = [
pkgs.nerd-fonts.iosevka pkgs.nerd-fonts.IosevkaTerm
]; ];
programs.ghostty.settings = { programs.ghostty.settings = {
@ -21,13 +21,15 @@ in
resize-overlay = "never"; resize-overlay = "never";
# Fonts # Fonts
font-family = "Iosevka NFM"; font-family = "IosevkaTerm NFM";
adjust-cursor-thickness = 2; adjust-cursor-thickness = 2;
keybind = [ keybind = [
"ctrl+shift+==increase_font_size:1" "ctrl+shift+==increase_font_size:1"
"ctrl+-=decrease_font_size:1" "ctrl+-=decrease_font_size:1"
]; ];
mouse-hide-while-typing = true;
# Theme # Theme
background = "#fdf6e3"; background = "#fdf6e3";
foreground = "#073642"; foreground = "#073642";

View file

@ -5,6 +5,9 @@
}: }:
{ {
# git plugins # git plugins
programs.git = {
lfs.enable = true;
};
programs.patdiff = { programs.patdiff = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
enableGitIntegration = lib.mkDefault true; enableGitIntegration = lib.mkDefault true;
@ -17,7 +20,11 @@
in in
lib.mkIf patdiffCfg.enable { lib.mkIf patdiffCfg.enable {
settings = { settings = {
git.paging.externalDiffCommand = "${lib.getExe' patdiffCfg.package "patdiff-git-wrapper"}"; git.paging = [
{
externalDiffCommand = "${lib.getExe' patdiffCfg.package "patdiff-git-wrapper"}";
}
];
}; };
}; };

View file

@ -5,13 +5,17 @@
gpg-agent.pinentry.package = pkgs.pinentry-tty; gpg-agent.pinentry.package = pkgs.pinentry-tty;
}; };
# Fun video btw
# https://media.ccc.de/v/39c3-to-sign-or-not-to-sign-practical-vulnerabilities-i
programs.gpg.publicKeys = programs.gpg.publicKeys =
let let
fromUrl = fromUrl =
{ {
url, url,
hash, hash,
trust ? 5, # https://security.stackexchange.com/a/69089
# One lower than ultimate (introducer in the web of trust) is good enough.
trust ? 4,
}: }:
{ {
source = pkgs.fetchurl { inherit url hash; }; source = pkgs.fetchurl { inherit url hash; };
@ -27,6 +31,7 @@
{ {
user = "leana8959"; user = "leana8959";
hash = "sha256-Y+v/8bLkyUIe4vjToChQP3ChPxRV/DqI72OTsx6F0oo="; hash = "sha256-Y+v/8bLkyUIe4vjToChQP3ChPxRV/DqI72OTsx6F0oo=";
trust = 5;
} }
{ {
user = "vanilla-extracts"; user = "vanilla-extracts";
@ -36,10 +41,6 @@
user = "jappeace"; user = "jappeace";
hash = "sha256-wJ4hiE7M7dcEMaE8waNZEi+tybpVIsFzoeDJhIIaLhk="; hash = "sha256-wJ4hiE7M7dcEMaE8waNZEi+tybpVIsFzoeDJhIIaLhk=";
} }
{
user = "gautaz";
hash = "sha256-j0I9l8uKfzKNrc2qveFi5mkRppxL36+BUEqvFPs6vqA=";
}
{ {
user = "confusedkernel"; user = "confusedkernel";
hash = "sha256-9DdtDAcv+2Z0jJMSLAXbp5ne8uHYj5V/lNGi0kKSdv4="; hash = "sha256-9DdtDAcv+2Z0jJMSLAXbp5ne8uHYj5V/lNGi0kKSdv4=";

View file

@ -1,62 +0,0 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.programs.kitty;
in
{
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.nerd-fonts.iosevka
];
programs.kitty = {
font.name = "family=\"Iosevka NFM\"";
settings = rec {
# Make text thicker
text_composition_strategy = lib.mkIf pkgs.stdenv.isLinux "2.8 0";
# Don't prompt
confirm_os_window_close = 0;
# Never underline links
underline_hyperlinks = "never";
# No default bindings
clear_all_shortcuts = "no";
# cursor
cursor_blink_interval = 1;
cursor_stop_blinking_after = 15; # always blink
# theme
background = "#fdf6e3";
foreground = "#073642";
cursor = "#000000";
cursor_text_color = "#ffffff";
selection_foreground = foreground;
selection_background = "#dbcba3";
color0 = "#073642";
color8 = "#4d4d4d";
color1 = "#af005f";
color9 = "#d33682";
color2 = "#859900";
color10 = "#29a350";
color3 = "#ba9b23";
color11 = "#d6b429";
color4 = "#268bd2";
color12 = "#469edd";
color5 = "#5f5faf";
color13 = "#6060d1";
color6 = "#2aa198";
color14 = "#4bccc1"; # a platupus? perry the platupus?
color7 = "#a0a1a7";
color15 = "#eeeadd";
};
};
};
}

View file

@ -9,6 +9,7 @@ let
in in
{ {
home.packages = lib.mkIf cfg.enable [ home.packages = lib.mkIf cfg.enable [
pkgs.zbar
pkgs.pwgen pkgs.pwgen
pkgs.diceware pkgs.diceware
]; ];

View file

@ -108,7 +108,7 @@ style = "blue"
#################### Right hand side #################### #################### Right hand side ####################
[cmd_duration] [cmd_duration]
min_time = 60_000 min_time = 2_000
show_milliseconds = true show_milliseconds = true
style = 'blue' style = 'blue'
format = '([$duration]($style) )' format = '([$duration]($style) )'

View file

@ -1,6 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = [ pkgs.iosevka ]; home.packages = [ pkgs.Iosevka ];
services.wired = { services.wired = {
config = "${./wired.ron}"; config = "${./wired.ron}";
}; };

View file

@ -1,53 +1,17 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
}: }:
let let
inherit (pkgs) nur;
cfg = config.programs.zen-browser; cfg = config.programs.zen-browser;
firefoxCfg = config.programs.firefox;
in in
{ {
programs.zen-browser = { programs.zen-browser = {
# https://mozilla.github.io/policy-templates policies = firefoxCfg.policies;
# The following have more complex logic, keep them as policies and not profiles
policies = {
RequestedLocales = [
"fr-FR" # for fuck sake stop showing me translated version of French gov sites
"zh-TW"
"en-US"
];
SearchEngines = {
Remove = [
"Google"
"Bing"
"DuckDuckGo"
"Qwant"
"eBay"
"Perplexity"
];
Default = "DuckDuckGo Lite";
Add = [
{
Name = "DuckDuckGo Lite";
URLTemplate = "https://lite.duckduckgo.com/lite/search?q={searchTerms}";
}
];
};
NoDefaultBookmarks = true;
DisplayMenuBar = "never";
DisplayBookmarksToolbar = "never";
DNSOverHTTPS = {
Enabled = false;
};
};
# https://searchfox.org/mozilla-central/source/browser/components/enterprisepolicies/Policies.sys.mjs
# Some policies can be rewritten to profiles configuration
#
# "locked" semantic from zen (doesn't seem to be doing anything, attempted for zen-twilight 1.18t) # "locked" semantic from zen (doesn't seem to be doing anything, attempted for zen-twilight 1.18t)
# https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences # https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences
# #
@ -57,91 +21,20 @@ in
# - click the buttons # - click the buttons
# - diff it # - diff it
# diff .zen/default/prefs.js{.bk,} # diff .zen/default/prefs.js{.bk,}
profiles.default = { profiles.default = lib.mkMerge [
settings = { firefoxCfg.profiles.default
{
# Zen specific # Zen specific
"zen.theme.content-element-separation" = 0; # Remove "borders" around window settings = {
"zen.theme.content-element-separation" = 0; # Remove "borders" around window
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "zen.tabs.show-newtab-vertical" = false;
"browser.tabs.loadInBackground" = true; "zen.view.compact.toolbar-flash-popup" = true;
"browser.ctrlTab.sortByRecentlyUsed" = false; "zen.view.show-newtab-button-top" = false;
"layout.css.devPixelsPerPx" = 1.1; "zen.view.use-single-toolbar" = false;
"browser.startup.page" = 1; "zen.tabs.ctrl-tab.ignore-pending-tabs" = true; # ctrl-tab ignore unloaded tabs
"browser.translations.automaticallyPopup" = false; };
"browser.tabs.closeWindowWithLastTab" = true; }
"general.smoothScroll" = false; ];
# open links in new window
# this works a lot better with xmonad where I have a bunch of windows
"browser.link.open_newwindow" = 2;
# Sponsored crap
# Yes
"browser.newtabpage.activity-stream.showSearch" = true;
"browser.newtabpage.activity-stream.feeds.topsites" = true;
# No
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.feeds.section.highlights" = false;
"browser.newtabpage.activity-stream.feeds.system.topstories" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
# URL
# Yes
"browser.urlbar.suggest.quicksuggest.nonsponsored" = true;
# No
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
# Pasword manager
"signon.rememberSignons" = false;
"services.passwordSavingEnabled" = false;
"pref.privacy.disable_button.view_passwords" = false;
# Hardware acceleration
"layers.acceleration.disabled" = false;
# Screenshot
"screenshots.browser.component.enabled" = true;
# Recommendations
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false; # Addons
# Onboarding
"browser.aboutwelcome.enabled" = false;
# AI crap
"browser.ml.chat.enabled" = false;
"browser.ml.chat.page" = false;
"browser.ml.chat.shortcuts" = false;
"browser.ml.chat.sidebar" = false;
# Prevent WebRTC leak
# https://mullvad.net/en/help/webrtc
"media.peerconnection.enabled" = false;
};
extensions.packages =
let
addons = nur.repos.rycee.firefox-addons;
in
[
addons.ublock-origin
addons.privacy-badger
addons.user-agent-string-switcher
/*
Here's to you who want to remove news feed eradicator because you find it annoying:
It is here to annoy you so it is less likely for you to be on the agency inversion path.
DO NOT REMOVE IT. I repeat, DO NOT REMOVE IT.
If you think it's annoying, go do some jump rope, sing, live.
*/
addons.news-feed-eradicator # did you read the comment above?
addons.multi-account-containers
];
};
}; };
xdg.mimeApps = xdg.mimeApps =

View file

@ -2,7 +2,7 @@
# This loads the list of networks as a NixOS wpa_supplicant compatible attrset # This loads the list of networks as a NixOS wpa_supplicant compatible attrset
# #
# View the example config # View the example config
# less $(nix-build --no-out-link -E '(import <nixpkgs> {}).wpa_supplicant')/share/doc/wpa_supplicant/wpa_supplicant.conf.example # less $(nix-build --no-out-link '<nixpkgs>' -A 'wpa_supplicant')/share/doc/wpa_supplicant/wpa_supplicant.conf.example
let let
sources = import ../../npins; sources = import ../../npins;
lib = import (sources.nixpkgs + "/lib"); lib = import (sources.nixpkgs + "/lib");

View file

@ -8,6 +8,10 @@
package = lib.mkDefault pkgs.nix; package = lib.mkDefault pkgs.nix;
settings = { settings = {
# it is impossible to anser in nix-direnv, so we force it to off.
# https://github.com/nix-community/nix-direnv/issues/678
accept-flake-config = lib.mkForce false;
# Try to have at least 10GB of space by default # Try to have at least 10GB of space by default
min-free = lib.mkDefault (5 * 1024 * 1024 * 1024); min-free = lib.mkDefault (5 * 1024 * 1024 * 1024);
max-free = lib.mkDefault (10 * 1024 * 1024 * 1024); max-free = lib.mkDefault (10 * 1024 * 1024 * 1024);

View file

@ -1,54 +0,0 @@
#
# This module provides a service react to xscreensaver events
#
{
config,
lib,
...
}:
let
cfg = config.services.xscreensaver;
in
{
options = {
services.xscreensaver.hooks = lib.mkOption {
type = with lib.types; attrsOf str;
description = "An attrset of events mapped a block of shell command to be run";
default = { };
};
};
config = lib.mkIf cfg.enable {
systemd.user.services = {
"xscreensaver-hooks" = {
description = "Run commands on xscreensaver events";
after = [
"graphical-session.target"
"xscreensaver.service"
];
partOf = [ "graphical-session.target" ];
wantedBy = [ "graphical-session.target" ];
script =
let
handlers = lib.concatMapAttrsStringSep "\n" (event: action: ''
"${event}")
( ${action}
)
;;
'') cfg.hooks;
in
''
xscreensaver-command -watch | while read event rest; do
echo "The handler script got \"$event\""
case $event in
${handlers}
esac
done
'';
path = [
cfg.package # contains xscreensaver-command
];
};
};
};
}

View file

@ -0,0 +1,14 @@
# disable unused tools on nixos systems (that I don't use)
{
system.tools = {
# build a network of virtual machines? never used this.
nixos-build-vms.enable = false;
# only useful for installer
nixos-generate-config.enable = false;
nixos-install.enable = false;
# interactively show options, just use the repl instead
nixos-option.enable = false;
};
}

View file

@ -1,11 +0,0 @@
# cailbre is obnoxious about opening HTML
final: prev: {
calibre = final.symlinkJoin {
name = "calibre";
paths = [ prev.calibre ];
buildInputs = [ final.makeWrapper ];
postBuild = ''
rm -r $out/share/mime
'';
};
}

10
nix/overlays/cornelis.nix Normal file
View file

@ -0,0 +1,10 @@
# The Agda support for Vim
let
sources = import ../../npins;
in
# If this is updated, we break split on case support for PLFA.
# PLFA uses 2.7.0
# https://github.com/agda/cornelis/issues/169
assert sources.cornelis.version == "v2.7.1";
sources.cornelis.asFlake.overlays.cornelis

View file

@ -1,6 +0,0 @@
let
sources = import ../../npins;
in
final: _: {
dix = sources.dix.asFlake.packages.${final.stdenv.hostPlatform.system}.default;
}

View file

@ -1,6 +0,0 @@
let
sources = import ../../npins;
in
final: _: {
eepy = sources.eepy.asFlake.packages.${final.stdenv.hostPlatform.system}.default;
}

View file

@ -1,7 +1,20 @@
let let
sources = import ../../npins; sources = import ../../npins;
in in
final: prev: { final: prev:
let
inherit (final) lib;
in
{
# Dev version of ghostty, "tip" # Dev version of ghostty, "tip"
ghostty = sources.ghostty-dev.asFlake.packages.${final.stdenv.hostPlatform.system}.default; ghostty =
let
shortRev = lib.substring 0 8 sources.ghostty-dev.revision;
in
# NOTE:
# ghostty-dev internally builds a derivation used as a cache.
# Overriding the pname would cause cache mismatch.
sources.ghostty-dev.asFlake.packages.${final.stdenv.hostPlatform.system}.default.override {
revision = shortRev;
};
} }

View file

@ -1,174 +0,0 @@
final: prev: rec {
nerd-fonts =
let
mkNerdFont = final.callPackage ../lib/mkNerdFont.nix { };
in
prev.nerd-fonts
// {
iosevka = mkNerdFont {
font = iosevka;
patcherArgs = [
"--complete"
"--careful"
"--name {/.}-NFM"
"--mono"
];
};
};
iosevka = prev.iosevka.override {
set = "";
# Guide: https://github.com/be5invis/Iosevka/blob/main/doc/custom-build.md
privateBuildPlan = {
family = "Iosevka";
serifs = "sans";
spacing = "normal";
# Otherwise kitty behaves funny with ligature
# noLigation = true;
exportGlyphNames = true;
variants.design = {
ampersand = "et-tailed";
capital-q = "crossing";
capital-z = "straight-serifless-with-crossbar";
cent = "open";
dollar = "open";
lig-double-arrow-bar = "with-notch";
lig-equal-chain = "with-notch";
lig-hyphen-chain = "with-notch";
lig-plus-chain = "with-notch";
lig-single-arrow-bar = "with-notch";
lower-lambda = "tailed-turn";
number-sign = "slanted";
percent = "rings-continuous-slash-also-connected";
seven = "straight-serifless-crossbar";
};
variants.italic = {
v = "cursive-serifless";
w = "cursive-serifless";
};
weights = {
# Build 580, but indicate 400 in output
Regular.shape = 580;
Regular.menu = 400;
Regular.css = 400;
Bold.shape = 700;
Bold.menu = 700;
Bold.css = 700;
};
widths = {
Normal.shape = 500;
Normal.menu = 5;
Normal.css = "normal";
Extended.shape = 600;
Extended.menu = 7;
Extended.css = "expanded";
};
slopes = {
Upright.angle = 0;
Upright.css = "normal";
Upright.menu = "upright";
Upright.shape = "upright";
Italic.angle = 9.4;
Italic.shape = "italic";
Italic.menu = "italic";
Italic.css = "italic";
};
# The ligatures are defined based on Haskell and Nix usages.
#
# Follow: <https://github.com/be5invis/Iosevka/blob/main/params/ligation-set.toml> for more details
ligations.enables = [
"arrow-l" # Left-pointing arrows
# "arrow-l-hyphen" # Left-pointing arrows with hyphen-minus (-) being the rod
# "arrow-l-equal" # Left-pointing arrows with equal sign (=) being the rod
# "arrow-l-wave" # Left-pointing arrows with tilde (~) being the rod
"arrow-r" # Right-pointing arrows
# "arrow-r-hyphen" # Right-pointing arrows with hyphen-minus (-) being the rod
# "arrow-r-equal" # Right-pointing arrows with equal sign (=) being the rod
# "arrow-r-wave" # Right-pointing arrows with tilde (~) being the rod
"arrow-lr" # Dual-pointing arrows
# "arrow-lr-hyphen" # Dual-pointing arrows with hyphen-minus (-) being the rod
# "arrow-lr-equal" # Dual-pointing arrows with equal sign (=) being the rod
# "arrow-lr-wave" # Dual-pointing arrows with tilde (~) being the rod
"counter-arrow-l" # Left-pointing counter-arrows
# "counter-arrow-l-hyphen" # Left-pointing counter-arrows with hyphen-minus (-) being the rod
# "counter-arrow-l-equal" # Left-pointing counter-arrows with equal sign (=) being the rod
# "counter-arrow-l-wave" # Left-pointing counter-arrows with tilde (~) being the rod
"counter-arrow-r" # Right-pointing counter-arrows
# "counter-arrow-r-hyphen" # Right-pointing counter-arrows with hyphen-minus (-) being the rod
# "counter-arrow-r-equal" # Right-pointing counter-arrows with equal sign (=) being the rod
# "counter-arrow-r-wave" # Right-pointing counter-arrows with tilde (~) being the rod
# "eqeqeq" # Enable special ligation for === with triple lines
"eqeq" # Enable ligation for == and ===
"lteq" # Enable ligation for <= as less-than-or-equal sign
# "eqlt" # Enable ligation for =< as less-than-or-equal sign
"gteq" # Enable ligation for >= as greater-than-or-equal sign
# "lteq-separate" # Display <= as separate shape
# "eqlt-separate" # Display =< as separate shape
# "gteq-separate" # Display >= as separate shape
# "exeqeqeq" # Enable special ligation for !=== with triple lines
# "exeqeq" # Enable special ligation for !== with triple lines
# "eqexeq" # Enable special ligation for =!= with triple lines
# "eqexeq-dl" # Enable special ligation for =!= with double lines
# "exeq" # Enable ligation for != and !==
# "tildeeq" # Enable ligation for ~= as inequality
# "eqslasheq" # Enable special triple-line ligation for =/= as inequality
"slasheq" # Enable ligation for /= and =/= as inequality
"trig" # Enable ligation for <|, |> , <||, and other bar-and-angle-bracket symbols
# "ltgt-ne" # Enable ligation for <> as inequality
"ltgt-diamond" # Enable ligation for <> as diamond
# "ltgt-diamond-tag" # Enable ligation for <> as diamond-shaped empty HTML/XML tag
# "ltgt-slash-tag" # Enable ligation for </, /> and </>
# "brst" # Center asterisk in (* and *)
"slash-asterisk" # Shift asterisk in /* and */
"kern-dotty" # Move connecting dotty punctuations closer, like for ::, :: # and ...
# "kern-bars" # Move consecutive bars closer, like for ||, ||| and //
"center-ops" # Vertically align some of the operators (like *) to the center position it is before or after a "center" operator (like +)
# These put -. to the same height
# "center-op-trigger-plus-minus-l" # Plus (+) and Minus (-) will trigger other operator characters at left to be centered
# "center-op-trigger-plus-minus-r" # Plus (+) and Minus (-) will trigger other operator characters at right to be centered
# These put *= to the same height
# "center-op-trigger-equal-l" # Equal (=) will trigger other operator characters at left to be centered
# "center-op-trigger-equal-r" # Equal (=) will trigger other operator characters at right to be centered
"center-op-trigger-bar-l" # Bars (|) will trigger other operator characters at left to be centered
"center-op-trigger-bar-r" # Bars (|) will trigger other operator characters at right to be centered
"center-op-trigger-angle-inside" # Less (<) and Greater (>) will trigger other operator characters at inside to be centered
"center-op-trigger-angle-outside" # Less (<) and Greater (>) will trigger other operator characters at outside to be centered
# "center-op-influence-dot" # Treat dot (.) as operator and perform chained centering
"center-op-influence-colon" # Treat colon (:) as operator and perform chained centering
"tilde-tilde" # Make 2 or more contiguous ASCII tildes (like ~~, ~~~ and ~~~~) connected as a wave line
# "tilde-tilde-tilde" # Make 3 or more contiguous ASCII tildes (like ~~~ and ~~~~) connected as a wave line
# "minus-minus" # Make 2 or more contiguous hyphen-minuses (like --, --- and ----) connected as a straight solid line
# "minus-minus-minus" # Make 3 or more contiguous hyphen-minuses (like --- and ----) connected as a straight solid line
# "plus-plus" # Make 2 or more contiguous plus signs (like ++, +++ and ++++) connected.
# "plus-plus-plus" # Make 3 or more contiguous plus signs (like +++ and ++++) connected.
# "underscore-underscore" # Make 2 or more contiguous underscores (like __, ___ and ____) connected
# "underscore-underscore-underscore" # Make 3 or more contiguous underscores (like ___ and ____) connected
# "hash-hash" # Make 2 or more contiguous hash signs (number signs) (like ##, ### and ####) connected
# "hash-hash-hash" # Make 3 or more contiguous hash signs (number signs) (like ## and ###) connected
# "logic" # Enable ligation for /\ and \/
# "llgg" # Enable ligation for <<, >> and other angle-bracket chaining
# "llggeq" # Enable ligation for <<=, >>= as shift operator
# "html-comment" # Enable ligation for <!-- and <!---
# "colon-greater-as-colon-arrow:" Transform :> into : and a narrow arrow
# "brace-bar" # Enable ligation for {| and |}
"brack-bar" # Enable ligation for [| and |]
];
};
};
}

View file

@ -0,0 +1,58 @@
# A thicker family of custom build of iosevkas. Optimized for Haskell and Nix.
final: prev:
let
inherit (prev) lib;
iosevkaConfig = final: import ./privateBuildPlan.nix;
mkIosevka =
mergedConfig:
prev.iosevka.override {
# HACK:
# Used to construct pname internally, appended to "Iosevka".
# We drop the prefix so it is not duplicated.
set = lib.removePrefix "Iosevka" mergedConfig.family;
privateBuildPlan = mergedConfig;
};
mkNerdFont =
font:
final.callPackage ../../lib/mkNerdFont.nix { } {
inherit font;
patcherArgs = [
"--complete"
"--careful"
"--name {/.}-NFM"
"--mono"
];
};
identityOverlay = _: _: { };
overlays =
let
# Useless complexity just for the fun
n-airyToList = acc: x: {
value = acc ++ [ x ];
__functor = self: n-airyToList self.value;
};
combinations = lib.crossLists (n-airyToList [ ]) [
(import ./spacings.nix)
([ identityOverlay ] ++ import ./variants.nix)
];
in
map ({ value, ... }: lib.composeManyExtensions value) combinations;
iosevkas = lib.genAttrs' overlays (
overlay:
let
mergedConfig = lib.fix (lib.extends overlay iosevkaConfig);
in
lib.nameValuePair mergedConfig.family (mkIosevka mergedConfig)
);
iosevka-nerds = builtins.mapAttrs (_: mkNerdFont) iosevkas;
in
iosevkas
// {
nerd-fonts = prev.nerd-fonts // iosevka-nerds;
}

View file

@ -0,0 +1,147 @@
# Guide: https://github.com/be5invis/Iosevka/blob/main/doc/custom-build.md
{
family = "Iosevka";
serifs = "sans";
variants.design = {
ampersand = "et-tailed";
capital-q = "crossing";
capital-z = "straight-serifless-with-crossbar";
cent = "open";
dollar = "open";
lig-double-arrow-bar = "with-notch";
lig-equal-chain = "with-notch";
lig-hyphen-chain = "with-notch";
lig-plus-chain = "with-notch";
lig-single-arrow-bar = "with-notch";
lower-lambda = "tailed-turn";
# number-sign = "slanted";
percent = "rings-continuous-slash-also-connected";
seven = "straight-serifless-crossbar";
brace = "curly";
};
variants.italic = {
v = "cursive-serifless";
w = "cursive-serifless";
};
weights = {
Regular.shape = 420;
Regular.menu = 400;
Regular.css = 400;
Medium.shape = 550;
Medium.menu = 500;
Medium.css = 500;
Bold.shape = 700;
Bold.menu = 700;
Bold.css = 700;
};
widths = {
Normal.shape = 500;
Normal.menu = 5;
Normal.css = "normal";
};
slopes = {
Upright.angle = 0;
Upright.css = "normal";
Upright.menu = "upright";
Upright.shape = "upright";
Italic.angle = 9.4;
Italic.shape = "italic";
Italic.menu = "italic";
Italic.css = "italic";
};
# The ligatures are defined based on Haskell and Nix usages.
#
# Follow: <https://github.com/be5invis/Iosevka/blob/main/params/ligation-set.toml> for more details
ligations.enables = [
"arrow-l" # Left-pointing arrows
# "arrow-l-hyphen" # Left-pointing arrows with hyphen-minus (-) being the rod
# "arrow-l-equal" # Left-pointing arrows with equal sign (=) being the rod
# "arrow-l-wave" # Left-pointing arrows with tilde (~) being the rod
"arrow-r" # Right-pointing arrows
# "arrow-r-hyphen" # Right-pointing arrows with hyphen-minus (-) being the rod
# "arrow-r-equal" # Right-pointing arrows with equal sign (=) being the rod
# "arrow-r-wave" # Right-pointing arrows with tilde (~) being the rod
"arrow-lr" # Dual-pointing arrows
# "arrow-lr-hyphen" # Dual-pointing arrows with hyphen-minus (-) being the rod
# "arrow-lr-equal" # Dual-pointing arrows with equal sign (=) being the rod
# "arrow-lr-wave" # Dual-pointing arrows with tilde (~) being the rod
"counter-arrow-l" # Left-pointing counter-arrows
# "counter-arrow-l-hyphen" # Left-pointing counter-arrows with hyphen-minus (-) being the rod
# "counter-arrow-l-equal" # Left-pointing counter-arrows with equal sign (=) being the rod
# "counter-arrow-l-wave" # Left-pointing counter-arrows with tilde (~) being the rod
"counter-arrow-r" # Right-pointing counter-arrows
# "counter-arrow-r-hyphen" # Right-pointing counter-arrows with hyphen-minus (-) being the rod
# "counter-arrow-r-equal" # Right-pointing counter-arrows with equal sign (=) being the rod
# "counter-arrow-r-wave" # Right-pointing counter-arrows with tilde (~) being the rod
# "eqeqeq" # Enable special ligation for === with triple lines
"eqeq" # Enable ligation for == and ===
"lteq" # Enable ligation for <= as less-than-or-equal sign
# "eqlt" # Enable ligation for =< as less-than-or-equal sign
"gteq" # Enable ligation for >= as greater-than-or-equal sign
# "lteq-separate" # Display <= as separate shape
# "eqlt-separate" # Display =< as separate shape
# "gteq-separate" # Display >= as separate shape
# "exeqeqeq" # Enable special ligation for !=== with triple lines
# "exeqeq" # Enable special ligation for !== with triple lines
# "eqexeq" # Enable special ligation for =!= with triple lines
# "eqexeq-dl" # Enable special ligation for =!= with double lines
# "exeq" # Enable ligation for != and !==
# "tildeeq" # Enable ligation for ~= as inequality
# "eqslasheq" # Enable special triple-line ligation for =/= as inequality
"slasheq" # Enable ligation for /= and =/= as inequality
"trig" # Enable ligation for <|, |> , <||, and other bar-and-angle-bracket symbols
# "ltgt-ne" # Enable ligation for <> as inequality
"ltgt-diamond" # Enable ligation for <> as diamond
# "ltgt-diamond-tag" # Enable ligation for <> as diamond-shaped empty HTML/XML tag
# "ltgt-slash-tag" # Enable ligation for </, /> and </>
"brst" # Center asterisk in (* and *)
"slash-asterisk" # Shift asterisk in /* and */
"kern-dotty" # Move connecting dotty punctuations closer, like for ::, :: # and ...
# "kern-bars" # Move consecutive bars closer, like for ||, ||| and //
"center-ops" # Vertically align some of the operators (like *) to the center position it is before or after a "center" operator (like +)
# These put -. to the same height
# "center-op-trigger-plus-minus-l" # Plus (+) and Minus (-) will trigger other operator characters at left to be centered
# "center-op-trigger-plus-minus-r" # Plus (+) and Minus (-) will trigger other operator characters at right to be centered
# These put *= to the same height
# "center-op-trigger-equal-l" # Equal (=) will trigger other operator characters at left to be centered
# "center-op-trigger-equal-r" # Equal (=) will trigger other operator characters at right to be centered
"center-op-trigger-bar-l" # Bars (|) will trigger other operator characters at left to be centered
"center-op-trigger-bar-r" # Bars (|) will trigger other operator characters at right to be centered
"center-op-trigger-angle-inside" # Less (<) and Greater (>) will trigger other operator characters at inside to be centered
"center-op-trigger-angle-outside" # Less (<) and Greater (>) will trigger other operator characters at outside to be centered
# "center-op-influence-dot" # Treat dot (.) as operator and perform chained centering
"center-op-influence-colon" # Treat colon (:) as operator and perform chained centering
"tilde-tilde" # Make 2 or more contiguous ASCII tildes (like ~~, ~~~ and ~~~~) connected as a wave line
# "tilde-tilde-tilde" # Make 3 or more contiguous ASCII tildes (like ~~~ and ~~~~) connected as a wave line
# "minus-minus" # Make 2 or more contiguous hyphen-minuses (like --, --- and ----) connected as a straight solid line
# "minus-minus-minus" # Make 3 or more contiguous hyphen-minuses (like --- and ----) connected as a straight solid line
# "plus-plus" # Make 2 or more contiguous plus signs (like ++, +++ and ++++) connected.
# "plus-plus-plus" # Make 3 or more contiguous plus signs (like +++ and ++++) connected.
# "underscore-underscore" # Make 2 or more contiguous underscores (like __, ___ and ____) connected
# "underscore-underscore-underscore" # Make 3 or more contiguous underscores (like ___ and ____) connected
# "hash-hash" # Make 2 or more contiguous hash signs (number signs) (like ##, ### and ####) connected
# "hash-hash-hash" # Make 3 or more contiguous hash signs (number signs) (like ## and ###) connected
# "logic" # Enable ligation for /\ and \/
# "llgg" # Enable ligation for <<, >> and other angle-bracket chaining
# "llggeq" # Enable ligation for <<=, >>= as shift operator
# "html-comment" # Enable ligation for <!-- and <!---
# "colon-greater-as-colon-arrow:" Transform :> into : and a narrow arrow
# "brace-bar" # Enable ligation for {| and |}
"brack-bar" # Enable ligation for [| and |]
"markdown-checkboxes" # Enable ligation for Markdown checkboxes like - [ ] and - [x]
];
}

View file

@ -0,0 +1,24 @@
let
list = [
{
adjustFamily = old: old;
spacing = "normal";
}
# Iosevka + Ghostty makes "…" display in a odd way.
# We use "term" width to avoid this.
# https://github.com/ghostty-org/ghostty/discussions/10335
{
adjustFamily = old: old + "Term";
spacing = "term";
}
];
in
map (
{ adjustFamily, spacing }:
final: prev: {
family = adjustFamily prev.family;
inherit spacing;
}
) list

View file

@ -0,0 +1,93 @@
let
list = [
{
code = "ss01";
name = "Andale Mono";
}
{
code = "ss02";
name = "Anonymous Pro";
}
{
code = "ss03";
name = "Consolas";
}
{
code = "ss04";
name = "Menlo";
}
{
code = "ss05";
name = "Fira Mono";
}
{
code = "ss06";
name = "Liberation Mono";
}
{
code = "ss07";
name = "Monaco";
}
{
code = "ss08";
name = "Pragmata Pro";
}
{
code = "ss09";
name = "Source Code Pro";
}
{
code = "ss10";
name = "Envy Code R";
}
{
code = "ss11";
name = "X Window";
}
{
code = "ss12";
name = "Ubuntu Mono";
}
{
code = "ss13";
name = "Lucida";
}
{
code = "ss14";
name = "JetBrains Mono";
}
{
code = "ss15";
name = "IBM Plex Mono";
}
{
code = "ss16";
name = "PT Mono";
}
{
code = "ss17";
name = "Recursive Mono";
}
{
code = "ss18";
name = "Input Mono";
}
{
code = "ss20";
name = "Curly";
}
];
in
map (
{ name, code }:
let
shortName = builtins.replaceStrings [ " " ] [ "" ] name;
in
final: prev: {
family = prev.family + "${shortName}";
variants = prev.variants // {
inherits = code;
};
}
) list

6
nix/overlays/npins.nix Normal file
View file

@ -0,0 +1,6 @@
let
sources = import ../../npins;
in
final: _: {
npins = import sources.npins { pkgs = final; };
}

View file

@ -1,6 +0,0 @@
let
sources = import ../../npins;
in
_: _: {
unsafe-emacs28 = (import sources.pin-emacs28 { }).emacs;
}

View file

@ -1,7 +0,0 @@
let
sources = import ../../npins;
in
_: _: {
# Isabelle version 2023
isabelle-2023 = (import sources.pin-isabelle { }).isabelle;
}

View file

@ -1,8 +0,0 @@
let
sources = import ../../npins;
in
_: _: {
# Wireshark bug
# https://gitlab.com/wireshark/wireshark/-/issues/19574
inherit (import sources.pin-wireshark { }) wireshark;
}

View file

@ -1,5 +1,6 @@
{ {
fetchFromGitHub, fetchFromGitHub,
fetchpatch,
stdenvNoCC, stdenvNoCC,
lib, lib,
}: }:
@ -14,6 +15,31 @@ stdenvNoCC.mkDerivation (finalAttrs: {
hash = "sha256-p3wfR28DH6V8BHn9DT10d09Yq3mdbBecWwlR1CdDYUA="; hash = "sha256-p3wfR28DH6V8BHn9DT10d09Yq3mdbBecWwlR1CdDYUA=";
}; };
patches =
let
mkPRPatch =
{ number, hash }:
fetchpatch {
name = "ai-blocklist-patch-PR${toString number}";
url = "https://patch-diff.githubusercontent.com/raw/laylavish/uBlockOrigin-HUGE-AI-Blocklist/pull/${toString number}.patch";
inherit hash;
};
in
map mkPRPatch [
{
number = 286;
hash = "sha256-ijkOCtHCmiSUTpVfGIumPijr8xscRDBTtu7XfTMRiXY=";
}
{
number = 300;
hash = "sha256-oso0e1+CM7hmglNZpFgaz51OU2Dhuuo7mXayTbva+vY=";
}
{
number = 324;
hash = "sha256-/FFPFZpIQSPE7XXeFEcmVv8g8wg5JFIgKoYUTthLg5A=";
}
];
# Build takes no time # Build takes no time
preferLocalBuild = true; preferLocalBuild = true;
allowSubstitutes = false; allowSubstitutes = false;

View file

@ -0,0 +1,28 @@
{
haskellPackages,
haskell,
fetchFromGitHub,
fetchpatch,
}:
let
inherit (haskell.lib.compose) appendPatches justStaticExecutables;
drv = haskellPackages.callCabal2nix "hs-speedscope" (fetchFromGitHub {
owner = "mpickering";
repo = "hs-speedscope";
rev = "c34ac00d35f5db52e14dc5b9ba5b228aa9953398";
hash = "sha256-sVTIPIUophj/sgNp1ox1eWHa19zhsZJGjvQt5hUfYk4=";
}) { };
in
appendPatches [
(fetchpatch {
name = "fix-event-dropping-logic";
url = "https://github.com/mpickering/hs-speedscope/commit/1420a9615dc0cafc3051c87cad8a8c463550fcda.patch";
hash = "sha256-kOaMhXHAxSQRhvxhF0uDSD1Us+ywNJcqnrKDfNaU5hA=";
})
(fetchpatch {
name = "passing-rts-options";
url = "https://github.com/mpickering/hs-speedscope/commit/12ad16062325817242f0b7ebefabb40b9af4aa3e.patch";
hash = "sha256-AcL8t+D2xccKGVCCASXgP8t1K4EfHQmDpn2ZmR2Ppxk=";
})
] (justStaticExecutables drv)

View file

@ -0,0 +1,40 @@
if ! type mullvad >/dev/null; then
echo -n "Mullvad unavailable"
exit 1
fi
MULLVAD_STATUS="$(mullvad status -j)"
function xmobarColor {
fg="$1"
x="$2"
echo -n "<fc=$fg>$x</fc>"
}
case "$(echo "$MULLVAD_STATUS" | jq -r ".state")" in
connected)
function has-feature {
echo "$MULLVAD_STATUS" | jq --exit-status ".details.feature_indicators|contains([\"$1\"])" >/dev/null
}
if has-feature "LockdownMode"; then
xmobarColor "green" "Mullvad On "
else
xmobarColor "orange" "Mullvad On"
fi
COUNTRY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.country')"
CITY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.city')"
echo -n " ($COUNTRY,$CITY)"
;;
disconnected)
function is-locked-down {
echo "$MULLVAD_STATUS" | jq --exit-status ".details.locked_down" >/dev/null
}
if is-locked-down "LockdownMode"; then
xmobarColor "red" "Mullvad Off "
else
xmobarColor "orange" "Mullvad Off"
fi
;;
esac

View file

@ -0,0 +1,14 @@
{
writeShellApplication,
jq,
mullvad,
}:
writeShellApplication {
name = "mullvad-status";
runtimeInputs = [
mullvad
jq
];
text = builtins.readFile ./mullvad-status.sh;
}

View file

@ -13,8 +13,8 @@ let
domain = "git.confusedcompiler.org"; domain = "git.confusedcompiler.org";
owner = "leana8959"; owner = "leana8959";
repo = "ruler"; repo = "ruler";
rev = "addc8a75dcfd64d5f40516f2526210c8fc163e70"; rev = "0e08e66f48e6ba5483a7a39456a753581587151f";
hash = "sha256-6dnZgkeG0p2O4ROtrFoG+jUmAQPWKHodKzUdVrBgcIM="; hash = "sha256-ay8V35FuXF5eFvWjH87PDzMSQTRALHDRBiZNdOC3gFg=";
}) { }; }) { };
cabalOverrides = o: { cabalOverrides = o: {

View file

@ -2,6 +2,7 @@
writeShellApplication, writeShellApplication,
tmux, tmux,
procps, procps,
fd,
fzf, fzf,
gnused, gnused,
lib, lib,
@ -42,6 +43,7 @@ let
tmux-sessionizer = writeShellApplication { tmux-sessionizer = writeShellApplication {
name = "tmux-sessionizer"; name = "tmux-sessionizer";
runtimeInputs = [ runtimeInputs = [
fd
fzf fzf
gnused gnused
]; ];

View file

@ -1,39 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
libiconv,
darwin,
zlib,
}:
rustPlatform.buildRustPackage (
finalAttrs:
let
cargoToml = fromTOML (builtins.readFile (finalAttrs.src + "/Cargo.toml"));
cargoLock = finalAttrs.src + "/Cargo.lock";
in
{
pname = "tokei";
version = cargoToml.package.version;
src = fetchFromGitHub {
owner = "XAMPPRocky";
repo = "tokei";
rev = "v13.0.0-alpha.9";
hash = "sha256-OSIJYSUwc8SvszEOMgt+d/ljCW2jtBkPw6buof4JpUc=";
};
cargoLock.lockFile = cargoLock;
buildInputs = lib.optionals stdenv.isDarwin [
libiconv
darwin.Security
];
checkInputs = lib.optionals stdenv.isDarwin [ zlib ];
# enable all output formats
buildFeatures = [ "all" ];
}
)

View file

@ -7,6 +7,6 @@ in
(import sources.nixpkgs { (import sources.nixpkgs {
overlays = map scopeOverlay [ overlays = map scopeOverlay [
(import ./overlay.nix) (import ./overlay.nix)
(import ../overlays/iosevka.nix) (import ../overlays/iosevka)
]; ];
}).export }).export

View file

@ -9,8 +9,15 @@
*/ */
# Generated by npins. Do not modify; will be overwritten regularly # Generated by npins. Do not modify; will be overwritten regularly
let let
data = builtins.fromJSON (builtins.readFile ./sources.json); # Backwards-compatibly make something that previously didn't take any arguments take some
version = data.version; # The function must return an attrset, and will unfortunately be eagerly evaluated
# Same thing, but it catches eval errors on the default argument so that one may still call it with other arguments
mkFunctor =
fn:
let
e = builtins.tryEval (fn { });
in
(if e.success then e.value else { error = fn { }; }) // { __functor = _self: fn; };
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range = range =
@ -21,7 +28,6 @@ let
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
concatMapStrings = f: list: concatStrings (map f list);
concatStrings = builtins.concatStringsSep ""; concatStrings = builtins.concatStringsSep "";
# If the environment variable NPINS_OVERRIDE_${name} is set, then use # If the environment variable NPINS_OVERRIDE_${name} is set, then use
@ -48,19 +54,61 @@ let
mkSource = mkSource =
name: spec: name: spec:
{
pkgs ? null,
}:
assert spec ? type; assert spec ? type;
let let
# Unify across builtin and pkgs fetchers.
# `fetchGit` requires a wrapper because of slight API differences.
fetchers =
if pkgs == null then
{
inherit (builtins) fetchTarball fetchurl;
# For some fucking reason, fetchGit has a different signature than the other builtin fetchers …
fetchGit = args: (builtins.fetchGit args).outPath;
}
else
{
fetchTarball =
{
url,
sha256,
}:
pkgs.fetchzip {
inherit url sha256;
extension = "tar";
};
inherit (pkgs) fetchurl;
fetchGit =
{
url,
submodules,
rev,
name,
narHash,
}:
pkgs.fetchgit {
inherit url rev name;
fetchSubmodules = submodules;
hash = narHash;
};
};
# Dispatch to the correct code path based on the type
path = path =
if spec.type == "Git" then if spec.type == "Git" then
mkGitSource spec mkGitSource fetchers spec
else if spec.type == "GitRelease" then else if spec.type == "GitRelease" then
mkGitSource spec mkGitSource fetchers spec
else if spec.type == "PyPi" then else if spec.type == "PyPi" then
mkPyPiSource spec mkPyPiSource fetchers spec
else if spec.type == "Channel" then else if spec.type == "Channel" then
mkChannelSource spec mkChannelSource fetchers spec
else if spec.type == "Tarball" then else if spec.type == "Tarball" then
mkTarballSource spec mkTarballSource fetchers spec
else if spec.type == "Container" then
mkContainerSource pkgs spec
else else
builtins.throw "Unknown source type ${spec.type}"; builtins.throw "Unknown source type ${spec.type}";
in in
@ -78,22 +126,26 @@ let
}; };
mkGitSource = mkGitSource =
{
fetchTarball,
fetchGit,
...
}:
{ {
repository, repository,
revision, revision,
url ? null, url ? null,
submodules, submodules,
hash, hash,
branch ? null,
... ...
}: }:
assert repository ? type; assert repository ? type;
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository # At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
# In the latter case, there we will always be an url to the tarball # In the latter case, there we will always be an url to the tarball
if url != null && !submodules then if url != null && !submodules then
builtins.fetchTarball { fetchTarball {
inherit url; inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes sha256 = hash;
} }
else else
let let
@ -104,6 +156,8 @@ let
"https://github.com/${repository.owner}/${repository.repo}.git" "https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab" then else if repository.type == "GitLab" then
"${repository.server}/${repository.repo_path}.git" "${repository.server}/${repository.repo_path}.git"
else if repository.type == "Forgejo" then
"${repository.server}/${repository.owner}/${repository.repo}.git"
else else
throw "Unrecognized repository type ${repository.type}"; throw "Unrecognized repository type ${repository.type}";
urlToName = urlToName =
@ -118,51 +172,91 @@ let
"${if matched == null then "source" else builtins.head matched}${appendShort}"; "${if matched == null then "source" else builtins.head matched}${appendShort}";
name = urlToName url revision; name = urlToName url revision;
in in
builtins.fetchGit { fetchGit {
rev = revision; rev = revision;
inherit name; narHash = hash;
# hash = hash;
inherit url submodules; inherit name submodules url;
}; };
mkPyPiSource = mkPyPiSource =
{ fetchurl, ... }:
{ {
url, url,
hash, hash,
... ...
}: }:
builtins.fetchurl { fetchurl {
inherit url; inherit url;
sha256 = hash; sha256 = hash;
}; };
mkChannelSource = mkChannelSource =
{ fetchTarball, ... }:
{ {
url, url,
hash, hash,
... ...
}: }:
builtins.fetchTarball { fetchTarball {
inherit url; inherit url;
sha256 = hash; sha256 = hash;
}; };
mkTarballSource = mkTarballSource =
{ fetchTarball, ... }:
{ {
url, url,
locked_url ? url, locked_url ? url,
hash, hash,
... ...
}: }:
builtins.fetchTarball { fetchTarball {
url = locked_url; url = locked_url;
sha256 = hash; sha256 = hash;
}; };
sources = mkContainerSource =
if version == 5 then pkgs:
builtins.mapAttrs mkSource data.pins {
image_name,
image_tag,
image_digest,
...
}:
if pkgs == null then
builtins.throw "container sources require passing in a Nixpkgs value: https://github.com/andir/npins/blob/master/README.md#using-the-nixpkgs-fetchers"
else else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"; pkgs.dockerTools.pullImage {
imageName = image_name;
imageDigest = image_digest;
finalImageTag = image_tag;
};
sources = mkFunctor (
{
input ? ./sources.json,
}:
let
data =
if builtins.isPath input then
# while `readFile` will throw an error anyways if the path doesn't exist,
# we still need to check beforehand because *our* error can be caught but not the one from the builtin
# *piegames sighs*
if builtins.pathExists input then
builtins.fromJSON (builtins.readFile input)
else
throw "Input path ${toString input} does not exist"
else if builtins.isAttrs input then
input
else
throw "Unsupported input type ${builtins.typeOf input}, must be a path or an attrset";
version = data.version;
in
if version == 7 then
builtins.mapAttrs (name: spec: mkFunctor (mkSource name spec)) data.pins
else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"
);
in in
sources sources

View file

@ -14,7 +14,24 @@
"version": "0.15.0", "version": "0.15.0",
"revision": "564595d0ad4be7277e07fa63b5a991b3c645655d", "revision": "564595d0ad4be7277e07fa63b5a991b3c645655d",
"url": "https://api.github.com/repos/ryantm/agenix/tarball/0.15.0", "url": "https://api.github.com/repos/ryantm/agenix/tarball/0.15.0",
"hash": "01dhrghwa7zw93cybvx4gnrskqk97b004nfxgsys0736823956la" "hash": "sha256-ipqShkBmHKC9ft1ZAsA6aeKps32k7+XZSPwfxeHLsAU="
},
"cornelis": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "agda",
"repo": "cornelis"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "v2.7.1",
"revision": "40298eed11eb877526b3ab3f648d8a7bff9e2f50",
"url": "https://api.github.com/repos/agda/cornelis/tarball/refs/tags/v2.7.1",
"hash": "sha256-h18AeggnOSSjy0RLJIkWsSID1BJTarOV9F1APKusIrE=",
"frozen": true
}, },
"disko": { "disko": {
"type": "GitRelease", "type": "GitRelease",
@ -30,37 +47,7 @@
"version": "v1.11.0", "version": "v1.11.0",
"revision": "cdf8deded8813edfa6e65544f69fdd3a59fa2bb4", "revision": "cdf8deded8813edfa6e65544f69fdd3a59fa2bb4",
"url": "https://api.github.com/repos/nix-community/disko/tarball/v1.11.0", "url": "https://api.github.com/repos/nix-community/disko/tarball/v1.11.0",
"hash": "13brimg7z7k9y36n4jc1pssqyw94nd8qvgfjv53z66lv4xkhin92" "hash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0="
},
"dix": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "bloxx12",
"repo": "dix"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "v1.3.0",
"revision": "ba315562f8c4a957dc9c058d75a43419e3307f63",
"url": "https://api.github.com/repos/bloxx12/dix/tarball/v1.3.0",
"hash": "00gr8b6i9xis9kmbblvnafjpaa2hk18bs0i3pxisyzibp928bv2z"
},
"eepy": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "cafkafk",
"repo": "eepy"
},
"branch": "main",
"submodules": false,
"revision": "2092e67cf48f62754cdeb45ced1e5670d11fddc3",
"url": "https://github.com/cafkafk/eepy/archive/2092e67cf48f62754cdeb45ced1e5670d11fddc3.tar.gz",
"hash": "0rddwwrkbbgcdava542qg1wb3ca9d6g24l9gp4ghp55f04p55p79",
"frozen": true
}, },
"fcitx5-table-extra": { "fcitx5-table-extra": {
"type": "Git", "type": "Git",
@ -73,7 +60,7 @@
"submodules": true, "submodules": true,
"revision": "cba16e03fd43b1ee8a15d20e14ecf0fb1c6762fa", "revision": "cba16e03fd43b1ee8a15d20e14ecf0fb1c6762fa",
"url": null, "url": null,
"hash": "0ryb3cng4py2zrm95p5ial9w13p7w4ws0bl0lddrij1sq42kzg8l", "hash": "sha256-FL0/BcE6yJhbo4AuoDnh547AE1Wx3JJq/sJf8iwby2c=",
"frozen": true "frozen": true
}, },
"flake-compat": { "flake-compat": {
@ -88,7 +75,7 @@
"submodules": false, "submodules": false,
"revision": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", "revision": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"url": "https://git.lix.systems/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz", "url": "https://git.lix.systems/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz",
"hash": "0g4izwn5k7qpavlk3w41a92rhnp4plr928vmrhc75041vzm3vb1l", "hash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"frozen": true "frozen": true
}, },
"ghostty-dev": { "ghostty-dev": {
@ -100,9 +87,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "45abfa91905a5dafdddb711dd9402d45947cdfbb", "revision": "34eaad6fc86e086f469e81769a793be20d1e169b",
"url": "https://github.com/ghostty-org/ghostty/archive/45abfa91905a5dafdddb711dd9402d45947cdfbb.tar.gz", "url": "https://github.com/ghostty-org/ghostty/archive/34eaad6fc86e086f469e81769a793be20d1e169b.tar.gz",
"hash": "1pmfsxd65yva3ij2v20xb5r1hf3mx6lqr593nivnvsi345jnfh1y" "hash": "sha256-628LfxEPA0tiCjh6syMupdrGvVb6twhoJTtUFKDbqBQ="
}, },
"hategroup-dnsbl": { "hategroup-dnsbl": {
"type": "Git", "type": "Git",
@ -115,7 +102,7 @@
"submodules": false, "submodules": false,
"revision": "cc19c050997d5f54014bb20c764b131e003dfb17", "revision": "cc19c050997d5f54014bb20c764b131e003dfb17",
"url": "https://github.com/chigh/hategroup-dnsbl/archive/cc19c050997d5f54014bb20c764b131e003dfb17.tar.gz", "url": "https://github.com/chigh/hategroup-dnsbl/archive/cc19c050997d5f54014bb20c764b131e003dfb17.tar.gz",
"hash": "1x1nhy0717bav35z6aid0224izmcsrg3knys64xszhslh266p429", "hash": "sha256-SZBrjIBUw687MdrbOV7WrP5IhAAtKvPL2GqdcICHNvQ=",
"frozen": true "frozen": true
}, },
"home-manager": { "home-manager": {
@ -125,11 +112,11 @@
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager" "repo": "home-manager"
}, },
"branch": "release-25.11", "branch": "master",
"submodules": false, "submodules": false,
"revision": "6bd04da47cfb48dfd15eabf08364b78ad894f5b2", "revision": "4e8b7bef66c60735982369f3151b93e62fe37da7",
"url": "https://github.com/nix-community/home-manager/archive/6bd04da47cfb48dfd15eabf08364b78ad894f5b2.tar.gz", "url": "https://github.com/nix-community/home-manager/archive/4e8b7bef66c60735982369f3151b93e62fe37da7.tar.gz",
"hash": "1wvysqiybcyf2hzvvpja2522fqhk45554j0b07h3s7zhzc2056ia" "hash": "0jva394l5s9vdrwfffvb8f4181i8832g6hffasn8nc8aqyn1wq5f"
}, },
"infuse": { "infuse": {
"type": "GitRelease", "type": "GitRelease",
@ -146,7 +133,7 @@
"version": "v2.4", "version": "v2.4",
"revision": "c7da66119bb3502a59402cd2d1688a3f0a02577a", "revision": "c7da66119bb3502a59402cd2d1688a3f0a02577a",
"url": "https://codeberg.org/api/v1/repos/amjoseph/infuse.nix/archive/v2.4.tar.gz", "url": "https://codeberg.org/api/v1/repos/amjoseph/infuse.nix/archive/v2.4.tar.gz",
"hash": "1s3d1v27jxsw5050qi0bq6agpf5gpw6jmcyigzpdgwfm9d6w6wz1" "hash": "sha256-4XPDTUvV8dfuf9GzKg2/r7j7lMELRAwKKFx3ecQObeg="
}, },
"nil": { "nil": {
"type": "Git", "type": "Git",
@ -159,7 +146,7 @@
"submodules": false, "submodules": false,
"revision": "504599f7e555a249d6754698473124018b80d121", "revision": "504599f7e555a249d6754698473124018b80d121",
"url": "https://github.com/oxalica/nil/archive/504599f7e555a249d6754698473124018b80d121.tar.gz", "url": "https://github.com/oxalica/nil/archive/504599f7e555a249d6754698473124018b80d121.tar.gz",
"hash": "1mzx60999jciq2ax1l5ajmks6fb3cmjavn7fsyh4aysvcdgzrj6p" "hash": "sha256-18j8X2Nbe0Wg1+7YrWRlYzmjZ5Wq0NCVwJHJlBIw/dc="
}, },
"nix-monitored": { "nix-monitored": {
"type": "Git", "type": "Git",
@ -172,7 +159,7 @@
"submodules": false, "submodules": false,
"revision": "60f3baa4701d58eab86c2d1d9c3d7e820074d461", "revision": "60f3baa4701d58eab86c2d1d9c3d7e820074d461",
"url": "https://github.com/ners/nix-monitored/archive/60f3baa4701d58eab86c2d1d9c3d7e820074d461.tar.gz", "url": "https://github.com/ners/nix-monitored/archive/60f3baa4701d58eab86c2d1d9c3d7e820074d461.tar.gz",
"hash": "1rdyjmxkvyqd5blbzbwfv2b99krx6rkpdzi1ckyby8i676gf9hv7", "hash": "sha256-Z8PknjkmIr/8ZCH+dmc2Pc+UltiOr7/oKg37PXuVvuU=",
"frozen": true "frozen": true
}, },
"nixos-hardware": { "nixos-hardware": {
@ -184,9 +171,9 @@
}, },
"branch": "master", "branch": "master",
"submodules": false, "submodules": false,
"revision": "40b1a28dce561bea34858287fbb23052c3ee63fe", "revision": "9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca",
"url": "https://github.com/NixOS/nixos-hardware/archive/40b1a28dce561bea34858287fbb23052c3ee63fe.tar.gz", "url": "https://github.com/NixOS/nixos-hardware/archive/9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca.tar.gz",
"hash": "197v6xxdq5j4w8kil6q21ij9x6ng8z6j72brkwwjim23798c2c4n" "hash": "sha256-3ymIZ8s3+hu7sDl/Y48o6bwMxorfKrmn97KuWiw1vjY="
}, },
"nixpkgs": { "nixpkgs": {
"type": "Git", "type": "Git",
@ -195,11 +182,27 @@
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs" "repo": "nixpkgs"
}, },
"branch": "nixos-25.11-small", "branch": "nixos-unstable",
"submodules": false, "submodules": false,
"revision": "a35a20f6d3d51b6b42b68a6879701f7d87381896", "revision": "9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5",
"url": "https://github.com/nixos/nixpkgs/archive/a35a20f6d3d51b6b42b68a6879701f7d87381896.tar.gz", "url": "https://github.com/nixos/nixpkgs/archive/9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5.tar.gz",
"hash": "00781d4nhmqzvxph2lpsj3kika3v8y0nigfadr6y8lvzxrcppkfj" "hash": "1h3g9iyfj0xwz7i4ywcxjpp3p9xk7ahp563m0h1i25697sc2lrji"
},
"npins": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "andir",
"repo": "npins"
},
"pre_releases": false,
"version_upper_bound": "0.5",
"release_prefix": null,
"submodules": false,
"version": "0.4.0",
"revision": "52904b878c2db61e062b63beb07784d41f98c765",
"url": "https://api.github.com/repos/andir/npins/tarball/0.4.0",
"hash": "sha256-ksOXi7u4bpHyWNHwkUR62fdwKowPW5GqBS7MA7Apwh4="
}, },
"nur": { "nur": {
"type": "Git", "type": "Git",
@ -210,9 +213,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "68e3e935ba29960813ab1ecf2852a0ecbe8d5946", "revision": "bea55329cc806cfe3b826f7baab0503fd6b6892f",
"url": "https://github.com/nix-community/nur/archive/68e3e935ba29960813ab1ecf2852a0ecbe8d5946.tar.gz", "url": "https://github.com/nix-community/nur/archive/bea55329cc806cfe3b826f7baab0503fd6b6892f.tar.gz",
"hash": "02pmkhd6ram43qnmirh3z46w1l31rmm16mhkx36jaxhpnzlwgr2i" "hash": "sha256-B8+OiD8kYXtFc4vJc9+d7q8+MOic8VYR0G8wbSHjuSc="
}, },
"pin-emacs28": { "pin-emacs28": {
"type": "Git", "type": "Git",
@ -225,7 +228,7 @@
"submodules": false, "submodules": false,
"revision": "93c121f6888986f9148a33afd39d714f4b2ca98c", "revision": "93c121f6888986f9148a33afd39d714f4b2ca98c",
"url": "https://github.com/NixOS/nixpkgs/archive/93c121f6888986f9148a33afd39d714f4b2ca98c.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/93c121f6888986f9148a33afd39d714f4b2ca98c.tar.gz",
"hash": "198p4lv3zqw3s6j3yflgic0jxig4y0vsb1k8433jv227ks89kqdg", "hash": "sha256-r+GZkJ5HiC3HIGiGpTfw5MUuAYuPOj+k0YPjPzYlF6U=",
"frozen": true "frozen": true
}, },
"pin-florashell": { "pin-florashell": {
@ -239,7 +242,7 @@
"submodules": false, "submodules": false,
"revision": "7282cb574e0607e65224d33be8241eae7cfe0979", "revision": "7282cb574e0607e65224d33be8241eae7cfe0979",
"url": "https://github.com/NixOS/nixpkgs/archive/7282cb574e0607e65224d33be8241eae7cfe0979.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/7282cb574e0607e65224d33be8241eae7cfe0979.tar.gz",
"hash": "0klkpy7ah033y3cwj51a0l96lwmkqqvwgfv3kid4z9x5g2rqr0l5", "hash": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=",
"frozen": true "frozen": true
}, },
"pin-fourmolu": { "pin-fourmolu": {
@ -253,7 +256,7 @@
"submodules": false, "submodules": false,
"revision": "f6cf0e77542dd938f002652dd54391b973f792de", "revision": "f6cf0e77542dd938f002652dd54391b973f792de",
"url": "https://github.com/NixOS/nixpkgs/archive/f6cf0e77542dd938f002652dd54391b973f792de.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/f6cf0e77542dd938f002652dd54391b973f792de.tar.gz",
"hash": "1a8kcw1biyzmf5k8qjrji5fvgr8bbmi7fvf8pvfgjmf1df8rrcz1", "hash": "sha256-4bOckWvBVfncvshtd2JdC+W3XYkyS4xmcfX7uAJnE6k=",
"frozen": true "frozen": true
}, },
"pin-isabelle": { "pin-isabelle": {
@ -267,7 +270,7 @@
"submodules": false, "submodules": false,
"revision": "805a384895c696f802a9bf5bf4720f37385df547", "revision": "805a384895c696f802a9bf5bf4720f37385df547",
"url": "https://github.com/NixOS/nixpkgs/archive/805a384895c696f802a9bf5bf4720f37385df547.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/805a384895c696f802a9bf5bf4720f37385df547.tar.gz",
"hash": "1q7y5ygr805l5axcjhn0rn3wj8zrwbrr0c6a8xd981zh8iccmx0p", "hash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=",
"frozen": true "frozen": true
}, },
"pin-masna3shell": { "pin-masna3shell": {
@ -281,7 +284,7 @@
"submodules": false, "submodules": false,
"revision": "641d909c4a7538f1539da9240dedb1755c907e40", "revision": "641d909c4a7538f1539da9240dedb1755c907e40",
"url": "https://github.com/NixOS/nixpkgs/archive/641d909c4a7538f1539da9240dedb1755c907e40.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/641d909c4a7538f1539da9240dedb1755c907e40.tar.gz",
"hash": "10hpb1aw884k3zzcy1mhf47dqvfagiyx7kr6hg0p5xcwg04mkx8x", "hash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
"frozen": true "frozen": true
}, },
"pin-necro-man-nixpkgs": { "pin-necro-man-nixpkgs": {
@ -295,7 +298,7 @@
"submodules": false, "submodules": false,
"revision": "c58ed2fc0f592ebc280bfba077ea418ce10213d1", "revision": "c58ed2fc0f592ebc280bfba077ea418ce10213d1",
"url": "https://github.com/NixOS/nixpkgs/archive/c58ed2fc0f592ebc280bfba077ea418ce10213d1.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/c58ed2fc0f592ebc280bfba077ea418ce10213d1.tar.gz",
"hash": "1y5is3cjwsy9n5cqs8i7qc9kf8cny9yxzirzzspkqbrm51axv53i", "hash": "sha256-cZTdVSg1Lzyv/j/H333yliE3E8MnIo1ZsclrLtnQsfg=",
"frozen": true "frozen": true
}, },
"pin-vim-tw": { "pin-vim-tw": {
@ -309,7 +312,7 @@
"submodules": false, "submodules": false,
"revision": "c93c1b3413bd7e235fc22b469bc0d2feec332cf5", "revision": "c93c1b3413bd7e235fc22b469bc0d2feec332cf5",
"url": "https://github.com/NixOS/nixpkgs/archive/c93c1b3413bd7e235fc22b469bc0d2feec332cf5.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/c93c1b3413bd7e235fc22b469bc0d2feec332cf5.tar.gz",
"hash": "115sdkhyp0pm5rmag4gq0myg2rs20irisgnpf26zjfm92pw8isq4", "hash": "sha256-BOuI+BWpOvmNcNc+HXMEQmfxfAX4kadqLvWC6+FsuoQ=",
"frozen": true "frozen": true
}, },
"pin-wireshark": { "pin-wireshark": {
@ -323,7 +326,7 @@
"submodules": false, "submodules": false,
"revision": "9d3ae807ebd2981d593cddd0080856873139aa40", "revision": "9d3ae807ebd2981d593cddd0080856873139aa40",
"url": "https://github.com/NixOS/nixpkgs/archive/9d3ae807ebd2981d593cddd0080856873139aa40.tar.gz", "url": "https://github.com/NixOS/nixpkgs/archive/9d3ae807ebd2981d593cddd0080856873139aa40.tar.gz",
"hash": "0bjqgsprq9fgl5yh58dk59xmchi4dajq3sf5i447q02dbiasjsil", "hash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
"frozen": true "frozen": true
}, },
"url-eater": { "url-eater": {
@ -337,7 +340,7 @@
"submodules": false, "submodules": false,
"revision": "d617007eba79f9760db084aefda6c02c80ad7971", "revision": "d617007eba79f9760db084aefda6c02c80ad7971",
"url": "https://github.com/AgathaSorceress/url-eater/archive/d617007eba79f9760db084aefda6c02c80ad7971.tar.gz", "url": "https://github.com/AgathaSorceress/url-eater/archive/d617007eba79f9760db084aefda6c02c80ad7971.tar.gz",
"hash": "0dir077j5gy6yzbhsr85z7kbiwi135ns59gwrycbpvihzzp4qbwm" "hash": "sha256-lS9M7v8w7ruYz/ylom0ZIfK45vkFZQ3X98a/Is8BOTY="
}, },
"wallpapers": { "wallpapers": {
"type": "Git", "type": "Git",
@ -349,9 +352,9 @@
}, },
"branch": "mistress", "branch": "mistress",
"submodules": false, "submodules": false,
"revision": "ee12113e53e1b9b80638b6963a5b7075c3b81e93", "revision": "2ed11d34f02d86795f6d08bb3ec23e341a46a788",
"url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/ee12113e53e1b9b80638b6963a5b7075c3b81e93.tar.gz", "url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/2ed11d34f02d86795f6d08bb3ec23e341a46a788.tar.gz",
"hash": "1pv17pvc60jkr8y7j8g3q0wmy5qgsjxsq1gv23yb3gf52g4z98sk" "hash": "sha256-fE2uKYi3yWV6h6i4ZXifux9vCOnXdYTJ7kWJUISQ3B4="
}, },
"wired-notify": { "wired-notify": {
"type": "Git", "type": "Git",
@ -364,7 +367,7 @@
"submodules": false, "submodules": false,
"revision": "491197a6a5ef9c65a85c3eb1531786f32ffff5b3", "revision": "491197a6a5ef9c65a85c3eb1531786f32ffff5b3",
"url": "https://github.com/Toqozz/wired-notify/archive/491197a6a5ef9c65a85c3eb1531786f32ffff5b3.tar.gz", "url": "https://github.com/Toqozz/wired-notify/archive/491197a6a5ef9c65a85c3eb1531786f32ffff5b3.tar.gz",
"hash": "07gaizslvsiihvfrrbcdz0b2c04llsfqaji03ls55p1zbm41w6f3" "hash": "sha256-wxkeSF0/3FI0HSBKhZ2mlAAmFviNrZzdhjHqTfWP6h0="
}, },
"zen-browser": { "zen-browser": {
"type": "Git", "type": "Git",
@ -375,10 +378,10 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "350c729b261e6f5529460140a5f0943dd4c5e156", "revision": "0fac05e4b604c3304e7710a95572e78350fe9968",
"url": "https://github.com/0xc000022070/zen-browser-flake/archive/350c729b261e6f5529460140a5f0943dd4c5e156.tar.gz", "url": "https://github.com/0xc000022070/zen-browser-flake/archive/0fac05e4b604c3304e7710a95572e78350fe9968.tar.gz",
"hash": "1fbx200712rdz3b8c4acrz0ib8fd636bvsiyv4m31xqpfqpj3kza" "hash": "sha256-jejW3u1bkqz0ObXZeiZqLQNwC7+MXb8/KMwf3VPQpRI="
} }
}, },
"version": 5 "version": 7
} }

View file

@ -1,8 +1,11 @@
let
sources = import ./npins;
in
{ {
sources ? import ./npins,
pkgs ? import sources.nixpkgs { pkgs ? import sources.nixpkgs {
overlays = map import [ overlays = map import [
./nix/overlays/disko.nix ./nix/overlays/disko.nix
./nix/overlays/npins.nix
]; ];
}, },
withGHC ? false, withGHC ? false,