Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

266 changed files with 2192 additions and 2493 deletions

View file

@ -6,7 +6,7 @@ This config is primarily organized for my own use, you may find individual servi
### Installation ### Installation
You can install this flake from any system with the Nix package manager installed, including any official images. You can install this flake from any system with the Nix package manager installed, including any official images.
Disko is used to automatically format your drive according to a declared config. Disko is used to automatically format your drive according to a declared config.
Use ``nix-shell -p disko --run "sudo disko --mode destroy,format,mount ./disko.nix"`` to format the disk with Disko. Use ``nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount ./filename.nix`` to format the disk with Disko.
You will likely want to generate a per hardware nix file using ``nixos-generate-config --root ./ --no-filesystems``, and adapt it to fit the format of ``/hosts``, to ensure essential drivers are loaded on boot. You will likely want to generate a per hardware nix file using ``nixos-generate-config --root ./ --no-filesystems``, and adapt it to fit the format of ``/hosts``, to ensure essential drivers are loaded on boot.
Once formatted and adjusted, NixOS can be installed to the mounted drive with ``nixos-install --root /mnt --flake .#host``, where ``host`` is a hostname defined in this flake. Once formatted and adjusted, NixOS can be installed to the mounted drive with ``nixos-install --root /mnt --flake .#host``, where ``host`` is a hostname defined in this flake.

239
flake.lock generated
View file

@ -2,9 +2,7 @@
"nodes": { "nodes": {
"blender": { "blender": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": "nixpkgs"
"unstable"
]
}, },
"locked": { "locked": {
"dir": "blender", "dir": "blender",
@ -39,12 +37,18 @@
} }
}, },
"crane": { "crane": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1748970125, "lastModified": 1717535930,
"narHash": "sha256-UDyigbDGv8fvs9aS95yzFfOKkEjx1LO3PL3DsKopohA=", "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "323b5746d89e04b22554b061522dfce9e4c49b18", "rev": "55e7754ec31dac78980c8be45f8a28e80e370946",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -60,11 +64,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749436314, "lastModified": 1746411114,
"narHash": "sha256-CqmqU5FRg5AadtIkxwu8ulDSOSoIisUMZRLlcED3Q5w=", "narHash": "sha256-mLlkVX1kKbAa/Ns5u26wDYw4YW4ziMFM21fhtRmfirU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "dfa4d1b9c39c0342ef133795127a3af14598017a", "rev": "b5d1320ebc2f34dbea4655f95167f55e2130cdb3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -76,11 +80,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1696426674,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -92,11 +96,11 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1696426674,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -108,11 +112,11 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1733328505,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -129,11 +133,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749398372, "lastModified": 1717285511,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -168,11 +172,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1710146030,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -199,32 +203,6 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"mailserver",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"mailserver",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742649964,
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -247,28 +225,6 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_2": {
"inputs": {
"nixpkgs": [
"mailserver",
"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"
}
},
"hm": { "hm": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -276,16 +232,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749154018, "lastModified": 1746171682,
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", "rev": "50eee705bbdbac942074a8c120e8194185633675",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-25.05", "ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -313,11 +269,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749495634, "lastModified": 1746158343,
"narHash": "sha256-NPifVq2XZGRCsLBoUt6M5YUTiIh23+ubq57w7mSODt8=", "narHash": "sha256-i/1os9oEq0m/Da4FTdSqKUdI4+wzrvoDTuk1/dHSVDc=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "c40d2f31f92571bf341497884174a132829ef0fc", "rev": "8b45a8efb2829adf2996b51965ada1e4620631ac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -331,6 +287,7 @@
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
"stable" "stable"
], ],
@ -338,15 +295,16 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1749471908, "lastModified": 1718178907,
"narHash": "sha256-uGfPqd43KTomeIVWUzHu3hGLWFsqYibhWLt2OaRic28=", "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "00292388ad3b497763b81568d6ee5e1c4a2bcf85", "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "v0.4.1",
"repo": "lanzaboote", "repo": "lanzaboote",
"type": "github" "type": "github"
} }
@ -355,23 +313,22 @@
"inputs": { "inputs": {
"blobs": "blobs", "blobs": "blobs",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"git-hooks": "git-hooks",
"nixpkgs": [ "nixpkgs": [
"stable" "stable"
], ],
"nixpkgs-25_05": "nixpkgs-25_05" "nixpkgs-24_11": "nixpkgs-24_11"
}, },
"locked": { "locked": {
"lastModified": 1747965231, "lastModified": 1746469806,
"narHash": "sha256-BW3ktviEhfCN/z3+kEyzpDKAI8qFTwO7+S0NVA0C90o=", "narHash": "sha256-kL3cc25sc0x+6gBZYjuE4566RT1E3XLQs4V8sl7D+VE=",
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"rev": "53007af63fade28853408370c4c600a63dd97f41", "rev": "14857a0309d7bbdf7c51bbfa309d0d13448ae77e",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"ref": "nixos-25.05", "ref": "nixos-24.11",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"type": "gitlab" "type": "gitlab"
} }
@ -380,16 +337,14 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": "nixpkgs_2"
"stable"
]
}, },
"locked": { "locked": {
"lastModified": 1749607590, "lastModified": 1746324578,
"narHash": "sha256-vvu9zoaYuuPIGG9YKRBMNqOELGN+x2qHbEK6PrZ/Ky0=", "narHash": "sha256-VUSIQ2W1Q3YgGvX3M4jPwIi3iIApdPHabhdrVjVgnwE=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "83aaf9c7e3caa39608992e723cfb997624920a35", "rev": "9e7fd83ba3b25b6f03561a5b7f8ea74b70296816",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -420,18 +375,64 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-25_05": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1747610100, "lastModified": 1733808091,
"narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", "narHash": "sha256-KWwINTQelKOoQgrXftxoqxmKFZb9pLVfnRvK270nkVk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", "rev": "a0f3e10d94359665dba45b71b4227b0aeb851f8e",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.11",
"type": "indirect"
}
},
"nixpkgs-24_11": {
"locked": {
"lastModified": 1734083684,
"narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.11",
"type": "indirect"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1710695816,
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.05", "ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1742889210,
"narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "698214a32beb4f4c8e3942372c694f40848b360d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -445,11 +446,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1749614785, "lastModified": 1746568792,
"narHash": "sha256-yn6eDwnUr9vZYpneg+XNh0/tC1KA9a+yXxvFMEzOfco=", "narHash": "sha256-e3QkOhtYJUlMLGCVUmQWULtVDokSJqud0VmPZoRj4s0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "14f8439ad1190d3dd09f9fcc6a033d9710d68806", "rev": "29d16321b0f48ad0d24c3eaf5656adfaaf99d19e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -468,14 +469,15 @@
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
] ],
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1747372754, "lastModified": 1717664902,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -488,7 +490,6 @@
"inputs": { "inputs": {
"blender": "blender", "blender": "blender",
"disko": "disko", "disko": "disko",
"flake-utils": "flake-utils",
"hm": "hm", "hm": "hm",
"impermanence": "impermanence", "impermanence": "impermanence",
"jovian": "jovian", "jovian": "jovian",
@ -502,17 +503,21 @@
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1749436897, "lastModified": 1717813066,
"narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=", "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19", "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -523,16 +528,16 @@
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1750005367, "lastModified": 1746422338,
"narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=", "narHash": "sha256-NTtKOTLQv6dPfRe00OGSywg37A1FYqldS6xiNmqBUYc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3", "rev": "5b35d248e9206c1f3baf8de6a7683fee126364aa",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-25.05", "ref": "nixos-24.11",
"type": "indirect" "type": "indirect"
} }
}, },
@ -589,11 +594,11 @@
}, },
"unstable": { "unstable": {
"locked": { "locked": {
"lastModified": 1749794982, "lastModified": 1746461020,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae",
"type": "github" "type": "github"
}, },
"original": { "original": {

121
flake.nix
View file

@ -1,12 +1,9 @@
{ {
inputs = { inputs = {
# General inputs # General inputs
stable.url = "nixpkgs/nixos-25.05"; stable.url = "nixpkgs/nixos-24.11";
unstable.url = "nixpkgs/nixos-unstable"; unstable.url = "nixpkgs/nixos-unstable";
# Flake helpers
flake-utils.url = "github:numtide/flake-utils";
# System inputs # System inputs
disko = { disko = {
url = "github:nix-community/disko"; url = "github:nix-community/disko";
@ -16,7 +13,7 @@
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote"; url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
@ -28,98 +25,72 @@
# Service inputs # Service inputs
mailserver = { mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05"; url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
minecraft = { minecraft.url = "github:Infinidoge/nix-minecraft";
url = "github:Infinidoge/nix-minecraft";
inputs.nixpkgs.follows = "stable";
};
# Home inputs # Home inputs
hm = { hm = {
url = "github:nix-community/home-manager/release-25.05"; url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
nur = { nur = {
url = "github:nix-community/NUR"; url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "unstable"; inputs.nixpkgs.follows = "unstable";
}; };
# Specific apps blender.url = "github:edolstra/nix-warez?dir=blender";
blender = {
url = "github:edolstra/nix-warez?dir=blender";
inputs.nixpkgs.follows = "unstable";
};
}; };
outputs = inputs: with inputs; outputs = {
stable,
unstable,
{ disko,
colmena = { impermanence,
meta = { lanzaboote,
# Info
description = "The Bun Systems";
name = "bunhive";
# NixPKGs mailserver,
nixpkgs = import stable { minecraft,
overlays = [
blender.overlays.default
minecraft.overlay
];
system = "x86_64-linux";
};
jovian,
hm,
nur,
blender,
...
}@inputs:
let
mkNix = modules: channel: channel.lib.nixosSystem {
inherit modules;
specialArgs = inputs; specialArgs = inputs;
# Use a different Nixpkgs import on some systems
nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; };
}; };
mkHome = modules: channel: arch: hm.lib.homeManagerConfiguration {
# Import the default config to all hosts inherit modules;
defaults.imports = [ pkgs = builtins.getAttr arch channel.legacyPackages;
./modules/system
disko.nixosModules.disko
hm.nixosModules.home-manager
impermanence.nixosModules.impermanence
jovian.nixosModules.default
lanzaboote.nixosModules.lanzaboote
minecraft.nixosModules.minecraft-servers
];
# Desktops
tower.imports = [ ./hosts/tower ];
hidden.imports = [ ./hosts/hidden ];
# Laptops
intuos.imports = [ ./hosts/intuos ];
jupiter.imports = [ ./hosts/jupiter ];
flight.imports = [ ./hosts/flight ];
# Servers
midas.imports = [ ./hosts/midas ];
kitty.imports = [ ./hosts/kitty ];
detritus.imports = [ ./hosts/detritus ];
prophet.imports = [ ./hosts/prophet ];
};
}
// flake-utils.lib.eachDefaultSystemPassThrough (system: let
mkHome = extraModules: hm.lib.homeManagerConfiguration {
modules = [
./modules/home
{ targets.genericLinux.enable = true; }
] ++ extraModules;
extraSpecialArgs = inputs; extraSpecialArgs = inputs;
pkgs = builtins.getAttr system stable.legacyPackages;
}; };
in { in {
homeConfigurations = { # nh os switch /path -H host
default = mkHome [ ]; nixosConfigurations = {
desktop = mkHome [{ home.guifull.enable = true; }]; tower = mkNix [ ./hosts/tower ] stable; # Main Desktop
intuos = mkNix [ ./hosts/intuos ] stable; # Wacom Intuos Tablet
jupiter = mkNix [ ./hosts/jupiter ] unstable; # Steam Deck
redmond = mkNix [ ./hosts/redmond ] stable; # Lenovo Dual-Boot
midas = mkNix [ ./hosts/midas ] stable; # Dell Optiplex 5040
kitty = mkNix [ ./hosts/kitty ] stable; # Dell Optiplex 7010
prophet = mkNix [ ./hosts/prophet ] stable; # Oracle Neoverse-N1
};
# nh home switch /path -c arch
homeConfigurations = {
x86 = mkHome [ ./modules/home ] stable "x86_64-linux";
aarch = mkHome [ ./modules/home ] stable "aarch64-linux";
};
}; };
});
} }

View file

@ -1,7 +0,0 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_hardened;
loader.limine.enable = true;
};
}

View file

@ -1,22 +0,0 @@
{ ... }:
{
imports = [
./boot
./disko
./filesystems
./hardware
];
system = {
nixos.tags = [ "server" ];
stateVersion = "25.05";
};
deployment.targetHost = "53a:2092:12ff:889c:2e1f:1d79:f05a:cadd";
networking.hostId = "0917a5c1";
services.nfs.server.enable = true;
virtualisation.libvirtd.enable = true;
}

View file

@ -1,99 +0,0 @@
{ config, name, ... }:
{
disko.devices = {
disk = {
"${name}" = {
type = "disk";
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
main = {
size = "100%";
content = {
type = "lvm_pv";
vg = "${name}";
};
};
};
};
};
};
lvm_vg = {
"${name}" = {
type = "lvm_vg";
lvs = {
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"/root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"ssd"
];
};
"/prev" = {
mountpoint = "/prev";
mountOptions = [
"compress=zstd"
"noexec"
"ssd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"ssd"
];
};
# Impermanence
"/persist" = {
mountpoint = "/persist";
mountOptions = [
"compress=zstd"
"ssd"
];
};
"/persist/.snapshots" = { };
"/persist/home" = { };
"/persist/home/.snapshots" = { };
};
};
};
swap = {
size = "2G";
content = {
type = "swap";
discardPolicy = "both";
};
};
};
};
};
};
# Needed for impermanence
fileSystems."/persist".neededForBoot = true;
}

