Compare commits
74 Commits
db5312b5ca
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 16ca4c733b | |||
|
|
c8f305a5bd | ||
|
|
30a4f1e83f | ||
| a6e5b1e0eb | |||
| ca06437580 | |||
| 327f6dc6f0 | |||
| 9ae8480f1b | |||
|
|
87bb5605d5 | ||
|
|
1139d767b1 | ||
|
|
66c8320ef6 | ||
| d7ebdab4df | |||
| f6f95fdbdc | |||
| eb792800a1 | |||
| 1e33700125 | |||
| fb14fbcc13 | |||
| 4c012d7100 | |||
| e933df2150 | |||
| 0fa36a0b71 | |||
| c9ec662395 | |||
| ad68106bd3 | |||
| 4185127c3e | |||
| 30af7733db | |||
| 0c4354f120 | |||
| 95fa504dc8 | |||
| 7a9781e260 | |||
| c17203e6a5 | |||
| 1653f58e52 | |||
| 9f2b5eeaf7 | |||
| 36cf6a4fc3 | |||
| 828cbc67c7 | |||
| 2cf89a9a1a | |||
| 084cdc1f36 | |||
| 66beefe0b3 | |||
|
|
9419e8cd30 | ||
| 101ee551b5 | |||
| 685fab808e | |||
| 32aa882014 | |||
| c43f27e371 | |||
|
|
23eb2ae842 | ||
|
|
8defa56f4f | ||
|
|
31ae9a3583 | ||
| a44ec01dab | |||
|
|
c30e1479cf | ||
|
|
48bfbd1f30 | ||
| ddda931c58 | |||
| 9898acd20b | |||
| c82983b6d5 | |||
| 338655e0b1 | |||
| 2cd032ef2a | |||
| 5c25748fec | |||
| ce86eafd38 | |||
| 6cb75f5957 | |||
| ef13eb8858 | |||
| 5d9674da2f | |||
| c76199e73c | |||
| 64f8f359eb | |||
| 2aec319e9f | |||
| c994b85ca9 | |||
| 243b202360 | |||
| 2b81323d98 | |||
|
|
0e4702031c | ||
|
|
61896c8791 | ||
| a4c23dc36f | |||
| b8906d74ef | |||
| 74b1e3f80a | |||
| 732ea6f993 | |||
| 869172bd48 | |||
| 9970a7c382 | |||
| 3188032143 | |||
| e39c2a165e | |||
| b5b7d8560e | |||
| 1e0eefe7e4 | |||
| 73831eef96 | |||
| 8da0b07a86 |
122
.viminfo
Normal file
122
.viminfo
Normal file
@@ -0,0 +1,122 @@
|
||||
# This viminfo file was generated by Vim 9.1.
|
||||
# You may edit it if you're careful!
|
||||
|
||||
# Viminfo version
|
||||
|1,4
|
||||
|
||||
# Value of 'encoding' when this file was written
|
||||
*encoding=utf-8
|
||||
|
||||
|
||||
# hlsearch on (H) or off (h):
|
||||
~h
|
||||
# Last Search Pattern:
|
||||
~Msle0~/}
|
||||
|
||||
# Command Line History (newest to oldest):
|
||||
:wq
|
||||
|2,0,1767395245,,"wq"
|
||||
|
||||
# Search String History (newest to oldest):
|
||||
? }
|
||||
|2,1,1767395059,,"}"
|
||||
? \<inputs\>
|
||||
|2,1,1767395050,,"\\<inputs\\>"
|
||||
? \<home-manager\>
|
||||
|2,1,1767395031,,"\\<home-manager\\>"
|
||||
|
||||
# Expression History (newest to oldest):
|
||||
|
||||
# Input Line History (newest to oldest):
|
||||
|
||||
# Debug Line History (newest to oldest):
|
||||
|
||||
# Registers:
|
||||
""- CHAR 0
|
||||
#
|
||||
|3,1,36,0,1,0,1767395242,"#"
|
||||
|
||||
# File marks:
|
||||
'0 102 10 ~/flake.nix
|
||||
|4,48,102,10,1767395245,"~/flake.nix"
|
||||
'1 92 10 ~/flake.nix
|
||||
|4,49,92,10,1767395070,"~/flake.nix"
|
||||
'2 92 10 ~/flake.nix
|
||||
|4,50,92,10,1767395070,"~/flake.nix"
|
||||
'3 17 4 ~/home/xdg.nix
|
||||
|4,51,17,4,1767395009,"~/home/xdg.nix"
|
||||
|
||||
# Jumplist (newest first):
|
||||
-' 102 10 ~/flake.nix
|
||||
|4,39,102,10,1767395245,"~/flake.nix"
|
||||
-' 92 10 ~/flake.nix
|
||||
|4,39,92,10,1767395234,"~/flake.nix"
|
||||
-' 92 10 ~/flake.nix
|
||||
|4,39,92,10,1767395070,"~/flake.nix"
|
||||
-' 102 10 ~/flake.nix
|
||||
|4,39,102,10,1767395059,"~/flake.nix"
|
||||
-' 100 12 ~/flake.nix
|
||||
|4,39,100,12,1767395050,"~/flake.nix"
|
||||
-' 100 12 ~/flake.nix
|
||||
|4,39,100,12,1767395050,"~/flake.nix"
|
||||
-' 96 12 ~/flake.nix
|
||||
|4,39,96,12,1767395031,"~/flake.nix"
|
||||
-' 96 12 ~/flake.nix
|
||||
|4,39,96,12,1767395031,"~/flake.nix"
|
||||
-' 1 0 ~/flake.nix
|
||||
|4,39,1,0,1767395014,"~/flake.nix"
|
||||
-' 1 0 ~/flake.nix
|
||||
|4,39,1,0,1767395014,"~/flake.nix"
|
||||
-' 17 4 ~/home/xdg.nix
|
||||
|4,39,17,4,1767395009,"~/home/xdg.nix"
|
||||
-' 17 4 ~/home/xdg.nix
|
||||
|4,39,17,4,1767395009,"~/home/xdg.nix"
|
||||
-' 17 4 ~/home/xdg.nix
|
||||
|4,39,17,4,1767395009,"~/home/xdg.nix"
|
||||
-' 17 4 ~/home/xdg.nix
|
||||
|4,39,17,4,1767395009,"~/home/xdg.nix"
|
||||
-' 1 0 ~/home/xdg.nix
|
||||
|4,39,1,0,1767394999,"~/home/xdg.nix"
|
||||
-' 1 0 ~/home/xdg.nix
|
||||
|4,39,1,0,1767394999,"~/home/xdg.nix"
|
||||
-' 1 0 ~/home/xdg.nix
|
||||
|4,39,1,0,1767394999,"~/home/xdg.nix"
|
||||
-' 1 0 ~/home/xdg.nix
|
||||
|4,39,1,0,1767394999,"~/home/xdg.nix"
|
||||
|
||||
# History of marks within files (newest to oldest):
|
||||
|
||||
> ~/flake.nix
|
||||
* 1767395243 0
|
||||
" 102 10
|
||||
^ 92 11
|
||||
. 102 10
|
||||
+ 95 12
|
||||
+ 96 12
|
||||
+ 97 12
|
||||
+ 98 12
|
||||
+ 99 12
|
||||
+ 100 12
|
||||
+ 101 12
|
||||
+ 102 10
|
||||
+ 93 10
|
||||
+ 92 10
|
||||
+ 93 10
|
||||
+ 95 12
|
||||
+ 96 12
|
||||
+ 97 12
|
||||
+ 98 12
|
||||
+ 99 12
|
||||
+ 100 12
|
||||
+ 101 12
|
||||
+ 102 10
|
||||
|
||||
> ~/home/xdg.nix
|
||||
* 1767395008 0
|
||||
" 17 4
|
||||
^ 17 5
|
||||
. 17 4
|
||||
+ 14 4
|
||||
+ 15 4
|
||||
+ 16 4
|
||||
+ 17 4
|
||||
793
flake.lock
generated
793
flake.lock
generated
@@ -1,793 +0,0 @@
|
||||
{
|
||||
"nodes": {
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746562888,
|
||||
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-fish": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1754405784,
|
||||
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748408240,
|
||||
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696158499,
|
||||
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-schemes_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696158499,
|
||||
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732806396,
|
||||
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"blog-generator": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nix-colors": "nix-colors",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760358235,
|
||||
"narHash": "sha256-uR6lu5QtudOPQrUVVziEzJqAdYMZn+maPxn95a3bs1U=",
|
||||
"owner": "adrlau",
|
||||
"repo": "blog-generator",
|
||||
"rev": "8497f0fada979c6f67e11c5e70f1eb1f6a5e0d4b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "adrlau",
|
||||
"repo": "blog-generator",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1731098351,
|
||||
"narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748383148,
|
||||
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=",
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"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-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730504689,
|
||||
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"stylix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749398372,
|
||||
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731966426,
|
||||
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"pre-commit-hooks-nix",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1744584021,
|
||||
"narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GNOME",
|
||||
"ref": "48.1",
|
||||
"repo": "gnome-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758463745,
|
||||
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lanzaboote": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737639419,
|
||||
"narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "v0.4.2",
|
||||
"repo": "lanzaboote",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-colors": {
|
||||
"inputs": {
|
||||
"base16-schemes": "base16-schemes",
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707825078,
|
||||
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-colors_2": {
|
||||
"inputs": {
|
||||
"base16-schemes": "base16-schemes_2",
|
||||
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707825078,
|
||||
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "misterio77",
|
||||
"repo": "nix-colors",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1760106635,
|
||||
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1759831965,
|
||||
"narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c9b6fb798541223bbb396d287d16f43520250518",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1697935651,
|
||||
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib_2": {
|
||||
"locked": {
|
||||
"lastModified": 1697935651,
|
||||
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1730741070,
|
||||
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1744536153,
|
||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1760139962,
|
||||
"narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": [
|
||||
"stylix",
|
||||
"flake-parts"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751320053,
|
||||
"narHash": "sha256-3m6RMw0FbbaUUa01PNaMLoO7D99aBClmY5ed9V3vz+0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "cbde1735782f9c2bb2c63d5e05fba171a14a4670",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"lanzaboote",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731363552,
|
||||
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"blog-generator": "blog-generator",
|
||||
"home-manager": "home-manager",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"nix-colors": "nix-colors_2",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"sops-nix": "sops-nix",
|
||||
"stylix": "stylix",
|
||||
"unstable": "unstable"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760063676,
|
||||
"narHash": "sha256-s5Fjh43skH2L+avOGioLmEHoYZffDbg3abV5h0gjeew=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "897deed0923cc5a1d560c5176abe0d172ec9716d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731897198,
|
||||
"narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "0be641045af6d8666c11c2c40e45ffc9667839b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760240450,
|
||||
"narHash": "sha256-sa9bS9jSyc4vH0jSWrUsPGdqtMvDwmkLg971ntWOo2U=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "41fd1f7570c89f645ee0ada0be4e2d3c4b169549",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur",
|
||||
"systems": "systems_2",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
"tinted-tmux": "tinted-tmux",
|
||||
"tinted-zed": "tinted-zed"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762295027,
|
||||
"narHash": "sha256-5z5cGrp9F8g8iyQrM8WkB6pAwP4AaicljKZ15gx+X9Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "stylix",
|
||||
"rev": "91b9a270523361268ba6a8772152fde31103869f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726913040,
|
||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1735730497,
|
||||
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1750770351,
|
||||
"narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"rev": "5a775c6ffd6e6125947b393872cde95867d85a2a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1751159871,
|
||||
"narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "bded5e24407cec9d01bd47a317d15b9223a1546c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-zed": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1751158968,
|
||||
"narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-zed",
|
||||
"rev": "86a470d94204f7652b906ab0d378e4231a5b3384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-zed",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733222881,
|
||||
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1760038930,
|
||||
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
79
flake.nix
79
flake.nix
@@ -2,19 +2,22 @@
|
||||
description = "NixOS configuration for legolas (laptop)";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
url = "github:nix-community/home-manager/release-25.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
noctalia = {
|
||||
url = "github:noctalia-dev/noctalia-shell";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-colors.url = "github:misterio77/nix-colors";
|
||||
stylix = {
|
||||
#url = "github:nix-community/stylix";
|
||||
url = "github:nix-community/stylix/release-25.05";
|
||||
url = "github:nix-community/stylix/release-25.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
@@ -24,14 +27,19 @@
|
||||
};
|
||||
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/v0.4.2";
|
||||
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
|
||||
blog-generator.url = "github:adrlau/blog-generator";
|
||||
blog-generator.url = "github:adrlau/blog-generator";
|
||||
|
||||
niri = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
outputs =
|
||||
@@ -46,6 +54,8 @@
|
||||
lanzaboote,
|
||||
nixos-hardware,
|
||||
blog-generator,
|
||||
niri,
|
||||
noctalia,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
@@ -61,17 +71,21 @@
|
||||
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
home-manager.users.gunalx = import ./home/gunalx.nix;
|
||||
home-manager.backupFileExtension = "bac";
|
||||
home-manager.extraSpecialArgs = { inherit nix-colors stylix inputs; };
|
||||
home-manager.sharedModules = [ inputs.sops-nix.homeManagerModules.sops inputs.stylix.homeModules.stylix ];
|
||||
home-manager.extraSpecialArgs = { inherit nix-colors inputs; };
|
||||
home-manager.sharedModules = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
inputs.stylix.homeModules.stylix
|
||||
inputs.niri.homeModules.niri
|
||||
inputs.noctalia.homeModules.default
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
{ nixpkgs.overlays = [ niri.overlays.niri ]; }
|
||||
|
||||
./modules/unstable.nix
|
||||
|
||||
stylix.nixosModules.stylix
|
||||
|
||||
sops-nix.nixosModules.sops
|
||||
|
||||
@@ -79,14 +93,12 @@
|
||||
|
||||
nixos-hardware.nixosModules.dell-xps-13-9370
|
||||
|
||||
|
||||
#temporarily for testing run my blog on my laptop
|
||||
blog-generator.nixosModules.default
|
||||
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
# aragon
|
||||
nixosConfigurations.aragon = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
@@ -96,15 +108,21 @@
|
||||
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
home-manager.users.gunalx = import ./home/gunalx.nix;
|
||||
home-manager.backupFileExtension = "bac";
|
||||
home-manager.extraSpecialArgs = { inherit nix-colors inputs; };
|
||||
home-manager.sharedModules = [ inputs.sops-nix.homeManagerModules.sops ];
|
||||
home-manager.sharedModules = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
inputs.stylix.homeModules.stylix
|
||||
inputs.niri.homeModules.niri
|
||||
inputs.noctalia.homeModules.default
|
||||
];
|
||||
}
|
||||
|
||||
./modules/unstable.nix
|
||||
|
||||
{ nixpkgs.overlays = [ niri.overlays.niri ]; }
|
||||
|
||||
./modules/unstable.nix
|
||||
|
||||
sops-nix.nixosModules.sops
|
||||
|
||||
@@ -113,16 +131,13 @@
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
# galadriel
|
||||
nixosConfigurations.galadriel = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit inputs system; };
|
||||
modules = [
|
||||
./modules/unstable.nix
|
||||
|
||||
./modules/unstable.nix
|
||||
|
||||
./hosts/galadriel/configuration.nix
|
||||
|
||||
sops-nix.nixosModules.sops
|
||||
@@ -132,7 +147,17 @@
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
# elros
|
||||
nixosConfigurations.elros = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit inputs system; };
|
||||
modules = [
|
||||
./modules/unstable.nix
|
||||
./hosts/elros/configuration.nix
|
||||
sops-nix.nixosModules.sops
|
||||
lanzaboote.nixosModules.lanzaboote
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
36
home/aider.nix
Normal file
36
home/aider.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
unstable,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
#aider-chat-full
|
||||
];
|
||||
|
||||
programs.aider-chat = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.aider-chat-with-playwright;
|
||||
settings = {
|
||||
architect = true;
|
||||
auto-accept-architect = false;
|
||||
cache-prompts = true;
|
||||
check-model-accepts-settings = false;
|
||||
dark-mode = true;
|
||||
dirty-commits = false;
|
||||
lint = true;
|
||||
show-model-warnings = false;
|
||||
verify-ssl = false;
|
||||
|
||||
watch-files = true;
|
||||
analytics-disable = true;
|
||||
check-update = false;
|
||||
multiline = true;
|
||||
notifications = true;
|
||||
show-diffs = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
@@ -13,6 +13,7 @@
|
||||
"ai/cerebras" = { };
|
||||
"ai/groq" = { };
|
||||
"ai/mistral" = { };
|
||||
"ai/zai" = { };
|
||||
};
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
@@ -48,6 +49,8 @@
|
||||
export CEREBRAS_API_KEY="$(cat ${config.sops.secrets."ai/cerebras".path})"
|
||||
export GROQ_API_KEY="$(cat ${config.sops.secrets."ai/groq".path})"
|
||||
export MISTRAL_API_KEY="$(cat ${config.sops.secrets."ai/mistral".path})"
|
||||
export ZAI_API_KEY="$(cat ${config.sops.secrets."ai/zai".path})"
|
||||
export ZAI_API_BASE="https://api.z.ai/api/coding/paas/v4"
|
||||
|
||||
|
||||
#PS1 section
|
||||
@@ -59,18 +62,18 @@
|
||||
YELLOW='\[\e[33m\]'
|
||||
MAGENTA='\[\e[35m\]'
|
||||
RED='\[\e[31m\]'
|
||||
|
||||
|
||||
if [[ -n "$SSH_CONNECTION" ]]; then
|
||||
REMOTE_LABEL="\[''${YELLOW}\] (ssh)\[''${RESET}\]"
|
||||
else
|
||||
REMOTE_LABEL=""
|
||||
fi
|
||||
|
||||
|
||||
# Git branch function
|
||||
parse_git_branch() {
|
||||
git branch --show-current 2>/dev/null | awk '{print " (" $1 ")"}'
|
||||
}
|
||||
|
||||
|
||||
# Set prompt
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
PS1="''${BOLD}''${RED}\u''${RESET}:''${BOLD}''${RED}\h''${REMOTE_LABEL}''${RESET}:''${BOLD}''${GREEN}\w''${MAGENTA}\$(parse_git_branch) ''${BLUE}\A''${RESET}\$ "
|
||||
|
||||
288
home/colors.nix
288
home/colors.nix
@@ -6,150 +6,10 @@
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; };
|
||||
c = config.colorScheme.palette; # Access palette colors
|
||||
|
||||
# Generate comprehensive CSS overrides using your color palette
|
||||
gtkColorOverrides = ''
|
||||
/* UI Colors - Main variables */
|
||||
@define-color accent_bg_color #${c.base0D};
|
||||
@define-color accent_fg_color #${c.base07};
|
||||
@define-color accent_color #${c.base0D};
|
||||
@define-color destructive_bg_color #${c.base08};
|
||||
@define-color destructive_fg_color #${c.base07};
|
||||
@define-color destructive_color #${c.base08};
|
||||
@define-color success_bg_color #${c.base0B};
|
||||
@define-color success_fg_color #${c.base07};
|
||||
@define-color success_color #${c.base0B};
|
||||
@define-color warning_bg_color #${c.base0A};
|
||||
@define-color warning_fg_color #${c.base00};
|
||||
@define-color warning_color #${c.base0A};
|
||||
@define-color error_bg_color #${c.base08};
|
||||
@define-color error_fg_color #${c.base07};
|
||||
@define-color error_color #${c.base08};
|
||||
|
||||
/* Window Colors */
|
||||
@define-color window_bg_color #${c.base00};
|
||||
@define-color window_fg_color #${c.base05};
|
||||
|
||||
/* View Colors */
|
||||
@define-color view_bg_color #${c.base00};
|
||||
@define-color view_fg_color #${c.base05};
|
||||
|
||||
/* Header Bar Colors */
|
||||
@define-color headerbar_bg_color #${c.base01};
|
||||
@define-color headerbar_fg_color #${c.base05};
|
||||
@define-color headerbar_border_color #${c.base03};
|
||||
@define-color headerbar_backdrop_color #${c.base00};
|
||||
@define-color headerbar_shade_color rgba(0, 0, 0, 0.12);
|
||||
@define-color headerbar_darker_shade_color rgba(0, 0, 0, 0.12);
|
||||
|
||||
/* Sidebar Colors */
|
||||
@define-color sidebar_bg_color #${c.base01};
|
||||
@define-color sidebar_fg_color #${c.base05};
|
||||
@define-color sidebar_backdrop_color #${c.base00};
|
||||
@define-color sidebar_border_color rgba(0, 0, 0, 0.07);
|
||||
@define-color sidebar_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
/* Card Colors */
|
||||
@define-color card_bg_color #${c.base01};
|
||||
@define-color card_fg_color #${c.base05};
|
||||
@define-color card_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
/* Dialog Colors */
|
||||
@define-color dialog_bg_color #${c.base01};
|
||||
@define-color dialog_fg_color #${c.base05};
|
||||
|
||||
/* Popover Colors */
|
||||
@define-color popover_bg_color #${c.base01};
|
||||
@define-color popover_fg_color #${c.base05};
|
||||
@define-color popover_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
/* Miscellaneous Colors */
|
||||
@define-color shade_color rgba(0, 0, 0, 0.07);
|
||||
@define-color scrollbar_outline_color #${c.base07};
|
||||
|
||||
/* Palette Colors */
|
||||
@define-color blue_1 #99c1f1;
|
||||
@define-color blue_2 #62a0ea;
|
||||
@define-color blue_3 #3584e4;
|
||||
@define-color blue_4 #1c71d8;
|
||||
@define-color blue_5 #1a5fb4;
|
||||
@define-color green_1 #8ff0a4;
|
||||
@define-color green_2 #57e389;
|
||||
@define-color green_3 #33d17a;
|
||||
@define-color green_4 #2ec27e;
|
||||
@define-color green_5 #26a269;
|
||||
@define-color yellow_1 #f9f06b;
|
||||
@define-color yellow_2 #f8e45c;
|
||||
@define-color yellow_3 #f6d32d;
|
||||
@define-color yellow_4 #f5c211;
|
||||
@define-color yellow_5 #e5a50a;
|
||||
@define-color orange_1 #ffbe6f;
|
||||
@define-color orange_2 #ffa348;
|
||||
@define-color orange_3 #ff7800;
|
||||
@define-color orange_4 #e66100;
|
||||
@define-color orange_5 #c64600;
|
||||
@define-color red_1 #f66151;
|
||||
@define-color red_2 #ed333b;
|
||||
@define-color red_3 #e01b24;
|
||||
@define-color red_4 #c01c28;
|
||||
@define-color red_5 #a51d2d;
|
||||
@define-color purple_1 #dc8add;
|
||||
@define-color purple_2 #c061cb;
|
||||
@define-color purple_3 #9141ac;
|
||||
@define-color purple_4 #813d9c;
|
||||
@define-color purple_5 #613583;
|
||||
@define-color brown_1 #cdab8f;
|
||||
@define-color brown_2 #b5835a;
|
||||
@define-color brown_3 #986a44;
|
||||
@define-color brown_4 #865e3c;
|
||||
@define-color brown_5 #63452c;
|
||||
@define-color light_1 #ffffff;
|
||||
@define-color light_2 #f6f5f4;
|
||||
@define-color light_3 #deddda;
|
||||
@define-color light_4 #c0bfbc;
|
||||
@define-color light_5 #9a9996;
|
||||
@define-color dark_1 #77767b;
|
||||
@define-color dark_2 #5e5c64;
|
||||
@define-color dark_3 #3d3846;
|
||||
@define-color dark_4 #241f31;
|
||||
@define-color dark_5 #000000;
|
||||
|
||||
/* Compatibility Colors */
|
||||
@define-color theme_bg_color #${c.base00};
|
||||
@define-color theme_fg_color #${c.base05};
|
||||
@define-color theme_base_color #${c.base00};
|
||||
@define-color theme_text_color #${c.base05};
|
||||
@define-color theme_selected_bg_color #${c.base0D};
|
||||
@define-color theme_selected_fg_color #${c.base07};
|
||||
@define-color insensitive_bg_color #${c.base01};
|
||||
@define-color insensitive_fg_color #${c.base03};
|
||||
@define-color insensitive_base_color #${c.base00};
|
||||
@define-color borders rgba(0, 0, 0, 0.15);
|
||||
@define-color theme_unfocused_bg_color #${c.base00};
|
||||
@define-color theme_unfocused_fg_color #${c.base05};
|
||||
@define-color theme_unfocused_base_color #${c.base00};
|
||||
@define-color theme_unfocused_text_color #${c.base05};
|
||||
@define-color theme_unfocused_selected_bg_color #${c.base0D};
|
||||
@define-color theme_unfocused_selected_fg_color #${c.base07};
|
||||
@define-color unfocused_insensitive_color #${c.base01};
|
||||
@define-color unfocused_borders rgba(0, 0, 0, 0.15);
|
||||
|
||||
/* Standard GTK Colors */
|
||||
@define-color bg_color #${c.base00};
|
||||
@define-color fg_color #${c.base05};
|
||||
@define-color base_color #${c.base00};
|
||||
@define-color text_color #${c.base05};
|
||||
@define-color selected_bg_color #${c.base0D};
|
||||
@define-color selected_fg_color #${c.base07};
|
||||
@define-color tooltip_bg_color #${c.base01};
|
||||
@define-color tooltip_fg_color #${c.base05};
|
||||
'';
|
||||
in
|
||||
{
|
||||
imports = [ nix-colors.homeManagerModules.default ];
|
||||
imports = [
|
||||
nix-colors.homeManagerModules.default
|
||||
];
|
||||
|
||||
colorScheme = {
|
||||
slug = "teal-green-dark";
|
||||
@@ -157,116 +17,40 @@ in
|
||||
author = "Adrian";
|
||||
palette = {
|
||||
# Base16 Teal‐Green Dark Theme - Enhanced Teal Version
|
||||
base00 = "0c1f1d"; # Default background - deeper teal base
|
||||
base01 = "12302d"; # Lighter background (status bars)
|
||||
base02 = "1c3b38"; # Selection background
|
||||
base03 = "26514d"; # Comments, secondary content
|
||||
base04 = "447b76"; # Dark foreground (status bars)
|
||||
base05 = "c4e5e0"; # Default foreground
|
||||
base06 = "d4f0ed"; # Light foreground
|
||||
base07 = "f0fbfa"; # Lightest background
|
||||
base08 = "5fcac0"; # Variables, markup link text - teal accent
|
||||
base09 = "40bfa5"; # Integers, constants - teal-green
|
||||
base0A = "60d5b0"; # Classes, search highlight - bright teal
|
||||
base0B = "40c0a0"; # Strings, inserted - true teal (less green)
|
||||
base0C = "30d0c0"; # Support, escape characters - cyan-teal
|
||||
base0D = "2aa198"; # Functions, headings - classic teal
|
||||
base0E = "3cb4ac"; # Keywords, selectors - teal-blue
|
||||
base0F = "70d0c0"; # Deprecated tags - light teal
|
||||
# base00 = "0c1f1d"; # Default background - deeper teal base
|
||||
# base01 = "12302d"; # Lighter background (status bars)
|
||||
# base02 = "1c3b38"; # Selection background
|
||||
# base03 = "26514d"; # Comments, secondary content
|
||||
# base04 = "447b76"; # Dark foreground (status bars)
|
||||
# base05 = "c4e5e0"; # Default foreground
|
||||
# base06 = "d4f0ed"; # Light foreground
|
||||
# base07 = "f0fbfa"; # Lightest background
|
||||
# base08 = "5fcac0"; # Variables, markup link text - teal accent
|
||||
# base09 = "40bfa5"; # Integers, constants - teal-green
|
||||
# base0A = "60d5b0"; # Classes, search highlight - bright teal
|
||||
# base0B = "40c0a0"; # Strings, inserted - true teal (less green)
|
||||
# base0C = "30d0c0"; # Support, escape characters - cyan-teal
|
||||
# base0D = "2aa198"; # Functions, headings - classic teal
|
||||
# base0E = "3cb4ac"; # Keywords, selectors - teal-blue
|
||||
# base0F = "70d0c0"; # Deprecated tags - light teal
|
||||
|
||||
## catppuccin mocha based
|
||||
base00 = "0b1c1a"; # Default background — deeper teal-dark background
|
||||
base01 = "153532"; # Lighter background / status bars
|
||||
base02 = "1b3d39"; # Selection background / line highlight
|
||||
base03 = "275454"; # Comments, secondary UI elements
|
||||
base04 = "6f7389"; # Dark foreground / secondary text
|
||||
base05 = "95a0b8"; # Default foreground / main text
|
||||
base06 = "a8b2ce"; # Light foreground / lighter UI elements
|
||||
base07 = "ccdffa"; # Lightest background / highlight background
|
||||
base08 = "f38ba8"; # Errors, alerts — red-pink accent
|
||||
base09 = "e0a878"; # Numbers, constants — muted peach/orange
|
||||
base0A = "b8c071"; # Warnings, highlights — golden-yellow
|
||||
base0B = "4fbf93"; # Strings, inserts — teal-green
|
||||
base0C = "2ac5c2"; # Support, escape/sequences — cyan-teal
|
||||
base0D = "2fa6b0"; # Functions, types — classic teal-blue
|
||||
base0E = "c7a8f5"; # Keywords, special — soft magenta/purple
|
||||
base0F = "b2b4cf"; # Deprecated / special tags — light cool grey-lavender
|
||||
};
|
||||
};
|
||||
|
||||
# GTK configuration with custom theme
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
cursorTheme = {
|
||||
#name = "Adwaita-Dark";
|
||||
name = "Adwaita";
|
||||
#package = pkgs.adwaita-icon-theme;
|
||||
#size = 24;
|
||||
};
|
||||
gtk2.extraConfig = ''
|
||||
gtk-color-scheme = "fg_color:#${c.base05}\n\
|
||||
bg_color:#${c.base00}\n\
|
||||
text_color:#${c.base05}\n\
|
||||
base_color:#${c.base01}\n\
|
||||
selected_fg_color:#${c.base07}\n\
|
||||
selected_bg_color:#${c.base0D}\n\
|
||||
tooltip_fg_color:#${c.base07}\n\
|
||||
tooltip_bg_color:#${c.base02}\n\
|
||||
insensitive_fg_color:#${c.base03}\n\
|
||||
insensitive_bg_color:#${c.base01}"
|
||||
|
||||
|
||||
style "custom-dark" {
|
||||
bg[NORMAL] = "#${c.base00}"
|
||||
bg[PRELIGHT] = "#${c.base02}"
|
||||
bg[ACTIVE] = "#${c.base01}"
|
||||
bg[SELECTED] = "#${c.base0D}"
|
||||
bg[INSENSITIVE] = "#${c.base01}"
|
||||
fg[NORMAL] = "#${c.base05}"
|
||||
fg[PRELIGHT] = "#${c.base06}"
|
||||
fg[ACTIVE] = "#${c.base07}"
|
||||
fg[SELECTED] = "#${c.base07}"
|
||||
fg[INSENSITIVE] = "#${c.base03}"
|
||||
|
||||
base[NORMAL] = "#${c.base01}"
|
||||
base[PRELIGHT] = "#${c.base02}"
|
||||
base[ACTIVE] = "#${c.base0D}"
|
||||
base[SELECTED] = "#${c.base0D}"
|
||||
base[INSENSITIVE] = "#${c.base00}"
|
||||
|
||||
text[NORMAL] = "#${c.base05}"
|
||||
text[PRELIGHT] = "#${c.base06}"
|
||||
text[ACTIVE] = "#${c.base07}"
|
||||
text[SELECTED] = "#${c.base07}"
|
||||
text[INSENSITIVE] = "#${c.base03}"
|
||||
}
|
||||
|
||||
class "**" style "custom-dark"
|
||||
widget_class "**" style "custom-dark"
|
||||
|
||||
gtk-application-prefer-dark-theme="true"
|
||||
|
||||
'';
|
||||
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = true;
|
||||
};
|
||||
gtk4.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = true;
|
||||
};
|
||||
# Inject comprehensive color overrides for GTK 3
|
||||
gtk3.extraCss = gtkColorOverrides;
|
||||
# Inject comprehensive color overrides for GTK 4
|
||||
gtk4.extraCss = gtkColorOverrides;
|
||||
};
|
||||
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
icon-theme = "Papirus-Dark";
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
papirus-icon-theme
|
||||
gnome-themes-extra
|
||||
adwaita-icon-theme
|
||||
];
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "gtk"; #tried gtk 3 but gives errors with mismatch.
|
||||
#platformTheme.name = "adwaita";
|
||||
style.name = "gtk2";
|
||||
#style.name = "adwaita-dark";
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
nerd-fonts.noto
|
||||
nerd-fonts.hack
|
||||
nerd-fonts.fira-code
|
||||
|
||||
zpix-pixel-font
|
||||
font-awesome_4
|
||||
|
||||
@@ -12,38 +12,38 @@
|
||||
|
||||
main = {
|
||||
term = "xterm-256color";
|
||||
font = "0xproto:size=14";
|
||||
#font = "0xproto:size=14";
|
||||
#dpi-aware = "yes";
|
||||
};
|
||||
mouse = {
|
||||
hide-when-typing = "yes";
|
||||
};
|
||||
|
||||
colors = {
|
||||
alpha = "0.7";
|
||||
foreground = "${config.colorScheme.palette.base05}";
|
||||
background = "${config.colorScheme.palette.base00}";
|
||||
#colors = {
|
||||
#alpha = "0.7";
|
||||
#foreground = "${config.colorScheme.palette.base05}";
|
||||
#background = "${config.colorScheme.palette.base00}";
|
||||
|
||||
regular0 = "${config.colorScheme.palette.base00}";
|
||||
regular1 = "${config.colorScheme.palette.base08}";
|
||||
regular2 = "${config.colorScheme.palette.base0B}";
|
||||
regular3 = "${config.colorScheme.palette.base0A}";
|
||||
regular4 = "${config.colorScheme.palette.base0D}";
|
||||
regular5 = "${config.colorScheme.palette.base0E}";
|
||||
regular6 = "${config.colorScheme.palette.base0C}";
|
||||
regular7 = "${config.colorScheme.palette.base05}";
|
||||
#regular0 = "${config.colorScheme.palette.base00}";
|
||||
#regular1 = "${config.colorScheme.palette.base08}";
|
||||
#regular2 = "${config.colorScheme.palette.base0B}";
|
||||
#regular3 = "${config.colorScheme.palette.base0A}";
|
||||
#regular4 = "${config.colorScheme.palette.base0D}";
|
||||
#regular5 = "${config.colorScheme.palette.base0E}";
|
||||
#regular6 = "${config.colorScheme.palette.base0C}";
|
||||
#regular7 = "${config.colorScheme.palette.base05}";
|
||||
|
||||
bright0 = "${config.colorScheme.palette.base03}";
|
||||
bright1 = "${config.colorScheme.palette.base08}";
|
||||
bright2 = "${config.colorScheme.palette.base0B}";
|
||||
bright3 = "${config.colorScheme.palette.base0A}";
|
||||
bright4 = "${config.colorScheme.palette.base0D}";
|
||||
bright5 = "${config.colorScheme.palette.base0E}";
|
||||
bright6 = "${config.colorScheme.palette.base0C}";
|
||||
bright7 = "${config.colorScheme.palette.base07}";
|
||||
selection-foreground = "${config.colorScheme.palette.base00}";
|
||||
selection-background = "${config.colorScheme.palette.base0A}";
|
||||
};
|
||||
#bright0 = "${config.colorScheme.palette.base03}";
|
||||
#bright1 = "${config.colorScheme.palette.base08}";
|
||||
#bright2 = "${config.colorScheme.palette.base0B}";
|
||||
#bright3 = "${config.colorScheme.palette.base0A}";
|
||||
#bright4 = "${config.colorScheme.palette.base0D}";
|
||||
#bright5 = "${config.colorScheme.palette.base0E}";
|
||||
#bright6 = "${config.colorScheme.palette.base0C}";
|
||||
#bright7 = "${config.colorScheme.palette.base07}";
|
||||
#selection-foreground = "${config.colorScheme.palette.base00}";
|
||||
#selection-background = "${config.colorScheme.palette.base0A}";
|
||||
#};
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
settings = {
|
||||
pull.rebase = true;
|
||||
push.autoSetupRemote = true;
|
||||
color.ui = "auto";
|
||||
|
||||
@@ -6,14 +6,20 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./unstable.nix
|
||||
./nixpkgs.nix
|
||||
|
||||
./sshconfig.nix
|
||||
./atuin.nix
|
||||
./git.nix
|
||||
./bash.nix
|
||||
./xdg.nix
|
||||
#./xdg.nix
|
||||
|
||||
# theming
|
||||
./colors.nix
|
||||
./stylix.nix
|
||||
|
||||
#graphical
|
||||
./colors.nix
|
||||
./fuzzel.nix
|
||||
./swaylock.nix
|
||||
./gtklock.nix
|
||||
@@ -21,16 +27,18 @@
|
||||
./waybar.nix
|
||||
./wlogout.nix
|
||||
./niri.nix
|
||||
./noctalia.nix
|
||||
./wallpapers.nix
|
||||
./swww.nix
|
||||
./fonts.nix
|
||||
|
||||
#applications
|
||||
./mako.nix
|
||||
#./mako.nix # superseeded by noctalia
|
||||
./foot.nix
|
||||
./zed.nix
|
||||
./aider.nix
|
||||
./opencode.nix
|
||||
./neovim.nix
|
||||
./fcitx5.nix
|
||||
|
||||
./python.nix
|
||||
|
||||
|
||||
@@ -13,6 +13,6 @@
|
||||
enable = true;
|
||||
#package = pkgs.kdePackages.kdeconnect-kde;
|
||||
package = pkgs.gnomeExtensions.gsconnect;
|
||||
indicator = true;
|
||||
indicator = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -46,5 +46,12 @@ in
|
||||
border-color = "#${palette.base08}FF";
|
||||
};
|
||||
|
||||
settings."mode=silent" = {
|
||||
invisible = 1;
|
||||
actions = false;
|
||||
icons = false;
|
||||
default-timeout = 0;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
170
home/neovim.nix
170
home/neovim.nix
@@ -1,63 +1,139 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
||||
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
defaultEditor = true;
|
||||
|
||||
# Required for render-markdown and coc
|
||||
withPython3 = true;
|
||||
withNodeJs = true;
|
||||
|
||||
extraConfig = ''
|
||||
set backspace=indent,eol,start
|
||||
syntax on
|
||||
set tabstop=2 softtabstop=0 autoindent expandtab shiftwidth=2 smarttab
|
||||
|
||||
# Keep your python deps for latex rendering
|
||||
extraPython3Packages = ps: [ ps.pylatexenc ];
|
||||
|
||||
" Wildmenu for command-line completion
|
||||
set wildmenu
|
||||
set wildmode=longest:full,full " Example wildmode setting
|
||||
|
||||
|
||||
" Use <Tab> completion instead of ctrl n and ctrl p
|
||||
inoremap <expr> <Tab> pumvisible() ? "\<C-y>" : "\<Tab>"
|
||||
inoremap <expr> <S-Tab> "\<Tab>"
|
||||
|
||||
set clipboard=unnamed,unnamedplus
|
||||
set mouse=a
|
||||
|
||||
'';
|
||||
|
||||
extraLuaConfig = ''
|
||||
vim.wo.number = true
|
||||
-- vim.wo.relativenumber = true
|
||||
vim.api.nvim_set_option("clipboard", "unnamedplus")
|
||||
'';
|
||||
|
||||
|
||||
extraPackages = [ pkgs.fzf ]; # For fzf-vim functionality
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-nix
|
||||
vim-lastplace
|
||||
vim-yaml
|
||||
fzf-vim
|
||||
chadtree
|
||||
typst-vim
|
||||
typst-preview-nvim
|
||||
aider-nvim
|
||||
extraPackages = with pkgs; [
|
||||
fzf
|
||||
wl-clipboard
|
||||
xclip
|
||||
ripgrep # Nvim-tree (and fzf) work better with ripgrep installed
|
||||
];
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-indent-guides
|
||||
|
||||
# CoC configuration (replacing coc-rust-analyzer plugin)
|
||||
coc.enable = true;
|
||||
coc.settings = {
|
||||
"coc.globalExtensions" = [
|
||||
"coc-rust-analyzer"
|
||||
];
|
||||
};
|
||||
# --- UI / File Explorer (Replaces Chadtree) ---
|
||||
nvim-tree-lua
|
||||
nvim-web-devicons
|
||||
|
||||
# --- Fuzzy Finder ---
|
||||
fzf-vim
|
||||
|
||||
# --- Editor Utilities ---
|
||||
vim-lastplace
|
||||
vim-nix
|
||||
vim-yaml
|
||||
|
||||
# --- Coding / LSP (CoC) ---
|
||||
# Keeping CoC as requested (switching to Native LSP is a bigger task)
|
||||
coc-nvim
|
||||
coc-vimtex
|
||||
coc-rust-analyzer
|
||||
|
||||
# --- Markdown / LaTeX / Typst ---
|
||||
vimtex
|
||||
typst-vim
|
||||
typst-preview-nvim
|
||||
render-markdown-nvim
|
||||
markdown-preview-nvim
|
||||
|
||||
# --- AI ---
|
||||
aider-nvim
|
||||
|
||||
# --- Treesitter ---
|
||||
(nvim-treesitter.withPlugins (p: [
|
||||
p.markdown
|
||||
p.markdown_inline
|
||||
p.latex
|
||||
p.yaml
|
||||
p.bash
|
||||
p.rust
|
||||
p.nix
|
||||
p.lua
|
||||
]))
|
||||
];
|
||||
|
||||
# We can consolidate most settings into Lua for simplicity
|
||||
extraLuaConfig = ''
|
||||
-- ============================
|
||||
-- 1. General Settings
|
||||
-- ============================
|
||||
vim.opt.number = true
|
||||
vim.opt.backspace = { "indent", "eol", "start" }
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.softtabstop = 0
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.smarttab = true
|
||||
vim.opt.autoindent = true
|
||||
|
||||
-- Clipboard setup
|
||||
vim.opt.clipboard = "unnamedplus"
|
||||
|
||||
-- ============================
|
||||
-- 2. File Explorer (Nvim-tree)
|
||||
-- ============================
|
||||
-- This replaces Chadtree. It is much more stable.
|
||||
require("nvim-tree").setup({
|
||||
sort = { sorter = "case_sensitive" },
|
||||
view = { width = 30 },
|
||||
renderer = { group_empty = true },
|
||||
filters = { dotfiles = false },
|
||||
})
|
||||
|
||||
-- Toggle file explorer with <Leader>e
|
||||
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<CR>', { silent = true })
|
||||
|
||||
-- ============================
|
||||
-- 3. Render Markdown Setup
|
||||
-- ============================
|
||||
require('render-markdown').setup({
|
||||
latex = {
|
||||
enabled = true,
|
||||
converter = 'latex2text',
|
||||
highlight = 'RenderMarkdownMath',
|
||||
top_pad = 0,
|
||||
bottom_pad = 0,
|
||||
},
|
||||
})
|
||||
'';
|
||||
|
||||
# Vimscript is still best for specific CoC and FZF tweaks
|
||||
extraConfig = ''
|
||||
syntax on
|
||||
set mouse=a
|
||||
|
||||
" --- CoC Configuration ---
|
||||
" Use Tab to trigger completion and navigate
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#pum#next(1) :
|
||||
\ CheckBackspace() ? "\<Tab>" :
|
||||
\ coc#refresh()
|
||||
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
|
||||
|
||||
" Make <CR> (Enter) accept the selected item
|
||||
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
function! CheckBackspace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
" --- Keymaps ---
|
||||
" Browser Preview Hotkey
|
||||
nmap <leader>m <Plug>MarkdownPreviewToggle
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
1315
home/niri.nix
1315
home/niri.nix
File diff suppressed because it is too large
Load Diff
17
home/nixpkgs.nix
Normal file
17
home/nixpkgs.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
# example "python3.11-youtube-dl-2021.12.17"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
227
home/noctalia.nix
Normal file
227
home/noctalia.nix
Normal file
@@ -0,0 +1,227 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.noctalia-shell = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
|
||||
settings = {
|
||||
bar = {
|
||||
position = "top";
|
||||
density = "default";
|
||||
floating = false;
|
||||
exclusive = true;
|
||||
widgets = {
|
||||
left = [
|
||||
{ id = "Launcher"; }
|
||||
{
|
||||
id = "CustomButton";
|
||||
icon = "keyboard";
|
||||
tooltip = "Open Keyboard";
|
||||
leftClickExec = "pkill wvkbd-mobintl || wvkbd-mobintl";
|
||||
}
|
||||
{ id = "SystemMonitor"; }
|
||||
{ id = "MediaMini"; }
|
||||
{ id = "Pomodoro"; }
|
||||
{ id = "Workspace"; }
|
||||
];
|
||||
center = [
|
||||
{ id = "ActiveWindow"; }
|
||||
];
|
||||
right = [
|
||||
{ id = "Tray"; }
|
||||
{ id = "Clock"; }
|
||||
{ id = "NotificationHistory"; }
|
||||
{ id = "Battery"; }
|
||||
{ id = "Brightness"; }
|
||||
{ id = "Volume"; }
|
||||
{ id = "Bluetooth"; }
|
||||
{ id = "Network"; }
|
||||
{ id = "ControlCenter"; }
|
||||
#{ id = "SessionMenu"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
general = {
|
||||
radiusRatio = 0.2;
|
||||
#animationSpeed = 2;
|
||||
animationDisabled = true; # annoying
|
||||
};
|
||||
|
||||
colorSchemes = {
|
||||
useWallpaperColors = false;
|
||||
darkMode = true;
|
||||
};
|
||||
templates = {
|
||||
activeTemplates = [ ];
|
||||
enableUserTheming = false;
|
||||
};
|
||||
|
||||
wallpaper = {
|
||||
enabled = true;
|
||||
directory = "~/Pictures/wallpapers";
|
||||
automationEnabled = true;
|
||||
wallpaperChangeMode = "random";
|
||||
randomIntervalSec = 270000;
|
||||
fillMode = "crop";
|
||||
};
|
||||
|
||||
appLauncher = {
|
||||
position = "center";
|
||||
sortByMostUsed = true;
|
||||
viewMode = "list";
|
||||
showCategories = true;
|
||||
|
||||
enableClipboardHistory = false;
|
||||
pinnedApps = [ ];
|
||||
useApp2Unit = false;
|
||||
terminalCommand = "footclient ";
|
||||
customLaunchPrefixEnabled = false;
|
||||
customLaunchPrefix = "";
|
||||
iconMode = "tabler";
|
||||
showIconBackground = false;
|
||||
enableSettingsSearch = true;
|
||||
ignoreMouseInput = false;
|
||||
screenshotAnnotationTool = "";
|
||||
};
|
||||
|
||||
notifications = {
|
||||
enabled = true;
|
||||
location = "top_right";
|
||||
#backgroundOpacity = 0.8;
|
||||
lowUrgencyDuration = 1;
|
||||
normalUrgencyDuration = 2;
|
||||
criticalUrgencyDuration = 3;
|
||||
};
|
||||
|
||||
osd = {
|
||||
enabled = true;
|
||||
location = "top_right";
|
||||
autoHideMs = 500;
|
||||
overlayLayer = true;
|
||||
backgroundOpacity = lib.mkForce 0.5;
|
||||
};
|
||||
|
||||
location = {
|
||||
name = "Trondheim";
|
||||
showWeekNumberInCalendar = true;
|
||||
firstDayOfWeek = -1;
|
||||
};
|
||||
};
|
||||
|
||||
plugins = {
|
||||
sources = [
|
||||
{
|
||||
enabled = true;
|
||||
name = "Official Noctalia Plugins";
|
||||
url = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
}
|
||||
];
|
||||
states = {
|
||||
notes-scratchpad = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
todo = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
assistant-panel = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
pomodoro = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
tailscale = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
noctalia-supergfxctl = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
weekly-calendar = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
kaomoji-provider = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
rss-feed = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
keybind-cheatsheet = {
|
||||
enabled = true;
|
||||
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||
};
|
||||
};
|
||||
version = 1;
|
||||
};
|
||||
|
||||
pluginSettings = {
|
||||
notes-scratchpad = {
|
||||
panelWidth = 1200;
|
||||
panelHeigth = 1600;
|
||||
fontSize = 16;
|
||||
filePath = "${config.xdg.userDirs.documents}/notes-scratchpad.txt";
|
||||
};
|
||||
|
||||
assistant-panel = {
|
||||
ai = {
|
||||
provider = "openai_compatible";
|
||||
models = {
|
||||
"openai_compatible" = "gpt-oss:20b";
|
||||
};
|
||||
#apiKeys = {};
|
||||
temperature = 0.7;
|
||||
systemPrompt = "You are a helpful assistant answering short questions. Be brief, think critically and come with constructual critics for how to improve.";
|
||||
openaiLocal = true;
|
||||
openaiBaseUrl = "http://galadriel:11434/v1/chat/completions";
|
||||
};
|
||||
translator = {
|
||||
backend = "google";
|
||||
realTimeTranslation = true;
|
||||
deeplApiKey = "";
|
||||
};
|
||||
maxHistoryLength = 10;
|
||||
panelDetached = true;
|
||||
panelPosition = "center";
|
||||
panelHeightRatio = 0.70;
|
||||
panelWidth = 640;
|
||||
attachmentStyle = "connected";
|
||||
scale = 1;
|
||||
};
|
||||
rss-feed = {
|
||||
feeds = [
|
||||
{
|
||||
name = "Hacker News";
|
||||
url = "https://news.ycombinator.com/rss";
|
||||
}
|
||||
];
|
||||
updateInterval = 3600;
|
||||
maxItemsPerFeed = 10;
|
||||
showOnlyUnread = true;
|
||||
markAsReadOnClick = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Noctalia is started via a systemd user service, so it won't see variables
|
||||
# set only in niri's `settings.environment`. Put theme-related env here.
|
||||
systemd.user.services.noctalia-shell.Service.Environment = [
|
||||
"QT_QPA_PLATFORM=wayland;xcb"
|
||||
"QT_QPA_PLATFORMTHEME=qt6ct"
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR=1"
|
||||
# Ensures Quickshell resolves app icons from a known icon theme.
|
||||
"QS_ICON_THEME=Papirus-Dark"
|
||||
];
|
||||
}
|
||||
137
home/opencode.nix
Normal file
137
home/opencode.nix
Normal file
@@ -0,0 +1,137 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
unstable,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.opencode = {
|
||||
package = pkgs.unstable.opencode;
|
||||
enable = true;
|
||||
enableMcpIntegration = true;
|
||||
|
||||
settings = {
|
||||
#model = "github-copilot/gpt-5.2";
|
||||
model = "zai-coding-plan/glm-5";
|
||||
small_model = "zai-coding-plan/glm-4.7";
|
||||
autoshare = false;
|
||||
autoupdate = false;
|
||||
};
|
||||
|
||||
agents = {
|
||||
code-reviewer = ''
|
||||
# Code Reviewer Agent
|
||||
|
||||
You are a senior software engineer specializing in code reviews.
|
||||
Focus on code quality, security, and maintainability.
|
||||
|
||||
## Guidelines
|
||||
- Review for potential bugs and edge cases
|
||||
- Check for security vulnerabilities
|
||||
- Ensure code follows best practices
|
||||
- Suggest improvements for readability and performance
|
||||
'';
|
||||
|
||||
debugger = ''
|
||||
# Debugger Agent
|
||||
|
||||
You are a software engineer specializing in debugging and troubleshooting.
|
||||
Focus on identifying issues, providing insights into existing bugs, and suggesting improvements to the debugging process.
|
||||
|
||||
## Guidelines
|
||||
- Look for unhandled exceptions, crashes, or error states.
|
||||
- Identify and remove redundant or unnecessary debug/print statements.
|
||||
- Check for proper logging practices: ensure log levels (info, debug, error) are used correctly.
|
||||
- Examine error messages for clarity and context—ensure they aid in troubleshooting.
|
||||
- Look for missing or incorrect error handling and suggest improvements.
|
||||
- Trace the flow of execution to catch logical or state-related bugs.
|
||||
- Ensure relevant variable states are being monitored during runtime to spot anomalies.
|
||||
- Suggest improvements to breakpoints, watchpoints, or other debugging tools for better visibility.
|
||||
- Look for performance bottlenecks that could be causing issues and suggest optimizations.
|
||||
- Check for edge cases and race conditions that might not be covered by current debugging.
|
||||
- Ensure debugging steps or tools don’t affect production environments (i.e., avoid verbose logging in production).
|
||||
- Document findings and proposed fixes clearly for future reference.
|
||||
'';
|
||||
|
||||
simplifier = ''
|
||||
# Simplifier Agent
|
||||
|
||||
You are a software engineer specializing in simplifying and refactoring complex code.
|
||||
Focus on making the code more readable, maintainable, and easier to understand without altering its functionality.
|
||||
|
||||
## Guidelines
|
||||
- Break down long or complex functions into smaller, well-named helper functions or methods.
|
||||
- Identify and remove any redundant or duplicate logic, consolidating wherever possible.
|
||||
- Use more descriptive variable and function names to improve clarity.
|
||||
- Simplify nested loops or conditionals (e.g., consider early returns to reduce indentation).
|
||||
- Replace complex data structures or algorithms with simpler, more efficient alternatives if appropriate.
|
||||
- Refactor complex conditional logic (e.g., using polymorphism, strategy pattern, or lookup tables where applicable).
|
||||
- Replace hardcoded values with constants or configuration variables to improve flexibility.
|
||||
- Group related logic together to improve cohesion within classes or functions.
|
||||
- Ensure the code follows the DRY (Don't Repeat Yourself) principle and refactor to remove duplication.
|
||||
- Simplify error handling by centralizing common error paths or using more consistent exception handling.
|
||||
- Remove unnecessary comments or redundant code that doesn’t add value to readability.
|
||||
- Check for opportunities to use built-in language features or libraries to reduce custom code (e.g., use `map()` instead of for-loops in Python).
|
||||
- Ensure code is modular and maintainable, facilitating easier testing and future updates.
|
||||
- Use early exits or guard clauses to minimize nested logic and make the code more straightforward.
|
||||
|
||||
'';
|
||||
|
||||
};
|
||||
commands = {
|
||||
commit = ''
|
||||
# Commit Command
|
||||
|
||||
Create a git commit with proper message formatting following conventional commits.
|
||||
Usage: /commit [message]
|
||||
'';
|
||||
};
|
||||
|
||||
rules = ''
|
||||
### **General Project Guidelines**
|
||||
#### **Separation of Concerns**
|
||||
|
||||
* Keep your code **loosely coupled** components/modules should only know about what they need.
|
||||
* Maintain clear **separation between domain logic and business logic** ensure your domain layer is independent of infrastructure or framework specific details.
|
||||
* Ensure **separation of data concerns** never mix UI data, business data, and domain entities in a single layer.
|
||||
|
||||
#### **Typing and Type Safety**
|
||||
|
||||
* **Always define types** explicitly for variables, parameters, and return values.
|
||||
* Avoid using `any` if you're unsure about a type, lean on **unknown** or **generics** until you can define it properly.
|
||||
* **Interfaces and Types** should be descriptive and reusable prefer interfaces for object shapes, and types for unions/intersections or specific business rules.
|
||||
* Avoid overcomplicating types focus on clarity and consistency.
|
||||
|
||||
#### **Code Simplicity**
|
||||
|
||||
* Write **simple, understandable code** don't over engineer solutions unless absolutely necessary.
|
||||
* Keep methods and functions **small and focused** follow the Single Responsibility Principle.
|
||||
* **Comment only when necessary** to explain complex or non obvious patterns **no comments for simple or self explanatory code**.
|
||||
|
||||
#### **Production-Ready Code**
|
||||
|
||||
* Always write **production-grade code** optimize for maintainability, readability, and scalability.
|
||||
* Ensure **robust error handling** catch edge cases, validate inputs, and handle exceptions gracefully.
|
||||
|
||||
#### **Framework and Library Usage**
|
||||
|
||||
* Use frameworks and libraries **where they make sense**, but avoid unnecessary dependencies, we usually want to keep dependencies down.
|
||||
* Follow **framework best practices** for structure, state management, and lifecycle methods
|
||||
* Keep **UI and business logic separate** don't directly tie your UI components to business logic; use hooks or services to handle interactions.
|
||||
|
||||
#### **Documentation**
|
||||
|
||||
* **Document key architecture decisions** especially if they are complex or non intuitive.
|
||||
* Only document the **why** and **how** when it's not obvious avoid redundant or trivial comments.
|
||||
* Keep your documentation to the developmentlog.md Make a new section, dont write to long, just briefely what needs to be documented.
|
||||
|
||||
#### **Performance Considerations**
|
||||
|
||||
* Optimize for **readability first**, then **performance** measure performance bottlenecks before optimizing.
|
||||
* When optimizing, our first priority is finding arcitectural problems, then finding out ways to parralelize.
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,27 +1,47 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
(pkgs.python312.withPackages (ppkgs: [
|
||||
ppkgs.uv
|
||||
ppkgs.pip
|
||||
ppkgs.numpy
|
||||
ppkgs.sympy
|
||||
ppkgs.scipy
|
||||
ppkgs.matplotlib
|
||||
ppkgs.requests
|
||||
ppkgs.pandas
|
||||
ppkgs.scikit-learn
|
||||
ppkgs.nltk
|
||||
ppkgs.huggingface-hub
|
||||
ppkgs.flask
|
||||
ppkgs.gunicorn
|
||||
ppkgs.torch
|
||||
ppkgs.opencv-python
|
||||
ppkgs.pillow
|
||||
ppkgs.keras
|
||||
ppkgs.tqdm
|
||||
ppkgs.ipykernel
|
||||
]))
|
||||
pkgs.poetry
|
||||
|
||||
(pkgs.python3.withPackages (
|
||||
ppkgs: with ppkgs; [
|
||||
pip
|
||||
numpy
|
||||
sympy
|
||||
scipy
|
||||
matplotlib
|
||||
requests
|
||||
pandas
|
||||
scikit-learn
|
||||
nltk
|
||||
huggingface-hub
|
||||
flask
|
||||
gunicorn
|
||||
torch
|
||||
opencv-python
|
||||
pillow
|
||||
keras
|
||||
tqdm
|
||||
ipykernel
|
||||
pyyaml
|
||||
authlib
|
||||
litellm
|
||||
flake8
|
||||
pycryptodome
|
||||
seaborn
|
||||
docling-core
|
||||
openai
|
||||
transformers
|
||||
langchain
|
||||
langchain-community
|
||||
pydantic
|
||||
pydantic-core
|
||||
datasets
|
||||
tokenizers
|
||||
accelerate
|
||||
peft
|
||||
bitsandbytes
|
||||
]
|
||||
))
|
||||
];
|
||||
}
|
||||
|
||||
@@ -17,10 +17,13 @@
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
compression = true;
|
||||
# compression moved to matchBlocks."*"
|
||||
# Default config is deprecated, disabling it and managing defaults manually if needed
|
||||
enableDefaultConfig = false;
|
||||
|
||||
matchBlocks = {
|
||||
"*" = {
|
||||
compression = true;
|
||||
identityFile = [
|
||||
"~/.ssh/nixos"
|
||||
"~/.ssh/id_ed25519"
|
||||
|
||||
62
home/stylix.nix
Normal file
62
home/stylix.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
stylix = {
|
||||
enable = true;
|
||||
|
||||
#autoEnable = false;
|
||||
#targets.gtk.enable = true;
|
||||
#targets.qt.enable = true;
|
||||
|
||||
#manually disable stuff i have done manually
|
||||
targets.mako.enable = false;
|
||||
#targets.foot.enable = false;
|
||||
targets.swaylock.enable = false;
|
||||
targets.fuzzel.enable = false;
|
||||
targets.zed.enable = false;
|
||||
|
||||
base16Scheme = {
|
||||
scheme = config.colorScheme.name;
|
||||
author = config.colorScheme.author;
|
||||
base00 = config.colorScheme.palette.base00;
|
||||
base01 = config.colorScheme.palette.base01;
|
||||
base02 = config.colorScheme.palette.base02;
|
||||
base03 = config.colorScheme.palette.base03;
|
||||
base04 = config.colorScheme.palette.base04;
|
||||
base05 = config.colorScheme.palette.base05;
|
||||
base06 = config.colorScheme.palette.base06;
|
||||
base07 = config.colorScheme.palette.base07;
|
||||
base08 = config.colorScheme.palette.base08;
|
||||
base09 = config.colorScheme.palette.base09;
|
||||
base0A = config.colorScheme.palette.base0A;
|
||||
base0B = config.colorScheme.palette.base0B;
|
||||
base0C = config.colorScheme.palette.base0C;
|
||||
base0D = config.colorScheme.palette.base0D;
|
||||
base0E = config.colorScheme.palette.base0E;
|
||||
base0F = config.colorScheme.palette.base0F;
|
||||
};
|
||||
opacity = {
|
||||
desktop = 0.7;
|
||||
terminal = 0.7;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
sizes = {
|
||||
applications = 14;
|
||||
terminal = 24;
|
||||
desktop = 12;
|
||||
};
|
||||
serif = config.stylix.fonts.monospace;
|
||||
sansSerif = config.stylix.fonts.monospace;
|
||||
monospace = {
|
||||
package = pkgs.notonoto-35;
|
||||
#name = "NOTONOTO-35-Bold";
|
||||
name = "NOTONOTO-35";
|
||||
};
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-monochrome-emoji;
|
||||
name = "Noto Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/unstable.nix
Normal file
17
home/unstable.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
unstableOverlay = final: prev: {
|
||||
unstable = import inputs.unstable {
|
||||
inherit (final.stdenv.hostPlatform) system;
|
||||
config = config.nixpkgs.config;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
nixpkgs.overlays = [ unstableOverlay ];
|
||||
}
|
||||
@@ -30,7 +30,7 @@ in
|
||||
layout = [
|
||||
{
|
||||
label = "lock";
|
||||
action = "swaylock";
|
||||
action = "gtklock";
|
||||
text = "Lock";
|
||||
keybind = "l";
|
||||
}
|
||||
|
||||
45
home/xdg.nix
45
home/xdg.nix
@@ -4,22 +4,39 @@
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal
|
||||
#xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gnome
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
xdg-launch
|
||||
xdg-ninja
|
||||
xdg-utils
|
||||
];
|
||||
|
||||
{
|
||||
# Enable XDG base directories
|
||||
xdg.enable = true;
|
||||
|
||||
# home.sessionVariables = {
|
||||
# };
|
||||
# Install the necessary packages for XDG compliance and management
|
||||
home.packages = with pkgs; [
|
||||
xdg-utils
|
||||
xdg-launch
|
||||
xdg-ninja
|
||||
];
|
||||
|
||||
# Define session variables for XDG directories
|
||||
home.sessionVariables = {
|
||||
# Set other tools' paths to XDG directories (they should be relative to XDG_DATA_HOME or XDG_STATE_HOME)
|
||||
GOPATH = "$XDG_DATA_HOME/go";
|
||||
CARGO_HOME = "$XDG_DATA_HOME/cargo";
|
||||
RUSTUP_HOME = "$XDG_DATA_HOME/rustup";
|
||||
DOTNET_CLI_HOME = "$XDG_DATA_HOME/dotnet";
|
||||
GNUPGHOME = "$XDG_DATA_HOME/gnupg";
|
||||
ZDOTDIR = "$XDG_CONFIG_HOME/zsh"; # Optional, for Zsh configuration
|
||||
HISTFILE = "$XDG_STATE_HOME/bash/history"; # Optional, for Bash history file location
|
||||
};
|
||||
|
||||
# Enable XDG user directories (like Documents, Downloads, etc.)
|
||||
xdg.userDirs.enable = true;
|
||||
xdg.userDirs.createDirectories = true;
|
||||
|
||||
# Enable autostart functionality with read-only mode (prevents arbitrary service additions)
|
||||
xdg.autostart.enable = true;
|
||||
xdg.autostart.readOnly = true;
|
||||
|
||||
# Handle XDG MIME type associations (useful for apps)
|
||||
xdg.mime.enable = true;
|
||||
xdg.mimeApps.enable = true;
|
||||
}
|
||||
|
||||
54
home/zed.nix
54
home/zed.nix
@@ -1,40 +1,78 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
unstable,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nodejs
|
||||
copilot-language-server-fhs
|
||||
copilot-language-server
|
||||
github-copilot-cli
|
||||
nixd
|
||||
nodejs-slim
|
||||
vscode-extensions.github.copilot
|
||||
];
|
||||
|
||||
programs.zed-editor = {
|
||||
enable = true;
|
||||
#package = pkgs.zed-editor-fhs;
|
||||
package = pkgs.unstable.zed-editor-fhs;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
nodejs
|
||||
copilot-language-server-fhs
|
||||
copilot-language-server
|
||||
github-copilot-cli
|
||||
nixd
|
||||
nodejs-slim
|
||||
vscode-extensions.github.copilot
|
||||
];
|
||||
extensions = [ "nix" "toml" "rust" "html" "yaml" "python" "make" "xml" "dockerfile" "vue" "latex" "csv" "rainbow csv" "snippets" "typst" "mermaid" "markdownlint" "markdown oxide" "java" "dart" "go" "c#" "json" "flask snippets" "python snippets" "flutter snippets" "tokyo night themes"];
|
||||
extensions = [
|
||||
"nix"
|
||||
"toml"
|
||||
"rust"
|
||||
"html"
|
||||
"yaml"
|
||||
"python"
|
||||
"make"
|
||||
"xml"
|
||||
"dockerfile"
|
||||
"vue"
|
||||
"latex"
|
||||
"csv"
|
||||
"rainbow csv"
|
||||
"snippets"
|
||||
"typst"
|
||||
"mermaid"
|
||||
"markdownlint"
|
||||
"markdown oxide"
|
||||
"java"
|
||||
"dart"
|
||||
"go"
|
||||
"c#"
|
||||
"json"
|
||||
"flask snippets"
|
||||
"python snippets"
|
||||
"flutter snippets"
|
||||
"tokyo night themes"
|
||||
"opencode"
|
||||
];
|
||||
userSettings = {
|
||||
theme = {
|
||||
mode = "system";
|
||||
dark = "Tokyo Night";
|
||||
light = "Tokyo Night Storm";
|
||||
};
|
||||
|
||||
features = {
|
||||
edit_prediction_provider = "copilot";
|
||||
};
|
||||
agent = {
|
||||
default_profile = "write";
|
||||
default_model = {
|
||||
provider = "copilot_chat";
|
||||
model = "claude-opus-4.5";
|
||||
};
|
||||
model_parameters = [ ];
|
||||
};
|
||||
|
||||
hour_format = "hour24";
|
||||
node = {
|
||||
path = lib.getExe pkgs.nodejs;
|
||||
|
||||
@@ -2,61 +2,66 @@
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
|
||||
# Core system modules
|
||||
../../modules/boot.nix
|
||||
../../modules/nix.nix
|
||||
../../modules/pam.nix
|
||||
../../modules/polkit.nix
|
||||
../../modules/zram.nix
|
||||
|
||||
|
||||
# Networking and remote access
|
||||
../../modules/openssh.nix
|
||||
../../modules/tailscale.nix
|
||||
|
||||
|
||||
# User interface and desktop
|
||||
../../modules/displaymanager.nix
|
||||
../../modules/xdg.nix
|
||||
../../modules/sound.nix
|
||||
../../modules/bluetooth.nix
|
||||
../../modules/desktopApplications.nix
|
||||
|
||||
|
||||
# Development tools and user configuration
|
||||
../../modules/basePackages.nix
|
||||
../../modules/develPackages.nix
|
||||
../../modules/gunalx.nix
|
||||
|
||||
|
||||
# Containerization and cloud
|
||||
../../modules/podman.nix
|
||||
|
||||
|
||||
# Scientific and data tools
|
||||
../../modules/jupyterhub.nix
|
||||
|
||||
|
||||
# Software and gaming
|
||||
../../modules/steam.nix
|
||||
|
||||
|
||||
# SDR (Software Defined Radio)
|
||||
../../modules/rtlsdr.nix
|
||||
../../modules/websdr.nix
|
||||
|
||||
|
||||
# Secrets management
|
||||
../../secrets/sops.nix
|
||||
../../secrets/sopsconf.nix
|
||||
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
services.desktopManager.gnome.enable = true;
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
|
||||
# Setup keyfile
|
||||
boot.initrd.secrets = {
|
||||
@@ -64,8 +69,10 @@
|
||||
};
|
||||
|
||||
# Enable swap on luks
|
||||
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".device = "/dev/disk/by-uuid/08650b6b-6143-4503-8bf5-a3d32ef62d73";
|
||||
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".keyFile = "/crypto_keyfile.bin";
|
||||
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".device =
|
||||
"/dev/disk/by-uuid/08650b6b-6143-4503-8bf5-a3d32ef62d73";
|
||||
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".keyFile =
|
||||
"/crypto_keyfile.bin";
|
||||
|
||||
networking.hostName = "aragon"; # Define your hostname.
|
||||
time.timeZone = "Europe/Amsterdam";
|
||||
@@ -79,15 +86,14 @@
|
||||
|
||||
# sleep wakeup rules
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
|
||||
'';
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
|
||||
'';
|
||||
|
||||
#comment out to enable sleep. Uncommented over vacations
|
||||
# systemd.targets.sleep.enable = false;
|
||||
# systemd.targets.suspend.enable = false;
|
||||
# systemd.targets.hibernate.enable = false;
|
||||
# systemd.targets.hybrid-sleep.enable = false;
|
||||
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
|
||||
@@ -1,26 +1,35 @@
|
||||
# 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, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
|
||||
boot.initrd.kernelModules = ["amdgpu" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"sr_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ "amdgpu" ];
|
||||
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
hardware.amdgpu.opencl.enable = true;
|
||||
hardware.amdgpu.amdvlk.enable = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||
systemd.tmpfiles.rules = [
|
||||
@@ -28,62 +37,84 @@
|
||||
];
|
||||
|
||||
nixpkgs.config.rocmSupport = true;
|
||||
|
||||
environment.variables = {
|
||||
HSA_OVERRIDE_GFX_VERSION="10.3.0";
|
||||
nixpkgs.config.rocmTargets = [ "gfx1030" ];
|
||||
|
||||
environment.variables = {
|
||||
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
|
||||
};
|
||||
# Environment variables for ROCm
|
||||
environment.sessionVariables = {
|
||||
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
|
||||
ROCM_PATH = "${pkgs.rocmPackages.rocm-core}/opt/rocm";
|
||||
HIP_PATH = "${pkgs.rocmPackages.rocm-core}/opt/rocm/hip";
|
||||
};
|
||||
|
||||
|
||||
#hardware.opengl.extraPackages32 = with pkgs; [
|
||||
# driversi686Linux.amdvlk
|
||||
#];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
lact
|
||||
rocmPackages.rocminfo
|
||||
rocmPackages.rocm-smi
|
||||
rocmPackages.rocm-runtime
|
||||
rocmPackages.rocm-device-libs
|
||||
rocmPackages.rocm-core
|
||||
rocmPackages.rocm-cmake
|
||||
rocmPackages.rocgdb
|
||||
rocmPackages.rocblas
|
||||
rocmPackages.rccl
|
||||
];
|
||||
systemd.packages = with pkgs; [ lact ];
|
||||
systemd.services.lactd.wantedBy = ["multi-user.target"];
|
||||
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/8ab16ad5-08d2-44f9-a9e4-2e6240bfd8f8";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/mnt/steam" =
|
||||
{ device = "/dev/disk/by-id/nvme-Samsung_SSD_990_PRO_with_Heatsink_2TB_S7HPNJ0X304250L-part1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-31bf11fb-518a-408a-af06-93af528a5985".device = "/dev/disk/by-uuid/31bf11fb-518a-408a-af06-93af528a5985";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/9A50-906F";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/c7cdfab4-2c92-42de-b951-ccc6fcd7b7d7"; }
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
rocmPackages.clr.icd
|
||||
];
|
||||
};
|
||||
|
||||
# Enable Vulkan support
|
||||
hardware.opengl.enable = true;
|
||||
hardware.opengl.extraPackages = with pkgs; [
|
||||
vulkan-loader
|
||||
vulkan-tools
|
||||
vulkan-headers
|
||||
];
|
||||
|
||||
# You *can* still put utilities here
|
||||
environment.systemPackages = with pkgs; [
|
||||
vulkan-tools
|
||||
clinfo
|
||||
rocmPackages.clr
|
||||
rocmPackages.rocminfo
|
||||
rocmPackages.rocm-runtime
|
||||
rocmPackages.rocm-core
|
||||
rocmPackages.rocm-smi
|
||||
rocmPackages.rocblas
|
||||
rocmPackages.rccl
|
||||
rocmPackages.hipcc
|
||||
lact
|
||||
rocmPackages.rocminfo
|
||||
rocmPackages.rocm-smi
|
||||
rocmPackages.rocm-runtime
|
||||
rocmPackages.rocm-device-libs
|
||||
rocmPackages.rocm-core
|
||||
rocmPackages.rocm-cmake
|
||||
rocmPackages.rocgdb
|
||||
rocmPackages.rocblas
|
||||
rocmPackages.rccl
|
||||
rocmPackages.hipcc
|
||||
];
|
||||
|
||||
systemd.packages = with pkgs; [ lact ];
|
||||
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/8ab16ad5-08d2-44f9-a9e4-2e6240bfd8f8";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/mnt/steam" = {
|
||||
device = "/dev/disk/by-id/nvme-Samsung_SSD_990_PRO_with_Heatsink_2TB_S7HPNJ0X304250L-part1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-31bf11fb-518a-408a-af06-93af528a5985".device =
|
||||
"/dev/disk/by-uuid/31bf11fb-518a-408a-af06-93af528a5985";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/9A50-906F";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/c7cdfab4-2c92-42de-b951-ccc6fcd7b7d7"; }
|
||||
];
|
||||
|
||||
# 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.enp10s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
||||
62
hosts/elros/configuration.nix
Normal file
62
hosts/elros/configuration.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page, on
|
||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
../../modules/boot.nix
|
||||
../../modules/zram.nix
|
||||
../../modules/nix.nix
|
||||
../../modules/openssh.nix
|
||||
../../modules/gunalx.nix
|
||||
../../secrets/sops.nix
|
||||
../../secrets/sopsconf.nix
|
||||
../../modules/pam.nix
|
||||
../../modules/tailscale.nix
|
||||
../../modules/basePackages.nix
|
||||
|
||||
../../modules/acme.nix
|
||||
../../modules/pangolin.nix
|
||||
|
||||
];
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; # support rpi building
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "elros";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
time.timeZone = "Europe/Amsterdam";
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.05"; # Did you read the comment?
|
||||
|
||||
}
|
||||
55
hosts/elros/hardware-configuration.nix
Normal file
55
hosts/elros/hardware-configuration.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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/7fa4de3a-20bb-4d0f-b049-dd6a0a0aee6e";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/E04D-431D";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
services.qemuGuest.enable = true;
|
||||
|
||||
# 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.ens18.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
88
hosts/elros/routes.nix
Normal file
88
hosts/elros/routes.nix
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.caddy.virtualHosts = {
|
||||
"managment.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.104.182.48
|
||||
basicauth {
|
||||
import ${config.sops.secrets."nginx/defaultpass".path}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
"funn-nas.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy https://100.104.182.48:30044 {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
basicauth {
|
||||
import ${config.sops.secrets."nginx/defaultpass".path}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
"film.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.104.182.48:8096
|
||||
'';
|
||||
};
|
||||
|
||||
"home.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://10.0.0.32:8123
|
||||
'';
|
||||
};
|
||||
|
||||
"jellyfin.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:8096
|
||||
'';
|
||||
};
|
||||
|
||||
"podgrab.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:4242
|
||||
basicauth {
|
||||
import ${config.sops.secrets."nginx/defaultpass".path}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
"jupyter.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:8771
|
||||
'';
|
||||
};
|
||||
|
||||
"rss.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:8089
|
||||
'';
|
||||
};
|
||||
|
||||
"ai.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:11111
|
||||
'';
|
||||
};
|
||||
|
||||
"chat.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:11111
|
||||
'';
|
||||
};
|
||||
|
||||
"archive.lauterer.it" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy http://100.84.215.84:8082
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -2,12 +2,18 @@
|
||||
# your system. Help is available in the configuration.nix(5) man page, on
|
||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
#./nvidia.nix #we have intel gpu now
|
||||
../../modules/boot.nix
|
||||
../../modules/zram.nix
|
||||
../../modules/zfs.nix
|
||||
@@ -23,29 +29,35 @@
|
||||
../../modules/basePackages.nix
|
||||
../../modules/develPackages.nix
|
||||
|
||||
|
||||
|
||||
../../modules/vaultvarden.nix
|
||||
../../modules/authelia.nix
|
||||
../../modules/jellyfin.nix
|
||||
../../modules/jupyterhub.nix
|
||||
../../modules/qbittorrent.nix # broken for now?: Yes, just need to add the zfs disc again, to enable the paths this depends on. Lets redo that maybe?
|
||||
../../modules/qbittorrent.nix
|
||||
../../modules/mealie.nix
|
||||
../../modules/miniflux.nix
|
||||
../../modules/ollama.nix
|
||||
../../modules/openwebui.nix
|
||||
#../../modules/ollama.nix # replaced by llama-cpp + llama-swap
|
||||
#../../modules/openwebui.nix # using llama-cpp built-in UI instead
|
||||
../../modules/llama-swap.nix
|
||||
../../modules/librechat.nix
|
||||
../../modules/immich.nix
|
||||
|
||||
];
|
||||
];
|
||||
|
||||
#Load zfs pool
|
||||
boot.zfs.extraPools = [ "Main" ];
|
||||
networking.hostId = "1ccccd3a";
|
||||
|
||||
## Load zfs pool
|
||||
boot.zfs.extraPools = [
|
||||
"lorien"
|
||||
];
|
||||
boot.zfs.requestEncryptionCredentials = true;
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "galadriel";
|
||||
networking.networkmanager.enable = true;
|
||||
networking.hostName = "galadriel";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
time.timeZone = "Europe/Amsterdam";
|
||||
|
||||
@@ -69,4 +81,3 @@
|
||||
system.stateVersion = "25.05"; # Did you read the comment?
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,30 +1,83 @@
|
||||
# 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, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"nvme"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.kernelPackages = pkgs.linuxPackages_6_18;
|
||||
boot.zfs.package = pkgs.zfs_2_4;
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
boot.kernelParams = [
|
||||
"xe.force_probe=e212"
|
||||
"xe.vram_force_mmapable=1"
|
||||
"transparent_hugepage=always"
|
||||
];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/7789ad41-d578-40bc-bf86-b761e0a4921e";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card*", ATTR{device/tile0/gt0/engines/ccs0/job_timeout_ms}="100000"
|
||||
ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card*", ATTR{device/tile0/gt0/engines/rcs0/job_timeout_ms}="100000"
|
||||
'';
|
||||
|
||||
boot.initrd.luks.devices."NIXROOT".device = "/dev/disk/by-uuid/082790fd-3d4b-4307-8a43-b9c56bd86e03";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/3DE0-D86E";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.firmware = [ pkgs.linux-firmware ];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mkl
|
||||
];
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
vpl-gpu-rt
|
||||
|
||||
#hardware decode and opencl
|
||||
intel-media-driver # LIBVA_DRIVER_NAME=iHD (for HD Graphics starting Broadwell (2014) and newer)
|
||||
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||
libvdpau-va-gl
|
||||
intel-compute-runtime
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/7789ad41-d578-40bc-bf86-b761e0a4921e";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."NIXROOT".device =
|
||||
"/dev/disk/by-uuid/082790fd-3d4b-4307-8a43-b9c56bd86e03";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/3DE0-D86E";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
|
||||
@@ -34,8 +34,10 @@
|
||||
../../modules/jupyterhub.nix
|
||||
../../modules/blog.nix
|
||||
../../modules/ollama.nix
|
||||
#../../modules/docling.nix # temp for dev ... Waiting for non broken docling-serve
|
||||
../../modules/kdeconnect.nix
|
||||
../../modules/desktopApplications.nix
|
||||
../../modules/fcitx5.nix
|
||||
|
||||
];
|
||||
|
||||
@@ -45,11 +47,10 @@
|
||||
# Select internationalisation properties.
|
||||
# i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
|
||||
#testing terminal from printer cable.
|
||||
services.printing.enable = true;
|
||||
boot.kernelModules = [ "usblp" ];
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
@@ -67,8 +68,7 @@
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
|
||||
services.xserver.desktopManager.gnome.enable=true;
|
||||
|
||||
services.desktopManager.gnome.enable = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
@@ -11,10 +17,15 @@
|
||||
"mem_sleep_default=deep"
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "uas" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"nvme"
|
||||
"uas"
|
||||
"rtsx_pci_sdmmc"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/NIXROOT";
|
||||
@@ -24,11 +35,14 @@
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices.luks_secure = {
|
||||
device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
|
||||
device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
|
||||
crypttabExtraOpts = [
|
||||
#"tpm2-device=auto"
|
||||
#"tpm2-measure-pcr=yes"
|
||||
@@ -42,11 +56,8 @@
|
||||
systemd.targets.hibernate.enable = false;
|
||||
|
||||
#services.logind.lidSwitch = "suspend";
|
||||
powerManagement.enable = true;
|
||||
powerManagement.enable = true;
|
||||
|
||||
|
||||
|
||||
|
||||
# Disable hibernation
|
||||
systemd.sleep = {
|
||||
extraConfig = ''
|
||||
@@ -55,17 +66,15 @@
|
||||
AllowSuspendThenHibernate=no
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
# Disable PCIe wakeups
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
|
||||
'';
|
||||
|
||||
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [ vpl-gpu-rt intel-media-sdk ];
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [ vpl-gpu-rt ];
|
||||
};
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
|
||||
15
logs/.3b25ae2de0fbeb00e6dda3e0073fa9cb0e57638a-audit.json
Normal file
15
logs/.3b25ae2de0fbeb00e6dda3e0073fa9cb0e57638a-audit.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keep": {
|
||||
"days": true,
|
||||
"amount": 14
|
||||
},
|
||||
"auditLog": "/root/nix-dotfiles-v2/logs/.3b25ae2de0fbeb00e6dda3e0073fa9cb0e57638a-audit.json",
|
||||
"files": [
|
||||
{
|
||||
"date": 1770986611784,
|
||||
"name": "/root/nix-dotfiles-v2/logs/meiliSync-2026-02-13.log",
|
||||
"hash": "7de8e8f093ec0024291182935955d48e6faa12c30d1281c4c40975ae0cedab3b"
|
||||
}
|
||||
],
|
||||
"hashType": "sha256"
|
||||
}
|
||||
15
logs/.b5209f00e6380d23f0ed6df28f46a1a7ee75e7db-audit.json
Normal file
15
logs/.b5209f00e6380d23f0ed6df28f46a1a7ee75e7db-audit.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keep": {
|
||||
"days": true,
|
||||
"amount": 14
|
||||
},
|
||||
"auditLog": "/root/nix-dotfiles-v2/logs/.b5209f00e6380d23f0ed6df28f46a1a7ee75e7db-audit.json",
|
||||
"files": [
|
||||
{
|
||||
"date": 1770986611781,
|
||||
"name": "/root/nix-dotfiles-v2/logs/error-2026-02-13.log",
|
||||
"hash": "2533ea2611b1422793883fd7f9d44dd1322e7376a04debcfbed53c3a3196b26e"
|
||||
}
|
||||
],
|
||||
"hashType": "sha256"
|
||||
}
|
||||
43
modules/acme.nix
Normal file
43
modules/acme.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.secrets."acme/certs" = { };
|
||||
networking.enableIPv6 = false; # For some reason acme only works without ipv6, probably because of missing AAAA records.
|
||||
networking.domain = "lauterer.it";
|
||||
#acme and certs helpful blog https://carjorvaz.com/posts/
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults.email = "adrian+acme@lauterer.it";
|
||||
certs."${config.networking.domain}" = {
|
||||
domain = "${config.networking.domain}";
|
||||
extraDomainNames = [
|
||||
"*.${config.networking.domain}"
|
||||
"lb0fj.eu"
|
||||
"*.lb0fj.eu"
|
||||
"256.no"
|
||||
"*.256.no"
|
||||
"*.addictedmaker.eu"
|
||||
"addictedmaker.eu"
|
||||
];
|
||||
## for testing.
|
||||
#server = "https://acme-staging-v02.api.letsencrypt.org/directory";
|
||||
#enableDebugLogs = true;
|
||||
|
||||
#legos registrar specific stuff.
|
||||
dnsResolver = "ns1.hyp.net:53";
|
||||
dnsProvider = "domeneshop";
|
||||
dnsPropagationCheck = true;
|
||||
|
||||
#need to manually create this file according to dnsprovider secrets, and format of key according to lego in privider and add to secrets.yaml
|
||||
credentialsFile = config.sops.secrets."acme/certs".path;
|
||||
};
|
||||
};
|
||||
|
||||
#add proxyserver to acme group
|
||||
#users.users.nginx.extraGroups = [ "acme" ];
|
||||
users.users.root.extraGroups = [ "acme" ];
|
||||
}
|
||||
63
modules/authelia.nix
Normal file
63
modules/authelia.nix
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.secrets."authelia/usersFile" = {
|
||||
owner = "authelia-main";
|
||||
group = "authelia-main";
|
||||
mode = "0400";
|
||||
};
|
||||
sops.secrets."authelia/jwtSecretFile" = {
|
||||
owner = "authelia-main";
|
||||
group = "authelia-main";
|
||||
mode = "0400";
|
||||
};
|
||||
sops.secrets."authelia/storageEncryptionKeyFile" = {
|
||||
owner = "authelia-main";
|
||||
group = "authelia-main";
|
||||
mode = "0400";
|
||||
};
|
||||
|
||||
services.authelia.instances.main = {
|
||||
enable = true;
|
||||
secrets.storageEncryptionKeyFile = config.sops.secrets."authelia/storageEncryptionKeyFile".path;
|
||||
secrets.jwtSecretFile = config.sops.secrets."authelia/jwtSecretFile".path;
|
||||
|
||||
settings = {
|
||||
theme = "dark";
|
||||
default_2fa_method = "totp";
|
||||
log.level = "warn";
|
||||
server.disable_healthcheck = false;
|
||||
server.address = "tcp://0.0.0.0:9091/";
|
||||
|
||||
authentication_backend = {
|
||||
file = {
|
||||
path = lib.mkDefault config.sops.secrets."authelia/usersFile".path;
|
||||
};
|
||||
};
|
||||
session = {
|
||||
cookies = [
|
||||
{
|
||||
domain = "lauterer.it";
|
||||
}
|
||||
];
|
||||
};
|
||||
access_control = {
|
||||
default_policy = "one_factor";
|
||||
};
|
||||
storage = {
|
||||
local = {
|
||||
path = lib.mkDefault "/var/lib/authelia/main/db.sqlite3";
|
||||
};
|
||||
};
|
||||
notifier = {
|
||||
filesystem = {
|
||||
filename = lib.mkDefault "/var/lib/authelia/main/notification.txt";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -10,7 +10,9 @@
|
||||
git
|
||||
wget
|
||||
htop
|
||||
busybox
|
||||
bottom
|
||||
nvtopPackages.full
|
||||
uutils-coreutils
|
||||
nixfmt-rfc-style
|
||||
nixfmt-tree
|
||||
|
||||
@@ -18,6 +20,12 @@
|
||||
unzip
|
||||
|
||||
ripgrep
|
||||
eza
|
||||
fastfetch
|
||||
|
||||
rsync
|
||||
screen
|
||||
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.blog-generator = {
|
||||
enable = true;
|
||||
contentDir = "/var/lib/www/blog/content";
|
||||
port = 8080;
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
@@ -22,7 +23,7 @@
|
||||
krita
|
||||
sweethome3d.application
|
||||
audacity
|
||||
bitwarden
|
||||
bitwarden-desktop
|
||||
openvpn
|
||||
zettlr # notes
|
||||
logseq
|
||||
@@ -33,9 +34,10 @@
|
||||
prusa-slicer
|
||||
freecad-wayland
|
||||
openscad-unstable
|
||||
kicad-unstable
|
||||
kicadAddons.kikit
|
||||
kicadAddons.kikit-library
|
||||
kicad
|
||||
easyeda2kicad
|
||||
|
||||
#kicad-unstable
|
||||
easyeffects
|
||||
musescore
|
||||
mpv
|
||||
@@ -74,6 +76,11 @@
|
||||
tealdeer
|
||||
clipboard-jh
|
||||
|
||||
ffmpeg
|
||||
wl-clipboard
|
||||
ydotool
|
||||
wl-mirror
|
||||
|
||||
noto-fonts-cjk-sans
|
||||
|
||||
];
|
||||
|
||||
@@ -6,10 +6,12 @@
|
||||
}:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
aider-chat-full
|
||||
|
||||
zip
|
||||
unzip
|
||||
jq
|
||||
curl
|
||||
wget
|
||||
|
||||
openssl
|
||||
gdb
|
||||
@@ -34,6 +36,10 @@
|
||||
valgrind
|
||||
fontconfig
|
||||
|
||||
imagemagickBig
|
||||
|
||||
plantuml
|
||||
|
||||
rustup
|
||||
rustfmt
|
||||
treefmt
|
||||
@@ -43,23 +49,36 @@
|
||||
node2nix
|
||||
|
||||
jupyter
|
||||
python3
|
||||
python3Packages.uv
|
||||
python3Packages.ipykernel
|
||||
|
||||
python3Packages.flask
|
||||
python3Packages.flask-sqlalchemy
|
||||
python3Packages.flask-socketio
|
||||
python3Packages.werkzeug
|
||||
python3Packages.pyyaml
|
||||
python3Packages.authlib
|
||||
python3Packages.litellm
|
||||
python3Packages.requests
|
||||
python3Packages.flake8
|
||||
python3Packages.torch
|
||||
python3Packages.litellm
|
||||
python3Packages.pycryptodome
|
||||
|
||||
|
||||
uv
|
||||
poetry
|
||||
thonny
|
||||
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
ipykernel
|
||||
flask
|
||||
flask-sqlalchemy
|
||||
flask-socketio
|
||||
werkzeug
|
||||
pyyaml
|
||||
authlib
|
||||
litellm
|
||||
requests
|
||||
flake8
|
||||
torch
|
||||
pycryptodome
|
||||
numpy
|
||||
scipy
|
||||
pandas
|
||||
matplotlib
|
||||
vispy
|
||||
pyvista
|
||||
pygame
|
||||
seaborn
|
||||
scikit-learn
|
||||
]
|
||||
))
|
||||
|
||||
github-copilot-cli
|
||||
|
||||
|
||||
@@ -6,27 +6,28 @@
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
environment.systemPackages = [(
|
||||
pkgs.catppuccin-sddm.override {
|
||||
environment.systemPackages = [
|
||||
(pkgs.catppuccin-sddm.override {
|
||||
flavor = "mocha";
|
||||
font = "Noto Sans";
|
||||
accent = "teal";
|
||||
fontSize = "24";
|
||||
background = "${../home/Wallpapers/1346679.jpg}";
|
||||
background = ../home/Wallpapers/1346679.jpg;
|
||||
loginBackground = true;
|
||||
}
|
||||
)];
|
||||
})
|
||||
];
|
||||
|
||||
services.displayManager = {
|
||||
enable = true;
|
||||
sessionPackages = with pkgs; [ niri ];
|
||||
defaultSession = "niri";
|
||||
|
||||
sddm = {
|
||||
enable = true;
|
||||
autoNumlock = true;
|
||||
enableHidpi = true;
|
||||
theme = "catppuccin-mocha";
|
||||
wayland.enable = true;
|
||||
theme = "catppuccin-mocha-teal";
|
||||
package = pkgs.kdePackages.sddm;
|
||||
};
|
||||
|
||||
|
||||
16
modules/docling.nix
Normal file
16
modules/docling.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.docling-serve = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.docling-serve;
|
||||
port = 5001;
|
||||
host = "127.0.0.1";
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,38 +1,28 @@
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
# System-level fcitx5 configuration for Wayland
|
||||
# This prevents GTK_IM_MODULE from being set, which is recommended for Wayland
|
||||
i18n.inputMethod = {
|
||||
enable = true;
|
||||
type = "fcitx5";
|
||||
fcitx5 = {
|
||||
waylandFrontend = true;
|
||||
addons = with pkgs; [
|
||||
fcitx5-rime
|
||||
fcitx5-mozc
|
||||
fcitx5-gtk
|
||||
fcitx5-configtool
|
||||
fcitx5-material-color # Add the theme package
|
||||
];
|
||||
|
||||
settings = {
|
||||
# Correct hotkey section:
|
||||
globalOptions.Hotkey = {
|
||||
TriggerKey = "Control+space";
|
||||
};
|
||||
|
||||
# Addon settings for the theme
|
||||
addons.classicui = {
|
||||
globalSection = {
|
||||
Theme = "Material-Color-Dark";
|
||||
DarkTheme = "Material-Color-Dark";
|
||||
UseDarkTheme = true;
|
||||
};
|
||||
};
|
||||
|
||||
inputMethod = {
|
||||
GroupOrder."0" = "Default";
|
||||
"Groups/0" = {
|
||||
Name = "Default";
|
||||
"Default Layout" = "us";
|
||||
"DefaultIM" = "keyboard-us";
|
||||
DefaultIM = "mozc";
|
||||
};
|
||||
"Groups/0/Items/0" = {
|
||||
Name = "keyboard-us";
|
||||
@@ -46,12 +36,21 @@
|
||||
Name = "keyboard-no";
|
||||
Layout = "no";
|
||||
};
|
||||
"Groups" = {
|
||||
GroupOrder = "Default";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
addons = with pkgs; [
|
||||
fcitx5-rime
|
||||
fcitx5-mozc
|
||||
fcitx5-gtk
|
||||
qt6Packages.fcitx5-configtool
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Ensure fcitx5 starts with the session
|
||||
services.xserver.desktopManager.runXdgAutostartIfNone = true;
|
||||
|
||||
# environment.sessionVariables = {
|
||||
# GTK_IM_MODULE = lib.mkForce "";
|
||||
# };
|
||||
}
|
||||
@@ -12,10 +12,9 @@
|
||||
|
||||
openFirewall = true;
|
||||
|
||||
mediaLocation = "/Main/Data/media/pictures";
|
||||
mediaLocation = "/lorien/media/pictures";
|
||||
accelerationDevices = null;
|
||||
|
||||
|
||||
settings = {
|
||||
newVersionCheck.enabled = false;
|
||||
};
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
users.groups.media.members = ["jellyfin"]; #have media directory owned by media group
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
users.groups.media.members = [ "jellyfin" ]; # have media directory owned by media group
|
||||
services.jellyfin = {
|
||||
enable = true;
|
||||
group = "media";
|
||||
group = "media";
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,33 +1,42 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
myPython = pkgs.python3;
|
||||
myPython = pkgs.python3;
|
||||
|
||||
myJupyterHubEnv = myPython.withPackages (ps: with ps; [
|
||||
jupyterhub
|
||||
jupyterhub-systemdspawner
|
||||
ipython
|
||||
jupyterlab
|
||||
notebook
|
||||
ipykernel
|
||||
numpy
|
||||
scipy
|
||||
pandas
|
||||
matplotlib
|
||||
seaborn
|
||||
scikit-learn
|
||||
]);
|
||||
myJupyterHubEnv = myPython.withPackages (
|
||||
ps: with ps; [
|
||||
jupyterhub
|
||||
jupyterhub-systemdspawner
|
||||
ipython
|
||||
jupyterlab
|
||||
notebook
|
||||
ipykernel
|
||||
numpy
|
||||
scipy
|
||||
pandas
|
||||
matplotlib
|
||||
seaborn
|
||||
scikit-learn
|
||||
]
|
||||
);
|
||||
|
||||
myJupyterLabEnv = myPython.withPackages (ps: with ps; [
|
||||
jupyterhub
|
||||
jupyterlab
|
||||
ipykernel
|
||||
numpy
|
||||
scipy
|
||||
pandas
|
||||
matplotlib
|
||||
seaborn
|
||||
scikit-learn
|
||||
]);
|
||||
myJupyterLabEnv = myPython.withPackages (
|
||||
ps: with ps; [
|
||||
jupyterhub
|
||||
jupyterlab
|
||||
ipykernel
|
||||
numpy
|
||||
scipy
|
||||
pandas
|
||||
matplotlib
|
||||
seaborn
|
||||
scikit-learn
|
||||
]
|
||||
);
|
||||
|
||||
in
|
||||
{
|
||||
@@ -39,12 +48,12 @@ in
|
||||
python3Packages.seaborn
|
||||
python3Packages.scikit-learn
|
||||
];
|
||||
|
||||
|
||||
users.users.tdt4117 = {
|
||||
isNormalUser = true;
|
||||
home = "/home/tdt4117";
|
||||
description = "tdt4117 - delete after h25";
|
||||
extraGroups = [ ];
|
||||
extraGroups = [ ];
|
||||
# openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... " ];
|
||||
};
|
||||
|
||||
@@ -58,11 +67,14 @@ in
|
||||
c.Authenticator.allow_all = True
|
||||
c.ConfigurableHTTPProxy.api_url = 'http://0.0.0.0:8770'
|
||||
c.JupyterHub.bind_url = 'http://0.0.0.0:8771'
|
||||
'';
|
||||
'';
|
||||
|
||||
kernels = {
|
||||
python3 = let
|
||||
env = (pkgs.python3.withPackages (pythonPackages: with pythonPackages; [
|
||||
python3 =
|
||||
let
|
||||
env = (
|
||||
pkgs.python3.withPackages (
|
||||
pythonPackages: with pythonPackages; [
|
||||
ipykernel
|
||||
pandas
|
||||
scikit-learn
|
||||
@@ -73,40 +85,36 @@ in
|
||||
tqdm
|
||||
numpy
|
||||
scipy
|
||||
|
||||
|
||||
pip
|
||||
torch
|
||||
torchvision
|
||||
lightning
|
||||
numpy
|
||||
scipy
|
||||
matplotlib
|
||||
scikit-image
|
||||
jupyterlab
|
||||
ipykernel
|
||||
pillow
|
||||
tqdm
|
||||
pandas
|
||||
|
||||
|
||||
|
||||
|
||||
]));
|
||||
in {
|
||||
displayName = "Python 3 for machine learning";
|
||||
argv = [
|
||||
"${env.interpreter}"
|
||||
"-m"
|
||||
"ipykernel_launcher"
|
||||
"-f"
|
||||
"{connection_file}"
|
||||
];
|
||||
language = "python";
|
||||
logo32 = "${env}/${env.sitePackages}/ipykernel/resources/logo-32x32.png";
|
||||
logo64 = "${env}/${env.sitePackages}/ipykernel/resources/logo-64x64.png";
|
||||
};
|
||||
pip
|
||||
torch
|
||||
torchvision
|
||||
lightning
|
||||
numpy
|
||||
scipy
|
||||
matplotlib
|
||||
scikit-image
|
||||
jupyterlab
|
||||
ipykernel
|
||||
pillow
|
||||
tqdm
|
||||
pandas
|
||||
]
|
||||
)
|
||||
);
|
||||
in
|
||||
{
|
||||
displayName = "Python 3 for machine learning";
|
||||
argv = [
|
||||
"${env.interpreter}"
|
||||
"-m"
|
||||
"ipykernel_launcher"
|
||||
"-f"
|
||||
"{connection_file}"
|
||||
];
|
||||
language = "python";
|
||||
logo32 = "${env}/${env.sitePackages}/ipykernel/resources/logo-32x32.png";
|
||||
logo64 = "${env}/${env.sitePackages}/ipykernel/resources/logo-64x64.png";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,12 @@
|
||||
enable = true;
|
||||
};
|
||||
networking.firewall = rec {
|
||||
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
allowedUDPPortRanges = allowedTCPPortRanges;
|
||||
};
|
||||
}
|
||||
|
||||
70
modules/librechat.nix
Normal file
70
modules/librechat.nix
Normal file
@@ -0,0 +1,70 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
librechatPort = 3080;
|
||||
mongoUri = "mongodb://127.0.0.1:27017/LibreChat";
|
||||
in
|
||||
{
|
||||
|
||||
|
||||
sops.secrets."librechat/environmentFile" = {};
|
||||
|
||||
|
||||
# Enable MongoDB
|
||||
services.mongodb = {
|
||||
enable = true;
|
||||
package = pkgs.mongodb-ce;
|
||||
# Optional: enableAuth = true;
|
||||
# initialRootPasswordFile = "/path/to/mongo-root-password-file";
|
||||
};
|
||||
|
||||
# LibreChat systemd service
|
||||
systemd.services.librechat = {
|
||||
# Make enable flagged when built
|
||||
enable = true;
|
||||
|
||||
description = "LibreChat server";
|
||||
|
||||
# **Native systemd dependency declarations**
|
||||
requires = [ "mongodb.service" ];
|
||||
after = [ "network.target" "mongodb.service" ];
|
||||
|
||||
serviceConfig = {
|
||||
EnvironmentFile = config.sops.secrets."librechat/environmentFile".path;
|
||||
Restart = "on-failure";
|
||||
User = "librechat";
|
||||
Group = "librechat";
|
||||
|
||||
# ExecStart binds to package binary
|
||||
ExecStart = ''
|
||||
${pkgs.librechat}/bin/librechat-server \
|
||||
--host 0.0.0.0 \
|
||||
--port ${toString librechatPort} \
|
||||
--config /var/lib/librechat/config.yaml
|
||||
'';
|
||||
WorkingDirectory = "/var/lib/librechat";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
|
||||
# Create user
|
||||
users.users.librechat = {
|
||||
isSystemUser = true;
|
||||
description = "LibreChat service user";
|
||||
home = "/var/lib/librechat";
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
users.users.librechat.group = "librechat";
|
||||
users.groups.librechat = {};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/lib/librechat 0755 librechat librechat -"
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
librechatPort
|
||||
27017
|
||||
];
|
||||
}
|
||||
|
||||
33
modules/llama-cpp.nix
Normal file
33
modules/llama-cpp.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
unstable,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
hostname = config.networking.hostName;
|
||||
in
|
||||
|
||||
{
|
||||
environment.systemPackages = [ pkgs.unstable.ollama ];
|
||||
services.llama-cpp = {
|
||||
enable = true;
|
||||
host = "0.0.0.0";
|
||||
port = 11111;
|
||||
package = pkgs.unstable.llama-cpp-vulkan;
|
||||
openFirewall = true;
|
||||
model = "/var/lib/llama/models/Qwen3.5-35B-A3B-UD-Q2_K_XL.gguf" ;
|
||||
extraFlags = [
|
||||
"-c" "32000"
|
||||
"-ngl" "41" # techincally entire qwen3.5
|
||||
"--image-min-tokens" "1024"
|
||||
"--image-max-tokens" "2048"
|
||||
#"--hf-repo" "unsloth/Qwen3.5-35B-A3B-GGUF:Q2_K_L"
|
||||
"--mmproj" "/var/lib/llama/models/mmproj-F16.gguf"
|
||||
"-ctk" "q4_0" "-ctv" "q4_0" # quantisize kv cache.
|
||||
"--no-mmap"
|
||||
];
|
||||
};
|
||||
}
|
||||
117
modules/llama-swap.nix
Normal file
117
modules/llama-swap.nix
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.unstable.llama-cpp-vulkan ];
|
||||
|
||||
services.llama-swap = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.llama-swap;
|
||||
port = 11111;
|
||||
openFirewall = true;
|
||||
|
||||
settings =
|
||||
let
|
||||
#llama-server = "${lib.getExe pkgs.unstable.llama-cpp-vulkan "llama-server"}";
|
||||
llama-server = lib.getExe' pkgs.unstable.llama-cpp-vulkan "llama-server";
|
||||
in
|
||||
{
|
||||
healthCheckTimeout = 180;
|
||||
startPort = 12000;
|
||||
globalTTL = 600;
|
||||
logLevel = "info";
|
||||
|
||||
macros = {
|
||||
ctx = 32768;
|
||||
ngl = 99;
|
||||
kv_cache = "-ctk q4_0 -ctv q4_0";
|
||||
hf_repo = "";
|
||||
};
|
||||
|
||||
models = {
|
||||
"qwen3.5-35b-a3b" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} $\{kv_cache\} --hf-repo $\{hf_repo\} --no-mmap --image-max-tokens 2048 --image-min-tokens 512 --mmproj /var/cache/llama-swap/llama.cpp/unsloth_Qwen3.5-35B-A3B-GGUF_mmproj-F16.gguf";
|
||||
aliases = [ "qwen3.5" ];
|
||||
ttl = 1800;
|
||||
macros = {
|
||||
hf_repo = "unsloth/Qwen3.5-35B-A3B-GGUF:UD-Q2_K_XL";
|
||||
ngl = 40;
|
||||
ctx = 30000;
|
||||
};
|
||||
};
|
||||
"qwen3.5-9b" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} --hf-repo $\{hf_repo\} --no-mmap --image-max-tokens 2048 --image-min-tokens 512 --mmproj-url https://huggingface.co/unsloth/Qwen3.5-9B-GGUF/resolve/main/mmproj-F16.gguf";
|
||||
ttl = 900;
|
||||
macros.hf_repo = "unsloth/Qwen3.5-9B-GGUF:UD-Q4_K_XL";
|
||||
};
|
||||
"qwen3.5-2b" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} --hf-repo $\{hf_repo\} --image-max-tokens 1024 --image-min-tokens 512";
|
||||
ttl = 900;
|
||||
macros.hf_repo = "unsloth/Qwen3.5-2B-GGUF:UD-Q8_K_XL";
|
||||
macros.ctx = 64000;
|
||||
};
|
||||
"ministal-3-8b-reasonning" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} --hf-repo $\{hf_repo\}";
|
||||
aliases = [ "ministral3" ];
|
||||
ttl = 900;
|
||||
macros.hf_repo = "mistralai/Ministral-3-8B-Reasoning-2512-GGUF";
|
||||
};
|
||||
"ministal-3-3b" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} --hf-repo $\{hf_repo\}";
|
||||
aliases = [ "ministral3-mini" ];
|
||||
ttl = 900;
|
||||
macros.hf_repo = "mistralai/Ministral-3-3B-Instruct-2512-GGUF";
|
||||
};
|
||||
"minicpm-o-4_5" = {
|
||||
cmd = "${llama-server} --port $\{PORT\} --host 0.0.0.0 --ctx-size $\{ctx\} -ngl $\{ngl\} --hf-repo $\{hf_repo\}";
|
||||
aliases = [ "openbmb/MiniCPM-o-4_5-gguf" "minicpm" ];
|
||||
ttl = 900;
|
||||
macros.hf_repo = "openbmb/MiniCPM-o-4_5-gguf";
|
||||
};
|
||||
};
|
||||
|
||||
peers = {
|
||||
openrouter = {
|
||||
proxy = "https://openrouter.ai/api";
|
||||
apiKey = "$\{env.OPENROUTER_API_KEY\}";
|
||||
models = [
|
||||
"minimax/minimax-m2.5"
|
||||
"z-ai/glm-5"
|
||||
"qwen/qwen3-coder-next"
|
||||
"moonshotai/kimi-k2.5"
|
||||
];
|
||||
filters = {
|
||||
stripParams = "temperature, top_p";
|
||||
setParams = {
|
||||
provider = {
|
||||
data_collection = "deny";
|
||||
zdr = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
# llama.cpp tries to create its cache under $HOME/.cache; when launched as a
|
||||
# system service HOME may default to "/" ("//.cache/..."), which is often
|
||||
# read-only. Give it a writable cache/state location.
|
||||
systemd.services.llama-swap.serviceConfig = {
|
||||
StateDirectory = "llama-swap";
|
||||
CacheDirectory = "llama-swap";
|
||||
Environment = [
|
||||
"HOME=/var/lib/llama-swap"
|
||||
"XDG_CACHE_HOME=/var/cache/llama-swap"
|
||||
"MESA_SHADER_CACHE_DIR=/var/cache/llama-swap/mesa"
|
||||
"MESA_SHADER_CACHE_MAX_SIZE=1G"
|
||||
|
||||
"GGML_VULKAN_MAX_NODES=16"
|
||||
"GGML_VK_RELAXED_SHAPES=0"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.mealie = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
sops.secrets."miniflux/adminCredentialsFile" = {
|
||||
restartUnits = [ "miniflux.service" ];
|
||||
mode = "0755";
|
||||
};
|
||||
sops.secrets."miniflux/adminCredentialsFile" = {
|
||||
restartUnits = [ "miniflux.service" ];
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
services.miniflux.enable = true;
|
||||
services.miniflux.config.LISTEN_ADDR = "0.0.0.0:8089";
|
||||
services.miniflux.adminCredentialsFile = config.sops.secrets."miniflux/adminCredentialsFile".path;
|
||||
services.miniflux.enable = true;
|
||||
services.miniflux.config.LISTEN_ADDR = "0.0.0.0:8089";
|
||||
services.miniflux.adminCredentialsFile = config.sops.secrets."miniflux/adminCredentialsFile".path;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,14 +6,10 @@
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
imports = [ ./nixpkgs.nix ]; # migrate this afterwards.
|
||||
|
||||
system.rebuild.enableNg = true;
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
# example "python3.11-youtube-dl-2021.12.17"
|
||||
];
|
||||
sops.secrets."github/api" = {
|
||||
mode = "0444";
|
||||
group = "root";
|
||||
@@ -60,10 +56,13 @@
|
||||
}
|
||||
{
|
||||
hostName = "aragon";
|
||||
system = "x86_64-linux";
|
||||
#system = "x86_64-linux";
|
||||
# if the builder supports building for multiple architectures,
|
||||
# replace the previous line by, e.g.,
|
||||
# systems = ["x86_64-linux" "aarch64-linux"];
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
maxJobs = 6;
|
||||
speedFactor = 6001;
|
||||
supportedFeatures = [ ];
|
||||
@@ -74,7 +73,8 @@
|
||||
system = "x86_64-linux";
|
||||
maxJobs = 4;
|
||||
speedFactor = 4001;
|
||||
supportedFeatures = [ "cuda" ];
|
||||
#supportedFeatures = [ "cuda" ];
|
||||
supportedFeatures = [ ];
|
||||
mandatoryFeatures = [ ];
|
||||
}
|
||||
|
||||
|
||||
19
modules/nixpkgs.nix
Normal file
19
modules/nixpkgs.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
# example "python3.11-youtube-dl-2021.12.17"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
51
modules/nvidia.nix
Normal file
51
modules/nvidia.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
boot = {
|
||||
blacklistedKernelModules = [ "nouveau" ];
|
||||
extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
initrd.kernelModules = [ "nvidia" ];
|
||||
};
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
#powerManagement.enable = true;
|
||||
# Fine-grained power management. Turns off GPU when not in use. Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the independent third-party "nouveau" open source driver).
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = false; # need proprietary for cuda.
|
||||
|
||||
# Enable the Nvidia settings menu, accessible via `nvidia-settings`.
|
||||
#nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
|
||||
# Enable the CUDA toolkit
|
||||
#install packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
cudaPackages.cudatoolkit
|
||||
cudaPackages.cudnn
|
||||
nvtopPackages.nvidia
|
||||
cudaPackages.nccl
|
||||
pkgs.cudaPackages.libcublas
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, pkgs, lib, unstable, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
unstable,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
hostname = config.networking.hostName;
|
||||
@@ -9,20 +15,28 @@ in
|
||||
|
||||
services.ollama = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.ollama;
|
||||
package = lib.mkDefault pkgs.unstable.ollama-vulkan;
|
||||
acceleration = lib.mkDefault "vulkan";
|
||||
host = "0.0.0.0";
|
||||
openFirewall = true;
|
||||
port = 11434;
|
||||
home = "/var/lib/ollama";
|
||||
|
||||
environmentVariables = {
|
||||
OLLAMA_CONTEXT_LENGTH = "32000";
|
||||
};
|
||||
# Preloaded models
|
||||
loadModels = [
|
||||
"gemma3:1b"
|
||||
"qwen3:latest"
|
||||
"qwen3:4b"
|
||||
"qwen3:0.6b"
|
||||
"glm-4.7-flash:latest"
|
||||
"rnj-1:latest"
|
||||
"lfm2.5-thinking:latest"
|
||||
"qwen3-vl:4b"
|
||||
"qwen3-vl:2b-instruct-q8_0"
|
||||
"qwen3-vl:latest"
|
||||
"gemma3:4b"
|
||||
"qwen2.5vl:3b"
|
||||
"ministral-3:3b"
|
||||
"ministral-3:latest"
|
||||
"granite3.2-vision"
|
||||
"granite4:tiny-h"
|
||||
"gpt-oss:20b"
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sshLookup = pkgs.writeShellScriptBin "ssh-lookup-root-pubs" ''
|
||||
#!/bin/sh
|
||||
@@ -27,6 +32,5 @@ in
|
||||
port = 22;
|
||||
openFirewall = true;
|
||||
};
|
||||
services.sshguard.enable = true; #protection against brute force attacks
|
||||
services.sshguard.enable = true; # protection against brute force attacks
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
stateDir = "/var/lib/open-webui";
|
||||
@@ -40,7 +45,6 @@ in
|
||||
WEBUI_HOST = "0.0.0.0";
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
# Create persistent state directories (like StateDirectory in systemd)
|
||||
|
||||
31
modules/pangolin.nix
Normal file
31
modules/pangolin.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
sops.secrets."pangolin/environmentFile" = {
|
||||
restartUnits = [ "pangolin.service" ];
|
||||
owner = "pangolin";
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
users.users.pangolin.extraGroups = [ "acme" ];
|
||||
services.pangolin = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
|
||||
package = pkgs.unstable.fosrl-pangolin;
|
||||
|
||||
baseDomain = "lauterer.it";
|
||||
dashboardDomain = "auth.lauterer.it";
|
||||
dnsProvider = "domeneshop";
|
||||
|
||||
#settings
|
||||
environmentFile = config.sops.secrets."pangolin/environmentFile".path;
|
||||
#dataDir
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
dataLocation = "/lorien/media/";
|
||||
in
|
||||
{
|
||||
sops.secrets."qbittorrent/interfaceAddress" = {
|
||||
restartUnits = [ "qbittorrent-nox.service" ];
|
||||
@@ -11,11 +19,10 @@
|
||||
'';
|
||||
sops.templates."qbittorrent-interface-addr.conf".owner = "qbittorrent";
|
||||
|
||||
|
||||
users.users.qbittorrent = {
|
||||
group = lib.mkForce "media";
|
||||
};
|
||||
users.groups.qbittorrent = {};
|
||||
users.groups.qbittorrent = { };
|
||||
|
||||
services.qbittorrent = {
|
||||
enable = true;
|
||||
@@ -25,61 +32,60 @@
|
||||
|
||||
serverConfig = {
|
||||
LegalNotice.Accepted = true;
|
||||
Meta.MigrationVersion=6;
|
||||
Network.PortForwardingEnabled=true;
|
||||
Meta.MigrationVersion = 6;
|
||||
Network.PortForwardingEnabled = true;
|
||||
Preferences = {
|
||||
WebUI = {
|
||||
AuthSubnetWhitelist="192.168.1.0/24, 100.0.0.0/8";
|
||||
AuthSubnetWhitelistEnabled=true;
|
||||
UseUPnP=false;
|
||||
AuthSubnetWhitelist = "192.168.1.0/24, 100.0.0.0/8";
|
||||
AuthSubnetWhitelistEnabled = true;
|
||||
UseUPnP = false;
|
||||
};
|
||||
BitTorrent = {
|
||||
Session = {
|
||||
AddExtensionToIncompleteFiles=true;
|
||||
AlternativeGlobalDLSpeedLimit=1000;
|
||||
AlternativeGlobalUPSpeedLimit=1000;
|
||||
AnonymousModeEnabled=false;
|
||||
BTProtocol="Both";
|
||||
BandwidthSchedulerEnabled=false;
|
||||
DefaultSavePath="/Main/Data/media/Downloads";
|
||||
Encryption=1;
|
||||
FinishedTorrentExportDirectory="/Main/Data/media/Downloads/torrents-complete";
|
||||
GlobalDLSpeedLimit=0;
|
||||
GlobalMaxRatio=1.5;
|
||||
GlobalUPSpeedLimit=0;
|
||||
I2P.Enabled=true;
|
||||
IgnoreLimitsOnLAN=true;
|
||||
IncludeOverheadInLimits=true;
|
||||
Interface="tun0";
|
||||
InterfaceAddress="${config.sops.placeholder."qbittorrent/interfaceAddress"}";
|
||||
#InterfaceAddress="${interfaceaddress}";
|
||||
InterfaceName="tun0";
|
||||
LSDEnabled="true";
|
||||
MaxActiveCheckingTorrents=15;
|
||||
MaxRatioAction=1;
|
||||
Port=44183;
|
||||
Preallocation=true;
|
||||
QueueingSystemEnabled=false;
|
||||
SubcategoriesEnabled=true;
|
||||
Tags="movie, anime";
|
||||
TempPath="/Main/Data/media/Downloads/temp";
|
||||
TempPathEnabled=true;
|
||||
TorrentContentLayout="Subfolder";
|
||||
TorrentExportDirectory="/Main/Data/media/Downloads/torrents";
|
||||
UseAlternativeGlobalSpeedLimit=false;
|
||||
BitTorrent = {
|
||||
Session = {
|
||||
AddExtensionToIncompleteFiles = true;
|
||||
AlternativeGlobalDLSpeedLimit = 1000;
|
||||
AlternativeGlobalUPSpeedLimit = 1000;
|
||||
AnonymousModeEnabled = false;
|
||||
BTProtocol = "Both";
|
||||
BandwidthSchedulerEnabled = false;
|
||||
DefaultSavePath = dataLocation + "Downloads";
|
||||
Encryption = 1;
|
||||
FinishedTorrentExportDirectory = dataLocation + "Downloads/torrents-complete";
|
||||
GlobalDLSpeedLimit = 0;
|
||||
GlobalMaxRatio = 1.5;
|
||||
GlobalUPSpeedLimit = 0;
|
||||
I2P.Enabled = true;
|
||||
IgnoreLimitsOnLAN = true;
|
||||
IncludeOverheadInLimits = true;
|
||||
Interface = "tun0";
|
||||
InterfaceAddress = "${config.sops.placeholder."qbittorrent/interfaceAddress"}";
|
||||
#InterfaceAddress="${interfaceaddress}";
|
||||
InterfaceName = "tun0";
|
||||
LSDEnabled = "true";
|
||||
MaxActiveCheckingTorrents = 15;
|
||||
MaxRatioAction = 1;
|
||||
Port = 44183;
|
||||
Preallocation = true;
|
||||
QueueingSystemEnabled = false;
|
||||
SubcategoriesEnabled = true;
|
||||
Tags = "movie, anime";
|
||||
TempPath = "/Main/Data/media/Downloads/temp";
|
||||
TempPathEnabled = true;
|
||||
TorrentContentLayout = "Subfolder";
|
||||
TorrentExportDirectory = dataLocation + "Downloads/torrents";
|
||||
UseAlternativeGlobalSpeedLimit = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
RSS = {
|
||||
AutoDownloader = {
|
||||
DownloadRepacks=true;
|
||||
EnableProcessing=true;
|
||||
SmartEpisodeFilter="s(\\d+)e(\\d+), (\\d+)x(\\d+), \"(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})\", \"(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})\"";
|
||||
RSS = {
|
||||
AutoDownloader = {
|
||||
DownloadRepacks = true;
|
||||
EnableProcessing = true;
|
||||
SmartEpisodeFilter = "s(\\d+)e(\\d+), (\\d+)x(\\d+), \"(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})\", \"(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})\"";
|
||||
};
|
||||
Session.EnableProcessing = true;
|
||||
};
|
||||
Session.EnableProcessing=true;
|
||||
};
|
||||
General.Locale = "en";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{
|
||||
|
||||
hardware.rtl-sdr.enable = true;
|
||||
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libusb1
|
||||
pkgs.rtl-sdr
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
{ config, pkgs, inputs, system, ... }:
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
unstableOverlay = final: prev: {
|
||||
unstable = import inputs.unstable {
|
||||
inherit system;
|
||||
config = prev.config;
|
||||
inherit (final.stdenv.hostPlatform) system;
|
||||
inherit (config.nixpkgs) config;
|
||||
};
|
||||
};
|
||||
in {
|
||||
in
|
||||
{
|
||||
nixpkgs.overlays = [ unstableOverlay ];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,26 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.system-sendmail
|
||||
];
|
||||
environment.systemPackages = [
|
||||
pkgs.system-sendmail
|
||||
];
|
||||
|
||||
sops.secrets."vaultwarden/environmentFile" = {
|
||||
restartUnits = [ "vaultwarden.service" ];
|
||||
owner = "vaultwarden";
|
||||
mode = "0755";
|
||||
};
|
||||
sops.secrets."vaultwarden/environmentFile" = {
|
||||
restartUnits = [ "vaultwarden.service" ];
|
||||
owner = "vaultwarden";
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
environmentFile = config.sops.secrets."vaultwarden/environmentFile".path;
|
||||
dbBackend = "sqlite";
|
||||
backupDir = "/var/backup/vaultwarden";
|
||||
};
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
environmentFile = config.sops.secrets."vaultwarden/environmentFile".path;
|
||||
dbBackend = "sqlite";
|
||||
backupDir = "/var/backup/vaultwarden";
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
{
|
||||
|
||||
hardware.rtl-sdr.enable = true;
|
||||
services.openwebrx.enable = true;
|
||||
services.openwebrx.enable = true;
|
||||
|
||||
}
|
||||
|
||||
@@ -4,38 +4,65 @@
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-gnome
|
||||
pkgs.xdg-desktop-portal
|
||||
];
|
||||
|
||||
# XDG related configurations
|
||||
xdg = {
|
||||
autostart.enable = true;
|
||||
menus.enable= true;
|
||||
icons.enable= true;
|
||||
sounds.enable= true;
|
||||
# Enable desktop portal integration
|
||||
portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
enable = true; # Enable the portal system
|
||||
xdgOpenUsePortal = true; # Use portal for opening files and URLs
|
||||
|
||||
# Additional portals for specific environments
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal
|
||||
#xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gnome
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
xdg-launch
|
||||
xdg-ninja
|
||||
xdg-utils
|
||||
kdePackages.xdg-desktop-portal-kde # For KDE environment
|
||||
];
|
||||
|
||||
# Configuration packages for portals (like GNOME session, Niri, etc.)
|
||||
configPackages = with pkgs; [
|
||||
gnome-session
|
||||
niri
|
||||
];
|
||||
};
|
||||
|
||||
# Enable autostart functionality (launch apps on login)
|
||||
autostart.enable = true;
|
||||
|
||||
# Enable menu support for applications
|
||||
menus.enable = true;
|
||||
|
||||
# Enable icon theme support (icons for applications, etc.)
|
||||
icons.enable = true;
|
||||
|
||||
# Enable sounds for system events (like notifications)
|
||||
sounds.enable = true;
|
||||
|
||||
# Terminal execution for XDG spec
|
||||
terminal-exec.enable = true;
|
||||
};
|
||||
|
||||
# Enable MIME type handling for file associations
|
||||
xdg.mime.enable = true;
|
||||
|
||||
# Enable additional configurations for portals
|
||||
xdg.portal.wlr.enable = false; # Disable Wayland/Weston portal support (as you've commented out)
|
||||
xdg.portal.lxqt.styles = true; # Enable LXQt portal styles (optional)
|
||||
xdg.portal.lxqt.enable = false; # Disable LXQt portal integration (commented out as unnecessary)
|
||||
|
||||
# Icons
|
||||
xdg.icons.fallbackCursorThemes = [ "Adwaita" ]; # Set a default cursor theme (you can change this)
|
||||
|
||||
# Terminal execution configuration
|
||||
xdg.terminal-exec.package = pkgs.xterm; # Choose the terminal emulator (can be changed to your preference)
|
||||
xdg.terminal-exec.settings = { }; # Terminal-specific settings (customizable)
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
boot.supportedFilesystems = [ "zfs" ];
|
||||
boot.zfs.forceImportRoot = false;
|
||||
networking.hostId = "1ccccd3a";
|
||||
boot.zfs.forceImportRoot = lib.mkDefault false;
|
||||
#boot.zfs.package = lib.mkDefault pkgs.zfs_unstable;
|
||||
services.zfs.trim.enable = true;
|
||||
services.zfs.autoScrub.enable = true;
|
||||
services.zfs.autoSnapshot.enable = true;
|
||||
services.zfs.autoSnapshot.flags = "-k -p --utc";
|
||||
services.zfs.autoSnapshot.flags = lib.mkDefault "-k -p --utc";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
zfs
|
||||
zfsnap
|
||||
zfstools
|
||||
zfsbackup
|
||||
lz4
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#ENC[AES256_GCM,data:iFOJJlRLRz2m7NyHzPhgUg==,iv:cx8HN12ClwwUZxn2/6mc1Q5Eh2XBIRsrhG/ETRf0cnw=,tag:ITcKcojB8Cpk5cICcxV/Hw==,type:comment]
|
||||
/open# run to encrypt: null
|
||||
#ENC[AES256_GCM,data:kvu25CX2iZURTBGQXYZTkwT00EqhPNF/ORglzJCsDRthR9hwLomlCzsdDCCwBmbEYbUSnyup0/yt6kj5gUA1iTpoGLVJK1EMoAUm7H7Vl4V0XheizUyTUJdfQUzQQXONzB2kTlE2DHuIWKN5Bz8+LKqoDrI=,iv:eBoUwZfMPhBnT2+jWqT/EGh/CVNK5qiYeaspFf1VJxY=,tag:yY+w4rJvDHLo93HgkcKahw==,type:comment]
|
||||
github:
|
||||
api: ENC[AES256_GCM,data:PcalL0rNd0nfNPMlWP05FWh3ff6rp5eQUmu3NzKmuSPcS5w6zSKCLsoCegltENjTWomGAJDoJF8rYfE3tTo4xQBAzFsK7v3GFXfefB+Ec7/FrUT6jjcHK4+c0e1u3cAgUkFpKq+IzS0yDBgMtXuC5oRzw0u0cEjXT4akiyO9Hg==,iv:GVPXrS9gwpw5JgsO6+YAMT96CsX7dz0NAcaq/IxXzec=,tag:Vxb4LOf0mm52W7Ege7mi6A==,type:str]
|
||||
acme:
|
||||
certs: ENC[AES256_GCM,data:v3eIoxXPCGU3nnj9LbpC6q9TIbmw0pwlBCjyfsmMxAMgp5oZttHUimXU3jmrFSDNLMXKyKp5ibBpL+pJDl+HGXbZ2ERWUfV0xqI+vUWetnO8tN4VrW0NZNs/TxdwdTVEA/st8zYON+Qnxrd0xUYAz2TzM9T4cEaRCpTKdIg=,iv:dnct9KU24ZVaQThA6rTTClRjT+vTi4aD+7UV+oiqoVU=,tag:eFmep+I41nVf51/i3v/53Q==,type:str]
|
||||
github:
|
||||
api: ENC[AES256_GCM,data:ZTRlq8w7aL/Y/3wpO3XxziLTy0LV4TT8vOSPt11/MZeKmr9otIwXxvERx6yppOaq1AzUVUEF/RdZvU5HzWxRuXsuAme91dSUL8pwIxGGuxZoy+RdQBha5gbixpNL8IXEnJ6qLW2Ao6CrbmO6qy7vGCWPOxjrwWBRHseToYtKcA==,iv:Cdnlb8LFQgsWnjEl+eQUHYIiVpXFabb70FFtnWDfIl8=,tag:om1WTebZgo+8baOdr1bAxQ==,type:str]
|
||||
pangolin:
|
||||
environmentFile: ENC[AES256_GCM,data:vip6lNBhaH0891+RTphTwerEf7sw6smUVbWIP9KdgbrjRkIAbt/XbLk=,iv:1771tPsQQcjSIoSQxER1Yqi2vZPwg6gbj0VXvDHr7kk=,tag:Bd286kNRYgTXC+jtpVLYpA==,type:str]
|
||||
nginx:
|
||||
defaultpass: ENC[AES256_GCM,data:dJn/Q0jV83PgfFH2ODJO/nXGqew2TZG3ItudJZQ/eCo7Ek2IPlHHQq52bzaVYPqhxUsvXpLV9FgR3FQVOHyiUK3MBsLDNvCTzpnALSflnpj0nKqrXWg3YgEKfi+FdHQ1s0SFQqBOsEw+Xt6eWkNykrl9Jgq5UF7Bp4iC4jmDwQeAFIWaIsWK0117X4seBRQc5rxz1XYNsTaVTzp102I1QmrWLRHGjuvpT5jLVvNEoaU/imT+beAmQAnq5pFOMiEwd4q5FFUdy8XHi7CcT4fql92m2I61pgQbjnHwGklLZvRYO5gIKLwj7u19x8lnFBefDoAshuZOch8397T+vjTxVe0fsuZeLAtLXdPKwoF3L0jp4ffNmPq8H3BTnFwJ2NZo,iv:h6gn2VKancyy6dZlON99zjRj4smArwt6I4a3PRjGfZ8=,tag:Gt4yl0zK7vF3Is/g8cow0g==,type:str]
|
||||
qbittorrent:
|
||||
@@ -17,6 +19,13 @@ ai:
|
||||
cerebras: ENC[AES256_GCM,data:ZGXy4FWauVb6cqFIDNCjYZhA3fb7t8s9wHEQvV5UQS0LwOM1F6+prid5entFiU/zJhxUDA==,iv:1tZU5nfWCur/Uk54RccS7ldv+94D3CKPgAeK30PB8j4=,tag:y9ZDVTTOExTY6nLRbIxoLg==,type:str]
|
||||
groq: ENC[AES256_GCM,data:63HBVYQEXCqG/xN7zluZl3yledOlqxou09Lvgh585LnZAvIFUN+eSDn44mT5mgpqMsRL8Wbqjq8=,iv:taiWwphOVhbLuO5ygf5iDIvhEoAxncTEQ8CFNKOObP4=,tag:1j7wCg9tFuP36mBr5yN0dA==,type:str]
|
||||
mistral: ENC[AES256_GCM,data:z7qUyaJBaLF+fe3DFMRjkUEXiXGZwtFeC189fuEGjEo=,iv:r9QSqstFiR9QrLehHrQu09iaF0PYroz/p1ENChch/I0=,tag:XN7jcXv6TftbXaFBsZYVmw==,type:str]
|
||||
zai: ENC[AES256_GCM,data:rVzqXuEFvdAR+GgETgRFvbDzVjvQ3hVD0s8jDxMCjZ2ri+Tob8Fsp55qA4ZKe85Uhw==,iv:YpaTe+3ZGONoAHCkQCVcvassQqr2ReSyBgiEcwxJOlA=,tag:HFE4af3gVrp6FJnBiwGClg==,type:str]
|
||||
librechat:
|
||||
environmentFile: ENC[AES256_GCM,data:oAEWPYxLdphwMvmRWpEgJnumpYxrlCbb2FQ2ugbVKqoA2TP3srof0eTwAFO/6jl7vzgfsP956BZ7lm6kwg4spEQ6EgfXWc7oa/zQrJKDofUpPLwyxLJhzyfDM3NbDcVKAQS7HdMinG3A5lSkVVHCfIuoaqml1W9DIExzjj+3cNKee8SfgQSpy3TOs2ngxkAVfycViw2cQv3MYeQ6CoaR4BQgraenm/sU9Vzjh+KWYdhD91Qx8UQRWKjhiZAQ+aspofTmFoUfct4Ds/Q+Z3KwWicSCZyvjm5GkP9oEmiK6ODEj2gLw/1bV/Pv/qH9D0ApN2m+mVMB3W7bnAE+4rb8oMb5SW6tgs2ttbefKE3jYl0jqNbu17xALBX3lqYEr9kAO4uF2+96uO0YFAAGgaWjAzhzgkCm/Gl2KML2OYX4uG/ynN5m8YkFB8qkfXg0Dv0IrvzbiE/YYRBmHzrlu5rD2SVTdc83GkePAn/ZMpB5HU6z6cSkjOn2RyixDTROIZeOMICdMYU/1dBvgUGZgLWD,iv:15NFJizf02389RnIFeezzFL2X9oz/CpmG/vmgDp1h2g=,tag:X+SBK584hJD/v+LeDSJd6A==,type:str]
|
||||
authelia:
|
||||
storageEncryptionKeyFile: ENC[AES256_GCM,data:zP2i8Ni6MqHpAJeVdcxr6V0eCXobcgbTyu6cDxsi4x4eG2HIFv7waxsCsa+erQgOf5g8+T5c7kIOa99Z5+Zq3kLAhGrIMqtZxn44oemw5Wl2U4ION2yZTdo/C8otpZMqu9rC9l+k4K3XiKN1Aqhyglx9TXNG6FgS8ygx5aBIBwUM,iv:spQdJ3otiZynCleiCG+u3mk/K3axKrfNtSOCzCGnnWQ=,tag:bMbjwOMCxi/+t+x0Xy0jnQ==,type:str]
|
||||
jwtSecretFile: ENC[AES256_GCM,data:gVRyazB5RZ0fVrZ5/8eUuvJjdPBxjQg0vOrhXvgnv07sawti5Wj350UPBlBKthlvya8V6gZdBSl+Aj1nllP1Fl1tC8hDYb93ZmJdHo6CTicsu9lkMvWWfLe112Dhuptbg5AQAlWLu5TpjSGMT4UfXpLlKYdrzaDnIcWBAVn8k9lN,iv:hcHrAK/squwRyXQCx8pJXxVpq+KtcRwCqJ1NQpHpnL0=,tag:eQdM0gzYNw3/TfDBJYrkdg==,type:str]
|
||||
usersFile: ENC[AES256_GCM,data:uJ03GLDPWWCeTV/FQNdkLfpQiG4FeoP5LnfuW8isHDT2dYhTnDZ7bTb3kTH0lps+79mUF5puaX3XrUO0J1cUV3EjkJkgH/FMnQ7D2mA2jJBCjmvnVerwRDtNJXiwtoM7a5N6RQl9stwDCZE7ODGs9YIqg//HQME73K+l4Hp/thA08GKG/ionT+f7ljlM+yL++guNtp/l5dPZS8/OXfTMBL9jtLlG7AmXbE9hoWcdqGK3OLxGWGdzrxkdQByvDrIxYu9i77o+NMRx0JU1LN8UpMQAYVqmBnbln/zNj5m5iuoa5cwpTKvG5rI=,iv:Iwz5tiUZ8Hr4ywjdkEXvA5cl5TZeyz24BVzMmm8q1vg=,tag:PdXguz6B7cpvUjzzMRlsTA==,type:str]
|
||||
vaultwarden:
|
||||
environmentFile: ENC[AES256_GCM,data:HUFCO4di1hSEMitCSGy5wiDNPZ858NIlW/BnaxrFkE4Tws9RwvmhJ+l89/w7A0VGHAp3yNC+t1GUHgNadA15/Ymr7qL8Zby6o69CqZ3tFnMFmBJ9BL3ni0v1E/4iN5YFInMpmM+c8FjlGfTU2nRRu0WUOGR+5s7C8YSGILrDR+jr98YOKuTfiEKqvsGg8o0dc95CjhEtejeaVGimt9f+bWA54BPGkCT1HzD5boAoTwVbD4sxKDP5l5SnBC+mpzX3sECFkoE5E7SnQQEhKtrL+IffnMrcA3nG6AAyAGODuYZ7VNYQ3zNWBhR2nP0ospDelxaTu9aH6IMgMn4h4Y9LU+nCSHkJGykxGt4W6S8DnHxiaqJCpYwAeOaWFlItlsqlMSjYR2nB7OgUHIv5HLaC1Heyn9azZc/HQyHEjsDa0EsHX8HnmJ6kr2PkAXno+zCBZHnZvxKDWPfV9QqUPakZX9VwPg724zFFe+4OsFBzRiJLePA3hXdmnKJFJUr8cFj0QC/JXlkG3FbfogrnBE2BV6YH8PBmjLuZCII0St1LwB77YPcZDbNLnXUbbiM5/F+fGy04qg3/97sE7Sk/ZXh/Yv+SyvrqrizhXcnOlaciC0zY6DGirHzPuPAYraCkIpPmvTV+MGOICOg77sLSronoN7QohCw6SEZdPD9wSDpRMcbIs5PjfqlVu0rziyl8D1cbT6pmktrGcPKnzKeCpBJNgKE+EwwnB7Zymfj3xRxLZSl/x/1GPFuFtvDvwcWWBIU3IDEtI1zaH0PXbErtuvrttIYWx0+Il9VbxLpxjYl2NxEwfwdUmhU+O2Xw18h8leyu4hfX6a2BvLzLR7cLmSJdIeWiW7rU+qy+H9AMZ5TIZNgepXcN9TmVfTmoEm3HCzG+WJD66iMkdspkggpOxxyIMXia3ws80Eht+m0lrSM2eU6NFfVXxixEylQsxZJuiTqof7mQ71OlGlwWYyY11w2QZNeWmmZIOWwrH2L4u7Npj0qUxurafWOFr/022Y70BxpYO+CKysYppSjTKhiPLS5/8d0u4R3a30gnf/JigXisE06DiLYV6LYRxd003Q41A9UOUoZ7j+A115GUqwAuyD9mEHsH9e2zb3bF+a4QCQ2EaVTaWLHWN/pKnDTY4tSUnpr2HiBcF/dRYh9hMZ3S9khiG+7mj/8Wj1eHMB0dEkUMlU5HE/3Qgoga0oKmATekv6gFyRJ5FQxNNJH9RMN4h6ej6BxDbs5g2bdNScs3qPahpefJA/ITipe1y3qrsfHP4dgqGEn8oaiQxDnNvf5TwbHoX+kS5rlLi4x42cS9v8Ov9oZV92O3c+EuXwDVKW8FAoJh1wMNkJhHjjSCVmQWG1UQngkl3HPDjuPadhec0dWCxQh7/TIaS2JJXeHrURYSLmUV9RlzhGYJqmCZbw7oLU//EukfD9vjm591gX7U3rhu1aQNioZWdFtoGj88BJdHtSa2pxhJnwhruDrwpLOV7xXEK8FsV0SOXWP+MNAgCCWxL2KoLBqDvbr21x6rXS4a6M0+iYxIEIZRsODwTKW7hf+g7mLdKLTIv8ptJVX+zhCaFOR0JMAm/P+L48FPH9ccEUoNCwlSnl02wC9oxB+bTvIDnE7OB705ezwSi8Okh8V1fiQopRIKSutXVhMN7J+wda3Y39UzdEiVr/Qzf+pVkOY2RBp4pNQ2G4Umb31qbtamxOf5JoPqmXQhFopdFttC+iHNa0b13aj4kQITUX/lo7gzssSHyTABpkD5mBaA4HRGkVDTo2bAwsVttVH399NYXmSoGU8XKoLbtJ3caa38KrxN8czTl+oDMurds2xrWHIG+fU4nHIeRW3HxuTz+1zwuYoZD2L+813VEZ3+fcnH1AjdoZ21Ioi1P496s4v4huLC/NMq6A==,iv:n41XecN53vEw2xzCO+gS46TwH7Qy08Hra2NFJNHTEHg=,tag:4ypcVk6TvJbDoG11A5miCw==,type:str]
|
||||
openvpn:
|
||||
@@ -46,7 +55,7 @@ sops:
|
||||
TEhuRFBFQUppVjFKL3JKa0ozNmRLcTAKDrrS8mpHoQoZ54VkY+SYbjoE6AS0fLjc
|
||||
uHuFCrUWqQIwfqHXGlXn7EPUweTfwQ7Od+4JeVp1GbgNLIyH5xNN1g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-10-14T23:51:25Z"
|
||||
mac: ENC[AES256_GCM,data:2CEJAFO7ul0RZ3dxFzBMI0qHQp3C9EvfurzBumxbLelJqNkqpTDUbuuFZG+0P6Z78kHg+idO7yxPODtbjEsMnawT2EZOQu1XlRtk6ieR2Gsv5odp5I1S9gxv3O1IyOO72YSxHXoSr2wvCBP+2L8XydA8M4hEGY5xUL2SBvWwWJc=,iv:jy84/igy7BRCPDugcbP0dQ/wMRgAMW5lT0C3UWu4egE=,tag:Ik2uFX/40EfpZgFveyq6XQ==,type:str]
|
||||
lastmodified: "2026-02-13T12:56:54Z"
|
||||
mac: ENC[AES256_GCM,data:9lOwVBwSeWr6q8SLcDUrQi42XaTEKe40a9MfCZZl3q8Dy+P6bbKAHsRv4GxYmodJvYvQxHGbojTejN3jmUTOF+N614ydJzPP4oeBC5Gto5NZ1SPJQV25X/dEk1wXC3LlC5ZsmRhUuZL9uoRuOiKV9+C7nRgVObUd2rKR/4QzHvg=,iv:iCmlAu6a9XQOlQ2/SPGA0Lo8HFwxweT6g5/qOiqUVIQ=,tag:mfEto5hA5ysPhN2rEBwQsg==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
||||
Reference in New Issue
Block a user