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

View file

@ -120,6 +120,19 @@ local plugins = {
lazy = false,
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",
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")
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)

View file

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

View file

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

View file

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

View file

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

View file

@ -1,9 +1,11 @@
# Protect my system from running out of storage or memory
let
totalStorage = 500;
in
{
# 500GB Storage
nix.settings = {
min-free = 50 * 1024 * 1024 * 1024;
max-free = 100 * 1024 * 1024 * 1024;
min-free = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024;
max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024;
};
systemd.services.nix-daemon.serviceConfig = {
@ -11,11 +13,4 @@
MemoryMax = "90%";
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
../overlays/lix.nix
../overlays/nix-monitored.nix
];
};

View file

@ -54,21 +54,16 @@ in
../overlays/wired-notify.nix
../overlays/wallpapers.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/npins.nix
../overlays/cornelis.nix
../overlays/iosevka.nix
../overlays/iosevka
../packages/overlay.nix
./vanadium/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
../overlays/lix.nix
../overlays/nix-monitored.nix
@ -100,6 +95,7 @@ in
./vanadium/nixos/input.nix
./vanadium/nixos/misc.nix
./vanadium/nixos/remote-builders.nix
./vanadium/nixos/display.nix
./vanadium/nixos/gui.nix
@ -113,7 +109,6 @@ in
../nixosModules/common/network.nix
../nixosModules/common/sudo-conf.nix
../nixosModules/common/system-nixconf.nix
../nixosModules/common/xscreensaver.nix
# QUIRK:
# Had issue when building the installer as it fails to bootstrap itself
@ -121,6 +116,7 @@ in
# ../nixosModules/extra/secure_dns.nix
../nixosModules/extra/zram.nix
../nixosModules/extra/leana.nix
../nixosModules/extra/lean-nixos.nix
#
# Extern modules
@ -177,7 +173,6 @@ in
../homeModules/common/fzf.nix
../homeModules/common/git.nix
../homeModules/common/gpg.nix
../homeModules/common/kitty.nix
../homeModules/common/ghostty.nix
../homeModules/common/leana.nix
../homeModules/common/locale.nix

View file

@ -27,10 +27,14 @@
pkgs.taplo # toml
pkgs.vscode-langservers-extracted # JSON etc
pkgs.yaml-language-server # yaml
pkgs.cornelis # agda
# bash
pkgs.shfmt
pkgs.nodePackages.bash-language-server
# ghc
pkgs.hs-speedscope
];
programs.git = {
@ -71,6 +75,7 @@
"https://haskell-language-server.cachix.org"
"https://helix.cachix.org"
"https://cache.iog.io"
"https://ghostty.cachix.org"
];
extra-trusted-public-keys = [
"ghc-nix.cachix.org-1:ziC/I4BPqeA4VbtOFpFpu6D1t6ymFvRWke/lc2+qjcg="
@ -78,6 +83,7 @@
"haskell-language-server.cachix.org-1:juFfHrwkOxqIOZShtC4YC1uT1bBcq2RSvC7OMKx0Nz8="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
"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.return-youtube-dislikes
addons.shinigami-eyes
addons.consent-o-matic
];
};

View file