View file

@ -1,14 +0,0 @@
{ ... }:
{
fileSystems = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6";
fsType = "btrfs";
options = [
"nofail"
"nosuid"
"subvol=storage"
];
};
};
}

View file

@ -1,23 +0,0 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"ehci_pci"
"sd_mod"
"usb_storage"
"usbhid"
"xhci_pci_renesas"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
hardware.cpu.intel.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -1,11 +0,0 @@
{ lib, pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages;
loader.limine = {
enable = true;
biosDevice = lib.mkForce "/dev/disk/by-id/ata-XSTAR_SSD_64GB_XSFA2011000462";
};
plymouth.enable = true;
};
}

View file

@ -1,17 +0,0 @@
{ ... }:
{
imports = [
./boot
./filesystems
./hardware
./root
./user
];
system = {
nixos.tags = [ "pc" ];
stateVersion = "25.05";
};
deployment.targetHost = "409:b2b1:966c:b13:6d67:2d6b:45e2:f048";
}

View file

@ -1,14 +0,0 @@
{ config, ... }:
{
fileSystems = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/3d6f81f2-7fa5-40a2-85bb-56f4cab63773";
fsType = "btrfs";
options = [
"nofail"
"nosuid"
"subvol=storage"
];
};
};
}

View file

@ -1,35 +0,0 @@
{ config, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ehci_pci"
"ahci"
"xhci_pci"
"usb_storage"
"sd_mod"
"sr_mod"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware = {
cpu.intel.updateMicrocode = true;
nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.legacy_390;
prime = {
sync.enable = true;
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
};
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -1,54 +0,0 @@
{ config, name, ... }:
{
boot.initrd.luks.devices."${name}-disk".device = "/dev/disk/by-uuid/0fc43c11-c382-4e37-812b-8866b1b20e68";
fileSystems = {
"/boot" = {
device = "/dev/disk/by-uuid/FA96-EF11";
fsType = "vfat";
options = [ "umask=0077" ];
};
"/" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"ssd"
"subvol=root"
];
};
"/prev" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"noexec"
"ssd"
"subvol=prev"
];
};
"/nix" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"ssd"
"subvol=nix"
];
};
"/persist" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
neededForBoot = true;
options = [
"compress=zstd"
"ssd"
"subvol=persist"
];
};
};
swapDevices = [ { device = "/dev/disk/by-uuid/93ac8c5c-c947-4b45-a12a-146e87398517"; } ];
}

