Compare commits

..

3 commits

71 changed files with 700 additions and 1142 deletions

View file

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

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

View file

@ -7,7 +7,6 @@
"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" },
@ -22,7 +21,6 @@
"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" },
@ -41,6 +39,5 @@
"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,19 +120,6 @@ 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

@ -1,17 +0,0 @@
" 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 { backward = false } end) vim.keymap.set({ "n", "x", "o" }, "s", function() leap.leap() 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,8 +24,6 @@ local servers = {
["nil"] = { formatting = { command = { "nixfmt" } } }, ["nil"] = { formatting = { command = { "nixfmt" } } },
}, },
}, },
zls = {},
} }
vim.diagnostic.config { vim.diagnostic.config {

View file

@ -52,9 +52,6 @@ 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,6 +40,7 @@ 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,11 +1,9 @@
# 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 = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024; min-free = 50 * 1024 * 1024 * 1024;
max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024; max-free = 100 * 1024 * 1024 * 1024;
}; };
systemd.services.nix-daemon.serviceConfig = { systemd.services.nix-daemon.serviceConfig = {
@ -13,4 +11,11 @@ in
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,6 +45,7 @@ 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,16 +54,21 @@ 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 ../overlays/iosevka.nix
../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
@ -95,7 +100,6 @@ 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
@ -116,7 +120,6 @@ 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
@ -173,6 +176,7 @@ 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,14 +27,10 @@
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 = {
@ -75,7 +71,6 @@
"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="
@ -83,7 +78,6 @@
"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,7 +115,6 @@ 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,46 +17,6 @@
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
@ -66,12 +26,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.serial_experiments_lain.lain_windows_error}"; ".wallpaper".source = "${pkgs.wallpapers.packages.knights_of_guinevere.fixing_gwen}";
}; };
xdg.configFile = { xdg.configFile = {
"xmonad".source = "${./xmonad}"; "xmonad".source = "${./xmonad}";

View file

@ -20,7 +20,6 @@
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
@ -42,11 +41,13 @@
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
@ -68,32 +69,49 @@
pkgs.onefetch pkgs.onefetch
pkgs.just pkgs.just
pkgs.nixfmt-rfc-style # formatter # nix tools
pkgs.nurl # fetcher made easy # # Alejandra handles inline comments poorly
pkgs.nix-diff # debug cache miss # # https://github.com/kamadorueda/alejandra/issues/429
# pkgs.alejandra
pkgs.nixfmt-rfc-style
pkgs.nurl
pkgs.dix
pkgs.niv
pkgs.npins pkgs.npins
pkgs.nix-tree # analyze closure pkgs.nix-tree
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.picard # music tagger
pkgs.mousai
pkgs.nicotine-plus pkgs.nicotine-plus
pkgs.picard # music tagger
pkgs.qbittorrent pkgs.qbittorrent
pkgs.mkvtoolnix pkgs.mousai
pkgs.localsend # file share with iOS pkgs.localsend # file share with iOS
pkgs.minder # mindmap tool
pkgs.mkvtoolnix
# 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
@ -115,6 +133,10 @@
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;
@ -153,7 +175,18 @@
mouse-scroll-multiplier = 1; mouse-scroll-multiplier = 1;
}; };
}; };
# chromium.enable = true; 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;
}; };
services = { services = {

View file

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

View file

@ -65,7 +65,20 @@ config =
, Run $ , Run $
Com Com
"tomorrow" "tomorrow"
[ "--target", "2026-02-02=monmaster" [ "--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"
] ]
"" ""
(60 &minute) (60 &minute)
@ -89,7 +102,7 @@ config =
] ]
(6 &second) (6 &second)
, Run $ Com "powerprofilesctl" ["get"] "" (6 &second) , Run $ Com "powerprofilesctl" ["get"] "" (6 &second)
, Run $ Com "mullvad-status" [] "" (6 &second) , Run $ Com "hrt-time" ["days"] "" (60 &minute)
, Run XMonadLog , Run XMonadLog
, Run $ , Run $
Weather Weather
@ -111,9 +124,8 @@ config =
<> alignSep config <> alignSep config
<> intercalate "|" <> intercalate "|"
[ " %LFRN% " [ " %LFRN% "
, " %mullvad-status% "
, " %battery%, %powerprofilesctl%) " , " %battery%, %powerprofilesctl%) "
, " %hereClock% (%tomorrow%) " , " %hereClock% (%tomorrow%, %hrt-time%) "
] ]
} }

View file

@ -23,10 +23,8 @@ 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 (SetMasterN n) <- fromMessage mess = pure $ Just $ SetMasterNTall $ ResizableTall n d f s
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,8 +3,10 @@
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
@ -31,9 +33,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
@ -46,6 +48,7 @@ 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
@ -77,7 +80,7 @@ myLayout =
$ smartSpacingWithEdge 5 $ smartSpacingWithEdge 5
$ reflectMsg . reflectHoriz $ reflectMsg . reflectHoriz
$ SetMasterNTall $ SetMasterNTall
$ ResizableTall 1 (1/10) (3/7) [1.2, 1, 1, 1.2] $ ResizableTall 1 (1/10) (3/7) []
isSioyek :: Query Bool isSioyek :: Query Bool
isSioyek = className =? "sioyek" isSioyek = className =? "sioyek"
@ -206,21 +209,11 @@ setMasterNEventHandleHook :: Event -> X All
setMasterNEventHandleHook ev = setMasterNEventHandleHook ev =
let adjustMasterCount :: X () let adjustMasterCount :: X ()
adjustMasterCount = do adjustMasterCount = do
ws <- gets windowset count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset
-- Remove the floating windows in the count if count <= 3 then sendMessage (SetMasterN 1)
let s :: Maybe (W.Stack Window) else if count <= 5 then sendMessage (SetMasterN 2)
s = W.stack $ W.workspace $ W.current ws else if count <= 7 then sendMessage (SetMasterN 3)
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
@ -280,6 +273,9 @@ 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 =
[ [
@ -319,20 +315,39 @@ 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), unGrab >> spawn fullscreen ) in [ ((0, xK_Print), spawn fullscreen )
, ((superMask .|. shiftMask, xK_3 ), unGrab >> spawn fullscreen ) , ((superMask .|. shiftMask, xK_3 ), spawn fullscreen )
, ((superMask .|. shiftMask, xK_4 ), unGrab >> spawn withSelection) , ((superMask .|. shiftMask, xK_4 ), spawn withSelection)
, ((superMask .|. shiftMask, xK_5 ), unGrab >> spawn toFloat ) , ((superMask .|. shiftMask, xK_5 ), spawn toFloat )
] ]
) )
@ -351,7 +366,7 @@ keybinds =
-- Launcher -- Launcher
++ (let launchFirefox = "zen" ++ (let launchFirefox = "zen"
launchDmenu = "dmenu_run -i -fn \"Iosevka-18\" -nb \"#36363a\" -nf \"#e2e2e4\" -sb \"#f7f7f8\" -sf \"#36363a\" -l 10" launchDmenu = "dmenu_run -i -fn \"Iosevka-14\" -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,7 +115,6 @@ 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

@ -63,13 +63,6 @@
# 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
@ -83,19 +76,4 @@
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, pkgs, ... }: { config, ... }:
{ {
system.stateVersion = "24.11"; system.stateVersion = "24.11";
@ -15,12 +15,6 @@
"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

@ -1,31 +0,0 @@
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,11 +1,8 @@
# 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 = builtins.ceil (totalStorage * 0.2) * 1024 * 1024 * 1024; min-free = 50 * 1024 * 1024 * 1024;
max-free = builtins.ceil (totalStorage * 0.3) * 1024 * 1024 * 1024; max-free = 100 * 1024 * 1024 * 1024;
}; };
systemd.services.nix-daemon.serviceConfig = { systemd.services.nix-daemon.serviceConfig = {
@ -13,4 +10,11 @@ in
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,14 +16,6 @@ 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,13 +53,10 @@ 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;
"browser.link.open_newwindow" = 2; # open in new tab # open links in new window
"browser.translations.automaticallyPopup" = false; # this works a lot better with xmonad where I have a bunch of windows
"browser.tabs.closeWindowWithLastTab" = true; "browser.link.open_newwindow" = 2;
"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 --command $SHELL -p"; "," = "nix-shell -p";
}) })
]; ];
@ -21,6 +21,10 @@
# 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,17 +11,10 @@
# #
# Script dependencies # Script dependencies
# #
home.packages = [ home.packages = [ pkgs.vivid ];
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

@ -1,7 +0,0 @@
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
command nom-build $argv nom-build $argv
else else
command nix-build $argv 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
command nom-shell $argv nom-shell $argv
else else
command nix-shell $argv nix-shell $argv
end end
end end

View file

@ -1,11 +0,0 @@
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,4 +83,7 @@ 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.IosevkaTerm pkgs.nerd-fonts.iosevka
]; ];
programs.ghostty.settings = { programs.ghostty.settings = {
@ -21,15 +21,13 @@ in
resize-overlay = "never"; resize-overlay = "never";
# Fonts # Fonts
font-family = "IosevkaTerm NFM"; font-family = "Iosevka 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,9 +5,6 @@
}: }:
{ {
# 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;
@ -20,11 +17,7 @@
in in
lib.mkIf patdiffCfg.enable { lib.mkIf patdiffCfg.enable {
settings = { settings = {
git.paging = [ git.paging.externalDiffCommand = "${lib.getExe' patdiffCfg.package "patdiff-git-wrapper"}";
{
externalDiffCommand = "${lib.getExe' patdiffCfg.package "patdiff-git-wrapper"}";
}
];
}; };
}; };

View file

@ -5,17 +5,13 @@
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,
# https://security.stackexchange.com/a/69089 trust ? 5,
# 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; };
@ -31,7 +27,6 @@
{ {
user = "leana8959"; user = "leana8959";
hash = "sha256-Y+v/8bLkyUIe4vjToChQP3ChPxRV/DqI72OTsx6F0oo="; hash = "sha256-Y+v/8bLkyUIe4vjToChQP3ChPxRV/DqI72OTsx6F0oo=";
trust = 5;
} }
{ {
user = "vanilla-extracts"; user = "vanilla-extracts";
@ -41,6 +36,10 @@
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

@ -0,0 +1,62 @@
{
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,7 +9,6 @@ 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 = 2_000 min_time = 60_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,17 +1,53 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
}: }:
let let
cfg = config.programs.zen-browser; inherit (pkgs) nur;
firefoxCfg = config.programs.firefox; cfg = config.programs.zen-browser;
in in
{ {
programs.zen-browser = { programs.zen-browser = {
policies = firefoxCfg.policies; # 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"
];
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
# #
@ -21,21 +57,92 @@ 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 = lib.mkMerge [ profiles.default = {
firefoxCfg.profiles.default
{
# Zen specific
settings = { settings = {
# Zen specific
"zen.theme.content-element-separation" = 0; # Remove "borders" around window "zen.theme.content-element-separation" = 0; # Remove "borders" around window
"zen.tabs.show-newtab-vertical" = false;
"zen.view.compact.toolbar-flash-popup" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"zen.view.show-newtab-button-top" = false; "browser.tabs.loadInBackground" = true;
"zen.view.use-single-toolbar" = false; "browser.ctrlTab.sortByRecentlyUsed" = false;
"zen.tabs.ctrl-tab.ignore-pending-tabs" = true; # ctrl-tab ignore unloaded tabs "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
]; ];
}; };
};
xdg.mimeApps = xdg.mimeApps =
let let

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 '<nixpkgs>' -A 'wpa_supplicant')/share/doc/wpa_supplicant/wpa_supplicant.conf.example # less $(nix-build --no-out-link -E '(import <nixpkgs> {}).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,10 +8,6 @@
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,14 +0,0 @@
# 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

@ -0,0 +1,11 @@
# 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
'';
};
}

View file

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

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

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

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

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

View file

@ -1,20 +1,7 @@
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 = ghostty = sources.ghostty-dev.asFlake.packages.${final.stdenv.hostPlatform.system}.default;
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;
};
} }

