Compare commits
30 Commits
8af8dd17e8
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
e3c54e352c
|
|||
|
ac862dfc1f
|
|||
|
4f6c1e337d
|
|||
|
c5209b0d90
|
|||
|
bbdb6339b0
|
|||
|
0466a882db
|
|||
|
2de46453f3
|
|||
|
4b566d5cea
|
|||
|
16d77233a8
|
|||
|
c6645d3fc9
|
|||
|
6c1d2f501b
|
|||
|
1ba5ec2357
|
|||
|
0788960a9d
|
|||
|
d9e8d23f7d
|
|||
|
03f8271567
|
|||
|
e61cf08607
|
|||
|
1a2796a159
|
|||
|
ff8f8d7e39
|
|||
|
746d6c525e
|
|||
|
13944b3b0b
|
|||
|
dff4d5762d
|
|||
|
066334b880
|
|||
|
e923c84902
|
|||
|
b1c21ee77d
|
|||
|
12bd99e84c
|
|||
| a502f58756 | |||
| c6c55abde2 | |||
|
10074b37d1
|
|||
| bd8b826097 | |||
|
970bfc604c
|
@@ -24,5 +24,6 @@
|
|||||||
waybar
|
waybar
|
||||||
quickshell
|
quickshell
|
||||||
qt6.qtdeclarative
|
qt6.qtdeclarative
|
||||||
|
wlogout
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+497
-50
@@ -1,6 +1,43 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"cachix": {
|
"cachix": {
|
||||||
|
"inputs": {
|
||||||
|
"devenv": [
|
||||||
|
"clonee",
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"flake-compat": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"git-hooks": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"git-hooks"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777487137,
|
||||||
|
"narHash": "sha256-TuvKVBX60mqyMT6OB5JqVEh1YIWtFMR/igLCaCdC9tw=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "cachix",
|
||||||
|
"rev": "a66a440c321d35f7193472c317f42a55ccd1cb93",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"ref": "latest",
|
||||||
|
"repo": "cachix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cachix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devenv": [
|
"devenv": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -37,6 +74,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"clonee": {
|
||||||
|
"inputs": {
|
||||||
|
"devenv": "devenv",
|
||||||
|
"naersk": "naersk",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783739292,
|
||||||
|
"narHash": "sha256-4Q15SKZFttcCqnD1MC/qQCqA/L/QqqtN7d9iyMz+ld0=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "378c1f7c0d1c004d504ad8496d136ec381688f10",
|
||||||
|
"revCount": 9,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.maariz.org/pure_sagacity/clonee"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.maariz.org/pure_sagacity/clonee"
|
||||||
|
}
|
||||||
|
},
|
||||||
"crate2nix": {
|
"crate2nix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -54,6 +113,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"crate2nix_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772186516,
|
||||||
|
"narHash": "sha256-8s28pzmQ6TOIUzznwFibtW1CMieMUl1rYJIxoQYor58=",
|
||||||
|
"owner": "rossng",
|
||||||
|
"repo": "crate2nix",
|
||||||
|
"rev": "ba5dd398e31ee422fbe021767eb83b0650303a6e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rossng",
|
||||||
|
"repo": "crate2nix",
|
||||||
|
"rev": "ba5dd398e31ee422fbe021767eb83b0650303a6e",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"devenv": {
|
"devenv": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"cachix": "cachix",
|
"cachix": "cachix",
|
||||||
@@ -65,11 +141,41 @@
|
|||||||
"nix": "nix",
|
"nix": "nix",
|
||||||
"nixd": "nixd",
|
"nixd": "nixd",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"silicate",
|
"clonee",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1782860656,
|
||||||
|
"narHash": "sha256-HiSNP0/eEhKGZBWC6kLZVN8I6j6AwVnI4gjeH25+/5k=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "devenv",
|
||||||
|
"rev": "3f6df48c00d8aa408f0440f2707662aa91a1f033",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "devenv",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devenv_2": {
|
||||||
|
"inputs": {
|
||||||
|
"cachix": "cachix_2",
|
||||||
|
"crate2nix": "crate2nix_2",
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"ghostty": "ghostty_2",
|
||||||
|
"git-hooks": "git-hooks_2",
|
||||||
|
"nix": "nix_2",
|
||||||
|
"nixd": "nixd_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"silicate",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay_2"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783109842,
|
"lastModified": 1783109842,
|
||||||
"narHash": "sha256-Fi7lW+sg1ChduOOQRBCK5JeA1cw4x5wSjIJcppRGGqQ=",
|
"narHash": "sha256-Fi7lW+sg1ChduOOQRBCK5JeA1cw4x5wSjIJcppRGGqQ=",
|
||||||
@@ -104,14 +210,58 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fast": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783830645,
|
||||||
|
"narHash": "sha256-lEx9RLAYwpUS/SpIlRUiIoThQKwjGOj+jXIlmi6CWxg=",
|
||||||
|
"owner": "GitanElyon",
|
||||||
|
"repo": "fast",
|
||||||
|
"rev": "60fb5b7e1f6343bc1fc9a1e168845b71b142810f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GitanElyon",
|
||||||
|
"repo": "fast",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fenix": {
|
"fenix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"naersk",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1752475459,
|
||||||
|
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fenix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"silicate",
|
"silicate",
|
||||||
"naersk",
|
"naersk",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752475459,
|
"lastModified": 1752475459,
|
||||||
@@ -143,7 +293,45 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778716662,
|
||||||
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -165,7 +353,41 @@
|
|||||||
"type": "github"
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ghostty": {
|
"ghostty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1779069789,
|
||||||
|
"narHash": "sha256-ojo+gso45/6CVSuqfSVnlWpQ4d0QeLgwok+v/g3yu0E=",
|
||||||
|
"owner": "ghostty-org",
|
||||||
|
"repo": "ghostty",
|
||||||
|
"rev": "4b7bf0b20e3baf9c1ba10c63f2ad1fd853faea8f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ghostty-org",
|
||||||
|
"repo": "ghostty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ghostty_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782866021,
|
"lastModified": 1782866021,
|
||||||
@@ -182,6 +404,34 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778507602,
|
||||||
|
"narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -208,6 +458,49 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"herdr": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783468284,
|
||||||
|
"narHash": "sha256-no8aODMs+tYEnEShJPHKap2imToiA++joPFL+o/ZAmg=",
|
||||||
|
"owner": "ogulcancelik",
|
||||||
|
"repo": "herdr",
|
||||||
|
"rev": "77f0339c3cd387c4ca3f4f240ff8b88065d66a22",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ogulcancelik",
|
||||||
|
"repo": "herdr",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -215,11 +508,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782358560,
|
"lastModified": 1783458499,
|
||||||
"narHash": "sha256-vCcLh9pw3XO/+Lxk8r6xv6QnoCrTfGqiACcI7O637Wg=",
|
"narHash": "sha256-a8whUXG4ThsZNjL92cH4wbl+/dt8CbT/F0zJsfhzFbM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3a70e333f2950c302e875c44cfcfaff3f80f36bc",
|
"rev": "53ebbdc405acc04acd9bb73ccca462b51ddb8c6d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -231,7 +524,29 @@
|
|||||||
"naersk": {
|
"naersk": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1782220280,
|
||||||
|
"narHash": "sha256-thLTFbp9D5Qknmh8q/v4FRpLGphUSijT3E86cbLYTXo=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "naersk",
|
||||||
|
"rev": "9aa07bb0256d300219b30622d2454e85f7f3667e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "naersk",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"naersk_2": {
|
||||||
|
"inputs": {
|
||||||
|
"fenix": "fenix_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"silicate",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782220280,
|
"lastModified": 1782220280,
|
||||||
@@ -248,6 +563,52 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix": {
|
"nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"flake-parts": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"git-hooks-nix": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"git-hooks"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-23-11": [
|
||||||
|
"clonee",
|
||||||
|
"devenv"
|
||||||
|
],
|
||||||
|
"nixpkgs-regression": [
|
||||||
|
"clonee",
|
||||||
|
"devenv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1779748925,
|
||||||
|
"narHash": "sha256-meIhqGC04O5VXbKSFXSQoOKp+XCq5RMnwAk1Guo0VQo=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "0bc443c8ff235c3547d09327b48aaa2ab98b15f2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"ref": "devenv-2.34",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -294,6 +655,34 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixd": {
|
"nixd": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778381404,
|
||||||
|
"narHash": "sha256-FqhdOTA8vyoIpkHhbs2cCT7h6EWM7nsLeOYJc1ifQLE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixd",
|
||||||
|
"rev": "e3e45eb76663f522e196b7f0cf34cab201db7779",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixd",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixd_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -305,7 +694,7 @@
|
|||||||
"devenv",
|
"devenv",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780381423,
|
"lastModified": 1780381423,
|
||||||
@@ -322,21 +711,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781577229,
|
|
||||||
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752077645,
|
"lastModified": 1752077645,
|
||||||
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
|
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
|
||||||
@@ -352,32 +726,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"quickshell": {
|
"nixpkgs_2": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781847791,
|
"lastModified": 1783224372,
|
||||||
"narHash": "sha256-Mo2YtNEGlcySnbq0YuP3nUKMAQCMAfE+TcCffo5vzD8=",
|
"narHash": "sha256-FGQ8TfSm9WviNE/fQAWsKs+y4GkX8fU4EScewpw54Y8=",
|
||||||
"ref": "refs/heads/master",
|
"rev": "d407951447dcd00442e97087bf374aad70c04cea",
|
||||||
"rev": "68c2c85c33845385f7ab8147b32f1450b1e468e0",
|
"type": "tarball",
|
||||||
"revCount": 824,
|
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1027867.d407951447dc/nixexprs.tar.xz"
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"id": "nixpkgs",
|
||||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
"ref": "nixos-unstable",
|
||||||
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"clonee": "clonee",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
|
"fast": "fast",
|
||||||
|
"herdr": "herdr",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"quickshell": "quickshell",
|
|
||||||
"silicate": "silicate"
|
"silicate": "silicate"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -398,7 +768,46 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-analyzer-src_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1752428706,
|
||||||
|
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1779074409,
|
||||||
|
"narHash": "sha256-6aXy8Ga41iLVM8ibddFU1O5+wYWcBGNEfZzZuL91eIc=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "2a77b5b1dc952f214e8102acdef1622b68515560",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"silicate",
|
"silicate",
|
||||||
@@ -422,27 +831,65 @@
|
|||||||
},
|
},
|
||||||
"silicate": {
|
"silicate": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devenv": "devenv",
|
"devenv": "devenv_2",
|
||||||
"naersk": "naersk",
|
"naersk": "naersk_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783205610,
|
"lastModified": 1783234406,
|
||||||
"narHash": "sha256-ZJjRXIyDNuK5pVOvBAb3Mwq/ydfLhue1OZMCJOJX8JU=",
|
"narHash": "sha256-mtP+W1DYWrzf29HqjsgWECcdxRf6zGtXVvyeyqLhl9E=",
|
||||||
"ref": "refs/heads/main",
|
"owner": "pure-sagacity",
|
||||||
"rev": "3f0f75ba3548711c8c0ec47edc8d4856f3abc36e",
|
"repo": "silicate",
|
||||||
"revCount": 63,
|
"rev": "63e8d8e8efdb523442b29243cb456ffafd519c18",
|
||||||
"type": "git",
|
"type": "github"
|
||||||
"url": "https://github.com/pure-sagacity/silicate"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"owner": "pure-sagacity",
|
||||||
"url": "https://github.com/pure-sagacity/silicate"
|
"repo": "silicate",
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"clonee",
|
||||||
|
"devenv",
|
||||||
|
"nixd",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1775636079,
|
||||||
|
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"silicate",
|
"silicate",
|
||||||
|
|||||||
@@ -12,15 +12,23 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
quickshell = {
|
herdr = {
|
||||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
url = "github:ogulcancelik/herdr";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fast = {
|
||||||
|
url = "github:GitanElyon/fast";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
silicate = {
|
silicate = {
|
||||||
url = "git+https://github.com/pure-sagacity/silicate";
|
url = "github:pure-sagacity/silicate";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
clonee = {
|
||||||
|
url = "git+https://gitea.maariz.org/pure_sagacity/clonee";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -40,8 +48,8 @@
|
|||||||
specialArgs = { inherit inputs; };
|
specialArgs = { inherit inputs; };
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/pc/configuration.nix
|
./hosts/pc/configuration.nix
|
||||||
home-manager.nixosModules.default
|
|
||||||
|
|
||||||
|
home-manager.nixosModules.default
|
||||||
{
|
{
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
home.username = "aariz";
|
home.username = "aariz";
|
||||||
|
|
||||||
home.homeDirectory = "/home/aariz";
|
home.homeDirectory = "/home/aariz";
|
||||||
home.stateVersion = "26.05";
|
|
||||||
|
home.stateVersion = "26.05";
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
if status is-interactive
|
if status is-interactive
|
||||||
starship init fish | source
|
starship init fish | source
|
||||||
zoxide init fish | source
|
zoxide init fish | source
|
||||||
|
glow completion fish | source
|
||||||
|
|
||||||
alias cd=z
|
alias cd=z
|
||||||
alias docker=podman
|
alias docker=podman
|
||||||
alias ls='/etc/profiles/per-user/river/bin/eza --icons'
|
alias ls='/etc/profiles/per-user/river/bin/eza --icons'
|
||||||
@@ -15,6 +17,8 @@ if status is-interactive
|
|||||||
alias config="nvim /home/river/nixos-dotfiles/hosts/pc/configuration.nix"
|
alias config="nvim /home/river/nixos-dotfiles/hosts/pc/configuration.nix"
|
||||||
alias v=nvim
|
alias v=nvim
|
||||||
alias y=yazi
|
alias y=yazi
|
||||||
|
alias k=kubectl
|
||||||
|
alias j=jj
|
||||||
end
|
end
|
||||||
|
|
||||||
function fish_greeting
|
function fish_greeting
|
||||||
|
|||||||
@@ -10,9 +10,10 @@ hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(config.browser))
|
|||||||
|
|
||||||
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
||||||
hl.bind(
|
hl.bind(
|
||||||
mainMod .. " + Escape",
|
mainMod .. " + SHIFT + Escape",
|
||||||
hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'")
|
hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'")
|
||||||
)
|
)
|
||||||
|
hl.bind("CTRL + ALT + DELETE", hl.dsp.exec_cmd("wlogout"))
|
||||||
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||||
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
|
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
|
||||||
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }))
|
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }))
|
||||||
@@ -66,4 +67,3 @@ hl.bind(
|
|||||||
)
|
)
|
||||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
gopls = {},
|
||||||
nixd = {},
|
nixd = {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
./programs/fish.nix
|
./programs/fish.nix
|
||||||
./programs/vesktop.nix
|
./programs/vesktop.nix
|
||||||
./programs/java.nix
|
./programs/java.nix
|
||||||
|
./programs/jujutsu.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
@@ -20,6 +21,7 @@
|
|||||||
vesktop
|
vesktop
|
||||||
neovim
|
neovim
|
||||||
tmux
|
tmux
|
||||||
|
jujutsu
|
||||||
];
|
];
|
||||||
|
|
||||||
file = {
|
file = {
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.jujutsu = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = {
|
||||||
|
email = "khokharmaaz@gmail.com";
|
||||||
|
name = "Maaz Khokhar";
|
||||||
|
};
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
behavior = "own";
|
||||||
|
backend = "gpg";
|
||||||
|
key = "A8D1AEA9C92D6867";
|
||||||
|
};
|
||||||
|
|
||||||
|
ui.color = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
../../modules/ollama
|
../../modules/ollama
|
||||||
../../modules/development
|
../../modules/development
|
||||||
../../modules/development/claude.nix
|
../../modules/development/claude.nix
|
||||||
|
../../modules/development/go.nix
|
||||||
../../modules/additionalUsers/aariz.nix
|
../../modules/additionalUsers/aariz.nix
|
||||||
../../modules/obs
|
../../modules/obs
|
||||||
|
|
||||||
@@ -26,11 +27,6 @@
|
|||||||
../../desktops/hyprland
|
../../desktops/hyprland
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "nixos";
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
libsecret
|
libsecret
|
||||||
tree
|
tree
|
||||||
@@ -52,8 +48,97 @@
|
|||||||
tsx
|
tsx
|
||||||
slack
|
slack
|
||||||
mosh
|
mosh
|
||||||
|
code-cursor
|
||||||
|
kdePackages.kdenlive
|
||||||
|
kdePackages.kwallet
|
||||||
|
kdePackages.kwallet-pam
|
||||||
|
element-desktop
|
||||||
|
cmatrix
|
||||||
|
rustdesk
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
|
services.keyd = {
|
||||||
|
enable = false;
|
||||||
|
keyboards.default = {
|
||||||
|
ids = [ "*" ];
|
||||||
|
settings.main = {
|
||||||
|
capslock = "up";
|
||||||
|
up = "w";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
workstation = {
|
||||||
|
core = {
|
||||||
|
kernel = "latest";
|
||||||
|
allowUnfree = true;
|
||||||
|
ssh.permitRootLogin = true;
|
||||||
|
|
||||||
|
user = {
|
||||||
|
name = "river";
|
||||||
|
fullName = "Maaz Khokhar";
|
||||||
|
shell = "fish";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
core = {
|
||||||
|
firewall = {
|
||||||
|
allowPing = true;
|
||||||
|
ports.tcp = [
|
||||||
|
22
|
||||||
|
80
|
||||||
|
5900
|
||||||
|
16570
|
||||||
|
18789
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraHosts = [
|
||||||
|
{
|
||||||
|
ip_address = "192.168.1.60";
|
||||||
|
hostname = "laptop";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
nameservers = [
|
||||||
|
"192.168.1.193"
|
||||||
|
"1.1.1.1"
|
||||||
|
"1.0.0.1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
tailscale.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualization = {
|
||||||
|
user = "river";
|
||||||
|
|
||||||
|
qemu = {
|
||||||
|
enable = true;
|
||||||
|
containers = true;
|
||||||
|
spiceUSBRedirection = true;
|
||||||
|
virtManager = true;
|
||||||
|
bootModules = [
|
||||||
|
"kvm-amd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
packages.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
lima.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
development = {
|
||||||
|
enable = true;
|
||||||
|
rust.enable = true;
|
||||||
|
typescript.enable = true;
|
||||||
|
go.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.nix-ld.libraries = with pkgs; [
|
programs.nix-ld.libraries = with pkgs; [
|
||||||
brotli
|
brotli
|
||||||
stdenv.cc.cc.lib
|
stdenv.cc.cc.lib
|
||||||
@@ -73,6 +158,4 @@
|
|||||||
enableAllFirmware = true;
|
enableAllFirmware = true;
|
||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" =
|
||||||
{ device = "/dev/disk/by-uuid/7082-DAFE";
|
{ device = "/dev/disk/by-uuid/8750-9317";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,122 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
shared,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.core;
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
allowRootSSH = if cfg.ssh.permitRootLogin then "yes" else "no";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
networking.hostName = cfg.hostname;
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
kernelPackages = shared.kernelOptions.${cfg.kernel};
|
||||||
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
editor = true;
|
||||||
|
};
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
|
programs.${cfg.user.shell}.enable = true;
|
||||||
|
|
||||||
|
users.users.${cfg.user.name} = with cfg.user; {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = fullName;
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
"input"
|
||||||
|
];
|
||||||
|
|
||||||
|
shell = pkgs.${shell};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gitFull
|
||||||
|
neovim
|
||||||
|
btop
|
||||||
|
unzip
|
||||||
|
mpv
|
||||||
|
wl-clipboard
|
||||||
|
wireplumber
|
||||||
|
brightnessctl
|
||||||
|
pulseaudio
|
||||||
|
pavucontrol
|
||||||
|
ghostty
|
||||||
|
git-credential-manager
|
||||||
|
gnupg
|
||||||
|
yazi
|
||||||
|
jujutsu
|
||||||
|
glow
|
||||||
|
|
||||||
|
inputs.silicate.packages.${system}.default
|
||||||
|
inputs.herdr.packages.${system}.default
|
||||||
|
inputs.fast.packages.${system}.default
|
||||||
|
inputs.clonee.packages.${system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
cfg.user.name
|
||||||
|
];
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver.xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PermitRootLogin = allowRootSSH;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
system.stateVersion = "26.11";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,101 +1,13 @@
|
|||||||
{ pkgs, inputs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
shared = import ./shared.nix { inherit pkgs; };
|
||||||
|
in
|
||||||
{
|
{
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
imports = [
|
||||||
|
./options.nix
|
||||||
time.timeZone = "America/Chicago";
|
./config.nix
|
||||||
|
|
||||||
programs.fish.enable = true;
|
|
||||||
|
|
||||||
users.users.river = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Maaz Khokhar";
|
|
||||||
extraGroups = [
|
|
||||||
"wheel"
|
|
||||||
"networkmanager"
|
|
||||||
"input"
|
|
||||||
];
|
|
||||||
|
|
||||||
shell = pkgs.fish;
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gitFull
|
|
||||||
neovim
|
|
||||||
btop
|
|
||||||
unzip
|
|
||||||
mpv
|
|
||||||
wl-clipboard
|
|
||||||
wireplumber
|
|
||||||
brightnessctl
|
|
||||||
pulseaudio
|
|
||||||
pavucontrol
|
|
||||||
ghostty
|
|
||||||
git-credential-manager
|
|
||||||
gnupg
|
|
||||||
yazi
|
|
||||||
inputs.silicate.packages.${pkgs.system}.default
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nix = {
|
_module.args.shared = shared;
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"river"
|
|
||||||
];
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
auto-optimise-store = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
xserver.xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings.PermitRootLogin = "no";
|
|
||||||
};
|
|
||||||
|
|
||||||
printing.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
shared,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.workstation.core = {
|
||||||
|
hostname = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "nixos";
|
||||||
|
description = "Hostname of the machine";
|
||||||
|
};
|
||||||
|
|
||||||
|
kernel = lib.mkOption {
|
||||||
|
type = with lib.types; enum (builtins.attrNames shared.kernelOptions);
|
||||||
|
default = "lts";
|
||||||
|
description = "The kernel of the machine";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "river";
|
||||||
|
description = "The username of the primary user";
|
||||||
|
};
|
||||||
|
|
||||||
|
fullName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "Maaz Khokhar";
|
||||||
|
description = "The full name of the user";
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "fish";
|
||||||
|
description = "The shell the primary user uses";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
allowUnfree = lib.mkEnableOption "unfree packages" // {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
permitRootLogin = lib.mkEnableOption "root SSH login";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
kernelOptions = {
|
||||||
|
stable = pkgs.linuxPackages;
|
||||||
|
lts = pkgs.linuxPackages_6_12;
|
||||||
|
latest = pkgs.linuxPackages_latest;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gitFull
|
||||||
|
neovim
|
||||||
|
nixfmt
|
||||||
|
nixd
|
||||||
|
kubectl
|
||||||
|
jq
|
||||||
|
tmux
|
||||||
|
vscode
|
||||||
|
devenv
|
||||||
|
xh
|
||||||
|
nodejs
|
||||||
|
obsidian
|
||||||
|
];
|
||||||
|
|
||||||
|
# Nix LSP
|
||||||
|
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,18 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
lib,
|
||||||
gcc
|
config,
|
||||||
cmake
|
pkgs,
|
||||||
clang
|
...
|
||||||
];
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development.clang;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gcc
|
||||||
|
cmake
|
||||||
|
clang
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
config,
|
||||||
claude-code
|
lib,
|
||||||
];
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development.claude;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
claude-code
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,15 @@
|
|||||||
{ inputs, pkgs, ... }:
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./basic.nix
|
||||||
./rust.nix
|
./rust.nix
|
||||||
|
./clang.nix
|
||||||
|
./claude.nix
|
||||||
|
./go.nix
|
||||||
|
./options.nix
|
||||||
|
./python.nix
|
||||||
|
./typescript.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# General
|
|
||||||
git
|
|
||||||
neovim
|
|
||||||
nixfmt
|
|
||||||
nixd
|
|
||||||
kubectl
|
|
||||||
jq
|
|
||||||
tmux
|
|
||||||
vscode
|
|
||||||
devenv
|
|
||||||
xh
|
|
||||||
nodejs
|
|
||||||
];
|
|
||||||
|
|
||||||
# Nix LSP
|
|
||||||
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development.go;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
go
|
||||||
|
|
||||||
|
# Language server
|
||||||
|
gopls
|
||||||
|
|
||||||
|
# Formatter with automatic import management
|
||||||
|
gotools
|
||||||
|
|
||||||
|
# Linting
|
||||||
|
golangci-lint
|
||||||
|
|
||||||
|
# Debugger
|
||||||
|
delve
|
||||||
|
|
||||||
|
# Useful extras
|
||||||
|
air # Live reload for web apps
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
options.workstation.development = {
|
||||||
|
enable = lib.mkEnableOption "the basic development toolkit";
|
||||||
|
|
||||||
|
clang = {
|
||||||
|
enable = lib.mkEnableOption "the clang toolkit";
|
||||||
|
};
|
||||||
|
|
||||||
|
claude = {
|
||||||
|
enable = lib.mkEnableOption "the AI harness";
|
||||||
|
};
|
||||||
|
|
||||||
|
go = {
|
||||||
|
enable = lib.mkEnableOption "the go toolkit";
|
||||||
|
};
|
||||||
|
|
||||||
|
python = {
|
||||||
|
enable = lib.mkEnableOption "the python toolkit";
|
||||||
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
enable = lib.mkEnableOption "the rust toolkit";
|
||||||
|
};
|
||||||
|
|
||||||
|
typescript = {
|
||||||
|
enable = lib.mkEnableOption "the typescript toolkit";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,20 +1,29 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
config,
|
||||||
python313
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development.python;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
python313
|
||||||
|
|
||||||
# package tooling
|
# package tooling
|
||||||
python313Packages.uv
|
python313Packages.uv
|
||||||
python313Packages.virtualenv
|
python313Packages.virtualenv
|
||||||
|
|
||||||
# dev tools
|
# dev tools
|
||||||
ruff
|
ruff
|
||||||
black
|
black
|
||||||
mypy
|
mypy
|
||||||
|
|
||||||
# optional data science base tools
|
# optional data science base tools
|
||||||
python313Packages.numpy
|
python313Packages.numpy
|
||||||
python313Packages.pandas
|
python313Packages.pandas
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,23 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
config,
|
||||||
cargo
|
lib,
|
||||||
rustc
|
pkgs,
|
||||||
rustfmt
|
...
|
||||||
clippy
|
}:
|
||||||
];
|
let
|
||||||
|
cfg = config.workstation.development.rust;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
cargo
|
||||||
|
rustc
|
||||||
|
rustfmt
|
||||||
|
clippy
|
||||||
|
];
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
RUST_BACKTRACE = "1";
|
RUST_BACKTRACE = "1";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,29 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
config,
|
||||||
bun
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.development.typescript;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
bun
|
||||||
|
prettier
|
||||||
|
eslint
|
||||||
|
typescript-language-server
|
||||||
|
|
||||||
# TS tooling (optional but common)
|
# TS tooling (optional but common)
|
||||||
typescript
|
typescript
|
||||||
nodePackages.typescript-language-server
|
|
||||||
nodePackages.eslint
|
|
||||||
nodePackages.prettier
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.variables = {
|
# API Client
|
||||||
NODE_OPTIONS = "--max-old-space-size=4096";
|
bruno
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
NODE_OPTIONS = "--max-old-space-size=4096";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
osu-lazer-bin # if you want
|
||||||
steam
|
steam
|
||||||
prismlauncher
|
prismlauncher
|
||||||
nvtopPackages.amd
|
nvtopPackages.amd
|
||||||
|
|||||||
@@ -1,38 +1,38 @@
|
|||||||
{ ... }:
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.networking.core;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
config = {
|
||||||
networkmanager = {
|
networking = {
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
dns = "systemd-resolved";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraHosts = lib.concatMapStringsSep "\n" (
|
||||||
|
host: "${host.ip_address} ${host.hostname}"
|
||||||
|
) cfg.extraHosts;
|
||||||
|
|
||||||
|
nftables.enable = true;
|
||||||
|
|
||||||
|
nameservers = cfg.nameservers;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.resolved = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dns = "systemd-resolved";
|
|
||||||
|
settings.Resolve = {
|
||||||
|
dnssec = "true";
|
||||||
|
DNSOverTLS = "true";
|
||||||
|
domains = [ "~." ];
|
||||||
|
fallbackDns = cfg.nameservers;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
extraHosts = "192.168.1.60 laptop";
|
|
||||||
nftables.enable = true;
|
|
||||||
|
|
||||||
nameservers = [
|
|
||||||
"192.168.1.193" # Pi-hole
|
|
||||||
"1.1.1.1" # Cloudflare
|
|
||||||
"1.0.0.1" # Cloudflare (Secondary)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.resolved = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings.Resolve = {
|
|
||||||
dnssec = "true";
|
|
||||||
DNSOverTLS = "true";
|
|
||||||
domains = [ "~." ];
|
|
||||||
fallbackDns = [
|
|
||||||
"192.168.1.193" # Pi-hole
|
|
||||||
"1.1.1.1" # Cloudflare
|
|
||||||
"1.0.0.1" # Cloudflare (Secondary)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
{ ... }:
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.networking.core.firewall;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
allowPing = true;
|
allowPing = cfg.allowPing;
|
||||||
|
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = cfg.ports.tcp;
|
||||||
22
|
allowedUDPPorts = cfg.ports.udp;
|
||||||
80
|
|
||||||
];
|
|
||||||
allowedUDPPorts = [
|
|
||||||
53
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./options.nix
|
||||||
./core
|
./core
|
||||||
|
./wireguard.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,122 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.workstation.networking = {
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "river";
|
||||||
|
description = "The user to run tailscale's services as.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# core
|
||||||
|
core = {
|
||||||
|
firewall = {
|
||||||
|
allowPing = lib.mkEnableOption "ICMP pinging" // {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ports = {
|
||||||
|
tcp = lib.mkOption {
|
||||||
|
type = with lib.types; listOf number;
|
||||||
|
default = [
|
||||||
|
22
|
||||||
|
80
|
||||||
|
];
|
||||||
|
};
|
||||||
|
udp = lib.mkOption {
|
||||||
|
type = with lib.types; listOf number;
|
||||||
|
default = [ 53 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraHosts = lib.mkOption {
|
||||||
|
type =
|
||||||
|
with lib.types;
|
||||||
|
listOf (
|
||||||
|
submodule (
|
||||||
|
{ ... }: {
|
||||||
|
options = {
|
||||||
|
ip_address = lib.mkOption {
|
||||||
|
type = str;
|
||||||
|
};
|
||||||
|
|
||||||
|
hostname = lib.mkOption {
|
||||||
|
type = str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
default = [ ];
|
||||||
|
description = "Additional hosts to add.";
|
||||||
|
};
|
||||||
|
|
||||||
|
nameservers = lib.mkOption {
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
|
||||||
|
default = [
|
||||||
|
"192.168.1.193"
|
||||||
|
"1.1.1.1"
|
||||||
|
"1.0.0.1"
|
||||||
|
];
|
||||||
|
description = "DNS Resolvers for System";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# wireguard
|
||||||
|
wireguard = {
|
||||||
|
enable = lib.mkEnableOption "Wireguard support";
|
||||||
|
|
||||||
|
interfaces = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (
|
||||||
|
lib.types.submodule {
|
||||||
|
options = {
|
||||||
|
enable = lib.mkEnableOption "Enable this WG interface";
|
||||||
|
|
||||||
|
address = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
privateKeyFile = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
peers = lib.mkOption {
|
||||||
|
type = lib.types.listOf (
|
||||||
|
lib.types.submodule {
|
||||||
|
options = {
|
||||||
|
publicKey = lib.mkOption { type = lib.types.str; };
|
||||||
|
allowedIPs = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
endpoint = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
persistentKeepalive = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.int;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# tailscale
|
||||||
|
tailscale = {
|
||||||
|
enable = lib.mkEnableOption "Tailscale mesh VPN";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,25 +1,30 @@
|
|||||||
{ config, ... }:
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.networking.tailscale;
|
||||||
|
user = config.workstation.networking.user;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services.tailscale = {
|
config = lib.mkIf cfg.enable {
|
||||||
enable = true;
|
services.tailscale = {
|
||||||
openFirewall = true;
|
enable = true;
|
||||||
extraSetFlags = [ "--operator=river" ];
|
openFirewall = true;
|
||||||
|
extraSetFlags = [ "--operator=${user}" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
trustedInterfaces = [ config.services.tailscale.interfaceName ];
|
||||||
|
allowedUDPPorts = [ config.services.tailscale.port ];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.tailscaled.serviceConfig.Environment = [
|
||||||
|
"TS_DEBUG_FIREWALL_MODE=nftables"
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.network.wait-online.enable = false;
|
||||||
|
boot.initrd.systemd.network.wait-online.enable = false;
|
||||||
|
|
||||||
|
users.users.${user}.extraGroups = [
|
||||||
|
"tailscale"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall = {
|
|
||||||
trustedInterfaces = [ config.services.tailscale.interfaceName ];
|
|
||||||
allowedUDPPorts = [ config.services.tailscale.port ];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.tailscaled.serviceConfig.Environment = [
|
|
||||||
"TS_DEBUG_FIREWALL_MODE=nftables"
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.network.wait-online.enable = false;
|
|
||||||
boot.initrd.systemd.network.wait-online.enable = false;
|
|
||||||
|
|
||||||
users.users.river.extraGroups = [
|
|
||||||
"tailscale"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,21 @@
|
|||||||
{ ... }:
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.networking.wireguard;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
networking.wireguard.interfaces = {
|
config = lib.mkIf cfg.enable {
|
||||||
wg0 = {
|
networking.wg-quick.interfaces = lib.mapAttrs (name: iface: {
|
||||||
ips = [ "10.0.0.2/24" ];
|
address = iface.address;
|
||||||
privateKeyFile = "/etc/wireguard/private.key"; # Keep secrets out of the nix store!
|
privateKeyFile = iface.privateKeyFile;
|
||||||
|
peers = map (p: {
|
||||||
|
publicKey = p.publicKey;
|
||||||
|
allowedIPs = p.allowedIPs;
|
||||||
|
endpoint = p.endpoint;
|
||||||
|
|
||||||
peers = [
|
persistentKeepalive = if p.persistentKeepalive != null then p.persistentKeepalive else null;
|
||||||
{
|
}) iface.peers;
|
||||||
publicKey = "vUUL4CD+1Sa2U2SZYa2P9IoFC2HxEr+PYNmYfRE8wwY=";
|
}) (lib.filterAttrs (_: v: v.enable) cfg.interfaces);
|
||||||
allowedIPs = [ "0.0.0.0/0" ];
|
|
||||||
endpoint = "server.maariz.org:51820";
|
networking.firewall.allowedUDPPorts = [ 51820 ];
|
||||||
persistentKeepalive = 25;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ensure the Wireguard UDP port is open if you are hosting the server
|
|
||||||
networking.firewall.allowedUDPPorts = [ 51820 ];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gimp
|
||||||
|
google-fonts
|
||||||
|
pinta
|
||||||
|
];
|
||||||
|
|
||||||
programs.obs-studio = {
|
programs.obs-studio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./podman.nix
|
./podman.nix
|
||||||
./qemu.nix
|
./qemu.nix
|
||||||
./lima.nix
|
./options.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
config,
|
||||||
lima
|
lib,
|
||||||
];
|
pkgs,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.virtualization.lima;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
lima
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.workstation.virtualization = {
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "river";
|
||||||
|
description = "The user to run virtualization services as.";
|
||||||
|
};
|
||||||
|
|
||||||
|
# podman
|
||||||
|
podman = {
|
||||||
|
enable = lib.mkEnableOption "Podman support";
|
||||||
|
|
||||||
|
packages = {
|
||||||
|
enable = lib.mkEnableOption "relevant Podman packages";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# qemu
|
||||||
|
qemu = {
|
||||||
|
enable = lib.mkEnableOption "QEMU support";
|
||||||
|
|
||||||
|
containers = lib.mkEnableOption "container support for QEMU";
|
||||||
|
|
||||||
|
spiceUSBRedirection = lib.mkEnableOption "spice USB redirection support for QEMU";
|
||||||
|
|
||||||
|
virtManager = lib.mkEnableOption "virt-manager support for QEMU";
|
||||||
|
|
||||||
|
bootModules = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [
|
||||||
|
"kvm-intel"
|
||||||
|
"kvm-amd"
|
||||||
|
];
|
||||||
|
description = "The kernel modules to load for QEMU support.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lima = {
|
||||||
|
enable = lib.mkEnableOption "Lima lite VM";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,38 +1,55 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
virtualisation.podman = {
|
config,
|
||||||
enable = true;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.workstation.virtualization;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.podman.enable {
|
||||||
|
virtualisation = {
|
||||||
|
oci-containers.backend = "podman";
|
||||||
|
podman = {
|
||||||
|
|
||||||
dockerCompat = true;
|
enable = true;
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# For rootless containers
|
dockerCompat = true;
|
||||||
security.unprivilegedUsernsClone = true;
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
users.users.river = {
|
# For rootless containers
|
||||||
subUidRanges = [
|
security.unprivilegedUsernsClone = true;
|
||||||
{
|
|
||||||
startUid = 100000;
|
|
||||||
count = 65536;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
subGidRanges = [
|
|
||||||
{
|
|
||||||
startGid = 100000;
|
|
||||||
count = 65536;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
extraGroups = [
|
users.users.${cfg.user} = {
|
||||||
"podman"
|
subUidRanges = [
|
||||||
];
|
{
|
||||||
};
|
startUid = 100000;
|
||||||
|
count = 65536;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
subGidRanges = [
|
||||||
|
{
|
||||||
|
startGid = 100000;
|
||||||
|
count = 65536;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
extraGroups = [
|
||||||
podman
|
"podman"
|
||||||
podman-compose
|
];
|
||||||
podman-desktop
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.podman.packages.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
podman
|
||||||
|
podman-compose
|
||||||
|
podman-desktop
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,44 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
virtualisation.spiceUSBRedirection.enable = true;
|
config,
|
||||||
|
lib,
|
||||||
virtualisation = {
|
pkgs,
|
||||||
containers.enable = true;
|
...
|
||||||
libvirtd = {
|
}:
|
||||||
enable = true;
|
let
|
||||||
qemu = {
|
cfg = config.workstation.virtualization;
|
||||||
package = pkgs.qemu_kvm;
|
in
|
||||||
swtpm.enable = true;
|
{
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.qemu.enable {
|
||||||
|
virtualisation = {
|
||||||
|
libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
qemu = {
|
||||||
|
package = pkgs.qemu_kvm;
|
||||||
|
swtpm.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
users.users.${cfg.user}.extraGroups = [
|
||||||
};
|
"libvirtd"
|
||||||
|
"kvm"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
networking.firewall.trustedInterfaces = [ "virbr0" ];
|
(lib.mkIf cfg.qemu.spiceUSBRedirection {
|
||||||
|
virtualisation.spiceUSBRedirection.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
programs.virt-manager.enable = true;
|
(lib.mkIf cfg.qemu.virtManager {
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
users.users.river.extraGroups = [
|
(lib.mkIf (cfg.qemu.enable && cfg.qemu.containers) {
|
||||||
"libvirtd"
|
virtualisation.containers.enable = true;
|
||||||
"kvm"
|
})
|
||||||
];
|
|
||||||
|
|
||||||
boot.kernelModules = [
|
(lib.mkIf cfg.qemu.enable {
|
||||||
"kvm-intel"
|
boot.kernelModules = cfg.qemu.bootModules;
|
||||||
"kvm-amd"
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user