View file

@ -1,7 +0,0 @@
{ config, lib, ... }:
{
home-manager.users."${config.vars.mainUser}" = {
home.guifull.enable = true;
wayland.windowManager.sway.extraSessionCommands = lib.mkForce "";
};
}

View file

@ -1,8 +0,0 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_6_14;
loader.limine.enable = true;
plymouth.enable = true;
};
}

View file

@ -1,17 +0,0 @@
{ ... }:
{
imports = [
./boot
./disko
./hardware
./services
./user
];
system = {
nixos.tags = [ "pc" ];
stateVersion = "24.11";
};
deployment.targetHost = "4ec:1001:ca5a:ae79:40e2:cb4c:e3c9:f401";
}

View file

@ -1,27 +0,0 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"nvme"
"sd_mod"
"sr_mod"
"usb_storage"
"usbhid"
"xhci_pci"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
hardware.cpu = {
amd.updateMicrocode = true;
intel.updateMicrocode = true;
};
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -1,9 +0,0 @@
{ config, lib, ... }:
{
networking.useNetworkd = lib.mkForce false;
virtualisation = {
libvirtd.enable = true;
vmware.host.enable = true;
};
}

View file

@ -1,7 +0,0 @@
{ config, ... }:
{
home-manager.users."${config.vars.mainUser}".home = {
desktop.enable = true;
school.enable = true;
};
}

View file

@ -1,6 +1,7 @@
{ ... }: { pkgs, ... }:
{ {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest;
lanzaboote.enable = true; lanzaboote.enable = true;
plymouth.enable = true; plymouth.enable = true;
}; };

View file

@ -3,14 +3,16 @@
imports = [ imports = [
./boot ./boot
./disko ./disko
./filesystems
./hardware ./hardware
./user ./user
../../modules/system
]; ];
networking.hostName = "intuos";
system = { system = {
nixos.tags = [ "pc" ]; desktop.enable = true;
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "40e:404:a427:da33:163e:97b3:a2a3:9ed4";
} }

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/sda"; device = "/dev/sda";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,12 +28,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${name}-disk"; name = "${config.networking.hostName}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -42,7 +43,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -0,0 +1,32 @@
{ config, ... }:
{
fileSystems = {
"/home/${config.sysusers.main}/Network/Midas" = {
device = "10.2.0.1:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Kitty" = {
device = "10.2.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
};
}

View file

@ -1,4 +1,4 @@
{ modulesPath, ... }: { config, lib, modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -16,7 +16,6 @@
kernelModules = [ "kvm-intel" ]; kernelModules = [ "kvm-intel" ];
}; };
hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1,7 +1,8 @@
{ config, ... }: { config, lib, ... }:
{ {
home-manager.users."${config.vars.mainUser}".home = { home-manager.users."${config.sysusers.main}".home = {
desktop.enable = true; desktop.enable = true;
production.enable = true; production.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
}; };
} }

View file

@ -1,8 +1,8 @@
{ pkgsStable, ... }: { pkgs, ... }:
{ {
boot = { boot = {
kernelPackages = pkgsStable.linuxPackages_6_14; kernelPackages = pkgs.linuxPackages_latest;
loader.limine.enable = true; loader.systemd-boot.enable = true;
plymouth.enable = true; plymouth.enable = true;
}; };
} }

View file

@ -8,14 +8,14 @@
./jovian ./jovian
./services ./services
./user ./user
../../modules/system
]; ];
networking.hostName = "jupiter";
system = { system = {
nixos.tags = [ "pc" ]; desktop.enable = true;
steamdeck.enable = true;
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b";
jovian.steam.enable = true;
} }

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/nvme0n1";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,7 +28,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -36,7 +37,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,7 +1,6 @@
{ config, ... }: { config, ... }:
{ {
fileSystems = { fileSystems."/mnt/Games" = {
"/mnt/Games" = {
device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [
@ -9,5 +8,4 @@
"nosuid" "nosuid"
]; ];
}; };
};
} }

View file

@ -1,4 +1,4 @@
{ modulesPath, ... }: { config, lib, modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -15,7 +15,6 @@
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
}; };
hardware.cpu.amd.updateMicrocode = true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1,12 +1,16 @@
{ config, lib, pkgs, jovian, ... }: { config, lib, pkgs, jovian, ... }:
{ {
imports = [ ./desktop ]; imports = [ jovian.nixosModules.jovian ];
config = lib.mkIf config.jovian.steam.enable { options.system.steamdeck.enable = lib.mkEnableOption "Jovian NixOS environment";
config = lib.mkIf config.system.steamdeck.enable {
jovian = { jovian = {
steam = { steam = {
enable = true;
autoStart = true; autoStart = true;
user = config.vars.mainUser; desktopSession = "gnome";
user = config.sysusers.main;
}; };
decky-loader = { decky-loader = {
enable = true; enable = true;
@ -18,46 +22,80 @@
}; };
}; };
# Evil kernel
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian;
programs.steam.extest.enable = true; programs.steam = {
extest.enable = true;
localNetworkGameTransfers.openFirewall = true;
remotePlay.openFirewall = true;
};
hardware.xone.enable = true; services = {
keyd.enable = lib.mkForce false;
tlp.enable = lib.mkForce false;
xserver.desktopManager.gnome.enable = true;
};
# Use networkmanager for ui compatibility
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
wireless.enable = lib.mkForce false; wireless.enable = lib.mkForce false;
}; };
# Disable conflicting services environment = {
services = { persistence."/persist" = {
keyd.enable = lib.mkForce false; directories = [
tlp.enable = lib.mkForce false;
};
# Disable network filesystems
fileSystems = {
"midas".enable = false;
"kitty".enable = false;
"detritus".enable = false;
"prophet".enable = false;
};
environment.persistence."/persist".directories = [
"/etc/NetworkManager/system-connections" "/etc/NetworkManager/system-connections"
"/var/lib/decky-loader" "/var/lib/decky-loader"
]; ];
users.${config.sysusers.main}.directories = [ ".steam" ];
};
gnome.excludePackages = with pkgs; [
adwaita-icon-theme
baobab
epiphany
evince
file-roller
geary
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-color-manager
gnome-connections
gnome-console
gnome-contacts
gnome-disk-utility
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-shell-extensions
gnome-software
gnome-system-monitor
gnome-text-editor
gnome-tour
gnome-user-docs
gnome-weather
loupe
nautilus
orca
seahorse
simple-scan
snapshot
sushi
sysprof
totem
yelp
];
};
nixpkgs.allowUnfreePackages = [ nixpkgs.allowUnfreePackages = [
"steam" "steam"
"steam-jupiter-unwrapped" "steam-jupiter-unwrapped"
"steamdeck-firmware" "steamdeck-firmware"
"steamdeck-hw-theme" "steamdeck-hw-theme"
"xow_dongle-firmware"
]; ];
specialisation.desktop.configuration.config.jovian.steam.enable = lib.mkForce false; specialisation.desktop.configuration.config.system.steamdeck.enable = lib.mkForce false;
}; };
} }

View file

@ -1,48 +0,0 @@
{ config, lib, pkgs, ... }:
{
config = lib.mkIf config.jovian.steam.enable {
jovian.steam.desktopSession = "gnome";
services.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = with pkgs; [
adwaita-icon-theme
baobab
epiphany
evince
file-roller
geary
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-color-manager
gnome-connections
gnome-console
gnome-contacts
gnome-disk-utility
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-remote-desktop
gnome-shell-extensions
gnome-software
gnome-system-monitor
gnome-text-editor
gnome-tour
gnome-user-docs
gnome-weather
loupe
nautilus
orca
seahorse
simple-scan
snapshot
sushi
sysprof
totem
yelp
];
};
}

View file

