desktop.nix
1 { 2 config, 3 lib, 4 pkgs, 5 inputs, 6 ... 7 }: 8 with lib; 9 let 10 cfg = config.maatwerk.desktop; 11 in 12 { 13 options.maatwerk.desktop = { 14 enable = mkEnableOption "Enable default desktop packages + configuration"; 15 }; 16 17 config = mkIf cfg.enable { 18 maatwerk.browser.enable = true; 19 maatwerk.ghostty.enable = true; 20 maatwerk.stylix.enable = true; 21 maatwerk.attic.enable = true; 22 maatwerk.aerc.enable = true; 23 maatwerk.khal.enable = true; 24 maatwerk.nixvim.enable = true; 25 26 age.secrets = { 27 proton.file = "${inputs.secrets}/proton.age"; 28 }; 29 30 home.packages = 31 with pkgs; 32 with pkgs.kdePackages; 33 [ 34 kooha # record screen wayland 35 wev # wayland xev 36 cheese # webcam 37 dezoomify-rs # art archival 38 localsend # airdrop 39 wvkbd-desktop # osk 40 gnupg 41 devenv 42 43 # file support 44 zathura # pdf 45 imv # image 46 mpv # video 47 mousepad # gui-notepad 48 imagemagick # convert images 49 50 # work 51 citrix_workspace 52 53 # networking 54 wireguard-tools # wg-quick 55 podman-compose # replace for dud 56 nyx # tor debugging 57 58 # forensics 59 magika-cli # recognize filetype 60 sleuthkit # fls, icat 61 exiftool # read metadata 62 binwalk # firmware analysis 63 tesseract # ocr 64 ent # test entropy files 65 mat2 # remove metadata 66 nmap 67 xca 68 69 # music 70 strawberry 71 72 # messaging 73 signal-desktop 74 fractal # matrix-client 75 ]; 76 77 # DBus secret service 78 services.pass-secret-service.enable = true; 79 80 services.unison = { 81 enable = true; 82 pairs = { 83 "notes" = { 84 # NFS doesn't support inotify events 85 commandOptions.repeat = "60"; 86 roots = [ 87 "/home/martijn/Notes" 88 "/mnt/notes/" 89 ]; 90 }; 91 "aichats" = { 92 # NFS doesn't support inotify events 93 commandOptions.repeat = "60"; 94 roots = [ 95 "${config.xdg.configHome}/aichat/sessions" 96 "/mnt/session/" 97 ]; 98 }; 99 }; 100 }; 101 102 programs.gpg = { 103 enable = true; 104 scdaemonSettings = { 105 # Use system PCSC driver 106 disable-ccid = true; 107 # Allow OpenSC to touch the card 108 pcsc-shared = true; 109 # Stop GPG from blocking Firefox 110 disable-application = "piv"; 111 # card-timeout = "5"; 112 }; 113 }; 114 services.gpg-agent = { 115 enable = true; 116 enableSshSupport = false; 117 pinentry.package = pkgs.pinentry-qt; 118 defaultCacheTtl = 43200; 119 maxCacheTtl = 43200; 120 }; 121 122 }; 123 }