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

119
flake.nix
View file

@ -1,12 +1,9 @@
{
inputs = {
# General inputs
stable.url = "nixpkgs/nixos-25.05";
stable.url = "nixpkgs/nixos-24.11";
unstable.url = "nixpkgs/nixos-unstable";
# Flake helpers
flake-utils.url = "github:numtide/flake-utils";
# System inputs
disko = {
url = "github:nix-community/disko";
@ -16,7 +13,7 @@
impermanence.url = "github:nix-community/impermanence";
lanzaboote = {
url = "github:nix-community/lanzaboote";
url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "stable";
};
@ -28,98 +25,72 @@
# Service inputs
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";
};
minecraft = {
url = "github:Infinidoge/nix-minecraft";
inputs.nixpkgs.follows = "stable";
};
minecraft.url = "github:Infinidoge/nix-minecraft";
# Home inputs
hm = {
url = "github:nix-community/home-manager/release-25.05";
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "stable";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "unstable";
};
# Specific apps
blender = {
url = "github:edolstra/nix-warez?dir=blender";
inputs.nixpkgs.follows = "unstable";
};
blender.url = "github:edolstra/nix-warez?dir=blender";
};
outputs = inputs: with inputs;
outputs = {
stable,
unstable,
{
colmena = {
meta = {
# Info
description = "The Bun Systems";
name = "bunhive";
disko,
impermanence,
lanzaboote,
# NixPKGs
nixpkgs = import stable {
overlays = [
blender.overlays.default
minecraft.overlay
];
system = "x86_64-linux";
};
mailserver,
minecraft,
specialArgs = inputs;
jovian,
# Use a different Nixpkgs import on some systems
nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; };
};
hm,
nur,
blender,
...
}@inputs:
# Import the default config to all hosts
defaults.imports = [
./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 ];
let
mkNix = modules: channel: channel.lib.nixosSystem {
inherit modules;
specialArgs = inputs;
};
}
// flake-utils.lib.eachDefaultSystemPassThrough (system: let
mkHome = extraModules: hm.lib.homeManagerConfiguration {
modules = [
./modules/home
{ targets.genericLinux.enable = true; }
] ++ extraModules;
mkHome = modules: channel: arch: hm.lib.homeManagerConfiguration {
inherit modules;
pkgs = builtins.getAttr arch channel.legacyPackages;
extraSpecialArgs = inputs;
pkgs = builtins.getAttr system stable.legacyPackages;
};
in {
homeConfigurations = {
default = mkHome [ ];
desktop = mkHome [{ home.guifull.enable = true; }];
# nh os switch /path -H host
nixosConfigurations = {
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 = {
kernelPackages = pkgs.linuxPackages_latest;
lanzaboote.enable = true;
plymouth.enable = true;
};

View file

@ -3,14 +3,16 @@
imports = [
./boot
./disko
./filesystems
./hardware
./user
../../modules/system
];
networking.hostName = "intuos";
system = {
nixos.tags = [ "pc" ];
desktop.enable = true;
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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,12 +28,12 @@
size = "100%";
content = {
type = "luks";
name = "${name}-disk";
name = "${config.networking.hostName}-disk";
settings.allowDiscards = true;
passwordFile = "/tmp/secret.key";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -42,7 +43,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
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") ];
@ -16,7 +16,6 @@
kernelModules = [ "kvm-intel" ];
};
hardware.cpu.intel.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

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;
production.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

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

View file

@ -8,14 +8,14 @@
./jovian
./services
./user
../../modules/system
];
networking.hostName = "jupiter";
system = {
nixos.tags = [ "pc" ];
desktop.enable = true;
steamdeck.enable = true;
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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,7 +28,7 @@
size = "100%";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -36,7 +37,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
root = {

View file

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

View file

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

View file

@ -1,12 +1,16 @@
{ 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 = {
steam = {
enable = true;
autoStart = true;
user = config.vars.mainUser;
desktopSession = "gnome";
user = config.sysusers.main;
};
decky-loader = {
enable = true;
@ -18,46 +22,80 @@
};
};
# Evil kernel
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 = {
networkmanager.enable = true;
wireless.enable = lib.mkForce false;
};
# Disable conflicting services
services = {
keyd.enable = lib.mkForce false;
tlp.enable = lib.mkForce false;
environment = {
persistence."/persist" = {
directories = [
"/etc/NetworkManager/system-connections"
"/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
];
};
# Disable network filesystems
fileSystems = {
"midas".enable = false;
"kitty".enable = false;
"detritus".enable = false;
"prophet".enable = false;
};
environment.persistence."/persist".directories = [
"/etc/NetworkManager/system-connections"
"/var/lib/decky-loader"
];
nixpkgs.allowUnfreePackages = [
"steam"
"steam-jupiter-unwrapped"
"steamdeck-firmware"
"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.mkIf (!config.jovian.steam.enable) {
config = lib.mkIf (!config.system.steamdeck.enable) {
networking.useNetworkd = lib.mkForce false;
services.globalprotect.enable = true;
@ -9,5 +9,12 @@
libvirtd.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 = {
guifull.enable = true;
home-manager.users."${config.sysusers.main}".home = {
desktop.enable = true;
gaming.enable = true;
production.enable = true;
school.enable = true;
enableNixpkgsReleaseCheck = false;
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

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

View file

@ -6,16 +6,20 @@
./filesystems
./hardware
./network
./services
./user
../../modules/system
];
networking = {
hostName = "kitty";
hostId = "8745e22e";
};
system = {
nixos.tags = [
"extra-users"
"server"
];
server.enable = true;
extraUsers.enable = true;
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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B7783DBB232";
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,7 +28,7 @@
size = "100%";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -36,7 +37,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
root = {

View file

@ -1,4 +1,4 @@
{ ... }:
{ config, ... }:
{
fileSystems = {
"/persist/storage" = {
@ -9,5 +9,23 @@
"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 = {
availableKernelModules = [
@ -9,7 +9,6 @@
kernelModules = [ "dm-snapshot" ];
};
hardware.cpu.intel.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

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

View file

@ -2,13 +2,21 @@
{
networking = {
interfaces."eno1".ipv4.addresses = [{
address = "11.2.0.1";
address = "10.2.0.2";
prefixLength = 8;
}];
defaultGateway = {
address = "11.1.0.1";
address = "10.1.0.1";
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
./network
./services
./user
../../modules/system
];
system = {
nixos.tags = [ "server" ];
stateVersion = "24.11";
networking = {
hostName = "midas";
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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/disk/by-id/nvme-eui.00080d03001365cc";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,12 +28,12 @@
size = "100%";
content = {
type = "luks";
name = "${name}-disk";
name = "${config.networking.hostName}-disk";
settings.allowDiscards = true;
passwordFile = "/tmp/secret.key";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -42,7 +43,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
root = {

View file

@ -10,5 +10,14 @@
"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 = {
availableKernelModules = [
@ -10,7 +10,6 @@
kernelModules = [ "dm-snapshot" ];
};
hardware.cpu.intel.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

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

View file

@ -2,13 +2,45 @@
{
networking = {
interfaces."enp0s31f6".ipv4.addresses = [{
address = "11.2.0.1";
address = "10.2.0.1";
prefixLength = 8;
}];
defaultGateway = {
address = "11.1.0.1";
address = "10.1.0.1";
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 = {
cloudflare-dyndns.enable = true;
forgejo.enable = true;
hedgedoc.enable = true;
icecast.enable = true;
jellyfin.enable = true;
lemmy.enable = true;
mastodon.enable = true;
matrix-synapse.enable = true;
mysql.enable = true;
nextcloud.enable = true;
nfs.server.enable = true;
nginx.enable = true;
owncast.enable = true;
transmission.enable = true;
vaultwarden.enable = true;
webserver.enable = true;
minecraft-servers = {
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, ... }:
{
boot = {
binfmt.emulatedSystems = [ "x86_64-linux" ];
kernelPackages = pkgs.linuxPackages_hardened;
loader.limine.enable = true;
loader.systemd-boot.enable = true;
};
}

View file

@ -6,18 +6,18 @@
./filesystems
./hardware
./services
./user
../../modules/system
(modulesPath + "/profiles/headless.nix")
];
networking = {
hostName = "prophet";
hostId = "97a21a38";
};
system = {
nixos.tags = [ "server" ];
server.enable = true;
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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/disk/by-id/scsi-3609c958403f14cd29ff94a5a2e405cc2";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,7 +28,7 @@
size = "100%";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -36,7 +37,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
root = {

View file

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

View file

@ -1,4 +1,4 @@
{ ... }:
{ lib, ... }:
{
boot.initrd = {
availableKernelModules = [
@ -8,5 +8,5 @@
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 = {
cloudflare-dyndns.enable = true;
mailserver.enable = true;
mysql.enable = true;
nfs.server.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 = {
disk = {
"${name}" = {
"${config.networking.hostName}" = {
type = "disk";
device = "/dev/sda";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
@ -27,12 +28,12 @@
size = "100%";
content = {
type = "luks";
name = "${name}-disk";
name = "${config.networking.hostName}-disk";
settings.allowDiscards = true;
passwordFile = "/tmp/secret.key";
content = {
type = "lvm_pv";
vg = "${name}";
vg = "${config.networking.hostName}";
};
};
};
@ -42,7 +43,7 @@
};
lvm_vg = {
"${name}" = {
"${config.networking.hostName}" = {
type = "lvm_vg";
lvs = {
root = {
@ -53,35 +54,25 @@
subvolumes = {
"/root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"ssd"
];
mountOptions = [ "compress=zstd" ];
};
"/prev" = {
mountpoint = "/prev";
mountOptions = [
"compress=zstd"
"noexec"
"ssd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"ssd"
];
mountOptions = [ "compress=zstd" ];
};
# Impermanence
"/persist" = {
mountpoint = "/persist";
mountOptions = [
"compress=zstd"
"ssd"
];
};
# Impermanence
"/persist" = {
mountpoint = "/persist";
mountOptions = [ "compress=zstd" ];
};
"/persist/.snapshots" = { };
"/persist/home" = { };
"/persist/home/.snapshots" = { };
@ -89,7 +80,7 @@
};
};
swap = {
size = "2G";
size = "8G";
content = {
type = "swap";
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
commonKernelParams = [
# VM/GPU passthrough
"amd_iommu=on"
"iommu=pt"
"nested=1"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
];
in {
boot = {
kernelPackages = pkgs.linuxPackages_6_14;
# Latest kernel and IOMMU isolation
kernelPackages = pkgsUnstable.linuxPackages_latest;
kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ];
# Load into GPU before video driver
@ -21,5 +28,8 @@ in {
};
# 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
./filesystems
./hardware
./network
./user
../../modules/system
];
networking.hostName = "tower";
system = {
nixos.tags = [ "pc" ];
desktop.enable = true;
nvidia.enable = true;
stateVersion = "24.05";
};
deployment.targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b";
virtualisation.libvirtd.enable = true;
}

View file

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

View file

@ -1,34 +1,26 @@
{ ... }:
{ config, ... }:
{
fileSystems = {
# Games and such
"/mnt/Linux1" = {
device = "/dev/disk/by-label/Linux1";
fsType = "btrfs";
device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4";
fsType = "ext4";
options = [
"nofail"
"nosuid"
];
};
"/mnt/Linux2" = {
device = "/dev/disk/by-label/Linux2";
fsType = "btrfs";
device = "/dev/disk/by-uuid/f08e4f38-162c-402f-ba2a-5925151b78bf";
fsType = "ext4";
options = [
"nofail"
"nosuid"
];
};
"/mnt/Linux3" = {
device = "/dev/disk/by-label/Linux3";
fsType = "btrfs";
options = [
"nofail"
"nosuid"
];
};
"/mnt/Linux4" = {
device = "/dev/disk/by-label/Linux4";
fsType = "btrfs";
device = "/dev/disk/by-uuid/e7bc75bd-c371-4b28-b212-7be9b1fad339";
fsType = "ext4";
options = [
"nofail"
"nosuid"
@ -45,5 +37,34 @@
"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") ];
@ -16,9 +16,6 @@
kernelModules = [ "kvm-amd" ];
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.cpu.amd.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

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, ... }:
{
imports = [
./profiles
./programs
./services
./settings
./user
./variables
./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 = {
main = {
term = "xterm-256color";
font = "${config.vars.fonts.mono}:size=14.7";
font = "${config.look.fonts.mono}:size=14.7";
};
colors = {
alpha = "0.85";
background = config.vars.colors.dark;
background = config.look.colors.dark;
regular0 = "3f3f3f";
regular1 = "cc0000";
regular2 = "4e9a06";
@ -29,10 +29,7 @@
bright7 = "ffffff";
};
cursor.style = "beam";
key-bindings = {
search-start = "Control+f";
show-urls-launch = "Control+s";
};
key-bindings.search-start = "Control+f";
};
};
}

View file

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

View file

@ -3,43 +3,62 @@
config = lib.mkIf config.home.desktop.enable {
programs.thunderbird = {
enable = config.home.desktop.enable;
profiles.default = {
isDefault = true;
settings = {
"general.autoScroll" = true;
"browser.download.promptForDownload" = true;
profiles = {
Main = {
isDefault = true;
userContent = ''
*{scrollbar-width:none !important}
'';
settings = {
"general.autoScroll" = true;
"security.mixed_content.block_active_content" = true;
"security.mixed_content.block_display_content" = true;
"security.mixed_content.block_active_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.getAddons.cache.enabled" = false;
"extensions.ui.enabled" = false;
"extensions.webextensions.userSelection" = false;
"extensions.enabled" = false;
"extensions.autoDisableScopes" = 0;
"extensions.allow-non-mpc-extensions" = false;
"extensions.installDistroAddons" = false;
"extensions.getAddons.cache.enabled" = false;
"extensions.blocklist.enabled" = true;
"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.formdata" = true;
"privacy.clearOnShutdown.siteSettings" = true;
"privacy.donottrackheader.enabled" = true;
"privacy.resistFingerprinting" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.siteSettings" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.firstparty.isolate" = true;
"privacy.donottrackheader.enabled" = true;
"privacy.resistFingerprinting" = true;
"network.cookie.cookieBehavior" = 1;
"network.cookie.lifetimePolicy" = 2;
"network.dns.dnsOverHttps.enabled" = true;
"network.http.pipelining" = false;
"network.http.speculative-parallel-limit" = 0;
"network.predictor.enabled" = false;
"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.dns.dnsOverHttps.enabled" = true;
"network.http.speculative-parallel-limit" = 0;
"network.http.pipelining" = 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 {
home.packages = with pkgs; [
home.packages = (with pkgs; [
ffmpeg
ffmpegthumbnailer
playerctl
puddletag
pulsemixer
spotdl
];
]) ++ (with pkgsUnstable; [ spotdl ]);
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 [
azahar
cemu
dolphin-emu-beta
duckstation
pcsx2
ryubing
];
config = lib.mkIf config.home.gaming.enable {
home.packages = (with pkgs; [
cemu
dolphin-emu-beta
duckstation
pcsx2
]) ++ (with pkgsUnstable; [
azahar
ryubing
]);
};
}

View file

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

View file

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

View file

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

View file

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

View file

@ -6,16 +6,13 @@
globalprotect-openconnect
gpauth
remmina
teams-for-linux
];
persistence."/persist${config.home.homeDirectory}".directories = [
".cache/gpclient"
".config/com.yuezk.qt"
".config/remmina"
".config/teams-for-linux"
];
shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca";
persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg; [
"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
./fastfetch
./git
./gpg
./lazygit
./ncmpcpp
./neovim
./nh
./nix-index
./ranger
./ssh
./tmux
./yt-dlp
./zellij
./zoxide
./zsh
];

View file

@ -1,11 +1,7 @@
{ config, lib, ... }:
{ ... }:
{
programs.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 = {
enable = true;
settings = with builtins; {
logo = {
source = "xenia";
color = {
"1" = "1;97";
"2" = "red";
"3" = "yellow";
};
};
home.packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ];
display = {
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";
xdg.configFile."fastfetch".source = ./configs;
}

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;
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" stateHome}/lazygit" ];
home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/state/lazygit" ];
}

View file

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

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