Compare commits
431 commits
0fb2ed977e
...
63a58f3bfb
| Author | SHA1 | Date | |
|---|---|---|---|
| 63a58f3bfb | |||
| ad97f6d007 | |||
| 8c44cc9ab8 | |||
| 23265d9122 | |||
| 0b43019968 | |||
| 9651ab0966 | |||
| 9828579eb9 | |||
| 9e6bbc2d64 | |||
| 76a4ece3a9 | |||
| f85ecf2d9b | |||
| 21118b73d4 | |||
| cf8a1e90e3 | |||
| db052a1171 | |||
| cea609adf6 | |||
| 15f5a81ef6 | |||
| 298935eb2f | |||
| 82af30ef08 | |||
| 19c3c0d835 | |||
| 66ec807dc6 | |||
| 5d87223970 | |||
| d618406516 | |||
| 03bb627770 | |||
| 112e340361 | |||
| 1b275e1a8a | |||
| 971f905813 | |||
| 151570ccca | |||
| 98d39717e2 | |||
| a67a54bda2 | |||
| 9751fdb888 | |||
| 24407448d4 | |||
| c1e2114c57 | |||
| 97bcc5f34e | |||
| f14f5c7f8a | |||
| 5b545a28f1 | |||
| 1dc65a37e7 | |||
| a997d36964 | |||
| 0c5836bc56 | |||
| 77839ab2ef | |||
| 8a8e4f93a5 | |||
| 07d8f5a03f | |||
| a9ba93f834 | |||
| d2a8894eb2 | |||
| 22f97b4ac7 | |||
| 921d604ebe | |||
| e3243ebe80 | |||
| 4b6f62b25a | |||
| c5be292dfc | |||
| bfda64288e | |||
| 89bc60609f | |||
| 2eb2a83dca | |||
| 946eab9ec0 | |||
| ec1c94676a | |||
| 29b47d7f84 | |||
| 135cef2536 | |||
| ee1139713c | |||
| 058096079e | |||
| c40090d176 | |||
| 1b6a48d6c2 | |||
| e4bc0444bf | |||
| c69aaa7adb | |||
| 26ee59ef6e | |||
| 6f5ac4e55f | |||
| 67936af4c7 | |||
| e82ae4a219 | |||
| a0473a5c6c | |||
| a28295da27 | |||
| bd55ecc016 | |||
| 1dd1dbb917 | |||
| 439a6bc930 | |||
| e5bf5a3ba1 | |||
| a1cab7f606 | |||
| 0152907536 | |||
| 08f7c2bd79 | |||
| b8c649d5bf | |||
| 979814e9de | |||
| 215eb4c91a | |||
| 3510264186 | |||
| ec965800e4 | |||
| b1ade72383 | |||
| c823edf584 | |||
| 950cf4dd05 | |||
| f825d047b5 | |||
| d783b5f5ee | |||
| 8e6be43817 | |||
| 1f876d3e21 | |||
| 860c13ab1f | |||
| 7791ad0907 | |||
| ca98b8367c | |||
| 62ddec5c23 | |||
| 418494004b | |||
| 53569f17a6 | |||
| d48d5c45e0 | |||
| 36aa641ec0 | |||
| 2583cc6c12 | |||
| 262dc48425 | |||
| c1efc4316d | |||
| 4ef1b08f4e | |||
| 274d143031 | |||
| dfb3c353ec | |||
| 37e88c2707 | |||
| 1841ff391d | |||
| 458ea144c4 | |||
| abec0dd226 | |||
| b2758839e8 | |||
| 6fc81e45e9 | |||
| 9156a8211d | |||
| 5ae2eacd49 | |||
| dc4221fc17 | |||
| ca618b53cc | |||
| 88c00bb83d | |||
| 0dc8ac4433 | |||
| edeb67238b | |||
| 105bcbd53a | |||
| 84f1186b6c | |||
| e43570fe5b | |||
| 852696409a | |||
| d3a953247c | |||
| 337d7309c6 | |||
| 1237ef4174 | |||
| 8f5be69a4e | |||
| f474c033d5 | |||
| 80b4c9ffcd | |||
| 374886a63f | |||
| 40a841031f | |||
| b6d58a274a | |||
| 9c4d853037 | |||
| 2cbcbb7b3a | |||
| 533e3b9a9f | |||
| 1540483955 | |||
| f08787625b | |||
| c99b5b2532 | |||
| 9f2ed2ae5a | |||
| 2cf14c92d3 | |||
| debf061dd2 | |||
| 9c50691ede | |||
| 2996481327 | |||
| e65b3ed1fc | |||
| 5cae5632d3 | |||
| b7b6705391 | |||
| ead8101b8d | |||
| c75a307c58 | |||
| f4f1aad1c0 | |||
| 322fbc970b | |||
| 92e5fbe7df | |||
| 747b344b76 | |||
| dec5dabf02 | |||
| b2d2ff1798 | |||
| c5a375d165 | |||
| cb5eb68d35 | |||
| 19120bca29 | |||
| 35c547a090 | |||
| ad1cfbd6f0 | |||
| baa853477d | |||
| 3ac85b8762 | |||
| c74acda957 | |||
| 98c90d77c5 | |||
| b38658405a | |||
| da3c29bbaf | |||
| 8b61af1ac3 | |||
| e8a41187e7 | |||
| 83da7ba9c8 | |||
| f2168378fc | |||
| e39fef275c | |||
| fe49e47026 | |||
| 6a5c4a627a | |||
| 7f0cd6612e | |||
| 2ffbc13513 | |||
| 60050113bc | |||
| 6a1a35a384 | |||
| e9d96138d5 | |||
| ae230b5df7 | |||
| 138d4d2bd9 | |||
| ab8a5daefe | |||
| 7b42368e2f | |||
| 46bd23ff07 | |||
| 62de2772a4 | |||
| 8475d92314 | |||
| 07552f3070 | |||
| 5b66145be3 | |||
| 67eb7bdd4b | |||
| 6d2ac0c473 | |||
| 46df8b5b5b | |||
| cf1aeaf088 | |||
| a09cef76c5 | |||
| 0547ebc33c | |||
| 8e81d148bd | |||
| b10d936c0a | |||
| eec65dc6b3 | |||
| 09f763bc16 | |||
| 79f08ea5a1 | |||
| 38f3ac0ce5 | |||
| 898523d079 | |||
| cbba752b54 | |||
| 20db71996c | |||
| b0029448c6 | |||
| 3aab65d9ea | |||
| b6279108e0 | |||
| 0f3c5d1d63 | |||
| 1f40ac4a9f | |||
| 2b64a00dc9 | |||
| 1aa3385e13 | |||
| a059828a58 | |||
| 96e1a54638 | |||
| f24cf2e16d | |||
| cedac6bbf4 | |||
| 129d4b3a5a | |||
| c1eab0edee | |||
| 4a38757db9 | |||
| 8d344b5d51 | |||
| 8a6af0e5b7 | |||
| 4f73945e28 | |||
| 6529bea6bb | |||
| e67b055a7b | |||
| fbd3b70d61 | |||
| f91286d13b | |||
| 90dcf3a164 | |||
| a713913eef | |||
| 9b7bab8e83 | |||
| 0d2b9c9699 | |||
| 6f00036b79 | |||
| 52197a4f96 | |||
| fb4047b2b3 | |||
| 445cb43cb4 | |||
| 10727f9eea | |||
| 44c11fc431 | |||
| e94bdef690 | |||
| 483c5d23e0 | |||
| 8ed69de4be | |||
| f240730c4f | |||
| 93dfe04114 | |||
| 1e2872c5c7 | |||
| 9ed2dcefde | |||
| 0d820cc2f4 | |||
| ace266b02c | |||
| 6b7510cfd9 | |||
| 58760280be | |||
| 4de7886950 | |||
| d04de7d213 | |||
| b5216a6a50 | |||
| 442eef0482 | |||
| 997f208d30 | |||
| 326f9d039a | |||
| abaa7119e7 | |||
| c6735f3912 | |||
| 3438290e32 | |||
| 82f49f1389 | |||
| 5918a0b9e6 | |||
| a7c542784c | |||
| 280829b54f | |||
| 5ffe2653c0 | |||
| 5592a120a4 | |||
| bcd9a31bb8 | |||
| 966934a8bc | |||
| 88e4d72366 | |||
| 16d68022eb | |||
| 0de9966127 | |||
| 452399ee4c | |||
| 6a6f3aed63 | |||
| 04de570926 | |||
| 1644e95243 | |||
| abb78d63e2 | |||
| 4943df69ef | |||
| f11cdb3675 | |||
| dc90e14e60 | |||
| b895265537 | |||
| fc5cb1a47d | |||
| a15f7ec270 | |||
| 105e0fbfd0 | |||
| b73f6af5e0 | |||
| c2362795d8 | |||
| 468eaa9ed4 | |||
| eb94fca939 | |||
| 9ab49e06f9 | |||
| 7c61d6dffc | |||
| 64331981d0 | |||
| 6a9ac77b0c | |||
| d37c767a2f | |||
| 10a7111f1c | |||
| 7ea10f7823 | |||
| c08c8c79d3 | |||
| 82a0c65901 | |||
| 5af0230c58 | |||
| 442d267ca2 | |||
| b90da603b1 | |||
| e0b66e89f9 | |||
| 212f280d92 | |||
| cc82d7575f | |||
| a60287f8cf | |||
| 201fabbc14 | |||
| 89056e3d5d | |||
| ccab4d0952 | |||
| 9e89b4dd36 | |||
| 1cba7b609d | |||
| 811a9f44c5 | |||
| f6c476a07f | |||
| 0745e450b9 | |||
| 48beb9f1fe | |||
| 6162f4f4d5 | |||
| 8d2cf7f2c0 | |||
| df79f36c87 | |||
| 929c8ea9b0 | |||
| 2dedb41a47 | |||
| 7ebbb10568 | |||
| 5df0574f41 | |||
| c18054cad7 | |||
| f9db06a6d4 | |||
| b735eb4b98 | |||
| 6a22a80d42 | |||
| 06b760e3ee | |||
| e43cdbfa65 | |||
| 7e0cb867de | |||
| a4ede5f6f4 | |||
| 95c688766f | |||
| 3e6b9f7161 | |||
| 6efe2c12ba | |||
| 6b51b4e2ab | |||
| 10a3e684c8 | |||
| 8f120e2129 | |||
| f729f6a098 | |||
| 8a4fdf6a56 | |||
| d97da124ee | |||
| 96aa934bec | |||
| 4b5a19a8fa | |||
| 06c64c1a78 | |||
| 15d0e6bb38 | |||
| 607aa5351c | |||
| 61fa35093c | |||
| 4a01a50532 | |||
| 41e1ad3265 | |||
| 10b4e6ce2d | |||
| c0ef5c9275 | |||
| 0ff8366105 | |||
| d365aba3c0 | |||
| b16b6a534b | |||
| 070df03b7e | |||
| 0108b06a02 | |||
| 56e158f5c5 | |||
| 4a8981c7b4 | |||
| 07eca729f5 | |||
| b24d299f70 | |||
| f06e99d95b | |||
| 3fb758028c | |||
| 276cc7e5f2 | |||
| b2dc051e6a | |||
| 9749f0aa28 | |||
| dc27b59912 | |||
| 7a3e64f814 | |||
| f13a6fb023 | |||
| 30247ce3a0 | |||
| 08f4175412 | |||
| 6140e1c8f9 | |||
| 5d3160fb0d | |||
| 0f33dbd5c2 | |||
| f3207468f9 | |||
| b41fd9e48e | |||
| c1ffe09631 | |||
| 8591fb8b35 | |||
| 22139bd69f | |||
| 742b4c39a2 | |||
| 97cc08d199 | |||
| a4e742bf55 | |||
| 84fea2f677 | |||
| ef882a5267 | |||
| 6a47703c08 | |||
| d423a03663 | |||
| 40d1b39837 | |||
| ed15e62e1d | |||
| 6bef924513 | |||
| 7f0a889ccd | |||
| 380933e69b | |||
| a3afafd9e0 | |||
| 4d25609b26 | |||
| 56c0c28b02 | |||
| b9b47fffd6 | |||
| f9cdff8c13 | |||
| eb668525f8 | |||
| 6539471186 | |||
| 5d38d94da6 | |||
| 7e361aff9d | |||
| c5e5bee206 | |||
| b2a199c9a0 | |||
| a0dde6f274 | |||
| 3c79a373e4 | |||
| 08f31c088b | |||
| 8b07ff5bbe | |||
| d6c2948135 | |||
| c89dec2a38 | |||
| 521522e4e9 | |||
| c9969775da | |||
| 0bb2be6b87 | |||
| 7f17069998 | |||
| 5e3bc5a8c9 | |||
| b0aee235cd | |||
| 9d9dba2cc2 | |||
| cb97b0dbde | |||
| f4c4a485d6 | |||
| d6eceea08a | |||
| 9e0930aca4 | |||
| 8c03bff1cf | |||
| 0b74332e9c | |||
| a5aaf57e63 | |||
| 7948dc284b | |||
| 183f3b48c8 | |||
| f54cee8f70 | |||
| 5ecef0d789 | |||
| df44786c9c | |||
| 03dac604e9 | |||
| b41f0890b8 | |||
| 473be47b29 | |||
| 05cf04a11f | |||
| e227ad76b2 | |||
| 3f13b3f03f | |||
| 16f98f144e | |||
| cc029f7933 | |||
| 02412f2578 | |||
| 1655afcedf | |||
| e2ec4d3032 | |||
| 58b22b7354 | |||
| e2091e9e2e | |||
| 5cb67cf040 | |||
| b33938e825 | |||
| 309c344a34 | |||
| 13f20a28eb | |||
| dca6a9018b | |||
| 629ec539c9 | |||
| a5c57333cf | |||
| 136bd342ff | |||
| 10a3055136 | |||
| e4f8214cb2 | |||
| b8b64bed8e | |||
| 9546c00124 |
233 changed files with 3680 additions and 1890 deletions
1
.envrc
1
.envrc
|
|
@ -1,3 +1,4 @@
|
||||||
|
# shellcheck shell=bash
|
||||||
if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then
|
if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then
|
||||||
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
|
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,17 @@ steps:
|
||||||
commands:
|
commands:
|
||||||
- nix flake check
|
- nix flake check
|
||||||
|
|
||||||
- name: notifiy
|
- name: notify
|
||||||
image: bash
|
image: bash
|
||||||
secrets:
|
environment:
|
||||||
- source: matrix_homeserver
|
ADDRESS:
|
||||||
target: address
|
from_secret: matrix_homeserver
|
||||||
- source: matrix_roomid
|
ROOM:
|
||||||
target: room
|
from_secret: matrix_roomid
|
||||||
- source: matrix_username
|
USER:
|
||||||
target: user
|
from_secret: matrix_username
|
||||||
- source: matrix_password
|
PASS:
|
||||||
target: pass
|
from_secret: matrix_password
|
||||||
commands:
|
commands:
|
||||||
- nix run '.#matrix-notifier'
|
- nix run '.#matrix-notifier'
|
||||||
when:
|
when:
|
||||||
|
|
|
||||||
138
flake.lock
generated
138
flake.lock
generated
|
|
@ -14,11 +14,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703433843,
|
"lastModified": 1750173260,
|
||||||
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
|
"narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
|
"rev": "531beac616433bac6f9e2a19feb8e99a22a66baf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -36,11 +36,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700795494,
|
"lastModified": 1744478979,
|
||||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
"narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
"rev": "43975d782b418ebf4969e9ccba82466728c2851b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -53,11 +53,11 @@
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -73,11 +73,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704152458,
|
"lastModified": 1751413152,
|
||||||
"narHash": "sha256-DS+dGw7SKygIWf9w4eNBUZsK+4Ug27NwEWmn2tnbycg=",
|
"narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "88a2cd8166694ba0b6cb374700799cec53aef527",
|
"rev": "77826244401ea9de6e3bac47c2db46005e1f30b5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -94,11 +94,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -108,19 +108,42 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gitignore": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": "gitignore",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"pre-commit-hooks",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1660459072,
|
"lastModified": 1750779888,
|
||||||
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "gitignore.nix",
|
"repo": "gitignore.nix",
|
||||||
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -136,11 +159,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704276313,
|
"lastModified": 1751429452,
|
||||||
"narHash": "sha256-4eD4RaAKHLj0ztw5pQcNFs3hGpxrsYb0e9Qir+Ute+w=",
|
"narHash": "sha256-4s5vRtaqdNhVBnbOWOzBNKrRa0ShQTLoEPjJp3joeNI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "4d8f90205c6c90be2e81d94d0e5eedf71c1ba34e",
|
"rev": "df12269039dcf752600b1bcc176bacf2786ec384",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -152,11 +175,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703961334,
|
"lastModified": 1751271578,
|
||||||
"narHash": "sha256-M1mV/Cq+pgjk0rt6VxoyyD+O8cOUiai8t9Q6Yyq4noY=",
|
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b0d36bd0a420ecee3bc916c91886caca87c894e9",
|
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -167,47 +190,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1704289500,
|
|
||||||
"narHash": "sha256-SMoojjdEMgf6GtPh5vzofdeev4nyM+vBi2J6Z/Sufco=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "NUR",
|
|
||||||
"rev": "a18213c74e43dd6e941c41d77382377938c77caf",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "NUR",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-parts": [
|
||||||
"flake-utils": [
|
"flake-parts"
|
||||||
"futils"
|
|
||||||
],
|
],
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": [
|
"treefmt-nix": "treefmt-nix"
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703939133,
|
"lastModified": 1741294988,
|
||||||
"narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=",
|
"narHash": "sha256-3408u6q615kVTb23WtDriHRmCBBpwX7iau6rvfipcu4=",
|
||||||
"owner": "cachix",
|
"owner": "nix-community",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "NUR",
|
||||||
"rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38",
|
"rev": "b30c245e2c44c7352a27485bfd5bc483df660f0e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "cachix",
|
"owner": "nix-community",
|
||||||
"ref": "master",
|
"ref": "master",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "NUR",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -216,10 +219,10 @@
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"futils": "futils",
|
"futils": "futils",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -238,6 +241,27 @@
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733222881,
|
||||||
|
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
10
flake.nix
10
flake.nix
|
|
@ -55,17 +55,19 @@
|
||||||
owner = "nix-community";
|
owner = "nix-community";
|
||||||
repo = "NUR";
|
repo = "NUR";
|
||||||
ref = "master";
|
ref = "master";
|
||||||
|
inputs = {
|
||||||
|
flake-parts.follows = "flake-parts";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pre-commit-hooks = {
|
git-hooks = {
|
||||||
type = "github";
|
type = "github";
|
||||||
owner = "cachix";
|
owner = "cachix";
|
||||||
repo = "pre-commit-hooks.nix";
|
repo = "git-hooks.nix";
|
||||||
ref = "master";
|
ref = "master";
|
||||||
inputs = {
|
inputs = {
|
||||||
flake-utils.follows = "futils";
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
nixpkgs-stable.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ inputs, ... }:
|
{ inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.pre-commit-hooks.flakeModule
|
inputs.git-hooks.flakeModule
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem = { ... }: {
|
perSystem = { ... }: {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
{ flake-parts
|
{ flake-parts
|
||||||
, futils
|
, systems
|
||||||
, ...
|
, ...
|
||||||
} @ inputs:
|
} @ inputs:
|
||||||
let
|
let
|
||||||
mySystems = futils.lib.defaultSystems;
|
mySystems = import systems;
|
||||||
in
|
in
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
systems = mySystems;
|
systems = mySystems;
|
||||||
|
|
@ -13,6 +13,7 @@ flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
./checks.nix
|
./checks.nix
|
||||||
./dev-shells.nix
|
./dev-shells.nix
|
||||||
./home-manager.nix
|
./home-manager.nix
|
||||||
|
./hosts.nix
|
||||||
./lib.nix
|
./lib.nix
|
||||||
./nixos.nix
|
./nixos.nix
|
||||||
./overlays.nix
|
./overlays.nix
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
name = "NixOS-config";
|
name = "NixOS-config";
|
||||||
|
|
||||||
nativeBuildInputs = with pkgs; [
|
nativeBuildInputs = with pkgs; [
|
||||||
gitAndTools.pre-commit
|
|
||||||
nixpkgs-fmt
|
nixpkgs-fmt
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,15 @@
|
||||||
{ self, inputs, lib, ... }:
|
{ self, config, inputs, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (config) hosts;
|
||||||
|
|
||||||
defaultModules = [
|
defaultModules = [
|
||||||
# Include generic settings
|
# Include generic settings
|
||||||
"${self}/modules/home"
|
"${self}/modules/home"
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
|
||||||
|
inputs.nur.overlays.default
|
||||||
|
];
|
||||||
|
}
|
||||||
{
|
{
|
||||||
# Basic user information defaults
|
# Basic user information defaults
|
||||||
home.username = lib.mkDefault "ambroisie";
|
home.username = lib.mkDefault "ambroisie";
|
||||||
|
|
@ -14,24 +21,17 @@ let
|
||||||
# Enable home-manager
|
# Enable home-manager
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
# Import common modules
|
||||||
|
"${self}/modules/common"
|
||||||
];
|
];
|
||||||
|
|
||||||
mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration {
|
mkHomeCommon = mainModules: system: inputs.home-manager.lib.homeManagerConfiguration {
|
||||||
# Work-around for home-manager
|
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||||
# * not letting me set `lib` as an extraSpecialArgs
|
|
||||||
# * not respecting `nixpkgs.overlays` [1]
|
|
||||||
# [1]: https://github.com/nix-community/home-manager/issues/2954
|
|
||||||
pkgs = import inputs.nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
|
|
||||||
overlays = (lib.attrValues self.overlays) ++ [
|
modules = defaultModules ++ mainModules;
|
||||||
inputs.nur.overlay
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = defaultModules ++ [
|
# Use my extended lib in NixOS configuration
|
||||||
"${self}/hosts/homes/${name}"
|
inherit (self) lib;
|
||||||
];
|
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
# Inject inputs to use them in global registry
|
# Inject inputs to use them in global registry
|
||||||
|
|
@ -39,24 +39,41 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
homes = {
|
mkHome = name: mkHomeCommon [ "${self}/hosts/homes/${name}" ];
|
||||||
|
|
||||||
|
mkNixosHome = name: mkHomeCommon [
|
||||||
|
"${self}/hosts/nixos/${name}/home.nix"
|
||||||
|
"${self}/hosts/nixos/${name}/profiles.nix"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
hosts.homes = {
|
||||||
"ambroisie@bazin" = "x86_64-linux";
|
"ambroisie@bazin" = "x86_64-linux";
|
||||||
"ambroisie@mousqueton" = "x86_64-linux";
|
"ambroisie@mousqueton" = "x86_64-linux";
|
||||||
};
|
};
|
||||||
in
|
|
||||||
{
|
|
||||||
perSystem = { system, ... }: {
|
perSystem = { system, ... }: {
|
||||||
# Work-around for https://github.com/nix-community/home-manager/issues/3075
|
# Work-around for https://github.com/nix-community/home-manager/issues/3075
|
||||||
legacyPackages = {
|
legacyPackages = {
|
||||||
homeConfigurations =
|
homeConfigurations =
|
||||||
let
|
let
|
||||||
filteredHomes = lib.filterAttrs (_: v: v == system) homes;
|
filteredHomes = lib.filterAttrs (_: v: v == system) hosts.homes;
|
||||||
allHomes = filteredHomes // {
|
allHomes = filteredHomes // {
|
||||||
# Default configuration
|
# Default configuration
|
||||||
ambroisie = system;
|
ambroisie = system;
|
||||||
};
|
};
|
||||||
|
homeManagerHomes = lib.mapAttrs mkHome allHomes;
|
||||||
|
|
||||||
|
filteredNixosHosts = lib.filterAttrs (_: v: v == system) hosts.nixos;
|
||||||
|
nixosHomes' = lib.mapAttrs mkNixosHome filteredNixosHosts;
|
||||||
|
nixosHomeUsername = (host: self.nixosConfigurations.${host}.config.my.user.name);
|
||||||
|
nixosHomes = lib.mapAttrs' (host: lib.nameValuePair "${nixosHomeUsername host}@${host}") nixosHomes';
|
||||||
in
|
in
|
||||||
lib.mapAttrs mkHome allHomes;
|
lib.foldl' lib.mergeAttrs { }
|
||||||
|
[
|
||||||
|
homeManagerHomes
|
||||||
|
nixosHomes
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
flake/hosts.nix
Normal file
21
flake/hosts.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Define `hosts.{darwin,home,nixos}` options for consumption in other modules
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
mkHostsOption = description: lib.mkOption {
|
||||||
|
inherit description;
|
||||||
|
type = with lib.types; attrsOf str;
|
||||||
|
default = { };
|
||||||
|
example = { name = "x86_64-linux"; };
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
hosts = {
|
||||||
|
darwin = mkHostsOption "Darwin hosts";
|
||||||
|
|
||||||
|
homes = mkHostsOption "Home Manager hosts";
|
||||||
|
|
||||||
|
nixos = mkHostsOption "NixOS hosts";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,22 +1,26 @@
|
||||||
{ self, inputs, lib, ... }:
|
{ self, config, inputs, lib, ... }:
|
||||||
let
|
let
|
||||||
defaultModules = [
|
defaultModules = [
|
||||||
{
|
{
|
||||||
# Let 'nixos-version --json' know about the Git revision
|
# Let 'nixos-version --json' know about the Git revision
|
||||||
system.configurationRevision = self.rev or "dirty";
|
system.configurationRevision = self.rev or self.dirtyRev or "dirty";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
|
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
|
||||||
inputs.nur.overlay
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
# Include generic settings
|
# Include generic settings
|
||||||
"${self}/modules/nixos"
|
"${self}/modules/nixos"
|
||||||
|
# Import common modules
|
||||||
|
"${self}/modules/common"
|
||||||
];
|
];
|
||||||
|
|
||||||
buildHost = name: system: lib.nixosSystem {
|
buildHost = name: system: lib.nixosSystem {
|
||||||
inherit system;
|
|
||||||
modules = defaultModules ++ [
|
modules = defaultModules ++ [
|
||||||
|
{
|
||||||
|
nixpkgs.hostPlatform = system;
|
||||||
|
}
|
||||||
"${self}/hosts/nixos/${name}"
|
"${self}/hosts/nixos/${name}"
|
||||||
];
|
];
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
|
|
@ -28,8 +32,12 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
flake.nixosConfigurations = lib.mapAttrs buildHost {
|
config = {
|
||||||
aramis = "x86_64-linux";
|
hosts.nixos = {
|
||||||
porthos = "x86_64-linux";
|
aramis = "x86_64-linux";
|
||||||
|
porthos = "x86_64-linux";
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.nixosConfigurations = lib.mapAttrs buildHost config.hosts.nixos;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,23 @@
|
||||||
# Google Cloudtop configuration
|
# Google Laptop configuration
|
||||||
{ lib, pkgs, ... }:
|
{ lib, options, pkgs, ... }:
|
||||||
{
|
{
|
||||||
services.gpg-agent.enable = lib.mkForce false;
|
services.gpg-agent.enable = lib.mkForce false;
|
||||||
|
|
||||||
my.home = {
|
my.home = {
|
||||||
|
atuin = {
|
||||||
|
package = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "atuin";
|
||||||
|
version = "18.4.0";
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s /usr/bin/atuin $out/bin/atuin
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta.mainProgram = "atuin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
git = {
|
git = {
|
||||||
package = pkgs.emptyDirectory;
|
package = pkgs.emptyDirectory;
|
||||||
};
|
};
|
||||||
|
|
@ -12,8 +26,10 @@
|
||||||
# I use scripts that use the passthrough sequence often on this host
|
# I use scripts that use the passthrough sequence often on this host
|
||||||
enablePassthrough = true;
|
enablePassthrough = true;
|
||||||
|
|
||||||
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
terminalFeatures = {
|
||||||
trueColorTerminals = [ "xterm-256color" ];
|
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
||||||
|
xterm-256color = { };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ssh = {
|
ssh = {
|
||||||
|
|
@ -21,5 +37,21 @@
|
||||||
package = pkgs.emptyDirectory;
|
package = pkgs.emptyDirectory;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
notify = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
exclude = options.my.home.zsh.notify.exclude.default ++ [
|
||||||
|
"adb shell$" # Only interactive shell sessions
|
||||||
|
];
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
enable = true;
|
||||||
|
# `notify-send` is proxied to the ChromeOS layer
|
||||||
|
useOsc777 = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,20 @@
|
||||||
services.gpg-agent.enable = lib.mkForce false;
|
services.gpg-agent.enable = lib.mkForce false;
|
||||||
|
|
||||||
my.home = {
|
my.home = {
|
||||||
|
atuin = {
|
||||||
|
package = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "atuin";
|
||||||
|
version = "18.4.0";
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s /usr/bin/atuin $out/bin/atuin
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta.mainProgram = "atuin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
git = {
|
git = {
|
||||||
package = pkgs.emptyDirectory;
|
package = pkgs.emptyDirectory;
|
||||||
};
|
};
|
||||||
|
|
@ -15,8 +29,13 @@
|
||||||
# I use scripts that use the passthrough sequence often on this host
|
# I use scripts that use the passthrough sequence often on this host
|
||||||
enablePassthrough = true;
|
enablePassthrough = true;
|
||||||
|
|
||||||
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
# Frequent reboots mean that session persistence can be handy
|
||||||
trueColorTerminals = [ "xterm-256color" ];
|
enableResurrect = true;
|
||||||
|
|
||||||
|
terminalFeatures = {
|
||||||
|
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
||||||
|
xterm-256color = { };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,12 @@
|
||||||
firmware = {
|
firmware = {
|
||||||
cpuFlavor = "intel";
|
cpuFlavor = "intel";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
gpuFlavor = "intel";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
my.home = {
|
my.home = {
|
||||||
# Use graphical pinentry
|
# Use graphical pinentry
|
||||||
bitwarden.pinentry = "qt";
|
bitwarden.pinentry = pkgs.pinentry-gtk2;
|
||||||
# Ebook library
|
# Ebook library
|
||||||
calibre.enable = true;
|
calibre.enable = true;
|
||||||
# Some amount of social life
|
# Some amount of social life
|
||||||
|
|
@ -14,13 +14,13 @@
|
||||||
# Blue light filter
|
# Blue light filter
|
||||||
gammastep.enable = true;
|
gammastep.enable = true;
|
||||||
# Use a small popup to enter passwords
|
# Use a small popup to enter passwords
|
||||||
gpg.pinentry = "qt";
|
gpg.pinentry = pkgs.pinentry-gtk2;
|
||||||
# Machine specific packages
|
# Machine specific packages
|
||||||
packages.additionalPackages = with pkgs; [
|
packages.additionalPackages = with pkgs; [
|
||||||
element-desktop # Matrix client
|
element-desktop # Matrix client
|
||||||
jellyfin-media-player # Wraps the webui and mpv together
|
jellyfin-media-player # Wraps the webui and mpv together
|
||||||
pavucontrol # Audio mixer GUI
|
pavucontrol # Audio mixer GUI
|
||||||
transgui # Transmission remote
|
trgui-ng # Transmission remote
|
||||||
];
|
];
|
||||||
# Minimal video player
|
# Minimal video player
|
||||||
mpv.enable = true;
|
mpv.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,14 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
# Use the GRUB 2 boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
loader.grub = {
|
loader = {
|
||||||
enable = true;
|
systemd-boot.enable = true;
|
||||||
# Define on which hard drive you want to install Grub.
|
efi.canTouchEfiVariables = true;
|
||||||
device = "/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN2181P6J58M1P";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [ "uhci_hcd" "ahci" "usbhid" ];
|
availableKernelModules = [ "ahci" "xhci_pci" "ehci_pci" "usbhid" "sd_mod" ];
|
||||||
kernelModules = [ "dm-snapshot" ];
|
kernelModules = [ "dm-snapshot" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
./home.nix
|
./home.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
|
./profiles.nix
|
||||||
./secrets
|
./secrets
|
||||||
./services.nix
|
./services.nix
|
||||||
./system.nix
|
./system.nix
|
||||||
|
|
@ -16,11 +17,5 @@
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
time.timeZone = "Europe/Paris";
|
time.timeZone = "Europe/Paris";
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
# 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 = "20.09"; # Did you read the comment?
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# Hardware configuration
|
# Hardware configuration
|
||||||
{ lib, modulesPath, ... }:
|
{ modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
@ -11,9 +11,18 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-label/boot";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{ device = "/dev/disk/by-label/swap"; }
|
{ device = "/dev/disk/by-label/swap"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
my.hardware = {
|
||||||
|
firmware = {
|
||||||
|
cpuFlavor = "intel";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
my.home = {
|
my.home = {
|
||||||
# Allow using 24bit color when SSH-ing from various clients
|
nix = {
|
||||||
tmux.trueColorTerminals = [
|
cache = {
|
||||||
|
# This server is the one serving the cache, don't try to query it
|
||||||
|
selfHosted = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow using extended features when SSH-ing from various clients
|
||||||
|
tmux.terminalFeatures = {
|
||||||
# My usual terminal, e.g: on laptop
|
# My usual terminal, e.g: on laptop
|
||||||
"alacritty"
|
alacritty = { };
|
||||||
];
|
};
|
||||||
|
|
||||||
# Always start a tmux session when opening a shell session
|
# Always start a tmux session when opening a shell session
|
||||||
zsh.launchTmux = true;
|
zsh.launchTmux = true;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
SWAP_SIZE=16GiB
|
SWAP_SIZE=16GiB
|
||||||
|
|
||||||
parted /dev/sda --script -- \
|
parted /dev/sda --script -- \
|
||||||
mklabel msdos \
|
mklabel gpt \
|
||||||
mkpart primary 512MiB -$SWAP_SIZE \
|
mkpart primary 512MiB -$SWAP_SIZE \
|
||||||
mkpart primary linux-swap -$SWAP_SIZE 100% \
|
mkpart primary linux-swap -$SWAP_SIZE 100% \
|
||||||
mkpart ESP fat32 1MiB 512MiB \
|
mkpart ESP fat32 1MiB 512MiB \
|
||||||
|
|
@ -11,14 +11,24 @@ parted /dev/sda --script -- \
|
||||||
|
|
||||||
parted /dev/sdb --script -- \
|
parted /dev/sdb --script -- \
|
||||||
mklabel gpt \
|
mklabel gpt \
|
||||||
mkpart primary 0MiB 100%
|
mkpart primary 0% 100%
|
||||||
|
parted /dev/sdc --script -- \
|
||||||
|
mklabel gpt \
|
||||||
|
mkpart primary 0% 100%
|
||||||
|
parted /dev/sdd --script -- \
|
||||||
|
mklabel gpt \
|
||||||
|
mkpart primary 0% 100%
|
||||||
|
|
||||||
mkfs.ext4 -L media1 /dev/sda1
|
mkfs.ext4 -L media1 /dev/sda1
|
||||||
mkfs.ext4 -L media2 /dev/sdb1
|
mkfs.ext4 -L media2 /dev/sdb1
|
||||||
|
mkfs.ext4 -L media3 /dev/sdc1
|
||||||
|
mkfs.ext4 -L media4 /dev/sdd1
|
||||||
|
|
||||||
pvcreate /dev/sda1
|
pvcreate /dev/sda1
|
||||||
pvcreate /dev/sdb1
|
pvcreate /dev/sdb1
|
||||||
vgcreate lvm /dev/sda1 /dev/sdb1
|
pvcreate /dev/sdc1
|
||||||
|
pvcreate /dev/sdd1
|
||||||
|
vgcreate lvm /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
|
||||||
lvcreate -l 100%FREE -n media lvm
|
lvcreate -l 100%FREE -n media lvm
|
||||||
|
|
||||||
mkfs.ext4 -L nixos /dev/mapper/lvm-media
|
mkfs.ext4 -L nixos /dev/mapper/lvm-media
|
||||||
|
|
@ -27,17 +37,17 @@ mkfs.fat -F 32 -n boot /dev/sda3
|
||||||
|
|
||||||
mount /dev/disk/by-label/nixos /mnt
|
mount /dev/disk/by-label/nixos /mnt
|
||||||
swapon /dev/sda2
|
swapon /dev/sda2
|
||||||
|
mkdir -p /mnt/boot
|
||||||
|
mount /dev/disk/by-label/boot /mnt/boot
|
||||||
|
|
||||||
apt install sudo
|
apt install sudo
|
||||||
useradd -m -G sudo setupuser
|
useradd -m -G sudo setupuser
|
||||||
# shellcheck disable=2117
|
|
||||||
su setupuser
|
|
||||||
|
|
||||||
cat << EOF
|
cat << EOF
|
||||||
# Run the following commands as setup user
|
# Run the following commands as setup user
|
||||||
curl -L https://nixos.org/nix/install | sh
|
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
|
||||||
. $HOME/.nix-profile/etc/profile.d/nix.sh
|
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||||
nix-channel --add https://nixos.org/channels/nixos-20.09 nixpkgs
|
nix profile install nixpkgs#nixos-install-tools
|
||||||
sudo "$(which nixos-generate-config)" --root /mnt
|
sudo "$(which nixos-generate-config)" --root /mnt
|
||||||
|
|
||||||
# Change uuids to labels
|
# Change uuids to labels
|
||||||
|
|
@ -54,3 +64,6 @@ git crypt unlock
|
||||||
|
|
||||||
nixos-install --root /mnt --flake '.#<hostname>'
|
nixos-install --root /mnt --flake '.#<hostname>'
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# shellcheck disable=2117
|
||||||
|
su setupuser
|
||||||
|
|
|
||||||
|
|
@ -6,30 +6,17 @@
|
||||||
hostName = "porthos"; # Define your hostname.
|
hostName = "porthos"; # Define your hostname.
|
||||||
domain = "belanyi.fr"; # Define your domain.
|
domain = "belanyi.fr"; # Define your domain.
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
# replicates the default behaviour.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
useDHCP = false;
|
useDHCP = true;
|
||||||
|
|
||||||
interfaces = {
|
interfaces = {
|
||||||
bond0.useDHCP = true;
|
eno1.useDHCP = true;
|
||||||
bonding_masters.useDHCP = true;
|
eno2.useDHCP = true;
|
||||||
dummy0.useDHCP = true;
|
|
||||||
erspan0.useDHCP = true;
|
|
||||||
eth0.useDHCP = true;
|
|
||||||
eth1.useDHCP = true;
|
|
||||||
gre0.useDHCP = true;
|
|
||||||
gretap0.useDHCP = true;
|
|
||||||
ifb0.useDHCP = true;
|
|
||||||
ifb1.useDHCP = true;
|
|
||||||
ip6tnl0.useDHCP = true;
|
|
||||||
sit0.useDHCP = true;
|
|
||||||
teql0.useDHCP = true;
|
|
||||||
tunl0.useDHCP = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Which interface is used to connect to the internet
|
# Which interface is used to connect to the internet
|
||||||
my.hardware.networking.externalInterface = "eth0";
|
my.hardware.networking.externalInterface = "eno1";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
hosts/nixos/porthos/profiles.nix
Normal file
4
hosts/nixos/porthos/profiles.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
# Nothing
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg 0bz3W8QcGaulxy+kDmM717jTthQpFOCwV9HkenFJEyo
|
-> ssh-ed25519 cKojmg Ec0xt1uJTva8MxUdoTVX5m3uWaIiRlodf345FEM7Uzs
|
||||||
NKeh1/JkX4WAWbOjUeKLMbsyCevnDf3a70FfYUav26c
|
aJIneWFJPB5HVeoUGp57agXih9YeZ6xMEbyQ+zJtWQY
|
||||||
-> ssh-ed25519 jPowng Q59ybJMMteOSB6hZ5m6UPP0N2p8jrDSu5vBYwPgGcRw
|
-> ssh-ed25519 jPowng B5XotRgv7s/FUegGhceBj7EoukewNUOIFl4TFRQf1EQ
|
||||||
j420on2jSsfMsv4MDtiOTMIFjaXV7sIsrS+g4iab+68
|
PgGCBd/Pqwp7ayqi7okHBGF1SfFpwT4KlHJ/np6p2uQ
|
||||||
-> z}.q-grease s2W<qM_Z t
|
--- AeLgwGz6k3OABb53cXNaCU/sgI4FlU1s6p8PhAaFOlg
|
||||||
n1Yfs/gmNsl/n9HtuKBIIT8iwIjYca2yxlh7Q1XAT1B+RZ8oGjW8yCPj1unbDGZL
|
1ÌÉCÔ¹ð¤ŽULfI1¸Hm»Ûòb}m”” ÁÅ¡ìg•ß0¦¢–¤`X<16>G>\>¹8rŽz+Š›Y ™¼`—Ê¢.JBUÏ!z¸Z50ú*õ¡ÙŸ¤×ÖÇ®I<C2AE>ôÔ]¹‹ÏåI
|
||||||
e5BfLO3zgkEZnQ
|
ĵ<18>¿–oÒÛ°…g„®„ÒêÁ³Â¿Ÿt’©nƒºãcz[»{
|
||||||
--- FSgNKEdDeeTjCx9jN9UtOFl58mC/Lbu1PAYRGK0CZW4
|
jçå&ÁõõNæ°Nÿo{õš½‚
-eP¾=L‰™
6¦.SP:»e¶–
|
||||||
U€¿+æ©jïÝ{gø`GŽ›ÆàˆR¾Qk]šóïdÐ6å˜ú‚y5T²$Äñs~Ùh‰Ä£òÔ<C3B2>Fº¢ç%°vöÌm<C38C>
|
|
||||||
7
hosts/nixos/porthos/secrets/aria/rpc-token.age
Normal file
7
hosts/nixos/porthos/secrets/aria/rpc-token.age
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 cKojmg fpiyZo1AR5hCfk/KtbgWCTzz+05/VOUnnaHhWgXQRwc
|
||||||
|
d2w9IX/kq/T6OwQ1zImsCmzIX2yfFD8hQDbs0IW3ZIA
|
||||||
|
-> ssh-ed25519 jPowng E9R7p9NCubUQrymjnrNfEjSNIIAXrBQLogNkWsOx8xc
|
||||||
|
MrWEE5LNtOqAjnwA6byfSa1udnbUtqBy4FhdxipuA+g
|
||||||
|
--- fKgerjgGs+brvNKnrWdpmOadl34LipMT6Msqse2g3E0
|
||||||
|
Œ¡E9³ï¬‚KYRL-‡„°¡Ç·\E–ŸK{ÃÜ7âço»ïò²XÂGx<0E>ÍT’Î)Ëœôä<C3B4>6°%ˆLO€Tðÿ*‰™*8\£É@G
|
||||||
Binary file not shown.
|
|
@ -1,8 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg dgS4bezgtDi44R1A8am+J6zh80kUVYTo1heaxJCtzX4
|
-> ssh-ed25519 cKojmg O3DMSSPQP9/ehXmzs0xcCGllu7VSzhd6b4Pii8t2vWQ
|
||||||
F3w/62xwtqYa40NU7OvF9pnZzYz/5hACAGJfMA4e2zw
|
Ys1nMv2384elWWGW9C8HabvwUeWu52VsQpxx9L/4/dM
|
||||||
-> ssh-ed25519 jPowng lx81CK3yeNp9RjHCUFJeKYZlRzxBmXuADVBvRc13zCI
|
-> ssh-ed25519 jPowng ft/9SX5fpG7+7gHMubaFtb+50/gfNgmaofOVq5UjRUE
|
||||||
P7e75t8xU+ZkYmeQ8mmMfyZZsRdG1J8yrvSUkiWzkFQ
|
xMwdFjFdkH0Li+PikaFt0WAZbFUu5daHgkfN8aQQumo
|
||||||
-> *z4/`-grease S/)a{e sFd";=
|
--- 7DVINvXIXdE1MRwIkeajonYsy1cp4HugCxfTeub5SXU
|
||||||
--- 15FVhqRTkoPFEeETRRyFQhsv4Fn19Ozlax0u8Zy9mNA
|
<¥ö¡Ãñ<ýØ{VÇ?ñfk/¤áI®"<22>ï×/5K"Џ(ì¢ùiÃÔôìñ
|
||||||
õ#+¥àÎvøSÈ4èá}<7D>§Rì%‹Î¯F4fnDœ˜J¹¤Z‹¸A¥Û™,_
|
|
||||||
Binary file not shown.
|
|
@ -1,9 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg 1+cLlzctgcM0FnVDwMPOAqBkvMcDBRg8SvCw4djI93Y
|
-> ssh-ed25519 cKojmg 0J8FMcVRf78LYG+dTOFzu3luXwhOjdOg0sx4Jxdccj4
|
||||||
oV2XI4f1AvM9P591kZZ6NgJXa+SDtqGzCSgc4psOmxM
|
tdrCcfcYbTZYhL18RG3goiqtyhu3NTn+fJhdIAnU5uA
|
||||||
-> ssh-ed25519 jPowng Ufjfh1p350XxRPg95+/DHdmnl4lC0bbzUUlaxd1Bmxc
|
-> ssh-ed25519 jPowng qlF8nkSEg5fZgai0VP5eTSlZOHyj5IcalTf+QNWITVo
|
||||||
/RHwFDSn2ov+60r1uHUigrsn99+GmmKmlk4h4T2gbA0
|
O5aiZX0AJD76ixsu6i9xnnFBQANdsu3h6XzdTQ6KtKU
|
||||||
-> *Lc$@-grease
|
--- ByMQt9bnbzd8YO0Y93FIYF/lmdbYcOydkYdKxpRQujM
|
||||||
pzVJAHy1qRq3jUrnFV0DDO7/hwV1US4Ogf0RsrVfX0xzbr73uJ003YjieVB25LqN
|
+堍6JNm裶遁[Eb1p)vD究侖PL9捦€z逡<7A>煸!縺贿噮'嘥閍顖卷赿5︰:[控d肯峈撟M抪庱zj<7A>
|
||||||
--- ME7/iVevyiguyhXugbkVFGzJV0yDccyKNlWbEZa/FmY
|
|
||||||
YžŠXjb2uþnd;i0íýX]…§é0–þjé’L„PÔT~óú ƒÙ^kc”$D×ÚÛr¹úu³¶fr€e¸OÕ¸þ<C2B8>+p•¨<E280A2><C2A8>&ãw®öϨ
|
|
||||||
Binary file not shown.
10
hosts/nixos/porthos/secrets/forgejo/mail-password.age
Normal file
10
hosts/nixos/porthos/secrets/forgejo/mail-password.age
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 cKojmg Lhgx43wR8PtAMf5v1eJxKlUBSAoOLdOOn/QaQrwF8zA
|
||||||
|
jfUCpgNzkHCNTWCqtErDaLMmg1Oy+s9zUra1JLCi+J4
|
||||||
|
-> ssh-ed25519 jPowng kSeQ/SmMrzd8ByVu3YHWeZyKmqFZvQSBnDunkB8e6wc
|
||||||
|
WRmnfrV5xcRXA9t0ZXx6YvbRl0sX4PTrw63VVKX4Ei4
|
||||||
|
--- a+LLM1gP9g1AbUapbeeKaS4cEcRBmPo3MHU2DSWTAds
|
||||||
|
Ò,FÜÒ6”â⬘ixÌ<78>°Øe|
«
|
||||||
|
²
|
||||||
|
ÌÏœ,{†
ˆõvª!–†‰zÜ$P;ãé©TØÆÉKW
|
||||||
|
qGô
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 jPowng BkIjie2KrwDLaZYYIguCs7TPA/wQy+YPguikuhfye0M
|
-> ssh-ed25519 cKojmg 46BI3ItrXRWMivmd/K8bmkKlrYFSr8cbehAkmwCskig
|
||||||
7viTA/EGYB/jRKQm6fFd86DMd4j+Jxsaw/xQ1T8ZKNo
|
gTjYquH1hDEZ2zWD5P7gN/ejTCH8JJb8bC/VLZ3koeg
|
||||||
-> ssh-ed25519 cKojmg t1Y8bZvPccNAX8vWQLTfCyOJIBXN515vyfFrEI2EVww
|
-> ssh-ed25519 jPowng 5MqfJlasDbbqlI0dX98NZzHxmYmnnpveyBxa4z48V0o
|
||||||
bJEjpIWrKeQrA/JfY7FRdB6hpHwR/aG4Vya1ChFNBKs
|
r7Yiv4+SZiDncD0Xzp5eFSP4f2yjGBOILKxEO1iT3Os
|
||||||
-> jK/-grease Oz.R ?;)G ],
|
--- l43+JtT28i1YDhNX3hE3Qb7swskOBc5ghDqiyh3rU2s
|
||||||
AuHk9TcC9kl0dg8/L6UfHIk3e9fgGwSTJAJpVgInhok
|
Ž+)´”¯ÛPô¢nåWT,.<2E>‹²eÚNW€Îñ YƱkçÿF4Ê#=˜)üîò™6Ö±ÛmȵîJ‹<4A>ª#
|
||||||
--- 47z9lol5MtpX0IsO/0ggLDMcNVfl4lNNvoHUSwOU/18
|
|
||||||
)gЪeuÞ!œš-
ÞTì¥YAðM+ˆãGbMe@|A,è&ãÆE!܆p=P²=û9¹ÙP¹!Üö’Q|Ðä r
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,9 +1,9 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg lmu3MinmydRHD0A/YVRRtopermfoBC8M8cTHfVanY1s
|
-> ssh-ed25519 cKojmg u+5VWUy7eFq4boAIOhuKXZYD4mhczaUAcjz4+coVggA
|
||||||
ygrtpZZJ7aeQTblNazpoP7DdifmDxHsE3DFJsIrWX5M
|
QlBHHgz7uY3TVgex59yZA0XgsIeHi2WN2S+UleC7bMg
|
||||||
-> ssh-ed25519 jPowng X0cihOc+fBtmtrkEivIHQngdYIobezXEF1x+pHqNzAw
|
-> ssh-ed25519 jPowng IyeI6WUjF8wxe92xD3xY++4ZqXtY8divB39eLWfAtm8
|
||||||
/+sw9x1NWY0anZhDMpAywBPrR0F4XCHaF9e8j/Yo/kI
|
eGj8w5X2ydS1LJvNSmo56xzRVoUB0iAKKs2NHX968Yc
|
||||||
-> 32;%1s-grease
|
--- hsYH9lUl3wIErJmBKzlWV+gIR5v6vgPIcNDgd0hiRGc
|
||||||
JafjuSZty6a4NSO/y4y5wHWL8Mw
|
¹Ã@Úl<C39A>ôQûsÈ„ÿ×£©Dƒ}^{ºžá¾X)¸nYóJhXhg8wƒž´ “ú°˜Ó¨Ç‚Çw–‡y(œ–aè¸ìê.0>|ÚPSlOÃ|ÈÊE‰õÂÙé°€¡<E282AC>BWó_ˆ³ÜÌ)|x4©„šºë\_F¶
|
||||||
--- dwCl66vdpsL0MR5NWWvg3JUnQ2QZQBeW0Dj0l5tvOKY
|
ZÒo0=dts –j<E28093>[ùŽõ0O+ÑÕRž8±‡ÕiüËçŽÜ»ˆõŒæÆdÀ«ß8j»â©ê
|
||||||
oi,`ÓÜ#uÄwW%PoubÚcy8<79>ó
ƒÃÉ><¿F‰Ååq…ÂKÂÇk0Çk/<2F>hÀ¥Ÿ5势ÝF+ýu‡ •e€<06>¾Ÿ²óôbãè>1QŠ2®ñwn˜WbÖ–B˜âî<C3A2>iŸ^xurâ†-/llùÒÀÀ-ã=°7;jã0»I×%Fi¼<69>í€ø‹™A;Y†ìUd]KÅI0(½ ”øAg£Ðóž^†uG:äpkJ’Ÿ:q<>¢šWSaLw¯¿Ô!ïM³4ã L/ùZŇ®¢D¶-XéUb»‘vÊbP‚ó›0ÇÅfÂ9êú<08> †âJ`ÃX°ôÐOÅ!s›{ÙÄQAšc€c;ÏÃÑ‹4öMíچݹlxH&ïéöé{é}ÁäÛzZ¦œ‚9ûÊXžÜ“g‰]Vϱ•0gt¡¿…žw·
|
‚g¹©‘–$xŒÿò¥Æbâ÷í<C3B7>˜äX·¢gÂ^¼íùG¼Êô¤Ž$UÏûB*ö°é²¡£ÈÔ)[t¶ÃHa•vŸ7<>ÌÑj£âD.z¸+¬[~–õÁÃé9Ùý<C399>àz¼øô`sé¶,_!^YÓïʯ2H¹øS‹¿¼©øÅ<C3B8>øý*âñó@êjZ^ˆôæÎv~غ¶@ò<>
|
||||||
Binary file not shown.
|
|
@ -1,9 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 cKojmg N182xey8TWRVUWTRP16rT0zlhYZNr/pOZVR7YRnlIkk
|
|
||||||
HVqAag55z1cKLgjR3WsUj2wvaVjxm169JcDRJGRvCVU
|
|
||||||
-> ssh-ed25519 jPowng Dc+aaUTxDsMTY+oOst0SC3ldq1e6zX8F5A5uBL5RHhc
|
|
||||||
JWZou6+VaFc5f2OLRIrmFFWg3Er6WSY+TloXU0mP1K8
|
|
||||||
-> |9_9Aqh%-grease $ X8Mn|5 aKnl' fl<D{T-
|
|
||||||
+fAc0cajqxhYWu55HCY
|
|
||||||
--- SrmtWXQXGYxNTabSrb5tBRXHnK1F22Qoiy7hKYrrF+0
|
|
||||||
ñD·û²:,õn0i<>½Àß^ÆŠ`üÔ2Æ#y'ý9ÖñÓÒŽéÿæ<C3BF>r]ÀØ›¹x“³S=ú°ˆôuJéEÛóc€lH Ê~eÅ‚›ŸKtévo'êv+
|
|
||||||
BIN
hosts/nixos/porthos/secrets/mealie/mail.age
Normal file
BIN
hosts/nixos/porthos/secrets/mealie/mail.age
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -1,10 +1,9 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg OdLtFHbHbc28rUn47vgsVvXxFNg9nF+9y9R6XOK390Y
|
-> ssh-ed25519 cKojmg l5lOlGnbvQ4D2kaSj1dd8Xr+btlNbTkT0SxSz02Vr1E
|
||||||
yQQYUPQGjN2+xrSqqBYa7/zS618KrVjX5Amw2MFuSLg
|
Cjy73yKL1N8LnjRXXLpxX+wIOFCa8wrG44VjXUND1lI
|
||||||
-> ssh-ed25519 jPowng NwUjiLtiXVi6XFmht5l1CxEs3gm0oN4vHYwDZyda7Q4
|
-> ssh-ed25519 jPowng nYHfkP9dRkxu4Fqh8MgrbdZAc8gk+VGDyxIV6RsSeEM
|
||||||
di6znVjNRO6QdqteVNkeot5Ko2NwWLe6v+zVR3f+o10
|
rKKi1NDoKMMzQ+kUs5ZX4zMqRBI0QwGY7q6K/L9+dLI
|
||||||
-> 4Vx%\(-grease ^^Z>EC91 R 2BJ d48Wip*s
|
--- Umv3UCtXlApug7uuqmwbQN38i8Lx9/b0uhLgbc3OdZM
|
||||||
yPiBgChRF31XgxccQFLO3MzRL7+5s29sfRoF3W1yUX6Bu59MpxD4D+n/jhLcxSH/
|
äBLsś ‹?ÖsÓ“s<E2809C>2Îy
|
||||||
CxW7KaiOctNmPm5tWh6qjmgQ+V4bcAji5vo4FKs40l56cfyueEJj+Q
|
R0ą‘!<fü9txB7dň<13>™ÚŠň^©ô ɇLJ&ńW
€<©e]
|
||||||
--- WUGF28zqK9E1AlOeeCtSHxFg6ikRy85gOoLtBd4m0y0
|
ţ/$$
|
||||||
.|…rr>©†ðìì1ÅÆ2SÉž.×hw<12>wqºš%i˜øé ‚*U^)Öè'qžµ›O2ÓœümòQÝ7˜¯m`
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,10 +1,8 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg zhpo89xef68JoeOFWzhdFshrj2BXXUCFPMLVJzv6EyE
|
-> ssh-ed25519 cKojmg 1hbRAuAGrTy6nmkAq+UWua8weywphZsTIGF68YQEOlQ
|
||||||
fmJxJi5rmyai9qGwDo7iHg4BrObGre96KCpl+g91O6I
|
92Q7uIKv1EiO73wMh53jrTuEkzP6ziBmX9SWXCl4d3w
|
||||||
-> ssh-ed25519 jPowng INA6EZdy4J1p3QY5mfVOQXiLdOjIDaZR+CZMP+GfkXM
|
-> ssh-ed25519 jPowng aPb9v/S/mLW95Qom+swvasqY878RxpxxOkMJA2wb6nY
|
||||||
8Nf5soaxY5SEzeJca5kaJkx7ByOvc4NkJVetB7wpEmo
|
qu/dzcqciqKzNc28HqFMHA1XnrJy+/wWgbfM1+BrlkE
|
||||||
-> xjK'w-grease
|
--- 8PXOozvZzNZQD2OT4a+0XuIQauzUGSvovdfDugmp+bc
|
||||||
f5v0cvlt4JbHlAwDOob86qOInWdlN/oohTg
|
x²Ž‚ê Ã>ùý²ç¦©ðóÁÇ_ÏC9d™T5ŸûKzЄqØcZ©°É¾pŒš¾¡ ใºv
|
||||||
--- NTGv4rr+MhJ/YeZhVHOjoS1V+zCHFf2itJYfK36R+wE
|
)Œ³õ²¥
|
||||||
š×—®JÚ dő– oŞę'YFUź@
|
|
||||||
r7”ă“_N$‰˙Ź–č‡>‚ˇę]hq»-¨F۰qX˙?Î|?µĘ
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg tZwn2usN6K62oS4vBa6boh9zEp/+cS4chP8boXG6SH4
|
-> ssh-ed25519 cKojmg r3ZUTfSNcHc1TS2fVtk99Y2xJMMunkwkcR0dQIdiCi4
|
||||||
Fr3kV8gUDoiDqMxPYWsHyww8umYhQEKhqbVBiVw5NeI
|
LICSnzAaooGy6x4wt0vNM6YtQ4S17QohZNt7lfVrD6Q
|
||||||
-> ssh-ed25519 jPowng wRbJl4G85obH/GluQBBsXE7MOvooEui65eqHfurvuQs
|
-> ssh-ed25519 jPowng KLU68ws4lemr0wWHxm8H8pf1SQAoUZTN4QSPzk2PyHk
|
||||||
KqVZMBSyHhkayEdwI6ocmA4qhHY9zYJvg1CEKM1SOa0
|
6pjH1pI956oaf9ZIHPPq8p3g/mZC5GxWhWkT54Wohf0
|
||||||
-> 2E"/OFW-grease o Qp3HFe^
|
--- cAQbniTwwtTftfXU/dGtA69yF/hh8iB97vHxvkIZMMo
|
||||||
bGhCNicPqt7txqxUiEWXCFs1OuQLqOqHmjHSqYQv919dqYep/xBXzi/aRf3dsdvh
|
°c#Ž=^Ì~?5ú-w—NT†Ì¡<C38C>¨+¶¨Ä!z¥<7A> "’ Zö"2ºëðù×M!pž5×V¬ÈÛjçΡѡŽâ¥âL¹ÁÌyóÐŹúš›n÷ÄŠ8zQö°+¨ËÁØ©9WSµ§<C2B5>Æ0¨u}YÚ
|
||||||
TCJCTvZG31Qxvikp
|
|
||||||
--- xKJGbdVp+Z5h0vCBleSF2zYYYd2S5i0y4szNqjRwrDY
|
|
||||||
Tª
/N¯<4E>¨¹i7m4‚#³MhiñP¹šÒÞ›Á¥-ÏgI÷ñ±%@E†(›iÿ7·ý©ýYg¦k±´"+㸠Àª(þ]o¨¸–ý†ð<E280A0>@báÊÞ§+Ï[‚Y"ÿ‘ÌBóóCR[ >-Ë.4d…¤b9v
|
|
||||||
8
hosts/nixos/porthos/secrets/pdf-edit/login.age
Normal file
8
hosts/nixos/porthos/secrets/pdf-edit/login.age
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 cKojmg VYlHgHSLpfKb5bn1XA3aCpfX7M23DgbraLxxOfo9PDk
|
||||||
|
Rj+mDvAsWX3WwpuhTrOubmo17j/aud5+P87df5bosBA
|
||||||
|
-> ssh-ed25519 jPowng o9ZFaYrITZ6DjWw07Vk/+TkuU187/ytlEK4sw7G32G4
|
||||||
|
zmxlpDvDDEgQFqBVARXeX1ABhvfJ4uAHfa6mIxXzjAY
|
||||||
|
--- k/d9FWW8/OSo8EllwOBV74pZyX918u54jEljGk3ATUc
|
||||||
|
ü4+ø2{‘hE7!ÒGA`×<>_@Íß—´¡R_ý§6J„ñL4v,‚6%ô‡øó#^® Ù¹
åB§OøF‚|’7ܽÉL]œÙjR¨
|
||||||
|
BþóÛ¾éaòs]xS<78>Î pbÞo#¬J1QŸ=t}5Õ>Oï‘{+¼.
M"7e»yý÷—
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg 8rcBI7fYHuA3jO6EzJNFaAj2niIApKDt1HQEv61AKTs
|
-> ssh-ed25519 cKojmg bICZUDqk/C2divEZu2lxUDsrtS1inSbDbS8hxJSJfHc
|
||||||
ANxkIX/CeI7t7Zqp6wmjt/D194Z+xpeiidb+qvYzoQU
|
FsfueyP6WCesAu5EcXIxxtvbb8RX09qNTN9GvuhYuTw
|
||||||
-> ssh-ed25519 jPowng oruewwTM9X/HjjcmOPcQVdp02rQBlgJPdzvlAffs3T0
|
-> ssh-ed25519 jPowng Uujsu6c+QTXqCNi6c+zxk5tf0UQcG+Qm/SZF4dzSKCY
|
||||||
MrO0kaNhjgOkNHuz3NrIMWXNrXOHH9dT/Fk6hoQNKyY
|
RPVNNNauz73A8kWA0VSQiMWCerUkxPoXG2MUrFly3Bc
|
||||||
-> COK%H7-grease
|
--- 8h4hGasOwZxk+i5aQfg6AzdA1G4wROhxz2rmM9u41b8
|
||||||
6yfI90QurOKlM+kgpW8KZ/iBzDYD9yhNmjG1LQ
|
{Rワ<>ラ=42<34>
y<>咨ッ眺テj嚀廁<E59A80>WQ▽隯%畊ス宅 顕褜返<E8A49C>弁K<E5BC81>ト蘊マFョモ?埴膕K歯「
|
||||||
--- uArz8eHg8sLO0sdlkM6cELFh+FHiI5BrM0+iXJxxiDo
|
|
||||||
¿vývû´ÊNÊbæ@Ÿ¡Â<C2A1>FÛMMíYËÆíÌ&‰’/%¤¹Ñm¨®ØtÁÖ“ªd†h„|¡ðŒß©8¼Ž Ú½¨9‚®<11>Cã¯/Å
|
|
||||||
7
hosts/nixos/porthos/secrets/pyload/credentials.age
Normal file
7
hosts/nixos/porthos/secrets/pyload/credentials.age
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 cKojmg nJbOfp0/wmFOZLzcWjoGB7wEB8e56aO1NntSmn5KomU
|
||||||
|
/Vio4Z/t7IPJrdzdwUPidVH3wrouSkwRzNHP0T4z3x0
|
||||||
|
-> ssh-ed25519 jPowng QXg/xqs7/VfkYQg3X77w4i53q64bL9oYeTxqb9NVhiQ
|
||||||
|
sMHIXlmrIxtIr+s0X4lBqev/PPd3AKD5P7AP5K4NeJg
|
||||||
|
--- gzTn+6+aa4Ptic1lsvSt+r3IEBysHrvMMIyONogMDF0
|
||||||
|
<EFBFBD>ÏÂ<EFBFBD>Ë®UE_í</¯çQ·Ü+U“AГMÄÿ/kï×dAL/”úÕįÍoæ\XïEDÇÑfã\ièÄ‘½àpF„`#¬n4è–x1î<31>ûÞèDëàÂË5CéЦ&fòB»q${Gg…Aqˆ³@üVu!Cc…R\ªÖ¨
|
||||||
|
|
@ -12,6 +12,8 @@ in
|
||||||
{
|
{
|
||||||
"acme/dns-key.age".publicKeys = all;
|
"acme/dns-key.age".publicKeys = all;
|
||||||
|
|
||||||
|
"aria/rpc-token.age".publicKeys = all;
|
||||||
|
|
||||||
"backup/password.age".publicKeys = all;
|
"backup/password.age".publicKeys = all;
|
||||||
"backup/credentials.age".publicKeys = all;
|
"backup/credentials.age".publicKeys = all;
|
||||||
|
|
||||||
|
|
@ -19,13 +21,24 @@ in
|
||||||
"drone/secret.age".publicKeys = all;
|
"drone/secret.age".publicKeys = all;
|
||||||
"drone/ssh/private-key.age".publicKeys = all;
|
"drone/ssh/private-key.age".publicKeys = all;
|
||||||
|
|
||||||
|
"forgejo/mail-password.age" = {
|
||||||
|
owner = "git";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
|
||||||
"gitea/mail-password.age" = {
|
"gitea/mail-password.age" = {
|
||||||
owner = "git";
|
owner = "git";
|
||||||
publicKeys = all;
|
publicKeys = all;
|
||||||
};
|
};
|
||||||
|
|
||||||
"lohr/secret.age".publicKeys = all;
|
"lohr/secret.age" = {
|
||||||
"lohr/ssh-key.age".publicKeys = all;
|
owner = "lohr";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
"lohr/ssh-key.age" = {
|
||||||
|
owner = "lohr";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
|
||||||
"matrix/mail.age" = {
|
"matrix/mail.age" = {
|
||||||
owner = "matrix-synapse";
|
owner = "matrix-synapse";
|
||||||
|
|
@ -35,7 +48,8 @@ in
|
||||||
owner = "matrix-synapse";
|
owner = "matrix-synapse";
|
||||||
publicKeys = all;
|
publicKeys = all;
|
||||||
};
|
};
|
||||||
"matrix/sliding-sync-secret.age" = {
|
|
||||||
|
"mealie/mail.age" = {
|
||||||
publicKeys = all;
|
publicKeys = all;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -60,11 +74,27 @@ in
|
||||||
"paperless/password.age".publicKeys = all;
|
"paperless/password.age".publicKeys = all;
|
||||||
"paperless/secret-key.age".publicKeys = all;
|
"paperless/secret-key.age".publicKeys = all;
|
||||||
|
|
||||||
|
"pdf-edit/login.age".publicKeys = all;
|
||||||
|
|
||||||
"podgrab/password.age".publicKeys = all;
|
"podgrab/password.age".publicKeys = all;
|
||||||
|
|
||||||
"sso/auth-key.age".publicKeys = all;
|
"pyload/credentials.age".publicKeys = all;
|
||||||
"sso/ambroisie/password-hash.age".publicKeys = all;
|
|
||||||
"sso/ambroisie/totp-secret.age".publicKeys = all;
|
"servarr/autobrr/session-secret.age".publicKeys = all;
|
||||||
|
"servarr/cross-seed/configuration.json.age".publicKeys = all;
|
||||||
|
|
||||||
|
"sso/auth-key.age" = {
|
||||||
|
owner = "nginx-sso";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
"sso/ambroisie/password-hash.age" = {
|
||||||
|
owner = "nginx-sso";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
"sso/ambroisie/totp-secret.age" = {
|
||||||
|
owner = "nginx-sso";
|
||||||
|
publicKeys = all;
|
||||||
|
};
|
||||||
|
|
||||||
"tandoor-recipes/secret-key.age".publicKeys = all;
|
"tandoor-recipes/secret-key.age".publicKeys = all;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 cKojmg bu09lB+fjaPP31cUQZP6EqSPuseucgNK7k9vAS08iS0
|
||||||
|
+NGL+b2QD/qGo6hqHvosAXzHZtDvfodmPdcgnrKlD1o
|
||||||
|
-> ssh-ed25519 jPowng QDCdRBGWhtdvvMCiDH52cZHz1/W7aomhTatZ4+9IKwI
|
||||||
|
Ou3jjV/O55G1CPgGS33l3eWhhYWrVdwVNPSiE14d5rE
|
||||||
|
--- q0ssmpG50OX1WaNSInc2hbtH3DbTwQGDU74VGEoMh94
|
||||||
|
¯mCùº<C3B9>Æ‘'hK.Ðì/™Xu(€«Õ×g$½'¼šM{fK˜”!ÛMZ²oR÷®ˆüÎÕ<C38E>ÍŸö;yb
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,10 +1,8 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg mP2H3PWJN6Pv3q6C2wci3KnXjtFAIiuGy0YH0sGIy2g
|
-> ssh-ed25519 cKojmg Froxrdh4H2Bsj4X2xicyBXHPRlbkRJAOztoTfzxItSM
|
||||||
f43QqyUQfTYznszub47kgc2Mz95zVScTDkwnG3INi9U
|
FnsLS2QYm8mJUO+c152FieLCFkALxxwQLnY4PAj8zsU
|
||||||
-> ssh-ed25519 jPowng fENbu7+FZ1mnQQHQCLm1spLHmsQGlRoJResUJtGzYkY
|
-> ssh-ed25519 jPowng pKl4p02M+U5JsiOnM2wXL5bkPwsI3IHjlTutlvez3zM
|
||||||
hX+AqCkLCca6m/aKtGCThi7/mCCz/TZQNJNOlOmlqyA
|
NSuOFsyV8JqtTq97lNzacJnJ3YZgWp53XxU3mjUlcMQ
|
||||||
-> J<-grease
|
--- 2TK2ViFblmDheaYdat/GF0ze1wVsla1EPLaeRdMM4Gs
|
||||||
n7+CPRr4oazWnE7yzpJN2ZAI4QrGsAerloP4wNeebjQDx8+IxJq1JE0g3Yi0RxzN
|
®àµÕ¨ENÜžäm›Û2uÂ~Ju¼b´´t[Ý$Tñþ^‘2–°<E28093>½jœÙÜi@xªÒ¸*İg[MÞH½½Xš!”‰6Áez¼…¥DW]ÓÕ<‰–`XÛâêÁÜÄPóéý÷ÃÞ›
|
||||||
chDccuSPLYk45Ov+SD/qqqFZlQ
|
¶¥q*Îo¼½ÃÑ$‚åÓ<²
|
||||||
--- p81HYw3LFj+qz2kiZsDcevM4ZBfvN743P9Jdi7J9XkM
|
|
||||||
‚¢ìÛ±S·7 <EFBFBD>‘ý£÷ÜãV»»Bðßâø±³ˆ¶ïO‰lEt˜‹Á…šqý</Ç—Ø©9²ã(ØP†$Wƒ0h;÷‰±àJy¯feø‚ >·_D,PºVFp\æ"AM}èg?<3F>ÿ<EFBFBD>Ý/\²Ä;ùy’¬Óš(<28>ÑSñKË
|
|
||||||
Binary file not shown.
|
|
@ -1,10 +1,8 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 cKojmg +WwRpd2MzycutQFXyLsr2+GzSgF67Z6UuvyqYZaLd3w
|
-> ssh-ed25519 cKojmg KslHl4v8yCsKZn5TduLgpTfpTi1uOInC9N2e8Ow83FI
|
||||||
sppt8HzaZP3yxnvnhzjl18Trnz8g3VyXJ6CaVBWd7jA
|
NzcJJr8kw1ykAdWRZOeWdNhx0BTgE7FwTKcge+yLJ/w
|
||||||
-> ssh-ed25519 jPowng wanoqGB7T8bim/WZ4IAYViFQoGzaIZSgeoTr3YKpeTY
|
-> ssh-ed25519 jPowng YGWcOai0A9l2HDZyV0GtD8kEbY/xTUssODFBcseWAkA
|
||||||
ihDAdGa1XVW/qQz40V1v7a7iK7tu0EHMa7ayIogpcRw
|
nJaHXkipFSHdyektoKV5y1jQrjkvnU7pwZwAymiQm7M
|
||||||
-> l-grease |PIcZ NIr >0;*
|
--- IgWkDulol1jRa+pcx7DbEy5pvC+2nrRJHsdQVPvPur0
|
||||||
4o8o0bevQZ6uDSx1WxxlDCURbFCM+yK1XPdrb9aztCSvG2a+ne78E42l5rBcoH7I
|
Bb<ÅŒb!ÏëE?:ÇÓô=÷srJC<4A>œüKz5ø®Ô{–Æ4`¾&N0€ÕÈö¹57ñüví’©+´1
|
||||||
m51A8uWS4nSj36N/76v6K4kelxKzWUg
|
+(d§á¡{ìQŠÙ
|
||||||
--- O6cGbTAVbDcdmPHf7UzfZiyiRtu1yfL4sBI+CkJA1qw
|
|
||||||
ýqýŐ$ň`żw'čS“X¸]Ąá÷ř®úî…?¤6‹Đ/ĆN(Bžň N«a”.˙ HŽ7żí•I<E280A2>ú÷Ŕoz‡/4:sK",7J
|
|
||||||
Binary file not shown.
|
|
@ -1,10 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 jPowng yz0I+AazPmamF7NOnwYNrPE/ArarU01jd2mVDJUPSTY
|
-> ssh-ed25519 cKojmg tAW2hbBSxsael6cdbN+vI4h1/PMNrWYct8cppCAasn0
|
||||||
6Y/YQ7gb8cAZf3zT9SKOorvfUnU7kYff+gHh8fG2mY8
|
cex/wBTviSIXc8clNm5PGltTYa1Q5PwqlX4BGsNHiyU
|
||||||
-> ssh-ed25519 cKojmg 0FZU9v8eHsVeE+EoX9Y4IgfIj/8+45waPaSnSDb961I
|
-> ssh-ed25519 jPowng YxfhtpytvuhIARQAaJ0w94aOZiGNUOBR0pF+Sp80D2k
|
||||||
L6SzJoh5xqai45scoVAa6v9zslBGFYNnZY044d470uQ
|
nMon/VdYUQTs6LFccDGeIKWeNYib1wwtFmEYZkDZxg0
|
||||||
-> I[G-grease p
|
--- giL477X0+uZ2Ocvbixt5f5kNc1laj5P79oW8P9XsNP0
|
||||||
AMRQY1alSzHi/PLL80kcvnM1Z9YNfoUo9u5alWXYMyzrRsg+vXjMuBvAXg3fmnzr
|
¨›Ãd>ò±cE?nb¹vš_²'2ûûà³<1B>Õµ¥_6P›u:ÊusºE“8õ“ØÏ“xuڶ̪…Îxù̧ïžC[†®°ˆÁ.õêŽ6‰¯ qÌÀÍîJ°Ä5GäKÌ)N<ÊyYÉ¥tX=l7T´2¨ùRÙ
|
||||||
wdOowTYMRV+jEG8vzkcQTsv+f7JIyo4DvOOaPyGfWMl1
|
|
||||||
--- ih3IAFPcN1JP3FP1vcRGnPrfk91yrnIX0m/Szkbcf7Q
|
|
||||||
ÑmW„r‚µœ_\)Ͱ]QЦxMÃs/݃Îݪäœó‚Í6óº“k±äÅY§xïMy¶ J¿¸‹GßÃ)i2_'ÖœHF€þ.âg_Îe5³#uätñØÕ 7j„ŽPñ²'TÞ¥8´•\IàW«UùäK°1Úº9½è
|
|
||||||
Binary file not shown.
|
|
@ -10,6 +10,11 @@ in
|
||||||
adblock = {
|
adblock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
# Audiobook and podcast library
|
||||||
|
audiobookshelf = {
|
||||||
|
enable = true;
|
||||||
|
port = 9599;
|
||||||
|
};
|
||||||
# Backblaze B2 backup
|
# Backblaze B2 backup
|
||||||
backup = {
|
backup = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -36,19 +41,19 @@ in
|
||||||
flood = {
|
flood = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
# Gitea forge
|
# Forgejo forge
|
||||||
gitea = {
|
forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mail = {
|
mail = {
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "smtp.migadu.com:465";
|
host = "smtp.migadu.com";
|
||||||
user = lib.my.mkMailAddress "gitea" "belanyi.fr";
|
user = lib.my.mkMailAddress "forgejo" "belanyi.fr";
|
||||||
passwordFile = secrets."gitea/mail-password".path;
|
passwordFile = secrets."forgejo/mail-password".path;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# Meta-indexers
|
# Home inventory
|
||||||
indexers = {
|
homebox = {
|
||||||
prowlarr.enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
# Jellyfin media server
|
# Jellyfin media server
|
||||||
jellyfin.enable = true;
|
jellyfin.enable = true;
|
||||||
|
|
@ -64,9 +69,10 @@ in
|
||||||
mailConfigFile = secrets."matrix/mail".path;
|
mailConfigFile = secrets."matrix/mail".path;
|
||||||
# Only necessary when doing the initial registration
|
# Only necessary when doing the initial registration
|
||||||
secretFile = secrets."matrix/secret".path;
|
secretFile = secrets."matrix/secret".path;
|
||||||
slidingSync = {
|
};
|
||||||
secretFile = secrets."matrix/sliding-sync-secret".path;
|
mealie = {
|
||||||
};
|
enable = true;
|
||||||
|
credentialsFile = secrets."mealie/mail".path;
|
||||||
};
|
};
|
||||||
miniflux = {
|
miniflux = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -89,6 +95,9 @@ in
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
passwordFile = secrets."nextcloud/password".path;
|
passwordFile = secrets."nextcloud/password".path;
|
||||||
|
collabora = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
nix-cache = {
|
nix-cache = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -118,33 +127,44 @@ in
|
||||||
passwordFile = secrets."paperless/password".path;
|
passwordFile = secrets."paperless/password".path;
|
||||||
secretKeyFile = secrets."paperless/secret-key".path;
|
secretKeyFile = secrets."paperless/secret-key".path;
|
||||||
};
|
};
|
||||||
# The whole *arr software suite
|
# Sometimes, editing PDFs is useful
|
||||||
pirate = {
|
pdf-edit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# ... But not Lidarr because I don't care for music that much
|
loginFile = secrets."pdf-edit/login".path;
|
||||||
lidarr = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Podcast automatic downloader
|
|
||||||
podgrab = {
|
|
||||||
enable = true;
|
|
||||||
passwordFile = secrets."podgrab/password".path;
|
|
||||||
port = 9598;
|
|
||||||
};
|
};
|
||||||
# Regular backups
|
# Regular backups
|
||||||
postgresql-backup.enable = true;
|
postgresql-backup.enable = true;
|
||||||
|
pyload = {
|
||||||
|
enable = true;
|
||||||
|
credentialsFile = secrets."pyload/credentials".path;
|
||||||
|
};
|
||||||
# RSS provider for websites that do not provide any feeds
|
# RSS provider for websites that do not provide any feeds
|
||||||
rss-bridge.enable = true;
|
rss-bridge.enable = true;
|
||||||
# Usenet client
|
# Usenet client
|
||||||
sabnzbd.enable = true;
|
sabnzbd.enable = true;
|
||||||
# Because I stilll need to play sysadmin
|
# The whole *arr software suite
|
||||||
ssh-server.enable = true;
|
servarr = {
|
||||||
# Recipe manager
|
enableAll = true;
|
||||||
tandoor-recipes = {
|
autobrr = {
|
||||||
enable = true;
|
sessionSecretFile = secrets."servarr/autobrr/session-secret".path;
|
||||||
secretKeyFile = secrets."tandoor-recipes/secret-key".path;
|
};
|
||||||
|
cross-seed = {
|
||||||
|
secretSettingsFile = secrets."servarr/cross-seed/configuration.json".path;
|
||||||
|
};
|
||||||
|
# ... But not Lidarr because I don't care for music that much
|
||||||
|
lidarr = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
# I only use Prowlarr nowadays
|
||||||
|
jackett = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
nzbhydra = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
# Because I still need to play sysadmin
|
||||||
|
ssh-server.enable = true;
|
||||||
# Torrent client and webui
|
# Torrent client and webui
|
||||||
transmission = {
|
transmission = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
35
modules/common/default.nix
Normal file
35
modules/common/default.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Modules that are common to various module systems
|
||||||
|
# Usually with very small differences, if any, between them.
|
||||||
|
{ lib, _class, ... }:
|
||||||
|
let
|
||||||
|
allowedClass = [
|
||||||
|
"darwin"
|
||||||
|
"home"
|
||||||
|
"nixos"
|
||||||
|
];
|
||||||
|
|
||||||
|
allowedClassString = lib.concatStringSep ", " (builtins.map lib.escapeNixString allowedClass);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./profiles
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = type != null;
|
||||||
|
message = ''
|
||||||
|
You must provide `type` as part of specialArgs to use the common modules.
|
||||||
|
It must be one of ${allowedClassString}.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = type != null -> builtins.elem type allowedClass;
|
||||||
|
message = ''
|
||||||
|
`type` specialArgs must be one of ${allowedClassString}.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
19
modules/common/profiles/bluetooth/default.nix
Normal file
19
modules/common/profiles/bluetooth/default.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ config, lib, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.bluetooth;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.bluetooth = with lib; {
|
||||||
|
enable = mkEnableOption "bluetooth profile";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.optionalAttrs (_class == "home") {
|
||||||
|
my.home.bluetooth.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
my.hardware.bluetooth.enable = true;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
25
modules/common/profiles/default.nix
Normal file
25
modules/common/profiles/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Configuration that spans across system and home, or are almagations of modules
|
||||||
|
{ config, lib, type, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./bluetooth
|
||||||
|
./devices
|
||||||
|
./gtk
|
||||||
|
./laptop
|
||||||
|
./wm
|
||||||
|
./x
|
||||||
|
];
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
# Transparently enable home-manager profiles as well
|
||||||
|
(lib.optionalAttrs (type != "home") {
|
||||||
|
home-manager.users.${config.my.user.name} = {
|
||||||
|
config = {
|
||||||
|
my = {
|
||||||
|
inherit (config.my) profiles;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
22
modules/common/profiles/devices/default.nix
Normal file
22
modules/common/profiles/devices/default.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, lib, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.devices;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.devices = with lib; {
|
||||||
|
enable = mkEnableOption "devices profile";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
my.hardware = {
|
||||||
|
ergodox.enable = true;
|
||||||
|
|
||||||
|
trackball.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# MTP devices auto-mount via file explorers
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
21
modules/common/profiles/gtk/default.nix
Normal file
21
modules/common/profiles/gtk/default.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{ config, lib, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.gtk;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.gtk = with lib; {
|
||||||
|
enable = mkEnableOption "gtk profile";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.optionalAttrs (_class == "home") {
|
||||||
|
# GTK theme configuration
|
||||||
|
my.home.gtk.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
# Allow setting GTK configuration using home-manager
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
27
modules/common/profiles/laptop/default.nix
Normal file
27
modules/common/profiles/laptop/default.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ config, lib, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.laptop;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.laptop = with lib; {
|
||||||
|
enable = mkEnableOption "laptop profile";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.optionalAttrs (_class == "home") {
|
||||||
|
# Enable battery notifications
|
||||||
|
my.home.power-alert.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
# Enable touchpad support
|
||||||
|
services.libinput.enable = true;
|
||||||
|
|
||||||
|
# Enable TLP power management
|
||||||
|
my.services.tlp.enable = true;
|
||||||
|
|
||||||
|
# Enable upower power management
|
||||||
|
my.hardware.upower.enable = true;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
38
modules/common/profiles/wm/default.nix
Normal file
38
modules/common/profiles/wm/default.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{ config, lib, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.wm;
|
||||||
|
|
||||||
|
applyWm = wm: configs: lib.mkIf (cfg.windowManager == wm) (lib.my.merge configs);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.wm = with lib; {
|
||||||
|
windowManager = mkOption {
|
||||||
|
type = with types; nullOr (enum [ "i3" ]);
|
||||||
|
default = null;
|
||||||
|
example = "i3";
|
||||||
|
description = "Which window manager to use";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(applyWm "i3" [
|
||||||
|
(lib.optionalAttrs (_class == "home") {
|
||||||
|
# i3 settings
|
||||||
|
my.home.wm.windowManager = "i3";
|
||||||
|
# Screenshot tool
|
||||||
|
my.home.flameshot.enable = true;
|
||||||
|
# Auto disk mounter
|
||||||
|
my.home.udiskie.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
# Enable i3
|
||||||
|
services.xserver.windowManager.i3.enable = true;
|
||||||
|
# udiskie fails if it can't find this dbus service
|
||||||
|
services.udisks2.enable = true;
|
||||||
|
# Ensure i3lock can actually unlock the session
|
||||||
|
security.pam.services.i3lock.enable = true;
|
||||||
|
})
|
||||||
|
])
|
||||||
|
];
|
||||||
|
}
|
||||||
27
modules/common/profiles/x/default.nix
Normal file
27
modules/common/profiles/x/default.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ config, lib, pkgs, _class, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.profiles.x;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.profiles.x = with lib; {
|
||||||
|
enable = mkEnableOption "X profile";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
(lib.optionalAttrs (_class == "home") {
|
||||||
|
# X configuration
|
||||||
|
my.home.x.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.optionalAttrs (_class == "nixos") {
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
# Nice wallpaper
|
||||||
|
services.xserver.displayManager.lightdm.background =
|
||||||
|
let
|
||||||
|
wallpapers = "${pkgs.plasma5Packages.plasma-workspace-wallpapers}/share/wallpapers";
|
||||||
|
in
|
||||||
|
"${wallpapers}/summer_1am/contents/images/2560x1600.jpg";
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,27 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.my.home.atuin;
|
cfg = config.my.home.atuin;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.atuin = with lib; {
|
options.my.home.atuin = with lib; {
|
||||||
enable = my.mkDisableOption "atuin configuration";
|
enable = my.mkDisableOption "atuin configuration";
|
||||||
|
|
||||||
|
# I want the full experience by default
|
||||||
|
package = mkPackageOption pkgs "atuin" { };
|
||||||
|
|
||||||
|
daemon = {
|
||||||
|
enable = my.mkDisableOption "atuin daemon";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.atuin = {
|
programs.atuin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
inherit (cfg) package;
|
||||||
|
|
||||||
|
daemon = lib.mkIf cfg.daemon.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
flags = [
|
flags = [
|
||||||
# I *despise* this hijacking of the up key, even though I use Ctrl-p
|
# I *despise* this hijacking of the up key, even though I use Ctrl-p
|
||||||
|
|
@ -17,6 +29,8 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
# Reasonable date format
|
||||||
|
dialect = "uk";
|
||||||
# The package is managed by Nix
|
# The package is managed by Nix
|
||||||
update_check = false;
|
update_check = false;
|
||||||
# I don't care for the fancy display
|
# I don't care for the fancy display
|
||||||
|
|
@ -25,6 +39,8 @@ in
|
||||||
search_mode = "skim";
|
search_mode = "skim";
|
||||||
# Show long command lines at the bottom
|
# Show long command lines at the bottom
|
||||||
show_preview = true;
|
show_preview = true;
|
||||||
|
# I like being able to edit my commands
|
||||||
|
enter_accept = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.my.home.bitwarden;
|
cfg = config.my.home.bitwarden;
|
||||||
in
|
in
|
||||||
|
|
@ -6,12 +6,7 @@ in
|
||||||
options.my.home.bitwarden = with lib; {
|
options.my.home.bitwarden = with lib; {
|
||||||
enable = my.mkDisableOption "bitwarden configuration";
|
enable = my.mkDisableOption "bitwarden configuration";
|
||||||
|
|
||||||
pinentry = mkOption {
|
pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; };
|
||||||
type = types.str;
|
|
||||||
default = "tty";
|
|
||||||
example = "gtk2";
|
|
||||||
description = "Which pinentry interface to use";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,13 @@ in
|
||||||
{
|
{
|
||||||
options.my.home.calibre = with lib; {
|
options.my.home.calibre = with lib; {
|
||||||
enable = mkEnableOption "calibre configuration";
|
enable = mkEnableOption "calibre configuration";
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "calibre" { };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
calibre
|
cfg.package
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
./bluetooth
|
./bluetooth
|
||||||
./calibre
|
./calibre
|
||||||
./comma
|
./comma
|
||||||
|
./delta
|
||||||
./dircolors
|
./dircolors
|
||||||
./direnv
|
./direnv
|
||||||
./discord
|
./discord
|
||||||
|
|
@ -39,6 +40,7 @@
|
||||||
./tmux
|
./tmux
|
||||||
./udiskie
|
./udiskie
|
||||||
./vim
|
./vim
|
||||||
|
./wget
|
||||||
./wm
|
./wm
|
||||||
./x
|
./x
|
||||||
./xdg
|
./xdg
|
||||||
|
|
@ -49,9 +51,6 @@
|
||||||
# First sane reproducible version
|
# First sane reproducible version
|
||||||
home.stateVersion = "20.09";
|
home.stateVersion = "20.09";
|
||||||
|
|
||||||
# Who am I?
|
|
||||||
home.username = "ambroisie";
|
|
||||||
|
|
||||||
# Start services automatically
|
# Start services automatically
|
||||||
systemd.user.startServices = "sd-switch";
|
systemd.user.startServices = "sd-switch";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
68
modules/home/delta/default.nix
Normal file
68
modules/home/delta/default.nix
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.delta;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.delta = with lib; {
|
||||||
|
enable = my.mkDisableOption "delta configuration";
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "delta" { };
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = my.mkDisableOption "git integration";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
# For its configuration
|
||||||
|
assertion = cfg.enable -> cfg.git.enable;
|
||||||
|
message = ''
|
||||||
|
`config.my.home.delta` must enable `config.my.home.delta.git` to be
|
||||||
|
properly configured.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = cfg.enable -> config.programs.git.enable;
|
||||||
|
message = ''
|
||||||
|
`config.my.home.delta` relies on `config.programs.git` to be
|
||||||
|
enabled.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
programs.git = lib.mkIf cfg.git.enable {
|
||||||
|
delta = {
|
||||||
|
enable = true;
|
||||||
|
inherit (cfg) package;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
features = "diff-highlight decorations";
|
||||||
|
|
||||||
|
# Less jarring style for `diff-highlight` emulation
|
||||||
|
diff-highlight = {
|
||||||
|
minus-style = "red";
|
||||||
|
minus-non-emph-style = "red";
|
||||||
|
minus-emph-style = "bold red 52";
|
||||||
|
|
||||||
|
plus-style = "green";
|
||||||
|
plus-non-emph-style = "green";
|
||||||
|
plus-emph-style = "bold green 22";
|
||||||
|
|
||||||
|
whitespace-error-style = "reverse red";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Personal preference for easier reading
|
||||||
|
decorations = {
|
||||||
|
commit-style = "raw"; # Do not recolor meta information
|
||||||
|
keep-plus-minus-markers = true;
|
||||||
|
paging = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -7,9 +7,9 @@ in
|
||||||
enable = my.mkDisableOption "direnv configuration";
|
enable = my.mkDisableOption "direnv configuration";
|
||||||
|
|
||||||
defaultFlake = mkOption {
|
defaultFlake = mkOption {
|
||||||
type = types.str;
|
type = with types; nullOr str;
|
||||||
default = "pkgs";
|
default = null;
|
||||||
example = "nixpkgs";
|
example = "pkgs";
|
||||||
description = ''
|
description = ''
|
||||||
Which flake from the registry should be used for
|
Which flake from the registry should be used for
|
||||||
<command>use pkgs</command> by default.
|
<command>use pkgs</command> by default.
|
||||||
|
|
@ -39,7 +39,7 @@ in
|
||||||
in
|
in
|
||||||
lib.my.genAttrs' files linkLibFile;
|
lib.my.genAttrs' files linkLibFile;
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = lib.mkIf (cfg.defaultFlake != null) {
|
||||||
DIRENV_DEFAULT_FLAKE = cfg.defaultFlake;
|
DIRENV_DEFAULT_FLAKE = cfg.defaultFlake;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
# shellcheck disable=2155
|
# shellcheck disable=2155
|
||||||
use_android() {
|
use_android() {
|
||||||
|
|
@ -32,10 +32,16 @@ use_android() {
|
||||||
-b|--build-tools)
|
-b|--build-tools)
|
||||||
build_tools_version="$2"
|
build_tools_version="$2"
|
||||||
shift 2
|
shift 2
|
||||||
|
if ! [ -e "$ANDROID_HOME/build-tools/$build_tools_version" ]; then
|
||||||
|
log_error "use_android: build-tools version '$build_tools_version' does not exist"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
-n|--ndk)
|
-n|--ndk)
|
||||||
ndk_version="$2"
|
ndk_version="$2"
|
||||||
shift 2
|
shift 2
|
||||||
|
if ! [ -e "$ANDROID_HOME/ndk/$ndk_version" ]; then
|
||||||
|
log_error "use_android: NDK version '$ndk_version' does not exist"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
--)
|
--)
|
||||||
shift
|
shift
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
use_pkgs() {
|
use_pkgs() {
|
||||||
if ! has nix; then
|
if ! has nix; then
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
layout_postgres() {
|
layout_postgres() {
|
||||||
if ! has postgres || ! has initdb; then
|
if ! has postgres || ! has initdb; then
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
layout_poetry() {
|
layout_poetry() {
|
||||||
if ! has poetry; then
|
if ! has poetry; then
|
||||||
|
|
@ -9,12 +9,12 @@ layout_poetry() {
|
||||||
|
|
||||||
if [[ ! -f pyproject.toml ]]; then
|
if [[ ! -f pyproject.toml ]]; then
|
||||||
# shellcheck disable=2016
|
# shellcheck disable=2016
|
||||||
log_error 'layout_poetry: no pyproject.toml found. Use `poetry new` or `poetry init` to create one first'
|
log_error 'layout_poetry: no pyproject.toml found. Use `poetry init` to create one first'
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create venv if it doesn't exist
|
# create venv if it doesn't exist
|
||||||
poetry run true
|
poetry run -q -- true
|
||||||
|
|
||||||
# shellcheck disable=2155
|
# shellcheck disable=2155
|
||||||
export VIRTUAL_ENV=$(poetry env info --path)
|
export VIRTUAL_ENV=$(poetry env info --path)
|
||||||
|
|
@ -23,3 +23,35 @@ layout_poetry() {
|
||||||
watch_file pyproject.toml
|
watch_file pyproject.toml
|
||||||
watch_file poetry.lock
|
watch_file poetry.lock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
layout_uv() {
|
||||||
|
if ! has uv; then
|
||||||
|
# shellcheck disable=2016
|
||||||
|
log_error 'layout_uv: `uv` is not in PATH'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f pyproject.toml ]]; then
|
||||||
|
# shellcheck disable=2016
|
||||||
|
log_error 'layout_uv: no pyproject.toml found. Use `uv init` to create one first'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local default_venv="$PWD/.venv"
|
||||||
|
: "${VIRTUAL_ENV:=$default_venv}"
|
||||||
|
|
||||||
|
# Use non-default venv path if required
|
||||||
|
if [ "$VIRTUAL_ENV" != "$default_venv" ]; then
|
||||||
|
export UV_PROJECT_ENVIRONMENT="$VIRTUAL_ENV"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create venv if it doesn't exist
|
||||||
|
uv venv -q --allow-existing
|
||||||
|
|
||||||
|
export VIRTUAL_ENV
|
||||||
|
export UV_ACTIVE=1
|
||||||
|
PATH_add "$VIRTUAL_ENV/bin"
|
||||||
|
watch_file pyproject.toml
|
||||||
|
watch_file uv.lock
|
||||||
|
watch_file .python-version
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,13 @@ in
|
||||||
{
|
{
|
||||||
options.my.home.discord = with lib; {
|
options.my.home.discord = with lib; {
|
||||||
enable = mkEnableOption "discord configuration";
|
enable = mkEnableOption "discord configuration";
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "discord" { };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
discord
|
cfg.package
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile."discord/settings.json".source =
|
xdg.configFile."discord/settings.json".source =
|
||||||
|
|
|
||||||
|
|
@ -61,19 +61,21 @@ in
|
||||||
"ui.systemUsesDarkTheme" = true; # Dark mode
|
"ui.systemUsesDarkTheme" = true; # Dark mode
|
||||||
};
|
};
|
||||||
|
|
||||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
|
extensions = {
|
||||||
bitwarden
|
packages = with pkgs.nur.repos.rycee.firefox-addons; ([
|
||||||
consent-o-matic
|
bitwarden
|
||||||
form-history-control
|
consent-o-matic
|
||||||
reddit-comment-collapser
|
form-history-control
|
||||||
reddit-enhancement-suite
|
reddit-comment-collapser
|
||||||
refined-github
|
reddit-enhancement-suite
|
||||||
sponsorblock
|
refined-github
|
||||||
ublock-origin
|
sponsorblock
|
||||||
]
|
ublock-origin
|
||||||
++ lib.optional (cfg.tridactyl.enable) tridactyl
|
]
|
||||||
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
|
++ lib.optional (cfg.tridactyl.enable) tridactyl
|
||||||
);
|
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
xdg.configFile."tridactyl/tridactylrc".source = pkgs.substituteAll {
|
xdg.configFile."tridactyl/tridactylrc".source = pkgs.replaceVars ./tridactylrc {
|
||||||
src = ./tridactylrc;
|
|
||||||
|
|
||||||
editorcmd = lib.concatStringsSep " " [
|
editorcmd = lib.concatStringsSep " " [
|
||||||
# Use my configured terminal
|
# Use my configured terminal
|
||||||
term
|
term
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
" Use dark color scheme
|
" Use dark color scheme
|
||||||
colorscheme dark
|
colorscheme dark
|
||||||
|
|
||||||
" Make tridactyl open Vim in my prefered terminal
|
" Make tridactyl open Vim in my preferred terminal
|
||||||
set editorcmd @editorcmd@
|
set editorcmd @editorcmd@
|
||||||
|
|
||||||
" Remove editor file after use
|
" Remove editor file after use
|
||||||
|
|
@ -15,8 +15,8 @@ bind --mode=input <C-i> editor_rm
|
||||||
|
|
||||||
" Binds {{{
|
" Binds {{{
|
||||||
" Reddit et al. {{{
|
" Reddit et al. {{{
|
||||||
" Toggle comments on Reddit, Hacker News, Lobste.rs
|
" Toggle comments on Reddit, Hacker News, Lobste.rs, LWN
|
||||||
bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"]
|
bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"],[class="CommentTitle"]
|
||||||
|
|
||||||
" Make `gu` take me back to subreddit from comments
|
" Make `gu` take me back to subreddit from comments
|
||||||
bindurl reddit.com gu urlparent 3
|
bindurl reddit.com gu urlparent 3
|
||||||
|
|
@ -26,8 +26,8 @@ bindurl www.google.com f hint -Jc #search a
|
||||||
bindurl www.google.com F hint -Jbc #search a
|
bindurl www.google.com F hint -Jbc #search a
|
||||||
|
|
||||||
" Only hint search results on DuckDuckGo
|
" Only hint search results on DuckDuckGo
|
||||||
bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result-title-a"]
|
bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result"]
|
||||||
bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result-title-a"]
|
bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result"]
|
||||||
|
|
||||||
" Only hint item pages on Hacker News
|
" Only hint item pages on Hacker News
|
||||||
bindurl news.ycombinator.com ;f hint -Jc .age > a
|
bindurl news.ycombinator.com ;f hint -Jc .age > a
|
||||||
|
|
@ -69,8 +69,6 @@ unbind <C-f>
|
||||||
" Redirections {{{
|
" Redirections {{{
|
||||||
" Always redirect Reddit to the old site
|
" Always redirect Reddit to the old site
|
||||||
autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old")
|
autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old")
|
||||||
" Use a better Twitter front-end
|
|
||||||
autocmd DocStart ^http(s?)://twitter.com js tri.excmds.urlmodify("-t", "twitter.com", "nitter.net")
|
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Disabled websites {{{
|
" Disabled websites {{{
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,29 @@ in
|
||||||
options.my.home.gdb = with lib; {
|
options.my.home.gdb = with lib; {
|
||||||
enable = my.mkDisableOption "gdb configuration";
|
enable = my.mkDisableOption "gdb configuration";
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "gdb" { };
|
||||||
|
|
||||||
rr = {
|
rr = {
|
||||||
enable = my.mkDisableOption "rr configuration";
|
enable = my.mkDisableOption "rr configuration";
|
||||||
|
|
||||||
package = mkOption {
|
package = mkPackageOption pkgs "rr" { };
|
||||||
type = types.package;
|
|
||||||
default = pkgs.rr;
|
|
||||||
defaultText = literalExample "pkgs.rr";
|
|
||||||
description = ''
|
|
||||||
Package providing rr
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
gdb
|
cfg.package
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile."gdb/gdbinit".source = ./gdbinit;
|
xdg = {
|
||||||
|
configFile."gdb/gdbinit".source = ./gdbinit;
|
||||||
|
stateFile."gdb/.keep".text = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
GDBHISTFILE = "${config.xdg.stateHome}/gdb/gdb_history";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
(lib.mkIf cfg.rr.enable {
|
(lib.mkIf cfg.rr.enable {
|
||||||
|
|
|
||||||
|
|
@ -42,34 +42,6 @@ in
|
||||||
|
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
|
|
||||||
delta = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
options = {
|
|
||||||
features = "diff-highlight decorations";
|
|
||||||
|
|
||||||
# Less jarring style for `diff-highlight` emulation
|
|
||||||
diff-highlight = {
|
|
||||||
minus-style = "red";
|
|
||||||
minus-non-emph-style = "red";
|
|
||||||
minus-emph-style = "bold red 52";
|
|
||||||
|
|
||||||
plus-style = "green";
|
|
||||||
plus-non-emph-style = "green";
|
|
||||||
plus-emph-style = "bold green 22";
|
|
||||||
|
|
||||||
whitespace-error-style = "reverse red";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Personal preference for easier reading
|
|
||||||
decorations = {
|
|
||||||
commit-style = "raw"; # Do not recolor meta information
|
|
||||||
keep-plus-minus-markers = true;
|
|
||||||
paging = "always";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# There's more
|
# There's more
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
# Makes it a bit more readable
|
# Makes it a bit more readable
|
||||||
|
|
@ -123,11 +95,6 @@ in
|
||||||
defaultBranch = "main";
|
defaultBranch = "main";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Local configuration, not-versioned
|
|
||||||
include = {
|
|
||||||
path = "config.local";
|
|
||||||
};
|
|
||||||
|
|
||||||
merge = {
|
merge = {
|
||||||
conflictStyle = "zdiff3";
|
conflictStyle = "zdiff3";
|
||||||
};
|
};
|
||||||
|
|
@ -148,6 +115,10 @@ in
|
||||||
autoStash = true;
|
autoStash = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rerere = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
|
||||||
url = {
|
url = {
|
||||||
"git@git.belanyi.fr:" = {
|
"git@git.belanyi.fr:" = {
|
||||||
insteadOf = "https://git.belanyi.fr/";
|
insteadOf = "https://git.belanyi.fr/";
|
||||||
|
|
@ -163,8 +134,8 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Multiple identities
|
includes = lib.mkAfter [
|
||||||
includes = [
|
# Multiple identities
|
||||||
{
|
{
|
||||||
condition = "gitdir:~/git/EPITA/";
|
condition = "gitdir:~/git/EPITA/";
|
||||||
contents = {
|
contents = {
|
||||||
|
|
@ -183,6 +154,10 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
# Local configuration, not-versioned
|
||||||
|
{
|
||||||
|
path = "config.local";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
ignores =
|
ignores =
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.my.home.gpg;
|
cfg = config.my.home.gpg;
|
||||||
in
|
in
|
||||||
|
|
@ -6,12 +6,7 @@ in
|
||||||
options.my.home.gpg = with lib; {
|
options.my.home.gpg = with lib; {
|
||||||
enable = my.mkDisableOption "gpg configuration";
|
enable = my.mkDisableOption "gpg configuration";
|
||||||
|
|
||||||
pinentry = mkOption {
|
pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; };
|
||||||
type = types.str;
|
|
||||||
default = "tty";
|
|
||||||
example = "gtk2";
|
|
||||||
description = "Which pinentry interface to use";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
@ -22,7 +17,7 @@ in
|
||||||
services.gpg-agent = {
|
services.gpg-agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSshSupport = true; # One agent to rule them all
|
enableSshSupport = true; # One agent to rule them all
|
||||||
pinentryFlavor = cfg.pinentry;
|
pinentry.package = cfg.pinentry;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
allow-loopback-pinentry
|
allow-loopback-pinentry
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
package = pkgs.gnome.gnome-themes-extra;
|
package = pkgs.gnome-themes-extra;
|
||||||
name = "Adwaita";
|
name = "Adwaita";
|
||||||
};
|
};
|
||||||
|
|
||||||
theme = {
|
theme = {
|
||||||
package = pkgs.gnome.gnome-themes-extra;
|
package = pkgs.gnome-themes-extra;
|
||||||
name = "Adwaita";
|
name = "Adwaita";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ in
|
||||||
strings = "0;32";
|
strings = "0;32";
|
||||||
arrays = "1;39";
|
arrays = "1;39";
|
||||||
objects = "1;39";
|
objects = "1;39";
|
||||||
|
objectKeys = "1;34";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,6 @@ let
|
||||||
himalaya = {
|
himalaya = {
|
||||||
enable = cfg.himalaya.enable;
|
enable = cfg.himalaya.enable;
|
||||||
# FIXME: try to actually configure it at some point
|
# FIXME: try to actually configure it at some point
|
||||||
backend = "imap";
|
|
||||||
sender = "smtp";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
msmtp = {
|
msmtp = {
|
||||||
|
|
@ -28,20 +26,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
migaduConfig = {
|
migaduConfig = {
|
||||||
imap = {
|
flavor = "migadu.com";
|
||||||
host = "imap.migadu.com";
|
|
||||||
port = 993;
|
|
||||||
tls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
smtp = {
|
|
||||||
host = "smtp.migadu.com";
|
|
||||||
port = 465;
|
|
||||||
tls = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gmailConfig = {
|
gmailConfig = {
|
||||||
|
|
@ -60,7 +45,7 @@ in
|
||||||
{
|
{
|
||||||
config.accounts.email.accounts = {
|
config.accounts.email.accounts = {
|
||||||
personal = lib.mkMerge [
|
personal = lib.mkMerge [
|
||||||
# Common configuraton
|
# Common configuration
|
||||||
(mkConfig {
|
(mkConfig {
|
||||||
domain = "belanyi.fr";
|
domain = "belanyi.fr";
|
||||||
address = "bruno";
|
address = "bruno";
|
||||||
|
|
@ -72,7 +57,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
gmail = lib.mkMerge [
|
gmail = lib.mkMerge [
|
||||||
# Common configuraton
|
# Common configuration
|
||||||
(mkConfig {
|
(mkConfig {
|
||||||
domain = "gmail.com";
|
domain = "gmail.com";
|
||||||
address = "brunobelanyi";
|
address = "brunobelanyi";
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ in
|
||||||
|
|
||||||
scripts = [
|
scripts = [
|
||||||
pkgs.mpvScripts.mpris # Allow controlling using media keys
|
pkgs.mpvScripts.mpris # Allow controlling using media keys
|
||||||
|
pkgs.mpvScripts.mpv-cheatsheet # Show some simple mappings on '?'
|
||||||
pkgs.mpvScripts.uosc # Nicer UI
|
pkgs.mpvScripts.uosc # Nicer UI
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ let
|
||||||
# Use pinned nixpkgs when using `nix run pkgs#<whatever>`
|
# Use pinned nixpkgs when using `nix run pkgs#<whatever>`
|
||||||
pkgs = inputs.nixpkgs;
|
pkgs = inputs.nixpkgs;
|
||||||
}
|
}
|
||||||
(lib.optionalAttrs cfg.overrideNixpkgs {
|
(lib.optionalAttrs cfg.inputs.overrideNixpkgs {
|
||||||
# ... And with `nix run nixpkgs#<whatever>`
|
# ... And with `nix run nixpkgs#<whatever>`
|
||||||
nixpkgs = inputs.nixpkgs;
|
nixpkgs = inputs.nixpkgs;
|
||||||
})
|
})
|
||||||
|
|
@ -22,20 +22,30 @@ in
|
||||||
options.my.home.nix = with lib; {
|
options.my.home.nix = with lib; {
|
||||||
enable = my.mkDisableOption "nix configuration";
|
enable = my.mkDisableOption "nix configuration";
|
||||||
|
|
||||||
linkInputs = my.mkDisableOption "link inputs to `$XDG_CONFIG_HOME/nix/inputs`";
|
gc = {
|
||||||
|
enable = my.mkDisableOption "nix GC configuration";
|
||||||
|
};
|
||||||
|
|
||||||
addToRegistry = my.mkDisableOption "add inputs and self to registry";
|
cache = {
|
||||||
|
selfHosted = my.mkDisableOption "self-hosted cache";
|
||||||
|
};
|
||||||
|
|
||||||
addToNixPath = my.mkDisableOption "add inputs and self to nix path";
|
inputs = {
|
||||||
|
link = my.mkDisableOption "link inputs to `$XDG_CONFIG_HOME/nix/inputs/`";
|
||||||
|
|
||||||
overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version";
|
addToRegistry = my.mkDisableOption "add inputs and self to registry";
|
||||||
|
|
||||||
|
addToNixPath = my.mkDisableOption "add inputs and self to nix path";
|
||||||
|
|
||||||
|
overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
{
|
{
|
||||||
assertions = [
|
assertions = [
|
||||||
{
|
{
|
||||||
assertion = cfg.addToNixPath -> cfg.linkInputs;
|
assertion = cfg.inputs.addToNixPath -> cfg.inputs.link;
|
||||||
message = ''
|
message = ''
|
||||||
enabling `my.home.nix.addToNixPath` needs to have
|
enabling `my.home.nix.addToNixPath` needs to have
|
||||||
`my.home.nix.linkInputs = true`
|
`my.home.nix.linkInputs = true`
|
||||||
|
|
@ -54,7 +64,37 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
(lib.mkIf cfg.addToRegistry {
|
(lib.mkIf cfg.gc.enable {
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
|
||||||
|
# Every week, with some wiggle room
|
||||||
|
frequency = "weekly";
|
||||||
|
randomizedDelaySec = "10min";
|
||||||
|
|
||||||
|
# Use a persistent timer for e.g: laptops
|
||||||
|
persistent = true;
|
||||||
|
|
||||||
|
# Delete old profiles automatically after 15 days
|
||||||
|
options = "--delete-older-than 15d";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.cache.selfHosted {
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
extra-substituters = [
|
||||||
|
"https://cache.belanyi.fr/"
|
||||||
|
];
|
||||||
|
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"cache.belanyi.fr:LPhrTqufwfxTceg1nRWueDWf7/2zSVY9K00pq2UI7tw="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.inputs.addToRegistry {
|
||||||
nix.registry =
|
nix.registry =
|
||||||
let
|
let
|
||||||
makeEntry = v: { flake = v; };
|
makeEntry = v: { flake = v; };
|
||||||
|
|
@ -63,7 +103,7 @@ in
|
||||||
makeEntries channels;
|
makeEntries channels;
|
||||||
})
|
})
|
||||||
|
|
||||||
(lib.mkIf cfg.linkInputs {
|
(lib.mkIf cfg.inputs.link {
|
||||||
xdg.configFile =
|
xdg.configFile =
|
||||||
let
|
let
|
||||||
makeLink = n: v: {
|
makeLink = n: v: {
|
||||||
|
|
@ -75,8 +115,8 @@ in
|
||||||
makeLinks channels;
|
makeLinks channels;
|
||||||
})
|
})
|
||||||
|
|
||||||
(lib.mkIf cfg.addToNixPath {
|
(lib.mkIf cfg.inputs.addToNixPath {
|
||||||
home.sessionVariables.NIX_PATH = "${config.xdg.configHome}/nix/inputs\${NIX_PATH:+:$NIX_PATH}";
|
nix.nixPath = [ "${config.xdg.configHome}/nix/inputs" ];
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, osConfig, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.my.home.packages;
|
cfg = config.my.home.packages;
|
||||||
|
useGlobalPkgs = osConfig.home-manager.useGlobalPkgs or false;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.packages = with lib; {
|
options.my.home.packages = with lib; {
|
||||||
|
|
@ -26,9 +27,10 @@ in
|
||||||
fd
|
fd
|
||||||
file
|
file
|
||||||
ripgrep
|
ripgrep
|
||||||
|
tree
|
||||||
] ++ cfg.additionalPackages);
|
] ++ cfg.additionalPackages);
|
||||||
|
|
||||||
nixpkgs.config = {
|
nixpkgs.config = lib.mkIf (!useGlobalPkgs) {
|
||||||
inherit (cfg) allowAliases allowUnfree;
|
inherit (cfg) allowAliases allowUnfree;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,12 @@ in
|
||||||
# Clear the screen on start and exit
|
# Clear the screen on start and exit
|
||||||
LESS = "-R -+X -c";
|
LESS = "-R -+X -c";
|
||||||
# Better XDG compliance
|
# Better XDG compliance
|
||||||
LESSHISTFILE = "${config.xdg.dataHome}/less/history";
|
LESSHISTFILE = "${config.xdg.stateHome}/less/history";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.configFile."lesskey".text = ''
|
||||||
|
# Quit without clearing the screen on `Q`
|
||||||
|
Q toggle-option -!^Predraw-on-quit\nq
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,6 +1,6 @@
|
||||||
# Common secrets
|
# Common secrets
|
||||||
let
|
let
|
||||||
keys = import ../../keys;
|
keys = import ../../../keys;
|
||||||
|
|
||||||
all = builtins.attrValues keys.users;
|
all = builtins.attrValues keys.users;
|
||||||
in
|
in
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
porthos = {
|
porthos = {
|
||||||
hostname = "91.121.177.163";
|
hostname = "37.187.146.15";
|
||||||
identityFile = "~/.ssh/shared_rsa";
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
user = "ambroisie";
|
user = "ambroisie";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,14 @@ let
|
||||||
config.my.home.x.enable
|
config.my.home.x.enable
|
||||||
(config.my.home.wm.windowManager != null)
|
(config.my.home.wm.windowManager != null)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
mkTerminalFeature = opt: flag:
|
||||||
|
let
|
||||||
|
mkFlag = term: ''set -as terminal-features ",${term}:${flag}"'';
|
||||||
|
enabledTerminals = lib.filterAttrs (_: v: v.${opt}) cfg.terminalFeatures;
|
||||||
|
terminals = lib.attrNames enabledTerminals;
|
||||||
|
in
|
||||||
|
lib.concatMapStringsSep "\n" mkFlag terminals;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.tmux = with lib; {
|
options.my.home.tmux = with lib; {
|
||||||
|
|
@ -12,16 +20,24 @@ in
|
||||||
|
|
||||||
enablePassthrough = mkEnableOption "tmux DCS passthrough sequence";
|
enablePassthrough = mkEnableOption "tmux DCS passthrough sequence";
|
||||||
|
|
||||||
trueColorTerminals = mkOption {
|
enableResurrect = mkEnableOption "tmux-resurrect plugin";
|
||||||
type = with types; listOf str;
|
|
||||||
default = lib.my.nullableToList config.my.home.terminal.program;
|
terminalFeatures = mkOption {
|
||||||
defaultText = ''
|
type = with types; attrsOf (submodule {
|
||||||
`[ config.my.home.terminal.program ]` if it is non-null, otherwise an
|
options = {
|
||||||
empty list.
|
hyperlinks = my.mkDisableOption "hyperlinks through OSC8";
|
||||||
|
|
||||||
|
trueColor = my.mkDisableOption "24-bit (RGB) color support";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
default = { ${config.my.home.terminal.program} = { }; };
|
||||||
|
defaultText = literalExpression ''
|
||||||
|
{ ''${config.my.home.terminal.program} = { }; };
|
||||||
'';
|
'';
|
||||||
example = [ "xterm-256color" ];
|
example = { xterm-256color = { }; };
|
||||||
description = ''
|
description = ''
|
||||||
$TERM values which should be considered to always support 24-bit color.
|
$TERM values which should be considered to have additional features.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -32,10 +48,13 @@ in
|
||||||
keyMode = "vi"; # Home-row keys and other niceties
|
keyMode = "vi"; # Home-row keys and other niceties
|
||||||
clock24 = true; # I'm one of those heathens
|
clock24 = true; # I'm one of those heathens
|
||||||
escapeTime = 0; # Let vim do its thing instead
|
escapeTime = 0; # Let vim do its thing instead
|
||||||
historyLimit = 50000; # Bigger buffer
|
historyLimit = 100000; # Bigger buffer
|
||||||
|
mouse = false; # I dislike mouse support
|
||||||
|
focusEvents = true; # Report focus events
|
||||||
terminal = "tmux-256color"; # I want accurate termcap info
|
terminal = "tmux-256color"; # I want accurate termcap info
|
||||||
|
aggressiveResize = true; # Automatic resize when switching client size
|
||||||
|
|
||||||
plugins = with pkgs.tmuxPlugins; [
|
plugins = with pkgs.tmuxPlugins; builtins.filter (attr: attr != { }) [
|
||||||
# Open high-lighted files in copy mode
|
# Open high-lighted files in copy mode
|
||||||
open
|
open
|
||||||
# Better pane management
|
# Better pane management
|
||||||
|
|
@ -63,9 +82,23 @@ in
|
||||||
set -g status-right '#{prefix_highlight} %a %Y-%m-%d %H:%M'
|
set -g status-right '#{prefix_highlight} %a %Y-%m-%d %H:%M'
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
# Resurrect sessions
|
||||||
|
(lib.optionalAttrs cfg.enableResurrect {
|
||||||
|
plugin = resurrect;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @resurrect-dir '${config.xdg.stateHome}/tmux/resurrect'
|
||||||
|
'';
|
||||||
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
# Refresh configuration
|
||||||
|
bind-key -N "Source tmux.conf" R source-file ${config.xdg.configHome}/tmux/tmux.conf \; display-message "Sourced tmux.conf!"
|
||||||
|
|
||||||
|
# Accept sloppy Ctrl key when switching windows, on top of default mapping
|
||||||
|
bind-key -N "Select the previous window" C-p previous-window
|
||||||
|
bind-key -N "Select the next window" C-n next-window
|
||||||
|
|
||||||
# Better vim mode
|
# Better vim mode
|
||||||
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||||
${
|
${
|
||||||
|
|
@ -89,13 +122,10 @@ in
|
||||||
''
|
''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Force OSC8 hyperlinks for each relevant $TERM
|
||||||
|
${mkTerminalFeature "hyperlinks" "hyperlinks"}
|
||||||
# Force 24-bit color for each relevant $TERM
|
# Force 24-bit color for each relevant $TERM
|
||||||
${
|
${mkTerminalFeature "trueColor" "RGB"}
|
||||||
let
|
|
||||||
mkTcFlag = term: ''set -as terminal-features ",${term}:RGB"'';
|
|
||||||
in
|
|
||||||
lib.concatMapStringsSep "\n" mkTcFlag cfg.trueColorTerminals
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6
modules/home/vim/after/ftplugin/gn.vim
Normal file
6
modules/home/vim/after/ftplugin/gn.vim
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
" Create the `b:undo_ftplugin` variable if it doesn't exist
|
||||||
|
call ftplugined#check_undo_ft()
|
||||||
|
|
||||||
|
" Set comment string, as it seems that no official GN support exists upstream
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
let b:undo_ftplugin.='|setlocal commentstring<'
|
||||||
6
modules/home/vim/after/ftplugin/json.vim
Normal file
6
modules/home/vim/after/ftplugin/json.vim
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
" Create the `b:undo_ftplugin` variable if it doesn't exist
|
||||||
|
call ftplugined#check_undo_ft()
|
||||||
|
|
||||||
|
" Use a small indentation value on JSON files
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
let b:undo_ftplugin.='|setlocal shiftwidth<'
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
" Create the `b:undo_ftplugin` variable if it doesn't exist
|
|
||||||
call ftplugined#check_undo_ft()
|
|
||||||
|
|
||||||
" Don't show Netrw in buffer list
|
|
||||||
setlocal bufhidden=delete
|
|
||||||
let b:undo_ftplugin='|setlocal bufhidden<'
|
|
||||||
6
modules/home/vim/after/ftplugin/query.vim
Normal file
6
modules/home/vim/after/ftplugin/query.vim
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
" Create the `b:undo_ftplugin` variable if it doesn't exist
|
||||||
|
call ftplugined#check_undo_ft()
|
||||||
|
|
||||||
|
" Use a small indentation value on query files
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
let b:undo_ftplugin.='|setlocal shiftwidth<'
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue