Compare commits

..

162 commits

Author SHA1 Message Date
Aria Nolan 05dc8e29b2 updated flake 2024-05-01 16:23:12 -04:00
Aria Nolan a5a189107a some emacs config 2024-05-01 16:15:57 -04:00
Aria Nolan eeb3d215d8 messing up emacs 2024-04-27 00:55:31 -04:00
Aria Nolan 8dc0f5ae42 configured emacs more 2024-04-25 00:41:45 -04:00
Aria Nolan 32b63c10a5 updated flake 2024-04-24 11:55:17 -04:00
Aria Nolan 7d342f94ee emacs 2024-04-23 19:41:21 -04:00
Aria Nolan 3196a9713e virtualisation, mpd utils 2024-04-23 00:22:49 -04:00
Aria Nolan 58af283418 flake and other stuff 2024-04-22 10:01:48 -04:00
Aria Nolan b4a0681c07 zellij 2024-04-19 14:45:02 -04:00
Aria Nolan 7203708871 updated flake 2024-04-17 17:11:45 -04:00
Aria Nolan c22db00225 updated flake 2024-04-14 17:04:54 -04:00
Aria Nolan 4a5f3d9b9b uninstall some software 2024-04-10 18:30:03 -04:00
Aria Nolan fb3ada0c55 mympd 2024-04-10 13:25:00 -04:00
Aria Nolan 389829472e updated flake 2024-04-09 21:38:45 -04:00
Aria Nolan df585dccad syncthing folders and various other things 2024-04-07 21:27:00 -04:00
Aria Nolan 885a0c05f9 flake and neovim keybinds 2024-04-06 16:05:34 -04:00
Aria Nolan 6fd3f3c54c stuff 2024-04-05 09:03:59 -04:00
Aria Nolan 804e83a456 stuff 2024-03-30 11:41:38 -04:00
Aria Nolan 4fb0be475b flake and other stuff 2024-03-29 17:45:55 -04:00
Aria Nolan 4842e15d96 updated flake 2024-03-27 19:33:22 -04:00
Aria Nolan ba9eb822d0 updated flake, formatted, xdg mime stuff, ... 2024-03-27 17:19:37 -04:00
Aria Nolan eceff55fca mullvad wg config 2024-03-23 15:54:24 -04:00
Aria Nolan 05f6c1129b flake and neovim 2024-03-23 11:56:39 -04:00
Aria Nolan e82f59b798 soulseek 2024-03-22 19:42:33 -04:00
Aria Nolan 0853afd06e mpd and ncmpcpp 2024-03-21 23:52:03 -04:00
Aria Nolan a46628ace4 remove vivado udev rules 2024-03-21 22:12:45 -04:00
Aria Nolan f77f518349 updated flake and fixed waybar build failure 2024-03-21 19:40:24 -04:00
Aria Nolan 2dcec69655 updated flake 2024-03-16 13:32:45 -04:00
Aria Nolan 28115a7756 updated flake, and fixed nixvim settings 2024-03-11 16:02:46 -04:00
Aria Nolan ae4bb98ea3 update nixpkgs, nur, and home-manager 2024-03-10 12:55:19 -04:00
Aria Nolan 879ec80912 updated flake 2024-03-06 15:32:12 -05:00
Aria Nolan 8b5a533791 updated flake 2024-02-28 15:56:17 -05:00
Aria Nolan 5534fb4321 neovim plugins 2024-02-25 22:35:52 -05:00
Aria Nolan 5ff463bab3 neovim - completion and snippets 2024-02-25 21:48:51 -05:00
Aria Nolan 3ae435fcd4 neovim - change line number colors 2024-02-24 16:45:06 -05:00
Aria Nolan 5fb569e3aa zoxide 2024-02-24 16:22:39 -05:00
Aria Nolan 3fc5f87f03 added lsp 2024-02-24 16:14:11 -05:00
Aria Nolan 6113cb2132 RGB support for tmux 2024-02-24 14:48:57 -05:00
Aria Nolan f3b84d39ff configured neovim for latex, removed vim and helix 2024-02-24 13:24:17 -05:00
Aria Nolan 081e95317d updated flake 2024-02-24 12:14:50 -05:00
Aria Nolan 8d436b570e neovim filetype options 2024-02-24 11:55:49 -05:00
Aria Nolan 0a41229092 Revert "update foot term variable"
This reverts commit 02f756385f.
2024-02-23 10:18:03 -05:00
Aria Nolan 02f756385f update foot term variable 2024-02-23 10:07:59 -05:00
Aria Nolan f28e02e5c9 some neovim things 2024-02-22 21:16:38 -05:00
Aria Nolan 95fad15496 Merge remote-tracking branch 'origin/main' 2024-02-21 21:45:22 -05:00
Aria Nolan 8d94c9220b updated flake 2024-02-21 21:44:24 -05:00
Aria Nolan ceb8312769 readme 2024-02-19 21:33:18 -05:00
Aria Nolan c76fcd1ee5 added todo list 2024-02-17 11:49:17 -05:00
Aria Nolan ff948fdd89 added textbook folder to syncthing 2024-02-17 11:47:47 -05:00
Aria Nolan cff2d1ea16 updated flake 2024-02-15 20:24:11 -05:00
Aria Nolan 1cfb2b255a fixed lightline colorscheme 2024-02-15 13:22:30 -05:00
Aria Nolan 85f9ad7802 gnu octave 2024-02-15 12:59:07 -05:00
Aria Nolan 137b64805d neovim - colorscheme 2024-02-14 23:04:29 -05:00
Aria Nolan 83ec84ae08 updated flake 2024-02-14 20:04:57 -05:00
Aria Nolan c9c41d1d3f neovim treesitter, formatting 2024-02-13 20:09:30 -05:00
Aria Nolan 48628c4934 nix-matlab 2024-02-13 16:30:09 -05:00
Aria Nolan 17636a3009 noshowmode 2024-02-13 09:31:35 -05:00
Aria Nolan e45046a3d0 neovim - noshowmode 2024-02-12 18:01:43 -05:00
Aria Nolan 03847beac3 neovim - gitsigns and cursorline 2024-02-12 15:48:47 -05:00
Aria Nolan c24e6e7ff7 neovim theme 2024-02-12 15:25:30 -05:00
Aria Nolan 8eee1584fe updated flake 2024-02-12 15:12:07 -05:00
Aria Nolan 2849e3683e neovim 2024-02-10 10:23:56 -05:00
Aria Nolan eb24fc2273 updated flake 2024-02-08 21:23:11 -05:00
Aria Nolan 353d652824 vim - spell files, markdown, fixed colorschemes 2024-02-06 22:09:03 -05:00
Aria Nolan abfd7c1dc8 readd ssh-add to bash login 2024-02-06 20:45:35 -05:00
Aria Nolan 2d6cf08f2b updated flake 2024-02-06 20:41:26 -05:00
Aria Nolan f0c0e37e57 updated radio stations 2024-02-04 22:00:07 -05:00
Aria Nolan b6b9232ff5 witr udg 2024-02-04 21:48:17 -05:00
Aria Nolan bfac35ebfa radioboat 2024-02-04 20:16:52 -05:00
Aria Nolan d2a5bb9929 more vim config 2024-02-04 17:56:33 -05:00
Aria Nolan 1dbcc5c062 changed vim theme 2024-02-02 23:33:39 -05:00
Aria Nolan 1e3fdcec05 fixed vim terminus 2024-02-02 23:20:12 -05:00
Aria Nolan 2f76f79c9f vim plugins 2024-02-02 11:08:59 -05:00
Aria Nolan 60a72f467d vim 2024-02-01 15:45:19 -05:00
Aria Nolan 6fc1817bba updated flake 2024-01-30 20:43:23 -05:00
Aria Nolan 78ecf40dfd switched wine version 2024-01-28 14:26:13 -05:00
Aria Nolan c1162ef0f6 dont need theme file anymore 2024-01-27 16:48:42 -05:00
Aria Nolan a1388075a2 updated flake 2024-01-27 16:33:41 -05:00
Aria Nolan 13b11cbed5 indent style for c 2024-01-27 16:26:53 -05:00
Aria Nolan e99934d8b3 daplink udev rules 2024-01-27 16:13:40 -05:00
Aria Nolan 51a9650171 gcc-arm-embedded 2024-01-26 22:03:08 -05:00
Aria Nolan 731e291954 fixed gpg possibly 2024-01-26 21:16:39 -05:00
Aria Nolan c5202f98cc fixed gnupg 2024-01-26 17:13:17 -05:00
Aria Nolan ce8ea0c860 gnupg 2024-01-26 17:10:09 -05:00
Aria Nolan 334e04848e added echo to syncthing 2024-01-26 16:39:34 -05:00
Aria Nolan 7edf0a82a1 use ssh startAgent option 2024-01-26 16:09:41 -05:00
Aria Nolan 44d2091021 update git email address 2024-01-26 15:57:50 -05:00
Aria Nolan bc222b8283 Revert "remove udev rules for vivado"
This reverts commit a62dae1c26.