@ -1,6 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
config = lib.mkIf (!config.jovian.steam.enable) { config = lib.mkIf (!config.system.steamdeck.enable) {
networking.useNetworkd = lib.mkForce false; networking.useNetworkd = lib.mkForce false;
services.globalprotect.enable = true; services.globalprotect.enable = true;
@ -9,5 +9,12 @@
libvirtd.enable = true; libvirtd.enable = true;
vmware.host.enable = true; vmware.host.enable = true;
}; };
nixpkgs.allowUnfreePackages = [ "vmware-workstation" ];
environment.persistence."/persist".users.${config.sysusers.main}.directories = [
"vmware"
".vmware"
];
}; };
} }

View file

@ -1,8 +1,11 @@
{ config, ... }: { config, lib, ... }:
{ {
home-manager.users."${config.vars.mainUser}".home = { home-manager.users."${config.sysusers.main}".home = {
guifull.enable = true; desktop.enable = true;
gaming.enable = true;
production.enable = true;
school.enable = true; school.enable = true;
enableNixpkgsReleaseCheck = false; enableNixpkgsReleaseCheck = false;
stateVersion = lib.mkForce config.system.stateVersion;
}; };
} }

View file

@ -2,6 +2,6 @@
{ {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_hardened; kernelPackages = pkgs.linuxPackages_hardened;
loader.limine.enable = true; loader.systemd-boot.enable = true;
}; };
} }

View file

@ -6,16 +6,20 @@
./filesystems ./filesystems
./hardware ./hardware
./network ./network
./services ./user
../../modules/system
]; ];
networking = {
hostName = "kitty";
hostId = "8745e22e";
};
system = { system = {
nixos.tags = [ server.enable = true;
"extra-users" extraUsers.enable = true;
"server"
];
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; services.nfs.server.enable = true;
} }

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B7783DBB232"; device = "/dev/sda";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,7 +28,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -36,7 +37,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,4 +1,4 @@
{ ... }: { config, ... }:
{ {
fileSystems = { fileSystems = {
"/persist/storage" = { "/persist/storage" = {
@ -9,5 +9,23 @@
"nosuid" "nosuid"
]; ];
}; };
"/home/${config.sysusers.main}/Network/Midas" = {
device = "11.0.0.1:/storage";
fsType = "nfs4";
options = [
"x-systemd.automount"
"noauto"
"soft"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ ... }: { config, lib, ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -9,7 +9,6 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOBa+Wz1FqFEnMeXflP0CPt2wnN819T+FdSCIwFLJjN

View file

@ -2,13 +2,21 @@
{ {
networking = { networking = {
interfaces."eno1".ipv4.addresses = [{ interfaces."eno1".ipv4.addresses = [{
address = "11.2.0.1"; address = "10.2.0.2";
prefixLength = 8; prefixLength = 8;
}]; }];
defaultGateway = { defaultGateway = {
address = "11.1.0.1"; address = "10.1.0.1";
interface = "eno1"; interface = "eno1";
}; };
hostId = "8745e22e";
vlans.internal = {
id=100;
interface="eno1";
};
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.2";
prefixLength = 8;
}];
}; };
} }

View file

@ -1,9 +0,0 @@
{ ... }:
{
services = {
nfs.server.enable = true;
nginx.enable = true;
};
virtualisation.incus.enable = true;
}

View file

@ -0,0 +1,6 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -7,12 +7,17 @@
./hardware ./hardware
./network ./network
./services ./services
./user
../../modules/system
]; ];
system = { networking = {
nixos.tags = [ "server" ]; hostName = "midas";
stateVersion = "24.11"; hostId = "38ba3f57";
}; };
deployment.targetHost = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; system = {
server.enable = true;
stateVersion = "24.11";
};
} }

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/disk/by-id/nvme-eui.00080d03001365cc"; device = "/dev/nvme0n1";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,12 +28,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${name}-disk"; name = "${config.networking.hostName}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -42,7 +43,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -10,5 +10,14 @@
"subvol=persist" "subvol=persist"
]; ];
}; };
"/kitty" = {
device = "11.0.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ ... }: { config, lib, ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -10,7 +10,6 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFGHaxdTeC1xnTx2BY5LLR5LxhdSkmYoWuOeEuRIz0k

View file

@ -2,13 +2,45 @@
{ {
networking = { networking = {
interfaces."enp0s31f6".ipv4.addresses = [{ interfaces."enp0s31f6".ipv4.addresses = [{
address = "11.2.0.1"; address = "10.2.0.1";
prefixLength = 8; prefixLength = 8;
}]; }];
defaultGateway = { defaultGateway = {
address = "11.1.0.1"; address = "10.1.0.1";
interface = "enp0s31f6"; interface = "enp0s31f6";
}; };
hostId = "38ba3f57";
vlans.internal = {
id=100;
interface="enp0s31f6";
}; };
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.1";
prefixLength = 8;
}];
nftables.tables.forwarding = {
family = "inet";
content = ''
chain incoming {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 2211 dnat ip to 11.0.0.100:22 comment "Tower SSH"
tcp dport 2222 dnat ip to 11.0.0.2:22 comment "Kitty SSH"
udp dport { 27005, 27015 } dnat ip to 11.0.0.100 comment "PC Hosted Games"
tcp dport { 48010, 47989, 47984 } dnat ip to 11.0.0.100 comment "PC Sunshine TCP"
udp dport { 47998, 47999, 48000 } dnat ip to 11.0.0.100 comment "PC Sunshine UDP"
}
chain forward {
type nat hook postrouting priority 100; policy accept;
masquerade
}
'';
};
};
# Enable IP forwarding for the server configuration
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
} }

View file

@ -1,21 +1,21 @@
{ ... }: { ... }:
{ {
imports = [ ./nginx ];
services = { services = {
cloudflare-dyndns.enable = true; cloudflare-dyndns.enable = true;
forgejo.enable = true; forgejo.enable = true;
hedgedoc.enable = true;
icecast.enable = true; icecast.enable = true;
jellyfin.enable = true; jellyfin.enable = true;
lemmy.enable = true;
mastodon.enable = true; mastodon.enable = true;
matrix-synapse.enable = true; matrix-synapse.enable = true;
mysql.enable = true; mysql.enable = true;
nextcloud.enable = true; nextcloud.enable = true;
nfs.server.enable = true; nfs.server.enable = true;
nginx.enable = true;
owncast.enable = true; owncast.enable = true;
transmission.enable = true; transmission.enable = true;
vaultwarden.enable = true; vaultwarden.enable = true;
webserver.enable = true;
minecraft-servers = { minecraft-servers = {
enable = true; enable = true;

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [ ./nixfox ];
services.nginx.enable = true;
}

View file

@ -0,0 +1,6 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -1,8 +1,7 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
boot = { boot = {
binfmt.emulatedSystems = [ "x86_64-linux" ];
kernelPackages = pkgs.linuxPackages_hardened; kernelPackages = pkgs.linuxPackages_hardened;
loader.limine.enable = true; loader.systemd-boot.enable = true;
}; };
} }

View file

@ -6,18 +6,18 @@
./filesystems ./filesystems
./hardware ./hardware
./services ./services
./user
../../modules/system
(modulesPath + "/profiles/headless.nix") (modulesPath + "/profiles/headless.nix")
]; ];
networking = {
hostName = "prophet";
hostId = "97a21a38";
};
system = { system = {
nixos.tags = [ "server" ]; server.enable = true;
stateVersion = "24.05"; stateVersion = "24.05";
}; };
deployment = {
buildOnTarget = true;
targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b";
};
networking.hostId = "97a21a38";
} }

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/disk/by-id/scsi-3609c958403f14cd29ff94a5a2e405cc2"; device = "/dev/nvme0n1";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,7 +28,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -36,7 +37,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
fileSystems = { fileSystems."/persist/storage" = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e"; device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [
@ -9,5 +8,4 @@
"nosuid" "nosuid"
]; ];
}; };
};
} }

View file

@ -1,4 +1,4 @@
{ ... }: { lib, ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -8,5 +8,5 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
nixpkgs.hostPlatform = "aarch64-linux"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
} }

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDXU+mo+lkFaGBV7wuzrGnlII15YS3/MkkG3KmGJRT0j

