Compare commits
162 commits
experiment
...
main
Author | SHA1 | Date | |
---|---|---|---|
Aria Nolan | 05dc8e29b2 | ||
Aria Nolan | a5a189107a | ||
Aria Nolan | eeb3d215d8 | ||
Aria Nolan | 8dc0f5ae42 | ||
Aria Nolan | 32b63c10a5 | ||
Aria Nolan | 7d342f94ee | ||
Aria Nolan | 3196a9713e | ||
Aria Nolan | 58af283418 | ||
Aria Nolan | b4a0681c07 | ||
Aria Nolan | 7203708871 | ||
Aria Nolan | c22db00225 | ||
Aria Nolan | 4a5f3d9b9b | ||
Aria Nolan | fb3ada0c55 | ||
Aria Nolan | 389829472e | ||
Aria Nolan | df585dccad | ||
Aria Nolan | 885a0c05f9 | ||
Aria Nolan | 6fd3f3c54c | ||
Aria Nolan | 804e83a456 | ||
Aria Nolan | 4fb0be475b | ||
Aria Nolan | 4842e15d96 | ||
Aria Nolan | ba9eb822d0 | ||
Aria Nolan | eceff55fca | ||
Aria Nolan | 05f6c1129b | ||
Aria Nolan | e82f59b798 | ||
Aria Nolan | 0853afd06e | ||
Aria Nolan | a46628ace4 | ||
Aria Nolan | f77f518349 | ||
Aria Nolan | 2dcec69655 | ||
Aria Nolan | 28115a7756 | ||
Aria Nolan | ae4bb98ea3 | ||
Aria Nolan | 879ec80912 | ||
Aria Nolan | 8b5a533791 | ||
Aria Nolan | 5534fb4321 | ||
Aria Nolan | 5ff463bab3 | ||
Aria Nolan | 3ae435fcd4 | ||
Aria Nolan | 5fb569e3aa | ||
Aria Nolan | 3fc5f87f03 | ||
Aria Nolan | 6113cb2132 | ||
Aria Nolan | f3b84d39ff | ||
Aria Nolan | 081e95317d | ||
Aria Nolan | 8d436b570e | ||
Aria Nolan | 0a41229092 | ||
Aria Nolan | 02f756385f | ||
Aria Nolan | f28e02e5c9 | ||
Aria Nolan | 95fad15496 | ||
Aria Nolan | 8d94c9220b | ||
Aria Nolan | ceb8312769 | ||
Aria Nolan | c76fcd1ee5 | ||
Aria Nolan | ff948fdd89 | ||
Aria Nolan | cff2d1ea16 | ||
Aria Nolan | 1cfb2b255a | ||
Aria Nolan | 85f9ad7802 | ||
Aria Nolan | 137b64805d | ||
Aria Nolan | 83ec84ae08 | ||
Aria Nolan | c9c41d1d3f | ||
Aria Nolan | 48628c4934 | ||
Aria Nolan | 17636a3009 | ||
Aria Nolan | e45046a3d0 | ||
Aria Nolan | 03847beac3 | ||
Aria Nolan | c24e6e7ff7 | ||
Aria Nolan | 8eee1584fe | ||
Aria Nolan | 2849e3683e | ||
Aria Nolan | eb24fc2273 | ||
Aria Nolan | 353d652824 | ||
Aria Nolan | abfd7c1dc8 | ||
Aria Nolan | 2d6cf08f2b | ||
Aria Nolan | f0c0e37e57 | ||
Aria Nolan | b6b9232ff5 | ||
Aria Nolan | bfac35ebfa | ||
Aria Nolan | d2a5bb9929 | ||
Aria Nolan | 1dbcc5c062 | ||
Aria Nolan | 1e3fdcec05 | ||
Aria Nolan | 2f76f79c9f | ||
Aria Nolan | 60a72f467d | ||
Aria Nolan | 6fc1817bba | ||
Aria Nolan | 78ecf40dfd | ||
Aria Nolan | c1162ef0f6 | ||
Aria Nolan | a1388075a2 | ||
Aria Nolan | 13b11cbed5 | ||
Aria Nolan | e99934d8b3 | ||
Aria Nolan | 51a9650171 | ||
Aria Nolan | 731e291954 | ||
Aria Nolan | c5202f98cc | ||
Aria Nolan | ce8ea0c860 | ||
Aria Nolan | 334e04848e | ||
Aria Nolan | 7edf0a82a1 | ||
Aria Nolan | 44d2091021 | ||
Aria Nolan | bc222b8283 | ||
Aria Nolan | c20aab9a14 | ||
Aria Nolan | f0ae1cf6c0 | ||
Aria Nolan | b452f0c1e9 | ||
Aria Nolan | d81628c136 | ||
Aria Nolan | 460b3f0625 | ||
Aria Nolan | cd0acc1147 | ||
Aria Nolan | 642c0784ab | ||
Aria Nolan | fc9b3a020c | ||
Aria Nolan | 810acd92b0 | ||
Aria Nolan | 419b00792a | ||
Aria Nolan | 08047fdfc7 | ||
Aria Nolan | 527a5c58bb | ||
Aria Nolan | a62dae1c26 | ||
Aria Nolan | f568db4441 | ||
Aria Nolan | e3f6e27fcf | ||
Aria Nolan | d831d88b6a | ||
Aria Nolan | a837266f6c | ||
Aria Nolan | a43d37b3f4 | ||
Aria Nolan | 4e3e13363d | ||
Aria Nolan | 2f27ba530b | ||
Aria Nolan | ced394fe30 | ||
Aria Nolan | c0c5b58949 | ||
Aria Nolan | 3a26f94254 | ||
Aria Nolan | e560e73a92 | ||
Aria Nolan | 30a0a86078 | ||
Aria Nolan | c0d5473564 | ||
Aria Nolan | e32e56c1ab | ||
Aria Nolan | 063e058ebc | ||
Aria Nolan | d9fbf9a69f | ||
Aria Nolan | a017dcd253 | ||
Aria Nolan | 3988d465f5 | ||
Aria Nolan | 5ebfbaaf76 | ||
Aria Nolan | 6d05566699 | ||
Aria Nolan | 5dd2e67f15 | ||
Aria Nolan | 6db5aa3dbb | ||
Aria Nolan | 1938932955 | ||
Aria Nolan | 92b21a4dcb | ||
Aria Nolan | d7d4160d21 | ||
Aria Nolan | ac2fc1b8c2 | ||
Aria Nolan | cf286d3ed7 | ||
Aria Nolan | 0c0af29dd3 | ||
Aria Nolan | ea943135ff | ||
Aria Nolan | be43caebe2 | ||
Aria Nolan | 6b46acf17a | ||
Aria Nolan | ad9340bf41 | ||
Aria Nolan | 6777dd1fbe | ||
Aria Nolan | 3240f76822 | ||
Aria Nolan | 0f51722cc3 | ||
Aria Nolan | d5b84593f9 | ||
Aria Nolan | 7f696d31c2 | ||
Aria Nolan | 83cc1f0abe | ||
Aria Nolan | 086a29746c | ||
Aria Nolan | 1262f8853c | ||
Aria Nolan | c2c1491088 | ||
Aria Nolan | 73daeb7edd | ||
Aria Nolan | d3915360e9 | ||
Aria Nolan | be9ae24e2c | ||
Aria Nolan | db0efe6f85 | ||
Aria Nolan | 9538b7e11f | ||
Aria Nolan | 18d5a49e6e | ||
Aria Nolan | 8ac857faf4 | ||
Aria Nolan | 6b62637d8f | ||
Aria Nolan | 4a70bad579 | ||
Aria Nolan | df4d47ebca | ||
Aria Nolan | cb266bcfa4 | ||
Aria Nolan | 8aa3ad1a61 | ||
Aria Nolan | e15a806e1d | ||
Aria Nolan | 2293744253 | ||
Aria Nolan | 5ffd2cdeeb | ||
Aria Nolan | 0e10b72290 | ||
Aria Nolan | a38427d539 | ||
Aria Nolan | 4b58cbe687 | ||
Aria Nolan | e2637dcb5c | ||
Aria Nolan | cc354afe69 |
6
README.md
Normal file
6
README.md
Normal 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
|
402
flake.lock
402
flake.lock
|
@ -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=",
|
||||
|
|
65
flake.nix
65
flake.nix
|
@ -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;
|
||||
|
|
|
@ -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"];
|
||||
}
|
39
hosts/bicep/configuration.nix
Normal file
39
hosts/bicep/configuration.nix
Normal 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?
|
||||
}
|
49
hosts/bicep/hardware-configuration.nix
Normal file
49
hosts/bicep/hardware-configuration.nix
Normal 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;
|
||||
}
|
75
hosts/jwst/configuration.nix
Normal file
75
hosts/jwst/configuration.nix
Normal 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"];
|
||||
}
|
|
@ -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
70
modules/mullvad.nix
Normal 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
229
modules/nixos-common.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
let
|
||||
tokyonight = import ./tokyonight.nix;
|
||||
in
|
||||
tokyonight
|
|
@ -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
9
secrets/mullvad.age
Normal 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ÂÊ!˜›³›í“>ÏDT¡‚BÖëìŽxI—ÕËûÒ³&‚¦MÚ
|
13
secrets/secrets.nix
Normal file
13
secrets/secrets.nix
Normal 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
BIN
secrets/taskd-aria-cert.age
Normal file
Binary file not shown.
BIN
secrets/taskd-aria-key.age
Normal file
BIN
secrets/taskd-aria-key.age
Normal file
Binary file not shown.
BIN
secrets/taskd-ca-cert.age
Normal file
BIN
secrets/taskd-ca-cert.age
Normal file
Binary file not shown.
1
users/tacocat/.config/emacs/early-init.el
Normal file
1
users/tacocat/.config/emacs/early-init.el
Normal file
|
@ -0,0 +1 @@
|
|||
(setq package-enable-at-startup nil)
|
118
users/tacocat/.config/emacs/init.el
Normal file
118
users/tacocat/.config/emacs/init.el
Normal 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"))
|
||||
|
39
users/tacocat/emacs/default.el
Normal file
39
users/tacocat/emacs/default.el
Normal 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
|
1
users/tacocat/emacs/early-init.el
Normal file
1
users/tacocat/emacs/early-init.el
Normal file
|
@ -0,0 +1 @@
|
|||
(setq package-enable-at-startup nil)
|
437
users/tacocat/emacs/init.el
Normal file
437
users/tacocat/emacs/init.el
Normal 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"))
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{...}: {
|
||||
accounts.email.accounts = {
|
||||
accounts.email.accounts = {
|
||||
"aria" = {
|
||||
address = "aria@chytrid.org";
|
||||
userName = "aria@chytrid.org";
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
62
users/tacocat/lf/default.nix
Normal file
62
users/tacocat/lf/default.nix
Normal 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
357
users/tacocat/lf/icons
Normal 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
|
38
users/tacocat/neovim/cmp.nix
Normal file
38
users/tacocat/neovim/cmp.nix
Normal 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'})";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
123
users/tacocat/neovim/default.nix
Normal file
123
users/tacocat/neovim/default.nix
Normal 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;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
60
users/tacocat/neovim/lsp.nix
Normal file
60
users/tacocat/neovim/lsp.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
54
users/tacocat/neovim/plugins.nix
Normal file
54
users/tacocat/neovim/plugins.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
6
users/tacocat/programs/fzf.nix
Normal file
6
users/tacocat/programs/fzf.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
}
|
|
@ -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 = {
|
||||
|
|
24
users/tacocat/programs/ncmpcpp.nix
Normal file
24
users/tacocat/programs/ncmpcpp.nix
Normal 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";
|
||||
};
|
||||
}
|
13
users/tacocat/programs/radioboat.nix
Normal file
13
users/tacocat/programs/radioboat.nix
Normal 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
|
||||
'';
|
||||
}
|
|
@ -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"
|
||||
|
|
32
users/tacocat/programs/tiny.nix
Normal file
32
users/tacocat/programs/tiny.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
19
users/tacocat/programs/tmux.nix
Normal file
19
users/tacocat/programs/tmux.nix
Normal 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'
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -6,7 +6,6 @@
|
|||
enableUpdateCheck = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
ritwickdey.liveserver
|
||||
asvetliakov.vscode-neovim
|
||||
];
|
||||
userSettings = {
|
||||
"extensions.experimental.affinity" = {
|
||||
|
|
27
users/tacocat/programs/zellij.nix
Normal file
27
users/tacocat/programs/zellij.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
users/tacocat/programs/zoxide.nix
Normal file
6
users/tacocat/programs/zoxide.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{...}: {
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
}
|
|
@ -1,9 +1,4 @@
|
|||
{pkgs, ...}: {
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
|
||||
services.gammastep = {
|
||||
enable = true;
|
||||
provider = "geoclue2";
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
"$git_status"
|
||||
"$package"
|
||||
"$nix_shell"
|
||||
"$container"
|
||||
"$cmd_duration"
|
||||
"$line_break"
|
||||
"$status"
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
grim
|
||||
slurp
|
||||
sway-contrib.grimshot
|
||||
sway-audio-idle-inhibit
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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'"
|
|
@ -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'
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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" = {
|
||||
|
|
Loading…
Reference in a new issue