Compare commits
127 commits
pancake-sd
...
main
Author | SHA1 | Date | |
---|---|---|---|
f4f0691647 | |||
826146df9d | |||
8406723988 | |||
ab0dfe08c7 | |||
553a07f0a9 | |||
59de12e892 | |||
2f7429a2c8 | |||
4b458e7cd8 | |||
f8ac4c667d | |||
72303fd21c | |||
09754dbaa8 | |||
1448566c38 | |||
9f92e1665e | |||
8f22c8a77d | |||
91165ea563 | |||
6cc04504a4 | |||
cf125f8cd2 | |||
a5635bc948 | |||
b5e3bf8e54 | |||
a6db9e3b8a | |||
5efbd424b0 | |||
646836d08d | |||
7f7223d85f | |||
471434366b | |||
faa35e268e | |||
44bf0ca489 | |||
a1dd96a68b | |||
bba29fa1ea | |||
6519ab7f06 | |||
8a75f0e7de | |||
f31e941d6c | |||
bf9eb5bec2 | |||
94e3b7dc93 | |||
b59e592967 | |||
a4d1e70c5d | |||
f59a8f3fec | |||
87c369e48f | |||
8b53c43e26 | |||
1cadfda410 | |||
d76a9f7f3a | |||
47d703d9d1 | |||
066c0a5a74 | |||
f5096f3917 | |||
131b4b2614 | |||
a82a616f11 | |||
2e7c178862 | |||
81d442200b | |||
ba315d4eb0 | |||
61cff09280 | |||
0250624887 | |||
24efa5183a | |||
f0de5bb3fd | |||
85331ac96b | |||
18210f6778 | |||
2c6963c7be | |||
322b594936 | |||
5efe1463a3 | |||
6a2020e24b | |||
955c38bc63 | |||
c4aade597a | |||
956fae1f04 | |||
d23e73a4ba | |||
0c9823a5aa | |||
9877335f4b | |||
0992f2f308 | |||
3684b35d59 | |||
9567b06957 | |||
ce0b78bace | |||
d2b07a1ec1 | |||
84bf386306 | |||
9dad1e07cb | |||
ff7354c661 | |||
1ca80eb95d | |||
ee2baa3f19 | |||
5e877bd3d0 | |||
3f68b25133 | |||
a1c82ab6f3 | |||
618a6b544f | |||
ad02597200 | |||
776b817675 | |||
947941729c | |||
9d71fdb81f | |||
b219d4d5de | |||
579a3ada77 | |||
df2f9668f1 | |||
0029f8f822 | |||
78f94a6429 | |||
11fb3de60c | |||
c9d700390c | |||
b131f134bc | |||
81e06a0513 | |||
258cce19fb | |||
3510da9657 | |||
95ff04af25 | |||
a31dbdaf0f | |||
1c449848e2 | |||
30c82dcb4f | |||
d0ba9ca90b | |||
4e0c1fbbb4 | |||
4f015ecb45 | |||
67048909a9 | |||
b07c255869 | |||
069a65d4c7 | |||
b2a6740256 | |||
d79a34328a | |||
0506c6c92f | |||
1e55f3901c | |||
f9837b7cab | |||
443ea96d1f | |||
da557a7b7e | |||
cad577b193 | |||
a9a3ee8413 | |||
61b1399131 | |||
7367b2d1a5 | |||
b1a1955786 | |||
80da2cfc70 | |||
84c2b18dfa | |||
7b48435796 | |||
6ae187f7c6 | |||
5fc61d955b | |||
c6f24e39c1 | |||
ca047c1885 | |||
42e66561b7 | |||
750b202a42 | |||
5e3715f8f7 | |||
c1cb989017 | |||
4fa0aed92e |
86 changed files with 1699 additions and 2575 deletions
33
.github/workflows/build-machines-and-homes.yml
vendored
33
.github/workflows/build-machines-and-homes.yml
vendored
|
@ -6,17 +6,14 @@ on:
|
|||
jobs:
|
||||
build-machines:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
machine:
|
||||
# - chunk
|
||||
# - ytnix
|
||||
# - titan
|
||||
- pancake
|
||||
- chunk
|
||||
- ytnix
|
||||
os:
|
||||
# - ubuntu-latest
|
||||
- ubuntu-24.04-arm
|
||||
- ubuntu-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- name: Maximize build disk space
|
||||
uses: easimon/maximize-build-space@v10
|
||||
|
@ -44,12 +41,6 @@ jobs:
|
|||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
useDaemon: false
|
||||
installCommand: nix profile install nixpkgs#cachix
|
||||
- name: Setup Attic cache
|
||||
uses: ryanccn/attic-action@v0
|
||||
with:
|
||||
endpoint: ${{ vars.ATTIC_ENDPOINT }}
|
||||
cache: ${{ vars.ATTIC_CACHE }}
|
||||
token: ${{ secrets.ATTIC_TOKEN }}
|
||||
- name: Restore and cache Nix store
|
||||
uses: nix-community/cache-nix-action@v5.1.0
|
||||
with:
|
||||
|
@ -67,14 +58,7 @@ jobs:
|
|||
purge-primary-key: never
|
||||
# always save the cache
|
||||
save-always: true
|
||||
# - run: nix build -L .#nixosConfigurations.${{ matrix.machine }}.config.system.build.toplevel
|
||||
# - run: nix run -L github:nix-community/nixos-generators -- --flake .#pancake -f sd-aarch64 --system aarch64-linux
|
||||
- run: nix build -L .#nixosConfigurations.pancake.config.formats.sd-aarch64
|
||||
- name: upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: image
|
||||
path: result/
|
||||
- run: nix build -L .#nixosConfigurations.${{ matrix.machine }}.config.system.build.toplevel
|
||||
build-homes:
|
||||
strategy:
|
||||
matrix:
|
||||
|
@ -85,7 +69,6 @@ jobs:
|
|||
- ubuntu-latest
|
||||
# - macos-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- name: Maximize build disk space
|
||||
uses: easimon/maximize-build-space@v10
|
||||
|
@ -109,12 +92,6 @@ jobs:
|
|||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
useDaemon: false
|
||||
installCommand: nix profile install nixpkgs#cachix
|
||||
- name: Setup Attic cache
|
||||
uses: ryanccn/attic-action@v0
|
||||
with:
|
||||
endpoint: ${{ vars.ATTIC_ENDPOINT }}
|
||||
cache: ${{ vars.ATTIC_CACHE }}
|
||||
token: ${{ secrets.ATTIC_TOKEN }}
|
||||
- name: Restore and cache Nix store
|
||||
uses: nix-community/cache-nix-action@v5.1.0
|
||||
with:
|
||||
|
|
33
.github/workflows/build-packages.yml
vendored
33
.github/workflows/build-packages.yml
vendored
|
@ -9,51 +9,30 @@ on:
|
|||
jobs:
|
||||
build-packages:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
package:
|
||||
- github:cything/nixpkgs/928e0c6874ab3e759305e93f806a4cf559645677#alvr
|
||||
- github:cything/nixpkgs/8929e1256ceec677dd57fce405cdaca23176399b#lact
|
||||
- ${{ inputs.package }}
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- ubuntu-24.04-arm
|
||||
- macos-latest
|
||||
- macos-13
|
||||
runs-on: ${{ matrix.os }}
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v30
|
||||
|
||||
- name: Sync repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: cachix/cachix-action@v14
|
||||
with:
|
||||
name: cything
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
useDaemon: false
|
||||
installCommand: nix profile install nixpkgs#cachix
|
||||
- name: Setup Attic cache
|
||||
uses: ryanccn/attic-action@v0
|
||||
with:
|
||||
endpoint: ${{ vars.ATTIC_ENDPOINT }}
|
||||
cache: ${{ vars.ATTIC_CACHE }}
|
||||
token: ${{ secrets.ATTIC_TOKEN }}
|
||||
- name: Restore and cache Nix store
|
||||
uses: nix-community/cache-nix-action@v5.1.0
|
||||
with:
|
||||
# restore and save a cache using this key
|
||||
primary-key: nix-${{ runner.os }}-${{ matrix.package }}-${{ hashFiles('**/*.nix', 'flake.lock') }}
|
||||
# if there's no cache hit, restore a cache by this prefix
|
||||
restore-prefixes-first-match: nix-${{ runner.os }}-${{ matrix.package }}-
|
||||
# do purge caches
|
||||
purge: true
|
||||
# purge all versions of the cache
|
||||
purge-prefixes: nix-${{ runner.os }}-
|
||||
# created more than this number of seconds ago relative to the start of the `Post Restore` phase
|
||||
purge-last-accessed: 86400
|
||||
# except the version with the `primary-key`, if it exists
|
||||
purge-primary-key: never
|
||||
# always save the cache
|
||||
save-always: true
|
||||
|
||||
- run: nix build -L ${{ matrix.package }}
|
||||
|
|
16
.sops.yaml
16
.sops.yaml
|
@ -108,3 +108,19 @@ creation_rules:
|
|||
- age:
|
||||
- *chunk
|
||||
- *cy
|
||||
- path_regex: secrets/yt/(.*).yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *yt
|
||||
- *cy
|
||||
- path_regex: secrets/services/zipline.yaml
|
||||
key_groups:
|
||||
- age:
|
||||
- *chunk
|
||||
- *cy
|
||||
|
||||
- path_regex: secrets/services/searx.yaml
|
||||
key_groups:
|
||||
- age:
|
||||
- *chunk
|
||||
- *cy
|
547
flake.lock
generated
547
flake.lock
generated
|
@ -10,11 +10,11 @@
|
|||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731270564,
|
||||
"narHash": "sha256-6KMC/NH/VWP5Eb+hA56hz0urel3jP6Y6cF2PX6xaTkk=",
|
||||
"lastModified": 1738524606,
|
||||
"narHash": "sha256-hPYEJ4juK3ph7kbjbvv7PlU1D9pAkkhl+pwx8fZY53U=",
|
||||
"owner": "zhaofengli",
|
||||
"repo": "attic",
|
||||
"rev": "47752427561f1c34debb16728a210d378f0ece36",
|
||||
"rev": "ff8a897d1f4408ebbf4d45fa9049c06b3e1e3f4e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -32,11 +32,11 @@
|
|||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733424942,
|
||||
"narHash": "sha256-5t7Sl6EkOaoP4FvzLmH7HFDbdl9SizmLh53RjDQCbWQ=",
|
||||
"lastModified": 1737621947,
|
||||
"narHash": "sha256-8HFvG7fvIFbgtaYAY2628Tb89fA55nPm2jSiNs0/Cws=",
|
||||
"owner": "cachix",
|
||||
"repo": "cachix",
|
||||
"rev": "8b6b0e4694b9aa78b2ea4c93bff6e1a222dc7e4a",
|
||||
"rev": "f65a3cd5e339c223471e64c051434616e18cc4f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -83,11 +83,11 @@
|
|||
"complement": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1734303596,
|
||||
"narHash": "sha256-HjDRyLR4MBqQ3IjfMM6eE+8ayztXlbz3gXdyDmFla68=",
|
||||
"lastModified": 1741378155,
|
||||
"narHash": "sha256-rJSfqf3q4oWxcAwENtAowLZeCi8lktwKVH9XQvvZR64=",
|
||||
"owner": "girlbossceo",
|
||||
"repo": "complement",
|
||||
"rev": "14cc5be797b774f1a2b9f826f38181066d4952b8",
|
||||
"rev": "1502a00d8551d0f6e8954a23e43868877c3e57d9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -120,11 +120,11 @@
|
|||
"rocksdb": "rocksdb"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737153653,
|
||||
"narHash": "sha256-yNdxoVZX13QUDJYM6zTMY9ExvacTqB+f0MLvDreSW8U=",
|
||||
"lastModified": 1741642109,
|
||||
"narHash": "sha256-vO66C3rCb4lz3NU012fZj8+5BaFGuOCq/BJqiOXpqSA=",
|
||||
"owner": "girlbossceo",
|
||||
"repo": "conduwuit",
|
||||
"rev": "5b8464252c2c03edf65e43153be026dbb768a12a",
|
||||
"rev": "c4b05e77f3dd66636e26b64f8f4852703816c399",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -157,11 +157,11 @@
|
|||
},
|
||||
"crane_2": {
|
||||
"locked": {
|
||||
"lastModified": 1737563566,
|
||||
"narHash": "sha256-GLJvkOG29XCynQm8XWPyykMRqIhxKcBARVu7Ydrz02M=",
|
||||
"lastModified": 1741481578,
|
||||
"narHash": "sha256-JBTSyJFQdO3V8cgcL08VaBUByEU6P5kXbTJN6R0PFQo=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "849376434956794ebc7a6b487d31aace395392ba",
|
||||
"rev": "bb1c9567c43e4434f54e9481eb4b8e8e0d50f0b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -204,48 +204,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1735644329,
|
||||
"narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "f7795ede5b02664b57035b3b757876703e2c3eac",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736864502,
|
||||
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "latest",
|
||||
"repo": "disko",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -255,11 +213,11 @@
|
|||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736836313,
|
||||
"narHash": "sha256-zdZ7/T6yG0/hzoVOiNpDiR/sW3zR6oSMrfIFJK2BrrE=",
|
||||
"lastModified": 1740724364,
|
||||
"narHash": "sha256-D1jLIueJx1dPrP09ZZwTrPf4cubV+TsFMYbpYYTVj6A=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "056c9393c821a4df356df6ce7f14c722dc8717ec",
|
||||
"rev": "edf7d9e431cda8782e729253835f178a356d3aab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -369,11 +327,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736143030,
|
||||
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
|
||||
"lastModified": 1741352980,
|
||||
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
|
||||
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -462,32 +420,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks_2": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"nixvim",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore_3",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737465171,
|
||||
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -533,28 +465,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -562,11 +472,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737669579,
|
||||
"narHash": "sha256-v9WQ3c4ctwPMfdBZMZxpdM9xXev4uChce4BxOpvsu0E=",
|
||||
"lastModified": 1741701235,
|
||||
"narHash": "sha256-gBlb8R9gnjUAT5XabJeel3C2iEUiBHx3+91651y3Sqo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7b9ece1bf3c8780cde9b975b28c2d9ccd7e9cdb9",
|
||||
"rev": "c630dfa8abcc65984cc1e47fb25d4552c81dd37e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -623,11 +533,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737639419,
|
||||
"narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
|
||||
"lastModified": 1741442524,
|
||||
"narHash": "sha256-tVcxLDLLho8dWcO81Xj/3/ANLdVs0bGyCPyKjp70JWk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
|
||||
"rev": "d8099586d9a84308ffedac07880e7f07a0180ff4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -656,11 +566,11 @@
|
|||
"liburing": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1736719310,
|
||||
"narHash": "sha256-Turvx60THwzTiUHb49WV3upUgsPuktr7tVy2Lwu2xJg=",
|
||||
"lastModified": 1740613216,
|
||||
"narHash": "sha256-NpPOBqNND3Qe9IwqYs0mJLGTmIx7e6FgUEBAnJ+1ZLA=",
|
||||
"owner": "axboe",
|
||||
"repo": "liburing",
|
||||
"rev": "3124a4619e4daf26b06d48ccf0186a947070c415",
|
||||
"rev": "e1003e496e66f9b0ae06674869795edf772d5500",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -683,11 +593,11 @@
|
|||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737655283,
|
||||
"narHash": "sha256-yAFGeCZXUL3GqDMeFcUEOC4m459Ld7j54Rxo8cmyuSQ=",
|
||||
"lastModified": 1741700536,
|
||||
"narHash": "sha256-0OJER7bI6UsCFnKfKdLtgjpOTNccbN3N1dDriP4XRwA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "963b687443b44df6c5cbdf3426454d92830d9100",
|
||||
"revCount": 16671,
|
||||
"rev": "be1491fa6aef638e0147b81ff172131d6db668d9",
|
||||
"revCount": 17635,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/lix"
|
||||
},
|
||||
|
@ -710,11 +620,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737675503,
|
||||
"narHash": "sha256-FUWpqPOsEJwK8oomffat+lgKnoxJHArRlWo2j17EhxQ=",
|
||||
"lastModified": 1738176840,
|
||||
"narHash": "sha256-NG3IRvRs3u3btVCN861FqHvgOwqcNT/Oy6PBG86F5/E=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "3e18a1ceec7df4514f5a045441e5f98dd003db09",
|
||||
"revCount": 131,
|
||||
"rev": "621aae0f3cceaffa6d73a4fb0f89c08d338d729e",
|
||||
"revCount": 133,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||
},
|
||||
|
@ -723,63 +633,29 @@
|
|||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||
}
|
||||
},
|
||||
"niri": {
|
||||
"nil": {
|
||||
"inputs": {
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
"rust-overlay": [
|
||||
"rust-overlay"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737627930,
|
||||
"narHash": "sha256-oaAatwNVaX36xmI2AKIVu2oG07XJmHq2T+Y66hEprd8=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "f79aa307f4bc0bfbabee404e6354fd2a1edfcb01",
|
||||
"lastModified": 1741118843,
|
||||
"narHash": "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=",
|
||||
"owner": "oxalica",
|
||||
"repo": "nil",
|
||||
"rev": "577d160da311cc7f5042038456a0713e9863d09e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1736614405,
|
||||
"narHash": "sha256-AJ1rlgNOPb3/+DbS5hkhm21t6Oz8IgqLllwmZt0lyzk=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "e05bc269e678ecf828b96ae79c991c13b00b38a5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"ref": "v25.01",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1737623252,
|
||||
"narHash": "sha256-orq/c8lOUrZfCHQhfuLEJtMZpfBYhMtGv1Xuz99Pxj0=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "128b01e04905d833214f52a3c6fab308bcc15ce0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"owner": "oxalica",
|
||||
"repo": "nil",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -824,27 +700,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737504076,
|
||||
"narHash": "sha256-/B4XJnzYU/6K1ZZOBIgsa3K4pqDJrnC2579c44c+4rI=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "65cc1fa8e36ceff067daf6cfb142331f02f524d3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-filter": {
|
||||
"locked": {
|
||||
"lastModified": 1731533336,
|
||||
|
@ -883,6 +738,46 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-index-database": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741619381,
|
||||
"narHash": "sha256-koZtlJRqi0/MD/AKd0KrXLA2NuBOVzlIyAJprjzpxZE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-index-database",
|
||||
"rev": "66537fb185462ba9b07f4e6f2d54894a1b2d04ab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-index-database",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-ld": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741597901,
|
||||
"narHash": "sha256-nLUTgXXcFFz+3pd3Khz1H4jUECqX5+OapNPGioPJRQs=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-ld",
|
||||
"rev": "8e0308dd7dd9cd3656866fb2387bc29052fd6d3a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-ld",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix2container": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -899,55 +794,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixlib": {
|
||||
"locked": {
|
||||
"lastModified": 1736643958,
|
||||
"narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-generators": {
|
||||
"inputs": {
|
||||
"nixlib": "nixlib",
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737057290,
|
||||
"narHash": "sha256-3Pe0yKlCc7EOeq1X/aJVDH0CtNL+tIBm49vpepwL1MQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"rev": "d002ce9b6e7eb467cd1c6bb9aef9c35d191b5453",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1737590910,
|
||||
"narHash": "sha256-qM/y6Dtpu9Wmf5HqeZajQdn+cS0aljdYQQQnrvx+LJE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "9368027715d8dde4b84c79c374948b5306fdd2db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1726042813,
|
||||
|
@ -964,22 +810,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-garage": {
|
||||
"locked": {
|
||||
"lastModified": 1736921030,
|
||||
"narHash": "sha256-A7knAvBOwoM5X7oNdIOKvuXYtXJpuR4O8iKHIk8EwOI=",
|
||||
"owner": "cything",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "97f27249297bf5fbc563014ae9d4884dee27f1e0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cything",
|
||||
"ref": "garage-module",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-regression": {
|
||||
"locked": {
|
||||
"lastModified": 1643052045,
|
||||
|
@ -996,22 +826,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-rpi": {
|
||||
"locked": {
|
||||
"lastModified": 1737645144,
|
||||
"narHash": "sha256-QPTPf1ccrGTIgKA+/a3MIqrKiUbxhUSRUCQll86kUl8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d4e529a24b66b0341f2b866c5abe3ad8a96be2d7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d4e529a24b66b0341f2b866c5abe3ad8a96be2d7",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1724316499,
|
||||
|
@ -1046,16 +860,16 @@
|
|||
},
|
||||
"nixpkgs-stable_3": {
|
||||
"locked": {
|
||||
"lastModified": 1730741070,
|
||||
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1741600792,
|
||||
"narHash": "sha256-yfDy6chHcM7pXpMF4wycuuV+ILSTG486Z/vLx/Bdi6Y=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
|
||||
"rev": "ebe2788eafd539477f83775ef93c3c7e244421d3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.05",
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -1110,64 +924,36 @@
|
|||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1736657626,
|
||||
"narHash": "sha256-FWlPMUzp0lkQBdhKlPqtQdqmp+/C+1MBiEytaYfrCTY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2f9e2f85cb14a46410a1399aa9ea7ecf433e422e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1737569578,
|
||||
"narHash": "sha256-6qY0pk2QmUtBT9Mywdvif0i/CLVgpCjMUn6g9vB+f3M=",
|
||||
"lastModified": 1741692589,
|
||||
"narHash": "sha256-t1BrOTAUIkRY4YlSspERzz5iaFbzJTIE6mhLmnWrDaA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "47addd76727f42d351590c905d9d1905ca895b82",
|
||||
"rev": "a7010334ad6d8082bb8aa5dd2e37bf3b98b1a713",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.11",
|
||||
"ref": "nixos-unstable-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-compat": [
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-parts": [
|
||||
"flake-parts"
|
||||
],
|
||||
"git-hooks": "git-hooks_2",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"treefmt-nix": [
|
||||
"treefmt"
|
||||
]
|
||||
"nuschtosSearch": "nuschtosSearch"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737667561,
|
||||
"narHash": "sha256-BKUapQPTji3V2uxymGq62/UWF1XMjfHvKd565jj1HlA=",
|
||||
"lastModified": 1741637833,
|
||||
"narHash": "sha256-1uBkdOwxNmkdXXjoycnEBZUoHZ/22GitQRVXjZlsVK0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "aab2b81792567237c104b90c3936e073d28a9ac6",
|
||||
"rev": "bc34099731a7e3799c0d52ccdf4599409a2ef9b9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1186,11 +972,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737372689,
|
||||
"narHash": "sha256-nH3zK2ki0fd5o5qvbGHxukE4qnOLJa1uCzoDObG5vrE=",
|
||||
"lastModified": 1738508923,
|
||||
"narHash": "sha256-4DaDrQDAIxlWhTjH6h/+xfG05jt3qDZrZE/7zDLQaS4=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "570cc17bbc25650eb7d69e4fcda8cfd2f1656922",
|
||||
"rev": "86e2038290859006e05ca7201425ea5b5de4aecb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1215,6 +1001,22 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pixelflasher": {
|
||||
"locked": {
|
||||
"lastModified": 1741302870,
|
||||
"narHash": "sha256-7AywZ1b3PaqolAZ0vQmddD6Br4o0a7ucdtE0/W3rnaM=",
|
||||
"owner": "cything",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5ef8b274bb7f939104295a22cec3382268ed73cc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cything",
|
||||
"ref": "pixelflasher",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -1241,15 +1043,14 @@
|
|||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable_3"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731363552,
|
||||
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||
"lastModified": 1740915799,
|
||||
"narHash": "sha256-JvQvtaphZNmeeV+IpHgNdiNePsIpHD5U/7QN5AeY44A=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||
"rev": "42b1ba089d2034d910566bf6b40830af6b8ec732",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1261,16 +1062,16 @@
|
|||
"rocksdb": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1734469478,
|
||||
"narHash": "sha256-IcQ4N8xADYal79K+ONmNq4RLlIwdgUqgrVzgNgiIaG8=",
|
||||
"lastModified": 1741308171,
|
||||
"narHash": "sha256-YdBvdQ75UJg5ffwNjxizpviCVwVDJnBkM8ZtGIduMgY=",
|
||||
"owner": "girlbossceo",
|
||||
"repo": "rocksdb",
|
||||
"rev": "8b4808e7de2fbb5d119d8d72cdca76d8ab84bc47",
|
||||
"rev": "3ce04794bcfbbb0d2e6f81ae35fc4acf688b6986",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "girlbossceo",
|
||||
"ref": "v9.9.3",
|
||||
"ref": "v9.11.1",
|
||||
"repo": "rocksdb",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -1279,7 +1080,6 @@
|
|||
"inputs": {
|
||||
"conduwuit": "conduwuit",
|
||||
"crane": "crane_2",
|
||||
"disko": "disko",
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-parts": "flake-parts_3",
|
||||
"flake-utils": "flake-utils",
|
||||
|
@ -1287,27 +1087,28 @@
|
|||
"lanzaboote": "lanzaboote",
|
||||
"lix": "lix",
|
||||
"lix-module": "lix-module",
|
||||
"niri": "niri",
|
||||
"nixos-generators": "nixos-generators",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"nixpkgs-garage": "nixpkgs-garage",
|
||||
"nixpkgs-rpi": "nixpkgs-rpi",
|
||||
"nil": "nil",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nix-ld": "nix-ld",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-stable": "nixpkgs-stable_3",
|
||||
"nixvim": "nixvim",
|
||||
"nvim-github-theme": "nvim-github-theme",
|
||||
"pixelflasher": "pixelflasher",
|
||||
"rust-overlay": "rust-overlay",
|
||||
"sops-nix": "sops-nix",
|
||||
"treefmt": "treefmt"
|
||||
"treefmt": "treefmt",
|
||||
"vscode-extensions": "vscode-extensions"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1736690231,
|
||||
"narHash": "sha256-g9gyxX+F6CrkT5gRIMKPnCPom0o9ZDzYnzzeNF86D6Q=",
|
||||
"lastModified": 1740691488,
|
||||
"narHash": "sha256-Fs6vBrByuiOf2WO77qeMDMTXcTGzrIMqLBv+lNeywwM=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "8364ef299790cb6ec22b9e09e873c97dbe9f2cb5",
|
||||
"rev": "fe3eda77d3a7ce212388bda7b6cec8bffcc077e5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1324,11 +1125,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737599167,
|
||||
"narHash": "sha256-S2rHCrQWCDVp63XxL/AQbGr1g5M8Zx14C7Jooa4oM8o=",
|
||||
"lastModified": 1741660300,
|
||||
"narHash": "sha256-0jldJ58sC5RjqwpwE+ER+RPMeX4Moz5im/evQ3SU/dU=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "38374302ae9edf819eac666d1f276d62c712dd06",
|
||||
"rev": "ac2f556db0eb5cbba3c4f5f5989c46330f439b0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1344,11 +1145,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737411508,
|
||||
"narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=",
|
||||
"lastModified": 1741644481,
|
||||
"narHash": "sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn+iZajOyg=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "015d461c16678fc02a2f405eb453abb509d4e1d4",
|
||||
"rev": "e653d71e82575a43fe9d228def8eddb73887b866",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1394,11 +1195,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737483750,
|
||||
"narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=",
|
||||
"lastModified": 1739829690,
|
||||
"narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f",
|
||||
"rev": "3d0579f5cc93436052d94b73925b48973a104204",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1407,36 +1208,26 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"vscode-extensions": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730166465,
|
||||
"narHash": "sha256-nq7bouXQXaaPPo/E+Jbq+wNHnatD4dY8OxSrRqzvy6s=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "a713cf46cb7db84a0d1b57c3a397c610cad3cf98",
|
||||
"lastModified": 1741704640,
|
||||
"narHash": "sha256-FSvtxhfB0PQtFOj8PMfcgUG1QVaQzjTZvAxLiqDysKI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "27f37976beb94100b18ab8407ff056654db68506",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"ref": "v0.5",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1736487362,
|
||||
"narHash": "sha256-4kGoOA7FgK9N2mzS+TFEn41kUUNY6KwdiA/0rqlr868=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "8f55e27f63a749881c4bbfbb6b1da028342a91d1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
|
116
flake.nix
116
flake.nix
|
@ -2,7 +2,8 @@
|
|||
description = "cy's flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -15,10 +16,6 @@
|
|||
url = "github:numtide/treefmt-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
disko = {
|
||||
url = "github:nix-community/disko/latest";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -31,19 +28,11 @@
|
|||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.flake-parts.follows = "flake-parts";
|
||||
inputs.flake-compat.follows = "flake-compat";
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
inputs.treefmt-nix.follows = "treefmt";
|
||||
};
|
||||
flake-parts = {
|
||||
url = "github:hercules-ci/flake-parts";
|
||||
inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||
};
|
||||
niri = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||
};
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -68,11 +57,26 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.flake-compat.follows = "flake-compat";
|
||||
};
|
||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||
nixpkgs-rpi.url = "github:nixos/nixpkgs/d4e529a24b66b0341f2b866c5abe3ad8a96be2d7";
|
||||
nixos-generators.url = "github:nix-community/nixos-generators";
|
||||
|
||||
nixpkgs-garage.url = "github:cything/nixpkgs/garage-module"; # unmerged PR
|
||||
nix-ld = {
|
||||
url = "github:nix-community/nix-ld";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nil = {
|
||||
url = "github:oxalica/nil";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.rust-overlay.follows = "rust-overlay";
|
||||
inputs.flake-utils.follows = "flake-utils";
|
||||
};
|
||||
vscode-extensions = {
|
||||
url = "github:nix-community/nix-vscode-extensions/";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.flake-utils.follows = "flake-utils";
|
||||
};
|
||||
nix-index-database = {
|
||||
url = "github:nix-community/nix-index-database";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
pixelflasher.url = "github:cything/nixpkgs/pixelflasher";
|
||||
|
||||
nvim-github-theme = {
|
||||
url = "github:projekt0n/github-nvim-theme";
|
||||
|
@ -87,15 +91,11 @@
|
|||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://cache.cything.io/central"
|
||||
"https://niri.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.garnix.io"
|
||||
"https://cything.cachix.org"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg="
|
||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||
"cything.cachix.org-1:xqW1W5NNL+wrM9wfSELb0MLj/harD2ZyB4HbdaMyvPI="
|
||||
|
@ -108,7 +108,6 @@
|
|||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
disko,
|
||||
flake-parts,
|
||||
...
|
||||
}@inputs:
|
||||
|
@ -128,9 +127,6 @@
|
|||
...
|
||||
}:
|
||||
{
|
||||
# make pkgs available to `perSystem`
|
||||
_module.args.pkgs = inputs'.nixpkgs.legacyPackages;
|
||||
|
||||
treefmt = {
|
||||
projectRootFile = "flake.nix";
|
||||
programs.nixfmt.enable = true;
|
||||
|
@ -141,20 +137,20 @@
|
|||
|
||||
settings.global.excludes = [
|
||||
"secrets/*"
|
||||
"**/*.png" # tries to format a png file??
|
||||
"**/*.png" # tries to format a png file
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
flake =
|
||||
let
|
||||
pkgsFor = system: import nixpkgs {
|
||||
pkgs = import nixpkgs {
|
||||
config.allowUnfree = true;
|
||||
system = system;
|
||||
system = "x86_64-linux";
|
||||
overlays = [
|
||||
inputs.niri.overlays.niri
|
||||
inputs.rust-overlay.overlays.default
|
||||
] ++ import ./overlay;
|
||||
inputs.vscode-extensions.overlays.default
|
||||
] ++ (import ./overlay { inherit inputs; });
|
||||
};
|
||||
in
|
||||
{
|
||||
|
@ -167,55 +163,26 @@
|
|||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.pkgs = pkgsFor "x86_64-linux";
|
||||
nixpkgs = { inherit pkgs; };
|
||||
}
|
||||
./hosts/ytnix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./modules
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.lanzaboote.nixosModules.lanzaboote
|
||||
inputs.niri.nixosModules.niri
|
||||
# inputs.lix-module.nixosModules.default # broken
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.nix-ld.nixosModules.nix-ld
|
||||
];
|
||||
};
|
||||
chunk = lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.pkgs = pkgsFor "x86_64-linux";
|
||||
disabledModules = [
|
||||
"services/web-servers/garage.nix"
|
||||
];
|
||||
nixpkgs = { inherit pkgs; };
|
||||
}
|
||||
./hosts/chunk
|
||||
./modules
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./modules
|
||||
(inputs.nixpkgs-garage + "/nixos/modules/services/web-servers/garage.nix")
|
||||
];
|
||||
};
|
||||
|
||||
titan = lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.pkgs = pkgsFor "x86_64-linux";
|
||||
}
|
||||
./hosts/titan
|
||||
disko.nixosModules.disko
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./modules
|
||||
];
|
||||
};
|
||||
|
||||
pancake = lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.pkgs = pkgsFor "aarch64-linux";
|
||||
}
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-3
|
||||
inputs.nixos-generators.nixosModules.all-formats
|
||||
./hosts/pancake
|
||||
./modules
|
||||
inputs.lix-module.nixosModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -225,32 +192,23 @@
|
|||
in
|
||||
{
|
||||
"yt@ytnix" = lib.homeManagerConfiguration {
|
||||
pkgs = pkgsFor "x86_64-linux";
|
||||
inherit pkgs;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./home/yt/ytnix.nix
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
inputs.niri.homeModules.config
|
||||
inputs.nix-index-database.hmModules.nix-index
|
||||
];
|
||||
};
|
||||
|
||||
"yt@chunk" = lib.homeManagerConfiguration {
|
||||
pkgs = pkgsFor "x86_64-linux";
|
||||
inherit pkgs;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./home/yt/chunk.nix
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
};
|
||||
|
||||
"codespace@codespace" = lib.homeManagerConfiguration {
|
||||
pkgs = pkgsFor "x86_64-linux";
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./home/yt/codespace.nix
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
198
home/codium.nix
Normal file
198
home/codium.nix
Normal file
|
@ -0,0 +1,198 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
mutableExtensionsDir = false;
|
||||
profiles.default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions =
|
||||
# if unfree
|
||||
# with pkgs.vscode-marketplace;
|
||||
with pkgs.open-vsx;
|
||||
[
|
||||
vscodevim.vim
|
||||
jnoortheen.nix-ide
|
||||
github.github-vscode-theme
|
||||
rust-lang.rust-analyzer
|
||||
shd101wyy.markdown-preview-enhanced
|
||||
alefragnani.bookmarks
|
||||
tomrijndorp.find-it-faster
|
||||
streetsidesoftware.code-spell-checker
|
||||
emilast.logfilehighlighter
|
||||
];
|
||||
userSettings =
|
||||
let
|
||||
vimCommonKeyBindings = [
|
||||
{
|
||||
"before" = [ "C-a" ];
|
||||
"commands" = [ "cursorHome" ];
|
||||
}
|
||||
{
|
||||
"before" = [ "C-e" ];
|
||||
"commands" = [ "cursorEnd" ];
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
"workbench.colorTheme" = "GitHub Dark Default";
|
||||
"workbench.startupEditor" = "none";
|
||||
"workbench.enableExperiments" = false;
|
||||
"files.autoSave" = "onFocusChange";
|
||||
"editor.fontFamily" = "IBM Plex Mono";
|
||||
"editor.fontSize" = 15;
|
||||
"editor.minimap.enabled" = false;
|
||||
"window.zoomLevel" = 0.5;
|
||||
"security.promptForLocalFileProtocolHandling" = false;
|
||||
"security.promptForRemoteFileProtocolHandling" = false;
|
||||
"explorer.confirmDelete" = false;
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"editor.acceptSuggestionOnEnter" = "off";
|
||||
"editor.acceptSuggestionOnCommitCharacter" = false;
|
||||
"git.openRepositoryInParentFolders" = "never";
|
||||
"git.ignoreLimitWarning" = true;
|
||||
"git.blame.editorDecoration.enabled" = true;
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
"telemetry.enableTelemetry" = false;
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"window.titleBarStyle" = "custom";
|
||||
|
||||
# terminal stuff
|
||||
"terminal.integrated.cursorBlinking" = true;
|
||||
"terminal.integrated.cursorStyle" = "line";
|
||||
"terminal.integrated.customGlyphs" = false;
|
||||
"terminal.integrated.env.linux" = {
|
||||
# https://github.com/tomrijndorp/vscode-finditfaster/issues/112#issuecomment-2475227546
|
||||
FZF_DEFAULT_OPTS = "--bind ctrl-n:down,ctrl-p:up";
|
||||
};
|
||||
# don't let the workbench handle terminal keys like ctrl+n and friends
|
||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||
"terminal.integrated.allowChords" = false;
|
||||
|
||||
"markdown-preview-enhanced.previewTheme" = "github-dark.css";
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.serverPath" = "nil";
|
||||
"bookmarks.saveBookmarksInProject" = true;
|
||||
|
||||
"cSpell.enabledFileTypes" = {
|
||||
"markdown" = true;
|
||||
"*" = false;
|
||||
};
|
||||
|
||||
# vim stuff
|
||||
"vim.leader" = ",";
|
||||
"vim.normalModeKeyBindings" = vimCommonKeyBindings ++ [
|
||||
{
|
||||
"before" = [ ";" ];
|
||||
"after" = [ ":" ];
|
||||
"silent" = true;
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"m"
|
||||
];
|
||||
"commands" = [ "bookmarks.toggle" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"l"
|
||||
];
|
||||
"commands" = [ "bookmarks.toggleLabeled" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"b"
|
||||
];
|
||||
"commands" = [ "bookmarks.list" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"s"
|
||||
];
|
||||
"commands" = [ "workbench.action.toggleSidebarVisibility" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"f"
|
||||
"f"
|
||||
];
|
||||
"commands" = [ "find-it-faster.findFiles" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"f"
|
||||
"g"
|
||||
];
|
||||
"commands" = [ "find-it-faster.findWithinFiles" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<leader>"
|
||||
"f"
|
||||
"t"
|
||||
];
|
||||
"commands" = [ "find-it-faster.findWithinFilesWithType" ];
|
||||
}
|
||||
# "gd" for definitions is by default
|
||||
{
|
||||
"before" = [
|
||||
"g"
|
||||
"r"
|
||||
];
|
||||
"commands" = [ "editor.action.goToReferences" ];
|
||||
}
|
||||
# the default is weird when you need to go back within a file
|
||||
{
|
||||
"before" = [ "C-o" ];
|
||||
"commands" = [ "workbench.action.navigateBack" ];
|
||||
}
|
||||
{
|
||||
"before" = [ "C-i" ];
|
||||
"commands" = [ "workbench.action.navigateForward" ];
|
||||
}
|
||||
# insert line without leaving normal mode
|
||||
{
|
||||
"before" = [
|
||||
"<space>"
|
||||
"o"
|
||||
];
|
||||
"commands" = [ "editor.action.insertLineAfter" ];
|
||||
}
|
||||
{
|
||||
"before" = [
|
||||
"<space>"
|
||||
"O"
|
||||
];
|
||||
"commands" = [ "editor.action.insertLineBefore" ];
|
||||
}
|
||||
];
|
||||
"vim.insertModeKeyBindings" = vimCommonKeyBindings ++ [
|
||||
{
|
||||
"before" = [ "C-k" ];
|
||||
"commands" = [ "acceptSelectedSuggestion" ];
|
||||
}
|
||||
];
|
||||
"vim.visualModeKeyBindings" = vimCommonKeyBindings ++ [
|
||||
{
|
||||
"before" = [ ">" ];
|
||||
"commands" = [ "editor.action.indentLines" ];
|
||||
}
|
||||
{
|
||||
"before" = [ "<" ];
|
||||
"commands" = [ "editor.action.outdentLines" ];
|
||||
}
|
||||
];
|
||||
"extensions.experimental.affinity" = {
|
||||
"vscodevim.vim" = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
"vi" = "nvim";
|
||||
"vim" = "nvim";
|
||||
"t" = "tmux";
|
||||
"tl" = "tmux list-sessions";
|
||||
"ta" = "tmux new-session -A -s";
|
||||
"se" = "sudoedit";
|
||||
"s" = "sudo";
|
||||
"nrs" = "sudo nixos-rebuild switch --flake .";
|
||||
"nrt" = "sudo nixos-rebuild test --flake .";
|
||||
"hrs" = "home-manager switch --flake .";
|
||||
"g" = "git";
|
||||
"ga" = "git add";
|
||||
"gaa" = "git add --all";
|
||||
"gb" = "git branch";
|
||||
"gc" = "git commit --verbose";
|
||||
"gcmsg" = "git commit --message";
|
||||
"gd" = "git diff";
|
||||
"gdca" = "git diff --cached";
|
||||
"gds" = "git diff --staged";
|
||||
"gl" = "git log --stat";
|
||||
"glg" = "git log --graph";
|
||||
"glga" = "git log --graph --decorate --all";
|
||||
"glo" = "git log --oneline --decorate";
|
||||
"gp" = "git push";
|
||||
"gr" = "git remote";
|
||||
"gra" = "git remote add";
|
||||
"grv" = "git remote --verbose";
|
||||
"gs" = "git status --short";
|
||||
"gss" = "git status";
|
||||
};
|
||||
|
||||
shellInit = ''
|
||||
set fish_greeting
|
||||
'';
|
||||
|
||||
functions = {
|
||||
fish_prompt = ''
|
||||
set -l last_status $status
|
||||
set -l normal (set_color normal)
|
||||
set -l status_color (set_color brgreen)
|
||||
set -l cwd_color (set_color $fish_color_cwd)
|
||||
set -l vcs_color (set_color brpurple)
|
||||
set -l prompt_status ""
|
||||
|
||||
# Since we display the prompt on a new line allow the directory names to be longer.
|
||||
set -q fish_prompt_pwd_dir_length
|
||||
or set -lx fish_prompt_pwd_dir_length 0
|
||||
|
||||
# Color the prompt differently when we're root
|
||||
set -l suffix '❯'
|
||||
if functions -q fish_is_root_user; and fish_is_root_user
|
||||
if set -q fish_color_cwd_root
|
||||
set cwd_color (set_color $fish_color_cwd_root)
|
||||
end
|
||||
set suffix '#'
|
||||
end
|
||||
|
||||
# Color the prompt in red on error
|
||||
if test $last_status -ne 0
|
||||
set status_color (set_color $fish_color_error)
|
||||
set prompt_status $status_color "[" $last_status "]" $normal
|
||||
end
|
||||
|
||||
echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status
|
||||
echo -n -s $status_color $suffix ' ' $normal
|
||||
'';
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
programs.fzf.enableFishIntegration = true;
|
||||
programs.zoxide.enableFishIntegration = true;
|
||||
programs.eza.enableFishIntegration = true;
|
||||
programs.nix-index.enableFishIntegration = true;
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
settings = {
|
||||
main = {
|
||||
font = "IBM Plex Mono:size=8";
|
||||
dpi-aware = "yes";
|
||||
};
|
||||
bell = {
|
||||
urgent = "no";
|
||||
notify = "no";
|
||||
visual = "no";
|
||||
};
|
||||
cursor = {
|
||||
style = "beam";
|
||||
blink = "yes";
|
||||
blink-rate = 500;
|
||||
beam-thickness = 1.5;
|
||||
color = "161821 c6c8d1";
|
||||
};
|
||||
mouse = {
|
||||
hide-when-typing = "yes";
|
||||
};
|
||||
colors = {
|
||||
foreground = "c6c8d1";
|
||||
background = "161821";
|
||||
regular0 = "1e2132";
|
||||
regular1 = "e27878";
|
||||
regular2 = "b4be82";
|
||||
regular3 = "e2a478";
|
||||
regular4 = "84a0c6";
|
||||
regular5 = "a093c7";
|
||||
regular6 = "89b8c2";
|
||||
regular7 = "c6c8d1";
|
||||
bright0 = "6b7089";
|
||||
bright1 = "e98989";
|
||||
bright2 = "c0ca8e";
|
||||
bright3 = "e9b189";
|
||||
bright4 = "91acd1";
|
||||
bright5 = "ada0d3";
|
||||
bright6 = "95c4ce";
|
||||
bright7 = "d2d4de";
|
||||
selection-foreground = "161821";
|
||||
selection-background = "c6c8d1";
|
||||
};
|
||||
|
||||
key-bindings = {
|
||||
clipboard-copy = "Control+Shift+c XF86Copy";
|
||||
clipboard-paste = "Control+Shift+v XF86Paste";
|
||||
quit = "Control+q";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
clearDefaultKeybinds = true;
|
||||
settings = {
|
||||
theme = "iceberg-dark";
|
||||
font-family = "IBM Plex Mono";
|
||||
font-size = "12";
|
||||
window-decoration = false;
|
||||
confirm-close-surface = false;
|
||||
keybind = [
|
||||
"ctrl+q=quit"
|
||||
"ctrl+shift+c=copy_to_clipboard"
|
||||
"ctrl+shift+v=paste_from_clipboard"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -47,17 +47,21 @@
|
|||
"ctrl+alt+s" = "goto_layout stack";
|
||||
"kitty_mod+enter" = "new_window_with_cwd";
|
||||
"kitty_mod+r" = "resize_window";
|
||||
# this closes the *current* window, not the *OS* window
|
||||
# https://sw.kovidgoyal.net/kitty/overview/#tabs-and-windows
|
||||
"kitty_mod+w" = "close_window";
|
||||
|
||||
# tabs
|
||||
"kitty_mod+n" = "next_tab";
|
||||
"kitty_mod+p" = "previous_tab";
|
||||
"kitty_mod+alt+n" = "move_tab_forward";
|
||||
"kitty_mod+alt+p" = "move_tab_backward";
|
||||
"kitty_mod+w" = "close_tab";
|
||||
"kitty_mod+q" = "close_tab";
|
||||
"kitty_mod+t" = "new_tab_with_cwd";
|
||||
"ctrl+f2" = "detach_tab";
|
||||
|
||||
# hints
|
||||
# > basically means the preceding key is a prefix (think tmux)
|
||||
"kitty_mod+o>o" = "open_url_with_hints";
|
||||
"kitty_mod+o>p" = "kitten hints --type path --program -";
|
||||
"kitty_mod+o>n" = "kitten hints --type line --program -";
|
||||
|
@ -66,4 +70,6 @@
|
|||
"kitty_mod+o>l" = "kitten hints --type linenum";
|
||||
};
|
||||
};
|
||||
|
||||
# programs.zsh.shellAliases."ssh" = "kitten ssh"; # doesn't seem to work with bitwarden ssh agent :(
|
||||
}
|
||||
|
|
|
@ -1,203 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
wallpaper = "${./nixos-c-book.png}";
|
||||
terminal = "kitty";
|
||||
menu = [
|
||||
"fuzzel"
|
||||
"-w"
|
||||
"100"
|
||||
];
|
||||
browser = "librewolf";
|
||||
file-manager = "thunar";
|
||||
clipboard = "cliphist list | ${lib.concatStringsSep " " menu} --dmenu | cliphist decode | wl-copy";
|
||||
in
|
||||
{
|
||||
programs.niri.settings = {
|
||||
prefer-no-csd = true;
|
||||
input.keyboard.xkb.options = "ctrl:nocaps";
|
||||
spawn-at-startup = [
|
||||
{ command = [ "${lib.getExe pkgs.waybar}" ]; }
|
||||
{
|
||||
command = [
|
||||
"${lib.getExe pkgs.swaybg}"
|
||||
"-m"
|
||||
"fill"
|
||||
"-i"
|
||||
wallpaper
|
||||
];
|
||||
}
|
||||
{ command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
|
||||
{
|
||||
command = [
|
||||
"wl-paste"
|
||||
"--watch"
|
||||
"cliphist"
|
||||
"store"
|
||||
];
|
||||
}
|
||||
];
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
input = {
|
||||
touchpad = {
|
||||
tap = true;
|
||||
dwt = true;
|
||||
natural-scroll = true;
|
||||
click-method = "clickfinger";
|
||||
};
|
||||
warp-mouse-to-focus = true;
|
||||
focus-follows-mouse.enable = false;
|
||||
};
|
||||
|
||||
environment = {
|
||||
DISPLAY = ":0"; # for xwayland-satellite
|
||||
ANKI_WAYLAND = "1";
|
||||
};
|
||||
|
||||
layout = {
|
||||
gaps = 0;
|
||||
focus-ring = {
|
||||
width = 4;
|
||||
active.color = "#4c7899";
|
||||
inactive.color = "#333333";
|
||||
};
|
||||
always-center-single-column = true;
|
||||
border.enable = false;
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
app-id = "anki";
|
||||
title = "Add";
|
||||
}
|
||||
{ app-id = "mpv"; }
|
||||
{ app-id = "Bitwarden"; }
|
||||
];
|
||||
open-floating = true;
|
||||
}
|
||||
{
|
||||
matches = [ { app-id = "anki"; } ];
|
||||
default-column-width.proportion = .25;
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
{ app-id = "foot"; }
|
||||
{
|
||||
app-id = "anki";
|
||||
title = "^Browse";
|
||||
}
|
||||
{ app-id = "com.mitchellh.ghostt"; }
|
||||
{ app-id = "org.kde.okular"; }
|
||||
{ app-id = "kitty"; }
|
||||
];
|
||||
default-column-width.proportion = .5;
|
||||
}
|
||||
{
|
||||
matches = [ { app-id = "librewolf"; } ];
|
||||
default-column-width.proportion = .75;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.niri.settings.binds =
|
||||
with config.lib.niri.actions;
|
||||
let
|
||||
sh = spawn "sh" "-c";
|
||||
in
|
||||
{
|
||||
"Mod+Return".action = spawn terminal;
|
||||
"Mod+D".action = spawn menu;
|
||||
|
||||
"Mod+Shift+E".action = quit;
|
||||
"Mod+Equal".action = set-column-width "+10%";
|
||||
"Mod+Minus".action = set-column-width "-10%";
|
||||
"Mod+Shift+Equal".action = set-window-height "+10%";
|
||||
"Mod+Shift+Minus".action = set-window-height "-10%";
|
||||
"Super+Alt+L".action = spawn "swaylock";
|
||||
"Mod+Ctrl+Q".action = close-window;
|
||||
"Mod+H".action = focus-column-left;
|
||||
"Mod+L".action = focus-column-right;
|
||||
"Mod+K".action = focus-window-up;
|
||||
"Mod+J".action = focus-window-down;
|
||||
"Mod+Shift+H".action = move-column-left;
|
||||
"Mod+Shift+L".action = move-column-right;
|
||||
"Mod+Shift+K".action = move-window-up;
|
||||
"Mod+Shift+J".action = move-window-down;
|
||||
"Mod+U".action = focus-workspace-up;
|
||||
"Mod+I".action = focus-workspace-down;
|
||||
"Mod+Shift+U".action = move-window-to-workspace-up;
|
||||
"Mod+Shift+I".action = move-window-to-workspace-down;
|
||||
"Mod+W".action = maximize-column;
|
||||
"Mod+E".action = set-column-width "50%";
|
||||
"Mod+R".action = set-column-width "75%";
|
||||
"Mod+Q".action = set-column-width "25%";
|
||||
"Mod+C".action = center-column;
|
||||
"Mod+Shift+Space".action = toggle-window-floating;
|
||||
"Mod+Space".action = switch-focus-between-floating-and-tiling;
|
||||
"Print".action = screenshot;
|
||||
"Alt+Print".action = screenshot-window;
|
||||
"Ctrl+Print".action = screenshot-screen;
|
||||
# "Mod+R".action = switch-preset-column-width;
|
||||
"Mod+Shift+R".action = switch-preset-window-height;
|
||||
"Mod+Ctrl+R".action = reset-window-height;
|
||||
"Mod+F".action = fullscreen-window;
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-right;
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-left;
|
||||
};
|
||||
"Mod+Shift+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-down;
|
||||
};
|
||||
"Mod+Shift+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-up;
|
||||
};
|
||||
|
||||
"XF86AudioRaiseVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+";
|
||||
"XF86AudioLowerVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-";
|
||||
"XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86MonBrightnessUp".action = sh "brightnessctl set 1%+";
|
||||
"XF86MonBrightnessDown".action = sh "brightnessctl set 1%-";
|
||||
|
||||
"Mod+1".action = focus-workspace 1;
|
||||
"Mod+2".action = focus-workspace 2;
|
||||
"Mod+3".action = focus-workspace 3;
|
||||
"Mod+4".action = focus-workspace 4;
|
||||
"Mod+5".action = focus-workspace 5;
|
||||
"Mod+6".action = focus-workspace 6;
|
||||
"Mod+7".action = focus-workspace 7;
|
||||
"Mod+8".action = focus-workspace 8;
|
||||
"Mod+9".action = focus-workspace 9;
|
||||
"Mod+Shift+1".action = move-column-to-workspace 1;
|
||||
"Mod+Shift+2".action = move-column-to-workspace 2;
|
||||
"Mod+Shift+3".action = move-column-to-workspace 3;
|
||||
"Mod+Shift+4".action = move-column-to-workspace 4;
|
||||
"Mod+Shift+5".action = move-column-to-workspace 5;
|
||||
"Mod+Shift+6".action = move-column-to-workspace 6;
|
||||
"Mod+Shift+7".action = move-column-to-workspace 7;
|
||||
"Mod+Shift+8".action = move-column-to-workspace 8;
|
||||
"Mod+Shift+9".action = move-column-to-workspace 9;
|
||||
|
||||
"Mod+Alt+B".action = spawn browser;
|
||||
"Mod+Alt+A".action = spawn "anki";
|
||||
"Mod+Alt+F".action = spawn file-manager;
|
||||
"Mod+Alt+E".action = spawn "evolution";
|
||||
"Mod+P".action = spawn "bitwarden";
|
||||
"Mod+Comma".action = sh clipboard;
|
||||
|
||||
"MouseForward".action = spawn "sh" "${./scripts/remote.sh}" "btn1";
|
||||
"MouseBack".action = spawn "sh" "${./scripts/remote.sh}";
|
||||
};
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 150 KiB |
|
@ -1,25 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
active_window=$(niri msg --json focused-window |jq -r .app_id)
|
||||
|
||||
if [ "$1" = "btn1" ]; then
|
||||
if [ "$active_window" = "anki" ]; then
|
||||
wtype " "
|
||||
elif [ "$active_window" = "kitty" ]; then
|
||||
wtype -M ctrl -M shift -k c -m ctrl -m shift
|
||||
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
|
||||
wtype -M alt -P right -p right -m alt
|
||||
else
|
||||
wtype -M ctrl -k c -m ctrl
|
||||
fi
|
||||
else
|
||||
if [ "$active_window" = "anki" ]; then
|
||||
wtype "1"
|
||||
elif [ "$active_window" = "kitty" ]; then
|
||||
wtype -M ctrl -M shift -k v -m ctrl
|
||||
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
|
||||
wtype -M alt -P left -p left -m alt
|
||||
else
|
||||
wtype -M ctrl -k v -m ctrl
|
||||
fi
|
||||
fi
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
extraPlugins = [
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "gitub-theme";
|
||||
name = "github-theme";
|
||||
src = inputs.nvim-github-theme;
|
||||
})
|
||||
];
|
||||
|
@ -71,6 +71,41 @@
|
|||
key = "<C-e>";
|
||||
mode = "i";
|
||||
}
|
||||
# quick chat with copilot
|
||||
{
|
||||
key = "<leader>ccq";
|
||||
action.__raw = ''
|
||||
function()
|
||||
local input = vim.fn.input("Quick chat: ")
|
||||
if input ~= "" then
|
||||
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
|
||||
end
|
||||
end
|
||||
'';
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
];
|
||||
}
|
||||
# ask perplexity a quick question
|
||||
{
|
||||
key = "<leader>ccs";
|
||||
action.__raw = ''
|
||||
function()
|
||||
local input = vim.fn.input("Perplexity: ")
|
||||
if input ~= "" then
|
||||
require("CopilotChat").ask(input, {
|
||||
agent = "perplexityai",
|
||||
selection = false,
|
||||
})
|
||||
end
|
||||
end
|
||||
'';
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
plugins.cmp = {
|
||||
|
@ -166,12 +201,17 @@
|
|||
installRustc = true;
|
||||
installCargo = true;
|
||||
};
|
||||
eslint.enable = true;
|
||||
};
|
||||
};
|
||||
plugins.treesitter = {
|
||||
enable = true;
|
||||
nixGrammars = true;
|
||||
settings.indent.enable = true;
|
||||
settings = {
|
||||
indent.enable = true;
|
||||
auto_install = true;
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
plugins.fzf-lua = {
|
||||
enable = true;
|
||||
|
@ -193,6 +233,13 @@
|
|||
settings.current_line_blame = true;
|
||||
};
|
||||
|
||||
plugins.copilot-chat = {
|
||||
enable = true;
|
||||
settings = {
|
||||
model = "claude-3.5-sonnet";
|
||||
};
|
||||
};
|
||||
|
||||
plugins.cmp-buffer.enable = true;
|
||||
plugins.cmp-emoji.enable = true;
|
||||
plugins.cmp-nvim-lsp.enable = true;
|
||||
|
|
85
home/plasma.nix
Normal file
85
home/plasma.nix
Normal file
|
@ -0,0 +1,85 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.plasma = {
|
||||
enable = true;
|
||||
overrideConfig = true;
|
||||
immutableByDefault = true;
|
||||
workspace = {
|
||||
lookAndFeel = "org.ide.breezedark.desktop";
|
||||
cursor = {
|
||||
theme = "Bibata-Modern-Classic";
|
||||
size = 23;
|
||||
};
|
||||
};
|
||||
|
||||
fonts = {
|
||||
general = {
|
||||
family = "IBM Plex Mono";
|
||||
pointSize = 12;
|
||||
};
|
||||
};
|
||||
|
||||
input.keyboard = {
|
||||
numlockOnStartup = "on";
|
||||
options = [ "ctrl:nocaps" ];
|
||||
};
|
||||
|
||||
# Meta key is actually the Super key in KDE
|
||||
|
||||
hotkeys.commands = {
|
||||
"launch-terminal" = {
|
||||
name = "launch terminal";
|
||||
key = "Meta+Return";
|
||||
command = "kitty";
|
||||
};
|
||||
"launch-browser" = {
|
||||
name = "launch browser";
|
||||
key = "Meta+B";
|
||||
command = "chromium";
|
||||
};
|
||||
"launch-fuzzel" = {
|
||||
name = "launch-fuzzel";
|
||||
key = "Meta+d";
|
||||
command = "fuzzel";
|
||||
};
|
||||
};
|
||||
|
||||
shortcuts = {
|
||||
kwin = {
|
||||
"Switch Window Down" = "Meta+J";
|
||||
"Switch Window Left" = "Meta+H";
|
||||
"Switch Window Right" = "Meta+L";
|
||||
"Switch Window Up" = "Meta+K";
|
||||
"Window Quick Tile Down" = "Meta+Shift+J";
|
||||
"Window Quick Tile Left" = "Meta+Shift+H";
|
||||
"Window Quick Tile Right" = "Meta+Shift+L";
|
||||
"Window Quick Tile Up" = "Meta+Shift+K";
|
||||
"Window Close" = "Meta+Ctrl+Q";
|
||||
"Window Maximize" = "Meta+W";
|
||||
"Window Minimize" = "Meta+Shift+-";
|
||||
"Window Fullscreen" = "Meta+F";
|
||||
"Window Shrink Horizontal" = "Meta+-";
|
||||
};
|
||||
|
||||
ksmserver = {
|
||||
"Lock Session" = [
|
||||
"Screensaver"
|
||||
"Meta+Ctrl+L"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
configFile = {
|
||||
# save RAM
|
||||
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
|
||||
};
|
||||
|
||||
# looks like KDE overrides services.logind settings
|
||||
powerdevil.AC = {
|
||||
whenLaptopLidClosed = "hibernate";
|
||||
};
|
||||
powerdevil.battery = {
|
||||
whenLaptopLidClosed = "hibernate";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,156 +0,0 @@
|
|||
configuration {
|
||||
modes: "drun,run,emoji:rofimoji,clipboard:/home/yt/.config/rofi/scripts/cliphist.sh";
|
||||
font: "hack 12";
|
||||
/* location: 0;*/
|
||||
/* yoffset: 0;*/
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
show-icons: true;
|
||||
terminal: "kitty";
|
||||
/* ssh-client: "ssh";*/
|
||||
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
|
||||
/* run-command: "{cmd}";*/
|
||||
/* run-list-command: "";*/
|
||||
/* run-shell-command: "{terminal} -e {cmd}";*/
|
||||
/* window-command: "wmctrl -i -R {window}";*/
|
||||
/* window-match-fields: "all";*/
|
||||
icon-theme: "Papirus";
|
||||
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
|
||||
/* drun-categories: ;*/
|
||||
/* drun-show-actions: false;*/
|
||||
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
|
||||
/* drun-url-launcher: "xdg-open";*/
|
||||
/* disable-history: false;*/
|
||||
/* ignored-prefixes: "";*/
|
||||
/* sort: false;*/
|
||||
/* sorting-method: "normal";*/
|
||||
/* case-sensitive: false;*/
|
||||
/* cycle: true;*/
|
||||
/* sidebar-mode: false;*/
|
||||
/* hover-select: false;*/
|
||||
/* eh: 1;*/
|
||||
/* auto-select: false;*/
|
||||
/* parse-hosts: false;*/
|
||||
/* parse-known-hosts: true;*/
|
||||
combi-modes: "window,run,calc,filebrowser";
|
||||
/* matching: "normal";*/
|
||||
/* tokenize: true;*/
|
||||
/* m: "-5";*/
|
||||
/* filter: ;*/
|
||||
/* dpi: -1;*/
|
||||
/* threads: 0;*/
|
||||
/* scroll-method: 0;*/
|
||||
/* window-format: "{w} {c} {t}";*/
|
||||
/* click-to-exit: true;*/
|
||||
/* global-kb: false;*/
|
||||
/* max-history-size: 25;*/
|
||||
/* combi-hide-mode-prefix: false;*/
|
||||
/* combi-display-format: "{mode} {text}";*/
|
||||
/* matching-negate-char: '-' /* unsupported */;*/
|
||||
/* cache-dir: ;*/
|
||||
/* window-thumbnail: false;*/
|
||||
/* drun-use-desktop-cache: false;*/
|
||||
/* drun-reload-desktop-cache: false;*/
|
||||
/* normalize-match: false;*/
|
||||
/* steal-focus: false;*/
|
||||
/* application-fallback-icon: ;*/
|
||||
/* refilter-timeout-limit: 300;*/
|
||||
/* xserver-i300-workaround: false;*/
|
||||
/* completer-mode: "recursivebrowser";*/
|
||||
/* pid: "/run/user/1000/rofi.pid";*/
|
||||
/* display-window: ;*/
|
||||
/* display-run: ;*/
|
||||
/* display-ssh: ;*/
|
||||
/* display-drun: ;*/
|
||||
/* display-combi: ;*/
|
||||
/* display-keys: ;*/
|
||||
/* display-filebrowser: ;*/
|
||||
/* display-recursivebrowser: ;*/
|
||||
/* kb-primary-paste: "Control+V,Shift+Insert";*/
|
||||
/* kb-secondary-paste: "Control+v,Insert";*/
|
||||
/* kb-secondary-copy: "Control+c";*/
|
||||
/* kb-clear-line: "Control+w";*/
|
||||
/* kb-move-front: "Control+a";*/
|
||||
/* kb-move-end: "Control+e";*/
|
||||
/* kb-move-word-back: "Alt+b,Control+Left";*/
|
||||
/* kb-move-word-forward: "Alt+f,Control+Right";*/
|
||||
/* kb-move-char-back: "Left,Control+b";*/
|
||||
/* kb-move-char-forward: "Right,Control+f";*/
|
||||
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
|
||||
/* kb-remove-word-forward: "Control+Alt+d";*/
|
||||
/* kb-remove-char-forward: "Delete,Control+d";*/
|
||||
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
|
||||
/* kb-remove-to-eol: "Control+k";*/
|
||||
/* kb-remove-to-sol: "Control+u";*/
|
||||
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
|
||||
/* kb-accept-custom: "Control+Return";*/
|
||||
/* kb-accept-custom-alt: "Control+Shift+Return";*/
|
||||
/* kb-accept-alt: "Shift+Return";*/
|
||||
/* kb-delete-entry: "Shift+Delete";*/
|
||||
/* kb-mode-next: "Shift+Right,Control+Tab";*/
|
||||
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
|
||||
/* kb-mode-complete: "Control+l";*/
|
||||
/* kb-row-left: "Control+Page_Up";*/
|
||||
/* kb-row-right: "Control+Page_Down";*/
|
||||
/* kb-row-up: "Up,Control+p";*/
|
||||
/* kb-row-down: "Down,Control+n";*/
|
||||
/* kb-row-tab: "";*/
|
||||
/* kb-element-next: "Tab";*/
|
||||
/* kb-element-prev: "ISO_Left_Tab";*/
|
||||
/* kb-page-prev: "Page_Up";*/
|
||||
/* kb-page-next: "Page_Down";*/
|
||||
/* kb-row-first: "Home,KP_Home";*/
|
||||
/* kb-row-last: "End,KP_End";*/
|
||||
/* kb-row-select: "Control+space";*/
|
||||
/* kb-screenshot: "Alt+S";*/
|
||||
/* kb-ellipsize: "Alt+period";*/
|
||||
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
|
||||
/* kb-toggle-sort: "Alt+grave";*/
|
||||
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
|
||||
/* kb-custom-1: "Alt+1";*/
|
||||
/* kb-custom-2: "Alt+2";*/
|
||||
/* kb-custom-3: "Alt+3";*/
|
||||
/* kb-custom-4: "Alt+4";*/
|
||||
/* kb-custom-5: "Alt+5";*/
|
||||
/* kb-custom-6: "Alt+6";*/
|
||||
/* kb-custom-7: "Alt+7";*/
|
||||
/* kb-custom-8: "Alt+8";*/
|
||||
/* kb-custom-9: "Alt+9";*/
|
||||
/* kb-custom-10: "Alt+0";*/
|
||||
/* kb-custom-11: "Alt+exclam";*/
|
||||
/* kb-custom-12: "Alt+at";*/
|
||||
/* kb-custom-13: "Alt+numbersign";*/
|
||||
/* kb-custom-14: "Alt+dollar";*/
|
||||
/* kb-custom-15: "Alt+percent";*/
|
||||
/* kb-custom-16: "Alt+dead_circumflex";*/
|
||||
/* kb-custom-17: "Alt+ampersand";*/
|
||||
/* kb-custom-18: "Alt+asterisk";*/
|
||||
/* kb-custom-19: "Alt+parenleft";*/
|
||||
/* kb-select-1: "Super+1";*/
|
||||
/* kb-select-2: "Super+2";*/
|
||||
/* kb-select-3: "Super+3";*/
|
||||
/* kb-select-4: "Super+4";*/
|
||||
/* kb-select-5: "Super+5";*/
|
||||
/* kb-select-6: "Super+6";*/
|
||||
/* kb-select-7: "Super+7";*/
|
||||
/* kb-select-8: "Super+8";*/
|
||||
/* kb-select-9: "Super+9";*/
|
||||
/* kb-select-10: "Super+0";*/
|
||||
/* kb-entry-history-up: "Control+Up";*/
|
||||
/* kb-entry-history-down: "Control+Down";*/
|
||||
/* ml-row-left: "ScrollLeft";*/
|
||||
/* ml-row-right: "ScrollRight";*/
|
||||
/* ml-row-up: "ScrollUp";*/
|
||||
/* ml-row-down: "ScrollDown";*/
|
||||
/* me-select-entry: "MousePrimary";*/
|
||||
/* me-accept-entry: "MouseDPrimary";*/
|
||||
/* me-accept-custom: "Control+MouseDPrimary";*/
|
||||
timeout {
|
||||
action: "kb-cancel";
|
||||
delay: 0;
|
||||
}
|
||||
filebrowser {
|
||||
directories-first: true;
|
||||
sorting-method: "name";
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
tmp_dir="/tmp/cliphist"
|
||||
rm -rf "$tmp_dir"
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
cliphist decode <<<"$1" | wl-copy
|
||||
exit
|
||||
fi
|
||||
|
||||
mkdir -p "$tmp_dir"
|
||||
|
||||
read -r -d '' prog <<EOF
|
||||
/^[0-9]+\s<meta http-equiv=/ { next }
|
||||
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
|
||||
system("echo " grp[1] "\\\\\t | cliphist decode >$tmp_dir/"grp[1]"."grp[3])
|
||||
print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
|
||||
next
|
||||
}
|
||||
1
|
||||
EOF
|
||||
cliphist list | gawk "$prog"
|
156
home/sway/config
156
home/sway/config
|
@ -1,156 +0,0 @@
|
|||
set $mod Mod4
|
||||
set $alt Mod1
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
|
||||
set $term $HOME/.config/sway/scripts/terminal.sh
|
||||
set $menu rofi -show run
|
||||
set $screenshot grim -g "$(slurp)" - | wl-copy
|
||||
set $browser librewolf
|
||||
set $clipboard rofi -show clipboard -show-icons
|
||||
set $emoji rofi -show emoji
|
||||
|
||||
set $font_family DejaVu Sans Mono
|
||||
set $font_size 11
|
||||
set $bg #000000
|
||||
set $fg #ffffff
|
||||
set $fgi #888888
|
||||
|
||||
set $wallpaper $HOME/wallpapers/nixos-c-book-large.png
|
||||
set $lock swaylock -f -i $wallpaper
|
||||
output * bg $wallpaper fill
|
||||
|
||||
floating_modifier $mod normal
|
||||
default_border pixel
|
||||
smart_borders on
|
||||
focus_follows_mouse always
|
||||
# mouse_warping container
|
||||
|
||||
bindsym $mod+Return exec $term
|
||||
bindsym $mod+Ctrl+q kill
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+Shift+c reload
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
bindsym Print exec $screenshot
|
||||
bindsym $mod+comma exec $clipboard
|
||||
bindsym $mod+period exec $emoji
|
||||
|
||||
bindsym $mod+$alt+b exec $browser
|
||||
bindsym $mod+$alt+a exec anki
|
||||
bindsym $mod+$alt+f exec thunar
|
||||
bindsym $mod+$alt+e exec evolution
|
||||
bindsym $mod+p exec bitwarden
|
||||
bindsym $mod+$alt+m exec element-desktop
|
||||
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
bindsym $mod+9 workspace number 9
|
||||
bindsym $mod+0 workspace number 10
|
||||
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
bindsym $mod+Shift+9 move container to workspace number 9
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
|
||||
# mouse side buttons
|
||||
bindsym --whole-window BTN_EXTRA exec ~/.config/sway/scripts/remote.sh btn1
|
||||
bindsym --whole-window BTN_SIDE exec ~/.config/sway/scripts/remote.sh
|
||||
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
bindsym $mod+a focus parent
|
||||
bindsym $mod+Shift+a focus child
|
||||
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
mode "resize" {
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
# keys to adjust volue and brightness
|
||||
bindsym --locked XF86AudioMute exec "amixer -q sset Master,0 toggle"
|
||||
bindsym --locked XF86AudioLowerVolume exec "amixer -q set Master 1%-"
|
||||
bindsym --locked XF86AudioRaiseVolume exec "amixer -q sset Master 1%+"
|
||||
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 1%-
|
||||
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 1%+
|
||||
|
||||
# lockscreen
|
||||
bindsym $mod+Control+l exec $lock
|
||||
|
||||
font pango:$font_family $font_size
|
||||
|
||||
for_window [app_id=mpv] inhibit_idle visible, floating enable, sticky enable
|
||||
for_window [app_id="LibreWolf" title="^Extension"] floating enable
|
||||
for_window [floating] border csd
|
||||
for_window [app_id="Bitwarden"] floating enable
|
||||
for_window [app_id=anki title="Add"] floating enable
|
||||
|
||||
bar {
|
||||
swaybar_command waybar
|
||||
}
|
||||
|
||||
input "type:touchpad" {
|
||||
dwt enabled
|
||||
tap enabled
|
||||
natural_scroll enabled
|
||||
}
|
||||
|
||||
input "type:keyboard" {
|
||||
xkb_layout us
|
||||
xkb_options ctrl:nocaps
|
||||
xkb_numlock enabled
|
||||
}
|
||||
|
||||
exec wl-paste --watch cliphist store
|
||||
exec mako >> $HOME/mako.log 2>&1
|
||||
exec dbus-update-activation-environment --all
|
||||
|
||||
exec swayidle -w \
|
||||
timeout 300 'swaymsg "output * power off"' \
|
||||
timeout 305 $lock \
|
||||
resume 'swaymsg "output * power on"' \
|
||||
before-sleep 'playerctl pause; swaylock -f'
|
||||
|
||||
exec system-dnotify --ready
|
|
@ -1,27 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
active_window=$(swaymsg -t get_tree |jq -r '..|try select(.focused == true) |.app_id')
|
||||
|
||||
if [ "$1" = "btn1" ]; then
|
||||
if [ "$active_window" = "anki" ]; then
|
||||
wtype " "
|
||||
elif [ "$active_window" = "foot" ]; then
|
||||
wtype -M ctrl -M shift -k c -m ctrl -m shift
|
||||
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
|
||||
wtype -M alt -P right -p right -m alt
|
||||
else
|
||||
wtype -M ctrl -k c -m ctrl
|
||||
fi
|
||||
else
|
||||
if [ "$active_window" = "anki" ]; then
|
||||
wtype "1"
|
||||
elif [ "$active_window" = "foot" ]; then
|
||||
wtype -M ctrl -M shift -k v
|
||||
wtype -m ctrl
|
||||
elif [ "$active_window" = "chromium-browser" ] || [ "$active_window" = "librewolf" ]; then
|
||||
wtype -M alt -P left -p left -m alt
|
||||
else
|
||||
wtype -M ctrl -k v
|
||||
wtype -m ctrl
|
||||
fi
|
||||
fi
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
focused_workspace=$(swaymsg -t get_workspaces | jq '.[] | select(.focused == true) | .num')
|
||||
|
||||
foot_window_count=$(swaymsg -t get_tree | jq --argjson workspace "$focused_workspace" '[recurse(.nodes[]?) | select(.type == "workspace" and .num == $workspace) | recurse(.nodes[]?) | select(.app_id == "foot")] | length')
|
||||
|
||||
next_session=$((focused_workspace * 10))
|
||||
|
||||
if [ "$foot_window_count" -gt 0 ]
|
||||
then
|
||||
next_session=$((next_session + foot_window_count))
|
||||
fi
|
||||
|
||||
foot tmux new-session -A -s ${next_session}
|
|
@ -1,18 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
mutableExtensionsDir = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
vscodevim.vim
|
||||
jnoortheen.nix-ide # nix language support
|
||||
editorconfig.editorconfig # editorconfig
|
||||
dracula-theme.theme-dracula # color scheme
|
||||
tomoki1207.pdf # pdf viewer
|
||||
yzhang.markdown-all-in-one # markdown tools
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
{
|
||||
"layer": "top", // Waybar on highest layer so tooltips go over windows
|
||||
"output": "eDP-1", // Set output to primary monitor
|
||||
"height": 40, // Set height to avoid jumping due to active workspace indicator
|
||||
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
"margin-top": 0,
|
||||
"modules-left": ["niri/workspaces", "clock#time", "clock#date", "battery"], // Sets modules for the left of the bar
|
||||
"modules-center": ["niri/window"], // Set modules for the center of the bar
|
||||
"modules-right": ["tray", "temperature", "cpu", "memory", "wireplumber"], // Set modules for the right of the bar
|
||||
"clock#time": {
|
||||
"format": "<span color=\"#7aa2f7\"> </span>{:%H:%M:%S}",
|
||||
"interval": 1,
|
||||
},
|
||||
"clock#date": {
|
||||
"format": "<span color=\"#7aa2f7\"> </span>{:%Y/%m/%d}",
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"interval": 360,
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"mode-mon-col": 4,
|
||||
"weeks-pos": "right",
|
||||
"on-scroll": 1,
|
||||
"on-click-right": "mode",
|
||||
"format": {
|
||||
"months": "<span color='#c0caf5'><b>{}</b></span>",
|
||||
"days": "<span color='#c0caf5'><b>{}</b></span>",
|
||||
"weeks": "<span color='#7dcfff'><b>W{}</b></span>",
|
||||
"weekdays": "<span color='#ff9e64'><b>{}</b></span>",
|
||||
"today": "<span color='#f7768e'><b><u>{}</u></b></span>",
|
||||
},
|
||||
},
|
||||
},
|
||||
"battery": {
|
||||
"interval": 60,
|
||||
"states": {
|
||||
"warning": 40,
|
||||
"critical": 20,
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": [
|
||||
"<span color=\"#f7768e\"> </span>",
|
||||
"<span color=\"#f7768e\"> </span>",
|
||||
"<span color=\"#7aa2f7\"> </span>",
|
||||
"<span color=\"#7aa2f7\"> </span>",
|
||||
"<span color=\"#7aa2f7\"> </span>",
|
||||
],
|
||||
"format-charging": "<span color=\"#e0af68\"></span> {capacity}%",
|
||||
},
|
||||
"cpu": {
|
||||
"format": "<span color=\"#7aa2f7\"> </span>{usage}%",
|
||||
"interval": 4,
|
||||
},
|
||||
"memory": {
|
||||
"format": "<span color=\"#7aa2f7\"> </span>{used}GiB",
|
||||
"interval": 4,
|
||||
},
|
||||
"temperature": {
|
||||
"hwmon-path": "/sys/class/hwmon/hwmon4/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
"format": "<span color=\"#7aa2f7\"> </span>{temperatureC}°C",
|
||||
"format-critical": "<span color=\"#f7768e\"> </span>{temperatureC}°C",
|
||||
"interval": 4,
|
||||
},
|
||||
"wireplumber": {
|
||||
"scroll-step": 1, // %, can be a float
|
||||
"format": "<span color=\"#7aa2f7\">{icon} </span>{volume}%",
|
||||
"format-muted": "<span color=\"#f7768e\"> </span>Muted",
|
||||
"format-icons": ["", "", ""],
|
||||
"on-click": "pavucontrol",
|
||||
"interval": 4,
|
||||
},
|
||||
"niri/window": {
|
||||
"max-length": 64,
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 22,
|
||||
"spacing": 6,
|
||||
}
|
||||
}
|
|
@ -1,70 +0,0 @@
|
|||
.module,
|
||||
#clock.date,
|
||||
#clock.time,
|
||||
#workspaces button {
|
||||
background: transparent;
|
||||
padding: 0 10px;
|
||||
font-family: RobotoMono Nerd Font;
|
||||
font-weight: 900;
|
||||
font-size: 13pt;
|
||||
color: #c0caf5;
|
||||
}
|
||||
|
||||
/* main waybar */
|
||||
window#waybar {
|
||||
background: rgba(26, 27, 38, 1);
|
||||
border: 2px solid #414868;
|
||||
}
|
||||
|
||||
/* when hovering over modules */
|
||||
tooltip {
|
||||
background: #1e1e2e;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding-right: 100px;
|
||||
}
|
||||
|
||||
|
||||
/* Sets active workspace to have a solid line on the bottom */
|
||||
#workspaces button.focused {
|
||||
border-bottom: 2px solid #7aa2f7;
|
||||
border-radius: 0;
|
||||
margin-top: 0px;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
/* More workspace stuff for highlighting on hover */
|
||||
#workspaces button.focused {
|
||||
color: #a6adc8;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #f7768e;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #11111b;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
/* Hide window module when not focused on window or empty workspace */
|
||||
window#waybar.empty #window {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Set up rounding to make these modules look like separate pills */
|
||||
#tray {
|
||||
margin-right: 4px;
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./common.nix
|
||||
];
|
||||
home = {
|
||||
username = "codespace";
|
||||
homeDirectory = "/home/codespace";
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
foot.terminfo
|
||||
attic-client
|
||||
];
|
||||
}
|
|
@ -32,11 +32,12 @@
|
|||
userName = "cy";
|
||||
userEmail = "cy@cy7.sh";
|
||||
delta = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
options = {
|
||||
navigate = true;
|
||||
};
|
||||
};
|
||||
difftastic.enable = true;
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
push.autoSetupRemote = true; # assume -u on first push
|
||||
|
@ -44,7 +45,11 @@
|
|||
rebase = true;
|
||||
autostash = true;
|
||||
};
|
||||
merge.tool = "vimdiff";
|
||||
merge = {
|
||||
tool = "vimdiff";
|
||||
keepBackup = false;
|
||||
prompt = false;
|
||||
};
|
||||
rebase = {
|
||||
stat = true;
|
||||
autoStash = true;
|
||||
|
@ -52,12 +57,20 @@
|
|||
updateRefs = true;
|
||||
};
|
||||
help.autocorrect = 1;
|
||||
mergetool = {
|
||||
prompt = false;
|
||||
path = "nvim-open";
|
||||
"mergetool \"vimdiff\"".cmd = "nvim -d $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'";
|
||||
url = {
|
||||
"ssh://git@github.com/" = {
|
||||
insteadOf = [
|
||||
"https://github.com/"
|
||||
"github:"
|
||||
"gh:"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.ripgrep.enable = true;
|
||||
programs.man.generateCaches = true;
|
||||
# programs.man.generateCaches = true; # slows down eval
|
||||
programs.fd.enable = true;
|
||||
news.display = "silent";
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./common.nix
|
||||
../foot.nix
|
||||
../niri
|
||||
../irssi.nix
|
||||
../kitty.nix
|
||||
../codium.nix
|
||||
];
|
||||
home = {
|
||||
username = "yt";
|
||||
|
@ -17,136 +17,138 @@
|
|||
};
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "kde";
|
||||
style.name = "breeze-dark";
|
||||
style.package = pkgs.kdePackages.breeze;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern";
|
||||
};
|
||||
theme = {
|
||||
package = pkgs.adw-gtk3;
|
||||
name = "adw-gtk3-dark";
|
||||
};
|
||||
iconTheme = {
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
name = "Adwaita";
|
||||
};
|
||||
};
|
||||
|
||||
home.pointerCursor = {
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern";
|
||||
name = "Bibata-Modern-Classic";
|
||||
size = 23;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
firefox
|
||||
ungoogled-chromium
|
||||
librewolf
|
||||
bitwarden-desktop
|
||||
bitwarden-cli
|
||||
fastfetch
|
||||
nwg-look
|
||||
kdePackages.gwenview
|
||||
kdePackages.okular
|
||||
kdePackages.qtwayland
|
||||
mpv
|
||||
yt-dlp
|
||||
signal-desktop
|
||||
azure-cli
|
||||
pavucontrol
|
||||
btop
|
||||
grim
|
||||
slurp
|
||||
rofi-wayland
|
||||
rofimoji
|
||||
cliphist
|
||||
jq
|
||||
bash-language-server
|
||||
sqlite
|
||||
usbutils
|
||||
clang-tools
|
||||
calibre
|
||||
tor-browser
|
||||
wtype
|
||||
bat
|
||||
yarn
|
||||
rclone
|
||||
go
|
||||
rustup
|
||||
pwgen
|
||||
lua-language-server
|
||||
gnumake
|
||||
foot
|
||||
minisign
|
||||
unzip
|
||||
lm_sensors
|
||||
sshfs
|
||||
python312Packages.python-lsp-server
|
||||
gopls
|
||||
anki
|
||||
trezorctl
|
||||
trezor-agent
|
||||
q
|
||||
opentofu
|
||||
terraform-ls
|
||||
gdb
|
||||
clang
|
||||
seahorse
|
||||
github-cli
|
||||
fuzzel
|
||||
nixpkgs-review
|
||||
home.packages =
|
||||
with pkgs;
|
||||
lib.flatten [
|
||||
ungoogled-chromium
|
||||
librewolf
|
||||
bitwarden-desktop
|
||||
bitwarden-cli
|
||||
fastfetch
|
||||
(with kdePackages; [
|
||||
gwenview
|
||||
okular
|
||||
])
|
||||
mpv
|
||||
signal-desktop
|
||||
btop
|
||||
jq
|
||||
sqlite
|
||||
usbutils
|
||||
calibre
|
||||
tor-browser
|
||||
wtype
|
||||
bat
|
||||
rclone
|
||||
go
|
||||
(rust-bin.selectLatestNightlyWith (
|
||||
toolchain:
|
||||
toolchain.default.override {
|
||||
extensions = [ "rust-src" ];
|
||||
}
|
||||
))
|
||||
pwgen
|
||||
gnumake
|
||||
unzip
|
||||
anki-bin
|
||||
trezorctl
|
||||
trezor-agent
|
||||
q
|
||||
gdb
|
||||
fuzzel
|
||||
hugo
|
||||
ghidra
|
||||
sccache
|
||||
awscli2
|
||||
(cutter.withPlugins (
|
||||
p: with p; [
|
||||
rz-ghidra
|
||||
jsdec
|
||||
sigdb
|
||||
]
|
||||
))
|
||||
p7zip
|
||||
qbittorrent
|
||||
nil
|
||||
android-tools
|
||||
frida-tools
|
||||
mitmproxy
|
||||
(python313.withPackages (
|
||||
p: with p; [
|
||||
python-lsp-server
|
||||
pip
|
||||
virtualenv
|
||||
]
|
||||
))
|
||||
jadx
|
||||
scrcpy
|
||||
syncthing
|
||||
syncthingtray
|
||||
(with llvmPackages; [
|
||||
clangUseLLVM
|
||||
compiler-rt
|
||||
libllvm
|
||||
])
|
||||
nix-output-monitor
|
||||
wl-clipboard-rs
|
||||
pixelflasher
|
||||
element-desktop
|
||||
freetube
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
# to make ghidra work on xwayland
|
||||
_JAVA_AWT_WM_NONREPARENTING = 1;
|
||||
|
||||
# sccache stuff
|
||||
RUSTC_WRAPPER = "${lib.getExe pkgs.sccache}";
|
||||
SCCACHE_BUCKET = "sccache";
|
||||
SCCACHE_REGION = "us-east-1";
|
||||
SCCACHE_ENDPOINT = "https://e3e97aac307d106a7becea43cef8fcbd.r2.cloudflarestorage.com";
|
||||
SCCACHE_ALLOW_CORE_DUMPS = "true";
|
||||
SCCACHE_S3_USE_SSL = "true";
|
||||
SCCACHE_CACHE_MULTIARCH = "true";
|
||||
SCCACHE_LOG = "warn";
|
||||
AWS_DEFAULT_REGION = "us-east-1";
|
||||
AWS_ENDPOINT_URL = "https://e3e97aac307d106a7becea43cef8fcbd.r2.cloudflarestorage.com";
|
||||
AWS_ACCESS_KEY_ID = "$(cat /run/secrets/aws/key_id)";
|
||||
AWS_SECRET_ACCESS_KEY = "$(cat /run/secrets/aws/key_secret)";
|
||||
|
||||
# bitwarden ssh agent
|
||||
SSH_AUTH_SOCK = "$HOME/.bitwarden-ssh-agent.sock";
|
||||
};
|
||||
|
||||
home.sessionPath = [
|
||||
"$HOME/.cargo/bin"
|
||||
"$HOME/go/bin"
|
||||
];
|
||||
|
||||
programs.waybar.enable = true;
|
||||
programs.feh.enable = true;
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
backgroundColor = "#1a1a1a";
|
||||
defaultTimeout = 5000;
|
||||
borderSize = 0;
|
||||
borderRadius = 10;
|
||||
font = "DejaVu Sans Mono 11";
|
||||
padding = "10";
|
||||
textColor = "#ffffff";
|
||||
extraConfig = ''
|
||||
[urgency=high]
|
||||
background-color=#c00000
|
||||
border-color=#ff0000
|
||||
'';
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
rofi.source = ../rofi;
|
||||
waybar.source = ../waybar;
|
||||
mpv.source = ../mpv;
|
||||
};
|
||||
|
||||
programs.newsboat = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
urls-source "miniflux"
|
||||
miniflux-url "https://rss.cything.io/"
|
||||
miniflux-login "cy"
|
||||
miniflux-passwordfile /run/secrets/newsboat/miniflux
|
||||
'';
|
||||
};
|
||||
|
||||
services.gnome-keyring.enable = true;
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
programs.git.extraConfig = {
|
||||
user = {
|
||||
signingKey = "~/.ssh/id_ed25519";
|
||||
};
|
||||
gpg.format = "ssh";
|
||||
commit.gpgsign = true;
|
||||
};
|
||||
|
||||
programs.nix-index-database.comma.enable = true;
|
||||
}
|
||||
|
|
|
@ -36,19 +36,22 @@
|
|||
searchUpKey = "^p";
|
||||
searchDownKey = "^n";
|
||||
};
|
||||
|
||||
# prezto = {
|
||||
# enable = true;
|
||||
# caseSensitive = false;
|
||||
# editor.keymap = "vi";
|
||||
# };
|
||||
|
||||
initExtra = ''
|
||||
# disable control+s to pause terminal
|
||||
unsetopt FLOW_CONTROL
|
||||
# manually integrate fzf cause we need to make sure zsh-vi-mode
|
||||
# won't override C-r
|
||||
function zvm_after_init() {
|
||||
eval "$(${pkgs.fzf}/bin/fzf --zsh)"
|
||||
}
|
||||
|
||||
# useful emacs mode bindings
|
||||
bindkey -M viins "^E" end-of-line
|
||||
bindkey -M viins "^A" beginning-of-line
|
||||
bindkey -M viins "^B" backward-char
|
||||
bindkey -M viins "^F" forward-char
|
||||
|
||||
# accept one word completion
|
||||
bindkey -M viins "^S" forward-word
|
||||
|
@ -87,9 +90,9 @@
|
|||
"ta" = "tmux new-session -A -s";
|
||||
"se" = "sudoedit";
|
||||
"s" = "sudo";
|
||||
"nrs" = "sudo nixos-rebuild switch -L --flake .";
|
||||
"nrt" = "sudo nixos-rebuild test -L --flake .";
|
||||
"hrs" = "home-manager switch -L --flake .";
|
||||
"nrs" = "sudo nixos-rebuild switch -L --flake . --log-format internal-json -v |& nom --json";
|
||||
"nrt" = "sudo nixos-rebuild test -L --flake . --log-format internal-json -v |& nom --json";
|
||||
"hrs" = "home-manager switch -L --flake . |& nom --json";
|
||||
"g" = "git";
|
||||
"ga" = "git add";
|
||||
"gaa" = "git add --all";
|
||||
|
@ -109,12 +112,13 @@
|
|||
"grv" = "git remote --verbose";
|
||||
"gs" = "git status --short";
|
||||
"gss" = "git status";
|
||||
"code" = "codium";
|
||||
};
|
||||
};
|
||||
|
||||
programs.fzf.enableZshIntegration = true;
|
||||
programs.zoxide.enableZshIntegration = true;
|
||||
programs.eza.enableZshIntegration = true;
|
||||
programs.nix-index.enableZshIntegration = false;
|
||||
programs.direnv.enableZshIntegration = false;
|
||||
programs.nix-index.enableZshIntegration = true;
|
||||
programs.direnv.enableZshIntegration = true;
|
||||
}
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
{
|
||||
acme_ca https://acme.zerossl.com/v2/DV90
|
||||
acme_eab {
|
||||
key_id {$EAB_KEY_ID}
|
||||
mac_key {$EAB_MAC_KEY}
|
||||
}
|
||||
}
|
||||
|
||||
(common) {
|
||||
encode zstd gzip
|
||||
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
|
||||
}
|
||||
|
||||
git.cything.io {
|
||||
import common
|
||||
|
||||
# wrap in route so things are evaluated in the order written
|
||||
route {
|
||||
# rewrite gitlab URIs to make it work with forgejo
|
||||
uri path_regexp /-/ /
|
||||
uri replace /blob/ /src/
|
||||
redir https://git.cy7.sh{uri} permanent
|
||||
}
|
||||
}
|
||||
|
||||
git.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
|
||||
rss.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:8080
|
||||
}
|
||||
|
||||
photos.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:2283
|
||||
}
|
||||
|
||||
chat.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8448
|
||||
}
|
||||
|
||||
pass.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:8081
|
||||
}
|
||||
|
||||
dns.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8082
|
||||
}
|
||||
|
||||
pad.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8085
|
||||
}
|
||||
|
||||
red.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8087
|
||||
}
|
||||
|
||||
grafana.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8088
|
||||
}
|
||||
|
||||
element.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8089
|
||||
}
|
||||
|
||||
cache.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8090
|
||||
}
|
||||
|
||||
s3.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:3900
|
||||
}
|
||||
|
||||
admin.s3.cy7.sh {
|
||||
import common
|
||||
reverse_proxy localhost:3903
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.adguardhome = {
|
||||
enable = true;
|
||||
host = "127.0.0.1";
|
||||
port = 8082;
|
||||
settings = {
|
||||
http.port = "8083";
|
||||
users = [
|
||||
{
|
||||
name = "cy";
|
||||
password = "$2y$10$BZy2zYJj5z4e8LZCq/GwuuhWUafL/MNFO.YcsAMmpDS.2krPxi7KC";
|
||||
}
|
||||
];
|
||||
# do not listen eveywhere cause podman runs it's own DNS
|
||||
dns.bind_hosts = [
|
||||
"127.0.0.1"
|
||||
"::1"
|
||||
"31.59.129.225"
|
||||
"2a0f:85c1:840:2bfb::1"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
services.atticd = {
|
||||
enable = true;
|
||||
|
||||
environmentFile = config.sops.secrets."attic/env".path;
|
||||
|
||||
settings = {
|
||||
listen = "[::]:8090";
|
||||
api-endpoint = "https://cache.cything.io/";
|
||||
allowed-hosts = [ "cache.cything.io" ];
|
||||
require-proof-of-possession = false;
|
||||
compression.type = "zstd";
|
||||
database.url = "postgresql:///atticd?host=/run/postgresql";
|
||||
|
||||
storage = {
|
||||
type = "local";
|
||||
path = "/mnt/attic";
|
||||
};
|
||||
|
||||
garbage-collection = {
|
||||
default-retention-period = "3 months";
|
||||
};
|
||||
|
||||
chunking = {
|
||||
nar-size-threshold = 0; # disables chunking
|
||||
min-size = 0;
|
||||
avg-size = 0;
|
||||
max-size = 0;
|
||||
concurrent-chunk-uploads = 32;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
virtualisation.oci-containers.containers.conduit = {
|
||||
image = "ghcr.io/girlbossceo/conduwuit:main";
|
||||
autoStart = true;
|
||||
ports = [ "127.0.0.1:8448:8448" ];
|
||||
pull = "newer";
|
||||
environment = {
|
||||
CONDUWUIT_SERVER_NAME = "cything.io";
|
||||
CONDUWUIT_DATABASE_PATH = "/var/lib/conduwuit";
|
||||
CONDUWUIT_PORT = "8448";
|
||||
CONDUWUIT_MAX_REQUEST_SIZE = "20000000"; # in bytes ~20MB
|
||||
CONDUWUIT_ALLOW_REGISTRATION = "false";
|
||||
CONDUWUIT_ALLOW_FEDERATION = "true";
|
||||
CONDUWUIT_ALLOW_CHECK_FOR_UPDATES = "true";
|
||||
CONDUWUIT_TRUSTED_SERVERS = ''["matrix.org"]'';
|
||||
CONDUWUIT_ADDRESS = "0.0.0.0";
|
||||
# CONDUIT_CONFIG = "";
|
||||
};
|
||||
volumes = [
|
||||
"/opt/conduit/db:/var/lib/conduwuit/"
|
||||
];
|
||||
networks = [ "conduit-net" ];
|
||||
};
|
||||
|
||||
systemd.services.create-conduit-net = {
|
||||
serviceConfig.Type = "oneshot";
|
||||
wantedBy = with config.virtualisation.oci-containers; [
|
||||
"${backend}-conduit.service"
|
||||
];
|
||||
script = ''
|
||||
${pkgs.podman}/bin/podman network exists conduit-net || \
|
||||
${pkgs.podman}/bin/podman network create conduit-net
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,13 +1,33 @@
|
|||
{ inputs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
services.conduwuit = {
|
||||
enable = true;
|
||||
package =
|
||||
inputs.conduwuit.packages.x86_64-linux.static-x86_64-linux-musl-all-features-x86_64-haswell-optimised;
|
||||
settings.global = {
|
||||
port = [ 8448 ];
|
||||
server_name = "cything.io";
|
||||
allow_check_for_updates = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."chat.cything.io".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8448
|
||||
'';
|
||||
|
||||
services.caddy.virtualHosts."cything.io" = {
|
||||
serverAliases = [ "www.cything.io" ];
|
||||
extraConfig = ''
|
||||
import common
|
||||
|
||||
header /.well-known/matrix/* Content-Type application/json
|
||||
header /.well-known/matrix/* Access-Control-Allow-Origin *
|
||||
header /.well-known/matrix/* Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS,PATCH,HEAD
|
||||
header /.well-known/matrix/* Access-Control-Allow-Headers X-Requested-With,Content-Type,Authorization,Origin,Accept
|
||||
route {
|
||||
respond /.well-known/matrix/server {"m.server":"chat.cything.io:443"}
|
||||
respond /.well-known/matrix/client {"m.server":{"base_url":"https://chat.cything.io"},"m.homeserver":{"base_url":"https://chat.cything.io"},"org.matrix.msc3575.proxy":{"url":"https://chat.cything.io"}}
|
||||
redir https://cy7.sh/posts{uri} permanent
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
@ -12,21 +11,18 @@
|
|||
./backup.nix
|
||||
./rclone.nix
|
||||
./postgres.nix
|
||||
./wireguard.nix
|
||||
./adguard.nix
|
||||
./hedgedoc.nix
|
||||
./miniflux.nix
|
||||
./redlib.nix
|
||||
./vaultwarden.nix
|
||||
./wireguard.nix
|
||||
./grafana.nix
|
||||
./conduwuit.nix
|
||||
./immich.nix
|
||||
./element.nix
|
||||
./attic.nix
|
||||
./forgejo.nix
|
||||
./garage.nix
|
||||
./tailscale.nix
|
||||
./tor.nix
|
||||
];
|
||||
|
||||
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
|
||||
|
@ -34,9 +30,6 @@
|
|||
"borg/rsyncnet" = {
|
||||
sopsFile = ../../secrets/borg/chunk.yaml;
|
||||
};
|
||||
"services/ntfy" = {
|
||||
sopsFile = ../../secrets/services/ntfy.yaml;
|
||||
};
|
||||
"rclone/config" = {
|
||||
sopsFile = ../../secrets/rclone.yaml;
|
||||
};
|
||||
|
@ -49,15 +42,6 @@
|
|||
"hedgedoc/env" = {
|
||||
sopsFile = ../../secrets/services/hedgedoc.yaml;
|
||||
};
|
||||
"wireguard/private" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"wireguard/psk-yt" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"wireguard/psk-phone" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"miniflux/env" = {
|
||||
sopsFile = ../../secrets/services/miniflux.yaml;
|
||||
};
|
||||
|
@ -73,61 +57,90 @@
|
|||
"tailscale/auth" = {
|
||||
sopsFile = ../../secrets/services/tailscale.yaml;
|
||||
};
|
||||
"zipline/env" = {
|
||||
sopsFile = ../../secrets/services/zipline.yaml;
|
||||
};
|
||||
"searx/env" = {
|
||||
sopsFile = ../../secrets/services/searx.yaml;
|
||||
};
|
||||
};
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
boot = {
|
||||
loader.grub.enable = true;
|
||||
loader.grub.device = "/dev/vda";
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
|
||||
# network stuff
|
||||
networking = {
|
||||
hostName = "chunk";
|
||||
networkmanager.enable = true;
|
||||
firewall = {
|
||||
enable = true;
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
allowedTCPPorts = [
|
||||
22
|
||||
80
|
||||
443
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
443
|
||||
];
|
||||
extraCommands =
|
||||
let
|
||||
ethtool = lib.getExe pkgs.ethtool;
|
||||
tc = lib.getExe' pkgs.iproute2 "tc";
|
||||
in
|
||||
''
|
||||
# disable TCP segmentation offload (https://wiki.archlinux.org/title/Advanced_traffic_control#Prerequisites)
|
||||
${ethtool} -K ens18 tso off
|
||||
|
||||
networking.hostName = "chunk";
|
||||
networking.networkmanager.enable = true;
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
22
|
||||
80
|
||||
443
|
||||
53
|
||||
853
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
443
|
||||
51820
|
||||
53
|
||||
853
|
||||
]; # 51820 is wireguard
|
||||
trustedInterfaces = [ "wg0" ];
|
||||
};
|
||||
networking.interfaces.ens18 = {
|
||||
ipv6.addresses = [
|
||||
{
|
||||
address = "2a0f:85c1:840:2bfb::1";
|
||||
prefixLength = 64;
|
||||
}
|
||||
];
|
||||
ipv4.addresses = [
|
||||
{
|
||||
address = "31.59.129.225";
|
||||
prefixLength = 24;
|
||||
}
|
||||
];
|
||||
};
|
||||
networking.defaultGateway6 = {
|
||||
address = "2a0f:85c1:840::1";
|
||||
interface = "ens18";
|
||||
};
|
||||
networking.defaultGateway = {
|
||||
address = "31.59.129.1";
|
||||
interface = "ens18";
|
||||
};
|
||||
# clear existing rules
|
||||
${tc} qdisc del dev ens18 root || true
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
useXkbConfig = true;
|
||||
# create HTB hierarchy
|
||||
${tc} qdisc add dev ens18 root handle 1: htb default 30
|
||||
${tc} class add dev ens18 parent 1: classid 1:1 htb rate 100% ceil 100%
|
||||
# tailscale
|
||||
${tc} class add dev ens18 parent 1:1 classid 1:10 htb rate 30% ceil 100%
|
||||
# caddy
|
||||
${tc} class add dev ens18 parent 1:1 classid 1:20 htb rate 30% ceil 100%
|
||||
# rest
|
||||
${tc} class add dev ens18 parent 1:1 classid 1:30 htb rate 40% ceil 100%
|
||||
|
||||
# mark traffic
|
||||
iptables -t mangle -A OUTPUT -m cgroup --path "system.slice/tailscaled.service" -j MARK --set-mark 1
|
||||
iptables -t mangle -A OUTPUT -m cgroup --path "system.slice/caddy.service" -j MARK --set-mark 2
|
||||
|
||||
# route marked packets
|
||||
${tc} filter add dev ens18 parent 1: protocol ip prio 1 handle 1 fw flowid 1:10
|
||||
${tc} filter add dev ens18 parent 1: protocol ip prio 1 handle 2 fw flowid 1:20
|
||||
'';
|
||||
};
|
||||
interfaces.ens18 = {
|
||||
ipv6.addresses = [
|
||||
{
|
||||
address = "2a0f:85c1:840:2bfb::1";
|
||||
prefixLength = 64;
|
||||
}
|
||||
];
|
||||
ipv4.addresses = [
|
||||
{
|
||||
address = "31.59.129.225";
|
||||
prefixLength = 24;
|
||||
}
|
||||
];
|
||||
};
|
||||
defaultGateway6 = {
|
||||
address = "2a0f:85c1:840::1";
|
||||
interface = "ens18";
|
||||
};
|
||||
defaultGateway = {
|
||||
address = "31.59.129.1";
|
||||
interface = "ens18";
|
||||
};
|
||||
};
|
||||
|
||||
users.users.yt = {
|
||||
|
@ -161,7 +174,6 @@
|
|||
tmux
|
||||
file
|
||||
sops
|
||||
attic-server
|
||||
];
|
||||
|
||||
environment.variables = {
|
||||
|
@ -180,25 +192,12 @@
|
|||
programs.gnupg.agent.enable = true;
|
||||
programs.git.enable = true;
|
||||
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
configFile = ./Caddyfile;
|
||||
environmentFile = config.sops.secrets."caddy/env".path;
|
||||
logFormat = lib.mkForce "level INFO";
|
||||
};
|
||||
my.caddy.enable = true;
|
||||
|
||||
# container stuff
|
||||
virtualisation.containers.enable = true;
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
# create 'docker' alias for podman, to use as
|
||||
# drop-in replacement
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings = {
|
||||
dns_enabled = true;
|
||||
ipv6_enabled = true;
|
||||
};
|
||||
};
|
||||
virtualisation.oci-containers.backend = "podman";
|
||||
environment.enableAllTerminfo = true;
|
||||
my.containerization.enable = true;
|
||||
|
||||
my.roundcube.enable = true;
|
||||
my.zipline.enable = true;
|
||||
my.searx.enable = true;
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.deluge = {
|
||||
enable = true;
|
||||
web = {
|
||||
enable = true;
|
||||
port = 8112;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -25,4 +25,9 @@
|
|||
${pkgs.podman}/bin/podman network create element-net
|
||||
'';
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."element.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8089
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
package = pkgs.forgejo; # uses forgejo-lts by default
|
||||
user = "git";
|
||||
group = "git";
|
||||
settings = {
|
||||
|
@ -16,7 +17,7 @@
|
|||
service.DISABLE_REGISTRATION = true;
|
||||
ui = {
|
||||
AMBIGUOUS_UNICODE_DETECTION = false;
|
||||
DEFAULT_THEME = "gitea-dark";
|
||||
DEFAULT_THEME = "forgejo-dark";
|
||||
};
|
||||
actions.ENABLED = false;
|
||||
repository.ENABLE_PUSH_CREATE_USER = true;
|
||||
|
@ -29,4 +30,24 @@
|
|||
name = "git";
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."git.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
|
||||
# renamed repo
|
||||
uri replace /cy/infra /cy/nixos-config
|
||||
|
||||
reverse_proxy localhost:3000
|
||||
'';
|
||||
services.caddy.virtualHosts."git.cything.io".extraConfig = ''
|
||||
import common
|
||||
|
||||
# wrap in route so things are evaluated in the order written
|
||||
route {
|
||||
# rewrite gitlab URIs to make it work with forgejo
|
||||
uri path_regexp /-/ /
|
||||
uri replace /blob/ /src/
|
||||
redir https://git.cy7.sh{uri} permanent
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -6,8 +6,14 @@
|
|||
settings = {
|
||||
data_dir = "/mnt/garage";
|
||||
s3_api = {
|
||||
s3_region = "earth";
|
||||
s3_region = "us-east-1";
|
||||
api_bind_addr = "[::]:3900";
|
||||
root_domain = "s3.cy7.sh";
|
||||
};
|
||||
s3_web = {
|
||||
bind_addr = "[::]:3902";
|
||||
root_domain = ".web.s3.cy7.sh";
|
||||
index = "index.html";
|
||||
};
|
||||
admin.api_bind_addr = "[::]:3903";
|
||||
rpc_bind_addr = "[::]:3901";
|
||||
|
@ -16,4 +22,22 @@
|
|||
};
|
||||
environmentFile = config.sops.secrets."garage/env".path;
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts = {
|
||||
"s3.cy7.sh" = {
|
||||
serverAliases = [ "*.s3.cy7.sh" ];
|
||||
extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:3900
|
||||
'';
|
||||
};
|
||||
"*.web.s3.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:3902
|
||||
'';
|
||||
"admin.s3.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:3903
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
services.gitlab = {
|
||||
enable = true;
|
||||
https = true;
|
||||
host = "git.cything.io";
|
||||
user = "git"; # so that you can ssh with git@git.cything.io
|
||||
group = "git";
|
||||
port = 443; # this *not* the port gitlab will run on
|
||||
puma.workers = 0; # https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html#optimize-puma
|
||||
sidekiq.concurrency = 5;
|
||||
databaseUsername = "git"; # needs to be same as user
|
||||
initialRootEmail = "hi@cything.io";
|
||||
initialRootPasswordFile = config.sops.secrets."gitlab/root".path;
|
||||
secrets = {
|
||||
secretFile = config.sops.secrets."gitlab/secret".path;
|
||||
otpFile = config.sops.secrets."gitlab/otp".path;
|
||||
jwsFile = config.sops.secrets."gitlab/jws".path;
|
||||
dbFile = config.sops.secrets."gitlab/db".path;
|
||||
};
|
||||
backup = {
|
||||
startAt = "daily";
|
||||
# we already postgresqlbackup.service
|
||||
skip = [ "db" ];
|
||||
keepTime = 48; # hours
|
||||
};
|
||||
extraConfig = {
|
||||
gitlab = {
|
||||
# NOTE: default_syntax_highlighting_theme needs to be set in the application_settings table in the database
|
||||
default_color_mode = 2;
|
||||
};
|
||||
prometheus.enabled = false;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
http_port = 8088;
|
||||
enforce_domain = true;
|
||||
enable_gzip = true;
|
||||
domain = "grafana.cything.io";
|
||||
domain = "grafana.cy7.sh";
|
||||
};
|
||||
settings.analytics.reporting_enabled = false;
|
||||
};
|
||||
|
@ -31,4 +31,9 @@
|
|||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."grafana.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8088
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -16,4 +16,9 @@
|
|||
protocolUseSSL = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."pad.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8085
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
@ -67,21 +68,9 @@ in
|
|||
];
|
||||
networks = [ "immich-net" ];
|
||||
};
|
||||
|
||||
# immich-ml = {
|
||||
# image = "ghcr.io/immich-app/immich-machine-learning:release";
|
||||
# autoStart = true;
|
||||
# pull = "newer";
|
||||
# environment = {
|
||||
# REDIS_HOSTNAME = "immich-redis";
|
||||
# DB_HOSTNAME = "immich-db";
|
||||
# };
|
||||
# volumes = [ "${modelCache}:/cache" ];
|
||||
# networks = [ "immich-net" ];
|
||||
# };
|
||||
};
|
||||
|
||||
systemd.services.create-immich-net = {
|
||||
systemd.services.create-immich-net = rec {
|
||||
serviceConfig.Type = "oneshot";
|
||||
requiredBy = with config.virtualisation.oci-containers; [
|
||||
"${backend}-immich.service"
|
||||
|
@ -89,10 +78,15 @@ in
|
|||
"${backend}-immich-redis.service"
|
||||
# "${backend}-immich-ml.service"
|
||||
];
|
||||
before = config.systemd.services.create-immich-net.requiredBy;
|
||||
before = requiredBy;
|
||||
script = ''
|
||||
${pkgs.podman}/bin/podman network exists immich-net || \
|
||||
${pkgs.podman}/bin/podman network create immich-net
|
||||
${lib.getExe pkgs.podman} network exists immich-net || \
|
||||
${lib.getExe pkgs.podman} network create immich-net
|
||||
'';
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."photos.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:2283
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.jellyfin = {
|
||||
enable = true;
|
||||
dataDir = "/mnt/jellyfin";
|
||||
configDir = "/var/lib/jellyfin/config";
|
||||
};
|
||||
}
|
|
@ -9,4 +9,9 @@
|
|||
FORCE_REFRESH_INTERVAL = 0; # don't rate limit me
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."rss.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8080
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
ExecStartPre = "/usr/bin/env mkdir -p /mnt/attic";
|
||||
ExecStart = "${lib.getExe pkgs.rclone} mount --config ${
|
||||
config.sops.secrets."rclone/config".path
|
||||
} --cache-dir /var/cache/rclone --transfers=32 --checkers=32 --vfs-cache-mode writes --vfs-cache-max-size 15G --allow-other rsyncnet:attic /mnt/attic ";
|
||||
} --cache-dir /var/cache/rclone --transfers=32 --checkers=32 --vfs-cache-mode writes --vfs-cache-max-size 2G --allow-other rsyncnet:attic /mnt/attic ";
|
||||
ExecStop = "${lib.getExe' pkgs.fuse "fusermount"} -u /mnt/attic";
|
||||
};
|
||||
};
|
||||
|
@ -55,6 +55,4 @@
|
|||
ExecStop = "${lib.getExe' pkgs.fuse "fusermount"} -u /mnt/garage";
|
||||
};
|
||||
};
|
||||
|
||||
programs.fuse.userAllowOther = true;
|
||||
}
|
||||
|
|
|
@ -10,4 +10,9 @@
|
|||
REDLIB_ROBOTS_DISABLE_INDEXING = "on";
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."red.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8087
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
{ config, ... }: {
|
||||
{ config, ... }:
|
||||
{
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
authKeyFile = config.sops.secrets."tailscale/auth".path;
|
||||
extraUpFlags = [ "--advertise-exit-node" ];
|
||||
extraUpFlags = [
|
||||
"--advertise-exit-node"
|
||||
"--accept-dns=false"
|
||||
];
|
||||
extraDaemonFlags = [
|
||||
"--no-logs-no-support"
|
||||
];
|
||||
useRoutingFeatures = "server";
|
||||
openFirewall = true;
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
settings = {
|
||||
ORPort = 9001;
|
||||
Nickname = "chunk";
|
||||
MaxAdvertisedBandwidth = "20MBytes";
|
||||
# MaxAdvertisedBandwidth = "20MBytes";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
{ config, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
dbBackend = "postgresql";
|
||||
environmentFile = config.sops.secrets."vaultwarden/env".path;
|
||||
config = {
|
||||
ROCKET_ADDRESS = "127.0.0.1";
|
||||
ROCKET_PORT = "8081";
|
||||
DATABASE_URL = "postgresql://vaultwarden:vaultwarden@127.0.0.1:5432/vaultwarden";
|
||||
};
|
||||
};
|
||||
my.vaultwarden.enable = true;
|
||||
|
||||
services.caddy.virtualHosts."pass.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy localhost:8081
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -9,6 +9,18 @@
|
|||
"root"
|
||||
"@wheel"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||
"cything.cachix.org-1:xqW1W5NNL+wrM9wfSELb0MLj/harD2ZyB4HbdaMyvPI="
|
||||
];
|
||||
substituters = [
|
||||
"https://niri.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.garnix.io"
|
||||
"https://cything.cachix.org"
|
||||
];
|
||||
};
|
||||
channel.enable = false;
|
||||
optimise = {
|
||||
|
@ -22,25 +34,51 @@
|
|||
options = "--delete-older-than 14d";
|
||||
};
|
||||
extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
};
|
||||
time.timeZone = "America/Toronto";
|
||||
networking.firewall.logRefusedConnections = false;
|
||||
networking.nameservers = [
|
||||
# quad9
|
||||
"2620:fe::fe"
|
||||
"2620:fe::9"
|
||||
"9.9.9.9"
|
||||
"149.112.112.112"
|
||||
];
|
||||
|
||||
# this is true by default and mutually exclusive with
|
||||
# programs.nix-index
|
||||
programs.command-not-found.enable = false;
|
||||
programs.nix-index.enable = false; # set above to false to use this
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
time.timeZone = "America/New_York";
|
||||
networking = {
|
||||
firewall.logRefusedConnections = false;
|
||||
nameservers = [
|
||||
# quad9 (unfiltered)
|
||||
"2620:fe::10"
|
||||
"2620:fe::fe:10"
|
||||
"9.9.9.10"
|
||||
"149.112.112.110"
|
||||
];
|
||||
timeServers = [
|
||||
# https://github.com/jauderho/nts-servers
|
||||
"ntp3.fau.de"
|
||||
"ntppool1.time.nl"
|
||||
"ntpmon.dcs1.biz"
|
||||
"stratum1.time.cifelli.xyz"
|
||||
"nts.teambelgium.net"
|
||||
"c.st1.ntp.br"
|
||||
];
|
||||
};
|
||||
services.chrony = {
|
||||
enable = true;
|
||||
enableNTS = true;
|
||||
enableMemoryLocking = true;
|
||||
extraConfig = ''
|
||||
# Expedited Forwarding
|
||||
dscp 46
|
||||
# disable command port
|
||||
cmdport 0
|
||||
# only allow NTS
|
||||
authselectmode require
|
||||
# update the clock only when at least 3 sources agree on the correct time
|
||||
minsources 3
|
||||
'';
|
||||
};
|
||||
|
||||
# see journald.conf(5)
|
||||
services.journald.extraConfig = "MaxRetentionSec=2d";
|
||||
|
||||
services.thermald.enable = true;
|
||||
environment.enableAllTerminfo = true;
|
||||
}
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
modulesPath,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
../common.nix
|
||||
# ./hardware-configuration.nix
|
||||
../zsh.nix
|
||||
];
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings.PasswordAuthentication = false;
|
||||
};
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge yt@ytlinux"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINyn2+OoRN4nExti+vFQ1NHEZip0slAoCH9C5/FzvgZD yt@ytnix"
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
curl
|
||||
git
|
||||
];
|
||||
|
||||
# network stuff
|
||||
networking.hostName = "pancake";
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
22
|
||||
80
|
||||
443
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
443
|
||||
];
|
||||
};
|
||||
|
||||
networking.wireless.enable = true;
|
||||
networking.wireless.networks = {
|
||||
"36 Halsey" = {
|
||||
psk = "Canada2022";
|
||||
};
|
||||
"cy" = {
|
||||
psk = "12345678";
|
||||
};
|
||||
};
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
users.users.yt.extraGroups = [
|
||||
"wheel"
|
||||
];
|
||||
security.sudo.enable = true;
|
||||
security.sudo.wheelNeedsPassword = false;
|
||||
users.users.root.initialHashedPassword = "";
|
||||
users.users.yt.initialHashedPassword = "";
|
||||
|
||||
# remove this after https://github.com/NixOS/nixpkgs/pull/375165 lands on unstable
|
||||
# boot.kernelPackages = lib.mkForce inputs.nixpkgs-rpi.legacyPackages.aarch64-linux.linuxKernel.packages.linux_rpi3;
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/cb6f0e18-5add-4177-ab98-e9f0235e06b3";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot/firmware" =
|
||||
{ device = "/dev/disk/by-uuid/D3E6-3F09";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
{
|
||||
acme_ca https://acme.zerossl.com/v2/DV90
|
||||
acme_eab {
|
||||
key_id {$EAB_KEY_ID}
|
||||
mac_key {$EAB_MAC_KEY}
|
||||
}
|
||||
}
|
||||
|
||||
(common) {
|
||||
encode zstd gzip
|
||||
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
|
||||
}
|
||||
|
||||
cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8084
|
||||
|
||||
header /.well-known/matrix/* Content-Type application/json
|
||||
header /.well-known/matrix/* Access-Control-Allow-Origin *
|
||||
header /.well-known/matrix/* Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS,PATCH,HEAD
|
||||
header /.well-known/matrix/* Access-Control-Allow-Headers X-Requested-With,Content-Type,Authorization,Origin,Accept
|
||||
respond /.well-known/matrix/server {"m.server":"chat.cything.io:443"}
|
||||
respond /.well-known/matrix/client {"m.server":{"base_url":"https://chat.cything.io"},"m.homeserver":{"base_url":"https://chat.cything.io"},"org.matrix.msc3575.proxy":{"url":"https://chat.cything.io"}}
|
||||
}
|
||||
|
||||
www.cything.io {
|
||||
import common
|
||||
redir https://cything.io{uri} permanent
|
||||
}
|
||||
|
||||
ntfy.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:8083
|
||||
}
|
||||
|
||||
status.cything.io {
|
||||
import common
|
||||
reverse_proxy localhost:3001
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
my.backup = {
|
||||
enable = true;
|
||||
jobName = "titanRsync";
|
||||
repo = "titan";
|
||||
passFile = config.sops.secrets."borg/rsyncnet".path;
|
||||
sshKeyFile = config.sops.secrets."rsyncnet/id_ed25519".path;
|
||||
};
|
||||
}
|
|
@ -1,98 +0,0 @@
|
|||
{
|
||||
modulesPath,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
../common.nix
|
||||
./disk-config.nix
|
||||
./hardware-configuration.nix
|
||||
./ghost.nix
|
||||
./ntfy.nix
|
||||
./uptime-kuma.nix
|
||||
./backup.nix
|
||||
];
|
||||
|
||||
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
|
||||
sops.secrets = {
|
||||
"caddy/env" = {
|
||||
sopsFile = ../../secrets/services/caddy.yaml;
|
||||
};
|
||||
"services/ntfy" = {
|
||||
sopsFile = ../../secrets/services/ntfy.yaml;
|
||||
};
|
||||
"borg/rsyncnet" = {
|
||||
sopsFile = ../../secrets/borg/titan.yaml;
|
||||
};
|
||||
"rsyncnet/id_ed25519" = {
|
||||
sopsFile = ../../secrets/zh5061/titan.yaml;
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
tmp.cleanOnBoot = true;
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings.PasswordAuthentication = false;
|
||||
};
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge yt@ytlinux"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINyn2+OoRN4nExti+vFQ1NHEZip0slAoCH9C5/FzvgZD yt@ytnix"
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
curl
|
||||
git
|
||||
];
|
||||
|
||||
# network stuff
|
||||
networking.hostName = "titan";
|
||||
networking.networkmanager.enable = true;
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
22
|
||||
80
|
||||
443
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
443
|
||||
];
|
||||
};
|
||||
|
||||
# container stuff
|
||||
virtualisation.containers.enable = true;
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
# create 'docker' alias for podman, to use as
|
||||
# drop-in replacement
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings = {
|
||||
dns_enabled = true;
|
||||
ipv6_enabled = true;
|
||||
};
|
||||
};
|
||||
virtualisation.oci-containers.backend = "podman";
|
||||
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
configFile = ./Caddyfile;
|
||||
environmentFile = config.sops.secrets."caddy/env".path;
|
||||
logFormat = lib.mkForce "level INFO";
|
||||
};
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = "/dev/sda";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
type = "EF00";
|
||||
size = "500M";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
virtualisation.oci-containers.containers.ghost = {
|
||||
image = "ghost:5-alpine";
|
||||
autoStart = true;
|
||||
ports = [ "127.0.0.1:8084:2368" ];
|
||||
pull = "newer";
|
||||
environment = {
|
||||
database__client = "mysql";
|
||||
database__connection__host = "ghost-db";
|
||||
database__connection__user = "root";
|
||||
database__connection__password = "example";
|
||||
database__connection__database = "ghost";
|
||||
url = "https://cything.io";
|
||||
NODE_ENV = "production";
|
||||
};
|
||||
volumes = [
|
||||
"/opt/ghost/data:/var/lib/ghost/content"
|
||||
];
|
||||
networks = [ "ghost-net" ];
|
||||
dependsOn = [ "ghost-db" ];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.ghost-db = {
|
||||
image = "mysql:8.0";
|
||||
autoStart = true;
|
||||
pull = "newer";
|
||||
environment = {
|
||||
MYSQL_ROOT_PASSWORD = "example";
|
||||
};
|
||||
volumes = [
|
||||
"/opt/ghost/db:/var/lib/mysql"
|
||||
];
|
||||
networks = [ "ghost-net" ];
|
||||
};
|
||||
|
||||
systemd.services.create-ghost-net = {
|
||||
serviceConfig.Type = "oneshot";
|
||||
wantedBy = with config.virtualisation.oci-containers; [
|
||||
"${backend}-ghost.service"
|
||||
"${backend}-ghost-db.service"
|
||||
];
|
||||
script = ''
|
||||
${pkgs.podman}/bin/podman network exists ghost-net || \
|
||||
${pkgs.podman}/bin/podman network create ghost-net
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
virtualisation.hypervGuest.enable = true;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.ntfy-sh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
listen-http = "127.0.0.1:8083";
|
||||
base-url = "https://ntfy.cything.io";
|
||||
upstream-base-url = "https://ntfy.sh";
|
||||
auth-default-access = "deny-all";
|
||||
behind-proxy = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
# data stored at /var/lib/uptime-kuma/ but does not expose
|
||||
# an option to change it
|
||||
services.uptime-kuma = {
|
||||
enable = true;
|
||||
settings.PORT = "3001";
|
||||
};
|
||||
}
|
36
hosts/ytnix/containers.nix
Normal file
36
hosts/ytnix/containers.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
virtualisation.oci-containers.containers = {
|
||||
immich-ml = let
|
||||
modelCache = "/opt/immich-ml";
|
||||
in {
|
||||
image = "ghcr.io/immich-app/immich-machine-learning:release";
|
||||
autoStart = true;
|
||||
pull = "newer";
|
||||
ports = [ "3003:3003" ];
|
||||
environment = {
|
||||
REDIS_HOSTNAME = "immich-redis";
|
||||
DB_HOSTNAME = "immich-db";
|
||||
};
|
||||
volumes = [ "${modelCache}:/cache" ];
|
||||
networks = [ "immich-net" ];
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.create-immich-net = rec {
|
||||
serviceConfig.Type = "oneshot";
|
||||
requiredBy = with config.virtualisation.oci-containers; [
|
||||
"${backend}-immich-ml.service"
|
||||
];
|
||||
before = requiredBy;
|
||||
script = ''
|
||||
${lib.getExe pkgs.podman} network exists immich-net || \
|
||||
${lib.getExe pkgs.podman} network create immich-net
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -10,6 +10,7 @@
|
|||
../common.nix
|
||||
../zsh.nix
|
||||
./tailscale.nix
|
||||
./containers.nix
|
||||
];
|
||||
|
||||
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
|
||||
|
@ -17,32 +18,30 @@
|
|||
"borg/rsyncnet" = {
|
||||
sopsFile = ../../secrets/borg/yt.yaml;
|
||||
};
|
||||
"services/ntfy" = {
|
||||
sopsFile = ../../secrets/services/ntfy.yaml;
|
||||
};
|
||||
"wireguard/private" = {
|
||||
sopsFile = ../../secrets/wireguard/yt.yaml;
|
||||
};
|
||||
"wireguard/psk" = {
|
||||
sopsFile = ../../secrets/wireguard/yt.yaml;
|
||||
};
|
||||
"rsyncnet/id_ed25519" = {
|
||||
sopsFile = ../../secrets/zh5061/yt.yaml;
|
||||
};
|
||||
"newsboat/miniflux" = {
|
||||
sopsFile = ../../secrets/newsboat.yaml;
|
||||
owner = "yt";
|
||||
};
|
||||
"tailscale/auth" = {
|
||||
sopsFile = ../../secrets/services/tailscale.yaml;
|
||||
};
|
||||
"aws/key_id" = {
|
||||
sopsFile = ../../secrets/yt/aws.yaml;
|
||||
owner = "yt";
|
||||
};
|
||||
"aws/key_secret" = {
|
||||
sopsFile = ../../secrets/yt/aws.yaml;
|
||||
owner = "yt";
|
||||
};
|
||||
"vaultwarden/env" = {
|
||||
sopsFile = ../../secrets/services/vaultwarden.yaml;
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
loader = {
|
||||
# lanzaboote replaces systemd-boot
|
||||
systemd-boot.enable = lib.mkForce false;
|
||||
efi.canTouchEfiVariables = false; # toggle when installing
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
tmp.cleanOnBoot = true;
|
||||
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
|
||||
|
@ -80,12 +79,20 @@
|
|||
networkmanager = {
|
||||
enable = true;
|
||||
dns = "none";
|
||||
wifi.backend = "iwd";
|
||||
wifi = {
|
||||
backend = "iwd";
|
||||
powersave = false;
|
||||
};
|
||||
};
|
||||
resolvconf.enable = true;
|
||||
firewall = {
|
||||
allowedUDPPorts = [ 51820 ]; # for wireguard
|
||||
trustedInterfaces = [ "wg0" ];
|
||||
enable = true;
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
# allowedTCPPorts = [
|
||||
# 8080 # mitmproxy
|
||||
# 22000 # syncthing
|
||||
# 3003 # immich-ml
|
||||
# ];
|
||||
};
|
||||
};
|
||||
programs.nm-applet.enable = true;
|
||||
|
@ -97,9 +104,7 @@
|
|||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
wireplumber.extraConfig.bluetoothEnhancements = {
|
||||
"wireplumber.settings" = {
|
||||
"bluetooth.autoswitch-to-headset-profile" = false;
|
||||
};
|
||||
# https://julian.pages.freedesktop.org/wireplumber/daemon/configuration/bluetooth.html#bluetooth-configuration
|
||||
"monitor.bluez.properties" = {
|
||||
"bluez5.enable-sbc-xq" = true;
|
||||
"bluez5.enable-msbc" = true;
|
||||
|
@ -107,6 +112,10 @@
|
|||
"bluez5.roles" = [
|
||||
"a2dp_sink"
|
||||
"a2dp_source"
|
||||
"hsp_hs"
|
||||
"hsp_ag"
|
||||
"hfp_hf"
|
||||
"hfp_ag"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -134,38 +143,49 @@
|
|||
"libvirtd"
|
||||
"docker"
|
||||
"disk"
|
||||
"adbusers"
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
environment.systemPackages = with pkgs; lib.flatten [
|
||||
tmux
|
||||
vim
|
||||
wget
|
||||
neovim
|
||||
git
|
||||
python3
|
||||
wl-clipboard
|
||||
mako
|
||||
tree
|
||||
kitty
|
||||
borgbackup
|
||||
brightnessctl
|
||||
alsa-utils
|
||||
nixd
|
||||
bluetuith
|
||||
libimobiledevice
|
||||
pass-wayland
|
||||
htop
|
||||
file
|
||||
dnsutils
|
||||
q
|
||||
age
|
||||
compsize
|
||||
wireguard-tools
|
||||
traceroute
|
||||
sops
|
||||
restic
|
||||
haskell-language-server
|
||||
ghc
|
||||
sbctl # secure boot
|
||||
lm_sensors
|
||||
sshfs
|
||||
openssl
|
||||
just
|
||||
killall
|
||||
lshw
|
||||
bubblewrap
|
||||
fuse-overlayfs
|
||||
dwarfs
|
||||
wineWowPackages.stagingFull
|
||||
(with gst_all_1; [
|
||||
gst-plugins-good
|
||||
gst-plugins-bad
|
||||
gst-plugins-ugly
|
||||
gst-plugins-base
|
||||
])
|
||||
vulkan-loader
|
||||
(heroic.override {
|
||||
extraPkgs = pkgs: [
|
||||
pkgs.gamescope
|
||||
pkgs.gamemode
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
|
@ -179,20 +199,27 @@
|
|||
services.displayManager = {
|
||||
enable = true;
|
||||
autoLogin.user = "yt";
|
||||
defaultSession = "plasma";
|
||||
sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
autoNumlock = true;
|
||||
};
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.roboto-mono
|
||||
ibm-plex
|
||||
];
|
||||
fonts.enableDefaultPackages = true;
|
||||
fonts = {
|
||||
packages = with pkgs; [
|
||||
nerd-fonts.roboto-mono
|
||||
ibm-plex
|
||||
];
|
||||
enableDefaultPackages = true;
|
||||
};
|
||||
|
||||
hardware.enableAllFirmware = true;
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
|
||||
my.backup = {
|
||||
enable = true;
|
||||
|
@ -204,82 +231,118 @@
|
|||
"/home/yt/.local/share/Steam"
|
||||
"**/.wine"
|
||||
"/home/yt/Games"
|
||||
"/home/yt/Videos"
|
||||
"/home/yt/.bitmonero"
|
||||
];
|
||||
repo = "yt";
|
||||
passFile = config.sops.secrets."borg/rsyncnet".path;
|
||||
sshKeyFile = config.sops.secrets."rsyncnet/id_ed25519".path;
|
||||
};
|
||||
|
||||
services.btrbk.instances.local = {
|
||||
onCalendar = "hourly";
|
||||
# only create snapshots automatically. backups are triggered manually with `btrbk resume`
|
||||
snapshotOnly = true;
|
||||
settings = {
|
||||
snapshot_preserve_min = "latest";
|
||||
target_preserve = "*d";
|
||||
target_preserve_min = "no";
|
||||
target = "/mnt/external/btr_backup/ytnix";
|
||||
stream_compress = "zstd";
|
||||
stream_compress_level = "8";
|
||||
snapshot_dir = "/snapshots";
|
||||
subvolume = {
|
||||
"/home" = { };
|
||||
"/" = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
extest.enable = true;
|
||||
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
||||
};
|
||||
hardware.steam-hardware.enable = true;
|
||||
programs.gamescope.enable = true;
|
||||
|
||||
services.logind = {
|
||||
lidSwitch = "hibernate";
|
||||
powerKey = "hibernate";
|
||||
lidSwitch = "suspend";
|
||||
powerKey = "poweroff";
|
||||
suspendKey = "hibernate";
|
||||
};
|
||||
|
||||
xdg.mime.defaultApplications = {
|
||||
"application/pdf" = "okular.desktop";
|
||||
"image/*" = "gwenview.desktop";
|
||||
"*/html" = "chromium-browser.desktop";
|
||||
};
|
||||
|
||||
programs.thunar = {
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
};
|
||||
# preference changes don't work in thunar without this
|
||||
programs.xfconf.enable = true;
|
||||
# mount, trash and stuff in thunar
|
||||
services.gvfs.enable = true;
|
||||
# thumbnails in thunar
|
||||
services.tumbler.enable = true;
|
||||
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
docker.enable = true;
|
||||
qemu.vhostUserPackages = with pkgs; [ virtiofsd ];
|
||||
};
|
||||
programs.virt-manager.enable = true;
|
||||
my.containerization.enable = true;
|
||||
|
||||
services.usbmuxd.enable = true;
|
||||
programs.nix-ld.enable = true;
|
||||
programs.nix-ld.dev = {
|
||||
enable = true;
|
||||
# nix run github:thiagokokada/nix-alien#nix-alien-find-libs ./<binary>
|
||||
libraries = with pkgs; [
|
||||
# TODO: revisit what we actually need
|
||||
mesa
|
||||
extest
|
||||
stdenv.cc.cc
|
||||
libGL
|
||||
fontconfig
|
||||
libxkbcommon
|
||||
zlib
|
||||
libz
|
||||
libxml2
|
||||
dbus
|
||||
freetype
|
||||
egl-wayland
|
||||
waylandpp
|
||||
cairo
|
||||
xcb-util-cursor
|
||||
libplist
|
||||
p11-kit
|
||||
kdePackages.qtwayland
|
||||
qt6.full
|
||||
qt6.qtwayland
|
||||
qt5.full
|
||||
qt5.qtwayland
|
||||
xorg.libX11
|
||||
xorg.libxcb
|
||||
xorg.xcbutilwm
|
||||
xorg.xcbutilimage
|
||||
xorg.xcbutilkeysyms
|
||||
xorg.xcbutilrenderutil
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXcomposite
|
||||
xorg.libXcursor
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXtst
|
||||
xorg.libxkbfile
|
||||
xorg.libxshmfence
|
||||
xorg.libXxf86vm
|
||||
xorg.libSM
|
||||
gtk3
|
||||
pango
|
||||
gdk-pixbuf
|
||||
glib
|
||||
libnotify
|
||||
SDL2
|
||||
libpng
|
||||
libjpeg8
|
||||
libtiff
|
||||
curl
|
||||
pcre2
|
||||
gsettings-desktop-schemas
|
||||
];
|
||||
};
|
||||
programs.evolution.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
wlr.enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gnome
|
||||
];
|
||||
};
|
||||
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-pipewire-audio-capture
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -291,37 +354,34 @@
|
|||
];
|
||||
};
|
||||
|
||||
services.ollama.enable = true;
|
||||
|
||||
# wireguard setup
|
||||
networking.wg-quick.interfaces.wg0 = {
|
||||
autostart = false;
|
||||
address = [
|
||||
"10.0.0.2/24"
|
||||
"fdc9:281f:04d7:9ee9::2/64"
|
||||
];
|
||||
privateKeyFile = config.sops.secrets."wireguard/private".path;
|
||||
peers = [
|
||||
{
|
||||
publicKey = "a16/F/wP7HQIUtFywebqPSXQAktPsLgsMLH9ZfevMy0=";
|
||||
allowedIPs = [
|
||||
"0.0.0.0/0"
|
||||
"::/0"
|
||||
];
|
||||
endpoint = "31.59.129.225:51820";
|
||||
persistentKeepalive = 25;
|
||||
presharedKeyFile = config.sops.secrets."wireguard/psk".path;
|
||||
}
|
||||
];
|
||||
};
|
||||
services.ollama.enable = false;
|
||||
|
||||
services.trezord.enable = true;
|
||||
|
||||
programs.niri.enable = true;
|
||||
programs.niri.enable = false;
|
||||
programs.niri.package = pkgs.niri-unstable;
|
||||
programs.xwayland.enable = true;
|
||||
|
||||
services.udev.extraHwdb = ''
|
||||
SUBSYSTEM=="usb", SYSFS{idVendor}=="090c", SYSFS{idProduct}=="1000", ACTION=="add", GROUP="users", MODE="0664"
|
||||
'';
|
||||
|
||||
services.desktopManager.plasma6 = {
|
||||
enable = true;
|
||||
enableQt5Integration = true;
|
||||
};
|
||||
|
||||
programs.appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
|
||||
programs.adb.enable = true;
|
||||
services.envfs.enable = true;
|
||||
programs.kdeconnect.enable = true;
|
||||
programs.dconf.enable = true;
|
||||
|
||||
programs.ccache.enable = true;
|
||||
nix.settings.extra-sandbox-paths = [ config.programs.ccache.cacheDir ];
|
||||
programs.fuse.userAllowOther = true;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
{ config, ... }: {
|
||||
{ config, ... }:
|
||||
{
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
authKeyFile = config.sops.secrets."tailscale/auth".path;
|
||||
openFirewall = true;
|
||||
useRoutingFeatures = "client";
|
||||
extraUpFlags = [
|
||||
"--exit-node=100.122.132.30"
|
||||
"--exit-node=chunk"
|
||||
"--accept-dns=false"
|
||||
"--operator=yt"
|
||||
"--exit-node-allow-lan-access"
|
||||
];
|
||||
extraDaemonFlags = [
|
||||
"--no-logs-no-support"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
12
justfile
12
justfile
|
@ -1,14 +1,22 @@
|
|||
update:
|
||||
git branch -D update || true
|
||||
git switch -c update
|
||||
git push
|
||||
nix flake update
|
||||
git add flake.lock
|
||||
git commit -s -m "flake update"
|
||||
git push -f
|
||||
git switch main
|
||||
|
||||
upgrade:
|
||||
git switch update
|
||||
sudo nixos-rebuild switch -L --flake . --use-substitutes
|
||||
nixos-rebuild switch -L --flake .#chunk --target-host root@2a0f:85c1:840:2bfb::1 --use-substitutes
|
||||
nixos-rebuild switch -L --flake .#titan --target-host root@www.cything.io --use-substitutes
|
||||
home-manager -L switch --flake .
|
||||
git switch main
|
||||
git merge update
|
||||
git branch -d update
|
||||
|
||||
switch:
|
||||
sudo nixos-rebuild switch -L --flake . --use-substitutes
|
||||
nixos-rebuild switch -L --flake .#chunk --target-host root@2a0f:85c1:840:2bfb::1 --use-substitutes
|
||||
home-manager -L switch --flake .
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
}:
|
||||
let
|
||||
cfg = config.my.backup;
|
||||
hostname = config.networking.hostName;
|
||||
defaultPaths = [
|
||||
"/root"
|
||||
"/home"
|
||||
|
@ -97,23 +96,6 @@ in
|
|||
];
|
||||
# warnings are often not that serious
|
||||
failOnWarnings = false;
|
||||
postHook = ''
|
||||
invocationId=$(systemctl show -p InvocationID --value borgbackup-job-${cfg.jobName}.service)
|
||||
title="${hostname}: backup completed with exit code: $exitStatus"
|
||||
msg=$(journalctl -o cat _SYSTEMD_INVOCATION_ID=$invocationId)
|
||||
|
||||
if [ "$exitStatus" -eq 0 ]; then
|
||||
tag="v"
|
||||
else
|
||||
tag="rotating_light"
|
||||
fi
|
||||
|
||||
${pkgs.curl}/bin/curl -sL -u $(cat ${config.sops.secrets."services/ntfy".path}) \
|
||||
-H "Title: $title" \
|
||||
-H "Tags: $tag" \
|
||||
-d "$msg" \
|
||||
https://ntfy.cything.io/backups > /dev/null
|
||||
'';
|
||||
|
||||
prune.keep = {
|
||||
within = "2d";
|
||||
|
|
41
modules/caddy.nix
Normal file
41
modules/caddy.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.caddy;
|
||||
in
|
||||
{
|
||||
options.my.caddy = {
|
||||
enable = lib.mkEnableOption "caddy reverse proxy";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
package = pkgs.caddy.withPlugins {
|
||||
plugins = [
|
||||
# error message will tell you the correct version tag to use
|
||||
# (still need the @ to pass nix config check)
|
||||
"github.com/caddy-dns/cloudflare@v0.0.0-20240703190432-89f16b99c18e"
|
||||
];
|
||||
hash = "sha256-jCcSzenewQiW897GFHF9WAcVkGaS/oUu63crJu7AyyQ=";
|
||||
};
|
||||
logFormat = lib.mkForce "level INFO";
|
||||
acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
|
||||
extraConfig = ''
|
||||
(common) {
|
||||
encode zstd gzip
|
||||
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
|
||||
tls {
|
||||
dns cloudflare {$CLOUDFLARE_KEY}
|
||||
resolvers 1.1.1.1 8.8.8.8
|
||||
}
|
||||
}
|
||||
'';
|
||||
environmentFile = config.sops.secrets."caddy/env".path;
|
||||
};
|
||||
};
|
||||
}
|
35
modules/containerization.nix
Normal file
35
modules/containerization.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.containerization;
|
||||
in
|
||||
{
|
||||
options.my.containerization = {
|
||||
enable = lib.mkEnableOption "containerization";
|
||||
usePodman = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "whether to use podman instead of docker";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
virtualisation = {
|
||||
containers.enable = true;
|
||||
podman = lib.mkIf cfg.usePodman {
|
||||
enable = true;
|
||||
# create 'docker' alias for podman, to use as
|
||||
# drop-in replacement
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings = {
|
||||
dns_enabled = true;
|
||||
ipv6_enabled = true;
|
||||
};
|
||||
};
|
||||
oci-containers.backend = lib.mkIf cfg.usePodman "podman";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -2,5 +2,11 @@
|
|||
{
|
||||
imports = [
|
||||
./backup.nix
|
||||
./caddy.nix
|
||||
./roundcube.nix
|
||||
./zipline.nix
|
||||
./containerization.nix
|
||||
./vaultwarden.nix
|
||||
./searx.nix
|
||||
];
|
||||
}
|
||||
|
|
56
modules/roundcube.nix
Normal file
56
modules/roundcube.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.roundcube;
|
||||
fpm = config.services.phpfpm.pools.roundcube;
|
||||
roundcube = config.services.roundcube;
|
||||
in
|
||||
{
|
||||
options.my.roundcube = {
|
||||
enable = lib.mkEnableOption "roundcube webmail";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.roundcube = {
|
||||
enable = true;
|
||||
configureNginx = false;
|
||||
package = pkgs.roundcube.withPlugins (
|
||||
p: with p; [
|
||||
persistent_login
|
||||
contextmenu
|
||||
custom_from
|
||||
thunderbird_labels
|
||||
]
|
||||
);
|
||||
plugins = [
|
||||
"persistent_login"
|
||||
"contextmenu"
|
||||
"custom_from"
|
||||
"thunderbird_labels"
|
||||
];
|
||||
dicts = with pkgs.aspellDicts; [ en ];
|
||||
extraConfig = ''
|
||||
$config['imap_host'] = "ssl://imap.migadu.com:993";
|
||||
$config['smtp_host'] = "ssl://smtp.migadu.com:465";
|
||||
$config['smtp_user'] = "%u";
|
||||
$config['smtp_pass'] = "%p";
|
||||
'';
|
||||
};
|
||||
|
||||
services.phpfpm.pools.roundcube.settings = lib.mapAttrs (name: lib.mkForce) {
|
||||
"listen.owner" = "caddy";
|
||||
"listen.group" = "caddy";
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."mail.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
root ${roundcube.package}
|
||||
php_fastcgi unix/${fpm.socket}
|
||||
file_server
|
||||
'';
|
||||
};
|
||||
}
|
47
modules/searx.nix
Normal file
47
modules/searx.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.searx;
|
||||
in
|
||||
{
|
||||
options.my.searx = {
|
||||
enable = lib.mkEnableOption "searx";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.searx = {
|
||||
enable = true;
|
||||
runInUwsgi = true;
|
||||
uwsgiConfig = {
|
||||
disable-logging = true;
|
||||
http = "127.0.0.1:8090";
|
||||
};
|
||||
settings = {
|
||||
# get secret from env
|
||||
server.secret_key = "@SEARX_SECRET_KEY@";
|
||||
};
|
||||
environmentFile = config.sops.secrets."searx/env".path;
|
||||
redisCreateLocally = true; # required for limiter
|
||||
limiterSettings = {
|
||||
real_ip = {
|
||||
x_for = 1;
|
||||
ipv4_prefix = 32;
|
||||
ipv6_prefix = 56;
|
||||
};
|
||||
botdetection.ip_lists.pass_ip = [
|
||||
"100.121.152.86"
|
||||
"100.66.32.54"
|
||||
];
|
||||
link_token = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."x.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy 127.0.0.1:8090
|
||||
'';
|
||||
};
|
||||
}
|
32
modules/vaultwarden.nix
Normal file
32
modules/vaultwarden.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.vaultwarden;
|
||||
in
|
||||
{
|
||||
options.my.vaultwarden = {
|
||||
enable = lib.mkEnableOption "vaultwarden";
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "https://pass.cy7.sh";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
dbBackend = "postgresql";
|
||||
environmentFile = config.sops.secrets."vaultwarden/env".path;
|
||||
config = {
|
||||
ROCKET_ADDRESS = "0.0.0.0";
|
||||
ROCKET_PORT = "8081";
|
||||
DATABASE_URL = "postgresql://vaultwarden:vaultwarden@127.0.0.1:5432/vaultwarden";
|
||||
EXPERIMENTAL_CLIENT_FEATURE_FLAGS = "fido2-vault-credentials,ssh-agent,ssh-key-vault-item,autofill-v2";
|
||||
DOMAIN = cfg.domain;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
33
modules/zipline.nix
Normal file
33
modules/zipline.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.my.zipline;
|
||||
in
|
||||
{
|
||||
options.my.zipline = {
|
||||
enable = lib.mkEnableOption "zipline";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.zipline = {
|
||||
enable = true;
|
||||
settings = {
|
||||
CORE_HOSTNAME = "127.0.0.1";
|
||||
CORE_PORT = 3001;
|
||||
DATASOURCE_TYPE = "s3";
|
||||
DATASOURCE_S3_ENDPOINT = "https://e3e97aac307d106a7becea43cef8fcbd.r2.cloudflarestorage.com";
|
||||
DATASOURCE_S3_BUCKET = "zipline";
|
||||
DATASOURCE_S3_REGION = "auto";
|
||||
};
|
||||
environmentFiles = [ config.sops.secrets."zipline/env".path ];
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts."host.cy7.sh".extraConfig = ''
|
||||
import common
|
||||
reverse_proxy 127.0.0.1:3001
|
||||
'';
|
||||
};
|
||||
}
|
13
overlay/attic/concurrent-32.patch
Normal file
13
overlay/attic/concurrent-32.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/server/src/config.rs b/server/src/config.rs
|
||||
index 4412cbf..6dd483a 100644
|
||||
--- a/server/src/config.rs
|
||||
+++ b/server/src/config.rs
|
||||
@@ -565,7 +565,7 @@ fn default_default_retention_period() -> Duration {
|
||||
}
|
||||
|
||||
fn default_concurrent_chunk_uploads() -> usize {
|
||||
- 10
|
||||
+ 32
|
||||
}
|
||||
|
||||
fn load_config_from_path(path: &Path) -> Result<Config> {
|
|
@ -16,6 +16,9 @@ final: prev: {
|
|||
cargoLock = null;
|
||||
cargoHash = "sha256-AbpWnYfBMrR6oOfy2LkQvIPYsClCWE89bJav+iHTtLM=";
|
||||
useFetchCargoVendor = true;
|
||||
patches = [
|
||||
./concurrent-32.patch
|
||||
];
|
||||
}
|
||||
);
|
||||
};
|
||||
|
|
7
overlay/bitwarden/default.nix
Normal file
7
overlay/bitwarden/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
final: prev: {
|
||||
bitwarden-desktop = prev.bitwarden-desktop.overrideAttrs (finalAttrs: prevAttrs: {
|
||||
patches = prevAttrs.patches ++ [
|
||||
./ssh-agent-no-confirm.patch
|
||||
];
|
||||
});
|
||||
}
|
34
overlay/bitwarden/ssh-agent-no-confirm.patch
Normal file
34
overlay/bitwarden/ssh-agent-no-confirm.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs b/core/src/ssh_agent/mod.rs
|
||||
index 4e304cc..8203dca 100644
|
||||
--- a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs
|
||||
+++ b/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs
|
||||
@@ -44,28 +44,7 @@ impl ssh_agent::Agent<peerinfo::models::PeerInfo> for BitwardenDesktopAgent {
|
||||
return false;
|
||||
}
|
||||
|
||||
- let request_id = self.get_request_id().await;
|
||||
- println!(
|
||||
- "[SSH Agent] Confirming request from application: {}",
|
||||
- info.process_name()
|
||||
- );
|
||||
-
|
||||
- let mut rx_channel = self.get_ui_response_rx.lock().await.resubscribe();
|
||||
- self.show_ui_request_tx
|
||||
- .send(SshAgentUIRequest {
|
||||
- request_id,
|
||||
- cipher_id: Some(ssh_key.cipher_uuid.clone()),
|
||||
- process_name: info.process_name().to_string(),
|
||||
- is_list: false,
|
||||
- })
|
||||
- .await
|
||||
- .expect("Should send request to ui");
|
||||
- while let Ok((id, response)) = rx_channel.recv().await {
|
||||
- if id == request_id {
|
||||
- return response;
|
||||
- }
|
||||
- }
|
||||
- false
|
||||
+ true
|
||||
}
|
||||
|
||||
async fn can_list(&self, info: &peerinfo::models::PeerInfo) -> bool {
|
|
@ -1,44 +0,0 @@
|
|||
final: prev:
|
||||
let
|
||||
newRust = final.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
newRustPlatform = final.makeRustPlatform {
|
||||
cargo = newRust;
|
||||
rustc = newRust;
|
||||
};
|
||||
in
|
||||
{
|
||||
conduwuit = prev.conduwuit.override (old: {
|
||||
rustPlatform = newRustPlatform // {
|
||||
buildRustPackage =
|
||||
args:
|
||||
newRustPlatform.buildRustPackage (
|
||||
args
|
||||
// {
|
||||
version = "0.5.0-rc2";
|
||||
src = final.fetchFromGitHub {
|
||||
owner = "girlbossceo";
|
||||
repo = "conduwuit";
|
||||
rev = "5b8464252c2c03edf65e43153be026dbb768a12a";
|
||||
hash = "sha256-yNdxoVZX13QUDJYM6zTMY9ExvacTqB+f0MLvDreSW8U=";
|
||||
};
|
||||
doCheck = false;
|
||||
cargoHash = "sha256-g19UujLI9d4aw+1273gfC17LDLOciqBvuLhe/VCsh80=";
|
||||
# unstable has this set to "conduit"
|
||||
meta.mainProgram = "conduwuit";
|
||||
|
||||
buildFeatures = [
|
||||
"brotli_compression"
|
||||
"element_hacks"
|
||||
"gzip_compression"
|
||||
"release_max_log_level" # without this feature to enable debug logging
|
||||
"sentry_telemetry"
|
||||
"systemd"
|
||||
"zstd_compression"
|
||||
"jemalloc"
|
||||
"io_uring"
|
||||
];
|
||||
}
|
||||
);
|
||||
};
|
||||
});
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
# This is the authoritiative configuration of this project's Rust toolchain.
|
||||
#
|
||||
# Other files that need upkeep when this changes:
|
||||
#
|
||||
# * `Cargo.toml`
|
||||
# * `flake.nix`
|
||||
#
|
||||
# Search in those files for `rust-toolchain.toml` to find the relevant places.
|
||||
# If you're having trouble making the relevant changes, bug a maintainer.
|
||||
|
||||
[toolchain]
|
||||
channel = "1.84.0"
|
||||
profile = "minimal"
|
||||
components = [
|
||||
# For rust-analyzer
|
||||
"rust-src",
|
||||
"rust-analyzer",
|
||||
# For CI and editors
|
||||
"rustfmt",
|
||||
"clippy",
|
||||
]
|
||||
targets = [
|
||||
#"x86_64-apple-darwin",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"x86_64-unknown-linux-musl",
|
||||
"aarch64-unknown-linux-musl",
|
||||
#"aarch64-apple-darwin",
|
||||
]
|
|
@ -1,8 +1,24 @@
|
|||
{ inputs }:
|
||||
let
|
||||
overlays = [
|
||||
./conduwuit
|
||||
./attic
|
||||
./zipline
|
||||
./bitwarden
|
||||
];
|
||||
importedOverlays = map (m: import m) overlays;
|
||||
in
|
||||
importedOverlays
|
||||
++ [
|
||||
(
|
||||
final: prev:
|
||||
let
|
||||
nixpkgsFrom = flake: pkg: flake.legacyPackages.${prev.system}.${pkg};
|
||||
pkgFrom = flake: pkg: flake.packages.${prev.system}.${pkg};
|
||||
in
|
||||
{
|
||||
conduwuit =
|
||||
pkgFrom inputs.conduwuit "static-x86_64-linux-musl-all-features-x86_64-haswell-optimised";
|
||||
pixelflasher = nixpkgsFrom inputs.pixelflasher "pixelflasher";
|
||||
}
|
||||
)
|
||||
]
|
14
overlay/vscode.nix
Normal file
14
overlay/vscode.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
final: prev: {
|
||||
vscode-extensions = prev.vscode-extensions // {
|
||||
github = prev.vscode-extensions.github // {
|
||||
codespaces = prev.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "github";
|
||||
name = "codespaces";
|
||||
version = "1.17.3";
|
||||
hash = "sha256-idJFYHJ4yeqpFZBX55Y0v1yfzgqyhS0MrC4yIto7i7w=";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
7
overlay/zipline/default.nix
Normal file
7
overlay/zipline/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
final: prev: {
|
||||
zipline = prev.zipline.overrideAttrs {
|
||||
patches = [
|
||||
./no-check-bucket.patch
|
||||
];
|
||||
};
|
||||
}
|
45
overlay/zipline/no-check-bucket.patch
Normal file
45
overlay/zipline/no-check-bucket.patch
Normal file
|
@ -0,0 +1,45 @@
|
|||
diff --git a/src/lib/datasource/S3.ts b/src/lib/datasource/S3.ts
|
||||
index 089dd64..39dd8f4 100644
|
||||
--- a/src/lib/datasource/S3.ts
|
||||
+++ b/src/lib/datasource/S3.ts
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
DeleteObjectCommand,
|
||||
DeleteObjectsCommand,
|
||||
GetObjectCommand,
|
||||
- ListBucketsCommand,
|
||||
ListObjectsCommand,
|
||||
PutObjectCommand,
|
||||
S3Client,
|
||||
@@ -38,32 +37,6 @@ export class S3Datasource extends Datasource {
|
||||
endpoint: this.options.endpoint ?? undefined,
|
||||
forcePathStyle: this.options.forcePathStyle ?? false,
|
||||
});
|
||||
-
|
||||
- this.ensureBucketExists();
|
||||
- }
|
||||
-
|
||||
- private async ensureBucketExists() {
|
||||
- try {
|
||||
- const res = await this.client.send(new ListBucketsCommand());
|
||||
- if (res.$metadata.httpStatusCode !== 200) {
|
||||
- this.logger
|
||||
- .error('there was an error while listing buckets', res.$metadata as Record<string, unknown>)
|
||||
- .error('zipline will now exit');
|
||||
- process.exit(1);
|
||||
- }
|
||||
-
|
||||
- if (!res.Buckets?.find((bucket) => bucket.Name === this.options.bucket)) {
|
||||
- this.logger.error(`bucket ${this.options.bucket} does not exist`).error('zipline will now exit');
|
||||
- process.exit(1);
|
||||
- }
|
||||
- } catch (e) {
|
||||
- this.logger
|
||||
- .error('there was an error while listing buckets', e as Record<string, unknown>)
|
||||
- .error('zipline will now exit');
|
||||
- process.exit(1);
|
||||
- } finally {
|
||||
- this.logger.debug(`bucket ${this.options.bucket} exists`);
|
||||
- }
|
||||
}
|
||||
|
||||
public async get(file: string): Promise<Readable | null> {
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
caddy:
|
||||
env: ENC[AES256_GCM,data:uVCkVky5MRRhN+g4f634nBjvpcI5Ldy+eOKXg7eGu9foswTHA1SXDs67+Wuvo/jaPw7Zg67xKZRHnoTon1udQzyfu0T6pmVKfsUPewITYCd+qLTanFz6uVRUHzpUVwjCZNqB8gxNr/BiZ70NG4vQXRjgd3zKFrQYQBr4zSaP2vK1pRdbuQ==,iv:dQBfX4X8huUp2dqY3tEGW+BPZ/XADT10ptt85R7X+AY=,tag:cvMbFjkRHoxxnNfz8dGv5g==,type:str]
|
||||
env: ENC[AES256_GCM,data:fyP1pPJgO9jN0ypC09s0Sz+HlUX42fl6DxWevYYevKdlKTgz5VHQfbELhy6vejmg9v+zFB3/AtSZfWJQB2dNX4Zm/L42wf5QZ7oYoa9QTujJjRgE96OXM77ioNy2DzFzpGw3w16QoC7zaR8UHSN1KL6qRj5xxKw0U6Apxhc0AuBoLvNHOgn8CHY92Q4OBcA1tJn8tgLB9uZB5Ge/2BlEjdSQ0sZMLkE+dHC4/0IILVFrrv1sWRXvXt6t5njF,iv:tF5GRPFYZSuKRgDAY1e8/J7jNQAEqDpgXlpwWW+1P4E=,tag:lK/BUErXNIPgqXPzGJvPTQ==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
|
@ -33,8 +33,8 @@ sops:
|
|||
Q2hBZE1FOHJ3aW5rVmoyK045eG11cmsKFOmP5iWONREZvxu0rM+fKMPQKgnYq5LH
|
||||
AKMZFsP7nnUxjdCXEA18sDg4Rf0qp8i3uQK3D6P7417j9ye/YZA4BQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-12-17T03:25:37Z"
|
||||
mac: ENC[AES256_GCM,data:bhFBLkT2q6HGtTPtHLVZkKZn00Lbm11/u3qSR19lU2E1SsQ7mpukvCqcTxNWtJ+HHth6yJJfgM6XABKq/9/598L2MgGuF3C/GGS3xpjwHh5RyV8t1lV8cqDaZGjGOMGx35lFQ6DoXOreQrtP/f7MKzf+nVNFr1NbTR8YhqR1xDU=,iv:+fjYlbyIyM9nLagrvE+PUhC2pT7QTsTSQX7ELZ7Wuhs=,tag:GWQv6VmIsWwFzb4bUr5CLg==,type:str]
|
||||
lastmodified: "2025-03-08T21:05:07Z"
|
||||
mac: ENC[AES256_GCM,data:vgGCrCJMBxjiCWZYymlaPKTekA1Weprwgtc4xcoPVlDsuljkXDth+aAZPpnakE/nSXhGC6jGJOHdtrsIUTkH2R9WQHIdZDBy+VrVQoV6xE3ijfWyIujcIPwz3s1MGBqRFUYum1XMU5FAcIASiYV7PDxj/f6fsLbjKZCc9/kG3GE=,iv:PSvlssl+Gx+Gcw6/zccIKJDeNz3dJ0kHnPmCrAdBnqQ=,tag:6F/JKBFNxKEgMTyYZ3W0Vg==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.2
|
||||
version: 3.9.4
|
||||
|
|
31
secrets/services/searx.yaml
Normal file
31
secrets/services/searx.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
searx:
|
||||
env: ENC[AES256_GCM,data:VWLft5+85mNA8k3VynVBz2V+8zcg97UtHfucpaAcKbA+CQdGUbqLesQSu9a7tNRI7+OdI1qPJj5HTzP8tpGN5f39D4brtyo4fN8n8zAd,iv:F70wq9qJiFjEjJeZeFCyQskLdBR3nd/CR/UW/dE9gTo=,tag:/W8FhRC180aAdzjD5v0vZw==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEM3VXOVZBSVdZMzBOVzJD
|
||||
Y0ZvWUtFUW5pMUZnYjdxdHQvWDBEVmU1L2hBCi8zcEszZThwcGQ5WUdRTWFUWCtP
|
||||
WWE0OVJIOXpCMGJZc3J6TmVCMGN2TUUKLS0tIEwxVDJLTkdrK3g2TG9iWml6aEFR
|
||||
d3NOS245SmV3K1dlaHdnMHpVSzlYQk0KnDSK1C1sEeBVMX80DqjJRrGFx+WkNijg
|
||||
XEf/Jq//qzgvX24fOl4X4xGTRfBMbLlznLs4N6WtIY7aVcW5N041jQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCOGFaWkY1TWhvQUhENHUx
|
||||
cUk4b2FpeCs5eUMyQ2FhZzVKdHY1MVIzWUhRCmw0eEhwYjl2OFNoQkZRVW43REQy
|
||||
OGpNWFRTWEF4NFFuU1lpTFdKY3lBNEEKLS0tIFNET0JBZmxoSGhWdTIwL0x2Ris3
|
||||
ZHhidlJHT08rR3ZuME9UQmovRTFGNlkK83k2wqXQvxeURrUE/hXoZMDc9lqkgBuL
|
||||
W/UWt/PBorp1/WRqO6dpuu9N2S9i6VCPJH0jdoHMWEqWuRIENFKVhQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-03-08T20:52:15Z"
|
||||
mac: ENC[AES256_GCM,data:UGFkCgmgRofmX2gQR2W2DD0u4LowQ9pmUxPOgpLVaKGasEoNWJMGu7A7rUIpHvuUomoL6q8aiWs3kiIuZrTQ3CB5gawmU9pPiEseOAdbww4beIcnUmumwmCLH46XYQdaooPaz8bIncW/gFePRpVB2Oef1pYeryXkbZRwBm+bPOI=,iv:GGFjerxpLH8C1m50AiKoEJxj+lGRYNMe4Y7k4u232v8=,tag:woww///+80wakvzYoyWCqQ==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.4
|
31
secrets/services/zipline.yaml
Normal file
31
secrets/services/zipline.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
zipline:
|
||||
env: ENC[AES256_GCM,data:5n056AoWvM4PXBCxm+tk2G9qOugRpA/n5YRrxTtB7XBBQmRQNaP2a6AbAnWX665yFGQsB0iHdSER3sY78RqUL0gFKupVq1UAT8A2Wi0HqcFMqUs2drXjIksdmI6hTLk9TCxtPy0VbPieIshO2VEYesUqitTZ01i8Hj5CyF8yFC6t9eQ2L9iKLm5gje80MoqQT4IFx+V5B4ExP3fzhcpfr8StGHKHvG59nc40KQAW38i/95H3nncScOBfSQSNH61wLnDjecr8srxELO/j2iOKD9JzmqYLQr8TLKNw7KIIhDMAmuNeQhG1YXtj7/nj6gHN6cHpcHPgUdWID/Y6MHcndDCIJnyC2Qeod5ShOn53IjL7C8VZ940o9LfwNz22sx1SYZEwRGktIhUY0c4IL/4bUvhxwTcMH9ITYU8eVfG/QSnr8B4=,iv:juf0dRagztirDN89Jj+v8k62BBl9TU12A8TdR/m8qDA=,tag:WakN+bOYfF4YrleIsAg+OQ==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDUDFDSnFEM1NZK0lSMnUx
|
||||
YkI3MWlpY1VjYXdaKzBCOFc5NWp5NXdBbkdVCmI0Z2tuSXBOSFN2NXJTUWxKQXNu
|
||||
SGhhTTYzUDFSOFFXdU5aVHlmYnJNa1UKLS0tIGlrUTErQkVRdFBYYWxUcklHaUVY
|
||||
UkQ3eVlDR2lMOEZGNXRjU3J3RXpwZkUKNJL/dvPsGu0AJiXryR8uSM0jE//cQi0b
|
||||
AeYUjXLRcouUq5zWL6AsKDOUAo9t//AAFZqv3DGUboR8UzdymYRYMw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0Wk9ZYkExU3k0ZWpOZEhF
|
||||
TkswRGxTd1hpcGJaa1pmcUJFQnZMcGV6L0ZFCnp3K05YdU56WUl1TktVSFNQWWZH
|
||||
bG5COXVuSjFCUWpEYXQweVFPaDAzcTQKLS0tIFgralQ1TWUzajVOM3RyS3RDcnRx
|
||||
WHZSeVJIaGRldmhmcWZvT3YzL3hPbFEKVUtCU1l/RhFOlwdjE0ejW/Ym+cMVNxIW
|
||||
AdvVcWoilMGTsDJIIlLu7fPbhmGotPvqGjxMC2yEpEgJUt/rsz2vPA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-02-23T21:43:15Z"
|
||||
mac: ENC[AES256_GCM,data:nI7xnLUMtseY9q8XZ3owb6qtRBtaRmmNNK4Z5ELHaI85VowdItZXMFN9faCVuCVTzhKp/4WC8jm96k7eWxytzW6r6KRvKDrUaRV27UweraK2Oe8et7u+oIEPh6HkNuZFB+qPiFYdfc+qQeTIKwayEVLeVWyvQKVDBhBxZd9UArg=,iv:q4hRQVat+LHVbYnF6QLE8iBdBeacJVUBKmMe4tbU8YU=,tag:6m4+SU1BFXMPORqe9vgXAw==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.4
|
34
secrets/yt/aws.yaml
Normal file
34
secrets/yt/aws.yaml
Normal file
|
@ -0,0 +1,34 @@
|
|||
aws:
|
||||
key_id: ENC[AES256_GCM,data:9tWAMzUv4f6Ea27XsmYhO11NroYnLmED/FVrCCGO0Vc=,iv:YP1xRjVd1M1MB7IKVAw0Sdx0E4AokBrsaAcDLvTLHD4=,tag:SEmEr3NoZvch9LeaJHbCww==,type:str]
|
||||
key_secret: ENC[AES256_GCM,data:AK+vER4T1p0AknKzsxZQJ0JTpfIstnnTWSAZ26zJSCwJYgRYwj8RF98CS7HM+KWvz5VNGENxhVdUnjlGkrTB4w==,iv:3o79gwp5b4KGsixW02qFWYFvpagY/hykbYJ/WNz6PB8=,tag:GW2T8ggKYHa1CQ6DRomJDQ==,type:str]
|
||||
_garage_key_id: ENC[AES256_GCM,data:2lLS1nBhrwBkJh/ei7FwBoR6jOI6KCJkvOs=,iv:jwB7ZEaKOPIwghcGRs3qaICypoHgSxkFBOyB6e5hpYI=,tag:Iqwv3j1R1uLLUDKLhN1Atg==,type:str]
|
||||
_garage_key_secret: ENC[AES256_GCM,data:5iwwMfojHrR79cOIY+9O2oVY8v1cbPcECMSOMhWuGAdc2lfCogKBwLM4TFwBH9X1Vx56QvUoxCQ2uSyfOMLR7A==,iv:Q523ttz6ijmv8/JlVZuldFR4IabEKiVN4sGmJ9xDJU0=,tag:ZZ4LRG4DXOC7LY8hEjXYHQ==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1sy0at69err83qyml2vqu8xvwjccfws447aaadfvacj2qluw3p45s2mtrw8
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKaUZKbTVjZ1NEWlE5RzZT
|
||||
T1dKdkRQajEva0tpRXhxYUlYWmw1b3MwSFZvCmhteVJ2VGhVNnZTZkJlem1OT3dL
|
||||
dGlQTWdOUlo3TXNOS0wvNlpqVWpZSFEKLS0tIC9DNjY3OW1zWUlRQ1ZEOGlBRk9R
|
||||
azQxMGhQejQ5M0N1YjFtSW5uVnRCQ3MKtt26G2PxIry/lppOT/NUX8jebEb5NgqO
|
||||
HuHj7WT51Gtotfgb22VfGeOCaw9+pPYSjdk9WV4z57r7Z/lylALKRw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPaVIwbExDUjJiVFpHOFJu
|
||||
dk1SUHc5UDRFUENsbkg2RmQvazdEZ1NKeEhvCjVCNzdwRFN0aUZJL0pVSTI1RUxv
|
||||
Ymhhc0tsSENVa1VUKzRBZk5IcjEvNFUKLS0tIFpPNlRXOVYyVnpyUmtLMTFqNlZ0
|
||||
UlYrTExEUVc0dURLR1czN3BnYzZ2VGMKCbAgM50jvs9VciA1Pb/VY+2I4x62LBGe
|
||||
j7eHkfTFc8Gnk/rZA9/ZJDLFr/FUPMQWK/NVoz6oLjO6oVFXqN6OqA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-02-27T02:50:27Z"
|
||||
mac: ENC[AES256_GCM,data:FjlbCqqYHPn/FDPUR1flWgg6wwHhLJx1uKOedwkvsTxuPhlVJHghTHWYetdmplOQyEpOEbyv+iqKTGDYHzDdgU2jIZ0TKM66iHq+1yft4TatBu75/0N3I+SfZv97vKNehxN/zvIY3FQF4O8qVy9c1dZRmr7q27Wq2pdHSOe4Myg=,iv:YkUXcOwb6UZr0vXazbLrVeGTvBTtnwuEIY3O+GSrnNk=,tag:kQBh7urSnHoiV18TIGlPEg==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.4
|
Loading…
Add table
Reference in a new issue