View file

@ -2,10 +2,9 @@
{ {
services = { services = {
cloudflare-dyndns.enable = true; cloudflare-dyndns.enable = true;
mailserver.enable = true;
mysql.enable = true; mysql.enable = true;
nfs.server.enable = true; nfs.server.enable = true;
nginx.enable = true; nginx.enable = true;
}; };
mailserver.enable = true;
} }

View file

@ -0,0 +1,6 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -0,0 +1,12 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = [
"radeon.cik_support=0"
"amdgpu.cik_support=1"
];
loader.systemd-boot.enable = true;
plymouth.enable = true;
};
}

19
hosts/redmond/default.nix Normal file
View file

@ -0,0 +1,19 @@
{ lib, ... }:
{
imports = [
./boot
./disko
./filesystems
./hardware
./network
./user
../../modules/system
];
networking.hostName = "redmond";
system = {
desktop.enable = true;
stateVersion = "24.05";
};
}

View file

@ -1,15 +1,16 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/sda"; device = "/dev/nvme0n1";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,12 +28,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${name}-disk"; name = "${config.networking.hostName}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -42,7 +43,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {
@ -53,34 +54,24 @@
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";
mountOptions = [ mountOptions = [ "compress=zstd" ];
"compress=zstd"
"ssd"
];
}; };
"/prev" = { "/prev" = {
mountpoint = "/prev"; mountpoint = "/prev";
mountOptions = [ mountOptions = [
"compress=zstd" "compress=zstd"
"noexec" "noexec"
"ssd"
]; ];
}; };
"/nix" = { "/nix" = {
mountpoint = "/nix"; mountpoint = "/nix";
mountOptions = [ mountOptions = [ "compress=zstd" ];
"compress=zstd"
"ssd"
];
}; };
# Impermanence # Impermanence
"/persist" = { "/persist" = {
mountpoint = "/persist"; mountpoint = "/persist";
mountOptions = [ mountOptions = [ "compress=zstd" ];
"compress=zstd"
"ssd"
];
}; };
"/persist/.snapshots" = { }; "/persist/.snapshots" = { };
"/persist/home" = { }; "/persist/home" = { };
@ -89,7 +80,7 @@
}; };
}; };
swap = { swap = {
size = "2G"; size = "8G";
content = { content = {
type = "swap"; type = "swap";
discardPolicy = "both"; discardPolicy = "both";

View file

@ -0,0 +1,11 @@
{ config, ... }:
{
fileSystems."/mnt/Windrive" = {
device = "/dev/disk/by-uuid/582C6B802C6B57D0";
fsType = "ntfs";
options = [
"nodev"
"nosuid"
];
};
}

View file

@ -0,0 +1,23 @@
{ config, lib, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"ehci_pci"
"rtsx_usb_sdmmc"
"sd_mod"
"sdhci_pci"
"sr_mod"
"xhci_pci"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-amd" ];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHJ2Gy1Gaq96K85zOSfgWzGY0rIaUcqGS7Si5Nvzg+n

View file

@ -0,0 +1,13 @@
{ ... }:
{
networking = {
interfaces."wlp1s0".ipv4.addresses = [{
address = "192.168.2.200";
prefixLength = 24;
}];
defaultGateway = {
address = "192.168.2.1";
interface = "wlp1s0";
};
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
desktop.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -1,12 +1,19 @@
{ config, lib, pkgs, ... }: { config, lib, pkgsUnstable, ... }:
let let
commonKernelParams = [ commonKernelParams = [
# VM/GPU passthrough
"amd_iommu=on" "amd_iommu=on"
"iommu=pt" "iommu=pt"
"nested=1"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
]; ];
in { in {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_6_14; # Latest kernel and IOMMU isolation
kernelPackages = pkgsUnstable.linuxPackages_latest;
kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ];
# Load into GPU before video driver # Load into GPU before video driver
@ -21,5 +28,8 @@ in {
}; };
# Use second GPU on boot # Use second GPU on boot
specialisation.gputwo.configuration.boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; specialisation.gputwo.configuration = {
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
environment.sessionVariables.WLR_RENDERER = lib.mkForce "gles2";
};
} }

View file

@ -5,15 +5,18 @@
./disko ./disko
./filesystems ./filesystems
./hardware ./hardware
./network
./user ./user
../../modules/system
]; ];
networking.hostName = "tower";
system = { system = {
nixos.tags = [ "pc" ]; desktop.enable = true;
nvidia.enable = true;
stateVersion = "24.05"; stateVersion = "24.05";
}; };
deployment.targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b";
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
} }

View file

@ -1,15 +1,17 @@
{ config, name, ... }: { config, disko, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${name}" = { "${config.networking.hostName}" = {
type = "disk"; type = "disk";
device = "/dev/disk/by-id/nvme-INTEL_SSDPEKNU512GZ_BTKA20550TKC512A"; device = "/dev/nvme0n1";
imageSize = "32G";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -27,12 +29,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${name}-disk"; name = "${config.networking.hostName}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${name}"; vg = "${config.networking.hostName}";
}; };
}; };
}; };
@ -42,7 +44,7 @@
}; };
lvm_vg = { lvm_vg = {
"${name}" = { "${config.networking.hostName}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,34 +1,26 @@
{ ... }: { config, ... }:
{ {
fileSystems = { fileSystems = {
# Games and such # Games and such
"/mnt/Linux1" = { "/mnt/Linux1" = {
device = "/dev/disk/by-label/Linux1"; device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4";
fsType = "btrfs"; fsType = "ext4";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
]; ];
}; };
"/mnt/Linux2" = { "/mnt/Linux2" = {
device = "/dev/disk/by-label/Linux2"; device = "/dev/disk/by-uuid/f08e4f38-162c-402f-ba2a-5925151b78bf";
fsType = "btrfs"; fsType = "ext4";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
]; ];
}; };
"/mnt/Linux3" = { "/mnt/Linux3" = {
device = "/dev/disk/by-label/Linux3"; device = "/dev/disk/by-uuid/e7bc75bd-c371-4b28-b212-7be9b1fad339";
fsType = "btrfs"; fsType = "ext4";
options = [
"nofail"
"nosuid"
];
};
"/mnt/Linux4" = {
device = "/dev/disk/by-label/Linux4";
fsType = "btrfs";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
@ -45,5 +37,34 @@
"subvol=libvirt" "subvol=libvirt"
]; ];
}; };
# Network mounts
"/home/${config.sysusers.main}/Network/Midas" = {
device = "11.0.0.1:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Kitty" = {
device = "11.0.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ modulesPath, ... }: { config, lib, modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -16,9 +16,6 @@
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
}; };
services.xserver.videoDrivers = [ "nvidia" ]; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.cpu.amd.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -0,0 +1,24 @@
{ ... }:
{
networking = {
interfaces."enp42s0".ipv4.addresses = [{
address = "10.2.0.100";
prefixLength = 8;
}];
defaultGateway = {
address = "10.1.0.1";
interface = "enp42s0";
};
vlans.internal = {
id=100;
interface="enp42s0";
};
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.100";
prefixLength = 8;
}];
firewall.allowedUDPPorts = [ 27015 ];
};
}

View file

@ -1,4 +1,9 @@
{ config, ... }: { config, lib, ... }:
{ {
home-manager.users."${config.vars.mainUser}".home.guifull.enable = true; home-manager.users."${config.sysusers.main}".home = {
desktop.enable = true;
gaming.enable = true;
production.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
};
} }

View file

@ -1,13 +1,20 @@
{ lib, ... }: { lib, ... }:
{ {
imports = [ imports = [
./profiles
./programs ./programs
./services ./services
./settings ./settings
./user
./variables ./variables
./wms ./wms
]; ];
config.home.stateVersion = "25.05"; options.home = with lib; {
desktop.enable = mkEnableOption "Desktop programs and services";
gaming.enable = mkEnableOption "Gaming apps and programs";
production.enable = mkEnableOption "Apps for visual productivity";
school.enable = mkEnableOption "Apps for school and college";
};
config.home.stateVersion = "24.11";
} }