174
nix/overlays/iosevka.nix Normal file
View file

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

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

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,5 @@
{ {
fetchFromGitHub, fetchFromGitHub,
fetchpatch,
stdenvNoCC, stdenvNoCC,
lib, lib,
}: }:
@ -15,31 +14,6 @@ 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

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

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

@ -1,14 +0,0 @@
{
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 = "0e08e66f48e6ba5483a7a39456a753581587151f"; rev = "addc8a75dcfd64d5f40516f2526210c8fc163e70";
hash = "sha256-ay8V35FuXF5eFvWjH87PDzMSQTRALHDRBiZNdOC3gFg="; hash = "sha256-6dnZgkeG0p2O4ROtrFoG+jUmAQPWKHodKzUdVrBgcIM=";
}) { }; }) { };
cabalOverrides = o: { cabalOverrides = o: {

View file

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

View file

@ -0,0 +1,39 @@
{
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) (import ../overlays/iosevka.nix)
]; ];
}).export }).export

View file

@ -9,15 +9,8 @@
*/ */
# Generated by npins. Do not modify; will be overwritten regularly # Generated by npins. Do not modify; will be overwritten regularly
let let
# Backwards-compatibly make something that previously didn't take any arguments take some data = builtins.fromJSON (builtins.readFile ./sources.json);
# The function must return an attrset, and will unfortunately be eagerly evaluated version = data.version;
# 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 =
@ -28,6 +21,7 @@ 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
@ -54,61 +48,19 @@ 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 fetchers spec mkGitSource spec
else if spec.type == "GitRelease" then else if spec.type == "GitRelease" then
mkGitSource fetchers spec mkGitSource spec
else if spec.type == "PyPi" then else if spec.type == "PyPi" then
mkPyPiSource fetchers spec mkPyPiSource spec
else if spec.type == "Channel" then else if spec.type == "Channel" then
mkChannelSource fetchers spec mkChannelSource spec
else if spec.type == "Tarball" then else if spec.type == "Tarball" then
mkTarballSource fetchers spec mkTarballSource 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
@ -126,26 +78,22 @@ 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
fetchTarball { builtins.fetchTarball {
inherit url; inherit url;
sha256 = hash; sha256 = hash; # FIXME: check nix version & use SRI hashes
} }
else else
let let
@ -156,8 +104,6 @@ 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 =
@ -172,91 +118,51 @@ 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
fetchGit { builtins.fetchGit {
rev = revision; rev = revision;
narHash = hash; inherit name;
# hash = hash;
inherit name submodules url; inherit url submodules;
}; };
mkPyPiSource = mkPyPiSource =
{ fetchurl, ... }:
{ {
url, url,
hash, hash,
... ...
}: }:
fetchurl { builtins.fetchurl {
inherit url; inherit url;
sha256 = hash; sha256 = hash;
}; };
mkChannelSource = mkChannelSource =
{ fetchTarball, ... }:
{ {
url, url,
hash, hash,
... ...
}: }:
fetchTarball { builtins.fetchTarball {
inherit url; inherit url;
sha256 = hash; sha256 = hash;
}; };
mkTarballSource = mkTarballSource =
{ fetchTarball, ... }:
{ {
url, url,
locked_url ? url, locked_url ? url,
hash, hash,
... ...
}: }:
fetchTarball { builtins.fetchTarball {
url = locked_url; url = locked_url;
sha256 = hash; sha256 = hash;
}; };
mkContainerSource = sources =
pkgs: if version == 5 then
{ 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
pkgs.dockerTools.pullImage { throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`";
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,24 +14,7 @@
"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": "sha256-ipqShkBmHKC9ft1ZAsA6aeKps32k7+XZSPwfxeHLsAU=" "hash": "01dhrghwa7zw93cybvx4gnrskqk97b004nfxgsys0736823956la"
},
"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",
@ -47,7 +30,37 @@
"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": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=" "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
}, },
"fcitx5-table-extra": { "fcitx5-table-extra": {
"type": "Git", "type": "Git",
@ -60,7 +73,7 @@
"submodules": true, "submodules": true,
"revision": "cba16e03fd43b1ee8a15d20e14ecf0fb1c6762fa", "revision": "cba16e03fd43b1ee8a15d20e14ecf0fb1c6762fa",
"url": null, "url": null,
"hash": "sha256-FL0/BcE6yJhbo4AuoDnh547AE1Wx3JJq/sJf8iwby2c=", "hash": "0ryb3cng4py2zrm95p5ial9w13p7w4ws0bl0lddrij1sq42kzg8l",
"frozen": true "frozen": true
}, },
"flake-compat": { "flake-compat": {
@ -75,7 +88,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": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", "hash": "0g4izwn5k7qpavlk3w41a92rhnp4plr928vmrhc75041vzm3vb1l",
"frozen": true "frozen": true
}, },
"ghostty-dev": { "ghostty-dev": {
@ -87,9 +100,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "34eaad6fc86e086f469e81769a793be20d1e169b", "revision": "45abfa91905a5dafdddb711dd9402d45947cdfbb",
"url": "https://github.com/ghostty-org/ghostty/archive/34eaad6fc86e086f469e81769a793be20d1e169b.tar.gz", "url": "https://github.com/ghostty-org/ghostty/archive/45abfa91905a5dafdddb711dd9402d45947cdfbb.tar.gz",
"hash": "sha256-628LfxEPA0tiCjh6syMupdrGvVb6twhoJTtUFKDbqBQ=" "hash": "1pmfsxd65yva3ij2v20xb5r1hf3mx6lqr593nivnvsi345jnfh1y"
}, },
"hategroup-dnsbl": { "hategroup-dnsbl": {
"type": "Git", "type": "Git",
@ -102,7 +115,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": "sha256-SZBrjIBUw687MdrbOV7WrP5IhAAtKvPL2GqdcICHNvQ=", "hash": "1x1nhy0717bav35z6aid0224izmcsrg3knys64xszhslh266p429",
"frozen": true "frozen": true
}, },
"home-manager": { "home-manager": {
@ -133,7 +146,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": "sha256-4XPDTUvV8dfuf9GzKg2/r7j7lMELRAwKKFx3ecQObeg=" "hash": "1s3d1v27jxsw5050qi0bq6agpf5gpw6jmcyigzpdgwfm9d6w6wz1"
}, },
"nil": { "nil": {
"type": "Git", "type": "Git",
@ -146,7 +159,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": "sha256-18j8X2Nbe0Wg1+7YrWRlYzmjZ5Wq0NCVwJHJlBIw/dc=" "hash": "1mzx60999jciq2ax1l5ajmks6fb3cmjavn7fsyh4aysvcdgzrj6p"
}, },
"nix-monitored": { "nix-monitored": {
"type": "Git", "type": "Git",
@ -159,7 +172,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": "sha256-Z8PknjkmIr/8ZCH+dmc2Pc+UltiOr7/oKg37PXuVvuU=", "hash": "1rdyjmxkvyqd5blbzbwfv2b99krx6rkpdzi1ckyby8i676gf9hv7",
"frozen": true "frozen": true
}, },
"nixos-hardware": { "nixos-hardware": {
@ -171,9 +184,9 @@
}, },
"branch": "master", "branch": "master",
"submodules": false, "submodules": false,
"revision": "9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca", "revision": "40b1a28dce561bea34858287fbb23052c3ee63fe",
"url": "https://github.com/NixOS/nixos-hardware/archive/9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca.tar.gz", "url": "https://github.com/NixOS/nixos-hardware/archive/40b1a28dce561bea34858287fbb23052c3ee63fe.tar.gz",
"hash": "sha256-3ymIZ8s3+hu7sDl/Y48o6bwMxorfKrmn97KuWiw1vjY=" "hash": "197v6xxdq5j4w8kil6q21ij9x6ng8z6j72brkwwjim23798c2c4n"
}, },
"nixpkgs": { "nixpkgs": {
"type": "Git", "type": "Git",
@ -188,22 +201,6 @@
"url": "https://github.com/nixos/nixpkgs/archive/9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5.tar.gz", "url": "https://github.com/nixos/nixpkgs/archive/9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5.tar.gz",
"hash": "1h3g9iyfj0xwz7i4ywcxjpp3p9xk7ahp563m0h1i25697sc2lrji" "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",
"repository": { "repository": {
@ -213,9 +210,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "bea55329cc806cfe3b826f7baab0503fd6b6892f", "revision": "68e3e935ba29960813ab1ecf2852a0ecbe8d5946",
"url": "https://github.com/nix-community/nur/archive/bea55329cc806cfe3b826f7baab0503fd6b6892f.tar.gz", "url": "https://github.com/nix-community/nur/archive/68e3e935ba29960813ab1ecf2852a0ecbe8d5946.tar.gz",
"hash": "sha256-B8+OiD8kYXtFc4vJc9+d7q8+MOic8VYR0G8wbSHjuSc=" "hash": "02pmkhd6ram43qnmirh3z46w1l31rmm16mhkx36jaxhpnzlwgr2i"
}, },
"pin-emacs28": { "pin-emacs28": {
"type": "Git", "type": "Git",
@ -228,7 +225,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": "sha256-r+GZkJ5HiC3HIGiGpTfw5MUuAYuPOj+k0YPjPzYlF6U=", "hash": "198p4lv3zqw3s6j3yflgic0jxig4y0vsb1k8433jv227ks89kqdg",
"frozen": true "frozen": true
}, },
"pin-florashell": { "pin-florashell": {
@ -242,7 +239,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": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=", "hash": "0klkpy7ah033y3cwj51a0l96lwmkqqvwgfv3kid4z9x5g2rqr0l5",
"frozen": true "frozen": true
}, },
"pin-fourmolu": { "pin-fourmolu": {
@ -256,7 +253,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": "sha256-4bOckWvBVfncvshtd2JdC+W3XYkyS4xmcfX7uAJnE6k=", "hash": "1a8kcw1biyzmf5k8qjrji5fvgr8bbmi7fvf8pvfgjmf1df8rrcz1",
"frozen": true "frozen": true
}, },
"pin-isabelle": { "pin-isabelle": {
@ -270,7 +267,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": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", "hash": "1q7y5ygr805l5axcjhn0rn3wj8zrwbrr0c6a8xd981zh8iccmx0p",
"frozen": true "frozen": true
}, },
"pin-masna3shell": { "pin-masna3shell": {
@ -284,7 +281,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": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=", "hash": "10hpb1aw884k3zzcy1mhf47dqvfagiyx7kr6hg0p5xcwg04mkx8x",
"frozen": true "frozen": true
}, },
"pin-necro-man-nixpkgs": { "pin-necro-man-nixpkgs": {
@ -298,7 +295,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": "sha256-cZTdVSg1Lzyv/j/H333yliE3E8MnIo1ZsclrLtnQsfg=", "hash": "1y5is3cjwsy9n5cqs8i7qc9kf8cny9yxzirzzspkqbrm51axv53i",
"frozen": true "frozen": true
}, },
"pin-vim-tw": { "pin-vim-tw": {
@ -312,7 +309,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": "sha256-BOuI+BWpOvmNcNc+HXMEQmfxfAX4kadqLvWC6+FsuoQ=", "hash": "115sdkhyp0pm5rmag4gq0myg2rs20irisgnpf26zjfm92pw8isq4",
"frozen": true "frozen": true
}, },
"pin-wireshark": { "pin-wireshark": {
@ -326,7 +323,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": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", "hash": "0bjqgsprq9fgl5yh58dk59xmchi4dajq3sf5i447q02dbiasjsil",
"frozen": true "frozen": true
}, },
"url-eater": { "url-eater": {
@ -340,7 +337,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": "sha256-lS9M7v8w7ruYz/ylom0ZIfK45vkFZQ3X98a/Is8BOTY=" "hash": "0dir077j5gy6yzbhsr85z7kbiwi135ns59gwrycbpvihzzp4qbwm"
}, },
"wallpapers": { "wallpapers": {
"type": "Git", "type": "Git",
@ -352,9 +349,9 @@
}, },
"branch": "mistress", "branch": "mistress",
"submodules": false, "submodules": false,
"revision": "2ed11d34f02d86795f6d08bb3ec23e341a46a788", "revision": "ee12113e53e1b9b80638b6963a5b7075c3b81e93",
"url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/2ed11d34f02d86795f6d08bb3ec23e341a46a788.tar.gz", "url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/ee12113e53e1b9b80638b6963a5b7075c3b81e93.tar.gz",
"hash": "sha256-fE2uKYi3yWV6h6i4ZXifux9vCOnXdYTJ7kWJUISQ3B4=" "hash": "1pv17pvc60jkr8y7j8g3q0wmy5qgsjxsq1gv23yb3gf52g4z98sk"
}, },
"wired-notify": { "wired-notify": {
"type": "Git", "type": "Git",
@ -367,7 +364,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": "sha256-wxkeSF0/3FI0HSBKhZ2mlAAmFviNrZzdhjHqTfWP6h0=" "hash": "07gaizslvsiihvfrrbcdz0b2c04llsfqaji03ls55p1zbm41w6f3"
}, },
"zen-browser": { "zen-browser": {
"type": "Git", "type": "Git",
@ -378,10 +375,10 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "0fac05e4b604c3304e7710a95572e78350fe9968", "revision": "350c729b261e6f5529460140a5f0943dd4c5e156",
"url": "https://github.com/0xc000022070/zen-browser-flake/archive/0fac05e4b604c3304e7710a95572e78350fe9968.tar.gz", "url": "https://github.com/0xc000022070/zen-browser-flake/archive/350c729b261e6f5529460140a5f0943dd4c5e156.tar.gz",
"hash": "sha256-jejW3u1bkqz0ObXZeiZqLQNwC7+MXb8/KMwf3VPQpRI=" "hash": "1fbx200712rdz3b8c4acrz0ib8fd636bvsiyv4m31xqpfqpj3kza"
} }
}, },
"version": 7 "version": 5
} }

View file

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