Compare commits

...
342 Commits
Author SHA1 Message Date
Jan-Bulthuis 68c241f31a Changed location of some persistence files 2025-05-29 18:32:08 +02:00
Jan-Bulthuis 81c37abadd Fixed impermanence not mounting persist 2025-05-29 17:05:15 +02:00
Jan-Bulthuis 85c962fd6d Updated REAME.md 2025-05-29 17:04:58 +02:00
Jan-Bulthuis b0a8874a93 Set up impermanence 2025-05-29 16:34:24 +02:00
Jan-Bulthuis 01021d179d Fixed hold command 2025-05-29 15:49:24 +02:00
Jan-Bulthuis b8a607c3d0 Fixed hold command 2025-05-29 15:31:46 +02:00
Jan-Bulthuis 793015646d Updated base vm config 2025-05-29 15:10:10 +02:00
Jan-Bulthuis 43f472fe88 Fixed reference to incorrect zfs pool 2025-05-29 14:36:07 +02:00
Jan-Bulthuis 51ab89cd98 Better disko setup 2025-05-29 14:19:19 +02:00
Jan-Bulthuis f0d56df191 Addid disko config for zfs 2025-05-29 13:06:13 +02:00
Jan-Bulthuis 9a97168950 Moved profiles to dedicated directory 2025-05-29 12:16:38 +02:00
Jan-Bulthuis cdffa07675 Reenable timeout 2025-05-29 09:59:09 +02:00
Jan-Bulthuis 13fbcea361 Disabled https 2025-05-28 19:26:11 +02:00
Jan-Bulthuis 36c2c907d5 Fixed tls private key file name 2025-05-28 16:46:25 +02:00
Jan-Bulthuis 11bc7221e3 Added batch flag 2025-05-28 16:39:52 +02:00
Jan-Bulthuis 3a6122784b Generate self-signed tls for wstunnel 2025-05-28 16:35:59 +02:00
Jan-Bulthuis d4338f1861 Added local to the minecraft group 2025-05-28 16:15:38 +02:00
Jan-Bulthuis ea290d9158 Install tmux 2025-05-28 16:13:49 +02:00
Jan-Bulthuis 9cc07cdfaf Created a minecraft server vm 2025-05-28 15:59:22 +02:00
Jan-Bulthuis 33b9cee6a0 Installed wireshark 2025-05-28 15:59:13 +02:00
Jan-Bulthuis 47479f40d1 Installed wireshark 2025-05-28 15:58:52 +02:00
Jan-Bulthuis e1cc2342b2 Added certificates back in 2025-05-28 14:12:00 +02:00
Jan-Bulthuis 092b3551c1 Remove tls certificates 2025-05-28 14:06:31 +02:00
Jan-Bulthuis 9d50a66388 Set up admin user 2025-05-28 13:59:30 +02:00
Jan-Bulthuis 4a644607c6 Restructured glue 2025-05-28 13:39:00 +02:00
Jan e134b3db6e Merge pull request 'Restructuring' (#1) from blueprint into main
Reviewed-on: Jan/dotfiles#1
2025-05-28 10:41:38 +00:00
Jan-Bulthuis 4cd01f17a3 Remove unorganized 2025-05-28 12:37:29 +02:00
Jan-Bulthuis e872cf3788 Changed tunnel address 2025-05-28 12:36:12 +02:00
Jan-Bulthuis f4d938073c Update 2025-05-28 12:23:48 +02:00
Jan-Bulthuis 01374fe5b0 Added vpn vm with wstunnel server 2025-05-28 12:23:31 +02:00
Jan-Bulthuis a75b839bc1 Replaced evince with papers 2025-05-28 12:22:49 +02:00
Jan-Bulthuis 8c8b6b0206 Made vm-audio buildable 2025-05-28 12:22:34 +02:00
Jan-Bulthuis 1829531f25 Fixed build issue due to home-manager not working for root for some reason 2025-05-28 12:22:07 +02:00
Jan-Bulthuis daab746b40 Fixed printing 2025-05-28 12:21:45 +02:00
Jan-Bulthuis 6c452c6649 Refactor home manager profile 2025-05-25 11:55:51 +02:00
Jan-Bulthuis 63386512a8 System update 2025-05-23 15:11:06 +02:00
Jan-Bulthuis ad8d7c8c09 Reworked DE 2025-05-18 15:01:25 +02:00
Jan-Bulthuis c37238700d Added dconf-editor and bottles 2025-05-18 15:01:14 +02:00
Jan-Bulthuis 330f5e2a50 Enabled libvirtd 2025-05-18 15:01:05 +02:00
Jan-Bulthuis fbbe869550 Reworked glue input 2025-05-18 15:00:51 +02:00
Jan-Bulthuis 5e23488cae Progress 2025-05-13 14:26:22 +02:00
Jan-Bulthuis 760815da50 Reorganized 2025-05-09 15:27:44 +02:00
Jan-Bulthuis c3c61ce654 Updated personal config 2025-05-09 15:01:50 +02:00
Jan-Bulthuis 626d78f088 Added BvA user 2025-05-09 15:01:40 +02:00
Jan-Bulthuis bcd5606107 Restarted firewall 2025-05-09 15:01:25 +02:00
Jan-Bulthuis f8fbb52607 Small change 2025-05-09 15:01:14 +02:00
Jan-Bulthuis 2b0bdb0248 Enabled grdp correctly by adding GDM 2025-05-09 15:01:07 +02:00
Jan-Bulthuis f0403330e2 Fixed package 2025-05-09 15:00:51 +02:00
Jan-Bulthuis e10079e578 Updated some theming 2025-05-09 15:00:21 +02:00
Jan-Bulthuis 2a8fcf627b Fixed some packages 2025-05-09 14:59:38 +02:00
Jan-Bulthuis 3d54536168 Set up account or programming contests 2025-05-09 14:59:11 +02:00
Jan-Bulthuis 2c0ae15417 Set controller mode 2025-04-26 14:26:19 +02:00
Jan-Bulthuis 4ed934350d Enabled JustWorksRepairing 2025-04-26 13:49:33 +02:00
Jan-Bulthuis 989ee1f6e5 Set bluez5 role 2025-04-26 13:31:01 +02:00
Jan-Bulthuis 1c9f01034e Updated BT config 2025-04-26 13:04:51 +02:00
Jan-Bulthuis f62780826b Simplified settings 2025-04-26 01:06:22 +02:00
Jan-Bulthuis 83829303b5 Further bluetooth configuration 2025-04-26 00:50:43 +02:00
Jan-Bulthuis d46d321142 Enabled bluetooth 2025-04-26 00:30:17 +02:00
Jan-Bulthuis f6442c65dd Enabled graphics 2025-04-24 17:58:04 +02:00
Jan-Bulthuis e7aac4bef4 Reordered arguments 2025-04-24 16:50:31 +02:00
Jan-Bulthuis 8799c3c943 Fix typo 2025-04-24 15:29:36 +02:00
Jan-Bulthuis 3631918db2 Simplified carla-osc setup 2025-04-24 15:24:52 +02:00
Jan-Bulthuis 180d0b3b00 Fixed issue in carla_osc_bridge 2025-04-24 15:24:12 +02:00
Jan-Bulthuis b191a3ff94 More firewall expansion 2025-04-24 14:46:34 +02:00
Jan-Bulthuis 54d8f51fb5 Updated firewall 2025-04-24 14:38:30 +02:00
Jan-Bulthuis 9089f9d936 Added carla_osc_bridge for bidirectional osc commands 2025-04-24 14:08:51 +02:00
Jan-Bulthuis cdee5ca0e8 Enabled qt 2025-04-24 10:48:17 +02:00
Jan-Bulthuis ca9757fecb Simplified setup 2025-04-23 15:13:51 +02:00
Jan-Bulthuis d516be8e29 System update 2025-04-23 14:44:20 +02:00
Jan-Bulthuis bfe15b2409 Disabled modrinth 2025-04-23 14:44:08 +02:00
Jan-Bulthuis 466fff5753 Fixed stylix vscode profile name 2025-04-23 14:44:00 +02:00
Jan-Bulthuis b965351818 Disabled non-free emulators 2025-04-23 14:21:29 +02:00
Jan-Bulthuis 7d806c7548 Removed wprsd service 2025-04-23 14:21:17 +02:00
Jan-Bulthuis c28b56fc63 Set volume 2025-04-23 14:21:07 +02:00
Jan-Bulthuis e6374ca39b Made Xpra floating in River 2025-04-22 19:42:58 +02:00
Jan-Bulthuis cd9653561c Added wireshark 2025-04-22 19:42:47 +02:00
Jan-Bulthuis 6664cce060 Enabled spotifyd autoplay 2025-04-19 10:46:36 +02:00
Jan-Bulthuis 22853f0190 Set default osc target 2025-04-19 10:46:25 +02:00
Jan-Bulthuis bc5148e601 Opened port for open-stage-control 2025-04-18 21:50:14 +02:00
Jan-Bulthuis 6b99c0f771 Added a module for Xpra 2025-04-18 21:49:36 +02:00
Jan-Bulthuis 41867fb653 Added a service for open stage control 2025-04-18 21:49:10 +02:00
Jan-Bulthuis c063cf2dac Fixed an error 2025-04-18 17:41:01 +02:00
Jan-Bulthuis 755ce711fe Added xpra setup 2025-04-18 17:34:36 +02:00
Jan-Bulthuis a6190e3bb2 Install waypipe 2025-04-18 16:30:19 +02:00
Jan-Bulthuis 5c575254a1 Supplied project file to carla 2025-04-18 15:22:40 +02:00
Jan-Bulthuis f06855c2a2 Set up firewall for Carla 2025-04-18 15:19:27 +02:00
Jan-Bulthuis 435787f440 Added a carla service 2025-04-18 15:12:08 +02:00
Jan-Bulthuis b7c1710046 Fixed some sysctl values 2025-04-18 11:59:36 +02:00
Jan-Bulthuis aac0926608 Dedicated more memory to network hardware 2025-04-18 11:57:35 +02:00
Jan-Bulthuis 8393f03b2a wprs back to default build 2025-04-18 11:57:20 +02:00
Jan-Bulthuis 26a4cba43c Moved wprs to a debug version 2025-04-18 10:22:52 +02:00
Jan-Bulthuis 102433be68 Set up xdg icons 2025-04-18 10:02:16 +02:00
Jan-Bulthuis ba3d327a1b Setup qt 2025-04-18 09:58:54 +02:00
Jan-Bulthuis a518fab421 Added xserver 2025-04-18 09:49:49 +02:00
Jan-Bulthuis 268276ceb3 Removed display manager xpra 2025-04-17 23:58:45 +02:00
Jan-Bulthuis 31f47d22d7 Enabled xserver 2025-04-17 22:31:56 +02:00
Jan-Bulthuis e6a8899c1f Added xpra 2025-04-17 22:21:05 +02:00
Jan-Bulthuis 55dc78ed46 Set spotifyd pulseaudio device name 2025-04-17 22:07:52 +02:00
Jan-Bulthuis 11245c49ce Back to new version 2025-04-17 21:52:49 +02:00
Jan-Bulthuis 6034a44d61 Went bang to older wprs version 2025-04-17 21:28:30 +02:00
Jan-Bulthuis 27dde8e40a Added some null sinks 2025-04-17 19:44:46 +02:00
Jan-Bulthuis af3984498c Made mixer user linger 2025-04-17 18:46:20 +02:00
Jan-Bulthuis 65605dbf57 Moved spotifyd to user service 2025-04-17 18:44:52 +02:00
Jan-Bulthuis d3798b201a Changed backend to pulseaudio 2025-04-17 18:40:12 +02:00
Jan-Bulthuis 74f62b34cf Changed spotifyd user to mixer, disabled mpris 2025-04-17 18:32:25 +02:00
Jan-Bulthuis 78077638fc Added spotifyd 2025-04-17 18:19:48 +02:00
Jan-Bulthuis baca029fcc Revert 2025-04-17 16:55:05 +02:00
Jan-Bulthuis ce620d3eb2 Fixed missing field 2025-04-17 16:50:36 +02:00
Jan-Bulthuis 0786e3b13c Reenabled roc with jack rule to prevent self connections 2025-04-17 16:49:03 +02:00
Jan-Bulthuis 281dbd7779 Removed roc again 2025-04-17 16:15:28 +02:00
Jan-Bulthuis 05c2c9dc30 Reverted adding latency target 2025-04-17 16:14:14 +02:00
Jan-Bulthuis 11496e21e2 Set target latency for roc 2025-04-17 16:11:40 +02:00
Jan-Bulthuis af7181e705 Reenable roc source 2025-04-17 15:30:00 +02:00
Jan-Bulthuis 7311a0f94f Cleanup 2025-04-17 15:20:50 +02:00
Jan-Bulthuis 9b0bcc56d6 Disabled roc source 2025-04-17 15:03:01 +02:00
Jan-Bulthuis 2321832fbf Updated roc configuration 2025-04-17 14:48:22 +02:00
Jan-Bulthuis dd23e88fc1 Added roc source and sink 2025-04-17 14:42:54 +02:00
Jan-Bulthuis b77bc17058 Added distrho-ports plugins 2025-04-17 13:30:03 +02:00
Jan-Bulthuis 14a8061913 Cleanup 2025-04-17 05:11:13 +02:00
Jan-Bulthuis 4168ac91d9 Added pugl to dependencies 2025-04-17 05:07:39 +02:00
Jan-Bulthuis 31360d7963 Changed some packages around 2025-04-17 04:44:03 +02:00
Jan-Bulthuis 512c7206b4 Added more plugins 2025-04-17 04:27:10 +02:00
Jan-Bulthuis cab19bedb7 Installed lsp-plugins systemwide 2025-04-17 03:52:48 +02:00
Jan-Bulthuis a580b69c40 Added dependency on lsp-plugins 2025-04-17 03:47:30 +02:00
Jan-Bulthuis d1ed464438 Added fontconfig and libx11 dependency 2025-04-17 03:36:17 +02:00
Jan-Bulthuis e16c0072a7 Fixed conflicting definition 2025-04-17 03:10:32 +02:00
Jan-Bulthuis 712c81af12 Added dependencies to path 2025-04-17 03:04:54 +02:00
Jan-Bulthuis 51e102bb39 Added some plugins to vm-audio 2025-04-17 02:17:47 +02:00
Jan-Bulthuis 13b66648fd Added wprs desktop entries 2025-04-17 02:17:38 +02:00
Jan-Bulthuis a43d2bf6b5 Added users to the audio group 2025-04-16 21:35:26 +02:00
Jan-Bulthuis 31188f0438 Removed older kernel 2025-04-16 21:16:00 +02:00
Jan-Bulthuis 0fff6a7d7d Even older kernel version 2025-04-16 20:31:29 +02:00
Jan-Bulthuis 5a97cd69e2 Changed kernel version 2025-04-16 20:28:38 +02:00
Jan-Bulthuis 18db7c616d Added rtkit for pipewire 2025-04-16 20:01:02 +02:00
Jan-Bulthuis 7c37e5d216 Moved to login shell 2025-04-16 18:33:26 +02:00
Jan-Bulthuis a7a4294195 Added path echo 2025-04-16 17:59:33 +02:00
Jan-Bulthuis a3a2616cf8 Added dependencies to path 2025-04-16 17:55:38 +02:00
Jan-Bulthuis ea95dfa0d3 Added xwayland 2025-04-16 17:50:28 +02:00
Jan-Bulthuis 5e8d66d34e Added wprs 2025-04-16 17:16:18 +02:00
Jan-Bulthuis 65b480a007 Added Carla and enable audio 2025-04-16 17:15:33 +02:00
Jan-Bulthuis d72ecc6b27 Added ssh key for mixer 2025-04-16 17:04:16 +02:00
Jan-Bulthuis db2d29131c Added path to xwayland-xdg-shell 2025-04-16 16:51:01 +02:00
Jan-Bulthuis ce9f10504a Added xwayland 2025-04-16 16:42:48 +02:00
Jan-Bulthuis f1bb1df177 Add full logs 2025-04-16 16:37:47 +02:00
Jan-Bulthuis 780cd0dfab Updated wprs 2025-04-16 16:26:49 +02:00
Jan-Bulthuis 1ddc3eae29 Added wprs for dependencies 2025-04-16 16:02:03 +02:00
Jan-Bulthuis 44878527f5 Added mixer to journal group 2025-04-16 15:58:48 +02:00
Jan-Bulthuis 21c7272015 Update wprsd service 2025-04-16 15:47:59 +02:00
Jan-Bulthuis 26c5ce5cf3 Moved wprsd to proper user service 2025-04-16 15:43:58 +02:00
Jan-Bulthuis 12c56eaac5 Fixed UID 2025-04-16 15:38:54 +02:00
Jan-Bulthuis 137b380b73 Added XDG_RUNTIME_DIR to wprsd service 2025-04-16 15:35:45 +02:00
Jan-Bulthuis 8629061724 Added group for mixer user 2025-04-16 15:24:55 +02:00
Jan-Bulthuis 16b781f11d Added wprsd service 2025-04-16 15:23:22 +02:00
Jan-Bulthuis 2e36274256 Disable some color theme settings without desktop enabled 2025-04-16 14:35:23 +02:00
Jan-Bulthuis ccdbfd81ac Added qemu guestagent 2025-04-16 14:33:15 +02:00
Jan-Bulthuis 59a16df0a3 Removed some programs 2025-04-16 14:22:09 +02:00
Jan-Bulthuis fa2413f272 Split up code to support server configuration 2025-04-16 13:54:14 +02:00
Jan-Bulthuis 6364d8afa0 Updated CSD logic 2025-04-16 13:06:16 +02:00
Jan-Bulthuis c894f00eb0 Added flatpak options 2025-04-16 13:06:09 +02:00
Jan-Bulthuis 1300acd7ce Remove wpa_supplicant_gui 2025-04-16 13:05:40 +02:00
Jan-Bulthuis 5b1022a52b Update 2025-04-16 13:05:20 +02:00
Jan-Bulthuis b9c7a4c4c7 Fixed firefox searchengine name 2025-04-16 13:05:10 +02:00
Jan-Bulthuis cdedce8d5b Renamed wpaperd 2025-04-16 13:04:20 +02:00
Jan-Bulthuis 3f6fcdc283 Fixed wireguard issue with firewall 2025-04-16 13:04:00 +02:00
Jan-Bulthuis 8738fa3066 Fixed vscode customization 2025-04-16 13:03:45 +02:00
Jan-Bulthuis 9c9fe6b18a Added gnome environment back in, fixed es-de 2025-04-16 13:02:27 +02:00
Jan-Bulthuis 885940fd69 Removed unneeded hash 2025-04-16 13:01:24 +02:00
Jan-Bulthuis f41cd9c922 Added battery state to GNOME 2025-04-16 13:01:15 +02:00
Jan-Bulthuis 2f069029e9 Moved to beta nvidia driver 2025-04-16 13:00:52 +02:00
Jan-Bulthuis bebe6eaeeb Enabled grdp and printing 2025-04-16 13:00:40 +02:00
Jan-Bulthuis 7b92e0d364 Added Jack support to pipewire 2025-04-16 13:00:30 +02:00
Jan-Bulthuis 24519ceea7 Added printing and grdp modules 2025-04-16 13:00:18 +02:00
Jan-Bulthuis a0cb0d1f44 Set default background 2025-02-27 11:18:09 +01:00
Jan-Bulthuis 4fed3712b0 Added background module for themed backgrounds 2025-02-27 11:13:47 +01:00
Jan-Bulthuis 2aa2a5ecba Fixed the system keyring 2025-02-27 11:13:33 +01:00
Jan-Bulthuis c4326f1aba Removed the use for dbus-run-session 2025-02-27 11:13:03 +01:00
Jan-Bulthuis 8b70bcb229 Removed i3 module 2025-02-27 11:12:42 +01:00
Jan-Bulthuis d2fa73f887 Modified specialisation generation slightly 2025-02-27 11:12:24 +01:00
Jan-Bulthuis 3619713bf2 Updated nixgreety 2025-02-27 11:12:01 +01:00
Jan-Bulthuis a61d63ff2c Fixed systemwide config 2025-02-27 11:11:52 +01:00
Jan-Bulthuis 8ca41a3a46 Enabled rtkit 2025-02-27 11:10:45 +01:00
Jan-Bulthuis 00ce18733e Removed wpa_supplicant line from laptop config 2025-02-27 11:10:14 +01:00
Jan-Bulthuis b5b5063065 Set up desktop environments 2025-02-23 14:53:11 +01:00
Jan-Bulthuis 1d5233512b Added cosmic desktop flake 2025-02-23 14:53:00 +01:00
Jan-Bulthuis 8858b2967c Pinned es-de reference to nixpkgs-stable 2025-02-23 14:52:46 +01:00
Jan-Bulthuis 8f2708d137 Removed unnecessary imports 2025-02-23 14:52:28 +01:00
Jan-Bulthuis f224a5efa7 Set default terminal 2025-02-23 14:52:07 +01:00
Jan-Bulthuis 63093d8a87 Progress on desktop system, added integration with nixgreety 2025-02-23 14:51:56 +01:00
Jan-Bulthuis 86b8a5571b Switched to nixgreety for greeter 2025-02-23 14:51:07 +01:00
Jan-Bulthuis 4775dac377 Added nixgreety module 2025-02-23 14:50:51 +01:00
Jan-Bulthuis 839df21c46 Added nixgreety package 2025-02-23 14:50:14 +01:00
Jan-Bulthuis 539b63cc1c Removed debug info from dina-psfu 2025-02-23 14:49:55 +01:00
Jan-Bulthuis b62640e1df Moved pipewire to base 2025-02-23 14:49:36 +01:00
Jan-Bulthuis ef385b01e8 Updated systemwide to look into specialisations 2025-02-23 14:48:54 +01:00
Jan-Bulthuis f7ea0d0c11 Added swap file 2025-02-23 14:48:32 +01:00
Jan-Bulthuis 77fc328c84 Moved desktop config 2025-02-17 15:38:32 +01:00
Jan-Bulthuis a68f032fee Moved theming modules 2025-02-17 15:06:20 +01:00
Jan-Bulthuis c6cd3018db Implement quick and dirty es-de fix 2025-02-17 14:53:20 +01:00
Jan-Bulthuis 3b6a8104bf Pass system as specialArg 2025-02-17 14:52:57 +01:00
Jan-Bulthuis ae96717720 System update 2025-02-17 13:05:27 +01:00
Jan-Bulthuis 036f619673 Rewrote systemwide system, fixed broken build 2025-02-17 12:53:45 +01:00
Jan-Bulthuis 42040403b1 Removed i3 and glpaper from personal config 2025-02-17 12:52:16 +01:00
Jan-Bulthuis 07c056b0cd Fixed package import name 2025-02-17 12:51:56 +01:00
Jan-Bulthuis d35276baeb Renamed dina-psf to dina-psfu 2025-02-17 12:51:43 +01:00
Jan-Bulthuis 07bad003ba Removed insecure package exceptions 2025-02-17 12:49:33 +01:00
Jan-Bulthuis 9a5bd2177c Reorganized desktop, simplified systemwide setup 2025-02-16 18:15:44 +01:00
Jan-Bulthuis 627c29ba9f Moved from nixos-unstable to nixpkgs-unstable 2025-02-15 16:30:07 +01:00
Jan-Bulthuis a7c8793fdd Added some more settings to vscode 2025-02-15 16:29:53 +01:00
Jan-Bulthuis 5193284380 Updated cpp module 2025-02-15 16:28:59 +01:00
Jan-Bulthuis 187b23fd64 Added mkenv script 2025-02-15 16:28:38 +01:00
Jan-Bulthuis 7080ae11af Revert "System update"
This reverts commit f98b995b80.
2025-02-12 11:56:37 +01:00
Jan-Bulthuis 0981168012 Disabled Mathematica 2025-02-12 04:09:08 +01:00
Jan-Bulthuis 135a4b76a7 Undid some work because it was not pure and hence not possible 2025-02-12 04:08:29 +01:00
Jan-Bulthuis 596494e41b Added mathematica installer 2025-02-12 04:06:53 +01:00
Jan-Bulthuis f98b995b80 System update 2025-02-12 03:37:45 +01:00
Jan-Bulthuis c44bffaeb0 Made quit action repeating 2025-02-12 03:35:09 +01:00
Jan-Bulthuis 4f4e2087b0 Updated river configuration 2025-02-12 03:32:53 +01:00
Jan-Bulthuis a04f791e06 Ly implementation 2025-02-12 03:23:49 +01:00
Jan-Bulthuis fa95171f28 Code cleanup 2025-02-12 02:18:58 +01:00
Jan-Bulthuis 4c04d14d8f Fixed dina-psf 2025-02-12 02:17:20 +01:00
Jan-Bulthuis 86f4a23831 Corrected filename 2025-02-12 00:57:09 +01:00
Jan-Bulthuis e3877111b5 Added sfm file 2025-02-12 00:54:56 +01:00
Jan-Bulthuis 2374c19a0f Added custom fontset 2025-02-12 00:40:12 +01:00
Jan-Bulthuis 5995d1ea37 Progress on dina-psf 2025-02-11 23:01:54 +01:00
Jan-Bulthuis fc5429a981 Added ly dependencies 2025-02-11 22:33:14 +01:00
Jan-Bulthuis b453a32d70 Added overlay package for ly 2025-02-11 22:28:25 +01:00
Jan-Bulthuis f94242e4b5 Removed dina-vector 2025-02-11 22:27:40 +01:00
Jan-Bulthuis 7a1dca2a96 Added ly as displaymanager 2025-02-11 22:21:52 +01:00
Jan-Bulthuis f9bf846c72 Modified font 2025-02-11 19:31:06 +01:00
Jan-Bulthuis 4400dc070f Fixed font 2025-02-11 19:30:26 +01:00
Jan-Bulthuis 555c48dc3b Removed console 2025-02-11 19:30:20 +01:00
Jan-Bulthuis 2c533f6f57 Added derivation for ttf2psf 2025-02-11 18:45:13 +01:00
Jan-Bulthuis 7bd321e3f6 Added config file for console 2025-02-11 18:15:04 +01:00
Jan-Bulthuis 1e8b56f03b Moved from overrides to overlay for custom packages 2025-02-11 16:09:01 +01:00
Jan-Bulthuis fc5a748fa5 Created dina-psf package 2025-02-11 15:48:55 +01:00
Jan-Bulthuis 1b35d92f6b Adding dina as console font 2025-02-11 13:27:35 +01:00
Jan-Bulthuis 750ca2f3a8 Added GDM 2025-02-11 12:24:10 +01:00
Jan-Bulthuis 3ae7a5e8d4 Rewrote if statement around defining LD_LIBRARY_PATH 2025-02-10 00:33:28 +01:00
Jan-Bulthuis e1d061ffbf Added libPackages 2025-02-10 00:31:08 +01:00
Jan-Bulthuis 299813134e Added clippy and rustfmt 2025-02-10 00:10:55 +01:00
Jan-Bulthuis 9287815cd2 Fixed packages 2025-02-09 23:57:47 +01:00
Jan-Bulthuis b850b164f5 Removed language installation from rust module 2025-02-09 23:53:52 +01:00
Jan-Bulthuis fcbbb03060 Added rust to devShell 2025-02-09 23:53:27 +01:00
Jan-Bulthuis f32764b652 Updated python 2025-02-09 23:45:15 +01:00
Jan-Bulthuis ba6aec06a3 Removed pkgs import 2025-02-09 02:37:50 +01:00
Jan-Bulthuis 97f69bb208 Added jupyter to devShell 2025-02-09 02:19:49 +01:00
Jan-Bulthuis e2abde8b28 Changes 2025-02-09 01:11:07 +01:00
Jan-Bulthuis f1f4255d7d Moved env to shell 2025-02-08 23:25:05 +01:00
Jan-Bulthuis 944d74060e Added env helper 2025-02-08 23:16:50 +01:00
Jan-Bulthuis ffc4e6a90b Fixed typo 2025-02-08 23:07:08 +01:00
Jan-Bulthuis 47c7b69afa Added python skeleton 2025-02-08 23:06:32 +01:00
Jan-Bulthuis 74ddbc24bb Start work on devshell configuration 2025-02-08 21:52:42 +01:00
Jan-Bulthuis 512c6066fa Added ente auth 2025-02-08 21:52:28 +01:00
Jan-Bulthuis 798d468706 Modified xfce environment 2025-02-08 21:52:04 +01:00
Jan-Bulthuis dec735c9d6 Added unfree retroarch emulators 2025-02-08 21:51:46 +01:00
Jan-Bulthuis 7776f845cc Added i3 systemwide config 2025-02-02 14:23:37 +01:00
Jan-Bulthuis 6072b9fdd2 Added i3 2025-02-02 14:09:09 +01:00
Jan-Bulthuis c832f5ff72 Allowed mathematica as unfree package 2025-01-30 19:06:49 +01:00
Jan-Bulthuis 030c41f7a0 Added mathematica 2025-01-30 19:05:44 +01:00
Jan-Bulthuis 02e5532cb3 removed folder 2025-01-29 16:50:17 +01:00
Jan-Bulthuis a760c0251e Moved steam desktop entries to its own subfolder 2025-01-29 16:49:11 +01:00
Jan-Bulthuis dad0cdb169 Added retroarch 2025-01-29 00:07:45 +01:00
Jan-Bulthuis ceff5dac07 Changes 2025-01-28 10:42:20 +01:00
Jan-Bulthuis 9d73b0d728 Removed some imports 2025-01-28 09:21:01 +01:00
Jan-Bulthuis 115a27d1c6 Added networkmanager 2025-01-28 09:20:50 +01:00
Jan-Bulthuis 66c619883b Removed some old packages 2025-01-28 09:14:33 +01:00
Jan-Bulthuis 3bb401859d Added eduvpn 2025-01-28 09:03:45 +01:00
Jan-Bulthuis cb35b1afd9 Back to ES-DE 2025-01-26 15:11:52 +01:00
Jan-Bulthuis b3298359b4 Moved to pegasus 2025-01-26 13:53:54 +01:00
Jan-Bulthuis 99928ddb16 Added exception for insecure dependency 2025-01-26 13:31:23 +01:00
Jan-Bulthuis 1a2d9b6490 Added ES-DE 2025-01-26 13:28:36 +01:00
Jan-Bulthuis 8e0e511335 Reorganization 2025-01-26 13:16:06 +01:00
Jan-Bulthuis 592f5dc0ef Set env variable to make matlab render 2025-01-26 13:01:54 +01:00
Jan-Bulthuis 0c670125c3 Added matlab 2025-01-26 12:57:38 +01:00
Jan-Bulthuis 76bc756b3e Opened some firewall ports 2025-01-25 20:34:23 +01:00
Jan-Bulthuis 1e7db857a6 'Fixed' feishin 2025-01-24 03:05:34 +01:00
Jan-Bulthuis aae291b1d5 Fixed rofi padding 2025-01-24 02:58:33 +01:00
Jan-Bulthuis a65c4914b7 Moved user configuration to flake from machine 2025-01-24 02:38:09 +01:00
Jan-Bulthuis f341226d0b Fixed some font issues 2025-01-24 02:26:24 +01:00
Jan-Bulthuis 3f11f64135 Updated Readme 2025-01-24 02:05:00 +01:00
Jan-Bulthuis 73c4756de6 Completed migration to flakes 2025-01-24 01:22:01 +01:00
Jan-Bulthuis 0932432e11 Moved user modules 2025-01-24 00:50:13 +01:00
Jan-Bulthuis 9352fa2649 Added flake lock 2025-01-24 00:29:06 +01:00
Jan-Bulthuis b4ad26555f Changes 2025-01-24 00:28:22 +01:00
Jan-Bulthuis eab7a2b5ad Added Nord theme 2024-12-03 16:23:29 +01:00
Jan-Bulthuis 03be992cb8 Added python formatter to VSCode 2024-12-03 13:46:59 +01:00
Jan-Bulthuis 727c0802a7 Fixed nerd font import 2024-12-03 13:46:43 +01:00
Jan-Bulthuis b9af43bec2 Fixed waybar startup after rebuild 2024-12-02 11:20:59 +01:00
Jan-Bulthuis 22089bd396 Properly pinned versions 2024-12-02 11:18:22 +01:00
Jan-Bulthuis f80ae292ba Updated readme 2024-12-02 01:03:01 +01:00
Jan-Bulthuis 73f957e81d Update personal setup 2024-12-02 00:58:01 +01:00
Jan-Bulthuis 7e790a58e5 Updated module imports 2024-12-02 00:57:48 +01:00
Jan-Bulthuis d40cab3aba Added package for Jellyfin-tui, attempt to fix qutebrowser, attempt at working quickgui 2024-12-02 00:57:31 +01:00
Jan-Bulthuis f8ba5af5ac Set Zathura settings 2024-12-02 00:56:31 +01:00
Jan-Bulthuis b2c15706c0 Update VSCode settings and extensions 2024-12-02 00:56:19 +01:00
Jan-Bulthuis bb3deb5f31 Removed stylix import from theming module 2024-12-02 00:55:42 +01:00
Jan-Bulthuis ac628036a9 Added steam 2024-12-02 00:54:51 +01:00
Jan-Bulthuis 28eb24c658 Added spotify 2024-12-02 00:54:38 +01:00
Jan-Bulthuis 891fa64466 Added shell alias configuration 2024-12-02 00:54:05 +01:00
Jan-Bulthuis 3b071a8118 Enabled web-devicons in neovim 2024-12-02 00:53:41 +01:00
Jan-Bulthuis d5c9303003 Added LaTeX language support 2024-12-02 00:53:29 +01:00
Jan-Bulthuis 5db7d1f93f Added Jupyter Notebook support 2024-12-02 00:53:17 +01:00
Jan-Bulthuis 78766dfaa8 Added bacon to rust 2024-12-02 00:53:05 +01:00
Jan-Bulthuis 3374b35053 Added Python language support 2024-12-02 00:52:55 +01:00
Jan-Bulthuis 34bba528b3 Added JS language support 2024-12-02 00:52:41 +01:00
Jan-Bulthuis a91fb54e24 Added C++ language 2024-12-02 00:52:31 +01:00
Jan-Bulthuis e24066e577 Added module for git 2024-12-02 00:52:22 +01:00
Jan-Bulthuis 52c7212155 Fix fontconfig 2024-12-02 00:52:10 +01:00
Jan-Bulthuis dc77d948e6 Update river background color after rebuild 2024-12-02 00:52:01 +01:00
Jan-Bulthuis 5f6f793979 Restart waybar after rebuild 2024-12-02 00:51:45 +01:00
Jan-Bulthuis 74e5398ccf Added base DE utilities, added reload script to run after rebuild 2024-12-02 00:51:19 +01:00
Jan-Bulthuis 208eec466e Added btop 2024-12-02 00:50:43 +01:00
Jan-Bulthuis 964dff4d8c Removed pykeepass fix, set qutebrowser max history size 2024-12-02 00:50:34 +01:00
Jan-Bulthuis 48cb8e42e9 Fixed NUR version 2024-12-02 00:49:55 +01:00
Jan-Bulthuis ba7c0b1d2a Fixed nixvim, stylix version, add sudo users to the docker group 2024-12-02 00:49:41 +01:00
Jan-Bulthuis afcf41fbb5 Added some base utilities, fixed DNS 2024-12-02 00:49:06 +01:00
Jan Bulthuis 3b41645cdf Changes 2024-09-30 16:32:54 +02:00
Jan Bulthuis 8ea644f665 Changes 2024-09-02 20:03:39 +02:00
Jan Bulthuis b921c2ac47 Progress on some things, can't remember what though 2024-07-31 13:39:09 +02:00
Jan Bulthuis 7e368b4f40 Progress 2024-07-20 06:10:56 +02:00
Jan Bulthuis 5a3aa36fd0 Changes 2024-07-19 21:54:41 +02:00
Jan Bulthuis 16de891fc7 Applied formatting 2024-07-19 14:00:55 +02:00
Jan Bulthuis e1b1e7cc38 Improved things 2024-07-19 13:59:26 +02:00
Jan Bulthuis 47365d05f5 Fixed issue with building 2024-07-19 03:51:40 +02:00
Jan Bulthuis 7379afe613 Removed janMerged.nix 2024-07-19 03:35:31 +02:00
Jan Bulthuis 0f437230c7 More configuration 2024-07-19 03:34:42 +02:00
Jan Bulthuis 23c2ef87b0 Further progress, improved dark mode handling 2024-07-19 01:00:39 +02:00
Jan Bulthuis 36c9c7a90d Added mako modue 2024-07-19 00:36:02 +02:00
Jan Bulthuis 7f318bc1b7 Added foot user module 2024-07-19 00:31:41 +02:00
Jan Bulthuis 9d7655193c Enable silent boot for tui greet 2024-07-19 00:27:18 +02:00
Jan Bulthuis ee5b9839fa Fixed build issue 2024-07-18 23:58:59 +02:00
Jan Bulthuis 36801bb13c Removed merged.nix 2024-07-18 23:56:18 +02:00
Jan Bulthuis d8cf72a4c3 Modularized boot process 2024-07-18 23:56:00 +02:00
Jan Bulthuis f40ae42933 Font progress 2024-07-18 23:36:50 +02:00
Jan Bulthuis 4f49ea8383 Generic progress 2024-07-18 22:21:06 +02:00
Jan Bulthuis dd327a977a More progress 2024-07-18 18:13:19 +02:00
Jan Bulthuis 472731c514 Significant progress on font customization 2024-07-18 16:29:20 +02:00
Jan Bulthuis 5f66c1c631 Significant progress 2024-07-18 13:48:49 +02:00
Jan Bulthuis f80047be52 Fixed system wide configuration system for user specific modules 2024-07-18 07:09:56 +02:00
Jan Bulthuis 1b4f8911fd Progress 2024-07-18 06:08:27 +02:00
Jan Bulthuis bb7c74da4b Started splitting up user and home manager configuration 2024-07-17 19:20:32 +02:00
Jan Bulthuis b18f1fb4c9 Updated gitignore 2024-07-17 19:19:56 +02:00
54 changed files with 2739 additions and 1136 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
result
+10 -2
View File
@@ -1,3 +1,11 @@
# dotfiles
# Dotfiles
My dotfiles :)
My NixOS configuration.
## Installation
For disk configuration we use disko, this means that installing the system from the configuration is just a single command:
```
sudo nix --experimental-features "nix-command flakes" run "github:nix-community/disko/latest#disko-install" -- --flake git+https://git.bulthuis.dev/Jan/dotfiles#<hostname> --disk main /dev/sda
```
-1134
View File
File diff suppressed because it is too large. Load diff
Generated
+178
View File
@@ -0,0 +1,178 @@
{
"nodes": {
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1748225455,
"narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=",
"owner": "nix-community",
"repo": "disko",
"rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1748134483,
"narHash": "sha256-5PBK1nV8X39K3qUj8B477Aa2RdbLq3m7wRxUKRtggX4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c1e671036224089937e111e32ea899f59181c383",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"impermanence": {
"locked": {
"lastModified": 1737831083,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"type": "github"
}
},
"nix-minecraft": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1747581338,
"narHash": "sha256-/+H9qce+NPsEcAC31s3pbD64nB6GKC3+3ZNLV1+tffk=",
"owner": "Jan-Bulthuis",
"repo": "nix-minecraft",
"rev": "44b6b40d7a3e0a114567b38a203029a5bc67e838",
"type": "github"
},
"original": {
"owner": "Jan-Bulthuis",
"repo": "nix-minecraft",
"type": "github"
}
},
"nix-modpack": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1747559249,
"narHash": "sha256-+ygKEGMVcXNklO4RDYSd5XzydDmQOZWcOcxYZf/PH1U=",
"owner": "Jan-Bulthuis",
"repo": "nix-modpack",
"rev": "a093625c2847afc3ef257513161c7fe318c6be1c",
"type": "github"
},
"original": {
"owner": "Jan-Bulthuis",
"repo": "nix-modpack",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1747958103,
"narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"home-manager": "home-manager",
"impermanence": "impermanence",
"nix-minecraft": "nix-minecraft",
"nix-modpack": "nix-modpack",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+21
View File
@@ -0,0 +1,21 @@
{
description = "System configuration for NixOS";
inputs = {
# General inputs
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
impermanence.url = "github:nix-community/impermanence";
# For Minecraft VM
nix-minecraft.url = "github:Jan-Bulthuis/nix-minecraft";
nix-minecraft.inputs.nixpkgs.follows = "nixpkgs";
nix-modpack.url = "github:Jan-Bulthuis/nix-modpack";
nix-modpack.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs: import ./glue inputs;
}
+170
View File
@@ -0,0 +1,170 @@
inputs:
let
flake = inputs.self;
nixpkgs = inputs.nixpkgs;
lib = nixpkgs.lib;
importDir =
path: fn:
let
entries = builtins.readDir path;
# Get paths to directories
dirs = lib.filterAttrs (_: type: type == "directory") entries;
dirPaths = lib.mapAttrs (name: type: {
path = "${path}/${name}";
type = type;
}) dirs;
# Get paths to nix files
nixName = name: builtins.match "(.*)\\.nix" name;
files = lib.filterAttrs (name: type: (type != "directory") && ((nixName name) != null)) entries;
filePaths = lib.mapAttrs' (name: type: {
name = builtins.head (nixName name);
value = {
path = "${path}/${name}";
type = type;
};
}) files;
combined = dirPaths // filePaths;
in
fn (lib.optionalAttrs (builtins.pathExists path) combined);
# Split out into getNixFiles, getNixFilesRecursive, getDirs
importDirRecursive =
path: fn:
let
entries = importDir path lib.id;
# Dig down recursively
dirs = lib.filterAttrs (_: entry: entry.type == "directory") entries;
recursedEntries = lib.mapAttrs (name: entry: (importDirRecursive entry.path lib.id)) dirs;
in
fn (entries // recursedEntries);
eachSystem = fn: lib.genAttrs lib.systems.flakeExposed fn;
systemArgs = eachSystem (system: {
pkgs = (
import inputs.nixpkgs {
inherit system;
}
);
});
allPackages = importDir "${flake}/packages" (
attrs:
lib.mapAttrs (
name: entry: (if entry.type == "directory" then "${entry.path}/default.nix" else entry.path)
) attrs
);
packages =
let
# TODO: Filter out packages that are not supported on the platform?
mkPackages =
system:
let
args = systemArgs."${system}";
pkgs = args.pkgs;
in
lib.mapAttrs (name: package: pkgs.callPackage package { }) allPackages;
in
eachSystem mkPackages;
overlay = final: prev: (lib.mapAttrs (name: package: prev.callPackage package { }) allPackages);
collectEntries =
attrs:
lib.attrsets.collect (
entry: (lib.isAttrs entry) && (lib.hasAttr "path" entry) && (lib.hasAttr "type" entry)
) attrs;
collectModules =
path:
importDirRecursive path (
attrs:
map (entry: if entry.type == "directory" then entry.path + "/default.nix" else entry.path) (
collectEntries attrs
)
);
nixosModules = collectModules "${flake}/modules/nixos";
nixosProfiles = collectModules "${flake}/profiles/nixos";
inputNixosModules = lib.map (flake: flake.outputs.nixosModules.default) (
lib.filter (flake: lib.hasAttrByPath [ "outputs" "nixosModules" "default" ] flake) (
lib.attrValues inputs
)
);
homeModules = collectModules "${flake}/modules/home";
homeProfiles = collectModules "${flake}/profiles/home";
inputHomeModules = lib.map (flake: flake.outputs.homeManagerModules.default) (
lib.filter (flake: lib.hasAttrByPath [ "outputs" "homeManagerModules" "default" ] flake) (
lib.attrValues inputs
)
);
inputOverlays = lib.map (flake: flake.outputs.overlays.default) (
lib.filter (flake: lib.hasAttrByPath [ "outputs" "overlays" "default" ] flake) (
lib.attrValues inputs
)
);
overlayModule =
{ ... }:
{
nixpkgs.overlays = [ overlay ] ++ inputOverlays;
};
nixosConfigurations = importDir "${flake}/hosts" (
attrs:
lib.mapAttrs (
name: entry:
lib.nixosSystem {
specialArgs = {
inherit inputs;
};
modules =
let
systemPath = "${entry.path}/configuration.nix";
userEntries = importDir "${entry.path}/users" lib.id;
usersConfiguration = lib.mapAttrs (name: entry: {
isNormalUser = true;
group = name;
}) userEntries;
groupsConfiguration = lib.mapAttrs (name: entry: {
}) userEntries;
homesConfiguration = lib.mapAttrs (name: entry: entry.path) userEntries;
usersModule =
{ ... }:
{
home-manager.sharedModules = homeModules ++ homeProfiles ++ inputHomeModules;
home-manager.useUserPackages = false; # TODO: See if this should be changed to true?
home-manager.useGlobalPkgs = true;
home-manager.users = homesConfiguration;
users.users = usersConfiguration;
users.groups = groupsConfiguration;
};
in
[
systemPath
overlayModule
usersModule
]
++ nixosModules
++ nixosProfiles
++ inputNixosModules;
}
) (lib.attrsets.filterAttrs (name: entry: entry.type == "directory") attrs)
);
in
{
inherit packages nixosConfigurations overlay;
overlays.default = overlay;
}
+45
View File
@@ -0,0 +1,45 @@
{ flake, ... }:
{
# State version
system.stateVersion = "24.05";
# Machine hostname
networking.hostName = "20212060";
# Admin users
users.users.jan.extraGroups = [
"wheel"
"wireshark"
];
# Enable virtualisation for VMs
virtualisation.libvirtd.enable = true;
# Enable wireshark
programs.wireshark = {
enable = true;
dumpcap.enable = true;
usbmon.enable = true;
};
# Set up wstunnel client
services.wstunnel = {
enable = true;
clients.wg-tunnel = {
connectTo = "wss://tunnel.bulthuis.dev:443";
localToRemote = [
"udp://51820:10.10.40.100:51820"
];
};
};
# Module setup
modules = {
profiles.laptop.enable = true;
};
imports = [
./hardware-configuration.nix
];
}
+43
View File
@@ -0,0 +1,43 @@
{ ... }:
{
# Machine platform
nixpkgs.hostPlatform = "x86_64-linux";
# Hardware configuration
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [
"xhci_pci"
"nvme"
"usb_storage"
"sd_mod"
"rtsx_pci_sdmmc"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
hardware.cpu.intel.updateMicrocode = true;
# Filesystems
fileSystems."/" = {
device = "/dev/disk/by-uuid/3b91eaeb-ea95-4bea-8dc1-f55af7502d23";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/46BF-DE2C";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
# Swapfile
swapDevices = [
{
device = "/var/lib/swapfile";
size = 16 * 1024;
}
];
}
+9
View File
@@ -0,0 +1,9 @@
{
...
}:
{
home.stateVersion = "24.11";
modules.profiles.jan.enable = true;
}
+241
View File
@@ -0,0 +1,241 @@
{
lib,
pkgs,
config,
...
}:
{
# State version
system.stateVersion = "24.11";
# Machine hostname
networking.hostName = "vm-audio";
# Enabled modules
modules = {
profiles.vm.enable = true;
sound.enable = true;
# spotifyd.enable = true; # TODO: Add this as a local module
};
# Install system packages
environment.systemPackages = with pkgs; [
carla
xpra
alsa-utils
pulsemixer
adwaita-icon-theme
open-stage-control
carla_osc_bridge
# Add LV2 plugins
lsp-plugins
airwindows-lv2
distrho-ports
cardinal
calf
];
# Setup firewall
networking.firewall = {
allowedTCPPorts = [
8080
10402
15151
22752
];
allowedUDPPorts = [
8080
10402
15151
22752
];
};
# Setup dependencies
environment.variables.LD_LIBRARY_PATH = lib.mkForce "${lib.makeLibraryPath (
with pkgs;
[
cairo
pipewire.jack
]
)}";
qt = {
enable = true;
style = "adwaita";
};
xdg.icons = {
enable = true;
fallbackCursorThemes = [ "Adwaita" ];
};
hardware.graphics.enable = true;
# User for audio mixing
users.users.mixer = {
isNormalUser = true;
group = "mixer";
extraGroups = [ "systemd-journal" ];
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKxoQSxfYqf9ITN8Fhckk8WbY4dwtBAXOhC9jxihJvq jan@bulthuis.dev"
];
};
users.groups.mixer = { };
users.groups.audio = {
members = [
"mixer"
];
};
users.groups.bluetooth = {
members = [
"mixer"
];
};
# Xpra service
systemd.user.services.xpra = {
description = "Xpra Service";
wantedBy = [ "default.target" ];
after = [
"network.target"
];
unitConfig = {
ConditionUser = "mixer";
};
serviceConfig = {
ExecStart = "${pkgs.xpra}/bin/xpra start :7 --bind-tcp=0.0.0.0:15151 --daemon=no";
Restart = "always";
RestartSec = 5;
};
};
# Carla service
systemd.user.services.carla = {
description = "Carla Service";
wantedBy = [ "default.target" ];
after = [
"network.target"
"sound.target"
];
requires = [
"xpra.service"
];
unitConfig = {
ConditionUser = "mixer";
};
serviceConfig = {
ExecStart = "${pkgs.carla}/bin/carla /home/mixer/Default.carxp -platform xcb";
Environment = "\"DISPLAY=:7\"";
Restart = "always";
RestartSec = 5;
};
};
# Carla service
systemd.user.services.carla-bridge = {
description = "Carla OSC Bridge";
wantedBy = [ "default.target" ];
after = [
"network.target"
"sound.target"
];
requires = [
"carla.service"
];
unitConfig = {
ConditionUser = "mixer";
};
serviceConfig = {
ExecStart = "${pkgs.carla_osc_bridge}/bin/carla_osc_bridge --clients \"127.0.0.1:8080\"";
Restart = "always";
RestartSec = 5;
};
};
# Open stage control service
systemd.user.services.osc = {
description = "OSC Service";
wantedBy = [ "default.target" ];
after = [
"network.target"
];
requires = [
"carla.service"
];
unitConfig = {
ConditionUser = "mixer";
};
serviceConfig = {
ExecStart = "${pkgs.open-stage-control}/bin/open-stage-control --no-gui --send 127.0.0.1:10402 --load /home/mixer/open-stage-control/session.json --theme /home/mixer/open-stage-control/theme.css";
Environment = "\"ELECTRON_RUN_AS_NODE=1\"";
Restart = "always";
RestartSec = 5;
};
};
# Create bluetooth A2DP source
hardware.bluetooth = {
enable = true;
disabledPlugins = [ "hostname" ];
settings.General = {
Name = "Linox";
Class = "0x240414";
DiscoverableTimeout = 0;
AlwaysPairable = true;
PairableTimeout = 0;
FastConnectable = true;
JustWorksRepairing = "always";
};
};
services.pipewire.wireplumber.extraConfig."50-bluetooth-a2dp" = {
"monitor.bluez.properties" = {
"bluez5.roles" = [ "a2dp_source" ];
};
};
# Create null sinks
services.pipewire.extraConfig.pipewire."91-null-sinks" = {
"context.objects" = [
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "Speaker-Proxy";
"node.description" = "Proxy for Speaker Output";
"media.class" = "Audio/Sink";
"audio.position" = "L,R";
};
}
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "Headphone-Proxy";
"node.description" = "Proxy for Headphone Output";
"media.class" = "Audio/Sink";
"audio.position" = "L,R";
};
}
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "SpotifyD-Proxy";
"node.description" = "Proxy for SpotifyD";
"media.class" = "Audio/Sink";
"audio.position" = "L,R";
};
}
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "AnalogIn-Proxy";
"node.description" = "Proxy for the analog input";
"media.class" = "Audio/Source/Virtual";
"audio.position" = "L,R";
};
}
];
};
}
+7
View File
@@ -0,0 +1,7 @@
{ ... }:
{
home.stateVersion = "24.11";
modules.profiles.base.enable = true;
}
+45
View File
@@ -0,0 +1,45 @@
{
lib,
pkgs,
config,
inputs,
...
}:
{
# State version
system.stateVersion = "24.11";
# Import the nix-minecraft modules
imports = [
inputs.nix-minecraft.nixosModules.minecraft-servers
];
# Machine hostname
networking.hostName = "vm-minecraft";
# Enabled modules
modules = {
profiles.vm.enable = true;
};
# Set up minecraft servers
users.users.local.extraGroups = [ "minecraft" ];
services.minecraft-servers = {
enable = true;
eula = true;
openFirewall = true;
servers = {
modpack = {
enable = true;
autoStart = true;
serverProperties = { };
package = inputs.nix-modpack.packages.${pkgs.system}.mkModpackServer {
packUrl = "https://raw.githubusercontent.com/Jan-Bulthuis/Modpack/refs/heads/master/pack.toml";
server = inputs.nix-minecraft.legacyPackages.${pkgs.system}.neoForgeServers.neoforge-20_1_106;
};
jvmOpts = "-Xms6144M -Xmx8192M";
};
};
};
}
+7
View File
@@ -0,0 +1,7 @@
{ ... }:
{
home.stateVersion = "24.11";
modules.profiles.base.enable = true;
}
+40
View File
@@ -0,0 +1,40 @@
{
lib,
pkgs,
config,
...
}:
{
# State version
system.stateVersion = "24.11";
# Machine hostname
networking.hostName = "vm-vpn";
# Enabled modules
modules = {
profiles.vm.enable = true;
};
# Setup wstunnel server
services.wstunnel = {
enable = true;
servers.wg-tunnel = {
enableHTTPS = false;
listen = {
host = "0.0.0.0";
port = 8080;
};
restrictTo = [
{
host = "10.10.40.100";
port = 51820;
}
];
};
};
networking.firewall = {
allowedTCPPorts = [ 8080 ];
};
}
+7
View File
@@ -0,0 +1,7 @@
{ ... }:
{
home.stateVersion = "24.11";
modules.profiles.base.enable = true;
}
+81
View File
@@ -0,0 +1,81 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.desktop.gnome;
in
{
options.modules.desktop.gnome = {
enable = mkEnableOption "gnome";
};
config = mkIf cfg.enable {
# TODO: Enable extensions with dconf
home.pointerCursor = {
name = "capitaine-cursors";
size = 24;
package = pkgs.capitaine-cursors;
gtk.enable = true;
x11.enable = true;
};
home.packages =
with pkgs;
[
gnome-session
gnome-shell
gnome-tweaks
gnome-calculator
snapshot
gnome-characters
gnome-connections
blackbox-terminal
baobab
gnome-disk-utility
papers
nautilus
gnome-font-viewer
loupe
gnome-maps
gnome-music
gnome-control-center
gnome-text-editor
showtime
file-roller
mission-center
dconf-editor
# For theming gtk3
adw-gtk3
]
++ (with pkgs.gnomeExtensions; [
gsconnect
disable-workspace-animation
wallpaper-slideshow
media-progress
# luminus-desktop
]);
# Enable and set the gtk themes
gtk = {
enable = true;
gtk3.extraConfig = {
gtk-theme-name = "adw-gtk3";
};
gtk4.extraConfig = {
gtk-theme-name = "Adwaita";
};
};
# Set the theme with dconf
dconf.settings."org/gnome/desktop/interface" = {
gtk-theme = "adw-gtk3";
};
};
}
+53
View File
@@ -0,0 +1,53 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.modules.git;
in
{
options.modules.git = {
enable = mkEnableOption "git";
user = mkOption {
type = types.str;
description = "Default user name to use.";
};
email = mkOption {
type = types.str;
description = "Default user email to use.";
};
ignores = mkOption {
type = types.listOf types.str;
default = [ ];
description = "Paths to globally ignore";
};
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
git
lazygit
];
programs.git = {
enable = true;
extraConfig = {
pull = {
rebase = false;
};
};
userName = cfg.user;
userEmail = cfg.email;
ignores = cfg.ignores;
};
};
}
@@ -0,0 +1,50 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.cpp;
in
{
options.modules.cpp = {
enable = mkEnableOption "cpp";
};
config = mkIf cfg.enable {
# Gitignore additions
modules.git.ignores = [
".ccls-cache"
];
# Development packages
home.packages = with pkgs; [
gnumake
gcc
];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
ms-vscode.cpptools
ms-vscode.cmake-tools
ms-vscode.cpptools-extension-pack
];
userSettings = {
# TODO: Add setting to set the compiler, it currently needs to be set for each workspace individually
# "C_Cpp.clang_format_fallbackStyle" = "{ BasedOnStyle: Google, IndentWidth: 4 }";
};
};
};
# Neovim configuration
# programs.nixvim = {
# plugins.lsp.servers.ccls.enable = true;
# };
};
}
@@ -0,0 +1,42 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.haskell;
in
{
options.modules.haskell = {
enable = mkEnableOption "haskell";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
haskell.compiler.ghc948
(haskell-language-server.override { supportedGhcVersions = [ "948" ]; })
];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
haskell.haskell
justusadam.language-haskell
];
userSettings = {
"[haskell]" = { };
# "haskell.formattingProvider" = "fourmolu";
};
};
};
# Neovim configuration
# programs.nixvim = { };
};
}
+38
View File
@@ -0,0 +1,38 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.js;
in
{
options.modules.js = {
enable = mkEnableOption "js";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
nodejs
tailwindcss
];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
bradlc.vscode-tailwindcss
];
userSettings = { };
};
};
# Neovim configuration
# programs.nixvim = { };
};
}
@@ -0,0 +1,44 @@
{
lib,
config,
pkgs,
...
}:
# TODO: Move to a module for notebooks in general
with lib;
let
cfg = config.modules.jupyter;
in
{
options.modules.jupyter = {
enable = mkEnableOption "jupyter";
};
config = mkIf cfg.enable {
# Development packages
# home.packages = with pkgs; [
# evcxr
# ];
# modules.python.extraPythonPackages = p: [
# p.jupyter
# p.notebook
# ];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
ms-toolsai.jupyter
ms-toolsai.jupyter-renderers
];
userSettings = { };
};
};
# Neovim configuration
# programs.nixvim = { };
};
}
@@ -0,0 +1,60 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.nix;
in
{
options.modules.nix = {
enable = mkEnableOption "nix";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
nix-tree
nixfmt-rfc-style
nixd
];
# Add nix tree
xdg.desktopEntries.nix-tree = {
exec = "${pkgs.nix-tree}/bin/nix-tree";
name = "Nix Tree";
terminal = true;
type = "Application";
};
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide ];
userSettings = {
"[nix]" = {
"editor.tabSize" = 2;
};
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nixd";
"nix.serverSettings" = {
nixd = {
formatting = {
command = [ "nixfmt" ];
};
};
};
};
};
};
# Neovim configuration
# programs.nixvim = {
# };
};
}
@@ -0,0 +1,52 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.python;
in
{
options.modules.python = {
enable = mkEnableOption "python";
extraPythonPackages = mkOption {
type = types.functionTo (types.listOf types.package) // {
merge =
loc: defs: p:
lib.concatMap (def: (def.value p)) defs;
};
default = p: [ ];
description = "Extra Python packages to install";
};
};
config = mkIf cfg.enable {
# Development packages
home.packages = [ ];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
ms-python.python
ms-python.debugpy
ms-python.vscode-pylance
ms-python.black-formatter
];
userSettings = {
"python.defaultInterpreterPath" = "\${env:PYTHONINTERPRETER}";
"[python]" = {
"editor.defaultFormatter" = "ms-python.black-formatter";
};
};
};
};
# Neovim configuration
# programs.nixvim = { };
};
}
@@ -0,0 +1,59 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.rust;
in
{
options.modules.rust = {
enable = mkEnableOption "rust";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
# rustup
# rustc
# cargo
# gcc
# lldb
# bacon
# rust-analyzer
# rustfmt
# clippy
# evcxr
];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [
rust-lang.rust-analyzer
vadimcn.vscode-lldb
tamasfe.even-better-toml
serayuzgur.crates
];
userSettings = {
"[rust]" = {
"editor.inlayHints.enabled" = "off";
};
"rust-analyzer.check.command" = "clippy";
"rust-analyzer.showUnlinkedFileNotification" = false;
};
};
};
# Neovim configuration
# programs.nixvim = {
# plugins.rustaceanvim = {
# enable = true;
# };
# };
};
}
@@ -0,0 +1,69 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.tex;
in
{
options.modules.tex = {
enable = mkEnableOption "tex";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
(texlive.combine {
inherit (texlive) scheme-full;
})
];
# Pygments for minted
modules.python.extraPythonPackages = p: [
p.pygments
];
# VSCode configuration
programs.vscode = {
profiles.default = {
extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide ];
userSettings = {
"[tex]" = { };
};
};
};
# Neovim configuration
# programs.nixvim = {
# extraConfigVim = ''
# " Enforce latexmk
# let g:vimtex_compiler_method = 'latexmk'
# " Set latexmk compilation settings
# let g:vimtex_compiler_latexmk = {
# \ 'options': [
# \ '-shell-escape',
# \ '-verbose',
# \ '-file-line-error',
# \ '-synctex=1',
# \ '-interaction=nonstopmode',
# \ ],
# \}
# '';
# # Vimtex plugin
# plugins.vimtex = {
# enable = true;
# texlivePackage = null;
# settings = {
# view_method = "zathura";
# };
# };
# };
};
}
+27
View File
@@ -0,0 +1,27 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.mathematica;
my-mathematica = pkgs.mathematica.override {
# TODO: Just use a generic name for the installer?
# source = ./Wolfram_14.2.1_LIN_Bndl.sh;
};
in
{
options.modules.mathematica = {
enable = mkEnableOption "mathematica";
};
config = mkIf cfg.enable {
home.packages = [
my-mathematica
];
};
}
+190
View File
@@ -0,0 +1,190 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.neovim;
# theme = config.desktop.theming;
# colors = theme.colors;
in
{
options.modules.neovim = {
enable = mkEnableOption "neovim";
};
config = mkIf cfg.enable {
# programs.nixvim = {
# enable = true;
# defaultEditor = true;
# viAlias = true;
# vimAlias = true;
# # extraPackages = with pkgs; [ ];
# opts = {
# number = true;
# relativenumber = true;
# signcolumn = "yes";
# ignorecase = true;
# smartcase = true;
# tabstop = 4;
# shiftwidth = 4;
# softtabstop = 0;
# expandtab = true;
# smarttab = true;
# list = true;
# listchars = "tab:»┈«,trail:·,extends:→,precedes:←,nbsp:␣";
# };
# diagnostic.settings = {
# enable = true;
# signs = true;
# underline = true;
# update_in_insert = true;
# };
# extraConfigLua = ''
# vim.fn.sign_define("DiagnosticSignError",
# {text = "", texthl = "DiagnosticSignError"})
# vim.fn.sign_define("DiagnosticSignWarn",
# {text = "", texthl = "DiagnosticSignWarn"})
# vim.fn.sign_define("DiagnosticSignInfo",
# {text = "", texthl = "DiagnosticSignInfo"})
# vim.fn.sign_define("DiagnosticSignHint",
# {text = "💡", texthl = "DiagnosticSignHint"})
# '';
# keymaps = [
# # Save shortcut
# {
# action = ":update<CR>";
# key = "<C-s>";
# mode = "n";
# }
# {
# action = "<C-o>:update<CR>";
# key = "<C-s>";
# mode = "i";
# }
# # Neo tree
# {
# action = ":Neotree action=focus reveal toggle<CR>";
# key = "<leader>n";
# mode = "n";
# options.silent = true;
# }
# ];
# autoCmd = [
# {
# desc = "Automatic formatting";
# event = "BufWritePre";
# callback = {
# __raw = ''
# function()
# vim.lsp.buf.format {
# async = false,
# }
# end
# '';
# };
# }
# ];
# # highlight = {
# # Comment = {
# # italic = true;
# # fg = theme.schemeColors.withHashtag.base03; # TODO: Come up with a good name colors.muted maybe?
# # };
# # };
# plugins.lsp = {
# enable = true;
# };
# #plugins.treesitter = {
# # enable = true;
# #};
# plugins.cmp = {
# enable = true;
# settings = {
# mapping = {
# "<C-Space>" = "cmp.mapping.complete()";
# "<C-d>" = "cmp.mapping.scroll_docs(-4)";
# "<C-e>" = "cmp.mapping.close()";
# "<C-f>" = "cmp.mapping.scroll_docs(4)";
# "<CR>" = "cmp.mapping.confirm({ select = true })";
# "<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
# "<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
# };
# sources = [
# { name = "path"; }
# { name = "nvim_lsp"; }
# ];
# };
# };
# plugins.web-devicons = {
# enable = true;
# };
# plugins.neo-tree = {
# enable = true;
# closeIfLastWindow = true;
# window = {
# width = 30;
# autoExpandWidth = true;
# };
# extraOptions = {
# default_component_configs.git_status.symbols = {
# # Change type
# added = "+";
# deleted = "✕";
# modified = "✦";
# renamed = "→";
# # Status type
# untracked = "?";
# ignored = "▫";
# unstaged = "□";
# staged = "■";
# conflict = "‼";
# };
# };
# };
# #plugins.cmp-nvim-lsp.enable = true;
# plugins.gitsigns = {
# enable = true;
# settings.current_line_blame = true;
# };
# #plugins.copilot-vim = {
# # enable = true;
# #};
# # plugins.vimtex = {
# # enable = true;
# # texlivePackage = null;
# # settings = {
# # view_method = "zathura";
# # };
# # };
# };
# programs.neovim.defaultEditor = true;
};
}
+99
View File
@@ -0,0 +1,99 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.modules.vscode;
# theme = config.desktop.theming;
in
{
options.modules.vscode = {
enable = mkEnableOption "vscode";
# codeFont = mkOption {
# type = types.anything;
# default = theme.fonts.pkgs."Fira Code";
# };
# fallbackFont = mkOption {
# type = types.anything;
# default = theme.fonts.pkgs."Symbols Nerd Font Mono";
# };
};
config = mkIf cfg.enable {
# TODO: Fix theming
# desktop.theming.fonts.extraFonts = [ cfg.codeFont ];
programs.vscode = {
enable = true;
mutableExtensionsDir = false;
profiles.default = {
extensions = with pkgs.vscode-extensions; [
eamodio.gitlens
ms-vscode.hexeditor
mkhl.direnv
usernamehw.errorlens
gruntfuggly.todo-tree
github.copilot
github.copilot-chat
tomoki1207.pdf
ms-vsliveshare.vsliveshare
ms-vscode-remote.remote-ssh
];
userSettings =
let
# font-family = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
# TODO: Move the conversion factor to theme settings
# font-size = mkForce cfg.codeFont.recommendedSize; # Convert pt to px
in
{
# Font setup
# "editor.fontFamily" = font-family;
# "editor.inlayHints.fontFamily" = font-family;
# "editor.inlineSuggest.fontFamily" = font-family;
# "editor.fontSize" = font-size;
# "editor.fontLigatures" = true;
# "terminal.integrated.fontFamily" = font-family;
# "terminal.integrated.fontSize" = font-size;
# "chat.editor.fontFamily" = font-family; # TODO: Change this font to the standard UI font
# "chat.editor.fontSize" = font-size;
# "debug.console.fontFamily" = font-family;
# "debug.console.fontSize" = font-size;
# "scm.inputFontFamily" = font-family; # TODO: Change this font to the standard UI font
# "scm.inputFontSize" = font-size;
# "markdown.preview.fontFamily" = mkForce theme.fonts.sansSerif.name; # TODO: Change this font to the standard UI font
# "markdown.preview.fontSize" = mkForce theme.fonts.sansSerif.recommendedSize;
# Formatting
"editor.formatOnSave" = true;
"editor.tabSize" = 4;
# Layout
"window.menuBarVisibility" = "hidden";
# Git settings
"git.autofetch" = true;
"git.enableSmartCommit" = false;
"git.suggestSmartCommit" = false;
# Disable update notifications
"update.mode" = "none";
# Set themes
"window.autoDetectColorScheme" = true;
# TODO: Move to direnv module
# Ignore direnv folder
"files.exclude" = {
".direnv" = true;
};
};
};
};
};
}
+27
View File
@@ -0,0 +1,27 @@
{
lib,
config,
...
}:
with lib;
let
cfg = config.modules.bash;
in
{
options.modules.bash = {
enable = mkEnableOption "bash";
aliases = mkOption {
type = types.attrsOf types.str;
default = {
"..." = "cd ../..";
};
description = "Shell aliases";
};
};
config.programs.bash = {
enable = cfg.enable;
shellAliases = cfg.aliases;
};
}
+26
View File
@@ -0,0 +1,26 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.direnv;
in
{
options.modules.direnv = {
enable = mkEnableOption "direnv";
};
config = mkIf cfg.enable {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
modules.git.ignores = [
".direnv"
];
};
}
+57
View File
@@ -0,0 +1,57 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.fish;
in
{
options.modules.fish = {
enable = mkEnableOption "fish";
};
config = mkIf cfg.enable {
# Make bash load into fish
# Bash will remain the default shell as fish is not POSIX compliant.
modules.bash.enable = true;
programs.bash.initExtra = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
# Actual fish configuration
programs.fish = {
enable = true;
shellAliases = config.modules.bash.aliases;
plugins = [
{
name = "done";
src = pkgs.fishPlugins.done.src;
}
{
name = "fzf";
src = pkgs.fishPlugins.fzf-fish.src;
}
{
name = "grc";
src = pkgs.fishPlugins.grc.src;
}
];
};
# Fish plugin dependencies
home.packages = with pkgs; [
fzf
grc
];
};
}
+35
View File
@@ -0,0 +1,35 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.impermanence;
in
{
options.modules.impermanence = {
enable = mkEnableOption "Impermanence";
directories = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Directories that should be stored in persistent storage.
'';
};
files = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Files that should be stored in persistent storage.
'';
};
};
config = mkIf cfg.enable {
home.persistence."/persist/home/${config.home.username}" = {
enable = true;
hideMounts = true;
allowOther = true;
directories = cfg.directories;
files = cfg.files;
};
};
}
+63
View File
@@ -0,0 +1,63 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.xpra;
in
{
options.modules.xpra = {
enable = mkEnableOption "Enable xpra";
hosts = mkOption {
type = types.listOf types.str;
default = { };
description = "xpra hosts";
};
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
xpra
];
xdg.desktopEntries = (
listToAttrs (
map
(entry: {
name = "xpra${
builtins.substring 0 12 (builtins.hashString "sha256" "${entry.name} (${entry.comment})")
}";
value = entry // {
type = "Application";
terminal = false;
genericName = entry.comment;
};
})
(
concatMap (
host:
let
uri = "tcp://${host}:15151/7";
in
[
{
name = "Xpra - Attach";
comment = host;
exec = "xpra attach --min-quality=100 --min-speed=100 --encoding=png --speaker=off ${uri}";
}
{
name = "Xpra - Detach";
comment = host;
exec = "xpra detach ${uri}";
}
]
) cfg.hosts
)
)
);
};
}
+18
View File
@@ -0,0 +1,18 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.bluetooth;
in
{
options.modules.bluetooth = {
enable = mkEnableOption "bluetooth";
};
config = mkIf cfg.enable {
# Enable bluetooth
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
};
}
+20
View File
@@ -0,0 +1,20 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.bootloader;
in
{
options.modules.bootloader = {
enable = mkEnableOption "bootloader";
};
config = mkIf cfg.enable {
# Bootloader
boot.loader = {
timeout = 0;
systemd-boot.enable = true;
systemd-boot.editor = false;
efi.canTouchEfiVariables = true;
};
};
}
+24
View File
@@ -0,0 +1,24 @@
{
lib,
config,
inputs,
...
}:
with lib;
let
cfg = config.modules.disko;
profile = import "${inputs.self}/profiles/disko/${cfg.profile}.nix";
in
{
options.modules.disko = {
enable = mkEnableOption "Disko module";
profile = mkOption {
type = types.str;
default = null;
description = "The profile to use for the disko module.";
};
};
config = mkIf cfg.enable { disko.devices = profile.disko.devices; };
}
+35
View File
@@ -0,0 +1,35 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.fonts;
in
{
options.modules.fonts = {
enable = mkEnableOption "fonts";
};
config = mkIf cfg.enable {
console.packages = [
pkgs.dina-psfu
];
console.font = "dina";
console.earlySetup = true;
# TODO: Disable default fonts, fonts should be managed per user
# fonts.enableDefaultPackages = false;
# fonts.fontconfig = {
# enable = true;
# defaultFonts = {
# serif = mkDefault [ ];
# sansSerif = mkDefault [ ];
# monospace = mkDefault [ ];
# emoji = mkDefault [ ];
# };
# };
};
}
+79
View File
@@ -0,0 +1,79 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.gnome;
in
{
options.modules.gnome = {
enable = mkEnableOption "gnome";
# TODO: Add RDP toggle
};
config = mkIf cfg.enable {
# Enable GDM and Gnome
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.gnome.core-utilities.enable = false;
services.gnome.games.enable = false;
services.gnome.core-developer-tools.enable = false;
environment.gnome.excludePackages = with pkgs; [
adwaita-icon-theme
(derivation { name = "nixos-background-info"; })
gnome-backgrounds
gnome-bluetooth
gnome-color-manager
gnome-control-center
gnome-shell-extensions
gnome-tour
gnome-user-docs
glib
gnome-menus
gtk3.out
xdg-user-dirs
xdg-user-dirs-gtk
];
# Enable Gnome Remote Desktop
services.gnome.gnome-remote-desktop.enable = true;
systemd.services."gnome-remote-desktop".wantedBy = [ "graphical.target" ];
networking.firewall = {
allowedTCPPorts = [
3389
3390
];
allowedUDPPorts = [
3389
3390
];
};
# For GSConnect/KDE Connect
# TODO: Move to host config?
networking.firewall = {
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
];
};
# Enable dependencies
modules = {
networkmanager.enable = true;
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.graphics;
in
{
options.modules.graphics = {
enable = mkEnableOption "graphics";
# TODO: Add toggle for hybrid graphics
};
config = mkIf cfg.enable {
hardware.graphics.enable = true;
hardware.graphics.enable32Bit = true;
services.xserver.videoDrivers = [ "nvidia" ];
# TODO: Add nvidia settings back in
# TODO: Move to nvidia module
hardware.nvidia = {
open = true;
};
};
}
+46
View File
@@ -0,0 +1,46 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.impermanence;
in
{
options.modules.impermanence = {
enable = mkEnableOption "Impermanence";
directories = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Directories that should be stored in persistent storage.
'';
};
files = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Files that should be stored in persistent storage.
'';
};
resetScript = mkOption {
type = types.lines;
description = ''
Script to run on boot that resets the root partition.
'';
};
};
config = mkIf cfg.enable {
fileSystems."/persist".neededForBoot = true;
boot.initrd.postResumeCommands = mkAfter cfg.resetScript;
# For home-manager persistence
programs.fuse.userAllowOther = true;
environment.persistence."/persist/system" = {
enable = true;
hideMounts = true;
directories = cfg.directories;
files = cfg.files;
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.networkmanager;
in
{
options.modules.networkmanager = {
enable = mkEnableOption "networkmanager";
};
config = mkIf cfg.enable {
# TODO: Add sudo users to the networkmanager group?
networking.networkmanager.enable = true;
};
}
+20
View File
@@ -0,0 +1,20 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.power-saving;
in
{
options.modules.power-saving = {
enable = mkEnableOption "power saving";
};
config = mkIf cfg.enable {
# Setup power management
powerManagement.enable = true;
services.thermald.enable = true;
services.power-profiles-daemon.enable = true;
# Enable wifi power saving
networking.networkmanager.wifi.powersave = true;
};
}
+25
View File
@@ -0,0 +1,25 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.printing;
in
{
options.modules.printing = {
enable = mkEnableOption "printing";
};
config = mkIf cfg.enable {
# Enable CUPS
services.printing.enable = true;
# Enable Avahi to auto-detect network printers
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# For SMB network printers
services.samba.enable = true;
};
}
+24
View File
@@ -0,0 +1,24 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.sound;
in
{
options.modules.sound = {
enable = mkEnableOption "sound";
};
config = mkIf cfg.enable {
# Enable pipewire
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
# Recommended by wiki, allows user processes to use realtime kernel
security.rtkit.enable = true;
};
}
+15
View File
@@ -0,0 +1,15 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.ssh;
in
{
options.modules.ssh = {
enable = mkEnableOption "ssh";
};
config = mkIf cfg.enable {
services.openssh.enable = true;
# TODO: Is this default configuration secure?
};
}
+73
View File
@@ -0,0 +1,73 @@
{
pkgs,
...
}:
pkgs.stdenv.mkDerivation {
pname = "dina-psfu";
version = "1.0.0";
src = pkgs.fetchzip {
url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61";
hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s=";
extension = "zip";
stripRoot = false;
};
buildInputs = with pkgs; [
bdf2psf
fontforge
];
buildPhase = ''
# Get the base Dina font
cp BDF/Dina_r400-9.bdf ./dina.bdf
# Set the AVERAGE_WIDTH property on the font
sed 's/STARTPROPERTIES 16/STARTPROPERTIES 17\
AVERAGE_WIDTH 70/' ./dina.bdf > ./dina-mod.bdf
# Reencode the font from code page CP1252 (Windows) to unicode
fontforge -lang=ff -c "Open(\"dina-mod.bdf\"); Reencode(\"win\", 1); Reencode(\"iso10646-1\"); Generate(\"dina-enc.bdf\")"
mv dina-enc-*.bdf dina-enc.bdf
# Move the artsy characters around
sed -i 's/STARTCHAR uni000E$/STARTCHAR uni2518/' ./dina-enc.bdf
sed -i 's/ENCODING 14$/ENCODING 9496/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni000F$/STARTCHAR uni2514/' ./dina-enc.bdf
sed -i 's/ENCODING 15$/ENCODING 9492/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0010$/STARTCHAR uni250C/' ./dina-enc.bdf
sed -i 's/ENCODING 16$/ENCODING 9484/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0011$/STARTCHAR uni2510/' ./dina-enc.bdf
sed -i 's/ENCODING 17$/ENCODING 9488/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0012$/STARTCHAR uni2500/' ./dina-enc.bdf
sed -i 's/ENCODING 18$/ENCODING 9472/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0013$/STARTCHAR uni2502/' ./dina-enc.bdf
sed -i 's/ENCODING 19$/ENCODING 9474/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0014$/STARTCHAR uni2524/' ./dina-enc.bdf
sed -i 's/ENCODING 20$/ENCODING 9508/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0015$/STARTCHAR uni2534/' ./dina-enc.bdf
sed -i 's/ENCODING 21$/ENCODING 9524/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0016$/STARTCHAR uni251C/' ./dina-enc.bdf
sed -i 's/ENCODING 22$/ENCODING 9500/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0017$/STARTCHAR uni252C/' ./dina-enc.bdf
sed -i 's/ENCODING 23$/ENCODING 9516/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0018$/STARTCHAR uni253C/' ./dina-enc.bdf
sed -i 's/ENCODING 24$/ENCODING 9532/' ./dina-enc.bdf
sed -i 's/STARTCHAR uni0019$/STARTCHAR uni2592/' ./dina-enc.bdf
sed -i 's/ENCODING 25$/ENCODING 9618/' ./dina-enc.bdf
# Create the equivalents file
touch empty.equivalents
# Convert the bdf to psf
bdf2psf --fb ./dina-enc.bdf \
./empty.equivalents \
${pkgs.bdf2psf}/share/bdf2psf/fontsets/Uni2.512 \
512 ./dina.psfu ./dina.sfm
'';
installPhase = ''
install -Dm644 -t $out/share/consolefonts dina.psfu
'';
}
+56
View File
@@ -0,0 +1,56 @@
{
disko.devices = {
disk = {
main = {
type = "disk";
content = {
type = "gpt";
partitions = {
boot = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "tank";
};
};
};
};
};
};
zpool = {
tank = {
type = "zpool";
rootFsOptions = {
compression = "zstd";
};
mountpoint = null;
postCreateHook = "zfs snapshot -r tank@blank && zfs hold -r blank tank@blank";
datasets = {
root = {
type = "zfs_fs";
mountpoint = "/";
};
nix = {
type = "zfs_fs";
mountpoint = "/nix";
};
persist = {
type = "zfs_fs";
mountpoint = "/persist";
};
};
};
};
};
}
+31
View File
@@ -0,0 +1,31 @@
{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.base;
in
{
options.modules.profiles.base = {
enable = mkEnableOption "Base home-manager profile";
};
config = mkIf cfg.enable {
modules = {
# btop.enable = true;
direnv.enable = true;
fish.enable = true;
# scripts.enable = true;
# Development
# neovim.enable = true;
# Languages
nix.enable = true;
};
};
}
+48
View File
@@ -0,0 +1,48 @@
{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.gnome;
in
{
options.modules.profiles.gnome = {
enable = mkEnableOption "Graphical GNOME environment";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
firefox # TODO: Move to dediated module
];
modules = {
profiles.base.enable = true;
# Desktop environment
desktop.gnome.enable = true;
# desktop.tiling.enable = true;
# Browser
# firefox = {
# enable = true;
# default = false;
# };
# qutebrowser = {
# enable = true;
# default = true;
# };
# Tools
# obsidian.enable = true;
# zathura.enable = true;
# Development
# neovim.enable = true;
vscode.enable = true;
};
};
}
+87
View File
@@ -0,0 +1,87 @@
{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.jan;
in
{
options.modules.profiles.jan = {
enable = mkEnableOption "Jan's personal profile";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
libreoffice-still
remmina
thunderbird
signal-desktop
prusa-slicer
freecad-wayland
inkscape
ente-auth
bitwarden
carla
winbox
whatsapp-for-linux
discord
steam
spotify
# feishin # TODO: Fix or replace as insecure
eduvpn-client
river # TODO: Move
ryubing
bottles
prismlauncher
foliate
wireshark
];
modules = {
profiles.gnome.enable = true;
# Gaming
# retroarch.enable = true;
# ryujinx.enable = true;
# Tools
git = {
enable = true;
user = "Jan-Bulthuis";
email = "git@bulthuis.dev";
# TODO: Move
ignores = [
".envrc"
".direnv"
"flake.nix"
"flake.lock"
];
};
xpra = {
enable = true;
hosts = [
"mixer@10.20.60.251"
];
};
# Development
# docker.enable = true;
# matlab.enable = true;
mathematica.enable = true;
# Languages
haskell.enable = false;
js.enable = true;
nix.enable = true;
rust.enable = true;
python.enable = true;
cpp.enable = true;
tex.enable = true;
jupyter.enable = false;
};
};
}
+70
View File
@@ -0,0 +1,70 @@
{
mkModule,
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.base;
in
{
options.modules.profiles.base = {
enable = mkEnableOption "base profile";
};
config = mkIf cfg.enable {
modules = {
bootloader.enable = mkDefault true;
ssh.enable = mkDefault true;
# Setup sensible default persistent data
impermanence.directories = [
"/var/lib/nixos"
];
impermanence.files = [
"/etc/shadow"
];
};
# Localization
time.timeZone = "Europe/Amsterdam";
i18n.defaultLocale = "en_US.UTF-8";
console.keyMap = "us";
# Enable neovim
programs.neovim = {
enable = true;
defaultEditor = true;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Enable the usage of flakes
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Clean tmp
boot.tmp.cleanOnBoot = true;
# Base packages
environment.systemPackages = with pkgs; [
git
wget
curl
dig
procps
wireguard-tools
usbutils
pciutils
zip
unzip
tmux
];
};
}
+28
View File
@@ -0,0 +1,28 @@
{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.desktop;
in
{
options.modules.profiles.desktop = {
enable = mkEnableOption "desktop profile";
};
config = mkIf cfg.enable {
modules = {
profiles.base.enable = mkDefault true;
fonts.enable = mkDefault true;
graphics.enable = mkDefault true;
gnome.enable = mkDefault true; # TODO: Rename to display manager?
networkmanager.enable = mkDefault true;
printing.enable = mkDefault true;
sound.enable = mkDefault true;
};
};
}
+30
View File
@@ -0,0 +1,30 @@
{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.laptop;
in
{
options.modules.profiles.laptop = {
enable = mkEnableOption "laptop profile";
};
config = mkIf cfg.enable {
# Setup modules
modules = {
profiles.desktop.enable = mkDefault true;
bluetooth.enable = mkDefault true;
power-saving.enable = mkDefault true;
};
# Add packages
environment.systemPackages = with pkgs; [
brightnessctl
];
};
}
+77
View File
@@ -0,0 +1,77 @@
{
mkModule,
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.modules.profiles.vm;
in
{
options.modules.profiles.vm = {
enable = mkEnableOption "Base VM profile";
};
config = mkIf cfg.enable {
# Enabled modules
modules = {
profiles.base.enable = true;
disko = {
enable = true;
profile = "vm";
};
impermanence = {
enable = true;
resetScript = ''
# Revert to the blank state for the root directory
zfs rollback -r tank/root@blank
'';
};
ssh.enable = true;
};
# Admin users
users.users.local = {
initialPassword = "local";
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [
"ssh-ed25519 jan@bulthuis.dev"
];
};
# Enable qemu guest agent
services.qemuGuest.enable = true;
# Machine platform
nixpkgs.hostPlatform = "x86_64-linux";
# Set hostid for ZFS
networking.hostId = "deadbeef";
# Hardware configuration
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
hardware.cpu.intel.updateMicrocode = true;
# Swapfile
swapDevices = [
{
device = "/var/lib/swapfile";
size = 6 * 1024;
}
];
};
}