View file

@ -1,11 +0,0 @@
{ lib, ... }:
{
imports = [ ./guifull ];
options.home = with lib; {
desktop.enable = mkEnableOption "Desktop programs and services";
gaming.enable = mkEnableOption "Gaming apps and programs";
production.enable = mkEnableOption "Apps for visual productivity";
school.enable = mkEnableOption "Apps for school and college";
};
}

View file

@ -1,12 +0,0 @@
{ config, lib, ... }:
{
options.home = with lib; {
guifull.enable = mkEnableOption "Enable most other GUI profiles";
};
config.home = lib.mkIf config.home.guifull.enable {
desktop.enable = true;
gaming.enable = true;
production.enable = true;
};
}

View file

@ -6,11 +6,11 @@
settings = { settings = {
main = { main = {
term = "xterm-256color"; term = "xterm-256color";
font = "${config.vars.fonts.mono}:size=14.7"; font = "${config.look.fonts.mono}:size=14.7";
}; };
colors = { colors = {
alpha = "0.85"; alpha = "0.85";
background = config.vars.colors.dark; background = config.look.colors.dark;
regular0 = "3f3f3f"; regular0 = "3f3f3f";
regular1 = "cc0000"; regular1 = "cc0000";
regular2 = "4e9a06"; regular2 = "4e9a06";
@ -29,10 +29,7 @@
bright7 = "ffffff"; bright7 = "ffffff";
}; };
cursor.style = "beam"; cursor.style = "beam";
key-bindings = { key-bindings.search-start = "Control+f";
search-start = "Control+f";
show-urls-launch = "Control+s";
};
}; };
}; };
} }

View file

@ -1,63 +1,40 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, nur, ... }:
{ {
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
package = pkgs.librewolf; package = pkgs.librewolf;
profiles.default = { profiles = let
isDefault = true; # FireFox css, based on https://github.com/Dook97/firefox-qutebrowser-userchrome
themeFont = ''
--tab-font: '${config.look.fonts.main}';
--urlbar-font: '${config.look.fonts.main}';
'';
themeMain = ''
:root {
--tab-active-bg-color: #${config.look.colors.prime};
--tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${config.look.colors.dark};
--tab-active-fg-fallback-color: #FFFFFF;
--tab-inactive-fg-fallback-color: #${config.look.colors.text};
--urlbar-focused-bg-color: #${config.look.colors.dark};
--urlbar-not-focused-bg-color: #${config.look.colors.dark};
--toolbar-bgcolor: #${config.look.colors.dark} !important;
'';
themeAlt = ''
:root {
--tab-active-bg-color: #${config.look.colors.dark};
--tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${config.look.colors.prime};
--tab-active-fg-fallback-color: #${config.look.colors.text};
--tab-inactive-fg-fallback-color: #FFFFFF;
--urlbar-focused-bg-color: #${config.look.colors.prime};
--urlbar-not-focused-bg-color: #${config.look.colors.prime};
--toolbar-bgcolor: #${config.look.colors.prime} !important;
'';
containersForce = true; # Profile settings
containers = { commonExtensions = with pkgs.nur.repos.rycee.firefox-addons; [
home = {
color = "purple";
icon = "fruit";
id = 1;
};
school = {
color = "red";
icon = "briefcase";
id = 2;
};
};
bookmarks = {
force = true;
settings = [
{
name = "NixFox";
url = "https://www.nixfox.ca";
}
{
name = "Luna";
url = "https://www.lunamoonlight.xyz";
}
{
name = "Freecorn";
url = "https://freecorn1854.win";
}
{
name = "Bloxelcom";
url = "https://www.bloxelcom.net";
}
{
name = "YouTube";
url = "https://www.kernel.org";
}
{
name = "NixOS Wiki";
url = "https://nixos.wiki";
}
{
name = "Kernel";
url = "https://www.kernel.org";
}
];
};
extensions = {
force = true;
packages = with pkgs.nur.repos.rycee.firefox-addons; [
bitwarden bitwarden
darkreader darkreader
return-youtube-dislikes return-youtube-dislikes
@ -66,13 +43,18 @@
ublock-origin ublock-origin
violentmonkey violentmonkey
]; ];
}; commonSearch = {
search = {
force = true; force = true;
default = "ecosia"; default = "Ecosia";
order = [
"Ecosia"
"NixPKGs"
"MyNixOS"
"YouTube"
"Spotify"
];
engines = { engines = {
"ecosia" = { "Ecosia" = {
urls = [{ urls = [{
template = "https://www.ecosia.org/search"; template = "https://www.ecosia.org/search";
params = [{ params = [{
@ -82,8 +64,7 @@
}]; }];
definedAliases = [ "@e" ]; definedAliases = [ "@e" ];
}; };
"NixPKGs" = {
"nixpkgs" = {
urls = [{ urls = [{
template = "https://search.nixos.org/packages"; template = "https://search.nixos.org/packages";
params = [ params = [
@ -99,8 +80,7 @@
}]; }];
definedAliases = [ "@p" ]; definedAliases = [ "@p" ];
}; };
"MyNixOS" = {
"mynixos" = {
urls = [{ urls = [{
template = "https://mynixos.com/search"; template = "https://mynixos.com/search";
params = [{ params = [{
@ -110,8 +90,7 @@
}]; }];
definedAliases = [ "@my" ]; definedAliases = [ "@my" ];
}; };
"YouTube" = {
"youtube" = {
urls = [{ urls = [{
template = "https://www.youtube.com/results"; template = "https://www.youtube.com/results";
params = [{ params = [{
@ -121,17 +100,13 @@
}]; }];
definedAliases = [ "@y" ]; definedAliases = [ "@y" ];
}; };
"Spotify" = {
"spotify" = {
urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }]; urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }];
definedAliases = [ "@s" ]; definedAliases = [ "@s" ];
}; };
}; };
}; };
commonSettings = {
settings = {
force = true;
# Generic # Generic
"browser.download.useDownloadDir" = true; "browser.download.useDownloadDir" = true;
"browser.shell.checkDefaultBrowser" = false; "browser.shell.checkDefaultBrowser" = false;
@ -146,9 +121,9 @@
"webgl.disabled" = false; "webgl.disabled" = false;
# Fonts # Fonts
"font.name.monospace.x-western" = config.vars.fonts.mono; "font.name.serif.x-western" = config.look.fonts.main;
"font.name.sans-serif.x-western" = config.vars.fonts.main; "font.name.sans-serif.x-western" = config.look.fonts.main;
"font.name.serif.x-western" = config.vars.fonts.main; "font.name.monospace.x-western" = config.look.fonts.mono;
# Theming and visibility # Theming and visibility
"browser.aboutConfig.showWarning" = false; "browser.aboutConfig.showWarning" = false;
@ -168,45 +143,47 @@
"browser.newtabpage.enabled" = false; "browser.newtabpage.enabled" = false;
# Safe browsing # Safe browsing
"browser.safebrowsing.blockedURIs.enabled" = false;
"browser.safebrowsing.downloads.enabled" = false; "browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.downloads.remote.enabled" = false; "browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.malware.enabled" = false; "browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false; "browser.safebrowsing.phishing.enabled" = false;
"browser.safebrowsing.provider.google.gethashURL" = false; "browser.safebrowsing.blockedURIs.enabled" = false;
"browser.safebrowsing.provider.google.updateURL" = false;
"browser.safebrowsing.provider.google4.gethashURL" = false; "browser.safebrowsing.provider.google4.gethashURL" = false;
"browser.safebrowsing.provider.google4.updateURL" = false; "browser.safebrowsing.provider.google4.updateURL" = false;
"browser.safebrowsing.provider.google.gethashURL" = false;
"browser.safebrowsing.provider.google.updateURL" = false;
# Extensions # Extensions
"extensions.pocket.enabled" = false;
"extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false; "extensions.formautofill.creditCards.enabled" = false;
"extensions.getAddons.showPane" = false; "extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.discover.enabled" = false; "extensions.htmlaboutaddons.discover.enabled" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false; "extensions.htmlaboutaddons.recommendations.enabled" = false;
"extensions.pocket.enabled" = false;
# Force extensions to work # Force extensions to work
"extensions.autoDisableScopes" = 0; "extensions.autoDisableScopes" = 0;
"extensions.enabledScopes" = 15; "extensions.enabledScopes" = 15;
# Privacy # Privacy
"privacy.clearOnShutdown.cookies" = false; "privacy.resistFingerprinting" = true;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false; "privacy.firstparty.isolate" = true;
"privacy.fingerprintingProtection" = true; "privacy.fingerprintingProtection" = true;
"privacy.globalprivacycontrol.enabled" = true; "privacy.globalprivacycontrol.enabled" = true;
"privacy.globalprivacycontrol.functionality.enabled" = true; "privacy.globalprivacycontrol.functionality.enabled" = true;
"privacy.resistFingerprinting" = true; "privacy.clearOnShutdown.cookies" = false;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
# Tracking URL blocking # Tracking URL blocking
"urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com";
"urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"; "urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com";
"urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com";
# Network tracking # Network tracking
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
"network.cookie.cookieBehavior" = 1; "network.cookie.cookieBehavior" = 1;
"network.cookie.sameSite.noneRequiresSecure" = true;
"network.http.referer.XOriginPolicy" = 2; "network.http.referer.XOriginPolicy" = 2;
"network.http.referer.XOriginTrimmingPolicy" = 2; "network.http.referer.XOriginTrimmingPolicy" = 2;
"network.http.referer.trimmingPolicy" = 2; "network.http.referer.trimmingPolicy" = 2;
@ -232,28 +209,40 @@
"services.sync.engine.addresses.available" = false; "services.sync.engine.addresses.available" = false;
"svg.context-properties.content.enabled" = true; "svg.context-properties.content.enabled" = true;
}; };
in {
Main = {
id = 0;
isDefault = true;
extensions = commonExtensions;
search = commonSearch;
settings = commonSettings;
userChrome = '' userChrome = ''
:root { ${themeMain}
--tab-active-bg-color: #${config.vars.colors.prime}; ${themeFont}
--tab-hover-bg-color: #${config.vars.colors.accent};
--tab-inactive-bg-color: #${config.vars.colors.dark};
--tab-active-fg-fallback-color: #FFFFFF;
--tab-inactive-fg-fallback-color: #${config.vars.colors.text};
--urlbar-focused-bg-color: #${config.vars.colors.dark};
--urlbar-not-focused-bg-color: #${config.vars.colors.dark};
--toolbar-bgcolor: #${config.vars.colors.dark} !important;
--tab-font: '${config.vars.fonts.main}';
--urlbar-font: '${config.vars.fonts.main}';
${builtins.readFile ./quteFox.css} ${builtins.readFile ./quteFox.css}
''; '';
}; };
Alt = {
id = 1;
extensions = commonExtensions;
search = commonSearch;
settings = commonSettings;
userChrome = ''
${themeAlt}
${themeFont}
${builtins.readFile ./quteFox.css}
'';
};
};
}; };
# Symlinks to Librewolf # Symlinks to Librewolf
home = { home = {
file.".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; file = {
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.mozilla/firefox/default" ]; ".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox";
".mozilla/librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox";
};
persistence."/persist${config.home.homeDirectory}".directories = [ ".mozilla" ];
}; };
}; };
} }

View file

@ -12,8 +12,6 @@
]; ];
}; };
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/obs-studio" ];
with lib; with config.home; with config.xdg;
[ "data/${removePrefix "${homeDirectory}/" configHome}/obs-studio" ];
}; };
} }

