Compare commits

...

30 Commits

Author SHA1 Message Date
pure_sagacity e3c54e352c api client 2026-07-12 22:48:31 -05:00
pure_sagacity ac862dfc1f made development into an option
added it to configuration
2026-07-12 12:59:56 -05:00
pure_sagacity 4f6c1e337d added my stuff from before, along with the stuff on macbook
nix flake check passed, so maybe this will work first try?
2026-07-12 11:33:54 -05:00
pure_sagacity c5209b0d90 finally system boots with new config
need to add all my stuff btw
2026-07-12 11:15:42 -05:00
pure_sagacity bbdb6339b0 added a go development file + added temp go import 2026-07-11 23:03:45 -05:00
pure_sagacity 0466a882db disabled keyd service + added osu! game (really easy btw?) 2026-07-11 22:59:42 -05:00
pure_sagacity 2de46453f3 another photo editor 2026-07-08 16:41:31 -05:00
pure_sagacity 4b566d5cea changa one font (its in google fonts) 2026-07-08 16:31:14 -05:00
pure_sagacity 16d77233a8 gimp thumbnail creator 2026-07-08 16:12:45 -05:00
pure_sagacity c6645d3fc9 keyd key remapping daemon 2026-07-07 22:42:46 -05:00
pure_sagacity 6c1d2f501b rustdesk + update 2026-07-07 21:12:55 -05:00
pure_sagacity 1ba5ec2357 element desktop and cmatrix 2026-07-07 18:45:12 -05:00
pure_sagacity 0788960a9d wlogout with ctrl + alt + delete 2026-07-07 01:29:51 -05:00
pure_sagacity d9e8d23f7d update 2026-07-07 01:16:55 -05:00
pure_sagacity 03f8271567 added obsidian - markdown editor 2026-07-07 01:15:45 -05:00
pure_sagacity e61cf08607 made hyprland escape be meta shift escape because i keep accidently
leaving
2026-07-06 23:59:04 -05:00
pure_sagacity 1a2796a159 added podman as the oci-runtime 2026-07-06 23:57:11 -05:00
pure_sagacity ff8f8d7e39 kwallet stuff idk 2026-07-06 23:26:27 -05:00
pure_sagacity 746d6c525e kdenlive video editor 2026-07-06 19:44:11 -05:00
pure_sagacity 13944b3b0b added glow md viewer's completions 2026-07-05 23:51:21 -05:00
pure_sagacity dff4d5762d made the pkgs.system actually use the correct new syntax 2026-07-05 23:48:48 -05:00
pure_sagacity 066334b880 glow -- terminal markdown viewer 2026-07-05 23:47:23 -05:00
pure_sagacity e923c84902 added cursor vibe coder 2026-07-05 23:34:32 -05:00
pure_sagacity b1c21ee77d testing auto signing... 2026-07-04 23:23:08 -05:00
pure_sagacity 12bd99e84c test signing? 2026-07-04 23:21:48 -05:00
Maaz Khokhar a502f58756 added herdr, removed quickshell cause i wasen't using the flake 2026-07-04 23:13:59 -05:00
Maaz Khokhar c6c55abde2 Added jujutsu signing stuff, auto sign + the signing key.
finally got to adding an alias for kubectl + one for JJ as well
2026-07-04 22:52:54 -05:00
pure_sagacity 10074b37d1 changed some spacing (just a jj test rlly) 2026-07-04 22:34:24 -05:00
pure_sagacity bd8b826097 Added jujutsu VCS system + along with very minimal config 2026-07-04 22:22:46 -05:00
pure_sagacity 970bfc604c update 2026-07-04 21:08:32 -05:00
37 changed files with 1378 additions and 372 deletions
+1
View File
@@ -24,5 +24,6 @@
waybar waybar
quickshell quickshell
qt6.qtdeclarative qt6.qtdeclarative
wlogout
]; ];
} }
Generated
+497 -50
View File
@@ -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 -4
View File
@@ -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
View File
@@ -2,7 +2,9 @@
{ {
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;
+4
View File
@@ -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
+2 -2
View File
@@ -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 = {},
}, },
}, },
+2
View File
@@ -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 = {
+21
View 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";
};
};
}
+90 -7
View File
@@ -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";
} }
+1 -1
View File
@@ -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" ];
}; };
+122
View File
@@ -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";
};
}
+8 -96
View File
@@ -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;
};
} }
+48
View File
@@ -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";
};
};
}
+9
View File
@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
kernelOptions = {
stable = pkgs.linuxPackages;
lts = pkgs.linuxPackages_6_12;
latest = pkgs.linuxPackages_latest;
};
}
+37
View File
@@ -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
];
};
}
+16 -7
View File
@@ -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
];
};
} }
+14 -5
View File
@@ -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
];
};
} }
+8 -23
View File
@@ -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
];
} }
+31
View File
@@ -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
];
};
}
+30
View File
@@ -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";
};
};
}
+24 -15
View File
@@ -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
]; ];
};
} }
+19 -10
View File
@@ -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";
};
}; };
} }
+24 -12
View File
@@ -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";
};
}; };
} }
+1
View File
@@ -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
+29 -29
View File
@@ -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)
];
};
}; };
} }
+7 -10
View File
@@ -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
];
}; };
} }
+2 -2
View File
@@ -1,8 +1,8 @@
{ ... }:
{ {
imports = [ imports = [
./options.nix
./core ./core
./wireguard.nix
./tailscale.nix ./tailscale.nix
]; ];
} }
+122
View File
@@ -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";
};
};
}
+27 -22
View File
@@ -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"
];
} }
+17 -18
View File
@@ -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 ];
} }
+6
View File
@@ -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; [
+1 -1
View File
@@ -3,6 +3,6 @@
imports = [ imports = [
./podman.nix ./podman.nix
./qemu.nix ./qemu.nix
./lima.nix ./options.nix
]; ];
} }
+13 -5
View File
@@ -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
];
};
} }
+46
View File
@@ -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";
};
};
}
+47 -30
View File
@@ -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
];
})
]; ];
} }
+36 -22
View File
@@ -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" })
]; ];
} }