2023-09-11 22:31:54 +00:00
{ config , lib , pkgs , . . . }:
2023-06-09 00:36:47 +00:00
2023-08-02 21:08:19 +00:00
let
declPackageSet = pkgs : {
package = null ;
suggestedPrograms = pkgs ;
} ;
in
2023-07-03 07:49:44 +00:00
{
sane . programs = {
# PACKAGE SETS
2023-08-02 21:08:19 +00:00
" s a n e - s c r i p t s . b a c k u p " = declPackageSet [
" s a n e - s c r i p t s . b a c k u p - l s "
" s a n e - s c r i p t s . b a c k u p - r e s t o r e "
] ;
" s a n e - s c r i p t s . b i t t o r r e n t " = declPackageSet [
" s a n e - s c r i p t s . b t - a d d "
" s a n e - s c r i p t s . b t - r m "
" s a n e - s c r i p t s . b t - s e a r c h "
" s a n e - s c r i p t s . b t - s h o w "
] ;
" s a n e - s c r i p t s . d e v " = declPackageSet [
2023-11-24 21:27:08 +00:00
" s a n e - s c r i p t s . c l o n e "
2023-08-02 21:08:19 +00:00
" s a n e - s c r i p t s . d e v - c a r g o - l o o p "
" s a n e - s c r i p t s . g i t - i n i t "
] ;
" s a n e - s c r i p t s . c l i " = declPackageSet [
" s a n e - s c r i p t s . d e a d l i n e s "
" s a n e - s c r i p t s . f i n d - d o t f i l e s "
" s a n e - s c r i p t s . i p - c h e c k "
" s a n e - s c r i p t s . i p - r e c o n n e c t "
" s a n e - s c r i p t s . p r i v a t e - c h a n g e - p a s s w d "
" s a n e - s c r i p t s . p r i v a t e - d o "
" s a n e - s c r i p t s . p r i v a t e - i n i t "
" s a n e - s c r i p t s . p r i v a t e - l o c k "
" s a n e - s c r i p t s . p r i v a t e - u n l o c k "
" s a n e - s c r i p t s . r c p "
" s a n e - s c r i p t s . r e b o o t "
" s a n e - s c r i p t s . r e c l a i m - b o o t - s p a c e "
" s a n e - s c r i p t s . r e c l a i m - d i s k - s p a c e "
" s a n e - s c r i p t s . s e c r e t s - d u m p "
" s a n e - s c r i p t s . s e c r e t s - u n l o c k "
" s a n e - s c r i p t s . s e c r e t s - u p d a t e - k e y s "
" s a n e - s c r i p t s . s h u t d o w n "
" s a n e - s c r i p t s . s u d o - r e d i r e c t "
" s a n e - s c r i p t s . s y n c - f r o m - s e r v o "
2023-11-29 12:29:58 +00:00
" s a n e - s c r i p t s . t a g - m u s i c "
2023-09-19 15:41:54 +00:00
" s a n e - s c r i p t s . v p n "
2023-08-02 21:08:19 +00:00
" s a n e - s c r i p t s . w h i c h "
2023-12-03 14:25:35 +00:00
" s a n e - s c r i p t s . w i p e "
2023-08-02 21:08:19 +00:00
] ;
" s a n e - s c r i p t s . s y s - u t i l s " = declPackageSet [
" s a n e - s c r i p t s . i p - p o r t - f o r w a r d "
2023-08-15 01:47:45 +00:00
" s a n e - s c r i p t s . s y n c - m u s i c "
2023-08-02 21:08:19 +00:00
] ;
2023-08-02 21:11:49 +00:00
sysadminUtils = declPackageSet [
" b t r f s - p r o g s "
" c a c e r t . u n b u n d l e d " # some services require unbundled /etc/ssl/certs
" c r y p t s e t u p "
2023-11-06 23:57:48 +00:00
" d d r e s c u e "
2023-08-02 21:11:49 +00:00
" d i g "
2023-09-10 09:49:31 +00:00
" d t c " # device tree [de]compiler
2023-11-08 14:16:16 +00:00
" e 2 f s p r o g s " # resize2fs
2023-08-02 21:11:49 +00:00
" e f i b o o t m g r "
2023-09-18 13:36:58 +00:00
" e t h t o o l "
2023-08-02 21:11:49 +00:00
" f a t r e s i z e "
" f d "
" f i l e "
2023-08-04 07:47:00 +00:00
# "fwupd"
2023-08-02 21:11:49 +00:00
" g a w k "
2023-10-12 01:59:28 +00:00
" g d b " # to debug segfaults
2023-08-02 21:11:49 +00:00
" g i t "
2023-11-08 14:16:16 +00:00
" g p t f d i s k " # gdisk
2023-08-02 21:11:49 +00:00
" h d p a r m "
" h t o p "
" i f t o p "
" i n e t u t i l s " # for telnet
" i o t o p "
" i p t a b l e s "
2023-09-18 04:06:00 +00:00
" i w "
2023-08-02 21:11:49 +00:00
" j q "
" k i l l a l l "
" l s o f "
" m i n i u p n p c "
" n a n o "
# "ncdu" # ncurses disk usage. doesn't cross compile (zig)
" n e o v i m "
" n e t c a t "
" n e t h o g s "
" n m a p "
2023-11-08 14:16:16 +00:00
" n v m e - c l i " # nvme
2023-08-02 21:11:49 +00:00
" o p e n s s l "
" p a r t e d "
" p c i u t i l s "
" p o w e r t o p "
" p s t r e e "
" r i p g r e p "
" s c r e e n "
2023-11-08 14:16:16 +00:00
" s m a r t m o n t o o l s " # smartctl
2023-08-02 21:11:49 +00:00
" s o c a t "
" s t r a c e "
" s u b v e r s i o n "
" t c p d u m p "
" t r e e "
" u s b u t i l s "
2023-11-08 14:16:16 +00:00
" u t i l - l i n u x " # lsblk, lscpu, etc
2023-08-02 21:11:49 +00:00
" w g e t "
" w i r e l e s s t o o l s " # iwlist
2023-11-10 19:28:16 +00:00
" x q " # jq for XML
2023-12-03 00:58:49 +00:00
# "zfs" # doesn't cross-compile (requires samba)
2023-08-02 21:11:49 +00:00
] ;
sysadminExtraUtils = declPackageSet [
" b a c k b l a z e - b 2 "
" d u p l i c i t y "
" s a n e - s c r i p t s . b a c k u p "
" s q l i t e " # to debug sqlite3 databases
] ;
2023-07-03 07:58:02 +00:00
2023-07-03 07:49:44 +00:00
# TODO: split these into smaller groups.
# - moby doesn't want a lot of these.
# - categories like
# - dev?
# - debugging?
2023-08-02 21:11:49 +00:00
consoleUtils = declPackageSet [
" a l s a U t i l s " # for aplay, speaker-test
2023-10-11 22:15:28 +00:00
" b i n u t i l s - u n w r a p p e d " # for strings; though this brings 80MB of unrelated baggage too
2023-08-02 21:11:49 +00:00
# "cdrtools"
" c l i n f o "
" d m i d e c o d e "
" d t r x " # `unar` alternative, "Do The Right eXtraction"
" e f i v a r "
2023-10-10 22:08:58 +00:00
" e z a " # a better 'ls'
2023-08-02 21:11:49 +00:00
# "flashrom"
" g i t " # needed as a user package, for config.
# "gnupg"
# "gocryptfs"
# "gopass"
# "gopass-jsonapi"
" h e l i x " # text editor
" l i b s e c r e t " # for managing user keyrings. TODO: what needs this? lift into the consumer
" l m _ s e n s o r s " # for sensors-detect. TODO: what needs this? lift into the consumer
" l s h w "
# "memtester"
2023-10-12 01:59:28 +00:00
" m e r c u r i a l " # hg
2023-12-11 03:03:22 +00:00
" m i m e o " # like xdg-open
2023-08-02 21:11:49 +00:00
" n e o v i m " # needed as a user package, for swap persistence
# "nettools"
# "networkmanager"
# "nixos-generators"
" n m o n "
# "node2nix"
# "oathToolkit" # for oathtool
# "ponymix"
" p u l s e m i x e r "
2023-11-05 20:02:40 +00:00
" p y t h o n 3 - r e p l "
2023-08-02 21:11:49 +00:00
# "python3Packages.eyeD3" # music tagging
" r i p g r e p " # needed as a user package so that its user-level config file can be installed
" r s y n c "
" s a n e - s c r i p t s . b i t t o r r e n t "
" s a n e - s c r i p t s . c l i "
" s n a p p e r "
" s o p s "
" s p e e d t e s t - c l i "
# "ssh-to-age"
" s u d o "
# "tageditor" # music tagging
# "unar"
2023-09-11 22:31:54 +00:00
" u n z i p "
2023-08-02 21:11:49 +00:00
" w i r e g u a r d - t o o l s "
" x d g - u t i l s " # for xdg-open
# "yarn"
" z s h "
] ;
2023-07-03 07:58:02 +00:00
2023-11-18 22:56:53 +00:00
pcConsoleUtils = declPackageSet [
2023-08-02 21:11:49 +00:00
" g h " # MS GitHub cli
" n i x - i n d e x "
" n i x p k g s - r e v i e w "
" s a n e - s c r i p t s . d e v "
" s e q u o i a "
] ;
2023-07-30 11:59:38 +00:00
2023-08-02 21:11:49 +00:00
consoleMediaUtils = declPackageSet [
2023-12-14 08:41:16 +00:00
" c a t t " # cast videos to chromecast
2023-08-02 21:11:49 +00:00
" f f m p e g "
2023-12-14 10:56:07 +00:00
" g o 2 t v " # cast videos to UPNP/DLNA device (i.e. tv). TODO: needs firewall opened to allow sending of local files. (lappy sends a SSDP request to broadcast address, then gets response from concrete addr to the port it sent the req from).
2023-08-02 21:11:49 +00:00
" i m a g e m a g i c k "
" s o x "
" y t - d l p "
] ;
2023-07-03 07:58:02 +00:00
2023-11-18 22:56:53 +00:00
pcTuiApps = declPackageSet [
2023-08-02 21:11:49 +00:00
" a e r c " # email client
" m s m t p " # sendmail
" o f f l i n e i m a p " # email mailbox sync
2023-11-18 22:56:53 +00:00
# "sfeed" # RSS fetcher
2023-08-02 21:11:49 +00:00
" v i s i d a t a " # TUI spreadsheet viewer/editor
" w 3 m " # web browser
] ;
2023-07-03 07:58:02 +00:00
2023-08-02 21:11:49 +00:00
iphoneUtils = declPackageSet [
" i f u s e "
" i p f s "
" l i b i m o b i l e d e v i c e "
" s a n e - s c r i p t s . s y n c - f r o m - i p h o n e "
] ;
2023-07-03 07:58:02 +00:00
2023-08-02 21:11:49 +00:00
devPkgs = declPackageSet [
2023-10-01 03:47:45 +00:00
" c a r g o "
2023-08-02 21:11:49 +00:00
" c l a n g "
2023-10-20 23:07:02 +00:00
" l u a "
2023-08-02 21:11:49 +00:00
" n o d e j s "
2023-11-05 20:02:40 +00:00
" p a t c h e l f "
2023-10-01 03:47:45 +00:00
" r u s t c "
2023-08-02 21:11:49 +00:00
" t r e e - s i t t e r "
] ;
2023-07-04 10:27:59 +00:00
2023-06-09 00:36:47 +00:00
2023-07-03 07:49:44 +00:00
# INDIVIDUAL PACKAGE DEFINITIONS
2023-06-09 00:36:47 +00:00
2023-11-08 15:32:50 +00:00
cargo . persist . byStore . plaintext = [ " . c a r g o " ] ;
2023-09-30 02:56:31 +00:00
2023-12-15 08:17:07 +00:00
# auth token, preferences
delfin . persist . byStore . private = [ " . c o n f i g / d e l f i n " ] ;
2023-07-03 07:49:44 +00:00
# creds, but also 200 MB of node modules, etc
2023-11-08 15:32:50 +00:00
discord . persist . byStore . private = [ " . c o n f i g / d i s c o r d " ] ;
2023-06-09 00:36:47 +00:00
2023-11-17 00:13:34 +00:00
endless-sky . persist . byStore . plaintext = [ " . l o c a l / s h a r e / e n d l e s s - s k y " ] ;
2023-07-03 07:49:44 +00:00
# `emote` will show a first-run dialog based on what's in this directory.
# mostly, it just keeps a LRU of previously-used emotes to optimize display order.
# TODO: package [smile](https://github.com/mijorus/smile) for probably a better mobile experience.
2023-11-08 15:32:50 +00:00
emote . persist . byStore . plaintext = [ " . l o c a l / s h a r e / E m o t e " ] ;
2023-06-09 00:36:47 +00:00
2023-11-08 15:32:50 +00:00
fluffychat-moby . persist . byStore . plaintext = [ " . l o c a l / s h a r e / c h a t . f l u f f y . f l u f f y c h a t " ] ;
2023-07-03 08:03:55 +00:00
2023-09-16 12:44:09 +00:00
font-manager . package = pkgs . font-manager . override {
# build without the "Google Fonts" integration feature, to save closure / avoid webkitgtk_4_0
withWebkit = false ;
} ;
2023-07-03 07:49:44 +00:00
# MS GitHub stores auth token in .config
# TODO: we can populate gh's stuff statically; it even lets us use the same oauth across machines
2023-11-08 15:32:50 +00:00
gh . persist . byStore . private = [ " . c o n f i g / g h " ] ;
2023-06-09 00:36:47 +00:00
2023-11-14 03:36:15 +00:00
gnome-2048 . persist . byStore . plaintext = [ " . l o c a l / s h a r e / g n o m e - 2 0 4 8 / s c o r e s " ] ;
2023-11-08 15:32:50 +00:00
" g n o m e . g n o m e - m a p s " . persist . byStore . plaintext = [ " . c a c h e / s h u m a t e " ] ;
" g n o m e . g n o m e - m a p s " . persist . byStore . private = [ " . l o c a l / s h a r e / m a p s - p l a c e s . j s o n " ] ;
2023-10-02 04:07:21 +00:00
2023-07-03 07:49:44 +00:00
# actual monero blockchain (not wallet/etc; safe to delete, just slow to regenerate)
# XXX: is it really safe to persist this? it doesn't have info that could de-anonymize if captured?
2023-11-08 15:32:50 +00:00
monero-gui . persist . byStore . plaintext = [ " . b i t m o n e r o " ] ;
2023-06-09 00:36:47 +00:00
2023-11-08 15:32:50 +00:00
mumble . persist . byStore . private = [ " . l o c a l / s h a r e / M u m b l e " ] ;
2023-06-09 00:36:47 +00:00
2023-07-03 07:49:44 +00:00
# settings (electron app)
2023-11-08 15:32:50 +00:00
obsidian . persist . byStore . plaintext = [ " . c o n f i g / o b s i d i a n " ] ;
2023-06-09 00:36:47 +00:00
2023-11-05 20:02:40 +00:00
python3-repl . package = pkgs . python3 . withPackages ( ps : with ps ; [
requests
] ) ;
2023-11-15 05:53:14 +00:00
shattered-pixel-dungeon . persist . byStore . plaintext = [ " . l o c a l / s h a r e / . s h a t t e r e d p i x e l / s h a t t e r e d - p i x e l - d u n g e o n " ] ;
2023-07-03 07:49:44 +00:00
# printer/filament settings
2023-11-08 15:32:50 +00:00
slic3r . persist . byStore . plaintext = [ " . S l i c 3 r " ] ;
2023-06-09 00:36:47 +00:00
2023-11-17 00:13:34 +00:00
space-cadet-pinball . persist . byStore . plaintext = [ " . l o c a l / s h a r e / S p a c e C a d e t P i n b a l l " ] ;
2023-11-13 22:16:56 +00:00
superTux . persist . byStore . plaintext = [ " . l o c a l / s h a r e / s u p e r t u x 2 " ] ;
2023-11-08 15:32:50 +00:00
tdesktop . persist . byStore . private = [ " . l o c a l / s h a r e / T e l e g r a m D e s k t o p " ] ;
2023-06-09 00:36:47 +00:00
2023-11-08 15:32:50 +00:00
tokodon . persist . byStore . private = [ " . c a c h e / K D E / t o k o d o n " ] ;
2023-06-09 00:36:47 +00:00
2023-11-16 20:50:40 +00:00
vvvvvv . persist . byStore . plaintext = [ " . l o c a l / s h a r e / V V V V V V " ] ;
2023-11-08 15:32:50 +00:00
whalebird . persist . byStore . private = [ " . c o n f i g / W h a l e b i r d " ] ;
2023-06-09 00:36:47 +00:00
2023-11-08 15:32:50 +00:00
yarn . persist . byStore . plaintext = [ " . c a c h e / y a r n " ] ;
2023-07-03 07:49:44 +00:00
} ;
2023-09-11 22:31:54 +00:00
programs . feedbackd = lib . mkIf config . sane . programs . feedbackd . enabled {
enable = true ;
} ;
2023-06-09 00:36:47 +00:00
}