View file

@ -3,43 +3,62 @@
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
programs.thunderbird = { programs.thunderbird = {
enable = config.home.desktop.enable; enable = config.home.desktop.enable;
profiles.default = { profiles = {
Main = {
isDefault = true; isDefault = true;
userContent = ''
*{scrollbar-width:none !important}
'';
settings = { settings = {
"general.autoScroll" = true; "general.autoScroll" = true;
"browser.download.promptForDownload" = true;
"security.mixed_content.block_active_content" = true; "security.mixed_content.block_active_content" = true;
"security.mixed_content.block_display_content" = true; "security.mixed_content.block_display_content" = true;
"extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org";
"extensions.allow-non-mpc-extensions" = false;
"extensions.allowRemoteAddons" = false;
"extensions.blocklist.enabled" = true;
"extensions.checkCompatibility" = false;
"extensions.enabled" = false; "extensions.enabled" = false;
"extensions.autoDisableScopes" = 0;
"extensions.allow-non-mpc-extensions" = false;
"extensions.installDistroAddons" = false;
"extensions.getAddons.cache.enabled" = false; "extensions.getAddons.cache.enabled" = false;
"extensions.ui.enabled" = false; "extensions.blocklist.enabled" = true;
"extensions.webextensions.userSelection" = false; "extensions.webextensions.userSelection" = false;
"extensions.checkCompatibility" = false;
"extensions.allowRemoteAddons" = false;
"extensions.ui.enabled" = false;
"extensions.ui.useSystemTheme" = true;
"extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org";
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.cookies" = true; "privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.formdata" = true; "privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.siteSettings" = true; "privacy.clearOnShutdown.siteSettings" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.firstparty.isolate" = true;
"privacy.donottrackheader.enabled" = true; "privacy.donottrackheader.enabled" = true;
"privacy.resistFingerprinting" = true; "privacy.resistFingerprinting" = true;
"privacy.trackingprotection.enabled" = true;
"browser.history.enabled" = false;
"browser.sessionstore.privacy_level" = 2;
"browser.tabs.warnOnClose" = false;
"browser.shell.checkDefaultBrowser" = false;
"browser.urlbar.suggest.openpage" = false;
"browser.urlbar.suggest.bookmark" = false;
"browser.urlbar.suggest.history" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.suggest.topsites" = false;
"browser.download.promptForDownload" = true;
"network.cookie.cookieBehavior" = 1; "network.cookie.cookieBehavior" = 1;
"network.cookie.lifetimePolicy" = 2;
"network.dns.dnsOverHttps.enabled" = true; "network.dns.dnsOverHttps.enabled" = true;
"network.http.pipelining" = false;
"network.http.speculative-parallel-limit" = 0; "network.http.speculative-parallel-limit" = 0;
"network.http.pipelining" = false;
"network.predictor.enabled" = false; "network.predictor.enabled" = false;
"network.cookie.lifetimePolicy" = 2;
};
}; };
}; };
}; };
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.thunderbird/default" ]; home.persistence."/persist${config.home.homeDirectory}".directories = [ ".thunderbird" ];
}; };
} }

View file

@ -1,14 +1,13 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, pkgsUnstable, ... }:
{ {
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
home.packages = with pkgs; [ home.packages = (with pkgs; [
ffmpeg ffmpeg
ffmpegthumbnailer ffmpegthumbnailer
playerctl playerctl
puddletag puddletag
pulsemixer pulsemixer
spotdl ]) ++ (with pkgsUnstable; [ spotdl ]);
];
home.shellAliases.spotopus = "spotdl --m3u --format opus"; home.shellAliases.spotopus = "spotdl --m3u --format opus";
}; };

View file

@ -1,11 +1,14 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, pkgsUnstable, ... }:
{ {
home.packages = with pkgs; lib.mkIf config.home.gaming.enable [ config = lib.mkIf config.home.gaming.enable {
azahar home.packages = (with pkgs; [
cemu cemu
dolphin-emu-beta dolphin-emu-beta
duckstation duckstation
pcsx2 pcsx2
]) ++ (with pkgsUnstable; [
azahar
ryubing ryubing
]; ]);
};
} }

View file