Testing if this makes distrobox usb work
2024-01-26 14:23:29 -05:00
Aria Nolan c20aab9a14 added bicep syncthing 2024-01-26 14:17:00 -05:00
Aria Nolan f0ae1cf6c0 added jwst syncthing 2024-01-26 14:16:28 -05:00
Aria Nolan b452f0c1e9 fixed syncthing permissions for real 2024-01-26 14:14:46 -05:00
Aria Nolan d81628c136 Revert "fixed syncthing permissions"
This reverts commit 460b3f0625.
2024-01-26 14:05:52 -05:00
Aria Nolan 460b3f0625 fixed syncthing permissions 2024-01-26 13:59:32 -05:00
Aria Nolan cd0acc1147 updated flake 2024-01-25 15:49:51 -05:00
Aria Nolan 642c0784ab syncthing part 3 2024-01-25 15:39:50 -05:00
Aria Nolan fc9b3a020c edit starship to detect containers 2024-01-24 12:16:19 -05:00
Aria Nolan 810acd92b0 changed xilinx-env 2024-01-24 12:09:39 -05:00
Aria Nolan 419b00792a uninstall nextcloud 2024-01-23 16:35:19 -05:00
Aria Nolan 08047fdfc7 syncthing part 2 2024-01-22 21:57:50 -05:00
Aria Nolan 527a5c58bb syncthing part 1 2024-01-22 21:17:53 -05:00
Aria Nolan a62dae1c26 remove udev rules for vivado 2024-01-22 15:48:21 -05:00
Aria Nolan f568db4441 Merge branch 'main' of codeberg.org:catarial/nix-config 2024-01-22 15:29:22 -05:00
Aria Nolan e3f6e27fcf docker and distrobox 2024-01-22 15:28:29 -05:00
Aria Nolan d831d88b6a updated flake 2024-01-22 12:24:41 -05:00
Aria Nolan a837266f6c Revert "move from unstable to 23.11"
This reverts commit a43d37b3f4.
2024-01-22 12:18:45 -05:00
Aria Nolan a43d37b3f4 move from unstable to 23.11 2024-01-19 08:46:46 -05:00
Aria Nolan 4e3e13363d change location of second drive on bicep 2024-01-18 20:27:30 -05:00
Aria Nolan 2f27ba530b udev rules for vivado 2024-01-18 20:21:06 -05:00
Aria Nolan ced394fe30 added xilinx-env for vivado 2024-01-18 17:53:39 -05:00
Aria Nolan c0c5b58949 dont actually need i3 im just dumb 2024-01-18 13:24:57 -05:00
Aria Nolan 3a26f94254 have to use X11 for Vivado :( 2024-01-17 21:44:06 -05:00
Aria Nolan e560e73a92 updated flake 2024-01-17 20:29:43 -05:00
Aria Nolan 30a0a86078 autostart otd-daemon 2024-01-17 10:25:52 -05:00
Aria Nolan c0d5473564 changed around keybinds 2024-01-17 10:24:36 -05:00
Aria Nolan e32e56c1ab fixed interception 2024-01-16 21:41:47 -05:00
Aria Nolan 063e058ebc ????????? 2024-01-16 21:15:24 -05:00
Aria Nolan d9fbf9a69f updated flake 2024-01-15 20:56:58 -05:00
Aria Nolan a017dcd253 disable sound.enable 2024-01-13 19:00:34 -05:00
Aria Nolan 3988d465f5 updated flake 2024-01-13 17:23:16 -05:00
Aria Nolan 5ebfbaaf76 webcord 2024-01-13 17:23:00 -05:00
Aria Nolan 6d05566699 gnumake 2024-01-13 14:32:02 -05:00
Aria Nolan 5dd2e67f15 finished setting up agenix and setup taskwarrior to use agenix for taskd credentials 2024-01-10 23:11:51 -05:00
Aria Nolan 6db5aa3dbb updated flake 2024-01-10 21:06:05 -05:00
Aria Nolan 1938932955 agenix part 1 2024-01-10 21:05:37 -05:00
Aria Nolan 92b21a4dcb setup taskd account 2024-01-10 20:46:31 -05:00
Aria Nolan d7d4160d21 tiny IRC 2024-01-10 19:29:26 -05:00
Aria Nolan ac2fc1b8c2 vhdl-ls for helix 2024-01-10 13:17:49 -05:00
Aria Nolan cf286d3ed7 udisks and udiskie to simplify mounting drives 2024-01-10 13:16:12 -05:00
Aria Nolan 0c0af29dd3 added nix options to firefox search 2024-01-09 18:06:00 -05:00
Aria Nolan ea943135ff notesnook 2024-01-09 18:03:20 -05:00
Aria Nolan be43caebe2 vcv-rack, allowed unfree 2024-01-09 18:00:58 -05:00
Aria Nolan 6b46acf17a updated flake 2024-01-09 14:35:56 -05:00
Aria Nolan ad9340bf41 lowercase hostnames 2024-01-04 00:31:22 -05:00
Aria Nolan 6777dd1fbe formatted 2024-01-03 00:46:27 -05:00
Aria Nolan 3240f76822 lf 2024-01-02 20:55:35 -05:00
Aria Nolan 0f51722cc3 updated flake 2024-01-02 17:36:45 -05:00
Aria Nolan d5b84593f9 updated waybar symbols, removed usbmuxd and idevicerestore 2023-12-30 13:34:22 -05:00
Aria Nolan 7f696d31c2 usbmuxd, to update iphone 2023-12-30 12:42:18 -05:00
Aria Nolan 83cc1f0abe disabled foot server 2023-12-29 21:57:56 -05:00
Aria Nolan 086a29746c fixed font issues in tmux 2023-12-29 21:42:01 -05:00
Aria Nolan 1262f8853c tmux 2023-12-29 21:30:08 -05:00
Aria Nolan c2c1491088 changed caps to esc 2023-12-29 20:47:50 -05:00
Aria Nolan 73daeb7edd fzf 2023-12-29 20:19:12 -05:00
Aria Nolan d3915360e9 swaylock command 2023-12-29 20:10:55 -05:00
Aria Nolan be9ae24e2c sway-audio-idle-inhibit 2023-12-29 20:07:43 -05:00
Aria Nolan db0efe6f85 updated flake 2023-12-29 20:04:00 -05:00
Aria Nolan 9538b7e11f krita and gimp 2023-12-29 00:34:46 -05:00
Aria Nolan 18d5a49e6e removed firefox theme 2023-12-27 19:50:48 -05:00
Aria Nolan 8ac857faf4 backup extension, removed aria firefox extension 2023-12-26 22:49:51 -05:00
Aria Nolan 6b62637d8f formatted, set firefox theme to dark 2023-12-26 22:42:13 -05:00
Aria Nolan 4a70bad579 thunderstore 2023-12-26 22:05:29 -05:00
Aria Nolan df4d47ebca fastfetch, gcc 2023-12-26 19:32:23 -05:00
Aria Nolan cb266bcfa4 updated flake 2023-12-26 19:28:31 -05:00
Aria Nolan 8aa3ad1a61 changed refresh rate and installed prism launcher 2023-12-22 20:14:30 -05:00
Aria Nolan e15a806e1d setup disk encryption on JWST 2023-12-22 20:12:44 -05:00
Aria Nolan 2293744253 updated flake 2023-12-21 14:50:30 -05:00
Aria Nolan 5ffd2cdeeb formatted 2023-12-21 01:37:09 -05:00
Aria Nolan 0e10b72290 extra drive for BICEP 2023-12-21 01:36:08 -05:00
Aria Nolan a38427d539 added system.stateVersion for BICEP 2023-12-21 05:52:36 +00:00
Aria Nolan 4b58cbe687 added a common module for nixos configurations and set up BICEP 2023-12-21 00:50:27 -05:00
Aria Nolan e2637dcb5c Merge branch 'experimenting'
reformatted flake and change home.stateVersion
2023-12-21 00:28:43 -05:00
Aria Nolan cc354afe69 added hardware config for BICEP 2023-12-21 05:20:06 +00:00
55 changed files with 2432 additions and 887 deletions

6
README.md Normal file
View file

@ -0,0 +1,6 @@
# TODO
- Add NetworkManager mullvad vpn configs
- Flesh out nixvim
- Reformat nixos-common module (its getting messy)
- Make xdg-mime not bad

View file

@ -1,36 +1,147 @@
{
"nodes": {
"crane": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1714136352,
"narHash": "sha256-BtWQ2Th/jamO1SlD+2ASSW5Jaf7JhA/JLpQHk0Goqpg=",
"owner": "ryantm",
"repo": "agenix",
"rev": "24a7ea390564ccd5b39b7884f597cfc8d7f6f44e",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"helix",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1701025348,
"narHash": "sha256-42GHmYH+GF7VjwGSt+fVT1CQuNpGanJbNgVHTAZppUM=",
"owner": "ipetkov",
"repo": "crane",
"rev": "42afaeb1a0325194a7cdb526332d2cb92fddd07b",
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1713532798,
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
"owner": "numtide",
"repo": "devshell",
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@ -39,40 +150,59 @@
"type": "github"
}
},
"helix": {
"flake-utils_2": {
"inputs": {
"crane": "crane",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
"systems": "systems_3"
},
"locked": {
"lastModified": 1702999846,
"narHash": "sha256-5/sHtALCy1HymaJgdcmXM4/qpY3SBqlXvfOlB7DCocY=",
"owner": "helix-editor",
"repo": "helix",
"rev": "63218a512687cf6cfdbd11f088d0a2cb7d4dfcb8",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "helix-editor",
"ref": "master",
"repo": "helix",
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1702937117,
"narHash": "sha256-4GjkL2D01bDg00UZN/SeGrnBZrDVOFeZTbQx6U702Vc=",
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e8aaced73ebaf6bfa8e3c6ab0a19cb184bc4d798",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
@ -81,13 +211,96 @@
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1714515075,
"narHash": "sha256-azMK7aWH0eUc3IqU4Fg5rwZdB9WZBvimOGG3piqvtsY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6d3b6dc9222c12b951169becdf4b0592ee9576ef",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_3": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1714343445,
"narHash": "sha256-OzD1P0o46uD3Ix4ZI/g9z3YAeg+4g+W3qctB6bNOReo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "9fe79591c1005ce6f93084ae7f7dab0a2891440d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1713946171,
"narHash": "sha256-lc75rgRQLdp4Dzogv5cfqOg6qYc5Rp83oedF2t0kDp8=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "230a197063de9287128e2c68a7a4b0cd7d0b50a7",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"nix-matlab": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1714489314,
"narHash": "sha256-rHxViIhUYZGfFfSoQcRer4NBLLfIpbKM0BeGUGk70+A=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "caf167febec16cdf3f9c517fb1c9c7c358546bfe",
"type": "gitlab"
},
"original": {
"owner": "doronbehar",
"repo": "nix-matlab",
"type": "gitlab"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1702453208,
"narHash": "sha256-0wRi9SposfE2wHqjuKt8WO2izKB/ASDOV91URunIqgo=",
"lastModified": 1714465198,
"narHash": "sha256-ySkEJvS0gPz2UhXm0H3P181T8fUxvDVcoUyGn0Kc5AI=",
"owner": "NixOs",
"repo": "nixos-hardware",
"rev": "7763c6fd1f299cb9361ff2abf755ed9619ef01d6",
"rev": "68d680c1b7c0e67a9b2144d6776583ee83664ef4",
"type": "github"
},
"original": {
@ -99,15 +312,15 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1700794826,
"narHash": "sha256-RyJTnTNKhO0yqRpDISk03I/4A67/dp96YRxc86YOPgU=",
"owner": "nixos",
"lastModified": 1703013332,
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5a09cb4b393d58f9ed0d9ca1555016a8543c2ac8",
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
"type": "github"
},
"original": {
"owner": "nixos",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
@ -115,11 +328,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1702830618,
"narHash": "sha256-lvhwIvRwhOLgzbRuYkqHy4M5cQHYs4ktL6/hyuBS6II=",
"lastModified": 1714253743,
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "91a00709aebb3602f172a0bf47ba1ef013e34835",
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
"type": "github"
},
"original": {
@ -129,13 +342,39 @@
"type": "github"
}
},
"nixvim": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"home-manager": "home-manager_3",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1714578316,
"narHash": "sha256-0WnM2nbgj12FGOOCD6NVreiruadmgBijdLiqvqTISaY=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "afa64f35eefa388ca897656f7b3928a6e9e09e4d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1702997397,
"narHash": "sha256-th/EqbtB6jDFhe12kTsssDzF9Ev0p9Yq/oaiWXS3H9w=",
"lastModified": 1714592754,
"narHash": "sha256-Tc+4iDfTEyYBWOfH82OGIBvkCHzs0iODXUknzQO2UbQ=",
"owner": "nix-community",
"repo": "nur",
"rev": "a04eea76ecdc42258fc3ed8391ba838145d0b96a",
"rev": "f4ede26a75d93a3f73744169368890a3aaa8db38",
"type": "github"
},
"original": {
@ -144,41 +383,76 @@
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_2",
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1713954846,
"narHash": "sha256-RWFafuSb5nkWGu8dDbW7gVb8FOQOPqmX/9MlxUUDguw=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "6fb82e44254d6a0ece014ec423cb62d92435336f",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"helix": "helix",
"home-manager": "home-manager",
"agenix": "agenix",
"home-manager": "home-manager_2",
"nix-matlab": "nix-matlab",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixvim": "nixvim",
"nur": "nur"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": [
"helix",
"flake-utils"
],
"nixpkgs": [
"helix",
"nixpkgs"
]
},
"systems": {
"locked": {
"lastModified": 1701137803,
"narHash": "sha256-0LcPAdql5IhQSUXJx3Zna0dYTgdIoYO7zUrsKgiBd04=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "9dd940c967502f844eacea52a61e9596268d4f70",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems": {
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",

View file

@ -6,23 +6,29 @@
extra-substituters = [
# Nix community's cache server
"https://nix-community.cachix.org"
"https://helix.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
];
};
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
helix.url = "github:helix-editor/helix/master";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOs/nixos-hardware/master";
nur.url = "github:nix-community/nur";
agenix.url = "github:ryantm/agenix";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-matlab = {
inputs.nixpkgs.follows = "nixpkgs";
url = "gitlab:doronbehar/nix-matlab";
};
};
# pass in the urls defined above
@ -31,52 +37,63 @@
self,
nixpkgs,
home-manager,
helix,
nixos-hardware,
nur,
agenix,
nixvim,
nix-matlab,
...
} @ inputs: let
system = "x86_64-linux";
pkgs = inputs.nixpkgs.legacyPackages.${system};
overlays = [
nur.overlay
nix-matlab.overlay
];
home-manager-config = toplevel: [
home-manager.nixosModules.home-manager
{
home-manager.backupFileExtension = "bk";
home-manager.useGlobalPkgs = true;
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.users.tacocat = {
imports = [toplevel];
_module.args.theme = import ./modules/themes;
imports = [
toplevel
agenix.homeManagerModules.default
nixvim.homeManagerModules.nixvim
];
};
}
];
common =
[
./modules/nixos-common.nix
{nixpkgs.overlays = overlays;}
agenix.nixosModules.default
]
++ home-manager-config ./users/tacocat/home.nix;
in {
# desktop
nixosConfigurations."BICEP" = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
./hosts/BICEP/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.users."tacocat" = ./users/tacocat/home.nix;
}
];
};
# laptop
nixosConfigurations."JWST" = nixpkgs.lib.nixosSystem {
nixosConfigurations."bicep" = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {inherit inputs;};
modules =
[
./hosts/JWST/configuration.nix
nixos-hardware.nixosModules.dell-xps-15-9520
{nixpkgs.overlays = overlays;}
./hosts/bicep/configuration.nix
]
++ home-manager-config ./users/tacocat/home.nix;
++ common;
};
# laptop
nixosConfigurations."jwst" = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {inherit inputs;};
modules =
[
./hosts/jwst/configuration.nix
nixos-hardware.nixosModules.dell-xps-15-9520
]
++ common;
};
formatter.${system} = pkgs.alejandra;

