Compare commits
162 Commits
gitea
...
b5806072f0
| Author | SHA1 | Date | |
|---|---|---|---|
| b5806072f0 | |||
| 79c95f6461 | |||
| cbbb085355 | |||
| c18f70fab0 | |||
| 47527f8dfc | |||
| 73f2692668 | |||
| 0447736d0a | |||
| cea1a06c70 | |||
| f25f05f731 | |||
| ed4f6edda8 | |||
| 1b6a90c955 | |||
| 4d4098987c | |||
| 6d6459418d | |||
| fd0b02a8a9 | |||
| d6311eb216 | |||
| 3b6a816df6 | |||
| d7549af76f | |||
| 9dc1cbab4e | |||
| a253164951 | |||
| 1e947269cc | |||
| 5929600955 | |||
| aeed8760b8 | |||
| 61658f1654 | |||
| 009dcee4dc | |||
| 209055fba8 | |||
| eec8c77033 | |||
| f61f5d211b | |||
| 91a88ac419 | |||
| 8b3c85fa17 | |||
| bcb3d4428b | |||
| 29dde91b5d | |||
| 6df736c3b3 | |||
| 27cb6291ed | |||
| 3636840638 | |||
| 2bbce7ec6c | |||
| 382f67d9dd | |||
| b5fbc0572a | |||
| 81c55bd08c | |||
| e8ae1cae07 | |||
| 8aa69a181d | |||
| f09a93c7c0 | |||
| edaf1d4164 | |||
| 685dad74a7 | |||
| 4e0b2e7072 | |||
| 6e4a5ad587 | |||
| d2de85b10b | |||
| c7520982ab | |||
| 46423a6f88 | |||
| 7fb8960f2b | |||
| 9ddca91f2f | |||
| 440f739cab | |||
| 812974e7c8 | |||
| 8512ede266 | |||
| 7f2beb6d27 | |||
| 2d8a5291fb | |||
| b8f85a99a2 | |||
| 2028d54ab2 | |||
| 87ce8e0d1c | |||
| 34e893bd68 | |||
| 1d2df8e35b | |||
| 0dcb90d8b3 | |||
| fc6a934277 | |||
| edb6395781 | |||
| bc19801474 | |||
| 5c003eacb6 | |||
| 2b8ac26b47 | |||
| 8200266d5d | |||
| dec88731aa | |||
| d17d612bf4 | |||
| 146ec0270f | |||
| ccc595d9a6 | |||
| e0dbd097c4 | |||
| b3a695aac3 | |||
| 846f4551d3 | |||
| a7851d5fc0 | |||
| eb3697769e | |||
| eaf40b993e | |||
| 9097d40703 | |||
| 2851c593da | |||
| 1f6b51e3d8 | |||
| cfb3d63efc | |||
| 75c53fd412 | |||
| 05b3577683 | |||
| 505f9b7d3d | |||
| 2b57af1e5e | |||
| c43f634d89 | |||
| 64dbdd82ed | |||
| 41ec08a030 | |||
| 7fc7b71ee3 | |||
| a9553d17a5 | |||
| f795b5615f | |||
| 09ebd7a317 | |||
| 6bc3c38858 | |||
| 5e6a06fbeb | |||
| 7ef0bdbc36 | |||
| 47ac1ae1be | |||
| 882ab2d92f | |||
| db608b0268 | |||
| 836a3778ef | |||
| e4b1987e3e | |||
| f6c2446196 | |||
| e1dfd3193e | |||
| 586df7389b | |||
| 44b3a8c9ab | |||
| 6b48654cd6 | |||
| 69ec3990a7 | |||
| 16a9b5afd7 | |||
| 963f5e56bf | |||
| c9c4d2c95d | |||
| e74bcbc30c | |||
| acbe732614 | |||
| 9dfac1e83f | |||
| a9cae0f3ea | |||
| 271c2aec5c | |||
| b36d7ffe20 | |||
| 2e3cb758da | |||
| 4132b0ea05 | |||
| 99c223a78d | |||
| fc7f1ee0f1 | |||
| d4a77341ee | |||
| 8864fc294d | |||
| 5eb965823e | |||
| 88674ae2b2 | |||
| 1b555cfe8a | |||
| e619684457 | |||
| 1b8bf567cb | |||
| 6ce762a34b | |||
| 8004fa6afd | |||
| 906918ab23 | |||
| 3b58ebf4cc | |||
| 1f81dfb7dd | |||
| 5c48075076 | |||
| bd61589f76 | |||
| a5369549c3 | |||
| e5216e86c5 | |||
| fea06af403 | |||
| 7c6971138b | |||
| 1e4e09d40d | |||
| 65583b9494 | |||
| c52869341b | |||
| ce9662c6f1 | |||
| d68c40b775 | |||
| 39dddc247b | |||
| f6179c56df | |||
| 33e7850f2a | |||
| 86a53cbdea | |||
| 06bf466512 | |||
| bb0f730d0d | |||
| 0cd10b3a89 | |||
| 12ab5b3348 | |||
| 693d05de84 | |||
| a8abdfde89 | |||
| 479e5f94a9 | |||
| 9b6d360432 | |||
| 5de2030d27 | |||
| 6c5c8d1f1e | |||
| dd13ad35ca | |||
| 3f5483d747 | |||
| a57ce6bb7d | |||
| ef80e0555e | |||
| 6b40745b29 | |||
| f8ca661d58 |
8
.envrc
Normal file
8
.envrc
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
if ! has nix_direnv_version || ! nix_direnv_version 2.2.0; then
|
||||||
|
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.0/direnvrc" "sha256-5EwyKnkJNQeXrRkYbwwRBcXbibosCJqyIUuz9Xq+LRc="
|
||||||
|
fi
|
||||||
|
|
||||||
|
nix_direnv_watch_file devenv.nix
|
||||||
|
nix_direnv_watch_file devenv.lock
|
||||||
|
nix_direnv_watch_file devenv.yaml
|
||||||
|
use flake . --impure
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.direnv
|
||||||
|
.devenv
|
||||||
578
flake.lock
generated
578
flake.lock
generated
@@ -3,16 +3,18 @@
|
|||||||
"agenix": {
|
"agenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677969766,
|
"lastModified": 1723293904,
|
||||||
"narHash": "sha256-AIp/ZYZMNLDZR/H7iiAlaGpu4lcXsVt9JQpBlf43HRY=",
|
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "03b51fe8e459a946c4b88dcfb6446e45efb2c24e",
|
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -21,6 +23,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cachix": {
|
||||||
|
"inputs": {
|
||||||
|
"devenv": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"flake-compat": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"git-hooks": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728672398,
|
||||||
|
"narHash": "sha256-KxuGSoVUFnQLB2ZcYODW7AVPAh9JqRlD5BrfsC/Q4qs=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "cachix",
|
||||||
|
"rev": "aac51f698309fd0f381149214b7eee213c66ef0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"ref": "latest",
|
||||||
|
"repo": "cachix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -29,11 +59,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673295039,
|
"lastModified": 1700795494,
|
||||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -43,13 +73,94 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"devenv": {
|
||||||
|
"inputs": {
|
||||||
|
"cachix": "cachix",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
|
"nix": "nix",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1732896163,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-eS0vSZT0ZUguR6Jf6CyupvDn4m+r/mgN6Vtg61ECYC0=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "devenv",
|
||||||
|
"rev": "2c928a199d56191d7a53f29ccafa56238c8ce4e5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "devenv",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"devenv",
|
||||||
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712014858,
|
||||||
|
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -59,6 +170,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1649676176,
|
"lastModified": 1649676176,
|
||||||
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
|
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
|
||||||
@@ -73,19 +202,126 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1659877975,
|
||||||
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_5": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ghostty": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-unstable": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"zig": "zig"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732920523,
|
||||||
|
"narHash": "sha256-/Udch6RRLBSjluDXjQHWpiYFFJR15g+qV263ibVBwoc=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "3c637a2777885dab9f8bb9d2b7c36411d62e1e4c",
|
||||||
|
"revCount": 8136,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://git@github.com/ghostty-org/ghostty"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://git@github.com/ghostty-org/ghostty"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"devenv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1730302582,
|
||||||
|
"narHash": "sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "af8a16fe5c264f5e9e18bcee2859b40a656876cf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"devenv",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
"golink": {
|
"golink": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677628298,
|
"lastModified": 1732907966,
|
||||||
"narHash": "sha256-1R/bnkbApMANd5m8bY0zUUsXB8vS8X/c+D/rl/jJ0To=",
|
"narHash": "sha256-59DP0vcqNjY8ct3rmMhD9D4y+yYR2j7hg2D/z14iO/M=",
|
||||||
"owner": "tailscale",
|
"owner": "tailscale",
|
||||||
"repo": "golink",
|
"repo": "golink",
|
||||||
"rev": "7fa6e009f6b1a0079fd7407b15326ee57161a33d",
|
"rev": "2ecf9ef4d51e9b3d27cb0c2ab0fb8a0ef4543b6e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -97,16 +333,36 @@
|
|||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"utils": "utils"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1679067095,
|
"lastModified": 1703113217,
|
||||||
"narHash": "sha256-G2dJQURL/CCi+8RP6jNJG8VqgtzEMCA+6mNodd3VR6E=",
|
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3239e0b40f242f47bf6c0c37b2fd35ab3e76e370",
|
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733075221,
|
||||||
|
"narHash": "sha256-1U+OGR6FWNem2Zrv92b1T64s+vw5MAFT3Prh+vWy/1I=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "7f78e2d1c6a9db76444e02a73f0669ebb79f8833",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -116,51 +372,9 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hyprland": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"wlroots": "wlroots",
|
|
||||||
"xdph": "xdph"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1679166084,
|
|
||||||
"narHash": "sha256-yr+alTr1eGjEKpMiD06FTTMP6vaoNwYEZT6mW6dQ5rM=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "Hyprland",
|
|
||||||
"rev": "06244555915339967864292dd0b83cd9732516d8",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "Hyprland",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprland-protocols": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1671839510,
|
|
||||||
"narHash": "sha256-+PY1qqJfmZzzROgcIY4I7AkCwpnC+qBIYk2eFoA9RWc=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"rev": "b8f55e02a328c47ed373133c52483bbfa20a1b75",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"i3utils": {
|
"i3utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
@@ -180,13 +394,83 @@
|
|||||||
"url": "https://git.sr.ht/~dpatterbee/i3utils"
|
"url": "https://git.sr.ht/~dpatterbee/i3utils"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"libgit2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1697646580,
|
||||||
|
"narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=",
|
||||||
|
"owner": "libgit2",
|
||||||
|
"repo": "libgit2",
|
||||||
|
"rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "libgit2",
|
||||||
|
"repo": "libgit2",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"libgit2": "libgit2",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-23-11": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"nixpkgs-regression": [
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"pre-commit-hooks": [
|
||||||
|
"devenv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727438425,
|
||||||
|
"narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=",
|
||||||
|
"owner": "domenkozar",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "domenkozar",
|
||||||
|
"ref": "devenv-2.24",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixgl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_4",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1713543440,
|
||||||
|
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
||||||
|
"owner": "guibou",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "guibou",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677676435,
|
"lastModified": 1730531603,
|
||||||
"narHash": "sha256-6FxdcmQr5JeZqsQvfinIMr0XcTyTuR7EXX0H3ANShpQ=",
|
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a08d6979dd7c82c4cef0dcc6ac45ab16051c1169",
|
"rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -198,11 +482,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1678898370,
|
"lastModified": 1717432640,
|
||||||
"narHash": "sha256-xTICr1j+uat5hk9FyuPOFGxpWHdJRibwZC+ATi0RbtE=",
|
"narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ac718d02867a84b42522a0ece52d841188208f2c",
|
"rev": "88269ab3044128b7c2f4c7d68448b2fb50456870",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "release-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732837521,
|
||||||
|
"narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -211,71 +511,137 @@
|
|||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708161998,
|
||||||
|
"narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "84d981bae8b5e783b3b548de505b22880559515f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
"devenv": "devenv",
|
||||||
|
"ghostty": "ghostty",
|
||||||
"golink": "golink",
|
"golink": "golink",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager_2",
|
||||||
"hyprland": "hyprland",
|
|
||||||
"i3utils": "i3utils",
|
"i3utils": "i3utils",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixgl": "nixgl",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"zig": "zig_2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wlroots": {
|
"systems_2": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"host": "gitlab.freedesktop.org",
|
"lastModified": 1681028828,
|
||||||
"lastModified": 1677789111,
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"narHash": "sha256-dWrk+Q3bLdtFe5rkyaAKWCQJCeE/KFNllcu1DvBC38c=",
|
"owner": "nix-systems",
|
||||||
"owner": "wlroots",
|
"repo": "default",
|
||||||
"repo": "wlroots",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"rev": "5ae17de23f5fd9bb252a698f3771c840280e2c05",
|
"type": "github"
|
||||||
"type": "gitlab"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"host": "gitlab.freedesktop.org",
|
"owner": "nix-systems",
|
||||||
"owner": "wlroots",
|
"repo": "default",
|
||||||
"repo": "wlroots",
|
"type": "github"
|
||||||
"type": "gitlab"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"xdph": {
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zig": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland-protocols": [
|
"flake-compat": [
|
||||||
"hyprland",
|
"ghostty"
|
||||||
"hyprland-protocols"
|
|
||||||
],
|
],
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hyprland",
|
"ghostty",
|
||||||
"nixpkgs"
|
"nixpkgs-stable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673116118,
|
"lastModified": 1717848532,
|
||||||
"narHash": "sha256-eR0yDSkR2XYMesfdRWJs25kAdXET2mbNNHu5t+KUcKA=",
|
"narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
|
||||||
"owner": "hyprwm",
|
"owner": "mitchellh",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "zig-overlay",
|
||||||
"rev": "d479c846531fd0e1d2357c9588b8310a2b859ef2",
|
"rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "mitchellh",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "zig-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zig_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-utils": "flake-utils_5",
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733055058,
|
||||||
|
"narHash": "sha256-ow5onhv9g0zekp3TeCnKD8f1n8G7jbh4wh9XfrohrsE=",
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"rev": "4e881be4521f123ad42b27f498b12d533b252b57",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
108
flake.nix
108
flake.nix
@@ -7,27 +7,42 @@
|
|||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
i3utils.url = "git+https://git.sr.ht/~dpatterbee/i3utils?ref=main";
|
devenv.url = "github:cachix/devenv";
|
||||||
i3utils.inputs.nixpkgs.follows = "nixpkgs";
|
devenv.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
ghostty = {
|
||||||
|
url = "git+ssh://git@github.com/ghostty-org/ghostty";
|
||||||
|
inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||||
|
inputs.nixpkgs-unstable.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
golink.url = "github:tailscale/golink";
|
||||||
|
golink.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
home-manager.url = "github:nix-community/home-manager/master";
|
home-manager.url = "github:nix-community/home-manager/master";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
i3utils.url = "git+https://git.sr.ht/~dpatterbee/i3utils?ref=main";
|
||||||
|
i3utils.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
golink.url = "github:tailscale/golink";
|
nixgl.url = "github:/guibou/nixGL";
|
||||||
golink.inputs.nixpkgs.follows = "nixpkgs";
|
nixgl.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
zig.url = "github:mitchellh/zig-overlay";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
agenix,
|
agenix,
|
||||||
|
devenv,
|
||||||
|
ghostty,
|
||||||
|
golink,
|
||||||
home-manager,
|
home-manager,
|
||||||
i3utils,
|
i3utils,
|
||||||
hyprland,
|
nixgl,
|
||||||
golink,
|
zig,
|
||||||
...
|
...
|
||||||
}: let
|
} @ inputs: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
|
||||||
pkgs =
|
pkgs =
|
||||||
@@ -36,25 +51,33 @@
|
|||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [
|
overlays = [
|
||||||
golink.overlay
|
golink.overlay
|
||||||
|
nixgl.overlay
|
||||||
|
zig.overlays.default
|
||||||
|
(final: prev: {
|
||||||
|
ghostty = ghostty.packages.${system}.default;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
config.permittedInsecurePackages = [
|
||||||
|
"electron-25.9.0"
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
// {
|
// {
|
||||||
i3utils = i3utils.packages.${system}.default;
|
i3utils = i3utils.packages.${system}.default;
|
||||||
hyprland = hyprland.packages."x86_64-linux".default.overrideAttrs (finalAttrs: previousAttrs: {
|
|
||||||
buildInputs = previousAttrs.buildInputs ++ [pkgs.makeWrapper];
|
|
||||||
postInstall = ''
|
|
||||||
ls -lar $out
|
|
||||||
wrapProgram $out/bin/Hyprland \
|
|
||||||
--set LIBVA_DRIVER_NAME nvidia \
|
|
||||||
--set XDG_SESSION_TYPE wayland \
|
|
||||||
--set __GLX_VENDOR_LIBRARY_NAME nvidia \
|
|
||||||
--set WLR_NO_HARDWARE_CURSORS 1
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
lib = nixpkgs.lib;
|
lib = nixpkgs.lib;
|
||||||
|
|
||||||
|
deckSystem = {hostname}:
|
||||||
|
home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = [
|
||||||
|
./users/deck
|
||||||
|
];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit hostname;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
hostSystem = {
|
hostSystem = {
|
||||||
hostname,
|
hostname,
|
||||||
headless,
|
headless,
|
||||||
@@ -68,13 +91,6 @@
|
|||||||
|
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
|
|
||||||
hyprland.nixosModules.default
|
|
||||||
{
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = !headless;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
golink.nixosModules.default
|
golink.nixosModules.default
|
||||||
|
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
@@ -86,9 +102,6 @@
|
|||||||
inherit hostname;
|
inherit hostname;
|
||||||
inherit headless;
|
inherit headless;
|
||||||
};
|
};
|
||||||
sharedModules = [
|
|
||||||
hyprland.homeManagerModules.default
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -99,6 +112,10 @@
|
|||||||
hostname = "dingbox";
|
hostname = "dingbox";
|
||||||
headless = false;
|
headless = false;
|
||||||
};
|
};
|
||||||
|
elderbug = hostSystem {
|
||||||
|
hostname = "elderbug";
|
||||||
|
headless = false;
|
||||||
|
};
|
||||||
miniding = hostSystem {
|
miniding = hostSystem {
|
||||||
hostname = "miniding";
|
hostname = "miniding";
|
||||||
headless = false;
|
headless = false;
|
||||||
@@ -115,6 +132,39 @@
|
|||||||
hostname = "bigding";
|
hostname = "bigding";
|
||||||
headless = true;
|
headless = true;
|
||||||
};
|
};
|
||||||
|
sidon = hostSystem {
|
||||||
|
hostname = "sidon";
|
||||||
|
headless = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
homeConfigurations = {
|
||||||
|
"deck" = deckSystem {
|
||||||
|
hostname = "deck";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
devShell.${system} = devenv.lib.mkShell {
|
||||||
|
inherit inputs pkgs;
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
# https://devenv.sh/reference/options/
|
||||||
|
packages = with pkgs; [
|
||||||
|
alejandra
|
||||||
|
];
|
||||||
|
|
||||||
|
enterShell = ''
|
||||||
|
'';
|
||||||
|
|
||||||
|
env = {
|
||||||
|
};
|
||||||
|
|
||||||
|
scripts = {
|
||||||
|
tidy.exec = ''
|
||||||
|
alejandra -e ./users/configs/desktop/hyprland/default.nix .
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,22 +19,35 @@
|
|||||||
|
|
||||||
# Use the GRUB 2 boot loader.
|
# Use the GRUB 2 boot loader.
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.version = 2;
|
|
||||||
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
|
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "bigding";
|
hostName = "bigding";
|
||||||
interfaces.ens3.useDHCP = true;
|
interfaces.ens3.useDHCP = true;
|
||||||
|
|
||||||
firewall.interfaces = {
|
firewall = {
|
||||||
"tailscale0" = {
|
allowedTCPPortRanges = [
|
||||||
allowedUDPPorts = [41641];
|
{
|
||||||
|
from = 12500;
|
||||||
|
to = 12515;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 12500;
|
||||||
|
to = 12515;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
interfaces = {
|
||||||
|
"tailscale0" = {
|
||||||
|
allowedUDPPorts = [41641];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
extraOptions = {
|
settings = {
|
||||||
gui = {
|
gui = {
|
||||||
insecureSkipHostcheck = true;
|
insecureSkipHostcheck = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,15 +4,23 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
mkUser = userName: {
|
mkUser = {
|
||||||
|
userName,
|
||||||
|
uid,
|
||||||
|
}: {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
home = "/home/${userName}";
|
home = "/home/${userName}";
|
||||||
initialPassword = "password";
|
initialPassword = "password";
|
||||||
extraGroups = ["wheel" "networkmanager" "docker" "video" "syncthing"];
|
extraGroups = ["wheel" "networkmanager" "docker" "video" "syncthing"];
|
||||||
shell = pkgs.nushell;
|
uid = uid;
|
||||||
|
group = "users";
|
||||||
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultUser = "daniel";
|
defaultUser = {
|
||||||
|
userName = "daniel";
|
||||||
|
uid = 1000;
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
@@ -31,6 +39,10 @@ in {
|
|||||||
"https://hyprland.cachix.org"
|
"https://hyprland.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
||||||
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
"daniel"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -41,11 +53,6 @@ in {
|
|||||||
defaultLocale = "en_GB.UTF-8";
|
defaultLocale = "en_GB.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
|
||||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
|
||||||
# replicates the default behaviour.
|
|
||||||
networking.useDHCP = false;
|
|
||||||
|
|
||||||
console = {
|
console = {
|
||||||
useXkbConfig = true;
|
useXkbConfig = true;
|
||||||
};
|
};
|
||||||
@@ -54,8 +61,14 @@ in {
|
|||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = true;
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
|
||||||
users.users."${defaultUser}" = mkUser defaultUser;
|
users.users."${defaultUser.userName}" = mkUser defaultUser;
|
||||||
xdg.portal.wlr.enable = true;
|
|
||||||
|
users.groups."users" = {
|
||||||
|
gid = 100;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal.wlr.enable = lib.mkDefault true;
|
||||||
|
xdg.portal.config.common.default = "*";
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
# List packages installed in system profile. To search, run:
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
@@ -65,11 +78,13 @@ in {
|
|||||||
firefox
|
firefox
|
||||||
fzf
|
fzf
|
||||||
gcc
|
gcc
|
||||||
|
ghostty
|
||||||
git
|
git
|
||||||
htop
|
htop
|
||||||
helix
|
helix
|
||||||
|
jujutsu
|
||||||
|
jq
|
||||||
nnn
|
nnn
|
||||||
nushell
|
|
||||||
ripgrep
|
ripgrep
|
||||||
wget
|
wget
|
||||||
zsh
|
zsh
|
||||||
@@ -84,14 +99,17 @@ in {
|
|||||||
networking.firewall.trustedInterfaces = ["tailscale0"];
|
networking.firewall.trustedInterfaces = ["tailscale0"];
|
||||||
|
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
programs.nm-applet.enable = true;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
openssh.enable = true;
|
openssh.enable = true;
|
||||||
|
|
||||||
syncthing = {
|
syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = defaultUser;
|
user = defaultUser.userName;
|
||||||
dataDir = "/home/${defaultUser}";
|
dataDir = "/home/${defaultUser.userName}";
|
||||||
|
overrideDevices = false;
|
||||||
|
overrideFolders = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
tailscale = {
|
tailscale = {
|
||||||
|
|||||||
@@ -6,14 +6,26 @@
|
|||||||
}: {
|
}: {
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
security.pam.services.gdm.enableGnomeKeyring = true;
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
hardware.opengl.driSupport32Bit = true;
|
hardware.graphics.enable32Bit = true;
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
programs.nm-applet.enable = true;
|
|
||||||
programs.partition-manager.enable = true;
|
programs.partition-manager.enable = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
networkmanager.enable = true;
|
||||||
|
|
||||||
|
firewall.checkReversePath = "loose";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.NetworkManager-wait-online = {
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = ["" "${pkgs.networkmanager}/bin/nm-online -q"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.pam.services.swaylock = {};
|
||||||
|
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
age_identity = {
|
age_identity = {
|
||||||
file = ../../../secrets/age_identity.age;
|
file = ../../../secrets/age_identity.age;
|
||||||
@@ -25,12 +37,37 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
fonts = {
|
||||||
(nerdfonts.override {fonts = ["Iosevka"]; })
|
packages = with pkgs; [
|
||||||
];
|
fraunces
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-emoji
|
||||||
|
nerd-fonts.iosevka
|
||||||
|
ubuntu_font_family
|
||||||
|
];
|
||||||
|
|
||||||
|
fontDir.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
hyprland.enable = true;
|
||||||
|
sway.enable = true;
|
||||||
|
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
mouse = {
|
||||||
|
accelProfile = "flat";
|
||||||
|
accelSpeed = "1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -49,8 +86,8 @@
|
|||||||
)
|
)
|
||||||
];
|
];
|
||||||
extraRules = ''
|
extraRules = ''
|
||||||
# Raspberry Pi Picoprobe
|
# Raspberry Pi Picoprobe
|
||||||
SUBSYSTEM="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE="0666"
|
SUBSYSTEM="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE="0666"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -58,15 +95,7 @@ SUBSYSTEM="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE="0666"
|
|||||||
|
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
layout = "gb";
|
xkb.layout = "gb";
|
||||||
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
mouse = {
|
|
||||||
accelProfile = "flat";
|
|
||||||
accelSpeed = "1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager = {
|
displayManager = {
|
||||||
gdm = {
|
gdm = {
|
||||||
|
|||||||
@@ -1,34 +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 = ["xhci_pci" "ehci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/1c0e1988-4420-4485-bf16-ffb8ec854c69";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/F5EA-A9CB";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
# high-resolution display
|
|
||||||
hardware.video.hidpi.enable = lib.mkDefault true;
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Include the results of the hardware scan.
|
|
||||||
../common
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./tmux.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Force disable the common boot loader
|
|
||||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = lib.mkForce false;
|
|
||||||
|
|
||||||
# Use the GRUB 2 boot loader.
|
|
||||||
boot.loader.grub.enable = true;
|
|
||||||
boot.loader.grub.version = 2;
|
|
||||||
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "dingserver";
|
|
||||||
interfaces.ens3.useDHCP = true;
|
|
||||||
|
|
||||||
firewall.interfaces = {
|
|
||||||
"tailscale0" = {
|
|
||||||
allowedUDPPorts = [41641];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
helix
|
|
||||||
kitty # For terminfo
|
|
||||||
lazygit
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "21.11"; # Did you read the comment?
|
|
||||||
}
|
|
||||||
@@ -1,28 +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 + "/profiles/qemu-guest.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = [];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/f91229ad-de6b-49ad-8858-e49fea85e8a1";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
programs.tmux = {
|
|
||||||
enable = true;
|
|
||||||
keyMode = "vi";
|
|
||||||
terminal = "tmux-256color";
|
|
||||||
escapeTime = 0;
|
|
||||||
baseIndex = 1;
|
|
||||||
historyLimit = 10000;
|
|
||||||
clock24 = true;
|
|
||||||
extraConfig = ''
|
|
||||||
unbind-key -a -T prefix
|
|
||||||
unbind-key -a -T root
|
|
||||||
unbind-key -a -T copy-mode
|
|
||||||
unbind-key -a -T copy-mode-vi
|
|
||||||
|
|
||||||
set -g prefix M-w
|
|
||||||
|
|
||||||
bind q detach
|
|
||||||
bind : command-prompt
|
|
||||||
bind c new-window
|
|
||||||
bind -T root MouseDown1Status select-window -t =
|
|
||||||
|
|
||||||
bind space copy-mode
|
|
||||||
bind -T copy-mode-vi Escape send-keys -X cancel
|
|
||||||
|
|
||||||
bind -T copy-mode-vi Escape send -X cancel
|
|
||||||
bind -T copy-mode-vi k send -X cursor-up
|
|
||||||
bind -T copy-mode-vi j send -X cursor-down
|
|
||||||
bind -T copy-mode-vi h send -X cursor-left
|
|
||||||
bind -T copy-mode-vi l send -X cursor-right
|
|
||||||
|
|
||||||
bind -T copy-mode-vi Space send -X begin-selection
|
|
||||||
bind -T copy-mode-vi y send -X copy-selection-no-clear
|
|
||||||
bind -T copy-mode-vi Enter send -X copy-selection-and-cancel
|
|
||||||
|
|
||||||
set -g mouse on
|
|
||||||
bind -n WheelUpPane copy-mode -e
|
|
||||||
bind -T copy-mode-vi WheelUpPane send -X -N 5 scroll-up
|
|
||||||
bind -T copy-mode-vi WheelDownPane send -X -N 5 scroll-down
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
../common
|
../common
|
||||||
../common/graphical
|
../common/graphical
|
||||||
|
|
||||||
(import ../../modules).dingbox
|
(import ../../modules).elderbug
|
||||||
];
|
];
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
@@ -27,11 +27,14 @@
|
|||||||
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
security.pam.u2f = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
hardware.nvidia.modesetting.enable = true;
|
hardware.nvidia.modesetting.enable = true;
|
||||||
|
|
||||||
networking.hostName = "dingbox"; # Define your hostname.
|
networking.hostName = "elderbug"; # Define your hostname.
|
||||||
networking.interfaces.enp5s0.useDHCP = true;
|
networking.interfaces.enp6s0.useDHCP = true;
|
||||||
networking.interfaces.wlp6s0.useDHCP = true;
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
@@ -39,5 +42,5 @@
|
|||||||
# this value at the release version of the first install of this system.
|
# this value at the release version of the first install of this system.
|
||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "21.05"; # Did you read the comment?
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
}
|
}
|
||||||
42
hosts/elderbug/hardware-configuration.nix
Normal file
42
hosts/elderbug/hardware-configuration.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# 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 = ["xhci_pci" "ehci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-intel"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/1abab84b-47d7-45bb-b31d-e5668f545d7f";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/1F77-6B2D";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
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.enp6s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -1,31 +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 = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/6a362ee7-854b-4a5b-8989-e65af01b9b99";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/C103-FFC1";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
}
|
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
hardware.acpilight.enable = lib.mkDefault true;
|
hardware.acpilight.enable = lib.mkDefault true;
|
||||||
|
|
||||||
hardware.opengl = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
@@ -30,6 +30,8 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "pingbox";
|
hostName = "pingbox";
|
||||||
interfaces.wlp170s0.useDHCP = true;
|
interfaces.wlp170s0.useDHCP = true;
|
||||||
@@ -47,6 +49,11 @@
|
|||||||
PCIE_ASPM_ON_BAT = "powersupersave";
|
PCIE_ASPM_ON_BAT = "powersupersave";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
libinput.touchpad = {
|
||||||
|
naturalScrolling = true;
|
||||||
|
horizontalScrolling = false;
|
||||||
|
tapping = true;
|
||||||
|
};
|
||||||
|
|
||||||
xserver = {
|
xserver = {
|
||||||
dpi = 144;
|
dpi = 144;
|
||||||
@@ -56,12 +63,6 @@
|
|||||||
Option "DRI" "2"
|
Option "DRI" "2"
|
||||||
Option "TearFree" "true"
|
Option "TearFree" "true"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
libinput.touchpad = {
|
|
||||||
naturalScrolling = true;
|
|
||||||
horizontalScrolling = false;
|
|
||||||
tapping = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
logind = {
|
logind = {
|
||||||
|
|||||||
@@ -29,14 +29,8 @@
|
|||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|
||||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
|
||||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
|
||||||
# replicates the default behaviour.
|
|
||||||
networking.useDHCP = lib.mkDefault false;
|
|
||||||
networking.interfaces.wlp170s0.useDHCP = lib.mkDefault true;
|
networking.interfaces.wlp170s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
# high-resolution display
|
|
||||||
hardware.video.hidpi.enable = lib.mkDefault true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@@ -11,23 +12,45 @@
|
|||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../common
|
../common
|
||||||
../common/graphical
|
../common/graphical
|
||||||
|
|
||||||
|
(import ../../modules).sidon
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_6_8;
|
||||||
hostName = "miniding";
|
|
||||||
interfaces.wlp2s0.useDHCP = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
dpi = 144;
|
dpi = 144;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = false;
|
||||||
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "nodev";
|
||||||
|
useOSProber = true;
|
||||||
|
efiSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.hardwareClockInLocalTime = true;
|
||||||
|
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wlr-randr
|
||||||
|
];
|
||||||
|
|
||||||
|
security.pam.u2f = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.opengl.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "sidon"; # Define your hostname.
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
# this value at the release version of the first install of this system.
|
# this value at the release version of the first install of this system.
|
||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "21.05"; # Did you read the comment?
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
}
|
}
|
||||||
46
hosts/sidon/hardware-configuration.nix
Normal file
46
hosts/sidon/hardware-configuration.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-amd"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/1abab84b-47d7-45bb-b31d-e5668f545d7f";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/1F77-6B2D";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
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.br-06c6ce3e0c6d.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.br-e024580aae91.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.tailscale0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp8s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
44
modules/backups/bigding/default.nix
Normal file
44
modules/backups/bigding/default.nix
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
age.secrets = {
|
||||||
|
bigding_backup_s3_creds.file = ../../../secrets/bigding_backup_s3_creds.age;
|
||||||
|
bigding_backup_repo_password.file = ../../../secrets/bigding_backup_repo_password.age;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.restic.backups = {
|
||||||
|
"system" = {
|
||||||
|
initialize = true;
|
||||||
|
passwordFile = config.age.secrets.bigding_backup_repo_password.path;
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "02:00";
|
||||||
|
};
|
||||||
|
repository = "s3:s3.eu-central-003.backblazeb2.com/bigding-backup";
|
||||||
|
environmentFile = config.age.secrets.bigding_backup_s3_creds.path;
|
||||||
|
|
||||||
|
paths = [
|
||||||
|
"/etc/group"
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/NetworkManager/system-connections"
|
||||||
|
"/etc/passwd"
|
||||||
|
"/etc/subgid"
|
||||||
|
"/home"
|
||||||
|
"/root"
|
||||||
|
"/var/lib/prometheus2"
|
||||||
|
"/var/lib/jellyfin"
|
||||||
|
"/var/lib/fail2ban"
|
||||||
|
"/var/lib/matrix-synapse"
|
||||||
|
"/var/lib/golink"
|
||||||
|
"/var/lib/tailscale"
|
||||||
|
"/var/lib/caddy"
|
||||||
|
"/var/backup"
|
||||||
|
];
|
||||||
|
|
||||||
|
backupPrepareCommand = ''
|
||||||
|
${pkgs.postgresql_16}/bin/pg_dumpall --clean -U postgres | ${pkgs.zstd}/bin/zstd --rsyncable > /var/backup/pgdump.sql.zst
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
88
modules/caddy/Caddyfile
Normal file
88
modules/caddy/Caddyfile
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
log {
|
||||||
|
level ERROR
|
||||||
|
}
|
||||||
|
admin off
|
||||||
|
servers {
|
||||||
|
metrics
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
http://localhost:2019 {
|
||||||
|
metrics /metrics
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix.broccoli.town {
|
||||||
|
reverse_proxy /_matrix/* http://localhost:8008
|
||||||
|
reverse_proxy /_synapse/client/* http://localhost:8008
|
||||||
|
}
|
||||||
|
|
||||||
|
syncv3.broccoli.town {
|
||||||
|
reverse_proxy http://localhost:8009
|
||||||
|
}
|
||||||
|
|
||||||
|
broccoli.town:8448 {
|
||||||
|
reverse_proxy http://localhost:8008
|
||||||
|
}
|
||||||
|
|
||||||
|
broccoli.town {
|
||||||
|
header /.well-known/* "Access-Control-Allow-Origin" "*"
|
||||||
|
|
||||||
|
respond /.well-known/matrix/client `{ "m.homeserver": { "base_url": "https://broccoli.town" } }`
|
||||||
|
|
||||||
|
reverse_proxy /_matrix/* http://localhost:8008
|
||||||
|
reverse_proxy /_synapse/client/* http://localhost:8008
|
||||||
|
|
||||||
|
redir / https://chat.broccoli.town
|
||||||
|
}
|
||||||
|
|
||||||
|
chat.broccoli.town {
|
||||||
|
header {
|
||||||
|
X-Frame-Options "SAMEORIGIN"
|
||||||
|
X-XSS-Protection "1; mode=block"
|
||||||
|
X-Content-Type-Options "nosniff"
|
||||||
|
X-Robots-Tag "noindex, noarchive, nofollow"
|
||||||
|
}
|
||||||
|
root * @element@
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
|
||||||
|
danielpatterson.dev {
|
||||||
|
header {
|
||||||
|
proof proven.lol/de4a14
|
||||||
|
}
|
||||||
|
root * /srv/site/danielpatterson.dev
|
||||||
|
encode zstd gzip
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
|
||||||
|
movies.danielpatterson.dev {
|
||||||
|
reverse_proxy localhost:8096
|
||||||
|
}
|
||||||
|
|
||||||
|
elixir.danielpatterson.dev {
|
||||||
|
reverse_proxy localhost:8080
|
||||||
|
}
|
||||||
|
|
||||||
|
git.broccoli.town {
|
||||||
|
reverse_proxy localhost:3030
|
||||||
|
}
|
||||||
|
|
||||||
|
http://bigding:8384 {
|
||||||
|
reverse_proxy localhost:8387
|
||||||
|
}
|
||||||
|
|
||||||
|
bigding.squirrel-clownfish.ts.net {
|
||||||
|
tls {
|
||||||
|
get_certificate tailscale
|
||||||
|
}
|
||||||
|
reverse_proxy localhost:9091
|
||||||
|
}
|
||||||
|
|
||||||
|
http://bigding {
|
||||||
|
reverse_proxy /transmission localhost:9091
|
||||||
|
reverse_proxy /transmission/* localhost:9091
|
||||||
|
handle_path /prometheus/* {
|
||||||
|
reverse_proxy localhost:9090
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,96 +7,30 @@
|
|||||||
|
|
||||||
services.tailscale.permitCertUid = "caddy";
|
services.tailscale.permitCertUid = "caddy";
|
||||||
|
|
||||||
services.caddy = {
|
services.caddy = let
|
||||||
enable = true;
|
catppuccin = builtins.fromJSON (builtins.readFile (pkgs.fetchurl {
|
||||||
virtualHosts = {
|
url = "https://raw.githubusercontent.com/catppuccin/element/main/config.json";
|
||||||
"http://metrics.town" = {
|
hash = "sha256-jaH6E2YO2np3Ewv6JQWbGRiRqsL75rIEJuKfXv95W6Y=";
|
||||||
extraConfig = ''
|
}));
|
||||||
reverse_proxy http://localhost:3000
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"matrix.broccoli.town" = {
|
element = pkgs.element-web.override {
|
||||||
extraConfig = ''
|
conf =
|
||||||
reverse_proxy /_matrix/* http://localhost:8008
|
{
|
||||||
reverse_proxy /_synapse/client/* http://localhost:8008
|
default_server_config."m.homeserver" = {
|
||||||
'';
|
"base_url" = "https://broccoli.town";
|
||||||
};
|
"server_name" = "broccoli.town";
|
||||||
|
};
|
||||||
"broccoli.town:8448" = {
|
}
|
||||||
extraConfig = ''
|
// catppuccin;
|
||||||
reverse_proxy http://localhost:8008
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"broccoli.town" = {
|
|
||||||
extraConfig = ''
|
|
||||||
header /.well-known/* "Access-Control-Allow-Origin" "*"
|
|
||||||
respond /.well-known/matrix/client "{\"m.homeserver\": {\"base_url\": \"https://broccoli.town\"}}"
|
|
||||||
|
|
||||||
reverse_proxy /_matrix/* http://localhost:8008
|
|
||||||
reverse_proxy /_synapse/client/* http://localhost:8008
|
|
||||||
|
|
||||||
redir / https://chat.broccoli.town
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"chat.broccoli.town" = {
|
|
||||||
extraConfig = ''
|
|
||||||
header {
|
|
||||||
X-Frame-Options "SAMEORIGIN"
|
|
||||||
X-XSS-Protection "1; mode=block"
|
|
||||||
X-Content-Type-Options "nosniff"
|
|
||||||
X-Robots-Tag "noindex, noarchive, nofollow"
|
|
||||||
}
|
|
||||||
root * ${
|
|
||||||
pkgs.element-web.override {
|
|
||||||
conf = {
|
|
||||||
default_server_config."m.homeserver" = {
|
|
||||||
"base_url" = "https://broccoli.town";
|
|
||||||
"server_name" = "broccoli.town";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_server
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"danielpatterson.dev" = {
|
|
||||||
extraConfig = ''
|
|
||||||
root * /srv/site/danielpatterson.dev
|
|
||||||
encode zstd gzip
|
|
||||||
file_server
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"movies.danielpatterson.dev" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:8096
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"elixir.danielpatterson.dev" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:8080
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"http://bigding:8384" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:8387
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"bigding.squirrel-clownfish.ts.net" = {
|
|
||||||
extraConfig = ''
|
|
||||||
tls {
|
|
||||||
get_certificate tailscale
|
|
||||||
}
|
|
||||||
reverse_proxy localhost:9091
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config = pkgs.substituteAll {
|
||||||
|
inherit element;
|
||||||
|
src = ./Caddyfile;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
configFile = config;
|
||||||
|
adapter = "caddyfile";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
{
|
{
|
||||||
bigding = {
|
bigding = {
|
||||||
imports = [
|
imports = [
|
||||||
|
./backups/bigding
|
||||||
./caddy
|
./caddy
|
||||||
./dungflix
|
./dungflix
|
||||||
|
./fail2ban
|
||||||
|
./gitea
|
||||||
|
./golink
|
||||||
|
./livebook
|
||||||
./monitoring
|
./monitoring
|
||||||
./synapse
|
./synapse
|
||||||
./golink
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -15,9 +19,10 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
elderbug = {};
|
||||||
|
|
||||||
|
sidon = {};
|
||||||
|
|
||||||
pingbox = {
|
pingbox = {
|
||||||
imports = [
|
|
||||||
./postgres
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,21 +3,23 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
mountdir = "/var/media/dungflix";
|
mountdir = "/var/media/danflix";
|
||||||
|
|
||||||
rclone_config = pkgs.writeText "" ''
|
rclone_config = pkgs.writeText "" ''
|
||||||
[dungflix]
|
[danflix-storage-box]
|
||||||
type = b2
|
type = sftp
|
||||||
|
sftp_md5sum_command = md5sum
|
||||||
|
sftp_sha1sum_command = sha1sum
|
||||||
|
|
||||||
[dungflix-vault]
|
[danflix-crypto]
|
||||||
type = crypt
|
type = crypt
|
||||||
remote = dungflix:dungflix-bucket
|
remote = danflix-storage-box:danflix
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
dungflix_bucket_account_id.file = ../../secrets/dungflix_bucket_account_id.age;
|
danflix_storage_box_crypt_obscured_pw.file = ../../secrets/danflix_storage_box_crypt_obscured_pw.age;
|
||||||
dungflix_bucket_account_key.file = ../../secrets/dungflix_bucket_account_key.age;
|
danflix_hetzner_storage_box_pub_key.file = ../../secrets/danflix_hetzner_storage_box_pub_key.age;
|
||||||
dungflix_crypt_remote_obscured_pass.file = ../../secrets/dungflix_crypt_remote_obscured_pass.age;
|
danflix_env_file.file = ../../secrets/danflix_env_file.age;
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
@@ -25,9 +27,11 @@ in {
|
|||||||
|
|
||||||
transmission = {
|
transmission = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.transmission_3;
|
||||||
|
webHome = pkgs.transmission_3 + /share/transmission/web;
|
||||||
settings = {
|
settings = {
|
||||||
rpc-host-whitelist-enable = true;
|
rpc-host-whitelist-enable = true;
|
||||||
rpc-host-whitelist = "bigding.squirrel-clownfish.ts.net";
|
rpc-host-whitelist = "bigding.squirrel-clownfish.ts.net,bigding";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -40,27 +44,29 @@ in {
|
|||||||
MemoryMax = "1G";
|
MemoryMax = "1G";
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.dungflix-mount = {
|
systemd.services.danflix-mount = {
|
||||||
description = "Mount the Backblaze B2 media store";
|
description = "Mount the Hetzner Storage Box media store";
|
||||||
wantedBy = ["multi-user.target"];
|
wantedBy = ["multi-user.target"];
|
||||||
path = [pkgs.fuse];
|
path = [pkgs.fuse3];
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p -m 777 ${mountdir}
|
mkdir -p -m 777 ${mountdir}
|
||||||
'';
|
'';
|
||||||
|
environment = {
|
||||||
|
"RCLONE_SFTP_KEY_FILE" = config.age.secrets.danflix_hetzner_storage_box_pub_key.path;
|
||||||
|
};
|
||||||
script = ''
|
script = ''
|
||||||
export RCLONE_B2_ACCOUNT=''$(cat ${config.age.secrets.dungflix_bucket_account_id.path})
|
${pkgs.rclone}/bin/rclone --config="${rclone_config}" mount danflix-crypto: ${mountdir} \
|
||||||
export RCLONE_B2_KEY=''$(cat ${config.age.secrets.dungflix_bucket_account_key.path})
|
--vfs-cache-mode full \
|
||||||
export RCLONE_CRYPT_PASSWORD=''$(cat ${config.age.secrets.dungflix_crypt_remote_obscured_pass.path})
|
--vfs-cache-max-age 336h \
|
||||||
${pkgs.rclone}/bin/rclone --config="${rclone_config}" mount dungflix-vault: ${mountdir} \
|
--vfs-cache-max-size 60G \
|
||||||
--transfers 32 \
|
--allow-other \
|
||||||
--vfs-cache-mode full \
|
--no-modtime \
|
||||||
--vfs-cache-max-age 336h \
|
--rc \
|
||||||
--vfs-cache-max-size 200G \
|
--sftp-concurrency 8 \
|
||||||
--allow-other \
|
--checkers 4 \
|
||||||
--no-modtime \
|
--rc-addr=localhost:5572 \
|
||||||
--rc \
|
--rc-no-auth \
|
||||||
--rc-no-auth \
|
-v
|
||||||
-vv
|
|
||||||
'';
|
'';
|
||||||
postStart = ''
|
postStart = ''
|
||||||
sleep 5
|
sleep 5
|
||||||
@@ -68,9 +74,10 @@ in {
|
|||||||
'';
|
'';
|
||||||
postStop = ''
|
postStop = ''
|
||||||
sleep 3
|
sleep 3
|
||||||
fusermount -u ${mountdir}
|
${pkgs.fuse3}/bin/fusermount -u ${mountdir}
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
EnvironmentFile = config.age.secrets.danflix_env_file.path;
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
13
modules/fail2ban/default.nix
Normal file
13
modules/fail2ban/default.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{...}: {
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
maxretry = 5;
|
||||||
|
ignoreIP = [
|
||||||
|
"127.0.0.1/8"
|
||||||
|
"10.0.0.0/8"
|
||||||
|
"172.16.0.0/12"
|
||||||
|
"192.168.0.0/16"
|
||||||
|
"8.8.8.8"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
73
modules/gitea/default.nix
Normal file
73
modules/gitea/default.nix
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
age.secrets = {
|
||||||
|
sendmail_email_key_gitea = {
|
||||||
|
file = ../../secrets/sendmail_email_key_gitea.age;
|
||||||
|
owner = "gitea";
|
||||||
|
group = "gitea";
|
||||||
|
};
|
||||||
|
|
||||||
|
gitea_actions_runner_token = {
|
||||||
|
file = ../../secrets/gitea_actions_runner_token.age;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitea-actions-runner = {
|
||||||
|
instances = {
|
||||||
|
primary = {
|
||||||
|
enable = true;
|
||||||
|
name = "actions-runner";
|
||||||
|
url = config.services.gitea.settings.server.ROOT_URL;
|
||||||
|
tokenFile = config.age.secrets.gitea_actions_runner_token.path;
|
||||||
|
labels = [
|
||||||
|
"ubuntu-latest:docker://node:16-bullseye"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitea = {
|
||||||
|
enable = true;
|
||||||
|
appName = "The Broccoli Patch";
|
||||||
|
database = {
|
||||||
|
type = "sqlite3";
|
||||||
|
};
|
||||||
|
dump = {
|
||||||
|
enable = true;
|
||||||
|
type = "tar.zst";
|
||||||
|
file = "gitea.zip";
|
||||||
|
backupDir = "/var/backup";
|
||||||
|
interval = "01:30";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
ROOT_URL = "https://git.broccoli.town/";
|
||||||
|
HTTP_PORT = 3030;
|
||||||
|
DOMAIN = "git.broccoli.town";
|
||||||
|
};
|
||||||
|
service = {
|
||||||
|
REGISTER_EMAIL_CONFIRM = true;
|
||||||
|
DISABLE_REGISTRATION = true;
|
||||||
|
ENABLE_NOTIFY_MAIL = true;
|
||||||
|
DEFAULT_KEEP_EMAIL_PRIVATE = true;
|
||||||
|
};
|
||||||
|
repository = {
|
||||||
|
ENABLE_PUSH_CREATE_USER = true;
|
||||||
|
};
|
||||||
|
mailer = {
|
||||||
|
ENABLED = true;
|
||||||
|
FROM = "gitea@broccoli.town";
|
||||||
|
SMTP_ADDR = "smtp.sendgrid.net";
|
||||||
|
SMTP_PORT = 587;
|
||||||
|
USER = "apikey";
|
||||||
|
};
|
||||||
|
actions = {
|
||||||
|
ENABLED = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mailerPasswordFile = config.age.secrets.sendmail_email_key_gitea.path;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
{
|
{...}: {
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.golink = {
|
services.golink = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|||||||
14
modules/livebook/default.nix
Normal file
14
modules/livebook/default.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
virtualisation.oci-containers = {
|
||||||
|
backend = "docker";
|
||||||
|
containers = {
|
||||||
|
"livebook" = {
|
||||||
|
image = "ghcr.io/livebook-dev/livebook";
|
||||||
|
ports = ["8080:8080" "8081:8081"];
|
||||||
|
volumes = ["/home/daniel/livebook/data:/data"];
|
||||||
|
user = "${toString config.users.users."daniel".uid}:${toString config.users.groups."users".gid}";
|
||||||
|
environmentFiles = ["/home/daniel/.livebook_env"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,7 +6,12 @@
|
|||||||
}: {
|
}: {
|
||||||
services.grafana = {
|
services.grafana = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {};
|
settings = {
|
||||||
|
server = {
|
||||||
|
http_addr = "127.0.0.1";
|
||||||
|
http_port = 3033;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.prometheus = {
|
services.prometheus = {
|
||||||
@@ -24,6 +29,15 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
job_name = "caddy";
|
||||||
|
scrape_interval = "15s";
|
||||||
|
static_configs = [
|
||||||
|
{
|
||||||
|
targets = ["localhost:2019"];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,12 @@
|
|||||||
in {
|
in {
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.postgresql_16;
|
||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
{
|
|
||||||
name = "matrix-synapse";
|
|
||||||
ensurePermissions = {
|
|
||||||
"DATABASE synapse" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
authentication = ''
|
||||||
|
local all all trust
|
||||||
|
'';
|
||||||
ensureDatabases = [
|
ensureDatabases = [
|
||||||
"synapse"
|
"synapse"
|
||||||
];
|
];
|
||||||
|
|||||||
21
scripts/selecthover
Executable file
21
scripts/selecthover
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURSORPOS=$(hyprctl cursorpos -j)
|
||||||
|
|
||||||
|
X_POS=$(jq '.x' <<< $CURSORPOS)
|
||||||
|
Y_POS=$(jq '.y' <<< $CURSORPOS)
|
||||||
|
|
||||||
|
ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq '.id')
|
||||||
|
|
||||||
|
hyprctl clients -j | jq "$(cat << EOF
|
||||||
|
.[] |
|
||||||
|
select(.workspace.id == $ACTIVE_WORKSPACE) |
|
||||||
|
select(
|
||||||
|
.at[0] <= $X_POS
|
||||||
|
and .at[1] <= $Y_POS
|
||||||
|
and (.at[0] + .size[0] >= $X_POS)
|
||||||
|
and (.at[1] + .size[1] >= $Y_POS)
|
||||||
|
) | .pid
|
||||||
|
EOF
|
||||||
|
)" | tail -n 1
|
||||||
|
|
||||||
48
scripts/swayutils
Executable file
48
scripts/swayutils
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
function move {
|
||||||
|
CURR_WORKSPACE=$(swaymsg -t get_workspaces | jq -r '. | map(select(.focused == true)) | .[0].name')
|
||||||
|
|
||||||
|
echo $CURR_WORKSPACE
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"next")
|
||||||
|
NEW_WORKSPACE=$(expr ${CURR_WORKSPACE} + 1)
|
||||||
|
;;
|
||||||
|
"prev")
|
||||||
|
[ ${CURR_WORKSPACE} -eq 1 ] && exit 0
|
||||||
|
NEW_WORKSPACE=$(expr ${CURR_WORKSPACE} - 1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
swaymsg "move container to workspace ${NEW_WORKSPACE}"
|
||||||
|
swaymsg "workspace ${NEW_WORKSPACE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function focus {
|
||||||
|
CURR_WORKSPACE=$(swaymsg -t get_workspaces | jq -r '. | map(select(.focused == true)) | .[0].name')
|
||||||
|
|
||||||
|
echo $CURR_WORKSPACE
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"next")
|
||||||
|
NEW_WORKSPACE=$(expr ${CURR_WORKSPACE} + 1)
|
||||||
|
;;
|
||||||
|
"prev")
|
||||||
|
[ ${CURR_WORKSPACE} -eq 1 ] && exit 0
|
||||||
|
NEW_WORKSPACE=$(expr ${CURR_WORKSPACE} - 1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
swaymsg "workspace ${NEW_WORKSPACE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"move")
|
||||||
|
move $2
|
||||||
|
;;
|
||||||
|
|
||||||
|
"focus")
|
||||||
|
focus $2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
18
secrets/bigding_backup_repo_password.age
Normal file
18
secrets/bigding_backup_repo_password.age
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 eYYv1Q p2lKm8m7/Kqkcv2OAa1QJ30SmpMRcPE2JIVVMMAapyI
|
||||||
|
rxFk8qX5U2tFVMOnC5bwPbkn67DbZ+rrx4577/2YN3o
|
||||||
|
-> ssh-ed25519 Bp5IaA B4MihkBHyFOLAoTCrma189xstle91PIP1llXfcXw/xA
|
||||||
|
EtOgYylN6wGcOzeXGd+t4rMAtwuzAJPsXU2EorBGKMw
|
||||||
|
-> ssh-ed25519 T/DpgA B7QEsjY0SXgZLD9Tlzy1JcZXVLX6OOnXosgTOtsisRw
|
||||||
|
yzanbQl1c1gBXToGO3trFiAYjj4XJPg/X2U5RdxRXrU
|
||||||
|
-> ssh-ed25519 qMgRFg WsKoCC0piMrxNzlcYRFDqpSDOULXCSY9ymBhHjfwyj0
|
||||||
|
f4+/oTEqO2Fx8/O1rKy+1aGw2uatIJNpZFCwz8f9WAw
|
||||||
|
-> ssh-ed25519 dMZXNw 1jYYtlUP/8no2KjB5No9aIPQwm1u+6ySv+tYdIn0W2I
|
||||||
|
mvDqK645jo7zPjRLuhCyy9nz7GAK+LVa/6Er5yfuPKQ
|
||||||
|
-> ssh-ed25519 70Nt2Q ux4w1776iy3VxBmjGQKA+3Y14FJ8ByGhaGpezPMdrlk
|
||||||
|
iWTL1amQzDBzKRM4mKY2wOgdDwi1OhwNAY7raSesFx8
|
||||||
|
-> \7].}^Ee-grease lKlBD]z~ @ pzb#Y
|
||||||
|
KUqMwST0vaSIY314aYy2zXzCHzMOzbJT4v3yQltQ1UgmmgfFgbYUKTBfqKICcfFx
|
||||||
|
Y3zNnJGXadK8fP2z8phy
|
||||||
|
--- +s2dxNBUCXWaM/gHSDOnaOTDnC0IXTdz79lIdmuDE68
|
||||||
|
&<26>d<EFBFBD>>ϼ*\ZA<5A><41><EFBFBD><EFBFBD>1=<3D><><EFBFBD><EFBFBD><EFBFBD>w<>?Y<><16>n
|
||||||
19
secrets/bigding_backup_s3_creds.age
Normal file
19
secrets/bigding_backup_s3_creds.age
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 eYYv1Q wDo9ZqcS199Yro1WHDNgJdMdHkxtBqOWdE63fPe8RTI
|
||||||
|
akdPFIdAnv+nz9Zbm4PWv3tsC2/2yn4RB9Mv7Wm+nlY
|
||||||
|
-> ssh-ed25519 Bp5IaA +KlqTrICIkPaFx4OsOz3x0av0uIoeDkA0UWV7UkkfG4
|
||||||
|
lIk4Nb7e/xzj3z22IrUZluqWrrLklKg/dqx2XXOMHjQ
|
||||||
|
-> ssh-ed25519 T/DpgA 9AsUq5oLyqgknwgE307UGu7qCGA+Pkk5oLofw5+WbBM
|
||||||
|
GFVIAOIaLyRWx4s/ayCktgJzlVtIQ42wrGLkc+A36Cw
|
||||||
|
-> ssh-ed25519 qMgRFg 85vDW4bZKq94dcvCYT+ICAu6M9MkTd7AhXwWzKCBQTc
|
||||||
|
2fks5tUlKzbDNQHUUeCIbPq/q/Yxv1OdNhdSzaxsmHA
|
||||||
|
-> ssh-ed25519 dMZXNw J7LL3rnlitOYWy/YB/UYqC7Hcwo+c7bk5jFcloOz8U0
|
||||||
|
xAlzpaRrdHHUUipCnepdaipybG+K/plPgwpk2vh9MLs
|
||||||
|
-> ssh-ed25519 70Nt2Q UpCw1D3qQliTTTjn2CjEbaQi8oYvqFTQsHu4Bip7fj4
|
||||||
|
dnGDTeIIg8chPyWwqRxyvW6xcdveLDkQEhQvPofO96I
|
||||||
|
-> z2Nh'{-grease O ;_a
|
||||||
|
TP3riu9VIpcrd34vsqK2DIhGb2sG+554+hwfSww
|
||||||
|
--- qm5o64795oKWg6cl/HrcdFOW6n1l8FEJDPZW76Yyl94
|
||||||
|
2w<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>OLacL<EFBFBD>i<EFBFBD><EFBFBD>P<03>N<EFBFBD>YNg
|
||||||
|
6g&<26><>&#<23>:1,<2C>X<EFBFBD><58><EFBFBD>)<29><>H<EFBFBD>%<12><><EFBFBD>8<><38>s<><73><EFBFBD>w<EFBFBD>U<EFBFBD>fW<66><57>DMA<0E>!Uk<1C><>h<03><><EFBFBD><EFBFBD>ܔ<EFBFBD><11>p<EFBFBD><03>G;p<0F><>BB<42>3<EFBFBD>1<EFBFBD>n<EFBFBD>̪<EFBFBD>p<EFBFBD>V<EFBFBD>.q<>
|
||||||
|
x#pX
|
||||||
BIN
secrets/danflix_env_file.age
Normal file
BIN
secrets/danflix_env_file.age
Normal file
Binary file not shown.
BIN
secrets/danflix_hetzner_storage_box_pub_key.age
Normal file
BIN
secrets/danflix_hetzner_storage_box_pub_key.age
Normal file
Binary file not shown.
BIN
secrets/danflix_storage_box_crypt_obscured_pw.age
Normal file
BIN
secrets/danflix_storage_box_crypt_obscured_pw.age
Normal file
Binary file not shown.
18
secrets/danflix_storage_box_crypt_pw.age
Normal file
18
secrets/danflix_storage_box_crypt_pw.age
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 eYYv1Q olD4OIi8YC5KZN7rVfOcis+OOvmJI27FsXN19tEX5lk
|
||||||
|
493ZDJgwYbzPsthtQtIzzHpVtj9ocje15w9wq5JtHSI
|
||||||
|
-> ssh-ed25519 Bp5IaA FbriZLB/tTQflwwqgMrJUgcMibx6vG+UI841ZjiOmlM
|
||||||
|
l/rutNoo4EnL6qr3wkMNGbDHcIC+CGZgfOcsoSoHCAE
|
||||||
|
-> ssh-ed25519 T/DpgA M+PqxOvScPQU58bYwQqtQaLykzKW5fIibAfoKNDPUHM
|
||||||
|
1l2ZBg3naogcGeQhzDgonuPEFA+zjL/tZBCMwa6rIDY
|
||||||
|
-> ssh-ed25519 qMgRFg e3SJOsknOfqOdyqXvqTJ3+xo6ueWYSEyicj34+ufjDs
|
||||||
|
oOGb2SzADeydEtCO5eDyYGxJG0ZCLseAwslR3E6LsUs
|
||||||
|
-> ssh-ed25519 dMZXNw N/D2EAYhGZkwtiDDf+0Krb/pOVjG66PLLBdeSAWqo1k
|
||||||
|
vs2fnH6CAcyvoDuPTmgjmMkUcIK9VHmQGfHOcpy71hU
|
||||||
|
-> ssh-ed25519 70Nt2Q tr8TufTCMfU+8KtIdkFjyczVRiKUvFZ6rwGOPYUObVY
|
||||||
|
+akmkrm1+GIONvR3dR+Sj9d3Ajj+PqzYVn4SWWEKmo8
|
||||||
|
-> *_-grease |uf+h
|
||||||
|
NP9bxjUd03lJnmXKlH7wx0+1E2fQit01FsnXk8MtCzbSzf3DZUi5pHk0KAOUIpOE
|
||||||
|
uu81CrNA4J7InBlX56qNDqGMuQ
|
||||||
|
--- vE2U4+bAt/AmUZdwD05PYzzxeVl6IVGHjEOgNfqfAWI
|
||||||
|
<EFBFBD><EFBFBD> <20><>k1K<11>q<EFBFBD><71><EFBFBD>_<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Tp8w1<77>0<<3C>hjX<6A>Q<EFBFBD><51><EFBFBD><EFBFBD>Օ<EFBFBD><D595>
|
||||||
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 eYYv1Q NfUs85CEft9jTh44fnAnN/PcdOQ2mdEByoNkyUCNrWQ
|
|
||||||
MvA9BA3RoV2DRovXvlJzbY1E5lXdNSvkV82gtNCh6PA
|
|
||||||
-> ssh-ed25519 Bp5IaA lSrjQhwuY8ZiwVC82azl8rqN0/WasK4ZGRq9ohWDAVQ
|
|
||||||
CPBY/Eq7MJ6Em+h6ro3HtfRqn9gn5BR3z//dA+SHjxw
|
|
||||||
-> ssh-ed25519 T/DpgA cv9z3Ihe/GydTPMSXXiNFxNFQwVYyZBDO1TVGCygoAo
|
|
||||||
t4yCcPpM2Z7sqN55GbXUuLE0hvD7jXU1dCqOHcDT400
|
|
||||||
-> ssh-ed25519 qMgRFg jAcoxq4wyu8rYQGrt/rKUFSwp0Hz4QL4asEuJdA6nl0
|
|
||||||
K+bqqoheMofX+iwcZYCE4Y558m/kzqUHyieaDQ8jJgw
|
|
||||||
-> ssh-ed25519 dMZXNw imeVQpYX9guxDPulzYYeHedYxZsmTngy+jgpQulRo1Y
|
|
||||||
kpYgC6nzrhZsXkYHAl1273fwZ345towB1K84riX+Y+Q
|
|
||||||
-> ssh-ed25519 GzHGXw fgC690PsBF/lgRF9zwZqhvRkrK9Pm65tcZUWKzxookE
|
|
||||||
haaWg3MNhKl1+CodRS+4MzwRVsKgVaox/Kf2YnmBNVY
|
|
||||||
-> ssh-ed25519 70Nt2Q 46a4VTEFv80jOpVl/54J3sJhBUS4G1XqrAoPReb3gjs
|
|
||||||
ihr26HDZ40F6WJEqJmQgkjAUnnrz0Tc0ck26yLW0wOY
|
|
||||||
-> @c_kw-grease Au)%'xOy C/ A$Rd
|
|
||||||
X7eu3QrQyKDn
|
|
||||||
--- pqgV/pzN+qsLtrbL2382/1056D925Ko5y5Oe3vwWmoc
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>3<>|<7C><><EFBFBD>wzb<7A><62>I<EFBFBD>0/<2F>:U<>.m(/<<3C>x<EFBFBD>P<03><><19><>o<EFBFBD><19><>U0<>\
|
|
||||||
<EFBFBD>'p;
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 eYYv1Q IGdoQqDAFgxgWVlqEpZJvG9gE2KCKoXpMmvburw8Fhk
|
|
||||||
66QE8kwl63xnvYj7nwmT6qR6Jj8fCfrzf/iAB7U+AU4
|
|
||||||
-> ssh-ed25519 Bp5IaA n3lgDi3bCV0t/TOjqdsNTRxnAlCs0GxoPPjpnaeIrzQ
|
|
||||||
Ip98hCbmz4W8+NY85DWv/nHHmLANfwo0rNaI2N6N0kQ
|
|
||||||
-> ssh-ed25519 T/DpgA VGDYHrof8rh7WTZ3DOrTIVcfyKkVbLJTL8bDDSfS4C8
|
|
||||||
3o3A3jfTL8L0dbpv9Xe3Oy93U3XkkjhRX0tqQtSZDtw
|
|
||||||
-> ssh-ed25519 qMgRFg Jchcic5fvRBviRtbdUyMl76Ea0aGW/7tRWkTt2habAg
|
|
||||||
91DpFYKWqA4rawbzkEEkLNRay352vkuU0srVBwYFkco
|
|
||||||
-> ssh-ed25519 dMZXNw Sa+BZdY+YLrlQkX7G7VSF/k6oVAVo17zSgXbq1OiqR8
|
|
||||||
xu894gtzqTFNDyvzwtejNw3WkMnVQLcpIaVF0CgVODI
|
|
||||||
-> ssh-ed25519 GzHGXw 2WNPWILkiCseWMN5GHpfNs9T566GV6dUxqse+YVXTSA
|
|
||||||
W1MT/CHcZKefKb+7UK8PWwDP0cDCOU1JKpiXTk0vY10
|
|
||||||
-> ssh-ed25519 70Nt2Q QnL9dyxLSG64ncFRCoLOEWtBI1y0qRDj0a0TESW4bXY
|
|
||||||
kHHQA72guLb7YYbU7/CTawylq1uNzcgNRwpS2z2WzeA
|
|
||||||
-> hg3-grease
|
|
||||||
O2O1JT79k6zrpiuexN5i/1eP5cTzjOPjHS3BCvprA/JxSxUNrV+a1RFFmLb6OTad
|
|
||||||
8cR0wG66tw6xaYQLvxWiKCzh2AqXkQ
|
|
||||||
--- tkk6rwRnFGtrrl6Z0kDoqS/NPV4hFhlKvwJ52zGuy+U
|
|
||||||
B<><42><EFBFBD>]$So<><6F>e(kV8ca<63><61><EFBFBD>LG<4C><47>(<28>ȗF<C897><10><><EFBFBD>Y<EFBFBD>mɒ<6D>h<EFBFBD><68>1<10>ď<13>y<15><><EFBFBD><18>L<EFBFBD><1F>ѩzJ!gD<67>{n<>U
|
|
||||||
<EFBFBD>N0<1A>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 eYYv1Q HzNRL7zq6Lrum/2tHKjacsv1Y0LlXmgOZNWLXAk2lWg
|
|
||||||
no6sDeinVG3TPu3UVOEDauVrHqmJGzMgHB6Dr6UNrDE
|
|
||||||
-> ssh-ed25519 Bp5IaA 9UvpQHut2BFiXIkR+q1A/Ik4AYvwghddk9Fi5+rw4mM
|
|
||||||
Zs/ggJfYh/epVFRiJEnvICceCnlZBifeGLRDI/Eosj0
|
|
||||||
-> ssh-ed25519 T/DpgA k40Cb32UbfjsApxi0ccO4u8xP12uWpTot02BSCUvP08
|
|
||||||
LfXJLsRtNklus14Pg3TsDt9MMbRi9SrH7uvefK9Hxso
|
|
||||||
-> ssh-ed25519 qMgRFg iS9incss6tduf58gxdA8R5dqnwpXFy9PB8ZwNVWbvyc
|
|
||||||
e4KTD8Z4fUeaLAiqKGQXi/AIkyjlYEUNraHSB+TFhiM
|
|
||||||
-> ssh-ed25519 dMZXNw DKMC+uCWkUEOF2fFL6o41UuggAzcWHwM5TwYzw+5sjQ
|
|
||||||
zu/YdI+pzudPH7azRqwmDvf81m48EZYK9c3UcVPTaVI
|
|
||||||
-> ssh-ed25519 GzHGXw OX7ylQzBuyzErkhOpiUrBPhlGx/TrAgK5KuI6yEo4EY
|
|
||||||
DxeylfaVBkDEWxxRz3KCr5UZsREfqXwoAnC5tAdyFL4
|
|
||||||
-> ssh-ed25519 70Nt2Q pcGNeTUV7utxnH5a4H78YOvr8cpORGkQ7p8hh569zz4
|
|
||||||
STlbScxYbWXV3B8T+2PSiLfGkjKudkXwkRG67ZHlwtE
|
|
||||||
-> s-grease
|
|
||||||
FHLY7TFsme9Wd43MaAzpXiolSX0
|
|
||||||
--- b2uVM8dc8IXnmG4fb/DjApdEJ3yngTDN8d7J0mbYYYw
|
|
||||||
B<EFBFBD>љ<><13><>V<><56><EFBFBD><19><>EM<45><4D>N<EFBFBD>M<EFBFBD>=ݫ<>?]<5D><>A%<01><><EFBFBD><EFBFBD><EFBFBD>5<05>2/<2F>Xv5`[
|
|
||||||
BIN
secrets/gitea_actions_runner_token.age
Normal file
BIN
secrets/gitea_actions_runner_token.age
Normal file
Binary file not shown.
@@ -24,4 +24,12 @@ in {
|
|||||||
"dungflix_crypt_remote_pass.age".publicKeys = users ++ [system2 system4];
|
"dungflix_crypt_remote_pass.age".publicKeys = users ++ [system2 system4];
|
||||||
"age_identity.age".publicKeys = users ++ [system1 system3];
|
"age_identity.age".publicKeys = users ++ [system1 system3];
|
||||||
"minisign_private_key.age".publicKeys = users ++ [system1 system3];
|
"minisign_private_key.age".publicKeys = users ++ [system1 system3];
|
||||||
|
"bigding_backup_s3_creds.age".publicKeys = users ++ [system4];
|
||||||
|
"bigding_backup_repo_password.age".publicKeys = users ++ [system4];
|
||||||
|
"sendmail_email_key_gitea.age".publicKeys = users ++ [system4];
|
||||||
|
"gitea_actions_runner_token.age".publicKeys = users ++ [system4];
|
||||||
|
"danflix_hetzner_storage_box_pub_key.age".publicKeys = users ++ [system4];
|
||||||
|
"danflix_storage_box_crypt_pw.age".publicKeys = users ++ [system4];
|
||||||
|
"danflix_storage_box_crypt_obscured_pw.age".publicKeys = users ++ [system4];
|
||||||
|
"danflix_env_file.age".publicKeys = users ++ [system4];
|
||||||
}
|
}
|
||||||
|
|||||||
17
secrets/sendmail_email_key_gitea.age
Normal file
17
secrets/sendmail_email_key_gitea.age
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 eYYv1Q XtRSlxUK8enDmGPLuaNTtRLfPcAw2adI0rg7tyrIsVg
|
||||||
|
wqS2sot8VBkg8AEIVT+8nqp/zQrgx60aO5+EDKAS6Eo
|
||||||
|
-> ssh-ed25519 Bp5IaA xxKUriiEdSH1oG9/vdyjEtyOq7b1zSBY6RyDr13OVUE
|
||||||
|
sWVBSJtX/TNBxINHv4NqmN4yPjNteoMyPH9vZRHp9t4
|
||||||
|
-> ssh-ed25519 T/DpgA MnEwHXMOJIX6EL4j24QX1GD047lQvCLHKSDPvwEXYj0
|
||||||
|
bMVQvcub7BE5kQ7nipQGAg0DLsHhA6y9pQxjG0vLDYo
|
||||||
|
-> ssh-ed25519 qMgRFg nLCDG0cPUGw0EHebVawxraulglOVEdwUWh/c5CFf6CM
|
||||||
|
MagTjYCuIyNF895Kk0Y2uDxZf3u9X5ZKatNPSfENZOA
|
||||||
|
-> ssh-ed25519 dMZXNw FZ2sXIfl1yxkvfuNC6njE/OrH8IptIo7MOwNeHeSrWQ
|
||||||
|
YBC1LUbStFBKX/rHIgtb70+W6mmdk7XOBDnrZBTeEyU
|
||||||
|
-> ssh-ed25519 70Nt2Q hUwnRFHLeArYMmIKh0ObeL+rh3PKgvIOZJjfhXH+fwU
|
||||||
|
vFasj2ysflk5M+KyGfoAkBrk+X0GcphlK8uQFFTvwB0
|
||||||
|
-> C"2am-grease e )q x;Ej
|
||||||
|
gbqZ94TuSRUzfQ
|
||||||
|
--- o0NjU4u5RB1RSAeOGhud8VJSLLpbZSoU7suslTA3rbs
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>$<>`<60>B<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD> J<>n,<2C><>Cu<43>t<EFBFBD>iW<69>l<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD>$/}p<>CU<43><55>n{*Cf<43><66><EFBFBD>>oʁ<6F><17><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<17><><EFBFBD>'<02>}å8R9<52><39><EFBFBD><EFBFBD><08>I6
|
||||||
12
users/configs/desktop/default.nix
Normal file
12
users/configs/desktop/default.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
imports = [
|
||||||
|
# ./i3
|
||||||
|
# ./i3status-rust
|
||||||
|
# ./polybar
|
||||||
|
./hyprland
|
||||||
|
./river
|
||||||
|
./sway
|
||||||
|
./tofi
|
||||||
|
./waybar
|
||||||
|
];
|
||||||
|
}
|
||||||
220
users/configs/desktop/hyprland/default.nix
Normal file
220
users/configs/desktop/hyprland/default.nix
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
closer = pkgs.writeShellApplication {
|
||||||
|
name = "closer";
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [jq xdotool];
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then
|
||||||
|
xdotool getactivewindow windowunmap
|
||||||
|
else
|
||||||
|
hyprctl dispatch killactive ""
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
swaybg
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/hypr/macchiato.conf" = {
|
||||||
|
source = ./macchiato.conf;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman-applet.enable = true;
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.hyprland;
|
||||||
|
xwayland = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
extraConfig =
|
||||||
|
(builtins.readFile ./${hostname}.conf)
|
||||||
|
+ ''
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
|
||||||
|
# Execute your favorite apps at launch
|
||||||
|
exec-once = waybar
|
||||||
|
exec-once = swaybg -i ~/wallpapers/wallpaper.jpg
|
||||||
|
|
||||||
|
# Source a file (multi-file configs)
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
source = ./macchiato.conf
|
||||||
|
|
||||||
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
input {
|
||||||
|
kb_layout = gb
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options = caps:escape
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 2
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = yes
|
||||||
|
middle_button_emulation = yes
|
||||||
|
scroll_factor = 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
accel_profile = flat
|
||||||
|
sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 10
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = $green
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 10
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
drop_shadow = yes
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 3
|
||||||
|
col.shadow = rgba(1a1a1aee)
|
||||||
|
|
||||||
|
dim_inactive = true
|
||||||
|
dim_strength = 0.1
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 1, myBezier
|
||||||
|
animation = windowsOut, 1, 2, default, popin 80%
|
||||||
|
animation = border, 0, 2, default
|
||||||
|
animation = borderangle, 0, 2, default
|
||||||
|
animation = fade, 0, 2, default
|
||||||
|
animation = workspaces, 1, 1, default
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = yes # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
new_is_master = true
|
||||||
|
}
|
||||||
|
|
||||||
|
gestures {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
workspace_swipe = true
|
||||||
|
workspace_swipe_fingers = 4
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
disable_hyprland_logo = true
|
||||||
|
}
|
||||||
|
|
||||||
|
xwayland {
|
||||||
|
force_zero_scaling = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example windowrule v1
|
||||||
|
# windowrule = float, ^(kitty)$
|
||||||
|
# Example windowrule v2
|
||||||
|
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, return, exec, kitty
|
||||||
|
bind = $mainMod, Q, exec, ${closer}/bin/closer
|
||||||
|
bind = $mainMod, D, exec, tofi-drun --drun-launch=true
|
||||||
|
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)"
|
||||||
|
|
||||||
|
bind = $mainMod SHIFT, P, exit
|
||||||
|
|
||||||
|
# Move focus with mainMod + vim keys
|
||||||
|
bind = $mainMod, H, movefocus, l
|
||||||
|
bind = $mainMod, L, movefocus, r
|
||||||
|
bind = $mainMod, K, movefocus, u
|
||||||
|
bind = $mainMod, J, movefocus, d
|
||||||
|
|
||||||
|
# Move focus with mainMod + vim keys
|
||||||
|
bind = $mainMod, left, movewindow, l
|
||||||
|
bind = $mainMod, right, movewindow, r
|
||||||
|
bind = $mainMod, up, movewindow, u
|
||||||
|
bind = $mainMod, down, movewindow, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
bind = $mainMod, U, movetoworkspace, -1
|
||||||
|
bind = $mainMod, I, movetoworkspace, +1
|
||||||
|
|
||||||
|
bind = $mainMod SHIFT, space, togglefloating,
|
||||||
|
|
||||||
|
bind = $mainMod, F, fullscreen,
|
||||||
|
|
||||||
|
bind=$mainMod, escape, exec, swaylock -i ~/wallpapers/lock.png
|
||||||
|
|
||||||
|
binde=, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bind=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
|
||||||
|
binde=, XF86MonBrightnessUp, exec, xbacklight -inc 10
|
||||||
|
binde=, XF86MonBrightnessDown, exec, xbacklight -dec 10
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
bind = $mainMod, mouse:274, togglefloating
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
users/configs/desktop/hyprland/elderbug.conf
Normal file
7
users/configs/desktop/hyprland/elderbug.conf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
monitor=,preferred,auto,1.25
|
||||||
|
|
||||||
|
$mainMod = CTRL + SHIFT + ALT
|
||||||
|
|
||||||
|
bind = $mainMod + SUPER, Q, exit,
|
||||||
|
bind = $mainMod, M, workspace, -1
|
||||||
|
bind = $mainMod, comma, workspace, +1
|
||||||
75
users/configs/desktop/hyprland/pingbox.conf
Normal file
75
users/configs/desktop/hyprland/pingbox.conf
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
monitor=eDP-1,preferred,auto,1.33
|
||||||
|
monitor=,preferred,auto,1.25
|
||||||
|
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
bind = $mainMod + SHIFT + CTRL, Q, exit,
|
||||||
|
bind = $mainMod + CTRL, H, workspace, -1
|
||||||
|
bind = $mainMod + CTRL, L, workspace, +1
|
||||||
|
bind = $mainMod + SHIFT, H, movetoworkspace, -1
|
||||||
|
bind = $mainMod + SHIFT, L, movetoworkspace, +1
|
||||||
|
|
||||||
|
# Add super as an alternative mainMod for when I plug in a keyboard
|
||||||
|
$altMod = CTRL + SHIFT + ALT
|
||||||
|
|
||||||
|
bind = $altMod + SUPER, Q, exit,
|
||||||
|
bind = $altMod, M, workspace, -1
|
||||||
|
bind = $altMod, comma, workspace, +1
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $altMod, return, exec, kitty
|
||||||
|
bind = $altMod, Q, exec, ${closer}/bin/closer
|
||||||
|
bind = $altMod, D, exec, tofi-drun --drun-launch=true
|
||||||
|
bind = $altMod SHIFT, S, exec, grim -g "$(slurp)"
|
||||||
|
|
||||||
|
# Move focus with altMod + vim keys
|
||||||
|
bind = $altMod, H, movefocus, l
|
||||||
|
bind = $altMod, L, movefocus, r
|
||||||
|
bind = $altMod, K, movefocus, u
|
||||||
|
bind = $altMod, J, movefocus, d
|
||||||
|
|
||||||
|
# Move focus with altMod + vim keys
|
||||||
|
bind = $altMod, left, movewindow, l
|
||||||
|
bind = $altMod, right, movewindow, r
|
||||||
|
bind = $altMod, up, movewindow, u
|
||||||
|
bind = $altMod, down, movewindow, d
|
||||||
|
|
||||||
|
# Switch workspaces with altMod + [0-9]
|
||||||
|
bind = $altMod, 1, workspace, 1
|
||||||
|
bind = $altMod, 2, workspace, 2
|
||||||
|
bind = $altMod, 3, workspace, 3
|
||||||
|
bind = $altMod, 4, workspace, 4
|
||||||
|
bind = $altMod, 5, workspace, 5
|
||||||
|
bind = $altMod, 6, workspace, 6
|
||||||
|
bind = $altMod, 7, workspace, 7
|
||||||
|
bind = $altMod, 8, workspace, 8
|
||||||
|
bind = $altMod, 9, workspace, 9
|
||||||
|
bind = $altMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with altMod + SHIFT + [0-9]
|
||||||
|
bind = $altMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $altMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $altMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $altMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $altMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $altMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $altMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $altMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $altMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $altMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
bind = $altMod, U, movetoworkspace, -1
|
||||||
|
bind = $altMod, I, movetoworkspace, +1
|
||||||
|
|
||||||
|
bind = $altMod SHIFT, space, togglefloating,
|
||||||
|
|
||||||
|
bind=$altMod, escape, exec, swaylock -i ~/wallpapers/lock.png
|
||||||
|
|
||||||
|
# Move/resize windows with altMod + LMB/RMB and dragging
|
||||||
|
bindm = $altMod, mouse:272, movewindow
|
||||||
|
bindm = $altMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
general {
|
||||||
|
gaps_out = 5
|
||||||
|
}
|
||||||
|
|
||||||
10
users/configs/desktop/hyprland/sidon.conf
Normal file
10
users/configs/desktop/hyprland/sidon.conf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
monitor=HDMI-A-2,3840x2160@60.0,3072x0,1.25
|
||||||
|
monitor=DP-3,3840x2160@59.997002,0x0,1.25
|
||||||
|
|
||||||
|
workspace=1,monitor:DP-3
|
||||||
|
|
||||||
|
$mainMod = CTRL + SHIFT + ALT
|
||||||
|
|
||||||
|
bind = $mainMod + SUPER, Q, exit,
|
||||||
|
bind = $mainMod, M, workspace, -1
|
||||||
|
bind = $mainMod, comma, workspace, +1
|
||||||
@@ -64,7 +64,7 @@ in {
|
|||||||
fonts = {
|
fonts = {
|
||||||
size = 11.0;
|
size = 11.0;
|
||||||
};
|
};
|
||||||
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs /home/daniel/.config/i3status-rust/config-main.toml";
|
# statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs /home/daniel/.config/i3status-rust/config-main.toml";
|
||||||
position = "top";
|
position = "top";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -205,14 +205,14 @@ in {
|
|||||||
modifier = mod;
|
modifier = mod;
|
||||||
|
|
||||||
startup = [
|
startup = [
|
||||||
{
|
# {
|
||||||
command = "$HOME/bin/scripts/flower";
|
# command = "$HOME/bin/scripts/flower";
|
||||||
always = true;
|
# always = true;
|
||||||
}
|
# }
|
||||||
{
|
# {
|
||||||
command = "feh --bg-fill $HOME/wallpapers/wallpaper.jpg";
|
# command = "feh --bg-fill $HOME/wallpapers/wallpaper.jpg";
|
||||||
always = false;
|
# always = false;
|
||||||
}
|
# }
|
||||||
];
|
];
|
||||||
|
|
||||||
terminal = "kitty";
|
terminal = "kitty";
|
||||||
79
users/configs/desktop/river/default.nix
Normal file
79
users/configs/desktop/river/default.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wlr-randr
|
||||||
|
];
|
||||||
|
wayland.windowManager.river = {
|
||||||
|
enable = false;
|
||||||
|
package = pkgs.river.overrideAttrs (finalAttrs: previousAttrs: {
|
||||||
|
version = "2024-11-04";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitea {
|
||||||
|
domain = "codeberg.org";
|
||||||
|
owner = "river";
|
||||||
|
repo = "river";
|
||||||
|
rev = "14e941bae16b1ca478c32198c131c4297157f888";
|
||||||
|
hash = "sha256-uACc9Cb1tSw3I0fMlEMX74NfU+Tg3It74tb+nc51AZ4=";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
(pkgs.lib.lists.remove pkgs.wlroots_0_16 previousAttrs.buildInputs)
|
||||||
|
++ [
|
||||||
|
pkgs.wlroots
|
||||||
|
pkgs.makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
previousAttrs.postInstall
|
||||||
|
+ ''
|
||||||
|
wrapProgram "$out/bin/river" --set WLR_NO_HARDWARE_CURSORS 1 --set WLR_RENDERER vulkan
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
extraConfig =
|
||||||
|
(builtins.readFile ./${hostname})
|
||||||
|
+ ''
|
||||||
|
riverctl map normal $MAINMOD D spawn 'tofi-drun --drun-launch=true'
|
||||||
|
riverctl map normal $MAINMOD Return spawn 'kitty'
|
||||||
|
riverctl map normal $MAINMOD+Shift p exit
|
||||||
|
riverctl map normal $MAINMOD q close
|
||||||
|
riverctl map normal $MAINMOD escape spawn 'swaylock -i ~/wallpapers/lock.png'
|
||||||
|
|
||||||
|
riverctl map normal $MAINMOD l focus-view next
|
||||||
|
riverctl map normal $MAINMOD h focus-view previous
|
||||||
|
|
||||||
|
riverctl map normal $MAINMOD m swap next
|
||||||
|
riverctl map normal $MAINMOD COMMA swap previous
|
||||||
|
|
||||||
|
riverctl map -repeat normal None XF86AudioLowerVolume spawn 'wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-'
|
||||||
|
riverctl map -repeat normal None XF86AudioRaiseVolume spawn 'wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+'
|
||||||
|
riverctl map normal None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
|
||||||
|
|
||||||
|
riverctl map -repeat normal None XF86MonBrightnessUp spawn 'xbacklight -inc 10'
|
||||||
|
riverctl map -repeat normal None XF86MonBrightnessDown spawn 'xbacklight -dec 10'
|
||||||
|
|
||||||
|
riverctl spawn rivertile
|
||||||
|
riverctl default-layout rivertile
|
||||||
|
|
||||||
|
riverctl input 'pointer-2362-628-PIXA3854:00_093A:0274_Touchpad' accel-profile flat
|
||||||
|
riverctl input 'pointer-2362-628-PIXA3854:00_093A:0274_Touchpad' natural-scroll enabled
|
||||||
|
riverctl input 'pointer-2362-628-PIXA3854:00_093A:0274_Touchpad' tap enabled
|
||||||
|
|
||||||
|
riverctl keyboard-layout -options caps:escape gb
|
||||||
|
|
||||||
|
for i in $(seq 1 9); do
|
||||||
|
tags=$((1 << ($i - 1)))
|
||||||
|
|
||||||
|
riverctl map normal $MAINMOD $i set-focused-tags $tags
|
||||||
|
|
||||||
|
riverctl map normal $MAINMOD+Shift $i toggle-view-tags $tags
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
3
users/configs/desktop/river/pingbox
Normal file
3
users/configs/desktop/river/pingbox
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
MAINMOD="Super"
|
||||||
|
|
||||||
|
wlr-randr --output eDP-1 --scale 1.33
|
||||||
3
users/configs/desktop/river/sidon
Normal file
3
users/configs/desktop/river/sidon
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
MAINMOD="Control+Alt+Shift"
|
||||||
|
|
||||||
|
wlr-randr --output DP-2 --pos 0,0 --output HDMI-A-2 --pos 3840,0
|
||||||
148
users/configs/desktop/sway/default.nix
Normal file
148
users/configs/desktop/sway/default.nix
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
mod = "Mod4";
|
||||||
|
hyper = "Control+Shift+Mod1";
|
||||||
|
in {
|
||||||
|
home = {
|
||||||
|
file = {
|
||||||
|
"bin/swayutils" = {
|
||||||
|
source = ../../../../scripts/swayutils;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
startup = [
|
||||||
|
{ command = "swaybg -i ~/wallpapers/wallpaper.jpg"; }
|
||||||
|
];
|
||||||
|
bars = [
|
||||||
|
{
|
||||||
|
command = "waybar";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input = {
|
||||||
|
"*" = {
|
||||||
|
xkb_layout = "gb";
|
||||||
|
xkb_options = "caps:escape";
|
||||||
|
tap = "enabled";
|
||||||
|
natural_scroll = if hostname == "sidon" then "disabled" else "enabled";
|
||||||
|
};
|
||||||
|
"type:pointer" = {
|
||||||
|
accel_profile = "flat";
|
||||||
|
pointer_accel = "-0.2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
output = {
|
||||||
|
eDP-1 = {
|
||||||
|
scale = "1.33";
|
||||||
|
};
|
||||||
|
|
||||||
|
DP-3 = {
|
||||||
|
position = "0 0";
|
||||||
|
scale = "1.33";
|
||||||
|
};
|
||||||
|
HDMI-A-1 = {
|
||||||
|
scale = "1.33";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
modifier = mod;
|
||||||
|
keybindings = {
|
||||||
|
"${mod}+Return" = "exec ghostty";
|
||||||
|
"${mod}+q" = "kill";
|
||||||
|
"${mod}+d" = "exec tofi-drun --drun-launch=true";
|
||||||
|
"${hyper}+Return" = "exec ghostty";
|
||||||
|
"${hyper}+q" = "kill";
|
||||||
|
"${hyper}+d" = "exec tofi-drun --drun-launch=true";
|
||||||
|
|
||||||
|
"${mod}+Shift+s" = "exec grim -g \"$(slurp)\"";
|
||||||
|
|
||||||
|
"${mod}+Shift+Space" = "floating toggle";
|
||||||
|
"${mod}+Space" = "focus mode_toggle";
|
||||||
|
|
||||||
|
"${mod}+h" = "focus left";
|
||||||
|
"${mod}+j" = "focus down";
|
||||||
|
"${mod}+k" = "focus up";
|
||||||
|
"${mod}+l" = "focus right";
|
||||||
|
|
||||||
|
"${hyper}+h" = "focus left";
|
||||||
|
"${hyper}+j" = "focus down";
|
||||||
|
"${hyper}+k" = "focus up";
|
||||||
|
"${hyper}+l" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+Left" = "movewindow left";
|
||||||
|
"${mod}+Up" = "movewindow up";
|
||||||
|
"${mod}+Down" = "movewindow down";
|
||||||
|
"${mod}+Right" = "movewindow right";
|
||||||
|
|
||||||
|
"${hyper}+Left" = "movewindow left";
|
||||||
|
"${hyper}+Up" = "movewindow up";
|
||||||
|
"${hyper}+Down" = "movewindow down";
|
||||||
|
"${hyper}+Right" = "movewindow right";
|
||||||
|
|
||||||
|
"${mod}+Shift+h" = "exec ${config.home.homeDirectory}/bin/swayutils move prev";
|
||||||
|
"${mod}+Shift+l" = "exec ${config.home.homeDirectory}/bin/swayutils move next";
|
||||||
|
|
||||||
|
"${mod}+Control+h" = "exec ${config.home.homeDirectory}/bin/swayutils focus prev";
|
||||||
|
"${mod}+Control+l" = "exec ${config.home.homeDirectory}/bin/swayutils focus next";
|
||||||
|
|
||||||
|
"${hyper}+u" = "exec ${config.home.homeDirectory}/bin/swayutils move prev";
|
||||||
|
"${hyper}+i" = "exec ${config.home.homeDirectory}/bin/swayutils move next";
|
||||||
|
|
||||||
|
"${hyper}+m" = "exec ${config.home.homeDirectory}/bin/swayutils focus prev";
|
||||||
|
"${hyper}+Comma" = "exec ${config.home.homeDirectory}/bin/swayutils focus next";
|
||||||
|
|
||||||
|
"${hyper}+y" = "move left";
|
||||||
|
"${hyper}+o" = "move right";
|
||||||
|
|
||||||
|
"${mod}+Tab" = "workspace back_and_forth";
|
||||||
|
"${hyper}+Tab" = "workspace back_and_forth";
|
||||||
|
|
||||||
|
"${mod}+b" = "split h";
|
||||||
|
"${mod}+v" = "split v";
|
||||||
|
|
||||||
|
"${hyper}+b" = "split h";
|
||||||
|
"${hyper}+v" = "split v";
|
||||||
|
|
||||||
|
"${mod}+p" = "scratchpad show, resize set 80 ppt 80ppt, move position center";
|
||||||
|
"${hyper}+p" = "scratchpad show, resize set 80 ppt 80ppt, move position center";
|
||||||
|
|
||||||
|
"${mod}+Escape" = "exec swaylock -i ~/wallpapers/lock.png";
|
||||||
|
"${hyper}+Escape" = "exec swaylock -i ~/wallpapers/lock.png";
|
||||||
|
|
||||||
|
"${hyper}+f" = "fullscreen toggle";
|
||||||
|
|
||||||
|
"XF86AudioLowerVolume" = "exec wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-";
|
||||||
|
"XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||||
|
"XF86AudioRaiseVolume" = "exec wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||||
|
|
||||||
|
"XF86MonBrightnessUp" = "exec xbacklight -inc 10";
|
||||||
|
"XF86MonBrightnessDown" = "exec xbacklight -dec 10";
|
||||||
|
"XF86AudioPrev" = "exec playerctl previous";
|
||||||
|
"XF86AudioPlay" = "exec playerctl play-pause";
|
||||||
|
"XF86AudioNext" = "exec playerctl next";
|
||||||
|
|
||||||
|
"${mod}+Shift+0" = "move container to workspace 0";
|
||||||
|
"${mod}+Shift+1" = "move container to workspace 1";
|
||||||
|
"${mod}+Shift+2" = "move container to workspace 2";
|
||||||
|
"${mod}+Shift+3" = "move container to workspace 3";
|
||||||
|
"${mod}+Shift+4" = "move container to workspace 4";
|
||||||
|
"${mod}+Shift+5" = "move container to workspace 5";
|
||||||
|
"${mod}+Shift+6" = "move container to workspace 6";
|
||||||
|
"${mod}+Shift+7" = "move container to workspace 7";
|
||||||
|
"${mod}+Shift+8" = "move container to workspace 8";
|
||||||
|
"${mod}+Shift+9" = "move container to workspace 9";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
bindgesture swipe:3:right exec ${config.home.homeDirectory}/bin/swayutils focus prev
|
||||||
|
bindgesture swipe:3:left exec ${config.home.homeDirectory}/bin/swayutils focus next
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
24
users/configs/desktop/tofi/default.nix
Normal file
24
users/configs/desktop/tofi/default.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
tofi
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".config/tofi/config".text = ''
|
||||||
|
font = ${pkgs.iosevka}/share/fonts/truetype/iosevka-regular.ttf
|
||||||
|
font-size = 16
|
||||||
|
hint-font = false
|
||||||
|
|
||||||
|
text-color = #cad3f5
|
||||||
|
background-color = #24273a
|
||||||
|
|
||||||
|
selection-color = #24273a
|
||||||
|
selection-background = #a6da95
|
||||||
|
|
||||||
|
outline-width = 0
|
||||||
|
border-width = 3
|
||||||
|
border-color = #a6da95
|
||||||
|
|
||||||
|
corner-radius = 15
|
||||||
|
|
||||||
|
'';
|
||||||
|
}
|
||||||
91
users/configs/desktop/waybar/config.json
Normal file
91
users/configs/desktop/waybar/config.json
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"modules-left": [
|
||||||
|
"sway/workspaces",
|
||||||
|
"sway/window"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"clock"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"backlight",
|
||||||
|
"pulseaudio/slider",
|
||||||
|
"pulseaudio",
|
||||||
|
"network",
|
||||||
|
"battery",
|
||||||
|
"tray"
|
||||||
|
],
|
||||||
|
"wlr/taskbar": {
|
||||||
|
"format": "{icon} {title}"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"tooltip-format": "{ipaddr}",
|
||||||
|
"format-wifi": "{icon} {essid}",
|
||||||
|
"format-ethernet": " {ifname}",
|
||||||
|
"format-icons": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-charging": " {capacity}%",
|
||||||
|
"format-icons": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"backlight": {
|
||||||
|
"format": "{percent}% {icon}",
|
||||||
|
"format-icons": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sway/workspaces": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"urgent": "",
|
||||||
|
"active": "",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"disable-scroll-wraparound": true,
|
||||||
|
"disable-markup": false,
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"DP-2": ["sidebar"],
|
||||||
|
"HDMI-A-2": [2,3,4,5,6]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"interval": 1,
|
||||||
|
"format-alt": "{:%a, %d. %b %H:%M:%S}"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-muted": " MUTED",
|
||||||
|
"format-icons": {
|
||||||
|
"default": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"max-volume": 100,
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,5 +10,8 @@
|
|||||||
settings = {
|
settings = {
|
||||||
main = lib.importJSON ./config.json;
|
main = lib.importJSON ./config.json;
|
||||||
};
|
};
|
||||||
|
style = ./style.css;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.file.".config/waybar/macchiato.css".source = ./macchiato.css;
|
||||||
}
|
}
|
||||||
37
users/configs/desktop/waybar/macchiato.css
Normal file
37
users/configs/desktop/waybar/macchiato.css
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Catppuccin Mocha palette
|
||||||
|
* Maintainer: rubyowo
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color base #24273a;
|
||||||
|
@define-color mantle #1e2030;
|
||||||
|
@define-color crust #181926;
|
||||||
|
|
||||||
|
@define-color text #cad3f5;
|
||||||
|
@define-color subtext0 #a5adcb;
|
||||||
|
@define-color subtext1 #b8c0e0;
|
||||||
|
|
||||||
|
@define-color surface0 #363a4f;
|
||||||
|
@define-color surface1 #494d64;
|
||||||
|
@define-color surface2 #5b6078;
|
||||||
|
|
||||||
|
@define-color overlay0 #6e738d;
|
||||||
|
@define-color overlay1 #8087a2;
|
||||||
|
@define-color overlay2 #939ab7;
|
||||||
|
|
||||||
|
@define-color blue #8aadf4;
|
||||||
|
@define-color lavender #b7bdf8;
|
||||||
|
@define-color sapphire #7dc4e4;
|
||||||
|
@define-color sky #91d7e3;
|
||||||
|
@define-color teal #8bd5ca;
|
||||||
|
@define-color green #a6da95;
|
||||||
|
@define-color yellow #eed49f;
|
||||||
|
@define-color peach #f5a97f;
|
||||||
|
@define-color maroon #ee99a0;
|
||||||
|
@define-color red #ed8796;
|
||||||
|
@define-color mauve #c6a0f6;
|
||||||
|
@define-color pink #f5bde6;
|
||||||
|
@define-color flamingo #f0c6c6;
|
||||||
|
@define-color rosewater #f4dbd6;
|
||||||
77
users/configs/desktop/waybar/style.css
Normal file
77
users/configs/desktop/waybar/style.css
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
@import "macchiato.css";
|
||||||
|
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
min-height: 10px;
|
||||||
|
font-family: "Iosevka Nerd Font Propo", "Font Awesome";
|
||||||
|
font-size: 16px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
margin-top: 5px;
|
||||||
|
background: @base;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: @text;
|
||||||
|
border-bottom: 2px solid @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button label {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
box-shadow: inherit;
|
||||||
|
text-shadow: inherit;
|
||||||
|
|
||||||
|
background: @surface0;
|
||||||
|
border-color: @surface1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: @green;
|
||||||
|
background: @surface1;
|
||||||
|
border-color: currentcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: @base;
|
||||||
|
background: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.discharging {
|
||||||
|
color: @base;
|
||||||
|
background: @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray, #battery, #backlight, #pulseaudio, #network {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.ethernet, #network.wifi {
|
||||||
|
color: @base;
|
||||||
|
background: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disabled, #network.disconnected {
|
||||||
|
color: @base;
|
||||||
|
background: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
color: @base;
|
||||||
|
background: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
background: @red;
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./alacritty
|
|
||||||
./helix
|
./helix
|
||||||
./kitty
|
./kitty
|
||||||
./neovim
|
./nb
|
||||||
./nushell
|
./nvim
|
||||||
|
./wezterm
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
23
users/configs/system/helix/config/config.toml
Normal file
23
users/configs/system/helix/config/config.toml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
theme = "catppuccin_custom"
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
cursorline = true
|
||||||
|
bufferline = "always"
|
||||||
|
line-number = "relative"
|
||||||
|
|
||||||
|
[editor.cursor-shape]
|
||||||
|
insert = "bar"
|
||||||
|
|
||||||
|
[editor.lsp]
|
||||||
|
auto-signature-help = false
|
||||||
|
|
||||||
|
[keys.normal.space]
|
||||||
|
"space" = "file_picker"
|
||||||
|
|
||||||
|
[keys.normal.space.b]
|
||||||
|
d = ":buffer-close"
|
||||||
|
b = "buffer_picker"
|
||||||
|
|
||||||
|
[keys.normal]
|
||||||
|
L = "goto_next_buffer"
|
||||||
|
H = "goto_previous_buffer"
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
inherits = "catppuccin_macchiato"
|
||||||
|
|
||||||
|
"namespace" = { fg = "yellow" }
|
||||||
|
|
||||||
|
"variable.other.member" = "peach"
|
||||||
|
|
||||||
|
"string.special.symbol" = { fg = "flamingo" }
|
||||||
|
"string.special" = { fg = "pink" }
|
||||||
|
|
||||||
|
"attribute" = { fg = "teal", modifiers = ["italic"] }
|
||||||
81
users/configs/system/kitty/catppuccin.conf
Normal file
81
users/configs/system/kitty/catppuccin.conf
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# vim:ft=kitty
|
||||||
|
|
||||||
|
## name: Catppuccin Kitty Macchiato
|
||||||
|
## author: Catppuccin Org
|
||||||
|
## license: MIT
|
||||||
|
## upstream: https://github.com/catppuccin/kitty/blob/main/macchiato.conf
|
||||||
|
## blurb: Soothing pastel theme for the high-spirited!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# The basic colors
|
||||||
|
foreground #CAD3F5
|
||||||
|
background #24273A
|
||||||
|
selection_foreground #24273A
|
||||||
|
selection_background #F4DBD6
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
cursor #F4DBD6
|
||||||
|
cursor_text_color #24273A
|
||||||
|
|
||||||
|
# URL underline color when hovering with mouse
|
||||||
|
url_color #F4DBD6
|
||||||
|
|
||||||
|
# Kitty window border colors
|
||||||
|
active_border_color #B7BDF8
|
||||||
|
inactive_border_color #6E738D
|
||||||
|
bell_border_color #EED49F
|
||||||
|
|
||||||
|
# OS Window titlebar colors
|
||||||
|
wayland_titlebar_color system
|
||||||
|
macos_titlebar_color system
|
||||||
|
|
||||||
|
# Tab bar colors
|
||||||
|
active_tab_foreground #181926
|
||||||
|
active_tab_background #C6A0F6
|
||||||
|
inactive_tab_foreground #CAD3F5
|
||||||
|
inactive_tab_background #1E2030
|
||||||
|
tab_bar_background #181926
|
||||||
|
tab_bar_margin_color #181926
|
||||||
|
|
||||||
|
# Colors for marks (marked text in the terminal)
|
||||||
|
mark1_foreground #24273A
|
||||||
|
mark1_background #B7BDF8
|
||||||
|
mark2_foreground #24273A
|
||||||
|
mark2_background #C6A0F6
|
||||||
|
mark3_foreground #24273A
|
||||||
|
mark3_background #7DC4E4
|
||||||
|
|
||||||
|
# The 16 terminal colors
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 #494D64
|
||||||
|
color8 #5B6078
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #ED8796
|
||||||
|
color9 #ED8796
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #A6DA95
|
||||||
|
color10 #A6DA95
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #EED49F
|
||||||
|
color11 #EED49F
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #8AADF4
|
||||||
|
color12 #8AADF4
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #F5BDE6
|
||||||
|
color13 #F5BDE6
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #8BD5CA
|
||||||
|
color14 #8BD5CA
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 #B8C0E0
|
||||||
|
color15 #A5ADCB
|
||||||
102
users/configs/system/kitty/default.nix
Normal file
102
users/configs/system/kitty/default.nix
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
wrap_gl = program: let
|
||||||
|
name = lib.strings.getName program.name;
|
||||||
|
in
|
||||||
|
pkgs.symlinkJoin {
|
||||||
|
name = name;
|
||||||
|
paths = [
|
||||||
|
(pkgs.writeShellScriptBin name ''
|
||||||
|
${pkgs.nixgl.nixGLIntel}/bin/nixGLIntel ${program}/bin/${name} $@
|
||||||
|
'')
|
||||||
|
program
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
package =
|
||||||
|
if hostname == "deck"
|
||||||
|
then (wrap_gl pkgs.kitty)
|
||||||
|
else pkgs.kitty;
|
||||||
|
in {
|
||||||
|
home.file.".config/kitty/catppuccin.conf" = {
|
||||||
|
source = ./catppuccin.conf;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.shellAliases = {
|
||||||
|
s = "kitty +kitten ssh";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
name = "Iosevka Nerd Font";
|
||||||
|
};
|
||||||
|
package = package;
|
||||||
|
keybindings = {
|
||||||
|
# Windows/Panes
|
||||||
|
"kitty_mod+enter" = "new_window_with_cwd";
|
||||||
|
|
||||||
|
"kitty_mod+h" = "neighboring_window left";
|
||||||
|
"kitty_mod+j" = "neighboring_window down";
|
||||||
|
"kitty_mod+k" = "neighboring_window up";
|
||||||
|
"kitty_mod+l" = "neighboring_window right";
|
||||||
|
|
||||||
|
"kitty_mod+r" = "start_resizing_window";
|
||||||
|
|
||||||
|
# Layouts
|
||||||
|
"kitty_mod+n" = "goto_layout tall:full_size=${
|
||||||
|
if hostname == "pingbox"
|
||||||
|
then "1"
|
||||||
|
else "2"
|
||||||
|
}";
|
||||||
|
"kitty_mod+m" = "goto_layout fat";
|
||||||
|
|
||||||
|
# Tabs
|
||||||
|
"kitty_mod+t" = "new_tab";
|
||||||
|
"kitty_mod+w" = "close_tab";
|
||||||
|
"kitty_mod+f" = "toggle_layout stack";
|
||||||
|
|
||||||
|
"kitty_mod+left" = "previous_tab";
|
||||||
|
"kitty_mod+right" = "next_tab";
|
||||||
|
|
||||||
|
# Clipboard
|
||||||
|
"ctrl+shift+c" = "copy_to_clipboard";
|
||||||
|
"ctrl+shift+v" = "paste_from_clipboard";
|
||||||
|
|
||||||
|
# Font Size
|
||||||
|
"kitty_mod+equal" = "change_font_size current +2.0";
|
||||||
|
"kitty_mod+minus" = "change_font_size current -2.0";
|
||||||
|
"kitty_mod+backspace" = "change_font_size current 0";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
"include" = "catppuccin.conf";
|
||||||
|
"scrollback_lines" = 50000;
|
||||||
|
|
||||||
|
"shell_integration" = "enabled no-cursor";
|
||||||
|
|
||||||
|
"allow_remote_control" = "yes";
|
||||||
|
|
||||||
|
"cursor_shape" = "underline";
|
||||||
|
"cursor_blink_interval" = 0;
|
||||||
|
|
||||||
|
"disable_ligatures" = "always";
|
||||||
|
|
||||||
|
"enabled_layouts" = "tall,fat,stack";
|
||||||
|
|
||||||
|
"enable_audio_bell" = "no";
|
||||||
|
|
||||||
|
"tab_bar_margin_width" = "10";
|
||||||
|
"tab_bar_margin_height" = "0 1";
|
||||||
|
|
||||||
|
"tab_bar_edge" = "top";
|
||||||
|
"tab_bar_style" = "powerline";
|
||||||
|
"tab_powerline_style" = "slanted";
|
||||||
|
|
||||||
|
"clear_all_shortcuts" = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
users/configs/system/nb/default.nix
Normal file
12
users/configs/system/nb/default.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ack
|
||||||
|
bat
|
||||||
|
imagemagick
|
||||||
|
nb
|
||||||
|
nmap
|
||||||
|
pandoc
|
||||||
|
ripgrep
|
||||||
|
w3m
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -58,7 +58,7 @@ let-env NU_PLUGIN_DIRS = [
|
|||||||
($nu.config-path | path dirname | path join 'plugins')
|
($nu.config-path | path dirname | path join 'plugins')
|
||||||
]
|
]
|
||||||
|
|
||||||
let-env EDITOR = "hx"
|
let-env EDITOR = "nvim"
|
||||||
|
|
||||||
# To add entries to PATH (on Windows you might use Path), you can use the following pattern:
|
# To add entries to PATH (on Windows you might use Path), you can use the following pattern:
|
||||||
# let-env PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
|
# let-env PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
|
||||||
20
users/configs/system/nvim/default.nix
Normal file
20
users/configs/system/nvim/default.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
nvim = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "nvim";
|
||||||
|
src = pkgs.fetchFromGitea {
|
||||||
|
domain = "git.broccoli.town";
|
||||||
|
owner = "dp";
|
||||||
|
repo = "nvim";
|
||||||
|
rev = "c25c1db32f9a6e441e142553cc7a4774e3293c64";
|
||||||
|
hash = "sha256-dxFHAO1f9AL95llgi1b+A0Is9BXemq/7Ab6mFj/XcM0=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r * $out/
|
||||||
|
rm $out/lazy-lock.json
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
programs.neovim.enable = true;
|
||||||
|
}
|
||||||
11
users/configs/system/wezterm/default.nix
Normal file
11
users/configs/system/wezterm/default.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{config, ...}: {
|
|
||||||
imports = [
|
|
||||||
# ./i3
|
|
||||||
# ./i3status-rust
|
|
||||||
# ./polybar
|
|
||||||
./hyprland
|
|
||||||
./waybar
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".age/age.txt" = {
|
|
||||||
source = config.lib.file.mkOutOfStoreSymlink "/run/agenix/age_identity";
|
|
||||||
};
|
|
||||||
".minisign/minisign.key" = {
|
|
||||||
source = config.lib.file.mkOutOfStoreSymlink "/run/agenix/minisign_private_key";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
hostname,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
swaybg
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/hypr/macchiato.conf" = {
|
|
||||||
source = ./macchiato.conf;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.hyprland;
|
|
||||||
xwayland = {
|
|
||||||
enable = true;
|
|
||||||
hidpi = true;
|
|
||||||
};
|
|
||||||
nvidiaPatches = true;
|
|
||||||
extraConfig = (builtins.readFile ./${hostname}.conf) + (builtins.readFile ./hyprland.conf);
|
|
||||||
};
|
|
||||||
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
|
|
||||||
# Execute your favorite apps at launch
|
|
||||||
exec-once = waybar
|
|
||||||
exec-once = swaybg -i ~/wallpapers/wallpaper.jpg
|
|
||||||
|
|
||||||
# Source a file (multi-file configs)
|
|
||||||
# source = ~/.config/hypr/myColors.conf
|
|
||||||
source = ./macchiato.conf
|
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input {
|
|
||||||
kb_layout = gb
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options = caps:escape
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 2
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
middle_button_emulation = yes
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
accel_profile = flat
|
|
||||||
sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 10
|
|
||||||
border_size = 2
|
|
||||||
col.active_border = $green
|
|
||||||
col.inactive_border = rgba(595959aa)
|
|
||||||
|
|
||||||
layout = dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
rounding = 10
|
|
||||||
blur = yes
|
|
||||||
blur_size = 3
|
|
||||||
blur_passes = 1
|
|
||||||
blur_new_optimizations = on
|
|
||||||
|
|
||||||
drop_shadow = yes
|
|
||||||
shadow_range = 4
|
|
||||||
shadow_render_power = 3
|
|
||||||
col.shadow = rgba(1a1a1aee)
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
|
|
||||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
|
|
||||||
animation = windows, 1, 3, myBezier
|
|
||||||
animation = windowsOut, 1, 3, default, popin 80%
|
|
||||||
animation = border, 1, 3, default
|
|
||||||
animation = borderangle, 1, 3, default
|
|
||||||
animation = fade, 1, 3, default
|
|
||||||
animation = workspaces, 1, 3, default
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = yes # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_is_master = true
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
workspace_swipe = off
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example per-device config
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
|
||||||
device:epic mouse V1 {
|
|
||||||
sensitivity = -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example windowrule v1
|
|
||||||
# windowrule = float, ^(kitty)$
|
|
||||||
# Example windowrule v2
|
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, return, exec, kitty
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod, D, exec, wofi --show drun
|
|
||||||
bind = $mainMod SHIFT, S, exec, grim -g $(slurp)
|
|
||||||
|
|
||||||
# Move focus with mainMod + vim keys
|
|
||||||
bind = $mainMod, H, movefocus, l
|
|
||||||
bind = $mainMod, L, movefocus, r
|
|
||||||
bind = $mainMod, K, movefocus, u
|
|
||||||
bind = $mainMod, J, movefocus, d
|
|
||||||
|
|
||||||
# Move focus with mainMod + vim keys
|
|
||||||
bind = $mainMod, left, movewindow, l
|
|
||||||
bind = $mainMod, right, movewindow, r
|
|
||||||
bind = $mainMod, up, movewindow, u
|
|
||||||
bind = $mainMod, down, movewindow, d
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
bind = $mainMod, U, movetoworkspace, -1
|
|
||||||
bind = $mainMod, I, movetoworkspace, +1
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, space, togglefloating,
|
|
||||||
|
|
||||||
binde=, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
bind=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
||||||
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
|
|
||||||
binde=, XF86MonBrightnessUp, exec, xbacklight -inc 10
|
|
||||||
binde=, XF86MonBrightnessDown, exec, xbacklight -dec 10
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
monitor=,preferred,auto,1.5
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
bind = $mainMod + SHIFT + CTRL, Q, exit,
|
|
||||||
bind = $mainMod + CTRL, H, workspace, -1
|
|
||||||
bind = $mainMod + CTRL, L, workspace, +1
|
|
||||||
bind = $mainMod + SHIFT, H, movetoworkspace, -1
|
|
||||||
bind = $mainMod + SHIFT, L, movetoworkspace, +1
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"modules-left": ["wlr/workspaces", "hyprland/window"],
|
|
||||||
"modules-center": ["clock"],
|
|
||||||
"modules-right": [
|
|
||||||
"backlight",
|
|
||||||
"pulseaudio",
|
|
||||||
"network",
|
|
||||||
"battery",
|
|
||||||
"tray"
|
|
||||||
],
|
|
||||||
"hyprland/window": {
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
|
|
||||||
},
|
|
||||||
"bat": {
|
|
||||||
|
|
||||||
},
|
|
||||||
"backlight": {
|
|
||||||
"format": "{percent}% {icon}",
|
|
||||||
"format-icons": ["", ""]
|
|
||||||
},
|
|
||||||
"wlr/workspaces": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format-alt": "{:%a, %d. %b %H:%M}"
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"default": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"max-volume": 100,
|
|
||||||
"on-click": "pavucontrol"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
theme = "dracula"
|
|
||||||
|
|
||||||
[editor]
|
|
||||||
mouse = false
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# Author : Sebastian Zivota <loewenheim@mailbox.org>
|
|
||||||
"comment" = { fg = "comment" }
|
|
||||||
"constant" = { fg = "purple" }
|
|
||||||
"constant.character.escape" = { fg = "pink" }
|
|
||||||
"function" = { fg = "green" }
|
|
||||||
"keyword" = { fg = "pink" }
|
|
||||||
"operator" = { fg = "pink" }
|
|
||||||
"punctuation" = { fg = "foreground" }
|
|
||||||
"string" = { fg = "yellow" }
|
|
||||||
"string.regexp" = { fg = "red" }
|
|
||||||
"tag" = { fg = "pink" }
|
|
||||||
"type" = { fg = "cyan", modifiers = ["italic"] }
|
|
||||||
"type.enum.variant" = { fg = "foreground", modifiers = ["italic"] }
|
|
||||||
"variable" = { fg = "foreground" }
|
|
||||||
"variable.builtin" = { fg = "cyan", modifiers = ["italic"] }
|
|
||||||
"variable.parameter" = { fg ="orange", modifiers = ["italic"] }
|
|
||||||
|
|
||||||
"diff.plus" = { fg = "green" }
|
|
||||||
"diff.delta" = { fg = "orange" }
|
|
||||||
"diff.minus" = { fg = "red" }
|
|
||||||
|
|
||||||
"ui.background" = { fg = "foreground", bg = "background" }
|
|
||||||
"ui.cursor" = { fg = "background", bg = "orange", modifiers = ["dim"] }
|
|
||||||
"ui.cursor.match" = { fg = "green", modifiers = ["underlined"] }
|
|
||||||
"ui.cursor.primary" = { fg = "background", bg = "cyan", modifiers = ["dim"] }
|
|
||||||
"ui.help" = { fg = "foreground", bg = "background_dark" }
|
|
||||||
"ui.linenr" = { fg = "comment" }
|
|
||||||
"ui.linenr.selected" = { fg = "foreground" }
|
|
||||||
"ui.menu" = { fg = "foreground", bg = "background_dark" }
|
|
||||||
"ui.menu.selected" = { fg = "cyan", bg = "background_dark" }
|
|
||||||
"ui.popup" = { fg = "foreground", bg = "background_dark" }
|
|
||||||
"ui.selection" = { fg = "background", bg = "purple", modifiers = ["dim"] }
|
|
||||||
"ui.selection.primary" = { fg = "background", bg = "pink" }
|
|
||||||
"ui.statusline" = { fg = "foreground", bg = "background_dark" }
|
|
||||||
"ui.statusline.inactive" = { fg = "comment", bg = "background_dark" }
|
|
||||||
"ui.text" = { fg = "foreground" }
|
|
||||||
"ui.text.focus" = { fg = "cyan" }
|
|
||||||
"ui.window" = { fg = "foreground" }
|
|
||||||
|
|
||||||
"error" = { fg = "red" }
|
|
||||||
"warning" = { fg = "cyan" }
|
|
||||||
|
|
||||||
[palette]
|
|
||||||
background = "#282a36"
|
|
||||||
background_dark = "#21222c"
|
|
||||||
foreground = "#f8f8f2"
|
|
||||||
comment = "#6272a4"
|
|
||||||
red = "#ff5555"
|
|
||||||
orange = "#ffb86c"
|
|
||||||
yellow = "#f1fa8c"
|
|
||||||
green = "#50fa7b"
|
|
||||||
purple = "#bd93f9"
|
|
||||||
cyan = "#8be9fd"
|
|
||||||
pink = "#ff79c6"
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
package = pkgs.iosevka;
|
|
||||||
name = "Iosevka Nerd Font Complete";
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
"include" = "catppuccin.conf";
|
|
||||||
"scrollback_lines" = 50000;
|
|
||||||
|
|
||||||
"shell_integration" = "enabled no-cursor";
|
|
||||||
|
|
||||||
"cursor_shape" = "underline";
|
|
||||||
"cursor_blink_interval" = 0;
|
|
||||||
|
|
||||||
"bold_font" = "Iosevka Nerd Font Complete Bold";
|
|
||||||
|
|
||||||
"disable_ligatures" = "always";
|
|
||||||
|
|
||||||
"enable_audio_bell" = "no";
|
|
||||||
# "foreground" = "#f8f8f2";
|
|
||||||
# "background" = "#282a36";
|
|
||||||
# "selection_foreground" = "#ffffff";
|
|
||||||
# "selection_background" = "#44475a";
|
|
||||||
#
|
|
||||||
# "url_color" = "#8be9fd";
|
|
||||||
#
|
|
||||||
# # black
|
|
||||||
# "color0" = "#21222c";
|
|
||||||
# "color8" = "#6272a4";
|
|
||||||
#
|
|
||||||
# # red
|
|
||||||
# "color1" = "#ff5555";
|
|
||||||
# "color9" = "#ff6e6e";
|
|
||||||
#
|
|
||||||
# # green
|
|
||||||
# "color2" = "#50fa7b";
|
|
||||||
# "color10" = "#69ff94";
|
|
||||||
#
|
|
||||||
# # yellow
|
|
||||||
# "color3" = "#f1fa8c";
|
|
||||||
# "color11" = "#ffffa5";
|
|
||||||
#
|
|
||||||
# # blue
|
|
||||||
# "color4" = "#bd93f9";
|
|
||||||
# "color12" = "#d6acff";
|
|
||||||
#
|
|
||||||
# # magenta
|
|
||||||
# "color5" = "#ff79c6";
|
|
||||||
# "color13" = "#ff92df";
|
|
||||||
#
|
|
||||||
# # cyan
|
|
||||||
# "color6" = "#8be9fd";
|
|
||||||
# "color14" = "#a4ffff";
|
|
||||||
#
|
|
||||||
# # white
|
|
||||||
# "color7" = "#f8f8f2";
|
|
||||||
# "color15" = "#ffffff";
|
|
||||||
#
|
|
||||||
# # Cursor colors
|
|
||||||
# "cursor" = "#f8f8f2";
|
|
||||||
# "cursor_text_color" = "background";
|
|
||||||
#
|
|
||||||
# # Tab bar colors
|
|
||||||
# "active_tab_foreground" = "#282a36";
|
|
||||||
# "active_tab_background" = "#f8f8f2";
|
|
||||||
# "inactive_tab_foreground" = "#282a36";
|
|
||||||
# "inactive_tab_background" = "#6272a4";
|
|
||||||
#
|
|
||||||
# # Marks
|
|
||||||
# "mark1_foreground" = "#282a36";
|
|
||||||
# "mark1_background" = "#ff5555";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -24,13 +24,16 @@
|
|||||||
cliPackages = with pkgs; [
|
cliPackages = with pkgs; [
|
||||||
age
|
age
|
||||||
direnv
|
direnv
|
||||||
elixir
|
elixir_1_15
|
||||||
elixir_ls
|
elixir-ls
|
||||||
entr
|
entr
|
||||||
erlang
|
erlang_26
|
||||||
|
gnumake
|
||||||
go
|
go
|
||||||
gopls
|
gopls
|
||||||
|
lua-language-server
|
||||||
minisign
|
minisign
|
||||||
|
nb
|
||||||
nodejs
|
nodejs
|
||||||
oh-my-zsh
|
oh-my-zsh
|
||||||
(
|
(
|
||||||
@@ -48,17 +51,23 @@
|
|||||||
rust-analyzer
|
rust-analyzer
|
||||||
unzip
|
unzip
|
||||||
zip
|
zip
|
||||||
|
zigpkgs.master
|
||||||
];
|
];
|
||||||
|
|
||||||
guiPackages = with pkgs; [
|
guiPackages = with pkgs; [
|
||||||
_1password
|
_1password
|
||||||
_1password-gui
|
_1password-gui
|
||||||
|
calibre
|
||||||
discord
|
discord
|
||||||
feh
|
feh
|
||||||
|
fraunces
|
||||||
|
ghostty
|
||||||
|
gimp
|
||||||
grim
|
grim
|
||||||
iosevka
|
iosevka
|
||||||
idea
|
idea
|
||||||
jellyfin-mpv-shim
|
inkscape
|
||||||
|
# jellyfin-mpv-shim
|
||||||
mpv
|
mpv
|
||||||
obsidian
|
obsidian
|
||||||
pamixer
|
pamixer
|
||||||
@@ -66,9 +75,10 @@
|
|||||||
playerctl
|
playerctl
|
||||||
slurp
|
slurp
|
||||||
spotify
|
spotify
|
||||||
|
swaylock
|
||||||
udiskie
|
udiskie
|
||||||
|
wezterm
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wofi
|
|
||||||
xclip
|
xclip
|
||||||
zathura
|
zathura
|
||||||
];
|
];
|
||||||
@@ -77,10 +87,10 @@
|
|||||||
in {
|
in {
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
./configs/system
|
../configs/system
|
||||||
]
|
]
|
||||||
++ lib.optionals (!headless) [
|
++ lib.optionals (!headless) [
|
||||||
./configs/desktop
|
../configs/desktop
|
||||||
]
|
]
|
||||||
++ lib.optionals (builtins.pathExists ./host-specific/${hostname}) [
|
++ lib.optionals (builtins.pathExists ./host-specific/${hostname}) [
|
||||||
./host-specific/${hostname}
|
./host-specific/${hostname}
|
||||||
@@ -152,23 +162,20 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
gui.theme = {
|
gui.theme = {
|
||||||
selectedLineBgColor = [ "reverse" ];
|
selectedLineBgColor = ["reverse"];
|
||||||
selectedRangeBgColor = [ "reverse" ];
|
selectedRangeBgColor = ["reverse"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
starship.enable = false;
|
starship.enable = true;
|
||||||
|
|
||||||
vscode.enable = true;
|
vscode.enable = true;
|
||||||
|
|
||||||
zsh = {
|
zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableAutosuggestions = true;
|
autosuggestion.enable = true;
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
if [ -n "$TMUX" ]; then
|
|
||||||
setopt ignoreeof
|
|
||||||
fi
|
|
||||||
eval "$(direnv hook zsh)"
|
eval "$(direnv hook zsh)"
|
||||||
'';
|
'';
|
||||||
oh-my-zsh = {
|
oh-my-zsh = {
|
||||||
|
|||||||
14
users/daniel/host-specific/elderbug/default.nix
Normal file
14
users/daniel/host-specific/elderbug/default.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.file = {
|
||||||
|
"wallpapers" = {
|
||||||
|
source = ./wallpapers;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.kitty.font.size = 14;
|
||||||
|
}
|
||||||
BIN
users/daniel/host-specific/elderbug/wallpapers/lock.png
Normal file
BIN
users/daniel/host-specific/elderbug/wallpapers/lock.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 835 KiB |
BIN
users/daniel/host-specific/elderbug/wallpapers/wallpaper.jpg
Normal file
BIN
users/daniel/host-specific/elderbug/wallpapers/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -15,7 +15,6 @@
|
|||||||
programs.kitty.font.size = 12;
|
programs.kitty.font.size = 12;
|
||||||
|
|
||||||
services.picom = {
|
services.picom = {
|
||||||
enable = true;
|
|
||||||
vSync = true;
|
vSync = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
14
users/daniel/host-specific/sidon/default.nix
Normal file
14
users/daniel/host-specific/sidon/default.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.file = {
|
||||||
|
"wallpapers" = {
|
||||||
|
source = ./wallpapers;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.kitty.font.size = 14;
|
||||||
|
}
|
||||||
BIN
users/daniel/host-specific/sidon/wallpapers/lock.png
Normal file
BIN
users/daniel/host-specific/sidon/wallpapers/lock.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 835 KiB |
BIN
users/daniel/host-specific/sidon/wallpapers/wallpaper.jpg
Normal file
BIN
users/daniel/host-specific/sidon/wallpapers/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
136
users/deck/default.nix
Normal file
136
users/deck/default.nix
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
hostname,
|
||||||
|
headless,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
packages = with pkgs; [
|
||||||
|
age
|
||||||
|
curl
|
||||||
|
direnv
|
||||||
|
docker
|
||||||
|
elixir
|
||||||
|
elixir_ls
|
||||||
|
entr
|
||||||
|
erlang
|
||||||
|
fd
|
||||||
|
feh
|
||||||
|
fzf
|
||||||
|
gcc
|
||||||
|
go
|
||||||
|
gopls
|
||||||
|
htop
|
||||||
|
jq
|
||||||
|
minisign
|
||||||
|
nerd-fonts.iosevka
|
||||||
|
nnn
|
||||||
|
nodejs
|
||||||
|
oh-my-zsh
|
||||||
|
ripgrep
|
||||||
|
rust-analyzer
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
zip
|
||||||
|
zsh
|
||||||
|
];
|
||||||
|
|
||||||
|
defaultUser = "deck";
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../configs/system
|
||||||
|
./docker.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = defaultUser;
|
||||||
|
homeDirectory = "/home/${defaultUser}";
|
||||||
|
sessionPath = [
|
||||||
|
"$HOME/go/bin"
|
||||||
|
"$HOME/bin"
|
||||||
|
];
|
||||||
|
|
||||||
|
file = {
|
||||||
|
".icons/default".source = "${pkgs.capitaine-cursors}/share/icons/capitaine-cursors";
|
||||||
|
};
|
||||||
|
|
||||||
|
packages = packages;
|
||||||
|
|
||||||
|
keyboard = {
|
||||||
|
layout = "gb";
|
||||||
|
options = [
|
||||||
|
"caps:escape"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
home-manager.enable = true;
|
||||||
|
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.gitFull;
|
||||||
|
userName = "Daniel Patterson";
|
||||||
|
userEmail = "me@danielpatterson.dev";
|
||||||
|
extraConfig = {
|
||||||
|
pull.rebase = true;
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
format.signOff = "yes";
|
||||||
|
sendemail = {
|
||||||
|
smtpUser = "me@danielpatterson.dev";
|
||||||
|
smtpServer = "smtp.fastmail.com";
|
||||||
|
smtpEncryption = "tls";
|
||||||
|
smtpServerPort = 587;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lazygit = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
gui.theme = {
|
||||||
|
selectedLineBgColor = ["reverse"];
|
||||||
|
selectedRangeBgColor = ["reverse"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
elixir = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vscode.enable = true;
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
initExtra = ''
|
||||||
|
if [ -n "$TMUX" ]; then
|
||||||
|
setopt ignoreeof
|
||||||
|
fi
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
'';
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = ["git" "fzf"];
|
||||||
|
theme = "agnoster";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
49
users/deck/docker.nix
Normal file
49
users/deck/docker.nix
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
systemd.user.services = let
|
||||||
|
startup = pkgs.writeScript "dockerd-rootless" ''
|
||||||
|
#!/bin/sh
|
||||||
|
exec ${pkgs.rootlesskit}/bin/rootlesskit \
|
||||||
|
--net=slirp4netns --mtu=65520 \
|
||||||
|
--slirp4netns-sandbox=auto \
|
||||||
|
--slirp4netns-seccomp=auto \
|
||||||
|
--disable-host-loopback --port-driver=builtin \
|
||||||
|
--copy-up=/etc --copy-up=/run \
|
||||||
|
--propagation=rslave \
|
||||||
|
${pkgs.docker}/bin/dockerd
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
docker = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Docker Application Container Engine (Rootless)";
|
||||||
|
Documentation = ["https://docs.docker.com/go/rootless/"];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${startup}";
|
||||||
|
Environment = ["PATH=${lib.makeBinPath (with pkgs; [fuse-overlayfs rootlesskit slirp4netns docker docker-compose])}:/usr/bin"];
|
||||||
|
ExecReload = "/bin/kill -s HUP $MAINPID";
|
||||||
|
TimeoutSec = "0";
|
||||||
|
RestartSec = "2";
|
||||||
|
Restart = "always";
|
||||||
|
StartLimitBurst = "3";
|
||||||
|
StartLimitInterval = "60s";
|
||||||
|
LimitNOFILE = "infinity";
|
||||||
|
LimitNPROC = "infinity";
|
||||||
|
LimitCORE = "infinity";
|
||||||
|
TasksMax = "infinity";
|
||||||
|
Delegate = "yes";
|
||||||
|
Type = "notify";
|
||||||
|
NotifyAccess = "all";
|
||||||
|
KillMode = "mixed";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user