@ -17,6 +17,46 @@
monospace = [ "Iosevka" ];
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 = [
pkgs.noto-fonts
@ -26,12 +66,12 @@
pkgs.noto-fonts-color-emoji
pkgs.noto-fonts-emoji-blob-bin
pkgs.ubuntu-classic
pkgs.iosevka
pkgs.Iosevka
];
home.file = {
".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 = {
"xmonad".source = "${./xmonad}";

View file

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

View file

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

View file

@ -65,20 +65,7 @@ config =
, Run $
Com
"tomorrow"
[ "--target", "2025-08-14"
, "--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"
[ "--target", "2026-02-02=monmaster"
]
""
(60 &minute)
@ -102,7 +89,7 @@ config =
]
(6 &second)
, Run $ Com "powerprofilesctl" ["get"] "" (6 &second)
, Run $ Com "hrt-time" ["days"] "" (60 &minute)
, Run $ Com "mullvad-status" [] "" (6 &second)
, Run XMonadLog
, Run $
Weather
@ -124,8 +111,9 @@ config =
<> alignSep config
<> intercalate "|"
[ " %LFRN% "
, " %mullvad-status% "
, " %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
in (fmap . fmap . fmap) SetMasterNTall . runLayout ws'
handleMessage (SetMasterNTall l@(ResizableTall _n0 d f s)) mess
| Just (SetMasterN n) <- fromMessage mess = pure $ Just $ SetMasterNTall $ ResizableTall n d f s
handleMessage (SetMasterNTall l@(ResizableTall n0 d f s)) mess
| 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
description (SetMasterNTall l) = description l

View file

@ -3,10 +3,8 @@
import XMonad
import XMonad.Actions.CopyWindow
import XMonad.Actions.Navigation2D
import XMonad.Actions.Submap
import XMonad.Actions.SwapWorkspaces
import XMonad.Actions.Warp
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.InsertPosition
@ -33,9 +31,9 @@ import XMonad.Util.NamedScratchpad
import XMonad.Util.SpawnOnce
import Data.Char.Greek
import qualified Data.Map.Strict as M
import Data.Ratio
import Data.Semigroup
import qualified Data.Map.Strict as M
import System.Posix
import Graphics.X11.ExtraTypes.XF86
@ -48,7 +46,6 @@ main =
$ withSB xmobarConfig . docks
$ setEwmhActivateHook myActivateHook
$ ewmhFullscreen . ewmh
$ withNavigation2DConfig def
$ def
{ modMask = superMask
, borderWidth = 5
@ -80,7 +77,7 @@ myLayout =
$ smartSpacingWithEdge 5
$ reflectMsg . reflectHoriz
$ SetMasterNTall
$ ResizableTall 1 (1/10) (3/7) []
$ ResizableTall 1 (1/10) (3/7) [1.2, 1, 1, 1.2]
isSioyek :: Query Bool
isSioyek = className =? "sioyek"
@ -209,11 +206,21 @@ setMasterNEventHandleHook :: Event -> X All
setMasterNEventHandleHook ev =
let adjustMasterCount :: X ()
adjustMasterCount = do
count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset
if count <= 3 then sendMessage (SetMasterN 1)
else if count <= 5 then sendMessage (SetMasterN 2)
else if count <= 7 then sendMessage (SetMasterN 3)
else pure ()
ws <- gets windowset
-- Remove the floating windows in the count
let s :: Maybe (W.Stack Window)
s = W.stack $ W.workspace $ W.current ws
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
case ev of
MapRequestEvent{} -> adjustMasterCount
@ -273,9 +280,6 @@ removedKeybinds =
++ [ (superMask , 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 =
[
@ -315,39 +319,20 @@ keybinds =
, submap $ M.fromList
[ ((0, xK_t), withFocused $ windows . W.sink)
, ((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
++ (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"
toFloat = "maim -u -s -b 5 -o | feh --auto-zoom -"
in [ ((0, xK_Print), spawn fullscreen )
, ((superMask .|. shiftMask, xK_3 ), spawn fullscreen )
, ((superMask .|. shiftMask, xK_4 ), spawn withSelection)
, ((superMask .|. shiftMask, xK_5 ), spawn toFloat )
in [ ((0, xK_Print), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_3 ), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_4 ), unGrab >> spawn withSelection)
, ((superMask .|. shiftMask, xK_5 ), unGrab >> spawn toFloat )
]
)
@ -366,7 +351,7 @@ keybinds =
-- Launcher
++ (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"
in [ ((controlMask .|. altMask, xK_m), namedScratchpadAction myScratchpads "cmus" )
, ((controlMask .|. altMask, xK_t), namedScratchpadAction myScratchpads "btop" )

View file

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

View file

@ -35,7 +35,7 @@
# To enable roaming https://wiki.archlinux.org/title/Wpa_supplicant#Roaming
wireless = {
enable = true;
userControlled.enable = true;
userControlled = true;
secretsFile = config.age.secrets.wpa_password.path;
scanOnLowSignal = false;
networks =
@ -63,6 +63,13 @@
# This is the fascist one, just block it because I can't tell
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
0.0.0.0 linkedin.com
0.0.0.0 www.linkedin.com
@ -76,4 +83,19 @@
services.mullvad-vpn.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";
@ -15,6 +15,12 @@
"pcie_aspm=off"
];
boot.plymouth = {
enable = true;
themePackages = [ pkgs.plymouth-blahaj-theme ];
theme = "blahaj";
};
# 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
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
let
totalStorage = 930;
in
{
nix.settings = {
min-free = 50 * 1024 * 1024 * 1024;
max-free = 100 * 1024 * 1024 * 1024;
min-free = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024;
max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024;
};
systemd.services.nix-daemon.serviceConfig = {
@ -10,11 +13,4 @@
MemoryMax = "90%";
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
];
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:
# pinned branch of https://github.com/astrand/xclip/tree/xerror
# use this until #43 gets resolved properly

View file

@ -53,10 +53,13 @@ in
"browser.tabs.loadInBackground" = true;
"browser.ctrlTab.sortByRecentlyUsed" = false;
"layout.css.devPixelsPerPx" = 1.1;
# open links in new window
# this works a lot better with xmonad where I have a bunch of windows
"browser.link.open_newwindow" = 2;
"browser.startup.page" = 1;
"browser.link.open_newwindow" = 2; # open in new tab
"browser.translations.automaticallyPopup" = false;
"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
# Yes

View file

@ -7,7 +7,7 @@
programs.fish = {
shellAbbrs = lib.mkMerge [
(lib.mkIf pkgs.stdenv.isLinux {
"," = "nix-shell -p";
"," = "nix-shell --command $SHELL -p";
})
];
@ -21,10 +21,6 @@
# idiot protection
chmod = "chmod --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
#
home.packages = [ pkgs.vivid ];
home.packages = [
pkgs.nix-output-monitor # pretty ui for shells
];
programs = {
fd.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
if type -q nom-build
nom-build $argv
command nom-build $argv
else
nix-build $argv
command nix-build $argv
end
end

View file

@ -1,7 +1,7 @@
function nix-shell
if type -q nom-shell
nom-shell $argv
command nom-shell $argv
else
nix-shell $argv
command nix-shell $argv
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
# 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

View file

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

View file

@ -5,6 +5,9 @@
}:
{
# git plugins
programs.git = {
lfs.enable = true;
};
programs.patdiff = {
enable = lib.mkDefault true;
enableGitIntegration = lib.mkDefault true;
@ -17,7 +20,11 @@
in
lib.mkIf patdiffCfg.enable {
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;
};
# Fun video btw
# https://media.ccc.de/v/39c3-to-sign-or-not-to-sign-practical-vulnerabilities-i
programs.gpg.publicKeys =
let
fromUrl =
{
url,
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; };
@ -27,6 +31,7 @@
{
user = "leana8959";
hash = "sha256-Y+v/8bLkyUIe4vjToChQP3ChPxRV/DqI72OTsx6F0oo=";
trust = 5;
}
{
user = "vanilla-extracts";
@ -36,10 +41,6 @@
user = "jappeace";
hash = "sha256-wJ4hiE7M7dcEMaE8waNZEi+tybpVIsFzoeDJhIIaLhk=";
}
{
user = "gautaz";
hash = "sha256-j0I9l8uKfzKNrc2qveFi5mkRppxL36+BUEqvFPs6vqA=";
}
{
user = "confusedkernel";
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
{
home.packages = lib.mkIf cfg.enable [
pkgs.zbar
pkgs.pwgen
pkgs.diceware
];

View file

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

View file

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

View file

@ -1,53 +1,17 @@
{
pkgs,
config,
lib,
...
}:
let
inherit (pkgs) nur;
cfg = config.programs.zen-browser;
firefoxCfg = config.programs.firefox;
in
{
programs.zen-browser = {
# https://mozilla.github.io/policy-templates
# 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"
];
policies = firefoxCfg.policies;
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)
# https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences
#
@ -57,91 +21,20 @@ in
# - click the buttons
# - diff it
# diff .zen/default/prefs.js{.bk,}
profiles.default = {
settings = {
profiles.default = lib.mkMerge [
firefoxCfg.profiles.default
{
# Zen specific
"zen.theme.content-element-separation" = 0; # Remove "borders" around window
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.tabs.loadInBackground" = true;
"browser.ctrlTab.sortByRecentlyUsed" = false;
"layout.css.devPixelsPerPx" = 1.1;
"browser.startup.page" = 1;
"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
];
};
settings = {
"zen.theme.content-element-separation" = 0; # Remove "borders" around window
"zen.tabs.show-newtab-vertical" = false;
"zen.view.compact.toolbar-flash-popup" = true;
"zen.view.show-newtab-button-top" = false;
"zen.view.use-single-toolbar" = false;
"zen.tabs.ctrl-tab.ignore-pending-tabs" = true; # ctrl-tab ignore unloaded tabs
};
}
];
};
xdg.mimeApps =

View file

@ -2,7 +2,7 @@
# This loads the list of networks as a NixOS wpa_supplicant compatible attrset
#
# 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
sources = import ../../npins;
lib = import (sources.nixpkgs + "/lib");

View file

@ -8,6 +8,10 @@
package = lib.mkDefault pkgs.nix;
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
min-free = lib.mkDefault (5 * 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
sources = import ../../npins;
in
final: prev: {
final: prev:
let
inherit (final) lib;
in
{
# 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,
fetchpatch,
stdenvNoCC,
lib,
}:
@ -14,6 +15,31 @@ stdenvNoCC.mkDerivation (finalAttrs: {
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
preferLocalBuild = true;
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";
owner = "leana8959";
repo = "ruler";
rev = "addc8a75dcfd64d5f40516f2526210c8fc163e70";
hash = "sha256-6dnZgkeG0p2O4ROtrFoG+jUmAQPWKHodKzUdVrBgcIM=";
rev = "0e08e66f48e6ba5483a7a39456a753581587151f";
hash = "sha256-ay8V35FuXF5eFvWjH87PDzMSQTRALHDRBiZNdOC3gFg=";
}) { };
cabalOverrides = o: {

View file

@ -2,6 +2,7 @@
writeShellApplication,
tmux,
procps,
fd,
fzf,
gnused,
lib,
@ -42,6 +43,7 @@ let
tmux-sessionizer = writeShellApplication {
name = "tmux-sessionizer";
runtimeInputs = [
fd
fzf
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 {
overlays = map scopeOverlay [
(import ./overlay.nix)
(import ../overlays/iosevka.nix)
(import ../overlays/iosevka)
];
}).export

View file

@ -9,8 +9,15 @@
*/
# Generated by npins. Do not modify; will be overwritten regularly
let
data = builtins.fromJSON (builtins.readFile ./sources.json);
version = data.version;
# Backwards-compatibly make something that previously didn't take any arguments take some
# 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
range =
@ -21,7 +28,6 @@ let
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
concatMapStrings = f: list: concatStrings (map f list);
concatStrings = builtins.concatStringsSep "";
# If the environment variable NPINS_OVERRIDE_${name} is set, then use
@ -48,19 +54,61 @@ let
mkSource =
name: spec:
{
pkgs ? null,
}:
assert spec ? type;
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 =
if spec.type == "Git" then
mkGitSource spec
mkGitSource fetchers spec
else if spec.type == "GitRelease" then
mkGitSource spec
mkGitSource fetchers spec
else if spec.type == "PyPi" then
mkPyPiSource spec
mkPyPiSource fetchers spec
else if spec.type == "Channel" then
mkChannelSource spec
mkChannelSource fetchers spec
else if spec.type == "Tarball" then
mkTarballSource spec
mkTarballSource fetchers spec
else if spec.type == "Container" then
mkContainerSource pkgs spec
else
builtins.throw "Unknown source type ${spec.type}";
in
@ -78,22 +126,26 @@ let
};
mkGitSource =
{
fetchTarball,
fetchGit,
...
}:
{
repository,
revision,
url ? null,
submodules,
hash,
branch ? null,
...
}:
assert repository ? type;
# 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
if url != null && !submodules then
builtins.fetchTarball {
fetchTarball {
inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes
sha256 = hash;
}
else
let
@ -104,6 +156,8 @@ let
"https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab" then
"${repository.server}/${repository.repo_path}.git"
else if repository.type == "Forgejo" then
"${repository.server}/${repository.owner}/${repository.repo}.git"
else
throw "Unrecognized repository type ${repository.type}";
urlToName =
@ -118,51 +172,91 @@ let
"${if matched == null then "source" else builtins.head matched}${appendShort}";
name = urlToName url revision;
in
builtins.fetchGit {
fetchGit {
rev = revision;
inherit name;
# hash = hash;
inherit url submodules;
narHash = hash;
inherit name submodules url;
};
mkPyPiSource =
{ fetchurl, ... }:
{
url,
hash,
...
}:
builtins.fetchurl {
fetchurl {
inherit url;
sha256 = hash;
};
mkChannelSource =
{ fetchTarball, ... }:
{
url,
hash,
...
}:
builtins.fetchTarball {
fetchTarball {
inherit url;
sha256 = hash;
};
mkTarballSource =
{ fetchTarball, ... }:
{
url,
locked_url ? url,
hash,
...
}:
builtins.fetchTarball {
fetchTarball {
url = locked_url;
sha256 = hash;
};
sources =
if version == 5 then
builtins.mapAttrs mkSource data.pins
mkContainerSource =
pkgs:
{
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
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
sources

View file

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