View file

@ -1,188 +0,0 @@
{
# config,
lib,
pkgs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# ------------ System ------------
users.users.tacocat = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "audio" "video" "bluetooth" "kvm"];
home = "/home/tacocat";
description = "Aria Nolan";
};
boot.loader = {
efi.canTouchEfiVariables = false;
grub = {
efiSupport = true;
configurationLimit = 10;
device = "nodev";
extraEntries = ''
menuentry "Void" {
search --set=void --fs-uuid 987518fa-8ea0-49a6-b1e5-1fed4e4ae50f
configfile "($void)/boot/grub/grub.cfg"
}
'';
};
};
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "us";
};
time.timeZone = "America/New_York";
networking.hostName = "JWST";
networking.networkmanager.enable = true;
networking.resolvconf.extraConfig = ''
name_servers="1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001"
name_server_blacklist="129.21.3.17 129.21.4.18 2620:8d:8000:0:aba:ca:daba:ec"
'';
# Sound
sound.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
jack.enable = true;
};
# Services/Hardware
hardware.opentabletdriver.enable = true;
hardware.bluetooth.enable = true;
services.blueman.enable = true;
services.printing.enable = true;
services.geoclue2.enable = true;
services.mullvad-vpn.enable = true;
services.mullvad-vpn.enableExcludeWrapper = false;
services.fwupd.enable = true;
security.rtkit.enable = true;
services.resolved.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
# ------------ Nix ------------
nix.settings = {
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
trusted-users = ["root" "tacocat"];
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 1w";
};
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-run"
"nvidia-x11"
"nvidia-settings"
"discord"
"spotify"
];
programs.nix-index.enable = true;
programs.command-not-found.enable = false;
# ------------ Software ------------
environment = {
systemPackages = with pkgs; [
screen
pyocd
vim
exfat
encfs
ntfs3g
];
# remove nano
defaultPackages = with pkgs; [
perl
rsync
strace
];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
extraPackages = with pkgs; [
swaylock
swayidle
brightnessctl
wl-mirror
];
};
programs.waybar.enable = true;
programs.steam.enable = true;
programs.steam.remotePlay.openFirewall = true;
# programs.steam.gamescopeSession = {
# enable = true;
# args = [
# "-f"
# "--expose-wayland"
# ];
# };
programs.gamemode.enable = true;
# programs.gamescope.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
gtk.iconCache.enable = true;
# ------------ Graphics ------------
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [
intel-compute-runtime
vaapiVdpau
];
};
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
prime = {
offload.enable = true;
offload.enableOffloadCmd = true;
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
services.xserver.videoDrivers = ["nvidia"];
}

View file

@ -0,0 +1,39 @@
{pkgs, ...}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# ------------ System ------------
time.timeZone = "America/New_York";
networking.hostName = "bicep";
services.interception-tools = {
enable = true;
plugins = with pkgs.interception-tools-plugins; [
dual-function-keys
];
udevmonConfig = ''
- JOB: "${pkgs.interception-tools}/bin/intercept -g $DEVNODE | ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c /etc/interception/dual-function-keys/my-mappings.yaml | ${pkgs.interception-tools}/bin/uinput -d $DEVNODE"
DEVICE:
NAME: "AT Translated Set 2 keyboard"
'';
};
environment.etc."interception/dual-function-keys/my-mappings.yaml".text = ''
MAPPINGS:
- KEY: KEY_CAPSLOCK
TAP: KEY_CAPSLOCK
HOLD: KEY_LEFTMETA
HOLD_START: BEFORE_RELEASE
'';
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
}

View file

@ -0,0 +1,49 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/7204d9a8-ccfd-4fa7-8b94-c791ad80a34f";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/AB77-4404";
fsType = "vfat";
};
fileSystems."/data" = {
device = "/dev/disk/by-uuid/7408a47c-4fe5-482f-84f0-fa27d86570fc";
fsType = "ext4";
};
swapDevices = [
{device = "/dev/disk/by-uuid/614e4b01-8946-44fc-a4b3-d53499f29a3e";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,75 @@
{
# config,
pkgs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# ------------ System ------------
boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.loader.grub.enableCryptodisk = true;
boot.initrd = {
luks.devices."root" = {
device = "/dev/disk/by-uuid/25e06c9e-3f53-4abc-a656-d8b388b27f58"; # UUID for /dev/nvme01np2
preLVM = true;
keyFile = "/keyfile0.bin";
allowDiscards = true;
};
secrets = {
# Create /mnt/etc/secrets/initrd directory and copy keys to it
"keyfile0.bin" = "/etc/secrets/initrd/keyfile0.bin";
"keyfile1.bin" = "/etc/secrets/initrd/keyfile1.bin";
};
};
# Data mount
fileSystems."/data" = {
device = "/dev/disk/by-uuid/12c28d9c-f781-499c-bd58-ad2608c9322a"; # UUID for /dev/mapper/crypted-data
encrypted = {
enable = true;
label = "crypted-data";
blkDev = "/dev/disk/by-uuid/3f16043b-ab85-42af-a3aa-a687372dae67"; # UUID for /dev/nvme1n1p1
keyFile = "/keyfile1.bin";
};
};
time.timeZone = "America/New_York";
networking.hostName = "jwst";
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
# ------------ Graphics ------------
hardware.opengl.extraPackages = with pkgs; [
intel-compute-runtime
vaapiVdpau
];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
prime = {
offload.enable = true;
offload.enableOffloadCmd = true;
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
services.xserver.videoDrivers = ["nvidia"];
}

View file

@ -13,32 +13,22 @@
];
boot.initrd.availableKernelModules = ["xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
boot.initrd.kernelModules = [];
boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/d05d358d-19d4-4629-b0bd-594a754ad76d";
device = "/dev/disk/by-uuid/09e1694e-5236-45d3-b454-1dbe9ac473da";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/6DD4-5A29";
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/20C7-3E47";
fsType = "vfat";
};
fileSystems."/mnt/void" = {
device = "/dev/disk/by-uuid/987518fa-8ea0-49a6-b1e5-1fed4e4ae50f";
fsType = "ext4";
};
fileSystems."/mnt/secondary" = {
device = "/dev/disk/by-uuid/3b424592-6b20-42e0-9d28-8bf562c15913";
fsType = "ext4";
};
swapDevices = [
{device = "/dev/disk/by-uuid/802e89ce-52b8-41b9-85ea-b969ab08765f";}
{device = "/dev/disk/by-uuid/9d8aab67-42c8-4139-a178-275523260792";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
@ -49,6 +39,5 @@
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

70
modules/mullvad.nix Normal file
View file

@ -0,0 +1,70 @@
{
pkgs,
config,
...
}: {
age.secrets.mullvad.file = ../secrets/mullvad.age;
environment.shellAliases = {
mullvad-up = "systemctl start wg-quick-wg0.service";
mullvad-down = "systemctl stop wg-quick-wg0.service";
};
networking.wg-quick.interfaces = let
server_ip = "146.70.198.194";
in {
wg0 = {
autostart = false;
# IP address of this machine in the *tunnel network*
address = [
"10.70.139.192/32"
"fc00:bbbb:bbbb:bb01::7:8bbf/128"
];
# To match firewall allowedUDPPorts (without this wg
# uses random port numbers).
listenPort = 51820;
# Path to the private key file.
privateKeyFile = config.age.secrets.mullvad.path;
peers = [
{
publicKey = "57Zu2qPzRScZWsoC2NhXgz0FiC0HiKkbEa559sbxB3k=";
allowedIPs = ["0.0.0.0/0"];
endpoint = "${server_ip}:51820";
persistentKeepalive = 25;
}
];
postUp = ''
wg set wg0 fwmark 51820
${pkgs.iptables}/bin/iptables -I OUTPUT \
! -o wg0 \
-m mark ! --mark $(wg show wg0 fwmark) \
-m addrtype ! --dst-type LOCAL \
-j REJECT
${pkgs.iptables}/bin/ip6tables -I OUTPUT \
! -o wg0 \
-m mark ! --mark $(wg show wg0 fwmark) \
-m addrtype ! --dst-type LOCAL \
-j REJECT
'';
preDown = ''
${pkgs.iptables}/bin/iptables -D OUTPUT \
! -o wg0 \
-m mark ! --mark $(wg show wg0 fwmark) \
-m addrtype ! --dst-type LOCAL \
-j REJECT
${pkgs.iptables}/bin/ip6tables -D OUTPUT \
! -o wg0 -m mark \
! --mark $(wg show wg0 fwmark) \
-m addrtype ! --dst-type LOCAL \
-j REJECT
'';
};
};
}

229
modules/nixos-common.nix Normal file
View file

@ -0,0 +1,229 @@
{
pkgs,
inputs,
...
}: {
# ------------ System ------------
imports = [
./mullvad.nix
];
programs.fish.enable = true;
users.users.tacocat = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "audio" "video" "bluetooth" "kvm" "docker" "libvirtd"];
home = "/home/tacocat";
description = "Aria Nolan";
};
boot.loader = {
efi.canTouchEfiVariables = false;
grub = {
efiSupport = true;
configurationLimit = 10;
device = "nodev";
};
};
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "us";
};
networking.networkmanager = {
enable = true;
dns = "none";
};
networking.resolvconf.extraConfig = ''
name_servers="1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001"
name_server_blacklist="129.21.3.17 129.21.4.18 2620:8d:8000:0:aba:ca:daba:ec"
'';
networking.firewall.allowedTCPPorts = [2234];
# Sound
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
jack.enable = true;
};
# Services/Hardware
hardware.opentabletdriver.enable = true;
hardware.bluetooth.enable = true;
services.blueman.enable = true;
services.printing.enable = true;
services.geoclue2.enable = true;
services.fwupd.enable = true;
security.rtkit.enable = true;
# services.resolved.enable = true;
services.udisks2.enable = true;
services.pcscd.enable = true;
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
};
services.mpd = {
enable = true;
user = "tacocat";
musicDirectory = "/data/music";
startWhenNeeded = true;
extraConfig = ''
audio_output {
type "pipewire"
name "Pipewire sound server"
}
replaygain "track"
'';
};
systemd.services.mpd.environment = {
# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
XDG_RUNTIME_DIR = "/run/user/1000";
# User-id must match above user. MPD will look inside this directory for
# the PipeWire socket.
};
virtualisation.docker.enable = true;
virtualisation.libvirtd.enable = true;
services.udev.extraRules = ''
# 0d28:0204 DAPLink
SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", ATTR{idProduct}=="0204", MODE:="666"
'';
services.syncthing = {
enable = true;
user = "tacocat";
dataDir = "/home/tacocat";
configDir = "/home/tacocat/.config/syncthing";
settings = {
devices = {
bicep = {
id = "3EPQMGY-4ZY2MCG-A43QZ5E-IKZ3CL4-AD25LCZ-YNMZTVS-OCSMU54-ZTGFYAR";
autoAcceptFolders = true;
};
jwst = {
id = "7LY5XXK-4F7MKFG-6ZCP5QH-24WT3LX-NODOWUP-JXRFAKP-MARTKOA-QJRW3QM";
autoAcceptFolders = true;
};
echo = {
id = "LW6Z6CI-PDKQUZG-725FF6F-GUZ6GH2-SFHVXVZ-37YJUC4-7ZW4EMP-TC4REAZ";
autoAcceptFolders = true;
};
};
folders = {
"/data/homework" = {
id = "homework";
devices = ["bicep" "jwst" "echo"];
};
"/data/books" = {
id = "books";
devices = ["bicep" "jwst" "echo"];
};
"/data/music" = {
id = "music";
devices = ["bicep" "jwst" "echo"];
};
"/var/lib/mpd" = {
id = "mpd state";
devices = ["bicep" "jwst" "echo"];
};
};
};
};
# ------------ Nix ------------
nix.settings = {
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
trusted-users = ["root" "tacocat"];
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 1w";
};
nixpkgs.config = {
allowUnfree = true;
};
programs.nix-index.enable = true;
programs.command-not-found.enable = false;
# ------------ Software ------------
environment = {
systemPackages = with pkgs; [
screen
distrobox
udiskie
pyocd
vim
exfat
encfs
ntfs3g
gnutls
inputs.agenix.packages.${system}.default
];
# remove nano
defaultPackages = with pkgs; [
perl
rsync
strace
];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
extraPackages = with pkgs; [
swaylock
swayidle
brightnessctl
wl-mirror
];
};
programs.waybar.enable = true;
programs.steam.enable = true;
programs.steam.remotePlay.openFirewall = true;
# programs.steam.gamescopeSession = {
# enable = true;
# args = [
# "-f"
# "--expose-wayland"
# ];
# };
programs.gamemode.enable = true;
# programs.gamescope.enable = true;
programs.ssh.startAgent = true;
programs.gnupg.agent = {
enable = true;
# pinentryFlavor = "curses";
# enableSSHSupport = true;
};
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
gtk.iconCache.enable = true;
# ------------ Graphics ------------
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
}