@ -8,23 +8,12 @@
steam steam
steam-run-free steam-run-free
]; ];
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = persistence."/persist${config.home.homeDirectory}".directories = [
with lib; with config.home; with config.xdg; { ".config/heroic"
directories = [ ".local/share/PrismLauncher"
"games/${removePrefix "${homeDirectory}/" "Games"}" ".local/share/Steam"
"games/${removePrefix "${homeDirectory}/" configHome}/heroic"
"games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher"
{
directory = "games/.steam";
method = "symlink";
}
{
directory = "games/${removePrefix "${homeDirectory}/" dataHome}/Steam";
method = "symlink";
}
]; ];
}; };
};
nixpkgs.allowUnfreePackages = [ nixpkgs.allowUnfreePackages = [
"steam" "steam"

View file

@ -6,10 +6,9 @@
qbittorrent qbittorrent
vesktop vesktop
]; ];
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = persistence."/persist${config.home.homeDirectory}".directories = [
with lib; with config.home; with config.xdg; [ ".config/qBittorrent"
"data/${removePrefix "${homeDirectory}/" configHome}/qBittorrent" ".config/vesktop"
"data/${removePrefix "${homeDirectory}/" configHome}/vesktop"
]; ];
}; };
} }

View file

@ -2,7 +2,6 @@
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
bc bc
colmena
ncdu ncdu
p7zip p7zip
vimv vimv

View file

@ -8,11 +8,10 @@
blender_4_4 blender_4_4
krita krita
]; ];
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = persistence."/persist${config.home.homeDirectory}".directories = [
with lib; with config.home; with config.xdg; [ ".config/audacity"
"data/${removePrefix "${homeDirectory}/" configHome}/audacity" ".config/blender"
"data/${removePrefix "${homeDirectory}/" configHome}/blender" ".local/share/krita"
"data/${removePrefix "${homeDirectory}/" dataHome}/krita"
]; ];
}; };
} }

View file

@ -6,16 +6,13 @@
globalprotect-openconnect globalprotect-openconnect
gpauth gpauth
remmina remmina
teams-for-linux
]; ];
persistence."/persist${config.home.homeDirectory}".directories = [
shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; ".cache/gpclient"
".config/com.yuezk.qt"
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = ".config/remmina"
with lib; with config.home; with config.xdg; [ ".config/teams-for-linux"
"school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient"
"school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt"
"school/${removePrefix "${homeDirectory}/" configHome}/remmina"
"school/.vmware"
]; ];
}; };
} }

View file

@ -7,15 +7,14 @@
./eza ./eza
./fastfetch ./fastfetch
./git ./git
./gpg
./lazygit ./lazygit
./ncmpcpp ./ncmpcpp
./neovim ./neovim
./nh
./nix-index ./nix-index
./ranger ./ranger
./ssh ./tmux
./yt-dlp ./yt-dlp
./zellij
./zoxide ./zoxide
./zsh ./zsh
]; ];

View file

@ -1,11 +1,7 @@
{ config, lib, ... }: { ... }:
{ {
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "data/${removePrefix "${homeDirectory}/" dataHome}/direnv" ];
} }

View file

@ -0,0 +1,97 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "xenia",
"color": {
"1": "1;97",
"2": "red",
"3": "yellow"
}
},
"display": {
"separator": " \u001b[33m ",
"color": "red"
},
"modules": [
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "host",
"key": "󰌢 "
},
{
"type": "cpu",
"key": " "
},
{
"type": "gpu",
"key": "󰢮 "
},
{
"type": "disk",
"folders": "/",
"key": " "
},
{
"type": "memory",
"format": "{/1}{-}{/}{/2}{-}{/}{} / {}",
"key": " "
},
{
"type": "display",
"compactType": "original",
"key": "󰍹 "
},
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "os",
"format": "{3} {12}",
"key": "󰍛 "
},
{
"type": "kernel",
"format": "{1} {2}",
"key": " "
},
{
"type": "wm",
"key": " "
},
{
"type": "shell",
"key": " "
},
{
"type": "terminal",
"key": " "
},
{
"type": "packages",
"key": "󰆧 "
},
{
"type": "uptime",
"key": "󰅐 "
},
{
"type": "command",
"text": "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'",
"key": "󰶡 "
},
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "custom",
"format": "\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"
}
]
}

View file

@ -1,108 +1,8 @@
{ ... }: { pkgs, ... }:
{ {
imports = [ ./smallfetch ]; programs.fastfetch.enable = true;
programs.fastfetch = { home.packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ];
enable = true;
settings = with builtins; {
logo = {
source = "xenia";
color = {
"1" = "1;97";
"2" = "red";
"3" = "yellow";
};
};
display = { xdg.configFile."fastfetch".source = ./configs;
separator = fromJSON ''" \u001b[33m "'';
color = "red";
};
modules = [
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "host";
key = "󰌢 ";
}
{
type = "cpu";
key = " ";
}
{
type = "gpu";
key = "󰢮 ";
}
{
type = "disk";
folders = "/";
key = " ";
}
{
type = "memory";
format = "{/1}{-}{/}{/2}{-}{/}{} / {}";
key = " ";
}
{
type = "display";
compactType = "original";
key = "󰍹 ";
}
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "os";
format = "{3} {12}";
key = "󰍛 ";
}
{
type = "kernel";
format = "{1} {2}";
key = " ";
}
{
type = "wm";
key = " ";
}
{
type = "shell";
key = " ";
}
{
type = "terminal";
key = " ";
}
{
type = "packages";
key = "󰆧 ";
}
{
type = "uptime";
key = "󰅐 ";
}
{
type = "command";
text = "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'";
key = "󰶡 ";
}
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "custom";
format = fromJSON ''"\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"'';
}
];
};
};
home.shellAliases.ff = "clear && fastfetch";
} }

View file

@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; with lib; with config.home; with config.xdg; [
(writeScriptBin "smallfetch" ''
#!/bin/sh
fastfetch --config $HOME/${removePrefix "${homeDirectory}/" configHome}/fastfetch/small.jsonc
'')
];
xdg.configFile."fastfetch/small.jsonc".source = ./small.jsonc;
}

View file

@ -1,11 +0,0 @@
{ config, ... }:
{
services.gpg-agent = {
enable = true;
enableSshSupport = true;
};
programs.gpg.enable = true;
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "secure/.gnupg" ];
}

View file

@ -1,7 +1,5 @@
{ config, lib, ... }: { config, ... }:
{ {
programs.lazygit.enable = true; programs.lazygit.enable = true;
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/state/lazygit" ];
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" stateHome}/lazygit" ];
} }

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }: { config, pkgs, ... }:
{ {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
@ -92,8 +92,8 @@
let g:airline_theme='onedark' let g:airline_theme='onedark'
let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#enabled = 1
hi Normal guibg=none hi Normal guibg=none
hi Visual guibg=#${config.vars.colors.mid} hi Visual guibg=#${config.look.colors.mid}
hi Pmenu guibg=#${config.vars.colors.mid} hi Pmenu guibg=#${config.look.colors.mid}
hi EndOfBuffer guibg=none hi EndOfBuffer guibg=none
hi LineNr guibg=none hi LineNr guibg=none
lua require'colorizer'.setup() lua require'colorizer'.setup()
@ -103,7 +103,7 @@
set mouse=a set mouse=a
set undofile set undofile
set undodir=${config.xdg.dataHome}/nvim/undo set undodir=$HOME/.local/share/nvim/undo
set undolevels=100 set undolevels=100
set undoreload=10000 set undoreload=10000
@ -115,8 +115,6 @@
home = { home = {
sessionVariables.MANPAGER = "nvim +Man!"; sessionVariables.MANPAGER = "nvim +Man!";
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/nvim/undo" ];
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" dataHome}/nvim/undo" ];
}; };
} }

View file

@ -0,0 +1,7 @@
{ config, ... }:
{
programs.nh = {
enable = true;
flake = "${config.home.homeDirectory}/Projects/nixos-config";
};
}

View file

@ -1,8 +1,6 @@
{ config, lib, ... }: { config, ... }:
{ {
programs.nix-index.enable = true; programs.nix-index.enable = true;
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = home.persistence."/persist${config.home.homeDirectory}".directories = [ ".cache/nix-index" ];
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" cacheHome}/nix-index" ];
} }

Some files were not shown because too many files have changed in this diff Show more