View file

@ -1,4 +0,0 @@
let
tokyonight = import ./tokyonight.nix;
in
tokyonight

View file

@ -1,18 +0,0 @@
{
base00 = "#1a1b26";
base01 = "#a9b1d6";
base02 = "#24283b";
base03 = "#f7768e";
base04 = "#9ece6a";
base05 = "#e0af68";
base06 = "#7aa2f7";
base07 = "#bb9af7";
base08 = "#7dcfff";
base09 = "#414868";
base0A = "#ff9e64";
base0B = "#9ece6a";
base0C = "#e0af68";
base0D = "#7aa2f7";
base0E = "#bb9af7";
base0F = "#7dcfff";
}

9
secrets/mullvad.age Normal file
View file

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 ozffKQ CkcpkTq9vVNTE+jghNH8tu349y1TtgDN6NwWU0QbER0
6wRQIui7/mWJwzR6SfHYowaS5/Z7Me1hN5BEpW11tHA
-> ssh-ed25519 95Hm4w gR3lnTJsYQvgyP5WcAbVcG6iBHgmIkKOjhk8Y0UK/xY
4oJCwVLhUVz9mB1Qq4XBswvcjNdx/yLs09BVRGAok2Q
-> ssh-ed25519 +vYWqQ xDtHwWOQBpzqS3+7Hi/wPwxzEgHyb/qbl+h/ZOkOdA0
7zibbuUxXwFQd6Z7tRDIUi7eaIio8pDitElyPWsfPOc
--- Xu0Nb3MrNnmRkNfd605ev8LQuV5vTMlVM7TP+Z6yJuE
!»^·¸¢`[7SÐ3°wÇF>g‰ºWl#<23> r¶™Í2ÃÊ!˜›³›í“>ÏDBÖëìŽx I—ÕËûÒ³&¦MÚ

13
secrets/secrets.nix Normal file
View file

@ -0,0 +1,13 @@
let
aria = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFy/qHGXBgAYhhk2hy0HIEvZxgmLF6bN3aQ7rZTf4Lxf";
users = [aria];
bicep = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrnQd4xYIg24VjBBEikC+dt1pNmo9pcD69TMCzRYiZn";
jwst = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIME17TyJvo5MBNRVFTuXW23arQnI9f3OnAEv/3M6RM1g";
systems = [bicep jwst];
in {
"taskd-ca-cert.age".publicKeys = users ++ systems;
"taskd-aria-cert.age".publicKeys = users ++ systems;
"taskd-aria-key.age".publicKeys = users ++ systems;
"mullvad.age".publicKeys = users ++ systems;
}

BIN
secrets/taskd-aria-cert.age Normal file

Binary file not shown.

BIN
secrets/taskd-aria-key.age Normal file

Binary file not shown.

BIN
secrets/taskd-ca-cert.age Normal file

Binary file not shown.

View file

@ -0,0 +1 @@
(setq package-enable-at-startup nil)

View file

@ -0,0 +1,118 @@
;; Initialize straight package manager
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name
"straight/repos/straight.el/bootstrap.el"
(or (bound-and-true-p straight-base-dir)
user-emacs-directory)))
(bootstrap-version 7))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
(setq straight-use-package-by-default t)
(use-package material-theme
:config
(load-theme 'material t))
(use-package nerd-icons)
(use-package dashboard
:config
(setq dashboard-center-content t
dashboard-display-icons-p t
dashboard-icon-type 'nerd-icons
dashboard-set-file-icons t)
(dashboard-setup-startup-hook))
(use-package nerd-icons-dired
:hook
(dired-mode . nerd-icons-dired-mode))
(use-package nix-mode
:mode "\\.nix\\'")
(use-package magit
:commands (magit-status magit-get-current-branch))
(use-package diff-hl)
(global-diff-hl-mode)
(diff-hl-flydiff-mode)
(use-package pdf-tools
:magic ("%PDF" . pdf-view-mode)
:config
(pdf-tools-install)
(setq-default pdf-view-display-size 'fit-page))
(use-package markdown-mode
:mode ("README\\.md\\'" . gfm-mode)
:init (setq markdown-command "multimarkdown"))
;; cant get auctex to work
;; (use-package tex
;; :defer t
;; :straight auctex
;; :config
;; (setq TeX-auto-save t))
;; Tell Emacs to prefer the treesitter mode
;; You'll want to run the command `M-x treesit-install-language-grammar' before editing.
(setq major-mode-remap-alist
'((bash-mode . bash-ts-mode)
(c-mode . c-ts-mode)
(c++-mode . c++-ts-mode)
(java-mode . java-ts-mode)
(js-mode . js-ts-mode)
(typescript-mode . typescript-ts-mode)
(rust-mode . rust-ts-mode)
(go-mode . go-ts-mode)
(json-mode . json-ts-mode)
(css-mode . css-ts-mode)
(python-mode . python-ts-mode)))
(setq treesit-language-source-alist
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
(css "https://github.com/tree-sitter/tree-sitter-css")
(go "https://github.com/tree-sitter/tree-sitter-go")
(rust "https://github.com/tree-sitter/tree-sitter-rust")
(html "https://github.com/tree-sitter/tree-sitter-html")
(ruby "https://github.com/tree-sitter/tree-sitter-ruby")
(javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
(json "https://github.com/tree-sitter/tree-sitter-json")
(python "https://github.com/tree-sitter/tree-sitter-python")
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")
(java "https://github.com/tree-sitter/tree-sitter-java")
(scala "https://github.com/tree-sitter/tree-sitter-scala")
(c "https://github.com/tree-sitter/tree-sitter-c")
(cpp "https://github.com/tree-sitter/tree-sitter-cpp")
(elisp "https://github.com/Wilfred/tree-sitter-elisp")))
(setq-default fill-column 80)
(setq-default tab-width 2)
(setq ring-bell-function 'ignore)
(setq display-line-numbers-type 'relative)
(blink-cursor-mode 0)
(global-hl-line-mode 1)
;; Turn off some unneeded UI elements
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(add-hook 'text-mode-hook 'auto-fill-mode)
(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'text-mode-hook 'display-line-numbers-mode)
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
(add-to-list 'default-frame-alist
'(font . "Mononoki-14"))

View file

@ -0,0 +1,39 @@
(("apheleia" . "8f512dba3ee2eabae0dbfd8289b89d54c132cb87")
("auctex" . "53b82804c9dd9dbea306876f3be84ebacbeb7e74")
("blackout" . "7707211370f03f03a2f74df15f42ac24a1e99300")
("company-mode" . "f1877a370ca76d5cd6614c527635b2d6983188af")
("compat" . "2748abd7c7135fe5d873020061b2d58a66b8d505")
("ctrlf" . "9b4cf6c79a961f2bfbb949805aa300fcf1eb40a6")
("dash.el" . "b6eef1a24dfbe57ba72d5eb1613fc05ff92e8e92")
("diff-hl" . "09a0f8fcc7e6ce3f49dca64cdfab898d6762f2a4")
("el-get" . "a5ba5852648a90ee0cde9fb5d72e69497d260eec")
("emacs-dashboard" . "263f9f1760b8303955c03ccc3c509692075af019")
("emacs-which-key" . "1ab1d0cc88843c9a614ed3226c5a1070e32e4823")
("emacsmirror-mirror" . "95617befb9ac26869e2ab2101e4a76fa5d40fdb7")
("f.el" . "d2019d4f9625bcc44349c69fe46d6645fd9ff4ff")
("gnu-elpa-mirror" . "a4f2d4b0e1d3dd8bde2d768458a402d63ad06722")
("ht.el" . "c4c1be487d6ecb353d07881526db05d7fc90ea87")
("hydra" . "9e9e00cb240ea1903ffd36a54956b3902c379d29")
("lsp-mode" . "c9db552dcef80c481ecca6bf53c86a12f2a9cd55")
("lsp-pyright" . "c745228f39fdb35372b29b909f25fa6c98dc7c88")
("magit" . "49ba535f526266b69fcaf7442acfa59ad8473caf")
("markdown-mode" . "193b61605f44c85d261b8bd82e0a213fd8f1ff32")
("melpa" . "382cb915901971ff5e9b32156cbeb5639c3bf20f")
("monokai-emacs" . "df6c23d14e52f9d7f5bc2265facfbedfb07a444e")
("nerd-icons-dired" . "c1c73488630cc1d19ce1677359f614122ae4c1b9")
("nerd-icons.el" . "fb395120e9de33b276d16caaccaefd98d4340b92")
("nix-mode" . "719feb7868fb567ecfe5578f6119892c771ac5e5")
("nongnu-elpa" . "e5adab3409abfa69ecbaeb07bb88d48f78e03d3f")
("org" . "3303a54d74805cdd2b6eda37285f259949f7ba2e")
("org-contrib" . "c6aef31ccfc7c4418c3b51e98f7c3bd8e255f5e6")
("prescient.el" . "c0eca3328313f1e93d24e686307516f43a484ba2")
("projectile" . "271007c6611fcb08ddd326d7de9727c2ad5ef265")
("s.el" . "08661efb075d1c6b4fa812184c1e5e90c08795a9")
("seq" . "4355cde01767911660f761cf874edb412d06bd7a")
("spinner" . "34905eae12a236753fa88abc831eff1e41e8576e")
("straight.el" . "b3760f5829dba37e855add7323304561eb57a3d4")
("transient" . "2dd0102ec3df901d421fc338e5c768467cc54ecf")
("use-package" . "0ad5d9d5d8a61517a207ab04bf69e71c081149eb")
("vertico" . "e077e957672ae8be35fbd95a7724fbdaa288236c")
("with-editor" . "cfcbc2731e402b9169c0dc03e89b5b57aa988502"))
:gamma

View file

@ -0,0 +1 @@
(setq package-enable-at-startup nil)

437
users/tacocat/emacs/init.el Normal file
View file

@ -0,0 +1,437 @@
;; Initialize straight package manager
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name
"straight/repos/straight.el/bootstrap.el"
(or (bound-and-true-p straight-base-dir)
user-emacs-directory)))
(bootstrap-version 7))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
(setq straight-use-package-by-default t)
;; Disable frequency of GC. This helps performance both during init
;; and after init. Value is in bytes so this is 100MB, as suggested in
;; <https://github.com/emacs-lsp/lsp-mode#performance>.
(setq gc-cons-threshold (* 100 1024 1024))
;; If you have something on the system clipboard, and then kill
;; something in Emacs, then by default whatever you had on the system
;; clipboard is gone and there is no way to get it back. Setting the
;; following option makes it so that when you kill something in Emacs,
;; whatever was previously on the system clipboard is pushed into the
;; kill ring. This way, you can paste it with `yank-pop'.
(setq save-interprogram-paste-before-kill t)
(straight-register-package 'org)
(straight-register-package 'org-contrib)
(use-package monokai-theme
:config
(load-theme 'monokai t))
(use-package blackout
:demand t)
(use-package nerd-icons)
(use-package projectile
:defer 1
:bind-keymap* (("C-c p" . projectile-command-map))
:config
;; Use Vertico (via `completing-read') for Projectile instead of
;; IDO.
(setq projectile-completion-system 'default)
;; When switching projects, give the option to choose what to do.
;; This is a way better interface than having to remember ahead of
;; time to use a prefix argument on `projectile-switch-project'
;; (because, and please be honest here, when was the last time you
;; actually remembered to do that?).
(setq projectile-switch-project-action 'projectile-commander)
(def-projectile-commander-method ?\C-m
"Find file in project."
(call-interactively #'find-file))
(projectile-mode +1)
:blackout t)
(use-package dashboard
:config
(setq dashboard-center-content t
dashboard-display-icons-p t
dashboard-icon-type 'nerd-icons
dashboard-set-file-icons t
dashboard-projects-backend 'projectile)
(setq dashboard-items '((recents . 5)
(bookmarks . 5)
(projects . 5)
(agenda . 5)
(registers . 5)))
(dashboard-setup-startup-hook))
(use-package ctrlf
:init
(ctrlf-mode +1))
(use-package which-key
:demand t
:config
(which-key-mode +1)
:blackout t)
(use-package nerd-icons-dired
:hook
(dired-mode . nerd-icons-dired-mode))
(use-package nix-mode
:mode "\\.nix\\'")
(use-package magit
:commands (magit-status magit-get-current-branch))
(use-package diff-hl)
(global-diff-hl-mode)
(diff-hl-flydiff-mode)
(use-package markdown-mode
:mode ("README\\.md\\'" . gfm-mode)
:init (setq markdown-command "multimarkdown"))
;; using an older version of auctex since newer versions changed how config
;; works and I can't figure it out
(use-package tex-site
:straight auctex)
(use-package tex
:straight nil
:config
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq TeX-save-query nil)
(setq TeX-PDF-mode t)
(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-start-server t)
(add-to-list 'TeX-expand-list'("%sn" (lambda () server-name)))
(add-to-list 'TeX-view-program-list
'("Zathura"
("zathura %o"
(mode-io-correlate " --synctex-forward %n:0:\"%b\" -x \"emacsclient --socket-name=%sn +%{line} %{input}\""))
"zathura"))
(setcar (cdr (assoc 'output-pdf TeX-view-program-selection)) "Zathura"))
(use-package latex
:straight nil
:mode
("\\.tex\\'" . latex-mode)
:hook
(LaTeX-mode . LaTeX-math-mode)
(LaTeX-mode . TeX-source-correlate-mode))
(use-package font-latex
:straight nil
:init
(setq font-latex-fontify-script nil)
(setq font-latex-fontify-sectioning 'color))
(use-package org
:bind*
("C-c l" . #'org-store-link)
("C-c a" . #'org-agenda)
("C-c c" . #'org-capture))
(use-package vertico
:demand t
:config
(vertico-mode +1)
;; Ignore case... otherwise the behavior is really weird and
;; confusing.
(setq read-file-name-completion-ignore-case t
read-buffer-completion-ignore-case t
completion-ignore-case t)
;; Don't re-sort buffer candidates. The recency order is correct.
(vertico-multiform-mode +1)
(setq vertico-multiform-categories
'((buffer (vertico-sort-function . copy-sequence)))))
(use-package prescient
:config
;; Remember usage statistics across Emacs sessions.
(prescient-persist-mode +1)
;; The default settings seem a little forgetful to me. Let's try
;; this out.
(setq prescient-history-length 1000)
;; Common sense.
(setq prescient-sort-full-matches-first t))
(use-package vertico-prescient
:demand t
:after vertico
:config
(vertico-prescient-mode +1))
(use-package apheleia
:init
(apheleia-global-mode +1))
(use-package company
:defer 0.5
:bind (:filter company-mode
;; Remap the standard Emacs keybindings for invoking
;; completion to instead use Company. You might think this
;; could be put in the `:bind*' declaration below, but it
;; seems that `bind-key*' does not work with remappings.
([remap completion-at-point] . #'company-manual-begin)
([remap complete-symbol] . #'company-manual-begin)
;; The following are keybindings that take effect whenever
;; the completions menu is visible, even if the user has not
;; explicitly interacted with Company.
:map company-active-map
;; Make TAB always complete the current selection, instead of
;; only completing a common prefix.
("<tab>" . #'company-complete-selection)
("TAB" . #'company-complete-selection)
;; When was the last time you used the C-s binding for
;; searching candidates? It conflicts with buffer search,
;; anyway. Same for the scroll commands.
("C-s" . nil)
([remap scroll-down-command] . nil)
([remap scroll-up-command] . nil)
;; The following are keybindings that only take effect if the
;; user has explicitly interacted with Company. Note that
;; `:map' from above is "sticky", and applies also below: see
;; https://github.com/jwiegley/use-package/issues/334#issuecomment-349473819.
:filter (company-explicit-action-p)
;; Make RET trigger a completion if and only if the user has
;; explicitly interacted with Company, instead of always
;; doing so.
("<return>" . #'company-complete-selection)
("RET" . #'company-complete-selection)
;; We then make <up> and <down> abort the completions menu
;; unless the user has interacted explicitly. Note that we
;; use `company-select-previous' instead of
;; `company-select-previous-or-abort'. I think the former
;; makes more sense since the general idea of this `company'
;; configuration is to decide whether or not to steal
;; keypresses based on whether the user has explicitly
;; interacted with `company', not based on the number of
;; candidates.
;;
;; Note that M-p and M-n work regardless of whether explicit
;; interaction has happened yet, and note also that M-TAB
;; when the completions menu is open counts as an
;; interaction.
("<up>" . #'company-select-previous)
("<down>" . #'company-select-next))
:bind* (:filter company-mode
;; The default keybinding for `completion-at-point' and
;; `complete-symbol' is M-TAB or equivalently C-M-i. We
;; already remapped those bindings to `company-manual-begin'
;; above. Here we make sure that they definitely invoke
;; `company-manual-begin' even if a minor mode binds M-TAB
;; directly.
("M-TAB" . #'company-manual-begin))
:config
;; Make completions display twice as soon.
(setq company-idle-delay 0.15)
;; Make completions display when you have only typed one character,
;; instead of three.
(setq company-minimum-prefix-length 1)
;; Always display the entire suggestion list onscreen, placing it
;; above the cursor if necessary.
(setq company-tooltip-minimum company-tooltip-limit)
;; Always display suggestions in the tooltip, even if there is only
;; one. Also, don't display metadata in the echo area. (This
;; conflicts with ElDoc.)
(setq company-frontends '(company-pseudo-tooltip-frontend))
;; Show quick-reference numbers in the tooltip. (Select a completion
;; with M-1 through M-0.)
(setq company-show-quick-access t)
;; Prevent non-matching input (which will dismiss the completions
;; menu), but only if the user interacts explicitly with Company.
(setq company-require-match #'company-explicit-action-p)
;; Only search the current buffer to get suggestions for
;; `company-dabbrev' (a backend that creates suggestions from text
;; found in your buffers). This prevents Company from causing lag
;; once you have a lot of buffers open.
(setq company-dabbrev-other-buffers nil)
;; Make the `company-dabbrev' backend fully case-sensitive, to
;; improve the UX when working with domain-specific words that have
;; particular casing.
(setq company-dabbrev-ignore-case nil)
(setq company-dabbrev-downcase nil)
;; When candidates in the autocompletion tooltip have additional
;; metadata, like a type signature, align that information to the
;; right-hand side. This usually makes it look neater.
(setq company-tooltip-align-annotations t)
(global-company-mode +1)
:blackout t)
(use-package company-prescient
:demand t
:after company
:config
(company-prescient-mode +1))
(use-package lsp-mode
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-m")
:hook
(lsp-mode . lsp-enable-which-key-integration)
:commands lsp
:config
;; As per <https://github.com/emacs-lsp/lsp-mode#performance>.
(setq read-process-output-max (* 1024 1024))
;; Disable LSP reformatting your code as you type. We use Apheleia
;; for that instead.
(setq lsp-enable-on-type-formatting nil))
(use-package lsp-pyright
:hook (python-mode . (lambda ()
(require 'lsp-pyright)
(lsp)))) ; or lsp-deferred
(use-package emacs
:straight nil
:init
;; Add prompt indicator to `completing-read-multiple'.
;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.
(defun crm-indicator (args)
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
;; Do not allow the cursor in the minibuffer prompt
(setq minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
;; Support opening new minibuffers from inside existing minibuffers.
(setq enable-recursive-minibuffers t)
;; Emacs 28 and newer: Hide commands in M-x which do not work in the current
;; mode. Vertico commands are hidden in normal buffers. This setting is
;; useful beyond Vertico.
(setq read-extended-command-predicate #'command-completion-default-include-p))
(setq-default fill-column 80)
(setq ring-bell-function 'ignore)
(setq mode-line-position (list "(%l,%c)"))
;; https://dougie.io/emacs/indentation/#tldr-the-full-configuration
; START TABS CONFIG
;; Create a variable for our preferred tab width
(setq custom-tab-width 2)
;; Two callable functions for enabling/disabling tabs in Emacs
(defun disable-tabs () (setq indent-tabs-mode nil))
(defun enable-tabs ()
(local-set-key (kbd "TAB") 'tab-to-tab-stop)
(setq indent-tabs-mode t)
(setq-default tab-width custom-tab-width))
;; Hooks to Enable Tabs
(add-hook 'prog-mode-hook 'enable-tabs)
;; Hooks to Disable Tabs
(add-hook 'lisp-mode-hook 'disable-tabs)
(add-hook 'emacs-lisp-mode-hook 'disable-tabs)
;; Language-Specific Tweaks
(setq-default python-indent-offset custom-tab-width) ;; Python
(setq-default js-indent-level custom-tab-width) ;; Javascript
;; Making electric-indent behave sanely
(setq-default electric-indent-inhibit t)
;; Make the backspace properly erase the tab instead of
;; removing 1 space at a time.
(setq backward-delete-char-untabify-method 'hungry)
;; WARNING: This will change your life
;; (OPTIONAL) Visualize tabs as a pipe character - "|"
;; This will also show trailing characters as they are useful to spot.
(setq whitespace-style '(face tabs tab-mark trailing))
(custom-set-faces
'(whitespace-tab ((t (:foreground "#636363")))))
(setq whitespace-display-mappings
'((tab-mark 9 [124 9] [92 9]))) ; 124 is the ascii ID for '\|'
(global-whitespace-mode) ; Enable whitespace mode everywhere
; END TABS CONFIG
(setq display-line-numbers-type 'relative)
(blink-cursor-mode 0)
(global-hl-line-mode 1)
(setq scroll-preserve-screen-position t)
(setq scroll-conservatively 1)
(setq scroll-margin 5)
(defun gcm-scroll-down ()
(interactive)
(scroll-up 1))
(defun gcm-scroll-up ()
(interactive)
(scroll-down 1))
(global-set-key [(control down)] 'gcm-scroll-down)
(global-set-key [(control up)] 'gcm-scroll-up)
;; Turn off some unneeded UI elements
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(add-hook 'text-mode-hook 'auto-fill-mode)
(add-hook 'text-mode-hook 'visual-line-mode)
(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'text-mode-hook 'display-line-numbers-mode)
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
(add-to-list 'default-frame-alist
'(font . "Mononoki-14"))

View file

@ -1,5 +1,5 @@
{...}: {
accounts.email.accounts = {
accounts.email.accounts = {
"aria" = {
address = "aria@chytrid.org";
userName = "aria@chytrid.org";

View file

@ -1,52 +0,0 @@
{
# config,
pkgs,
inputs,
...
}: {
imports = [
./languages.nix
];
programs.helix = {
enable = true;
package = inputs.helix.packages.${pkgs.system}.default;
extraPackages = with pkgs; [
clang-tools
marksman
nil
nodePackages.bash-language-server
shellcheck
texlab
tectonic
lua-language-server
zathura
];
settings = {
theme = "catppuccin_frappe";
editor = {
line-number = "relative";
lsp.display-messages = true;
scrolloff = 10;
middle-click-paste = false;
cursorline = true;
auto-format = false;
idle-timeout = 400;
color-modes = true;
soft-wrap.enable = true;
whitespace = {
render = {
space = "none";
tab = "none";
newline = "none";
};
};
indent-guides = {
render = true;
character = "";
rainbow-option = "dim";
};
};
};
};
}

View file

@ -1,47 +0,0 @@
{
pkgs,
lib,
...
}: {
programs.helix.languages = {
language = [
{
name = "latex";
indent = {
tab-width = 2;
unit = "\t";
};
}
];
language-server = {
nil = {
config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"];
};
texlab = {
config.texlab = {
forwardSearch.executable = "zathura";
forwardSearch.args = ["--synctex-forward" "%l:1:%f" "%p"];
build = {
executable = "tectonic";
onSave = true;
forwardSearchAfter = true;
auxDirectory = "build";
logDirectory = "build";
pdfDirectory = "build";
args = [
"-X"
"compile"
"%f"
"--synctex"
"--keep-logs"
"--keep-intermediates"
"--outdir"
"build"
];
};
};
};
};
};
}

View file

@ -1,10 +1,20 @@
{pkgs, ...}: {
imports = [
./programs
./services
./shell
./wayland
./email.nix
./lf
./neovim
];
home = {
username = "tacocat";
homeDirectory = "/home/tacocat";
stateVersion = "24.05";
sessionVariables = {
EDITOR = "hx";
EDITOR = "nvim";
BAT_THEME = "ansi";
DOTNET_ROOT = "$HOME/.dotnet";
};
@ -13,76 +23,99 @@
"$HOME/.dotnet"
];
packages = with pkgs; [
fd
emacs
vimpc
ashuffle
ardour
giada
carla
surge-XT
atkinson-hyperlegible
rsgain
swayimg
virtualenv
whipper
unzip
mpc-cli
nicotine-plus
texliveFull
ripgrep
matlab
octave
mpv
krita
tree
gimp
rtorrent
wireguard-tools
spotify
nextcloud-client
xournalpp
cardinal
tor-browser
discord
neovim
libreoffice
notify-desktop
texlive.combined.scheme-medium
libsixel
aspell
aspellDicts.en
qalculate-qt
fzf
zathura
wineWowPackages.stable
wineWowPackages.waylandFull
comic-mono
maple-mono
jetbrains-mono
fira-code
mononoki
inter
(nerdfonts.override {fonts = ["FiraCode"];})
gnupg
(nerdfonts.override {fonts = ["FiraCode" "Mononoki" "NerdFontsSymbolsOnly"];})
pandoc
maven
pdftk
git
lua
python3
python311Packages.eyed3
pamixer
networkmanagerapplet
htop
p7zip
cachix
aria
fastfetch
gcc
gcc-arm-embedded-13
gnumake
webcord
];
};
programs.nix-index.enable = true;
# programs.gpg = {
# enable = true;
# };
fonts.fontconfig.enable = true;
news.display = "silent";
imports = [
./programs
./services
./shell
./helix
./wayland
./email.nix
];
xdg = {
enable = true;
mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = ["org.pwmt.zathura-pdf-mupdf.desktop"];
"image/jpg" = ["swayimg.desktop"];
"image/jpeg" = ["swayimg.desktop"];
"image/png" = ["swayimg.desktop"];
"image/gif" = ["swayimg.desktop"];
"image/svg+xml" = ["swayimg.desktop"];
"image/webp" = ["swayimg.desktop"];
"image/heif" = ["swayimg.desktop"];
"image/bmp" = ["swayimg.desktop"];
};
};
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# ------------ GTK ------------
gtk = {
@ -96,4 +129,14 @@
name = "Papirus";
};
};
# xdg.configFile."./" = {
# source = ./.config;
# recursive = true;
# };
xdg.configFile."emacs/init.el".source = ./emacs/init.el;
xdg.configFile."emacs/early-init.el".source = ./emacs/early-init.el;
xdg.configFile."emacs/straight/versions/default.el".source = ./emacs/default.el;
}

View file

@ -0,0 +1,62 @@
{pkgs, ...}: {
xdg.configFile."lf/icons".source = ./icons;
programs.lf = {
enable = true;
commands = {
dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"'';
editor-open = ''$$EDITOR $f'';
mkdir = ''
''${{
printf "Directory Name: "
read DIR
mkdir $DIR
}}
'';
};
keybindings = {
"\\\"" = "";
o = "";
m = "";
mm = "mark-save";
md = "mkdir";
"." = "set hidden!";
"`" = "mark-load";
"\\'" = "mark-load";
"<enter>" = "open";
d = "";
do = "dragon-out";
dd = "cut";
"g~" = "cd";
gh = "cd";
"g/" = "/";
ee = "editor-open";
V = ''$${pkgs.bat}/bin/bat --paging=always "$f"'';
};
settings = {
preview = true;
hidden = true;
drawbox = true;
icons = true;
ignorecase = true;
tabstop = 2;
};
previewer = {
keybinding = "i";
source = pkgs.writeShellScript "pv.sh" ''
#!/bin/sh
case "$1" in
*.tar*) ${pkgs.gnutar}/bin/tar tf "$1";;
*.zip) ${pkgs.unzip}/bin/unzip -l "$1";;
*.rar) ${pkgs.unrar}/bin/unrar l "$1";;
*.7z) ${pkgs.p7zip}/bin/7z l "$1";;
*.pdf) ${pkgs.poppler_utils}/bin/pdftotext "$1" -;;
*) ${pkgs.highlight}/bin/highlight -O ansi "$1" || cat "$1";;
esac
'';
};
};
}

357
users/tacocat/lf/icons Normal file
View file

@ -0,0 +1,357 @@
# vim:ft=conf
# These examples require Nerd Fonts or a compatible font to be used.
# See https://www.nerdfonts.com for more information.
# default values from lf (with matching order)
# ln l # LINK
# or l # ORPHAN
# tw t # STICKY_OTHER_WRITABLE
# ow d # OTHER_WRITABLE
# st t # STICKY
# di d # DIR
# pi p # FIFO
# so s # SOCK
# bd b # BLK
# cd c # CHR
# su u # SETUID
# sg g # SETGID
# ex x # EXEC
# fi - # FILE
# file types (with matching order)
ln  # LINK
or  # ORPHAN
tw t # STICKY_OTHER_WRITABLE
ow  # OTHER_WRITABLE
st t # STICKY
di  # DIR
pi p # FIFO
so s # SOCK
bd b # BLK
cd c # CHR
su u # SETUID
sg g # SETGID
ex  # EXEC
fi  # FILE
# file extensions (vim-devicons)
*.styl 
*.sass 
*.scss 
*.htm 
*.html 
*.slim 
*.haml 
*.ejs 
*.css 
*.less 
*.md 
*.mdx 
*.markdown 
*.rmd 
*.json 
*.webmanifest 
*.js 
*.mjs 
*.jsx 
*.rb 
*.gemspec 
*.rake 
*.php 
*.py 
*.pyc 
*.pyo 
*.pyd 
*.coffee 
*.mustache 
*.hbs 
*.conf 
*.ini 
*.yml 
*.yaml 
*.toml 
*.bat 
*.mk 
*.jpg 
*.jpeg 
*.bmp 
*.png 
*.webp 
*.gif 
*.ico 
*.twig 
*.cpp 
*.c++ 
*.cxx 
*.cc 
*.cp 
*.c 
*.cs 󰌛
*.h 
*.hh 
*.hpp 
*.hxx 
*.hs 
*.lhs 
*.nix 
*.lua 
*.java 
*.sh 
*.fish 
*.bash 
*.zsh 
*.ksh 
*.csh 
*.awk 
*.ps1 
*.ml λ
*.mli λ
*.diff 
*.db 
*.sql 
*.dump 
*.clj 
*.cljc 
*.cljs 
*.edn 
*.scala 
*.go 
*.dart 
*.xul 
*.sln 
*.suo 
*.pl 
*.pm 
*.t 
*.rss 
'*.f#' 
*.fsscript 
*.fsx 
*.fs 
*.fsi 
*.rs 
*.rlib 
*.d 
*.erl 
*.hrl 
*.ex 
*.exs 
*.eex 
*.leex 
*.heex 
*.vim 
*.ai 
*.psd 
*.psb 
*.ts 
*.tsx 
*.jl 
*.pp 
*.vue 
*.elm 
*.swift 
*.xcplayground 
*.tex 󰙩
*.r 󰟔
*.rproj 󰗆
*.sol 󰡪
*.pem 
# file names (vim-devicons) (case-insensitive not supported in lf)
*gruntfile.coffee 
*gruntfile.js 
*gruntfile.ls 
*gulpfile.coffee 
*gulpfile.js 
*gulpfile.ls 
*mix.lock 
*dropbox 
*.ds_store 
*.gitconfig 
*.gitignore 
*.gitattributes 
*.gitlab-ci.yml 
*.bashrc 
*.zshrc 
*.zshenv 
*.zprofile 
*.vimrc 
*.gvimrc 
*_vimrc 
*_gvimrc 
*.bashprofile 
*favicon.ico 
*license 
*node_modules 
*react.jsx 
*procfile 
*dockerfile 
*docker-compose.yml 
*rakefile 
*config.ru 
*gemfile 
*makefile 
*cmakelists.txt 
*robots.txt 󰚩
# file names (case-sensitive adaptations)
*Gruntfile.coffee 
*Gruntfile.js 
*Gruntfile.ls 
*Gulpfile.coffee 
*Gulpfile.js 
*Gulpfile.ls 
*Dropbox 
*.DS_Store 
*LICENSE 
*React.jsx 
*Procfile 
*Dockerfile 
*Docker-compose.yml 
*Rakefile 
*Gemfile 
*Makefile 
*CMakeLists.txt 
# file patterns (vim-devicons) (patterns not supported in lf)
# .*jquery.*\.js$ 
# .*angular.*\.js$ 
# .*backbone.*\.js$ 
# .*require.*\.js$ 
# .*materialize.*\.js$ 
# .*materialize.*\.css$ 
# .*mootools.*\.js$ 
# .*vimrc.* 
# Vagrantfile$ 
# file patterns (file name adaptations)
*jquery.min.js 
*angular.min.js 
*backbone.min.js 
*require.min.js 
*materialize.min.js 
*materialize.min.css 
*mootools.min.js 
*vimrc 
Vagrantfile 
# archives or compressed (extensions from dircolors defaults)
*.tar 
*.tgz 
*.arc 
*.arj 
*.taz 
*.lha 
*.lz4 
*.lzh 
*.lzma 
*.tlz 
*.txz 
*.tzo 
*.t7z 
*.zip 
*.z 
*.dz 
*.gz 
*.lrz 
*.lz 
*.lzo 
*.xz 
*.zst 
*.tzst 
*.bz2 
*.bz 
*.tbz 
*.tbz2 
*.tz 
*.deb 
*.rpm 
*.jar 
*.war 
*.ear 
*.sar 
*.rar 
*.alz 
*.ace 
*.zoo 
*.cpio 
*.7z 
*.rz 
*.cab 
*.wim 
*.swm 
*.dwm 
*.esd 
# image formats (extensions from dircolors defaults)
*.jpg 
*.jpeg 
*.mjpg 
*.mjpeg 
*.gif 
*.bmp 
*.pbm 
*.pgm 
*.ppm 
*.tga 
*.xbm 
*.xpm 
*.tif 
*.tiff 
*.png 
*.svg 
*.svgz 
*.mng 
*.pcx 
*.mov 
*.mpg 
*.mpeg 
*.m2v 
*.mkv 
*.webm 
*.ogm 
*.mp4 
*.m4v 
*.mp4v 
*.vob 
*.qt 
*.nuv 
*.wmv 
*.asf 
*.rm 
*.rmvb 
*.flc 
*.avi 
*.fli 
*.flv 
*.gl 
*.dl 
*.xcf 
*.xwd 
*.yuv 
*.cgm 
*.emf 
*.ogv 
*.ogx 
# audio formats (extensions from dircolors defaults)
*.aac 
*.au 
*.flac 
*.m4a 
*.mid 
*.midi 
*.mka 
*.mp3 
*.mpc 
*.ogg 
*.ra 
*.wav 
*.oga 
*.opus 
*.spx 
*.xspf 
# other formats
*.pdf 

View file

@ -0,0 +1,38 @@
{...}: {
programs.nixvim.plugins.cmp = {
enable = true;
settings = {
sources = [
{
name = "nvim_lsp";
priority = 10;
}
{
name = "treesitter";
priority = 6;
}
{
name = "luasnip";
priority = 8;
}
{
name = "path";
priority = 0;
}
];
snippet.expand = "luasnip";
completion = {
autocomplete = false;
};
mapping = {
"<C-Space>" = "cmp.mapping.complete()";
"<C-e>" = "cmp.mapping.close()";
"<CR>" = "cmp.mapping.confirm({ select = true })";
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<C-p>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
"<C-n>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
};
};
};
}

View file

@ -0,0 +1,123 @@
{pkgs, ...}: {
imports = [
./lsp.nix
./plugins.nix
./cmp.nix
];
programs.nixvim = {
enable = true;
colorschemes.kanagawa.enable = true;
clipboard = {
providers.wl-copy.enable = true;
register = "unnamedplus";
};
extraPackages = with pkgs; [
tectonic
texliveMedium
zathura
];
opts = {
number = true;
relativenumber = true;
tabstop = 2;
shiftwidth = 2;
expandtab = false;
scrolloff = 5;
autoindent = true;
smartindent = true;
copyindent = true;
signcolumn = "yes";
cursorline = true;
showmode = false;
};
extraConfigLuaPre = ''
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
'';
files = {
"ftplugin/nix.lua" = {
options = {
expandtab = true;
shiftwidth = 2;
tabstop = 2;
};
};
"ftplugin/markdown.lua" = {
options = {
spell = true;
};
};
"ftplugin/tex.lua" = {
options = {
spell = true;
};
keymaps = [
{
action = "<cmd>TexlabBuild<CR>";
key = "<C-,>";
}
];
};
};
keymaps = [
{
action = "<cmd>nohl<CR>";
key = "<C-q>";
mode = ["n"];
options = {
desc = "Remove search highlighting";
silent = true;
};
}
{
action = "function() require(\"luasnip\").expand() end";
key = "<C-L>";
mode = ["i"];
lua = true;
options = {
desc = "Luasnip expand";
silent = true;
};
}
{
action = "function() require(\"luasnip\").jump(1) end";
key = "<C-J>";
mode = ["i" "s"];
lua = true;
options = {
desc = "Luasnip jump to next";
silent = true;
};
}
{
action = "function() require(\"luasnip\").jump(-1) end";
key = "<C-K>";
mode = ["i" "s"];
lua = true;
options = {
desc = "Luasnip jump to previous";
silent = true;
};
}
{
action = ''
function()
if require("luasnip").choice_active() then
require("luasnip").change_choice(1)
end
end
'';
key = "<C-E>";
mode = ["i" "s"];
lua = true;
options = {
desc = "Luasnip change choice";
silent = true;
};
}
];
};
}

View file

@ -0,0 +1,60 @@
{...}: {
programs.nixvim.plugins = {
lsp-format = {
enable = true;
};
lsp = {
enable = true;
keymaps.lspBuf = {
K = "hover";
gD = "references";
gd = "definition";
gi = "implementation";
gt = "type_definition";
};
servers = {
nil_ls.enable = true;
lua-ls.enable = true;
bashls.enable = true;
pylsp.enable = true;
html.enable = true;
cssls.enable = true;
texlab = {
enable = true;
extraOptions.settings.texlab = {
build = {
executable = "tectonic";
args = [
"-X"
"compile"
"%f"
"--outdir"
"build/"
"--synctex"
"--keep-logs"
"--keep-intermediates"
];
auxDirectory = "build/";
logDirectory = "build/";
pdfDirectory = "build/";
forwardSearchAfter = true;
onSave = false;
};
forwardSearch = {
executable = "zathura";
args = [
"--synctex-forward"
"%l:1:%f"
"%p"
];
};
chktex = {
onOpenAndSave = true;
onEdit = true;
};
};
};
};
};
};
}

View file

@ -0,0 +1,54 @@
{...}: {
programs.nixvim.plugins = {
telescope = {
enable = true;
keymaps = {
"<leader>g" = {
action = "git_files";
options.desc = "Telescope git files";
};
"<leader>d" = {
action = "diagnostics";
options.desc = "Telescope diagnostics";
};
"<leader>f" = {
action = "fd";
options.desc = "Telescope find files";
};
};
};
comment = {
enable = true;
};
markdown-preview = {
enable = true;
settings.browser = "firefox";
};
lualine = {
enable = true;
sectionSeparators = {
left = "";
right = "";
};
componentSeparators = {
left = "";
right = "";
};
};
luasnip = {
enable = true;
};
friendly-snippets.enable = true;
gitsigns = {
enable = true;
};
treesitter = {
enable = true;
nixvimInjections = true;
indent = true;
};
which-key = {
enable = true;
};
};
}

View file

@ -1,16 +1,16 @@
{
imports = [
./kitty.nix
./git.nix
./taskwarrior.nix
./firefox.nix
./vscode.nix
# ./thunderbird.nix
./fzf.nix
./tiny.nix
./zoxide.nix
./zellij.nix
];
programs.eza = {
enable = true;
enableAliases = true;
git = true;
};

View file

@ -1,8 +1,4 @@
{
pkgs,
theme,
...
}: {
{pkgs, ...}: {
programs.firefox = {
enable = true;
policies = {
@ -44,13 +40,13 @@
profiles = {
"aria" = {
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
vimium
tabcenter-reborn
ublock-origin
bitwarden
canvasblocker
aria2-integration
sponsorblock
xbrowsersync
sidebery
];
settings = {
"browser.aboutConfig.showWarning" = false;
@ -71,10 +67,11 @@
"browser.tabs.firefox-view" = false;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.toolbars.bookmarks.visibility" = "never";
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
};
search = {
force = true;
default = "Catgirl";
default = "Celtic Lite";
engines = {
"Nix Packages" = {
urls = [
@ -99,6 +96,29 @@
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@np"];
};
"Nix Options" = {
urls = [
{
template = "https://search.nixos.org/options";
params = [
{
name = "type";
value = "options";
}
{
name = "channel";
value = "unstable";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@no"];
};
"Celtic Lite" = {
urls = [
{
@ -134,203 +154,17 @@
};
};
userChrome = ''
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
* {
font-family: "Inter" !important;
font-size: 14px !important;
--arrowpanel-background: ${theme.base00} !important;
--arrowpanel-border-color: ${theme.base02} !important;
--autocomplete-popup-highlight-color: ${theme.base02} !important;
--autocomplete-popup-highlight-background: ${theme.base06} !important;
--toolbarbutton-active-background: ${theme.base06} !important;
--lwt-toolbarbutton-icon-fill-attention: var(--button-primary-bgcolor, ${theme.base06}) !important;
--toolbar-field-focus-border-color: ${theme.base06} !important;
}
.toolbar {
background-color: #11171D !important;
}
window,
#main-window,
#toolbar-menubar,
#TabsToolbar,
#PersonalToolbar,
#navigator-toolbox,
#sidebar-box {
background-color: ${theme.base02} !important;
}
.tab-background[selected="true"] {
background-color: ${theme.base00} !important;
}
.tab-background {
background-color: ${theme.base02} !important;
}
.tabbrowser-tab:hover .tab-background {
background-color: ${theme.base09} !important;
}
#urlbar {
background-color: #11171D !important;
border-radius: 10px !important;
}
#nav-bar {
background-color: ${theme.base02} !important;
}
#firefox-view-button {
visibility: collapse;
}
#alltabs-button {
visibility: collapse;
}
#mainPopupSet menupopup,
menupopup:not(.in-menulist) > menuitem,
menupopup:not(.in-menulist) > menu {
border: 0 !important;
border-radius: 0px !important;
padding: 0px 0px 0px 0px !important;
}
/*
*/
#back-button>.toolbarbutton-icon {
transform: scale(.85, .85) !important;
animation: none !important;
border: none !important;
box-shadow: none !important;
}
#back-button:not(:hover),
#back-button:not(:hover) > .toolbarbutton-icon {
background: none !important;
}
#back-button:hover,
#back-button:hover > .toolbarbutton-icon {
border-radius: 2px !important;
}
#whats-new-menu-button,
#pocket-button,
#save-to-pocket-button
#reader-mode-button {
display: none !important;
}
#star-button {
color: ${theme.base06} !important;
}
#save-to-pocket-button {
visibility: hidden !important;
}
#urlbar-input {
background-color: ${theme.base00} !important;
padding-left: 5px !important;
}
#urlbar-results {
background-color: ${theme.base00} !important;
border-radius: 5px !important;
}
#urlbar-results .urlbarView-row:hover{
color: ${theme.base06} !important;
border-radius: 5px !important;
}
.urlbarView-row[selected] .urlbarView-row-inner {
border-radius: 5px !important;
background-color: ${theme.base06} !important;
color: ${theme.base00} !important;
}
#urlbar ::-moz-selection,
.searchbar-textbox ::-moz-selection {
background-color: ${theme.base01} !important;
color: ${theme.base09} !important;
}
#tabbrowser-tabpanels {
background-color: ${theme.base01} !important;
}
urlbar > #urlbar-background {
background-color: ${theme.base00} !important;
}
#urlbar-background {
background-color: ${theme.base00} !important;
color: ${theme.base02} !important;
border: 1px solid ${theme.base06} !important;
}
#urlbar-background:not([focused]) {
background-color: ${theme.base00} !important;
color: ${theme.base02} !important;
}
#urlbar-one-offs-header-label{
display: none;
}
.search-one-offs > .search-panel-one-offs-header::before{
display: block;
content: "Search With:";
padding-inline: var(--urlbarView-item-inline-padding) 18px;
opacity: 0.6;
}
#tabbrowser-tabs {
border-inline-start: none !important;
}
}
'';
userContent = ''
@namespace url("http://www.w3.org/1999/xhtml");
:root {
scrollbar-color: ${theme.base00} ${theme.base02};
}
* {
scrollbar-width: thin;
}
@-moz-document url-prefix("about:") {
:root {
--in-content-page-background: ${theme.base00} !important;
--toolbar-field-focus-border-color: ${theme.base06} !important;
--toolbarbutton-active-background: ${theme.base06} !important;
}
}
@-moz-document url("about:newtab"), url("about:home") {
* {
font-family: "Inter" !important;
}
body {
background-color: ${theme.base00} !important;
}
.logo-and-wordmark {
display: none !important;
}
.SnippetBaseContainer {
display: none !important;
}
.search-handoff-button {
border-radius: 15px !important;
border-width: 4px !important;
border-color: ${theme.base02} !important;
background-size: 0px !important;
background-color: ${theme.base00} !important;
padding-inline-start: 10px !important;
padding-inline-end: 10px !important;
}
.icon-settings {
display: none !important;
}
.fake-textbox {
text-align: center !important;
}
.search-wrapper input {
background-color: ${theme.base09} !important;
border-radius: 0px !important;
background-image: none !important;
background-size: none !important;
text-align: center !important;
font-size: 17px !important;
padding-inline-start: 10px !important;
padding-inline-end: 10px !important;
}
.search-wrapper input:focus {
text-align: left !important;
}
.body-wrapper {
display: none !important;
}
border-inline-start: none !important;
}
'';
};
};
};
}

View file

@ -0,0 +1,6 @@
{
programs.fzf = {
enable = true;
enableFishIntegration = true;
};
}

View file

@ -1,10 +1,12 @@
{
{pkgs, ...}: {
programs.git = {
enable = true;
userEmail = "tacocat@chytrid.org";
package = pkgs.gitAndTools.gitFull;
userEmail = "aria@chytrid.org";
userName = "Aria Nolan";
extraConfig = {
init.defaultbranch = "main";
diff.tool = "nvimdiff";
};
aliases = {
co = "checkout";
@ -12,19 +14,6 @@
pom = "push -u origin main";
cm = "commit -m";
};
delta = {
enable = true;
options = {
decorations = {
commit-decoration-style = "bold yellow box ul";
file-decoration-style = "none";
file-style = "bold yellow ul";
};
features = "decorations";
whitespace-error-style = "22 reverse";
syntax-theme = "ansi";
};
};
};
programs.gitui = {

View file

@ -0,0 +1,24 @@
{...}: {
programs.ncmpcpp = {
enable = true;
bindings = [
{
key = "j";
command = "scroll_down";
}
{
key = "k";
command = "scroll_up";
}
{
key = "J";
command = ["select_item" "scroll_down"];
}
{
key = "K";
command = ["select_item" "scroll_up"];
}
];
mpdMusicDir = "/data/music";
};
}

View file

@ -0,0 +1,13 @@
{pkgs, ...}: {
home.packages = [pkgs.radioboat];
xdg.configFile."radioboat/urls.csv".text = ''
url,"name"
http://cinema.acs.its.nyu.edu:8000/wnyu128.mp3,wnyu
https://ncpr-ice.streamguys1.com/ncpr-256k.aac,ncpr
https://streaming.witr.rit.edu/live-mp3,witr
http://streaming.witr.rit.edu/udg-mp3,witr-udg
https://streaming.live365.com/a45877,wknc-hd1
https://streaming.live365.com/a30009,wknc-hd2
'';
}

View file

@ -1,7 +1,20 @@
{...}: {
{config, ...}: {
age.secrets = {
taskd-ca-cert.file = ../../../secrets/taskd-ca-cert.age;
taskd-aria-cert.file = ../../../secrets/taskd-aria-cert.age;
taskd-aria-key.file = ../../../secrets/taskd-aria-key.age;
};
programs.taskwarrior = {
enable = true;
config = {
taskd = {
server = "aria.cat:53589";
credentials = "myself/aria/e67e2e9f-78af-42c2-9c55-3c59054246c6";
certificate = config.age.secrets.taskd-aria-cert.path;
key = config.age.secrets.taskd-aria-key.path;
ca = config.age.secrets.taskd-ca-cert.path;
};
dateformat = "Y-M-D H:N";
report.list.columns = [
"id"

View file

@ -0,0 +1,32 @@
{...}: {
programs.tiny = {
enable = true;
settings = {
servers = [
{
addr = "irc.libera.chat";
port = 6697;
tls = true;
nicks = ["tacocatgirl"];
realname = "Aria Nolan";
join = [];
}
{
addr = "irc.freenode.net";
port = 6697;
tls = true;
nicks = ["tacocatgirl"];
realname = "Aria Nolan";
join = [];
}
];
defaults = {
nicks = ["tacocatgirl"];
realname = "Aria Nolan";
join = [];
tls = true;
};
};
};
}

View file

@ -0,0 +1,19 @@
{pkgs, ...}: {
programs.tmux = {
enable = true;
escapeTime = 0;
clock24 = true;
mouse = true;
keyMode = "vi";
newSession = true;
shell = "${pkgs.fish}/bin/fish";
sensibleOnTop = true;
terminal = "tmux-256color";
extraConfig = ''
set -g focus-events on
set -g allow-passthrough on
set -g set-clipboard on
set -sa terminal-features ',foot:RGB'
'';
};
}

View file

@ -6,7 +6,6 @@
enableUpdateCheck = false;
extensions = with pkgs.vscode-extensions; [
ritwickdey.liveserver
asvetliakov.vscode-neovim
];
userSettings = {
"extensions.experimental.affinity" = {

View file

@ -0,0 +1,27 @@
{...}: {
programs.zellij = {
enable = true;
enableFishIntegration = true;
settings = {
simplified_ui = true;
default_shell = "fish";
copy_command = "wl-copy";
pane_frames = false;
default_mode = "locked";
theme = "custom";
themes.custom = {
bg = "#44415a";
fg = "#e0def4";
red = "#eb6f92";
green = "#3e8fb0";
blue = "#9ccfd8";
yellow = "#f6c177";
magenta = "#c4a7e7";
orange = "#fe640b";
cyan = "#ea9a97";
black = "#393552";
white = "#e0def4";
};
};
};
}

View file

@ -0,0 +1,6 @@
{...}: {
programs.zoxide = {
enable = true;
enableFishIntegration = true;
};
}

View file

@ -1,9 +1,4 @@
{pkgs, ...}: {
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
services.gammastep = {
enable = true;
provider = "geoclue2";

View file

@ -3,19 +3,17 @@
enable = true;
enableCompletion = true;
enableVteIntegration = true;
profileExtra = ''
ssh-add ~/.ssh/git_personal
ssh-add ~/.ssh/id_ed25519
'';
bashrcExtra = ''
PS1='[\u@\h \W]\$ '
'';
profileExtra = ''
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/git_school
ssh-add ~/.ssh/git_personal
ssh-add ~/.ssh/id_ed25519
'';
sessionVariables = {
_JAVA_AWT_WM_NONREPARENTING = 1;
};
};
}

View file

@ -20,6 +20,7 @@
"$git_status"
"$package"
"$nix_shell"
"$container"
"$cmd_duration"
"$line_break"
"$status"

View file

@ -1,4 +1,4 @@
{pkgs, ...}: {
{...}: {
programs.fish = {
enable = true;
interactiveShellInit = ''
@ -7,16 +7,5 @@
fish_vi_key_bindings
set -g fish_cursor_insert line
'';
plugins = [
{
name = "z";
src = pkgs.fetchFromGitHub {
owner = "jethrokuan";
repo = "z";
rev = "85f863f20f24faf675827fb00f3a4e15c7838d76";
sha256 = "+FUBM7CodtZrYKqU542fQD+ZDGrd2438trKM0tIESs0=";
};
}
];
};
}

View file

@ -18,6 +18,7 @@
grim
slurp
sway-contrib.grimshot
sway-audio-idle-inhibit
];
home.sessionVariables = {

View file

@ -1,11 +1,10 @@
{
programs.foot = {
enable = true;
server.enable = true;
settings = {
main = {
shell = "/usr/bin/env fish";
font = "Mononoki:size=14,FiraCode Nerd Font:size=14";
font = "Mononoki Nerd Font:size=13.5";
};
colors = {
background = "232136";

View file

@ -1,188 +0,0 @@
#!/usr/bin/env bash
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
# documentation.
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
# riverctl spawn "dbus-update-activation-environment SEATD_SOCK DISPLAY WAYLAND _DISPLAY XDG_CURRENT_DESKTOP=river"
riverctl spawn "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP"
riverctl map normal Super+Shift Return spawn 'foot'
riverctl map normal Super D spawn 'rofi -show drun'
# firefox
riverctl map normal Super+Shift F spawn "firefox"
# screenshot utility
riverctl map normal None Print spawn 'IMG=~/Pictures/screenshots/$(date | sed "s/\s/-/g" | sed "s/--/-/g").png&&grim -g "$(slurp)" $IMG && cat $IMG | wl-copy && notify-send "Screenshot has been saved and copied to your clipboard" -a "grim" -u normal -t 2000'
# Super+Q to close the focused view
riverctl map normal Super Q close
# Super+Shift+E to exit river
riverctl map normal Super+Shift E exit
# Super+J and Super+K to focus the next/previous view in the layout stack
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
# view in the layout stack
riverctl map normal Super+Shift J swap next
riverctl map normal Super+Shift K swap previous
# Super+Period and Super+Comma to focus the next/previous output
riverctl map normal Super Period focus-output next
riverctl map normal Super Comma focus-output previous
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
riverctl map normal Super+Shift Period send-to-output next
riverctl map normal Super+Shift Comma send-to-output previous
# Super+Return to bump the focused view to the top of the layout stack
riverctl map normal Super Return zoom
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
# Super+Alt+{H,J,K,L} to move views
riverctl map normal Super+Alt H move left 100
riverctl map normal Super+Alt J move down 100
riverctl map normal Super+Alt K move up 100
riverctl map normal Super+Alt L move right 100
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
riverctl map normal Super+Alt+Control H snap left
riverctl map normal Super+Alt+Control J snap down
riverctl map normal Super+Alt+Control K snap up
riverctl map normal Super+Alt+Control L snap right
# Super+Alt+Shift+{H,J,K,L} to resize views
riverctl map normal Super+Alt+Shift H resize horizontal -100
riverctl map normal Super+Alt+Shift J resize vertical 100
riverctl map normal Super+Alt+Shift K resize vertical -100
riverctl map normal Super+Alt+Shift L resize horizontal 100
# Super + Left Mouse Button to move views
riverctl map-pointer normal Super BTN_LEFT move-view
# Super + Right Mouse Button to resize views
riverctl map-pointer normal Super BTN_RIGHT resize-view
# Super + Middle Mouse Button to toggle float
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
# Super+[1-9] to focus tag [0-8]
riverctl map normal Super $i set-focused-tags $tags
# Super+Shift+[1-9] to tag focused view with tag [0-8]
riverctl map normal Super+Shift $i set-view-tags $tags
# Super+Control+[1-9] to toggle focus of tag [0-8]
riverctl map normal Super+Control $i toggle-focused-tags $tags
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
done
# Super+0 to focus all tags
# Super+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal Super 0 set-focused-tags $all_tags
riverctl map normal Super+Shift 0 set-view-tags $all_tags
# Super+Space to toggle float
riverctl map normal Super Space toggle-float
# Super+F to toggle fullscreen
riverctl map normal Super F toggle-fullscreen
# Super+{Up,Right,Down,Left} to change layout orientation
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# Super+F11 to enter passthrough mode
riverctl map normal Super F11 enter-mode passthrough
# Super+F11 to return to normal mode
riverctl map passthrough Super F11 enter-mode normal
# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked
do
# Eject the optical drive (well if you still have one that is)
riverctl map $mode None XF86Eject spawn 'eject -T'
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl s +5%'
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl s 5%-'
done
# Set background and border color
riverctl background-color 0x002b36
riverctl border-color-focused 0x93a1a1
riverctl border-color-unfocused 0x586e75
riverctl spawn "wbg $HOME/.config/river/background.jpg"
# Set keyboard repeat rate
riverctl set-repeat 50 300
# Make all views with an app-id that starts with "float" and title "foo" start floating.
riverctl rule-add float -app-id 'float*' -title 'foo'
# Make all views with app-id "bar" and any title use client-side decorations
riverctl rule-add csd -app-id "bar"
# Set the default layout generator to be rivertile and start it.
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout rivertile
if [ -n "$(pgrep rivertile)" ]
then
printf 'RIVERCTL: rivertile already running with pid %s\n' "$(pidof rivertile)"
else
rivertile \
-view-padding 6 \
-outer-padding 6 \
-main-count 1 \
-main-ratio 0.5 >/dev/null 2>&1 &
fi
# autostart apps
# riverctl spawn "$HOME/.config/river/process"
riverctl spawn 'dunst'
riverctl spawn 'gammastep-indicator'
riverctl spawn 'nm-applet --indicator'
riverctl spawn 'waybar'
riverctl spawn "swayidle -w \
timeout 600 'swaylock -f -c 14171d' \
before-sleep 'swaylock -f -c 14171d'"

View file

@ -1,16 +0,0 @@
#!/usr/bin/env bash
dunst &
gammastep-indicator &
nm-applet --indicator &
waybar &
# void linux specific setup
# if test -f ~/.config/river/void-setup; then
# exec ~/.config/river/void-setup
# exit
# fi
exec swayidle -w \
timeout 600 'swaylock -f -c 14171d' \
before-sleep 'swaylock -f -c 14171d'

View file

@ -51,6 +51,7 @@ client.unfocused $unfocus $unfocus $unfocus $unfocus
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg ~/.config/sway/background.jpg fill
output DP-1 mode 2560x1440@143.856Hz
bar swaybar_command waybar
#
@ -84,9 +85,11 @@ exec swayidle -w \
middle_emulation enabled
}
input "1:1:AT_Translated_Set_2_keyboard" {
input "type:keyboard" {
repeat_delay 200
repeat_rate 35
xkb_layout us
xkb_options caps:escape
}
#
@ -254,6 +257,9 @@ bindsym $mod+r mode "resize"
# Screenshot
bindsym Print exec grimshot copy area
# Screen Lock
bindsym $mod+Shift+n exec swaylock -c 000000
#
# Player
#

View file

@ -3,6 +3,9 @@ exec blueman-applet
# exec systemctl --user restart wireplumber
exec gammastep-indicator
exec dunst
exec udiskie --no-automount --tray
exec sway-audio-idle-inhibit
exec otd-daemon
#exec swayidle -w \
# timeout 600 'swaylock -f -c 14171d' \
# before-sleep 'swaylock -f -c 14171d'

View file

@ -13,6 +13,7 @@
"sway/window"
];
modules-right = [
"mpd"
"custom/arrow9"
"pulseaudio"
"custom/arrow8"
@ -42,9 +43,9 @@
"network" = {
interval = 5;
format-wifi = " {essid} ({signalStrength}%)";
format-ethernet = " {ifname}";
format-ethernet = "󰈀 {ifname}";
format-disconnected = "No connection";
format-alt = " {ipaddr}/{cidr}";
format-alt = "{ipaddr}/{cidr}";
tooltip = false;
};
"river/mode" = {