diff --git a/README.md b/README.md
index 6f6e4db2..87fdf860 100644
--- a/README.md
+++ b/README.md
@@ -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.
diff --git a/flake.lock b/flake.lock
index 1a7b3ce5..67ff2a5c 100644
--- a/flake.lock
+++ b/flake.lock
@@ -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": {
diff --git a/flake.nix b/flake.nix
index 03a9d53f..48728d61 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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";
+ };
+ };
}
diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix
deleted file mode 100644
index a0b1cae3..00000000
--- a/hosts/detritus/boot/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ pkgs, ... }:
-{
- boot = {
- kernelPackages = pkgs.linuxPackages_hardened;
- loader.limine.enable = true;
- };
-}
diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix
deleted file mode 100644
index 010d2eca..00000000
--- a/hosts/detritus/default.nix
+++ /dev/null
@@ -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;
-}
diff --git a/hosts/detritus/disko/default.nix b/hosts/detritus/disko/default.nix
deleted file mode 100644
index 09ce1b53..00000000
--- a/hosts/detritus/disko/default.nix
+++ /dev/null
@@ -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;
-}
diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix
deleted file mode 100644
index 63042a0a..00000000
--- a/hosts/detritus/filesystems/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ ... }:
-{
- fileSystems = {
- "/persist/storage" = {
- device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6";
- fsType = "btrfs";
- options = [
- "nofail"
- "nosuid"
- "subvol=storage"
- ];
- };
- };
-}
diff --git a/hosts/detritus/hardware/default.nix b/hosts/detritus/hardware/default.nix
deleted file mode 100644
index 73a80f35..00000000
--- a/hosts/detritus/hardware/default.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/flight/boot/default.nix b/hosts/flight/boot/default.nix
deleted file mode 100644
index 2d553d61..00000000
--- a/hosts/flight/boot/default.nix
+++ /dev/null
@@ -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;
- };
-}
diff --git a/hosts/flight/default.nix b/hosts/flight/default.nix
deleted file mode 100644
index fe3b545a..00000000
--- a/hosts/flight/default.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/flight/filesystems/default.nix b/hosts/flight/filesystems/default.nix
deleted file mode 100644
index 8a568d0f..00000000
--- a/hosts/flight/filesystems/default.nix
+++ /dev/null
@@ -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"
- ];
- };
- };
-}
diff --git a/hosts/flight/hardware/default.nix b/hosts/flight/hardware/default.nix
deleted file mode 100644
index fa1b984c..00000000
--- a/hosts/flight/hardware/default.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/flight/root/default.nix b/hosts/flight/root/default.nix
deleted file mode 100644
index 7bccd4b8..00000000
--- a/hosts/flight/root/default.nix
+++ /dev/null
@@ -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"; } ];
-}
diff --git a/hosts/flight/user/default.nix b/hosts/flight/user/default.nix
deleted file mode 100644
index e408de6a..00000000
--- a/hosts/flight/user/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ config, lib, ... }:
-{
- home-manager.users."${config.vars.mainUser}" = {
- home.guifull.enable = true;
- wayland.windowManager.sway.extraSessionCommands = lib.mkForce "";
- };
-}
diff --git a/hosts/hidden/boot/default.nix b/hosts/hidden/boot/default.nix
deleted file mode 100644
index 1919dae1..00000000
--- a/hosts/hidden/boot/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ pkgs, ... }:
-{
- boot = {
- kernelPackages = pkgs.linuxPackages_6_14;
- loader.limine.enable = true;
- plymouth.enable = true;
- };
-}
diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix
deleted file mode 100644
index c0da8fb6..00000000
--- a/hosts/hidden/default.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/hidden/hardware/default.nix b/hosts/hidden/hardware/default.nix
deleted file mode 100644
index 93d299a4..00000000
--- a/hosts/hidden/hardware/default.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/hidden/services/default.nix b/hosts/hidden/services/default.nix
deleted file mode 100644
index e1b677cd..00000000
--- a/hosts/hidden/services/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, lib, ... }:
-{
- networking.useNetworkd = lib.mkForce false;
-
- virtualisation = {
- libvirtd.enable = true;
- vmware.host.enable = true;
- };
-}
diff --git a/hosts/hidden/user/default.nix b/hosts/hidden/user/default.nix
deleted file mode 100644
index 60e0e93a..00000000
--- a/hosts/hidden/user/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ config, ... }:
-{
- home-manager.users."${config.vars.mainUser}".home = {
- desktop.enable = true;
- school.enable = true;
- };
-}
diff --git a/hosts/intuos/boot/default.nix b/hosts/intuos/boot/default.nix
index 84a34f0c..f6458c21 100644
--- a/hosts/intuos/boot/default.nix
+++ b/hosts/intuos/boot/default.nix
@@ -1,6 +1,7 @@
-{ ... }:
+{ pkgs, ... }:
{
boot = {
+ kernelPackages = pkgs.linuxPackages_latest;
lanzaboote.enable = true;
plymouth.enable = true;
};
diff --git a/hosts/intuos/default.nix b/hosts/intuos/default.nix
index 4e3a9f3b..ceea57fa 100644
--- a/hosts/intuos/default.nix
+++ b/hosts/intuos/default.nix
@@ -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";
}
diff --git a/hosts/intuos/disko/default.nix b/hosts/intuos/disko/default.nix
index e204a376..4d195170 100644
--- a/hosts/intuos/disko/default.nix
+++ b/hosts/intuos/disko/default.nix
@@ -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 = {
diff --git a/hosts/intuos/filesystems/default.nix b/hosts/intuos/filesystems/default.nix
new file mode 100644
index 00000000..e17b5eec
--- /dev/null
+++ b/hosts/intuos/filesystems/default.nix
@@ -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"
+ ];
+ };
+ };
+}
diff --git a/hosts/intuos/hardware/default.nix b/hosts/intuos/hardware/default.nix
index bf6c9f70..a6b9aa1b 100644
--- a/hosts/intuos/hardware/default.nix
+++ b/hosts/intuos/hardware/default.nix
@@ -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;
}
diff --git a/hosts/intuos/user/default.nix b/hosts/intuos/user/default.nix
index 256a66ed..b609338c 100644
--- a/hosts/intuos/user/default.nix
+++ b/hosts/intuos/user/default.nix
@@ -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;
};
}
diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix
index 17b17837..3cf63f7f 100644
--- a/hosts/jupiter/boot/default.nix
+++ b/hosts/jupiter/boot/default.nix
@@ -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;
};
}
diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix
index 7271d00e..fb5554d1 100644
--- a/hosts/jupiter/default.nix
+++ b/hosts/jupiter/default.nix
@@ -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;
}
diff --git a/hosts/jupiter/disko/default.nix b/hosts/jupiter/disko/default.nix
index abb7808a..900c8a59 100644
--- a/hosts/jupiter/disko/default.nix
+++ b/hosts/jupiter/disko/default.nix
@@ -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 = {
diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix
index 7f734c26..7c1feb2d 100644
--- a/hosts/jupiter/filesystems/default.nix
+++ b/hosts/jupiter/filesystems/default.nix
@@ -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"
+ ];
};
}
diff --git a/hosts/jupiter/hardware/default.nix b/hosts/jupiter/hardware/default.nix
index 811cc7c9..a3e7b2bf 100644
--- a/hosts/jupiter/hardware/default.nix
+++ b/hosts/jupiter/hardware/default.nix
@@ -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;
}
diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix
index b8d075e9..fa5ecf0c 100644
--- a/hosts/jupiter/jovian/default.nix
+++ b/hosts/jupiter/jovian/default.nix
@@ -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;
};
}
diff --git a/hosts/jupiter/jovian/desktop/default.nix b/hosts/jupiter/jovian/desktop/default.nix
deleted file mode 100644
index 8c9655dd..00000000
--- a/hosts/jupiter/jovian/desktop/default.nix
+++ /dev/null
@@ -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
- ];
- };
-}
diff --git a/hosts/jupiter/services/default.nix b/hosts/jupiter/services/default.nix
index 3ead25ff..f633f5d2 100644
--- a/hosts/jupiter/services/default.nix
+++ b/hosts/jupiter/services/default.nix
@@ -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"
+ ];
};
}
diff --git a/hosts/jupiter/user/default.nix b/hosts/jupiter/user/default.nix
index 43b57345..e4b30d0b 100644
--- a/hosts/jupiter/user/default.nix
+++ b/hosts/jupiter/user/default.nix
@@ -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;
};
}
diff --git a/hosts/kitty/boot/default.nix b/hosts/kitty/boot/default.nix
index a0b1cae3..e21b5c06 100644
--- a/hosts/kitty/boot/default.nix
+++ b/hosts/kitty/boot/default.nix
@@ -2,6 +2,6 @@
{
boot = {
kernelPackages = pkgs.linuxPackages_hardened;
- loader.limine.enable = true;
+ loader.systemd-boot.enable = true;
};
}
diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix
index a2fb8126..64f97ede 100644
--- a/hosts/kitty/default.nix
+++ b/hosts/kitty/default.nix
@@ -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;
}
diff --git a/hosts/kitty/disko/default.nix b/hosts/kitty/disko/default.nix
index 5959c753..2191e808 100644
--- a/hosts/kitty/disko/default.nix
+++ b/hosts/kitty/disko/default.nix
@@ -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 = {
diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix
index 0e452e07..29880794 100644
--- a/hosts/kitty/filesystems/default.nix
+++ b/hosts/kitty/filesystems/default.nix
@@ -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"
+ ];
+ };
};
}
diff --git a/hosts/kitty/hardware/default.nix b/hosts/kitty/hardware/default.nix
index 64943f7a..3e917a7a 100644
--- a/hosts/kitty/hardware/default.nix
+++ b/hosts/kitty/hardware/default.nix
@@ -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;
}
diff --git a/hosts/kitty/id_ed25519.pub b/hosts/kitty/id_ed25519.pub
new file mode 100644
index 00000000..0b6823a8
--- /dev/null
+++ b/hosts/kitty/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOBa+Wz1FqFEnMeXflP0CPt2wnN819T+FdSCIwFLJjN
diff --git a/hosts/kitty/network/default.nix b/hosts/kitty/network/default.nix
index 4518518c..7775a2fe 100644
--- a/hosts/kitty/network/default.nix
+++ b/hosts/kitty/network/default.nix
@@ -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;
+ }];
};
}
diff --git a/hosts/kitty/services/default.nix b/hosts/kitty/services/default.nix
deleted file mode 100644
index a330605b..00000000
--- a/hosts/kitty/services/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ ... }:
-{
- services = {
- nfs.server.enable = true;
- nginx.enable = true;
- };
-
- virtualisation.incus.enable = true;
-}
diff --git a/hosts/kitty/user/default.nix b/hosts/kitty/user/default.nix
new file mode 100644
index 00000000..9366cadc
--- /dev/null
+++ b/hosts/kitty/user/default.nix
@@ -0,0 +1,6 @@
+{ config, lib, ... }:
+{
+ home-manager.users."${config.sysusers.main}".home = {
+ stateVersion = lib.mkForce config.system.stateVersion;
+ };
+}
diff --git a/hosts/midas/default.nix b/hosts/midas/default.nix
index 7ae69555..766fb372 100644
--- a/hosts/midas/default.nix
+++ b/hosts/midas/default.nix
@@ -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";
+ };
}
diff --git a/hosts/midas/disko/default.nix b/hosts/midas/disko/default.nix
index 7978befb..60e95465 100644
--- a/hosts/midas/disko/default.nix
+++ b/hosts/midas/disko/default.nix
@@ -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 = {
diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix
index 3048a803..0abb186a 100644
--- a/hosts/midas/filesystems/default.nix
+++ b/hosts/midas/filesystems/default.nix
@@ -10,5 +10,14 @@
"subvol=persist"
];
};
+ "/kitty" = {
+ device = "11.0.0.2:/storage/bun";
+ fsType = "nfs4";
+ options = [
+ "noauto"
+ "soft"
+ "x-systemd.automount"
+ ];
+ };
};
}
diff --git a/hosts/midas/hardware/default.nix b/hosts/midas/hardware/default.nix
index d3f129ad..19194610 100644
--- a/hosts/midas/hardware/default.nix
+++ b/hosts/midas/hardware/default.nix
@@ -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;
}
diff --git a/hosts/midas/id_ed25519.pub b/hosts/midas/id_ed25519.pub
new file mode 100644
index 00000000..082fe2e0
--- /dev/null
+++ b/hosts/midas/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFGHaxdTeC1xnTx2BY5LLR5LxhdSkmYoWuOeEuRIz0k
diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix
index 909a3623..17b47f4f 100644
--- a/hosts/midas/network/default.nix
+++ b/hosts/midas/network/default.nix
@@ -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;
}
diff --git a/hosts/midas/services/default.nix b/hosts/midas/services/default.nix
index cddcad85..683391b3 100644
--- a/hosts/midas/services/default.nix
+++ b/hosts/midas/services/default.nix
@@ -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;
diff --git a/hosts/midas/services/nginx/default.nix b/hosts/midas/services/nginx/default.nix
deleted file mode 100644
index 99142a59..00000000
--- a/hosts/midas/services/nginx/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ ... }:
-{
- imports = [ ./nixfox ];
-
- services.nginx.enable = true;
-}
diff --git a/hosts/midas/user/default.nix b/hosts/midas/user/default.nix
new file mode 100644
index 00000000..9366cadc
--- /dev/null
+++ b/hosts/midas/user/default.nix
@@ -0,0 +1,6 @@
+{ config, lib, ... }:
+{
+ home-manager.users."${config.sysusers.main}".home = {
+ stateVersion = lib.mkForce config.system.stateVersion;
+ };
+}
diff --git a/hosts/prophet/boot/default.nix b/hosts/prophet/boot/default.nix
index 5c3db6a2..e21b5c06 100644
--- a/hosts/prophet/boot/default.nix
+++ b/hosts/prophet/boot/default.nix
@@ -1,8 +1,7 @@
{ pkgs, ... }:
{
boot = {
- binfmt.emulatedSystems = [ "x86_64-linux" ];
kernelPackages = pkgs.linuxPackages_hardened;
- loader.limine.enable = true;
+ loader.systemd-boot.enable = true;
};
}
diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix
index 5f2196a5..cafc1fea 100644
--- a/hosts/prophet/default.nix
+++ b/hosts/prophet/default.nix
@@ -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";
}
diff --git a/hosts/prophet/disko/default.nix b/hosts/prophet/disko/default.nix
index aad74c04..4961d53b 100644
--- a/hosts/prophet/disko/default.nix
+++ b/hosts/prophet/disko/default.nix
@@ -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 = {
diff --git a/hosts/prophet/filesystems/default.nix b/hosts/prophet/filesystems/default.nix
index dda781b9..f3943967 100644
--- a/hosts/prophet/filesystems/default.nix
+++ b/hosts/prophet/filesystems/default.nix
@@ -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"
+ ];
};
}
diff --git a/hosts/prophet/hardware/default.nix b/hosts/prophet/hardware/default.nix
index 3e057fc7..4b2b3178 100644
--- a/hosts/prophet/hardware/default.nix
+++ b/hosts/prophet/hardware/default.nix
@@ -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";
}
diff --git a/hosts/prophet/id_ed25519.pub b/hosts/prophet/id_ed25519.pub
new file mode 100644
index 00000000..0d58d2b8
--- /dev/null
+++ b/hosts/prophet/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDXU+mo+lkFaGBV7wuzrGnlII15YS3/MkkG3KmGJRT0j
diff --git a/hosts/prophet/services/default.nix b/hosts/prophet/services/default.nix
index 71ffb3cf..1c8b896a 100644
--- a/hosts/prophet/services/default.nix
+++ b/hosts/prophet/services/default.nix
@@ -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;
}
diff --git a/hosts/prophet/user/default.nix b/hosts/prophet/user/default.nix
new file mode 100644
index 00000000..9366cadc
--- /dev/null
+++ b/hosts/prophet/user/default.nix
@@ -0,0 +1,6 @@
+{ config, lib, ... }:
+{
+ home-manager.users."${config.sysusers.main}".home = {
+ stateVersion = lib.mkForce config.system.stateVersion;
+ };
+}
diff --git a/hosts/redmond/boot/default.nix b/hosts/redmond/boot/default.nix
new file mode 100644
index 00000000..9a94a6b2
--- /dev/null
+++ b/hosts/redmond/boot/default.nix
@@ -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;
+ };
+}
diff --git a/hosts/redmond/default.nix b/hosts/redmond/default.nix
new file mode 100644
index 00000000..cdaa5afc
--- /dev/null
+++ b/hosts/redmond/default.nix
@@ -0,0 +1,19 @@
+{ lib, ... }:
+{
+ imports = [
+ ./boot
+ ./disko
+ ./filesystems
+ ./hardware
+ ./network
+ ./user
+ ../../modules/system
+ ];
+
+ networking.hostName = "redmond";
+
+ system = {
+ desktop.enable = true;
+ stateVersion = "24.05";
+ };
+}
diff --git a/hosts/hidden/disko/default.nix b/hosts/redmond/disko/default.nix
similarity index 72%
rename from hosts/hidden/disko/default.nix
rename to hosts/redmond/disko/default.nix
index 60a3aa22..4ebcb697 100644
--- a/hosts/hidden/disko/default.nix
+++ b/hosts/redmond/disko/default.nix
@@ -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";
diff --git a/hosts/redmond/filesystems/default.nix b/hosts/redmond/filesystems/default.nix
new file mode 100644
index 00000000..ddaa83f9
--- /dev/null
+++ b/hosts/redmond/filesystems/default.nix
@@ -0,0 +1,11 @@
+{ config, ... }:
+{
+ fileSystems."/mnt/Windrive" = {
+ device = "/dev/disk/by-uuid/582C6B802C6B57D0";
+ fsType = "ntfs";
+ options = [
+ "nodev"
+ "nosuid"
+ ];
+ };
+}
diff --git a/hosts/redmond/hardware/default.nix b/hosts/redmond/hardware/default.nix
new file mode 100644
index 00000000..8d652d04
--- /dev/null
+++ b/hosts/redmond/hardware/default.nix
@@ -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;
+}
diff --git a/hosts/redmond/id_ed25519.pub b/hosts/redmond/id_ed25519.pub
new file mode 100644
index 00000000..5319a978
--- /dev/null
+++ b/hosts/redmond/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHJ2Gy1Gaq96K85zOSfgWzGY0rIaUcqGS7Si5Nvzg+n
diff --git a/hosts/redmond/network/default.nix b/hosts/redmond/network/default.nix
new file mode 100644
index 00000000..f87dee8a
--- /dev/null
+++ b/hosts/redmond/network/default.nix
@@ -0,0 +1,13 @@
+{ ... }:
+{
+ networking = {
+ interfaces."wlp1s0".ipv4.addresses = [{
+ address = "192.168.2.200";
+ prefixLength = 24;
+ }];
+ defaultGateway = {
+ address = "192.168.2.1";
+ interface = "wlp1s0";
+ };
+ };
+}
diff --git a/hosts/redmond/user/default.nix b/hosts/redmond/user/default.nix
new file mode 100644
index 00000000..fed1d317
--- /dev/null
+++ b/hosts/redmond/user/default.nix
@@ -0,0 +1,7 @@
+{ config, lib, ... }:
+{
+ home-manager.users."${config.sysusers.main}".home = {
+ desktop.enable = true;
+ stateVersion = lib.mkForce config.system.stateVersion;
+ };
+}
diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix
index a71f03cf..8c5668af 100644
--- a/hosts/tower/boot/default.nix
+++ b/hosts/tower/boot/default.nix
@@ -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";
+ };
}
diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix
index bb1ea3e0..362aba9c 100644
--- a/hosts/tower/default.nix
+++ b/hosts/tower/default.nix
@@ -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;
}
diff --git a/hosts/tower/disko/default.nix b/hosts/tower/disko/default.nix
index 72540892..a5d6345a 100644
--- a/hosts/tower/disko/default.nix
+++ b/hosts/tower/disko/default.nix
@@ -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 = {
diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix
index 0f983e1b..18b0e1ac 100644
--- a/hosts/tower/filesystems/default.nix
+++ b/hosts/tower/filesystems/default.nix
@@ -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"
+ ];
+ };
};
}
diff --git a/hosts/tower/hardware/default.nix b/hosts/tower/hardware/default.nix
index a374acd5..4ee8328d 100644
--- a/hosts/tower/hardware/default.nix
+++ b/hosts/tower/hardware/default.nix
@@ -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;
}
diff --git a/hosts/tower/network/default.nix b/hosts/tower/network/default.nix
new file mode 100644
index 00000000..a14294f2
--- /dev/null
+++ b/hosts/tower/network/default.nix
@@ -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 ];
+ };
+}
diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix
index bdfb086b..9c6469d4 100644
--- a/hosts/tower/user/default.nix
+++ b/hosts/tower/user/default.nix
@@ -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;
+ };
}
diff --git a/modules/home/default.nix b/modules/home/default.nix
index c1e04428..ed97b6a8 100644
--- a/modules/home/default.nix
+++ b/modules/home/default.nix
@@ -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";
}
diff --git a/modules/home/profiles/default.nix b/modules/home/profiles/default.nix
deleted file mode 100644
index 4c658ec6..00000000
--- a/modules/home/profiles/default.nix
+++ /dev/null
@@ -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";
- };
-}
diff --git a/modules/home/profiles/guifull/default.nix b/modules/home/profiles/guifull/default.nix
deleted file mode 100644
index a322678d..00000000
--- a/modules/home/profiles/guifull/default.nix
+++ /dev/null
@@ -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;
- };
-}
diff --git a/modules/home/programs/gui/foot/default.nix b/modules/home/programs/gui/foot/default.nix
index a1974e51..27f704d5 100644
--- a/modules/home/programs/gui/foot/default.nix
+++ b/modules/home/programs/gui/foot/default.nix
@@ -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";
};
};
}
diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix
index 6e208d51..8f5291be 100644
--- a/modules/home/programs/gui/librewolf/default.nix
+++ b/modules/home/programs/gui/librewolf/default.nix
@@ -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" ];
};
};
}
diff --git a/modules/home/programs/gui/obs/default.nix b/modules/home/programs/gui/obs/default.nix
index bb593e4c..950c8bb8 100644
--- a/modules/home/programs/gui/obs/default.nix
+++ b/modules/home/programs/gui/obs/default.nix
@@ -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" ];
};
}
diff --git a/modules/home/programs/gui/thunderbird/default.nix b/modules/home/programs/gui/thunderbird/default.nix
index e7c67571..21c23773 100644
--- a/modules/home/programs/gui/thunderbird/default.nix
+++ b/modules/home/programs/gui/thunderbird/default.nix
@@ -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" ];
};
}
diff --git a/modules/home/programs/misc/avtools/default.nix b/modules/home/programs/misc/avtools/default.nix
index 31838e31..6f4d9356 100644
--- a/modules/home/programs/misc/avtools/default.nix
+++ b/modules/home/programs/misc/avtools/default.nix
@@ -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";
};
diff --git a/modules/home/programs/misc/gaming/emulators/default.nix b/modules/home/programs/misc/gaming/emulators/default.nix
index 53448024..98f32035 100644
--- a/modules/home/programs/misc/gaming/emulators/default.nix
+++ b/modules/home/programs/misc/gaming/emulators/default.nix
@@ -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
+ ]);
+ };
}
diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix
index 2cc451d0..9f0a8e44 100644
--- a/modules/home/programs/misc/gaming/launchers/default.nix
+++ b/modules/home/programs/misc/gaming/launchers/default.nix
@@ -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 = [
diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix
index f8e7530e..6c023524 100644
--- a/modules/home/programs/misc/general/default.nix
+++ b/modules/home/programs/misc/general/default.nix
@@ -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"
+ ];
};
}
diff --git a/modules/home/programs/misc/headless/default.nix b/modules/home/programs/misc/headless/default.nix
index e36efce0..43d8e3f0 100644
--- a/modules/home/programs/misc/headless/default.nix
+++ b/modules/home/programs/misc/headless/default.nix
@@ -2,7 +2,6 @@
{
home.packages = with pkgs; [
bc
- colmena
ncdu
p7zip
vimv
diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix
index a7b62231..ea3a1c3b 100644
--- a/modules/home/programs/misc/production/default.nix
+++ b/modules/home/programs/misc/production/default.nix
@@ -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"
+ ];
};
}
diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix
index d43655ec..35452156 100644
--- a/modules/home/programs/misc/school/default.nix
+++ b/modules/home/programs/misc/school/default.nix
@@ -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"
- ];
};
}
diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix
index 5fbad56b..6d8f3522 100644
--- a/modules/home/programs/terminal/default.nix
+++ b/modules/home/programs/terminal/default.nix
@@ -7,15 +7,14 @@
./eza
./fastfetch
./git
- ./gpg
./lazygit
./ncmpcpp
./neovim
+ ./nh
./nix-index
./ranger
- ./ssh
+ ./tmux
./yt-dlp
- ./zellij
./zoxide
./zsh
];
diff --git a/modules/home/programs/terminal/direnv/default.nix b/modules/home/programs/terminal/direnv/default.nix
index c0858a93..b71ece6d 100644
--- a/modules/home/programs/terminal/direnv/default.nix
+++ b/modules/home/programs/terminal/direnv/default.nix
@@ -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" ];
}
diff --git a/modules/home/programs/terminal/fastfetch/configs/config.jsonc b/modules/home/programs/terminal/fastfetch/configs/config.jsonc
new file mode 100644
index 00000000..cae0ed27
--- /dev/null
+++ b/modules/home/programs/terminal/fastfetch/configs/config.jsonc
@@ -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"
+ }
+ ]
+}
diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/small.jsonc b/modules/home/programs/terminal/fastfetch/configs/small.jsonc
similarity index 100%
rename from modules/home/programs/terminal/fastfetch/smallfetch/small.jsonc
rename to modules/home/programs/terminal/fastfetch/configs/small.jsonc
diff --git a/modules/home/programs/terminal/fastfetch/default.nix b/modules/home/programs/terminal/fastfetch/default.nix
index 19f7b068..ecaf8e3b 100644
--- a/modules/home/programs/terminal/fastfetch/default.nix
+++ b/modules/home/programs/terminal/fastfetch/default.nix
@@ -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;
}
diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix
deleted file mode 100644
index fcd5fddd..00000000
--- a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix
+++ /dev/null
@@ -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;
-}
diff --git a/modules/home/programs/terminal/gpg/default.nix b/modules/home/programs/terminal/gpg/default.nix
deleted file mode 100644
index dfd108be..00000000
--- a/modules/home/programs/terminal/gpg/default.nix
+++ /dev/null
@@ -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" ];
-}
diff --git a/modules/home/programs/terminal/lazygit/default.nix b/modules/home/programs/terminal/lazygit/default.nix
index cd0059c1..45a9411d 100644
--- a/modules/home/programs/terminal/lazygit/default.nix
+++ b/modules/home/programs/terminal/lazygit/default.nix
@@ -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" ];
}
diff --git a/modules/home/programs/terminal/neovim/default.nix b/modules/home/programs/terminal/neovim/default.nix
index f07a4f3b..3040b096 100644
--- a/modules/home/programs/terminal/neovim/default.nix
+++ b/modules/home/programs/terminal/neovim/default.nix
@@ -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" ];
};
}
diff --git a/modules/home/programs/terminal/nh/default.nix b/modules/home/programs/terminal/nh/default.nix
new file mode 100644
index 00000000..52aa9908
--- /dev/null
+++ b/modules/home/programs/terminal/nh/default.nix
@@ -0,0 +1,7 @@
+{ config, ... }:
+{
+ programs.nh = {
+ enable = true;
+ flake = "${config.home.homeDirectory}/Projects/nixos-config";
+ };
+}
diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix
index 4cd34016..58f33a55 100644
--- a/modules/home/programs/terminal/nix-index/default.nix
+++ b/modules/home/programs/terminal/nix-index/default.nix
@@ -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" ];
}
diff --git a/modules/home/programs/terminal/ranger/default.nix b/modules/home/programs/terminal/ranger/default.nix
index 0cc9a969..d6d55b5d 100644
--- a/modules/home/programs/terminal/ranger/default.nix
+++ b/modules/home/programs/terminal/ranger/default.nix
@@ -1,8 +1,8 @@
-{ config, lib, pkgs, pkgsUnstable, ... }:
+{ config, pkgsStable, ... }:
{
programs.ranger = {
enable = true;
- package = pkgsUnstable.ranger;
+ package = pkgsStable.ranger;
settings = {
preview_images = true;
preview_images_method = "sixel";
@@ -94,30 +94,33 @@
# Ranger's bookmarks and necessary tools
home = {
- file = with lib; with config.home; with config.xdg; with config.xdg.userDirs; with config.xdg.userDirs.extraConfig; {
- "${removePrefix "${homeDirectory}/" dataHome}/ranger/bookmarks".text = ''
+ file = {
+ ".local/share/ranger/bookmarks".text = ''
# Local files
- h:${homeDirectory}
- k:${XDG_KEEPERS_DIR}
- d:${download}
- j:${documents}
- p:${pictures}
- v:${videos}
- n:${XDG_PROJECTS_DIR}/nixos-config
- c:${configHome}
- l:${dataHome}
- q:${XDG_PERSIST_DIR}
+ h:${config.home.homeDirectory}
+ k:${config.home.homeDirectory}/Keepers
+ j:${config.home.homeDirectory}/Downloads
+ j:${config.home.homeDirectory}/Documents
+ p:${config.home.homeDirectory}/Photos
+ v:${config.home.homeDirectory}/Videos
+ n:${config.home.homeDirectory}/Projects/nixos-config
+ c:${config.home.homeDirectory}/.config
+ l:${config.home.homeDirectory}/.local
+ q:/persist
w:/mnt
# Remote files
- N:${XDG_NETWORK_DIR}/
- H:${XDG_NETWORK_DIR}/Midas/
- K:${XDG_NETWORK_DIR}/Midas/Files
- M:${XDG_NETWORK_DIR}/Midas/Music
- V:${XDG_NETWORK_DIR}/Midas/Videos
- P:${XDG_NETWORK_DIR}/Midas/Photos
+ N:${config.home.homeDirectory}/Network
+ H:${config.home.homeDirectory}/Network/Midas/
+ K:${config.home.homeDirectory}/Network/Midas/Files
+ M:${config.home.homeDirectory}/Network/Midas/Music
+ V:${config.home.homeDirectory}/Network/Midas/Videos
+ P:${config.home.homeDirectory}/Network/Midas/Photos
'';
};
- packages = with pkgs; [ poppler_utils ];
+ packages = with pkgsStable; [
+ imagemagick
+ poppler_utils
+ ];
};
}
diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix
deleted file mode 100644
index a154ecbe..00000000
--- a/modules/home/programs/terminal/ssh/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ config, lib, ... }:
-{
- programs.ssh = {
- enable = true;
- addKeysToAgent = "yes";
- compression = true;
- matchBlocks = {
- # Personal servers
- sv1.hostname = "sv1.nixfox.ca";
- sv2.hostname = "sv2.nixfox.ca";
- mx.hostname = "mx.nixfox.ca";
-
- # Other servers
- bloxel.hostname = "rtmp.bloxelcom.net";
- seneca = {
- hostname = "matrix.senecapolytechnic.ca";
- user = "jhampton1";
- };
- };
- };
-}
diff --git a/modules/home/programs/terminal/tmux/default.nix b/modules/home/programs/terminal/tmux/default.nix
new file mode 100644
index 00000000..338fa76e
--- /dev/null
+++ b/modules/home/programs/terminal/tmux/default.nix
@@ -0,0 +1,24 @@
+{ ... }:
+{
+ programs.tmux = {
+ enable = true;
+ keyMode = "vi";
+ mouse = true;
+ terminal = "st-256color";
+ historyLimit = 4096;
+ baseIndex = 1;
+ extraConfig = ''
+ set -g status on
+ set -g status-left ""
+ set -g status-position bottom
+ set -g status-right "#[bg=brightblack]#[fg=dark_purple] #T "
+ set -g status-style "bg=black"
+
+ set -g set-titles on
+ set -g set-titles-string "#T"
+
+ setw -g window-status-format "#[bg=brightmagenta]#[fg=black] #I #[bg=brightblack]#[fg=white] #W "
+ setw -g window-status-current-format "#[bg=brightmagenta]#[fg=black] #I #[bg=white]#[fg=black] #W "
+ '';
+ };
+}
diff --git a/modules/home/programs/terminal/zellij/default.nix b/modules/home/programs/terminal/zellij/default.nix
deleted file mode 100644
index 2b0546b6..00000000
--- a/modules/home/programs/terminal/zellij/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, lib, ... }:
-{
- programs.zellij.enable = true;
-
- home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
- with lib; with config.home; with config.xdg; [
- "state/${removePrefix "${homeDirectory}/" cacheHome}/zellij"
- "state/${removePrefix "${homeDirectory}/" configHome}/zellij"
- ];
-}
diff --git a/modules/home/programs/terminal/zoxide/default.nix b/modules/home/programs/terminal/zoxide/default.nix
index e6d3cb37..ee6e4704 100644
--- a/modules/home/programs/terminal/zoxide/default.nix
+++ b/modules/home/programs/terminal/zoxide/default.nix
@@ -1,11 +1,9 @@
-{ config, lib, ... }:
+{ config, ... }:
{
programs.zoxide.enable = true;
home = {
shellAliases.cd = "z";
- persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
- with lib; with config.home; with config.xdg;
- [ "state/${removePrefix "${homeDirectory}/" dataHome}/zoxide" ];
+ persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/zoxide" ];
};
}
diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix
index db1ee096..b9f9780b 100644
--- a/modules/home/programs/terminal/zsh/default.nix
+++ b/modules/home/programs/terminal/zsh/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs, ... }:
+{ config, pkgs, ... }:
{
programs.zsh = {
enable = true;
@@ -16,18 +16,15 @@
};
history = {
append = true;
- expireDuplicatesFirst = true;
ignoreAllDups = true;
ignoreSpace = true;
path = "$ZDOTDIR/.zsh_history";
};
- initContent = ''
+ initExtra = ''
smallfetch
source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh
'';
};
- home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
- with lib; with config.home; with config.xdg;
- [ "state/${removePrefix "${homeDirectory}/" configHome}/zsh" ];
+ home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/zsh" ];
}
diff --git a/modules/home/services/default.nix b/modules/home/services/default.nix
index 7a788ba1..8bbdeef3 100644
--- a/modules/home/services/default.nix
+++ b/modules/home/services/default.nix
@@ -2,6 +2,7 @@
{
imports = [
./easyeffects
+ ./gpg
./mpd
./playerctl
];
diff --git a/modules/home/services/gpg/default.nix b/modules/home/services/gpg/default.nix
new file mode 100644
index 00000000..a6cbd32b
--- /dev/null
+++ b/modules/home/services/gpg/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ services.gpg-agent = {
+ enable = true;
+ enableSshSupport = true;
+ };
+}
diff --git a/modules/home/services/mpd/default.nix b/modules/home/services/mpd/default.nix
index e842508a..e862bd2b 100644
--- a/modules/home/services/mpd/default.nix
+++ b/modules/home/services/mpd/default.nix
@@ -5,7 +5,7 @@
mpd = {
enable = true;
network.startWhenNeeded = true;
- musicDirectory = "${config.xdg.userDirs.extraConfig.XDG_NETWORK_DIR}/Midas/Music/NixBops";
+ musicDirectory = "${config.home.homeDirectory}/Network/Midas/Music/NixBops";
playlistDirectory = "${config.services.mpd.musicDirectory}/Playlists";
extraConfig = ''
audio_output {
@@ -18,8 +18,6 @@
mpd-discord-rpc.enable = true;
};
- home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
- with lib; with config.home; with config.xdg;
- [ "state/${removePrefix "${homeDirectory}/" dataHome}/mpd" ];
+ home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/mpd" ];
};
}
diff --git a/modules/home/settings/aliases/default.nix b/modules/home/settings/aliases/default.nix
index e4d5ff4d..ff62e202 100644
--- a/modules/home/settings/aliases/default.nix
+++ b/modules/home/settings/aliases/default.nix
@@ -2,10 +2,13 @@
{
home.shellAliases = {
# NixOS
+ nhs = "nh os switch";
nixclean = "nix store gc; nix store optimise";
nixpurge = "sudo nix-collect-garbage --delete-old";
# Shortcuts
+ ff = "clear && fastfetch";
myip = "curl ifconfig.co";
+ seneca = "ssh jhampton1@matrix.senecapolytechnic.ca";
};
}
diff --git a/modules/home/settings/cursor/default.nix b/modules/home/settings/cursor/default.nix
index 4d547cc2..b6ff65ef 100644
--- a/modules/home/settings/cursor/default.nix
+++ b/modules/home/settings/cursor/default.nix
@@ -1,11 +1,10 @@
{ config, lib, pkgs, ... }:
{
home.pointerCursor = lib.mkIf config.home.desktop.enable {
+ gtk.enable = true;
+ x11.enable = true;
name = "Simp1e-Dark";
package = pkgs.simp1e-cursors;
size = 24;
-
- gtk.enable = true;
- x11.enable = true;
};
}
diff --git a/modules/home/settings/dconf/default.nix b/modules/home/settings/dconf/default.nix
index 69c88c4b..38cda938 100644
--- a/modules/home/settings/dconf/default.nix
+++ b/modules/home/settings/dconf/default.nix
@@ -8,8 +8,7 @@
uris = [ "qemu:///system" ];
};
};
- home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
- with lib; with config.home; with config.xdg;
- [ "state/${removePrefix "${homeDirectory}/" configHome}/dconf" ];
+
+ home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/dconf" ];
};
}
diff --git a/modules/home/settings/default.nix b/modules/home/settings/default.nix
index 59cfe345..ffe0fbb4 100644
--- a/modules/home/settings/default.nix
+++ b/modules/home/settings/default.nix
@@ -9,9 +9,7 @@
./impermanence
./locale
./nix
- ./nixgl
./qt
- ./user
./xdg
];
}
diff --git a/modules/home/settings/fonts/fontconfig/default.nix b/modules/home/settings/fonts/fontconfig/default.nix
index 395aeef2..0ad9bae1 100644
--- a/modules/home/settings/fonts/fontconfig/default.nix
+++ b/modules/home/settings/fonts/fontconfig/default.nix
@@ -3,8 +3,8 @@
fonts.fontconfig = {
enable = config.home.desktop.enable;
defaultFonts = {
- sansSerif = [ config.vars.fonts.main ];
- monospace = [ config.vars.fonts.mono ];
+ sansSerif = [ config.look.fonts.main ];
+ monospace = [ config.look.fonts.mono ];
emoji = [ "Twitter Color Emoji" ];
};
};
diff --git a/modules/home/settings/fonts/packages/default.nix b/modules/home/settings/fonts/packages/default.nix
index e1fd0145..d7cae882 100644
--- a/modules/home/settings/fonts/packages/default.nix
+++ b/modules/home/settings/fonts/packages/default.nix
@@ -1,14 +1,11 @@
-{ config, lib, pkgs, ... }:
+{ config, lib, pkgsStable, ... }:
{
- config = lib.mkIf config.home.desktop.enable {
- home.packages = (with pkgs; [
- liberation_ttf
- noto-fonts
- sarasa-gothic
- twitter-color-emoji
- ]) ++ (with pkgs.nerd-fonts; [
- ubuntu
- ubuntu-mono
- ]);
- };
+ home.packages = lib.mkIf config.home.desktop.enable (with pkgsStable; [
+ liberation_ttf
+ twitter-color-emoji
+ noto-fonts
+ sarasa-gothic
+ ubuntu_font_family
+ (nerdfonts.override { fonts = [ "UbuntuMono" ]; })
+ ]);
}
diff --git a/modules/home/settings/gtk/bookmarks/default.nix b/modules/home/settings/gtk/bookmarks/default.nix
index 904aabfd..57d2d2c7 100644
--- a/modules/home/settings/gtk/bookmarks/default.nix
+++ b/modules/home/settings/gtk/bookmarks/default.nix
@@ -5,8 +5,7 @@
"file://${config.home.homeDirectory}/Downloads"
"file://${config.home.homeDirectory}/Documents"
"file://${config.home.homeDirectory}/Videos"
- "file://${config.home.homeDirectory}/Photos"
- "file://${config.home.homeDirectory}/Photos/Screenshots"
- "file:///network"
+ "file://${config.home.homeDirectory}/Pictures/Screenshots"
+ "file:///etc/nixos"
];
}
diff --git a/modules/home/settings/gtk/theme/default.nix b/modules/home/settings/gtk/theme/default.nix
index 9b7f6719..34918d00 100644
--- a/modules/home/settings/gtk/theme/default.nix
+++ b/modules/home/settings/gtk/theme/default.nix
@@ -2,7 +2,7 @@
{
gtk = with pkgs; {
font = {
- name = config.vars.fonts.main;
+ name = config.look.fonts.main;
size = 11;
};
theme = {
@@ -21,7 +21,7 @@
iconTheme = {
name = "Papirus-Dark";
package = papirus-icon-theme.override {
- color = config.vars.colors.folder;
+ color = config.look.colors.folder;
};
};
};
diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix
index 99ef68af..39181199 100644
--- a/modules/home/settings/impermanence/default.nix
+++ b/modules/home/settings/impermanence/default.nix
@@ -1,24 +1,22 @@
{ config, lib, impermanence, ... }:
{
- imports = [ impermanence.homeManagerModules.default ];
+ imports = [ impermanence.homeManagerModules.impermanence ];
- home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = {
- enable = !config.targets.genericLinux.enable;
- allowOther = true;
- removePrefixDirectory = true;
- directories = let
- home = config.home.homeDirectory;
- strip = path: lib.removePrefix "${home}/" path;
- in with config.xdg.userDirs; [
- "dirs/${strip extraConfig.XDG_KEEPERS_DIR}"
- "dirs/${strip extraConfig.XDG_PROJECTS_DIR}"
- "secure/.ssh"
+ home.persistence."/persist${config.home.homeDirectory}" = {
+ directories = [
+ "Keepers"
+ "Projects"
+
+ ".ssh"
+ ".gnupg"
] ++ (if config.home.desktop.enable then [
- "dirs/${strip documents}"
- "dirs/${strip pictures}"
- "dirs/${strip videos}"
+ "Documents"
+ "Photos"
+ "Videos"
+ "Games"
- "state/${strip config.xdg.stateHome}/wireplumber"
+ ".local/state/wireplumber"
] else []);
+ allowOther = false;
};
}
diff --git a/modules/home/settings/nix/channels/default.nix b/modules/home/settings/nix/channels/default.nix
index 0273e22d..499e5afd 100644
--- a/modules/home/settings/nix/channels/default.nix
+++ b/modules/home/settings/nix/channels/default.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, stable, unstable, ... }:
+{ config, lib, pkgs, stable, unstable, ... }:
with pkgs; {
nix.registry.stable.flake = stable;
nix.registry.unstable.flake = unstable;
diff --git a/modules/home/settings/nix/default.nix b/modules/home/settings/nix/default.nix
index 627937f5..21ba02ba 100644
--- a/modules/home/settings/nix/default.nix
+++ b/modules/home/settings/nix/default.nix
@@ -6,7 +6,7 @@
];
nix = {
- package = lib.mkForce pkgs.nix;
+ package = lib.mkForce pkgs.lix;
settings.experimental-features = [
"flakes"
"nix-command"
diff --git a/modules/home/settings/nix/unfree/default.nix b/modules/home/settings/nix/unfree/default.nix
index 41d21c96..8c0a288a 100644
--- a/modules/home/settings/nix/unfree/default.nix
+++ b/modules/home/settings/nix/unfree/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
-{
- options.nixpkgs.allowUnfreePackages = with lib; mkOption {
+with lib; {
+ options.nixpkgs.allowUnfreePackages = mkOption {
type = types.listOf types.str;
default = [];
};
diff --git a/modules/home/settings/nixgl/default.nix b/modules/home/settings/nixgl/default.nix
deleted file mode 100644
index 539ad99f..00000000
--- a/modules/home/settings/nixgl/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, lib, ... }:
-{
- nixGL = {
- installScripts = [
- "mesa"
- "nvidia"
- ];
- vulkan.enable = true;
- };
-}
diff --git a/modules/home/settings/qt/default.nix b/modules/home/settings/qt/default.nix
index b5fd1884..8c32d581 100644
--- a/modules/home/settings/qt/default.nix
+++ b/modules/home/settings/qt/default.nix
@@ -2,7 +2,6 @@
{
qt = {
enable = config.home.desktop.enable;
- platformTheme.name = "gtk";
- style.name = "gtk2";
+ platformTheme.name = "gtk3";
};
}
diff --git a/modules/home/settings/xdg/default.nix b/modules/home/settings/xdg/default.nix
index daa8a344..25fda81c 100644
--- a/modules/home/settings/xdg/default.nix
+++ b/modules/home/settings/xdg/default.nix
@@ -1,8 +1,9 @@
-{ config, ... }:
+{ ... }:
{
- imports = [ ./dirs ];
-
- xdg.enable = config.home.desktop.enable;
+ imports = [
+ ./defaults
+ ./folders
+ ];
home.preferXdgDirectories = true;
}
diff --git a/modules/home/settings/xdg/defaults/default.nix b/modules/home/settings/xdg/defaults/default.nix
new file mode 100644
index 00000000..b8ba593b
--- /dev/null
+++ b/modules/home/settings/xdg/defaults/default.nix
@@ -0,0 +1,11 @@
+{ ... }:
+{
+ xdg.mimeApps.defaultApplications = {
+ "inode/directory" = [ "pcmanfm-qt.desktop" ];
+ "text/plain" = [ "nvim.desktop" ];
+ "image/png" = [ "imv.desktop" ];
+ "image/jpeg" = [ "imv.desktop" ];
+ "image/gif" = [ "mpv.desktop" ];
+ "video/*" = [ "mpv.desktop" ];
+ };
+}
diff --git a/modules/home/settings/xdg/dirs/default.nix b/modules/home/settings/xdg/dirs/default.nix
deleted file mode 100644
index 5473ab0a..00000000
--- a/modules/home/settings/xdg/dirs/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ config, ... }:
-{
- xdg.userDirs = with config.home; {
- enable = config.xdg.enable;
- createDirectories = true;
-
- desktop = null;
- music = null;
- pictures = "${homeDirectory}/Photos";
- publicShare = null;
- templates = null;
-
- extraConfig = {
- XDG_GAMES_DIR = "${homeDirectory}/Games";
- XDG_KEEPERS_DIR = "${homeDirectory}/Keepers";
- XDG_NETWORK_DIR = "/network";
- XDG_PERSIST_DIR = "/persist${homeDirectory}";
- XDG_PROJECTS_DIR = "${homeDirectory}/Projects";
- XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
- };
- };
-}
diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix
new file mode 100644
index 00000000..470cd693
--- /dev/null
+++ b/modules/home/settings/xdg/folders/default.nix
@@ -0,0 +1,13 @@
+{ config, ... }:
+{
+ xdg.userDirs = {
+ enable = config.home.desktop.enable;
+ createDirectories = true;
+ desktop = null;
+ pictures = "${config.home.homeDirectory}/Photos";
+ music = null;
+ publicShare = null;
+ templates = null;
+ extraConfig.XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
+ };
+}
diff --git a/modules/home/settings/user/default.nix b/modules/home/user/default.nix
similarity index 100%
rename from modules/home/settings/user/default.nix
rename to modules/home/user/default.nix
diff --git a/modules/home/variables/border/default.nix b/modules/home/variables/border/default.nix
deleted file mode 100644
index 938c98b5..00000000
--- a/modules/home/variables/border/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ ... }:
-{
- vars.border = rec {
- int = 3;
- string = toString int;
- };
-}
diff --git a/modules/home/variables/default.nix b/modules/home/variables/default.nix
index 675dee94..2a4872ac 100644
--- a/modules/home/variables/default.nix
+++ b/modules/home/variables/default.nix
@@ -1,14 +1,8 @@
-{ lib, ... }:
+{ ... }:
{
imports = [
- ./border
- ./colors
./displays
- ./fonts
+ ./look
./workspaces
];
-
- options.vars = lib.mkOption {
- type = lib.types.attrs;
- };
}
diff --git a/modules/home/variables/displays/default.nix b/modules/home/variables/displays/default.nix
index 44f7e4eb..8d1fc828 100644
--- a/modules/home/variables/displays/default.nix
+++ b/modules/home/variables/displays/default.nix
@@ -1,12 +1,18 @@
-{ ... }:
+{ config, lib, ... }:
{
- vars.displays = {
- tower1 = "Microstep MSI G24C 0000000000001";
- tower2 = "Dell Inc. DELL P2214H KW14V4965YKS";
- tower3 = "Eizo Nanao Corporation CG223W 23252050";
- tower4 = "Sony SONY TV 0x01010101";
+ options.displays = lib.mkOption {
+ type = lib.types.attrs;
+ };
- intuos1 = "Wacom Tech Cintiq W1310 MIRACULIX";
- intuos2 = "BNQ BenQ GW2270 6CH00781019";
+ config.displays = {
+ tower1 = "Microstep MSI G24C 0000000000001";
+ tower2 = "BNQ BenQ GW2270 6CH00781019";
+ tower3 = "Eizo Nanao Corporation CG223W 23252050";
+ tower4 = "Samsung Electric Company SAMSUNG Unknown";
+
+ jupiter = "Valve Corporation ANX7530 U 0x00000001";
+
+ estradiol1 = "Dell Inc. DELL P2214H KW14V4965YKS";
+ estradiol2 = "HannStar Display Corp iP192A 051AW1WY03797";
};
}
diff --git a/modules/home/variables/fonts/default.nix b/modules/home/variables/fonts/default.nix
deleted file mode 100644
index a9a26c8b..00000000
--- a/modules/home/variables/fonts/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ ... }:
-{
- vars.fonts = {
- main = "Ubuntu Nerd Font";
- mono = "UbuntuMono Nerd Font";
- };
-}
diff --git a/modules/home/variables/look/border/default.nix b/modules/home/variables/look/border/default.nix
new file mode 100644
index 00000000..8ffa16e4
--- /dev/null
+++ b/modules/home/variables/look/border/default.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }:
+{
+ options.look.border = lib.mkOption {
+ type = lib.types.attrs;
+ };
+
+ config.look.border = rec {
+ int = 3;
+ string = toString int;
+ };
+}
diff --git a/modules/home/variables/colors/default.nix b/modules/home/variables/look/colors/default.nix
similarity index 71%
rename from modules/home/variables/colors/default.nix
rename to modules/home/variables/look/colors/default.nix
index b15c1a34..e75d1e6a 100644
--- a/modules/home/variables/colors/default.nix
+++ b/modules/home/variables/look/colors/default.nix
@@ -1,6 +1,10 @@
-{ ... }:
+{ config, lib, ... }:
{
- vars.colors = {
+ options.look.colors = lib.mkOption {
+ type = lib.types.attrs;
+ };
+
+ config.look.colors = {
prime = "3823C4"; #3823C4
accent = "1B1F59"; #1B1F59
split = "555B9E"; #555B9E
diff --git a/modules/home/variables/look/default.nix b/modules/home/variables/look/default.nix
new file mode 100644
index 00000000..a5930b9c
--- /dev/null
+++ b/modules/home/variables/look/default.nix
@@ -0,0 +1,8 @@
+{ ... }:
+{
+ imports = [
+ ./border
+ ./colors
+ ./fonts
+ ];
+}
diff --git a/modules/home/variables/look/fonts/default.nix b/modules/home/variables/look/fonts/default.nix
new file mode 100644
index 00000000..b8cc234c
--- /dev/null
+++ b/modules/home/variables/look/fonts/default.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }:
+{
+ options.look.fonts = lib.mkOption {
+ type = lib.types.attrs;
+ };
+
+ config.look.fonts = {
+ main = "Ubuntu";
+ mono = "UbuntuMono Nerd Font";
+ };
+}
diff --git a/modules/home/variables/workspaces/default.nix b/modules/home/variables/workspaces/default.nix
index 80875cb0..ead54949 100644
--- a/modules/home/variables/workspaces/default.nix
+++ b/modules/home/variables/workspaces/default.nix
@@ -1,6 +1,10 @@
-{ ... }:
+{ config, lib, ... }:
{
- vars.ws = {
+ options.ws = lib.mkOption {
+ type = lib.types.attrs;
+ };
+
+ config.ws = {
w0 = "0";
w1 = "1";
w2 = "2";
diff --git a/modules/home/wms/programs/default.nix b/modules/home/wms/programs/default.nix
index 924e4a0b..4828dc84 100644
--- a/modules/home/wms/programs/default.nix
+++ b/modules/home/wms/programs/default.nix
@@ -4,11 +4,9 @@
./clipman
./kanshi
./mako
- ./portals
./rofi
./swayidle
./swaylock
- ./wallpapers
./waybar
./wlsunset
];
diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix
index 235b9aa9..d592d646 100644
--- a/modules/home/wms/programs/kanshi/default.nix
+++ b/modules/home/wms/programs/kanshi/default.nix
@@ -2,91 +2,65 @@
{
services.kanshi = {
enable = config.home.desktop.enable;
- settings = with config.vars.displays; [
- # Outputs
+ settings = [
{
output = {
- criteria = tower1;
- adaptiveSync = true;
+ criteria = config.displays.tower1;
mode = "1920x1080@143.979996Hz";
};
}
{
output = {
- criteria = tower3;
- mode = "1680x1050@59.883";
- transform = "90";
+ criteria = config.displays.jupiter;
+ mode = "800x1280@59.99900";
+ transform = "270";
+ scale = 1.15;
};
}
-
- # Profiles
{
profile = {
- name = "tower-tv";
+ name = "primary";
outputs = [
{
- criteria = tower1;
+ criteria = config.displays.tower1;
position = "3840,405";
- status = "enable";
}
{
- criteria = tower2;
+ criteria = config.displays.tower2;
position = "1920,405";
- status = "enable";
}
{
- criteria = tower3;
+ criteria = config.displays.tower3;
position = "5760,0";
- status = "enable";
+ transform = "90";
}
{
- criteria = tower4;
+ criteria = config.displays.tower4;
position = "0,405";
- status = "enable";
}
];
};
}
{
profile = {
- name = "tower";
+ name = "estradiol";
outputs = [
{
- criteria = tower1;
- position = "1920,405";
- status = "enable";
- }
- {
- criteria = tower2;
- position = "0,405";
- status = "enable";
- }
- {
- criteria = tower3;
- position = "3840,0";
- status = "enable";
- }
- ];
- };
- }
-
- {
- profile = {
- name = "intuos";
- outputs = [
- {
- criteria = intuos1;
- position = "1920,278";
- scale = 1.80;
- }
- {
- criteria = intuos2;
+ criteria = config.displays.estradiol1;
position = "0,0";
}
+ {
+ criteria = config.displays.estradiol2;
+ position = "1920,0";
+ scale = 0.85;
+ }
+ {
+ criteria = "eDP-1";
+ status = "disable";
+ }
];
};
}
-
{
profile = {
name = "docked";
@@ -102,22 +76,6 @@
];
};
}
-
- {
- profile = {
- name = "deck";
- outputs = [
- {
- criteria = "Valve Corporation ANX7530 U 0x00000001";
- status = "enable";
- mode = "800x1280@59.99900";
- transform = "270";
- scale = 1.15;
- }
- ];
- };
- }
-
{
profile = {
name = "undocked";
diff --git a/modules/home/wms/programs/mako/default.nix b/modules/home/wms/programs/mako/default.nix
index 1e689e1e..065026c7 100644
--- a/modules/home/wms/programs/mako/default.nix
+++ b/modules/home/wms/programs/mako/default.nix
@@ -2,26 +2,22 @@
{
services.mako = {
enable = config.home.desktop.enable;
- settings = {
- # Theme
- background-color = "#${config.vars.colors.dark}D9";
- border-color = "#${config.vars.colors.accent}";
- border-size = config.vars.border.int;
- font = "${config.vars.fonts.main} 12";
- margin = 0;
- max-icon-size = 40;
- outer-margin = 10;
- padding = 8;
-
- # Rules
- anchor = "bottom-right";
- default-timeout = 4500;
- layer = "overlay";
- on-button-right = "dismiss-all";
- sort = "+time";
-
- # Modes
- "mode=do-not-disturb".invisible = 1;
- };
+ borderColor = "#${config.look.colors.accent}";
+ backgroundColor = "#${config.look.colors.dark}D9";
+ sort = "+time";
+ layer = "overlay";
+ padding = "8";
+ margin = "0";
+ borderSize = config.look.border.int;
+ maxIconSize = 40;
+ defaultTimeout = 4500;
+ font = "${config.look.fonts.main} 12";
+ anchor = "bottom-right";
+ extraConfig = ''
+ on-button-right=dismiss-all
+ outer-margin=10
+ [mode=do-not-disturb]
+ invisible=1
+ '';
};
}
diff --git a/modules/home/wms/programs/portals/default.nix b/modules/home/wms/programs/portals/default.nix
deleted file mode 100644
index b54c9d9f..00000000
--- a/modules/home/wms/programs/portals/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ config, pkgs, ... }:
-{
- xdg.portal = {
- enable = config.home.desktop.enable;
- configPackages = config.xdg.portal.extraPortals;
- xdgOpenUsePortal = true;
- extraPortals = with pkgs; [
- xdg-desktop-portal-gtk
- xdg-desktop-portal-wlr
- ];
- };
-}
diff --git a/modules/home/wms/programs/rofi/default.nix b/modules/home/wms/programs/rofi/default.nix
index bcdaddf5..a32f7076 100644
--- a/modules/home/wms/programs/rofi/default.nix
+++ b/modules/home/wms/programs/rofi/default.nix
@@ -7,7 +7,7 @@
enable = true;
package = pkgs.rofi-wayland;
terminal = "foot";
- font = "${config.vars.fonts.main} 14";
+ font = "${config.look.fonts.main} 14";
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
@@ -18,24 +18,24 @@
red = mkLiteral "#DC322F";
background-color = mkLiteral "#00000000";
separatorcolor = mkLiteral "#00000000";
- normal-foreground = mkLiteral "#${config.vars.colors.text}";
- normal-background = mkLiteral "#${config.vars.colors.dark}1A";
- urgent-foreground = mkLiteral "#${config.vars.colors.urgent}";
- active-foreground = mkLiteral "#${config.vars.colors.split}";
- selected-active-foreground = mkLiteral "#${config.vars.colors.prime}";
- background = mkLiteral "#${config.vars.colors.dark}D9";
- bordercolor = mkLiteral "#${config.vars.colors.prime}";
+ normal-foreground = mkLiteral "#${config.look.colors.text}";
+ normal-background = mkLiteral "#${config.look.colors.dark}1A";
+ urgent-foreground = mkLiteral "#${config.look.colors.urgent}";
+ active-foreground = mkLiteral "#${config.look.colors.split}";
+ selected-active-foreground = mkLiteral "#${config.look.colors.prime}";
+ background = mkLiteral "#${config.look.colors.dark}D9";
+ bordercolor = mkLiteral "#${config.look.colors.prime}";
selected-normal-foreground = mkLiteral "#FFFFFF";
- selected-normal-background = mkLiteral "#${config.vars.colors.prime}80";
- border-color = mkLiteral "#${config.vars.colors.prime}";
- urgent-background = mkLiteral "#${config.vars.colors.accent}26";
- active-background = mkLiteral "#${config.vars.colors.accent}26";
- selected-active-background = mkLiteral "#${config.vars.colors.split}54";
+ selected-normal-background = mkLiteral "#${config.look.colors.prime}80";
+ border-color = mkLiteral "#${config.look.colors.prime}";
+ urgent-background = mkLiteral "#${config.look.colors.accent}26";
+ active-background = mkLiteral "#${config.look.colors.accent}26";
+ selected-active-background = mkLiteral "#${config.look.colors.split}54";
};
"#window" = {
background-color = mkLiteral "@background";
width = 500;
- border = mkLiteral "${config.vars.border.string}";
+ border = mkLiteral "${config.look.border.string}";
padding = 5;
};
"#message" = {
diff --git a/modules/home/wms/programs/rofi/scripts/default.nix b/modules/home/wms/programs/rofi/scripts/default.nix
index cfc82d5b..95efb373 100644
--- a/modules/home/wms/programs/rofi/scripts/default.nix
+++ b/modules/home/wms/programs/rofi/scripts/default.nix
@@ -2,26 +2,18 @@
{
home.packages = with pkgs; lib.mkIf config.programs.rofi.enable [
(writeScriptBin "rofiscratch" ''
- #!/bin/sh
-
SCRATCHPADS=$(echo -e "Btop\nMusic\nSound\nEasyEffects" | rofi -dmenu -i -p "Scratchpads")
-
case $SCRATCHPADS in
Btop) foot -a btop -T Btop btop;;
Music) foot -a music -T Music ncmpcpp;;
Sound) foot -a sound -T Sound pulsemixer;;
esac
'')
-
(writeScriptBin "rofipower" ''
- #!/bin/sh
-
POWER=$(echo -e "Shutdown\nReboot\nLock\nSleep\nKill" | rofi -dmenu -i -p "Power")
-
case $POWER in
Shutdown) poweroff;;
Reboot) reboot;;
- Lock) swaylock;;
Sleep) systemctl suspend;;
Kill) pkill -9 $XDG_CURRENT_DESKTOP;;
esac
diff --git a/modules/home/wms/programs/swaylock/default.nix b/modules/home/wms/programs/swaylock/default.nix
index ca361fd9..33b18cfa 100644
--- a/modules/home/wms/programs/swaylock/default.nix
+++ b/modules/home/wms/programs/swaylock/default.nix
@@ -1,8 +1,8 @@
{ config, pkgs, ... }:
let
- default = "#${config.vars.colors.prime}FF";
- wrong = "#${config.vars.colors.split}FF";
- verifying = "#${config.vars.colors.accent}FF";
+ default = "#${config.look.colors.prime}FF";
+ wrong = "#${config.look.colors.split}FF";
+ verifying = "#${config.look.colors.accent}FF";
blank = "#00000000";
clear = "#FFFFFF22";
text = "#FFFFFFFF";
@@ -12,8 +12,8 @@ in {
package = pkgs.swaylock-effects;
settings = {
clock = true;
- image = ".wallpapers/lock.png";
- font = config.vars.fonts.main;
+ image = builtins.toString ./lock.png;
+ font = config.look.fonts.main;
font-size = 30;
timestr = "%I:%M%p";
datestr = "%a %b %d %Y";
diff --git a/modules/home/wms/programs/wallpapers/photos/lock.png b/modules/home/wms/programs/swaylock/lock.png
similarity index 100%
rename from modules/home/wms/programs/wallpapers/photos/lock.png
rename to modules/home/wms/programs/swaylock/lock.png
diff --git a/modules/home/wms/programs/wallpapers/default.nix b/modules/home/wms/programs/wallpapers/default.nix
deleted file mode 100644
index 9077d586..00000000
--- a/modules/home/wms/programs/wallpapers/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, lib, ... }:
-{
- imports = [ ./wpaperd ];
-
- config = lib.mkIf config.home.desktop.enable {
- home.file.".wallpapers".source = ./photos;
- };
-}
diff --git a/modules/home/wms/programs/wallpapers/wpaperd/default.nix b/modules/home/wms/programs/wallpapers/wpaperd/default.nix
deleted file mode 100644
index 98892d90..00000000
--- a/modules/home/wms/programs/wallpapers/wpaperd/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ config, ... }:
-{
- services.wpaperd = {
- enable = config.home.desktop.enable;
- settings = {
- default.mode = "center";
- any.path = ".wallpapers/1.png";
- "${config.vars.displays.tower2}".path = ".wallpapers/2.png";
- "${config.vars.displays.tower3}".path = ".wallpapers/3.png";
- };
- };
-}
diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix
index 1ddb8963..da9d4eff 100644
--- a/modules/home/wms/programs/waybar/default.nix
+++ b/modules/home/wms/programs/waybar/default.nix
@@ -1,244 +1,222 @@
{ config, lib, pkgs, ... }:
{
programs.waybar = let
- commonModules = {
- "sway/workspaces" = {
- format = "{name}";
- enable-bar-scroll = true;
- disable-scroll-wraparound = true;
- numeric-first = true;
- warp-on-scroll = false;
- };
+ workspaceModule = {
+ format = "{name}";
+ enable-bar-scroll = true;
+ disable-scroll-wraparound = true;
+ numeric-first = true;
+ warp-on-scroll = false;
+ };
- "sway/window" = {
- icon = true;
- icon-size = 15;
- all-outputs = true;
- tooltip = false;
+ windowModule = {
+ icon = true;
+ icon-size = 15;
+ all-outputs = true;
+ tooltip = false;
+ rewrite = {
+ "(.*) — LibreWolf" = " $1";
+ "LibreWolf" = " Firefox";
+ "(.*) - LibreWolf — Firefox" = " $1";
};
+ };
- "pulseaudio" = with pkgs; {
- format = "{icon} {volume}%";
- format-bluetooth = "{icon} {volume}%";
- format-muted = " muted";
- format-icons = {
- headphone = "";
- headset = "";
- default = [
- ""
- ""
- ];
- };
- on-click = "${wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
- on-click-middle = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%";
- on-click-right = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%";
- ignored-sinks = [ "Easy Effects Sink" ];
- };
-
- "mpris" = {
- player = "mpd";
- format = " {title}";
- format-paused = " {artist}";
- format-stopped = "";
- tooltip-format = lib.concatStrings [
- "{title} - {artist} - {album}\n"
- "{position}/{length}"
+ pulseModule = {
+ format = "{icon} {volume}%";
+ format-bluetooth = "{icon} {volume}%";
+ format-muted = " muted";
+ format-icons = {
+ headphone = " ";
+ headset = " ";
+ default = [
+ " "
+ " "
];
- interval = 2;
- max-length = 30;
};
+ on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
+ on-click-middle = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%";
+ on-click-right = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%";
+ ignored-sinks = [ "Easy Effects Sink" ];
+ };
- "custom/notifs" = with pkgs; {
- exec = pkgs.writeScript "notificationScript.sh" ''
- #!/bin/sh
+ # Monitoring
+ cpuModule = {
+ format = " {usage}%";
+ interval = 3;
+ };
- SED="${gnused}/bin/sed"
- MAKOCTL="${mako}/bin/makoctl"
+ ramModule = {
+ format = " {used}G";
+ tooltip = false;
+ interval = 3;
+ };
- # Extract the second line after "default"
- mode=$(echo "$($MAKOCTL mode)" | $SED -n '/default/{n;p}')
+ vramModule = {
+ exec = pkgs.writeScript "vramScript" ''
+ # Don't run the script if running on integrated graphics
+ gpu_driver=$(${pkgs.pciutils}/bin/lspci -k | grep -Eo "in use: (nvidia|amdgpu)" | awk '{print $3}')
- # Print the notification status with the tooltip
- if [[ "$mode" == "do-not-disturb" ]]; then
- printf '{"text":" Off","class":"disabled","tooltip":"Notifications Disabled."}'
+ if [ -n "$gpu_driver" ]; then
+ if [ "$gpu_driver" == "nvidia" ]; then
+ vram_usage_mb=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits)
+ temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits)
+
+ elif [ "$gpu_driver" == "amdgpu" ]; then
+ vram_usage_mb=$(echo "$(cat /sys/class/drm/card0/device/mem_info_vram_used || cat /sys/class/drm/card1/device/mem_info_vram_used) / 1024 / 1024" | bc)
+ temperature=$(${pkgs.lm_sensors}/bin/sensors | grep 'edge' | awk '{print $2}' | sed 's/[^0-9.-]//g')
+ fi
+
+ # Check if VRAM usage is under 1GB
+ if [ $vram_usage_mb -lt 1024 ]; then
+ vram_usage_display="$(echo $vram_usage_mb)M"
else
- printf '{"text":" On","tooltip":"Notifications Enabled."}';
+ # Convert MB to GiB
+ vram_usage_gib=$(bc <<< "scale=2; $vram_usage_mb / 1024")
+ vram_usage_display="$(echo $vram_usage_gib)G"
fi
- '';
- format = "{}";
- return-type = "json";
- interval = 2;
- on-click = "${mako}/bin/makoctl mode -t do-not-disturb";
- };
-
- "idle_inhibitor" = {
- format = "{icon}";
- format-icons = {
- activated = " On";
- deactivated = " Off";
- tooltip-format-activated = "Sleep inhibited.";
- tooltip-format-deactivated = "Sleep uninhibited.";
- };
- };
-
- "custom/weather" = {
- exec = "${pkgs.wttrbar}/bin/wttrbar --ampm";
- format = "{}°";
- tooltip = true;
- return-type = "json";
- interval = 3600;
- };
-
- "cpu" = {
- format = " {usage}%";
- interval = 3;
- };
-
- "memory" = {
- format = " {used}G";
- tooltip = false;
- interval = 3;
- };
-
- "custom/vram" = {
- exec = with pkgs; pkgs.writeScript "vramScript.sh" ''
- #!/bin/sh
-
- LSPCI="${pciutils}/bin/lspci"
- GREP="${gnugrep}/bin/grep"
- AWK="${gawk}/bin/awk"
- BC="${bc}/bin/bc"
- HEAD="${uutils-coreutils-noprefix}/bin/head"
- CAT="${uutils-coreutils-noprefix}/bin/cat"
- NVIDIA="/run/current-system/sw/bin/nvidia-smi"
-
- # Detect the active GPU driver
- gpu_driver="$($LSPCI -k | $GREP -Eo 'in use: (nvidia|amdgpu)' | $AWK '{print $3}')"
-
- # Exit if no supported GPU driver is in use
- if [[ -z "$gpu_driver" ]]; then
- exit 0
- fi
-
- # Get VRAM usage in MB
- if [[ "$gpu_driver" == "nvidia" ]]; then
- vram_usage_mb="$($NVIDIA --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)"
- elif [[ "$gpu_driver" == "amdgpu" ]]; then
- vram_bytes="$($CAT /sys/class/drm/card*/device/mem_info_vram_used 2>/dev/null | $HEAD -n1)"
- vram_usage_mb="$($BC <<< "$vram_bytes / 1024 / 1024")"
- fi
-
- # Format VRAM usage for display
- if [[ "$vram_usage_mb" -lt 1024 ]]; then
- vram_usage_display="''${vram_usage_mb}M"
- else
- vram_usage_gib="$($BC <<< "scale=2; $vram_usage_mb / 1024")"
- vram_usage_display="''${vram_usage_gib}G"
- fi
-
- # Output the VRAM usage
- echo "{\"text\": \" ''${vram_usage_display}\"}"
- '';
- format = "{}";
- return-type = "json";
- interval = 3;
- };
-
- "backlight" = {
- format = "{icon} {percent}%";
- format-icons = [
- ""
- ""
- ];
- tooltip = false;
- };
-
- "battery" = {
- interval = 60;
- states = {
- warning = 30;
- critical = 15;
- };
- format = "{icon} {capacity}%";
- format-icons = [
- ""
- ""
- ""
- ""
- ""
- ];
- };
-
- "clock" = {
- interval = 1;
- format = " {:%a %b %d %I:%M:%S%p}";
- tooltip-format = "{calendar}";
- };
-
- "sway/scratchpad" = {
- format = " {count}";
- show-empty = false;
- tooltip = true;
- tooltip-format = "{title}";
- };
-
- "privacy" = {
- icon-spacing = 5;
- icon-size = 15;
- };
-
- "gamemode" = {
- format = "{glyph}";
- hide-not-running = true;
- use-icon = true;
- icon-size = 19;
- icon-spacing = 0;
- tooltip = true;
- };
-
- "tray".spacing = 5;
-
- "bluetooth" = {
- format = "";
- format-disabled = "";
- format-no-controller = "";
- tooltip-format-on = "No devices connected.";
- tooltip-format-connected = lib.concatStrings [
- "{num_connections} connected\n"
- "{device_enumerate}"
- ];
- tooltip-format-enumerate-connected = "{device_alias}";
- tooltip-format-enumerate-connected-battery = "{device_alias} {device_battery_percentage}%";
- };
-
- "network" = {
- format-ethernet = "";
- format-wifi = "";
- format-disconnected = "";
- format-linked = "";
- tooltip-format-ethernet = lib.concatStrings [
- "{ipaddr}\n"
- "{ifname} "
- ];
- tooltip-format-wifi = lib.concatStrings [
- "{ipaddr}\n"
- "{essid} ({signalStrength}%)"
- ];
- tooltip-format-disconnected = "Disconnected";
+
+ # Print the VRAM usage and temperature
+ echo "{\"text\":\" $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}"
+ fi
+ '';
+ format = "{}";
+ return-type = "json";
+ interval = 3;
+ };
+
+ # Clocks
+ clockModule = {
+ interval = 1;
+ format = "{:%a %b %d %I:%M:%S%p}";
+ tooltip-format = "{calendar}";
+ };
+
+ # Misc
+ trayModule.spacing = 5;
+
+ networkModule = {
+ format-ethernet = "";
+ format-wifi = "";
+ format-disconnected = "";
+ format-linked = "";
+ tooltip-format-ethernet = lib.concatStrings [
+ "{ipaddr}\n"
+ "{ifname} "
+ ];
+ tooltip-format-wifi = lib.concatStrings [
+ "{ipaddr}\n"
+ "{essid} ({signalStrength}%)"
+ ];
+ tooltip-format-disconnected = "Disconnected";
+ };
+
+ bluetoothModule = {
+ format = "";
+ format-disabled = "";
+ format-no-controller = "";
+ tooltip-format-on = "No devices connected.";
+ tooltip-format-connected = lib.concatStrings [
+ "{num_connections} connected\n"
+ "{device_enumerate}"
+ ];
+ tooltip-format-enumerate-connected = "{device_alias}";
+ tooltip-format-enumerate-connected-battery = "{device_alias} {device_battery_percentage}%";
+ };
+
+ scratchpadModule = {
+ format = " {count}";
+ show-empty = false;
+ tooltip = true;
+ tooltip-format = "{title}";
+ };
+
+ gamemodeModule = {
+ format = "{glyph}";
+ hide-not-running = true;
+ use-icon = true;
+ icon-size = 19;
+ icon-spacing = 0;
+ tooltip = true;
+ };
+
+ privacyModule = {
+ icon-spacing = 5;
+ icon-size = 15;
+ };
+
+ mpdModule = {
+ format = " {title}";
+ format-paused = " {artist}";
+ format-stopped = "";
+ format-disconnected = "";
+ tooltip-format = "{artist} - {title}";
+ interval = 2;
+ max-length = 30;
+ on-click = "playerctl -p mpd play-pause";
+ };
+
+ notificationModule = {
+ exec = pkgs.writeScript "notificationScript" ''
+ # Extract the second line after "default"
+ mode=$(echo "$(makoctl mode)" | sed -n '/default/{n;p}')
+
+ # Print the notification status with the tooltip
+ if [[ "$mode" == "do-not-disturb" ]]; then
+ printf '{"text":" Off","class":"disabled","tooltip":"Notifications Disabled."}'
+ else
+ printf '{"text":" On","tooltip":"Notifications Enabled."}';
+ fi
+ '';
+ format = "{}";
+ return-type = "json";
+ interval = 2;
+ on-click = "makotoggle";
+ };
+
+ weatherModule = {
+ exec = "${pkgs.wttrbar}/bin/wttrbar --ampm";
+ format = "{}°";
+ tooltip = true;
+ return-type = "json";
+ interval = 3600;
+ };
+
+ # Laptop modules
+ backlightModule = {
+ format = "{icon} {percent}%";
+ format-icons = [
+ ""
+ ""
+ ];
+ tooltip = false;
+ };
+
+ batteryModule = {
+ interval = 60;
+ states = {
+ warning = 30;
+ critical = 15;
};
+ format = "{icon} {capacity}%";
+ format-icons = [
+ ""
+ ""
+ ""
+ ""
+ ""
+ ];
};
in {
enable = config.home.desktop.enable;
- systemd.enable = true;
settings = {
- displayPrimary = commonModules // {
+ displayPrimary = {
name = "bar1";
position = "top";
layer = "top";
output = [
- "!${config.vars.displays.tower2}"
- "!${config.vars.displays.tower3}"
- "!${config.vars.displays.intuos2}"
+ "!${config.displays.tower2}"
+ "!${config.displays.tower3}"
+ "!${config.displays.estradiol2}"
"*"
];
modules-left = [
@@ -247,10 +225,9 @@
];
modules-right = [
"pulseaudio"
- "mpris"
+ "mpd"
"custom/notifs"
- "idle_inhibitor"
- "custom/weather"
+ "custom/weather2"
"cpu"
"memory"
"custom/vram"
@@ -264,16 +241,33 @@
"bluetooth"
"network"
];
+ "sway/workspaces" = workspaceModule;
+ "sway/window" = windowModule;
+ "pulseaudio" = pulseModule;
+ "mpd" = mpdModule;
+ "custom/notifs" = notificationModule;
+ "custom/weather2" = weatherModule;
+ "cpu" = cpuModule;
+ "memory" = ramModule;
+ "custom/vram" = vramModule;
+ "backlight" = backlightModule;
+ "battery" = batteryModule;
+ "clock" = clockModule;
+ "sway/scratchpad" = scratchpadModule;
+ "privacy" = privacyModule;
+ "tray" = trayModule;
+ "bluetooth" = bluetoothModule;
+ "network" = networkModule;
};
- displaySecondary = commonModules // {
+ displaySecondary = {
name = "bar2";
position = "top";
layer = "top";
output = [
- config.vars.displays.tower2
- config.vars.displays.tower3
- config.vars.displays.intuos2
+ config.displays.tower2
+ config.displays.tower3
+ config.displays.estradiol2
];
modules-left = [
"sway/workspaces"
@@ -286,6 +280,15 @@
"custom/vram"
"clock"
];
+ "sway/workspaces" = workspaceModule;
+ "sway/window" = windowModule;
+ "pulseaudio" = pulseModule;
+ "mpd" = mpdModule;
+ "custom/notifs" = notificationModule;
+ "cpu" = cpuModule;
+ "memory" = ramModule;
+ "custom/vram" = vramModule;
+ "clock" = clockModule;
};
};
@@ -294,16 +297,29 @@
border: 0;
border-radius: 0;
min-height: 0;
+ font-family: ${config.look.fonts.main}, ${config.look.fonts.mono};
font-size: 15.5px;
- color: #${config.vars.colors.text};
+ color: #${config.look.colors.text};
+ }
+ #waybar {
+ background: #${config.look.colors.dark};
+ }
+ #workspaces {
+ padding: 0 6px 0 0;
+ }
+ #tray {
+ padding: 0 2px 0 5px;
+ }
+ #network {
+ padding: 0 10px 0 4px;
+ }
+ #network.disconnected,#bluetooth.off {
+ color: #424242;
+ }
+ #bluetooth {
+ margin: 0 6px 0 4px;
+ font-size: 13.4px;
}
-
- #waybar { background: #${config.vars.colors.dark}; }
- #network { padding: 0 6px 0 4px; }
- #gamemode, #scratchpad, #privacy, #tray, #bluetooth { margin: 0 2px 0 2px; }
- #pulseaudio, #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery, #clock { margin: 0 2px 0 4px; }
-
- #workspaces { padding: 0 6px 0 0; }
#workspaces button {
padding: 0 3px;
color: white;
@@ -311,30 +327,70 @@
min-width: 20px;
}
#workspaces button.visible, #workspaces button.active {
- border-bottom: 3px solid #${config.vars.colors.prime};
- background: #${config.vars.colors.mid};
+ border-bottom: 3px solid #${config.look.colors.prime};
+ background: #${config.look.colors.mid};
}
#workspaces button.urgent {
- border-bottom: 3px solid #${config.vars.colors.urgent};
+ border-bottom: 3px solid #${config.look.colors.urgent};
}
#workspaces button:hover {
box-shadow: none;
- background: #${config.vars.colors.light};
+ background: #${config.look.colors.light};
+ }
+ #scratchpad {
+ margin-left: 4px;
+ }
+ #privacy {
+ margin-left: 4px;
+ }
+ #cpu, #memory, #custom-vram, #mpd, #backlight, #battery, #custom-weather, #custom-weather2, #custom-notifs {
+ margin: 0 5px 0 2px;
+ }
+ #clock {
+ margin: 0 2px 0 2px;
+ }
+ #cpu {
+ border-bottom: 3px solid #f90000;
+ }
+ #memory {
+ border-bottom: 3px solid #4bffdc;
+ }
+ #custom-vram {
+ border-bottom: 3px solid #33FF00;
+ }
+ #mpd {
+ border-bottom: 3px solid #ffb066;
+ }
+ #mpd.paused {
+ color: #888;
+ }
+ #clock {
+ border-bottom: 3px solid #0a6cf5;
+ }
+ #backlight {
+ border-bottom: 3px solid #5ffca3;
+ }
+ #battery {
+ border-bottom: 3px solid #fcfc16;
+ }
+ #custom-weather {
+ border-bottom: 3px solid #3823C4;
+ }
+ #custom-weather2 {
+ border-bottom: 3px solid #c75bd3;
+ }
+ #custom-notifs {
+ border-bottom: 3px solid #3823C4;
+ }
+ #custom-notifs.disabled {
+ color: #888;
+ }
+ #pulseaudio {
+ margin-right: 5px;
+ }
+ #pulseaudio.muted {
+ color: #424242;
}
-
- #mpris { border-bottom: 3px solid #ffb066; }
- #custom-notifs { border-bottom: 3px solid #3823C4; }
- #idle_inhibitor { border-bottom: 3px solid #941efc; }
- #custom-weather { border-bottom: 3px solid #ea60e3; }
- #cpu { border-bottom: 3px solid #f90000; }
- #memory { border-bottom: 3px solid #4bffdc; }
- #custom-vram { border-bottom: 3px solid #33FF00; }
- #backlight { border-bottom: 3px solid #5ffca3; }
- #battery { border-bottom: 3px solid #fcfc16; }
- #clock { border-bottom: 3px solid #0a6cf5; }
-
- #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { color: #888; }
- #pulseaudio.muted, #network.disconnected, #bluetooth.off { color: #424242; }
'';
};
}
diff --git a/modules/home/wms/sway/autostart/default.nix b/modules/home/wms/sway/autostart/default.nix
index f0570187..ddb9303e 100644
--- a/modules/home/wms/sway/autostart/default.nix
+++ b/modules/home/wms/sway/autostart/default.nix
@@ -1,17 +1,24 @@
{ ... }:
{
- wayland.windowManager.sway.config.startup = [
- # Scratchpads
- { command = "foot -a btop -T Gotop btop"; }
- { command = "foot -a music -T Music ncmpcpp"; }
- { command = "foot -a sound -T Sound pulsemixer"; }
+ wayland.windowManager.sway.config = {
+ bars = [{ command = "waybar"; }];
- # Daemons and tray
- { command = "kanshictl reload"; always = true; }
- { command = "wayland-pipewire-idle-inhibit"; }
+ startup = [
+ # Scratchpads
+ { command = "foot -a btop -T Gotop btop"; }
+ { command = "foot -a music -T Music ncmpcpp"; }
+ { command = "foot -a sound -T Sound pulsemixer"; }
- # Foreground
- { command = "thunderbird"; }
- { command = "vesktop"; }
- ];
+ # Daemons and tray
+ {
+ command = "kanshictl reload";
+ always = true;
+ }
+ { command = "wayland-pipewire-idle-inhibit"; }
+
+ # Foreground
+ { command = "thunderbird"; }
+ { command = "vesktop"; }
+ ];
+ };
}
diff --git a/modules/home/wms/sway/extra/default.nix b/modules/home/wms/sway/extra/default.nix
index 2a879219..9a0ae172 100644
--- a/modules/home/wms/sway/extra/default.nix
+++ b/modules/home/wms/sway/extra/default.nix
@@ -2,5 +2,6 @@
{
wayland.windowManager.sway.extraConfig = ''
titlebar_padding 10 1
+ primary_selection disabled
'';
}
diff --git a/modules/home/wms/sway/hotkeys/default.nix b/modules/home/wms/sway/hotkeys/default.nix
index ffd9e6e2..f8bd83b4 100644
--- a/modules/home/wms/sway/hotkeys/default.nix
+++ b/modules/home/wms/sway/hotkeys/default.nix
@@ -8,11 +8,12 @@
in {
# Hotkeys
modifier = "${primeMod}";
- keybindings = with config.vars.ws; {
+ keybindings = {
## Launchers
- # Browser
- "${primeMod}+F1" = ''exec librewolf | notify-send "Browser"'';
+ # Browser profiles
+ "${primeMod}+F1" = ''exec librewolf -p Main --name MainBrowser | notify-send "Main Browser"'';
+ "${primeMod}+F2" = ''exec librewolf -p Alt --name AltBrowser | notify-send "Alternate Browser"'';
# Virtual machines
"${primeMod}+F4" = ''exec virt-manager | notify-send "Virtual Machines"'';
@@ -78,50 +79,50 @@
"${primeMod}+Shift+r" = ''reload'';
# Switch to workspaces
- "${primeMod}+grave" = ''workspace 0:${w0}'';
- "${primeMod}+1" = ''workspace 1:${w1}'';
- "${primeMod}+2" = ''workspace 2:${w2}'';
- "${primeMod}+3" = ''workspace 3:${w3}'';
- "${primeMod}+4" = ''workspace 4:${w4}'';
- "${primeMod}+5" = ''workspace 5:${w5}'';
- "${primeMod}+6" = ''workspace 6:${w6}'';
- "${primeMod}+7" = ''workspace 7:${w7}'';
- "${primeMod}+8" = ''workspace 8:${w8}'';
- "${primeMod}+9" = ''workspace 9:${w9}'';
+ "${primeMod}+grave" = ''workspace 0:${config.ws.w0}'';
+ "${primeMod}+1" = ''workspace 1:${config.ws.w1}'';
+ "${primeMod}+2" = ''workspace 2:${config.ws.w2}'';
+ "${primeMod}+3" = ''workspace 3:${config.ws.w3}'';
+ "${primeMod}+4" = ''workspace 4:${config.ws.w4}'';
+ "${primeMod}+5" = ''workspace 5:${config.ws.w5}'';
+ "${primeMod}+6" = ''workspace 6:${config.ws.w6}'';
+ "${primeMod}+7" = ''workspace 7:${config.ws.w7}'';
+ "${primeMod}+8" = ''workspace 8:${config.ws.w8}'';
+ "${primeMod}+9" = ''workspace 9:${config.ws.w9}'';
# Switch to alternate workspaces
- "${secMod}+F1" = ''workspace 11:${w1a}'';
- "${secMod}+F2" = ''workspace 22:${w2a}'';
- "${secMod}+F3" = ''workspace 33:${w3a}'';
- "${secMod}+F4" = ''workspace 44:${w4a}'';
- "${secMod}+F5" = ''workspace 55:${w5a}'';
- "${secMod}+F6" = ''workspace 66:${w6a}'';
- "${secMod}+F7" = ''workspace 77:${w7a}'';
- "${secMod}+F8" = ''workspace 88:${w8a}'';
- "${secMod}+F9" = ''workspace 99:${w9a}'';
+ "${secMod}+F1" = ''workspace 11:${config.ws.w1a}'';
+ "${secMod}+F2" = ''workspace 22:${config.ws.w2a}'';
+ "${secMod}+F3" = ''workspace 33:${config.ws.w3a}'';
+ "${secMod}+F4" = ''workspace 44:${config.ws.w4a}'';
+ "${secMod}+F5" = ''workspace 55:${config.ws.w5a}'';
+ "${secMod}+F6" = ''workspace 66:${config.ws.w6a}'';
+ "${secMod}+F7" = ''workspace 77:${config.ws.w7a}'';
+ "${secMod}+F8" = ''workspace 88:${config.ws.w8a}'';
+ "${secMod}+F9" = ''workspace 99:${config.ws.w9a}'';
# Move window to and focus workspace
- "${primeMod}+Shift+grave" = ''move container to workspace 0:${w0}; workspace 0:${w0}'';
- "${primeMod}+Shift+1" = ''move container to workspace 1:${w1}; workspace 1:${w1}'';
- "${primeMod}+Shift+2" = ''move container to workspace 2:${w2}; workspace 2:${w2}'';
- "${primeMod}+Shift+3" = ''move container to workspace 3:${w3}; workspace 3:${w3}'';
- "${primeMod}+Shift+4" = ''move container to workspace 4:${w4}; workspace 4:${w4}'';
- "${primeMod}+Shift+5" = ''move container to workspace 5:${w5}; workspace 5:${w5}'';
- "${primeMod}+Shift+6" = ''move container to workspace 6:${w6}; workspace 6:${w6}'';
- "${primeMod}+Shift+7" = ''move container to workspace 7:${w7}; workspace 7:${w7}'';
- "${primeMod}+Shift+8" = ''move container to workspace 8:${w8}; workspace 8:${w8}'';
- "${primeMod}+Shift+9" = ''move container to workspace 9:${w9}; workspace 9:${w9}'';
+ "${primeMod}+Shift+grave" = ''move container to workspace 0:${config.ws.w0}; workspace 0:${config.ws.w0}'';
+ "${primeMod}+Shift+1" = ''move container to workspace 1:${config.ws.w1}; workspace 1:${config.ws.w1}'';
+ "${primeMod}+Shift+2" = ''move container to workspace 2:${config.ws.w2}; workspace 2:${config.ws.w2}'';
+ "${primeMod}+Shift+3" = ''move container to workspace 3:${config.ws.w3}; workspace 3:${config.ws.w3}'';
+ "${primeMod}+Shift+4" = ''move container to workspace 4:${config.ws.w4}; workspace 4:${config.ws.w4}'';
+ "${primeMod}+Shift+5" = ''move container to workspace 5:${config.ws.w5}; workspace 5:${config.ws.w5}'';
+ "${primeMod}+Shift+6" = ''move container to workspace 6:${config.ws.w6}; workspace 6:${config.ws.w6}'';
+ "${primeMod}+Shift+7" = ''move container to workspace 7:${config.ws.w7}; workspace 7:${config.ws.w7}'';
+ "${primeMod}+Shift+8" = ''move container to workspace 8:${config.ws.w8}; workspace 8:${config.ws.w8}'';
+ "${primeMod}+Shift+9" = ''move container to workspace 9:${config.ws.w9}; workspace 9:${config.ws.w9}'';
# Move window to and focus alternate workspace
- "${secMod}+Shift+F1" = ''move container to workspace 11:${w1a}; workspace 11:${w1a}'';
- "${secMod}+Shift+F2" = ''move container to workspace 22:${w2a}; workspace 22:${w2a}'';
- "${secMod}+Shift+F3" = ''move container to workspace 33:${w3a}; workspace 33:${w3a}'';
- "${secMod}+Shift+F4" = ''move container to workspace 44:${w4a}; workspace 44:${w4a}'';
- "${secMod}+Shift+F5" = ''move container to workspace 55:${w5a}; workspace 55:${w5a}'';
- "${secMod}+Shift+F6" = ''move container to workspace 66:${w6a}; workspace 66:${w6a}'';
- "${secMod}+Shift+F7" = ''move container to workspace 77:${w7a}; workspace 77:${w7a}'';
- "${secMod}+Shift+F8" = ''move container to workspace 88:${w8a}; workspace 88:${w8a}'';
- "${secMod}+Shift+F9" = ''move container to workspace 99:${w9a}; workspace 99:${w9a}'';
+ "${secMod}+Shift+F1" = ''move container to workspace 11:${config.ws.w1a}; workspace 11:${config.ws.w1a}'';
+ "${secMod}+Shift+F2" = ''move container to workspace 22:${config.ws.w2a}; workspace 22:${config.ws.w2a}'';
+ "${secMod}+Shift+F3" = ''move container to workspace 33:${config.ws.w3a}; workspace 33:${config.ws.w3a}'';
+ "${secMod}+Shift+F4" = ''move container to workspace 44:${config.ws.w4a}; workspace 44:${config.ws.w4a}'';
+ "${secMod}+Shift+F5" = ''move container to workspace 55:${config.ws.w5a}; workspace 55:${config.ws.w5a}'';
+ "${secMod}+Shift+F6" = ''move container to workspace 66:${config.ws.w6a}; workspace 66:${config.ws.w6a}'';
+ "${secMod}+Shift+F7" = ''move container to workspace 77:${config.ws.w7a}; workspace 77:${config.ws.w7a}'';
+ "${secMod}+Shift+F8" = ''move container to workspace 88:${config.ws.w8a}; workspace 88:${config.ws.w8a}'';
+ "${secMod}+Shift+F9" = ''move container to workspace 99:${config.ws.w9a}; workspace 99:${config.ws.w9a}'';
# Change focused window
"${primeMod}+h" = ''focus left'';
@@ -147,7 +148,6 @@
# Change layout
"${primeMod}+f" = ''fullscreen toggle'';
- "${primeMod}+${secMod}+f" = ''fullscreen toggle global'';
"${primeMod}+w" = ''layout toggle split'';
"${primeMod}+v" = ''split v'';
"${primeMod}+e" = ''layout toggle tabbed stacking'';
diff --git a/modules/home/wms/sway/inputs/default.nix b/modules/home/wms/sway/inputs/default.nix
index 7b27d603..512ce6de 100644
--- a/modules/home/wms/sway/inputs/default.nix
+++ b/modules/home/wms/sway/inputs/default.nix
@@ -1,12 +1,13 @@
-{ config, ... }:
+{ ... }:
{
# HID devices
wayland.windowManager.sway.config.input = {
- "9610:4103:SINOWEALTH_Game_Mouse".pointer_accel = "-0.9";
- "9639:64097:Compx_2.4G_Receiver_Mouse".pointer_accel = "-0.82";
- "type:touch".map_to_output = ''"${config.vars.displays.intuos1}"'';
-
- # Wildcard, affects everything
+ "9610:4103:SINOWEALTH_Game_Mouse" = {
+ pointer_accel = "-0.9";
+ };
+ "9639:64097:Compx_2.4G_Receiver_Mouse" = {
+ pointer_accel = "-0.82";
+ };
"*" = {
accel_profile = "flat";
dwt = "disabled";
diff --git a/modules/home/wms/sway/outputs/default.nix b/modules/home/wms/sway/outputs/default.nix
index cd954b47..a287851f 100644
--- a/modules/home/wms/sway/outputs/default.nix
+++ b/modules/home/wms/sway/outputs/default.nix
@@ -2,47 +2,47 @@
{
# Monitors
wayland.windowManager.sway.config = {
- workspaceOutputAssign = with config.vars.ws; with config.vars.displays; let
+ workspaceOutputAssign = let
workspaces1 = [
- "0:${w0}"
- "1:${w1}"
- "2:${w2}"
- "3:${w3}"
- "11:${w1a}"
- "22:${w2a}"
- "33:${w3a}"
+ "0:${config.ws.w0}"
+ "1:${config.ws.w1}"
+ "2:${config.ws.w2}"
+ "3:${config.ws.w3}"
+ "11:${config.ws.w1a}"
+ "22:${config.ws.w2a}"
+ "33:${config.ws.w3a}"
];
workspaces2 = [
- "4:${w4}"
- "5:${w5}"
- "6:${w6}"
- "44:${w4a}"
- "55:${w5a}"
+ "4:${config.ws.w4}"
+ "5:${config.ws.w5}"
+ "6:${config.ws.w6}"
+ "44:${config.ws.w4a}"
+ "55:${config.ws.w5a}"
];
workspaces3 = [
- "7:${w7}"
- "8:${w8}"
- "9:${w9}"
- "77:${w7a}"
- "88:${w8a}"
+ "7:${config.ws.w7}"
+ "8:${config.ws.w8}"
+ "9:${config.ws.w9}"
+ "77:${config.ws.w7a}"
+ "88:${config.ws.w8a}"
];
workspaces4 = [
- "66:${w6a}"
- "99:${w9a}"
+ "66:${config.ws.w6a}"
+ "99:${config.ws.w9a}"
];
assign = output: workspaces: map (workspace: {
inherit workspace;
inherit output;
}) workspaces;
in
- (assign "${tower1}" workspaces1) ++
- (assign "${tower2}" workspaces2) ++
- (assign "${tower3}" workspaces3) ++
- (assign "${tower4}" workspaces4) ++
+ (assign "${config.displays.tower1}" workspaces1) ++
+ (assign "${config.displays.tower2}" workspaces2) ++
+ (assign "${config.displays.tower3}" workspaces3) ++
+ (assign "${config.displays.tower3}" workspaces4) ++
- (assign "${intuos2}" workspaces1) ++
- (assign "${intuos2}" workspaces2) ++
- (assign "${intuos1}" workspaces3) ++
- (assign "${intuos1}" workspaces4);
+ (assign "${config.displays.estradiol1}" workspaces1) ++
+ (assign "${config.displays.estradiol1}" workspaces2) ++
+ (assign "${config.displays.estradiol1}" workspaces4) ++
+ (assign "${config.displays.estradiol2}" workspaces3);
};
}
diff --git a/modules/home/wms/sway/rules/default.nix b/modules/home/wms/sway/rules/default.nix
index 8d213281..392dbe0f 100644
--- a/modules/home/wms/sway/rules/default.nix
+++ b/modules/home/wms/sway/rules/default.nix
@@ -1,7 +1,7 @@
{ config, ... }:
{
- wayland.windowManager.sway.config = with config.vars.ws; {
- defaultWorkspace = "workspace 1:${w1}";
+ wayland.windowManager.sway.config = {
+ defaultWorkspace = "workspace 1:${config.ws.w1}";
focus = {
mouseWarping = "container";
@@ -34,7 +34,7 @@
# Give apps that don't have them borders
{
criteria = { con_mark = "giveborder"; };
- command = ''border pixel ${config.vars.border.string}'';
+ command = ''border pixel ${config.look.border.string}'';
}
{
criteria = { class = "steam"; };
@@ -55,23 +55,23 @@
];
};
assigns = {
- # Browser
- "1:${w1}" = [{ app_id = "librewolf"; }];
+ # Browsers
+ "1:${config.ws.w1}" = [{ app_id = "MainBrowser"; }];
+ "11:${config.ws.w1a}" = [{ app_id = "AltBrowser"; }];
# Communication
- "7:${w7}" = [
+ "7:${config.ws.w7}" = [
{ app_id = "teams-for-linux"; }
{ app_id = "vesktop"; }
- { class = "vesktop"; }
];
- "9:${w9}" = [{ app_id = "thunderbird"; }];
+ "9:${config.ws.w9}" = [{ app_id = "thunderbird"; }];
# Etc
- "2:${w2}" = [
+ "2:${config.ws.w2}" = [
{ class = "steam"; }
{ app_id = "heroic"; }
];
- "44:${w4a}" = [{ app_id = "com.obsproject.Studio"; }];
+ "44:${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }];
};
};
}
diff --git a/modules/home/wms/sway/theme/default.nix b/modules/home/wms/sway/theme/default.nix
index 6c042bdb..a5eb5980 100644
--- a/modules/home/wms/sway/theme/default.nix
+++ b/modules/home/wms/sway/theme/default.nix
@@ -3,49 +3,47 @@
wayland.windowManager.sway.config = {
colors = {
focused = {
- border = "#${config.vars.colors.prime}";
- background = "#${config.vars.colors.prime}";
+ border = "#${config.look.colors.prime}";
+ background = "#${config.look.colors.prime}";
text = "#FFFFFF";
- indicator = "#${config.vars.colors.actSplit}";
- childBorder = "#${config.vars.colors.prime}";
+ indicator = "#${config.look.colors.actSplit}";
+ childBorder = "#${config.look.colors.prime}";
};
focusedInactive = {
- border = "#${config.vars.colors.accent}";
- background = "#${config.vars.colors.accent}";
- text = "#${config.vars.colors.text}";
- indicator = "#${config.vars.colors.split}";
- childBorder = "#${config.vars.colors.accent}";
+ border = "#${config.look.colors.accent}";
+ background = "#${config.look.colors.accent}";
+ text = "#${config.look.colors.text}";
+ indicator = "#${config.look.colors.split}";
+ childBorder = "#${config.look.colors.accent}";
};
unfocused = {
- border = "#${config.vars.colors.dark}";
- background = "#${config.vars.colors.dark}";
- text = "#${config.vars.colors.text}";
- indicator = "#${config.vars.colors.split}";
- childBorder = "#${config.vars.colors.split}";
+ border = "#${config.look.colors.dark}";
+ background = "#${config.look.colors.dark}";
+ text = "#${config.look.colors.text}";
+ indicator = "#${config.look.colors.split}";
+ childBorder = "#${config.look.colors.split}";
};
urgent = {
- border = "#${config.vars.colors.urgent}";
- background = "#${config.vars.colors.urgent}";
- text = "#${config.vars.colors.text}";
- indicator = "#${config.vars.colors.urgent}";
- childBorder = "#${config.vars.colors.urgent}";
+ border = "#${config.look.colors.urgent}";
+ background = "#${config.look.colors.urgent}";
+ text = "#${config.look.colors.text}";
+ indicator = "#${config.look.colors.urgent}";
+ childBorder = "#${config.look.colors.urgent}";
};
};
- bars = [ ];
-
fonts = {
- names = [ config.vars.fonts.main ];
+ names = [ config.look.fonts.main ];
size = 10.5;
};
window = {
- border = config.vars.border.int;
+ border = config.look.border.int;
hideEdgeBorders = "smart";
};
floating = {
- border = config.vars.border.int;
+ border = config.look.border.int;
titlebar = false;
};
@@ -53,5 +51,14 @@
inner = 5;
smartGaps = true;
};
+
+ output = {
+ "*".bg = "${builtins.toString ./wallpapers/1.png} fill";
+
+ "${config.displays.tower2}".bg = "${builtins.toString ./wallpapers/2.png} fill";
+ "${config.displays.tower3}".bg = "${builtins.toString ./wallpapers/3.png} fill";
+
+ "${config.displays.estradiol2}".bg = "${builtins.toString ./wallpapers/2.png} fill";
+ };
};
}
diff --git a/modules/home/wms/programs/wallpapers/photos/1.png b/modules/home/wms/sway/theme/wallpapers/1.png
similarity index 100%
rename from modules/home/wms/programs/wallpapers/photos/1.png
rename to modules/home/wms/sway/theme/wallpapers/1.png
diff --git a/modules/home/wms/programs/wallpapers/photos/2.png b/modules/home/wms/sway/theme/wallpapers/2.png
similarity index 100%
rename from modules/home/wms/programs/wallpapers/photos/2.png
rename to modules/home/wms/sway/theme/wallpapers/2.png
diff --git a/modules/home/wms/programs/wallpapers/photos/3.png b/modules/home/wms/sway/theme/wallpapers/3.png
similarity index 100%
rename from modules/home/wms/programs/wallpapers/photos/3.png
rename to modules/home/wms/sway/theme/wallpapers/3.png
diff --git a/modules/system/default.nix b/modules/system/default.nix
index 6040e075..4d9fa244 100644
--- a/modules/system/default.nix
+++ b/modules/system/default.nix
@@ -1,4 +1,4 @@
-{ config, name, ... }:
+{ lib, ... }:
{
imports = [
./devices
@@ -7,8 +7,10 @@
./services
./settings
./users
- ./variables
];
- networking.hostName = name;
+ options.system = with lib; {
+ desktop.enable = mkEnableOption "Desktop apps and services";
+ server.enable = mkEnableOption "Server apps and services";
+ };
}
diff --git a/modules/system/devices/audio/default.nix b/modules/system/devices/audio/default.nix
index 4d66e614..08950259 100644
--- a/modules/system/devices/audio/default.nix
+++ b/modules/system/devices/audio/default.nix
@@ -1,13 +1,13 @@
{ config, ... }:
{
services.pipewire = {
- enable = builtins.elem "pc" config.system.nixos.tags;
+ enable = config.system.desktop.enable;
+ wireplumber.extraConfig."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
#jack.enable = true;
- wireplumber.extraConfig."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false;
};
}
diff --git a/modules/system/devices/bluetooth/default.nix b/modules/system/devices/bluetooth/default.nix
index e735bf31..b6885d45 100644
--- a/modules/system/devices/bluetooth/default.nix
+++ b/modules/system/devices/bluetooth/default.nix
@@ -1,6 +1,6 @@
-{ config, lib, ... }:
+{ config, lib, pkgs, ... }:
{
- config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) {
+ config = lib.mkIf config.system.desktop.enable {
hardware.bluetooth = {
enable = true;
settings = {
@@ -8,7 +8,9 @@
Policy.AutoEnable = "true";
};
};
-
- environment.persistence."/persist".directories = [ "/var/lib/bluetooth" ];
+ environment = {
+ systemPackages = with pkgs; [ bluetui ];
+ persistence."/persist".directories = [ "/var/lib/bluetooth" ];
+ };
};
}
diff --git a/modules/system/devices/boot/default.nix b/modules/system/devices/boot/default.nix
index 9a139f45..15adb99c 100644
--- a/modules/system/devices/boot/default.nix
+++ b/modules/system/devices/boot/default.nix
@@ -1,16 +1,19 @@
-{ lib, pkgs, ... }:
+{ ... }:
{
imports = [
+ ./grub
./lanzaboote
- ./limine
./plymouth
./services
+ ./systemd
];
boot = {
+ kernelParams = [ "nouveau.config=NvGspRm=1" ];
blacklistedKernelModules = [ "pcspkr" ];
- kernel.sysctl."vm.max_map_count" = 2147483642;
- kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
- loader.systemd-boot.editor = false;
+ kernel.sysctl = {
+ "vm.max_map_count" = 2147483642;
+ "kernel.sysrq" = 1;
+ };
};
}
diff --git a/modules/system/devices/boot/grub/default.nix b/modules/system/devices/boot/grub/default.nix
new file mode 100644
index 00000000..99105e9c
--- /dev/null
+++ b/modules/system/devices/boot/grub/default.nix
@@ -0,0 +1,8 @@
+{ lib, ... }:
+{
+ boot.loader.grub = {
+ enable = lib.mkDefault false;
+ efiSupport = true;
+ efiInstallAsRemovable = true;
+ };
+}
diff --git a/modules/system/devices/boot/lanzaboote/default.nix b/modules/system/devices/boot/lanzaboote/default.nix
index 796a3a40..b3eb4940 100644
--- a/modules/system/devices/boot/lanzaboote/default.nix
+++ b/modules/system/devices/boot/lanzaboote/default.nix
@@ -1,5 +1,7 @@
-{ config, pkgs, ... }:
+{ config, pkgs, lanzaboote, ... }:
{
+ imports = [ lanzaboote.nixosModules.lanzaboote ];
+
boot.lanzaboote.pkiBundle = "/etc/secureboot";
environment = {
diff --git a/modules/system/devices/boot/limine/default.nix b/modules/system/devices/boot/limine/default.nix
deleted file mode 100644
index 20024f19..00000000
--- a/modules/system/devices/boot/limine/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, pkgs, name, ... }:
-{
- boot.loader.limine = {
- biosSupport = !pkgs.stdenv.hostPlatform.isAarch64;
- efiInstallAsRemovable = true;
- efiSupport = true;
- };
-}
diff --git a/modules/system/devices/boot/plymouth/default.nix b/modules/system/devices/boot/plymouth/default.nix
index 1586477a..96773c96 100644
--- a/modules/system/devices/boot/plymouth/default.nix
+++ b/modules/system/devices/boot/plymouth/default.nix
@@ -1,14 +1,16 @@
{ config, lib, ... }:
{
config.boot = lib.mkIf config.boot.plymouth.enable {
- consoleLogLevel = 0;
+ loader.timeout = lib.mkForce 0;
+ consoleLogLevel = lib.mkForce 0;
initrd.verbose = false;
kernelParams = [
- "loglevel=3"
"quiet"
+ "splash"
+ "boot.shell_on_fail"
+ "loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
- "splash"
"udev.log_priority=3"
];
};
diff --git a/modules/system/devices/boot/services/root-reset/default.nix b/modules/system/devices/boot/services/root-reset/default.nix
index 632066ed..44d2a1b7 100644
--- a/modules/system/devices/boot/services/root-reset/default.nix
+++ b/modules/system/devices/boot/services/root-reset/default.nix
@@ -1,4 +1,4 @@
-{ config, name, ... }:
+{ config, ... }:
{
boot.initrd.systemd.services.root-reset = {
enable = config.environment.persistence."/persist".enable;
@@ -10,7 +10,7 @@
serviceConfig.Type = "oneshot";
script = ''
mkdir -p /mnt
- mount -t btrfs /dev/${name}/root /mnt
+ mount -t btrfs /dev/${config.networking.hostName}/root /mnt
if [[ -e /mnt/prev ]]; then
btrfs subvolume delete /mnt/prev
diff --git a/modules/system/devices/boot/systemd/default.nix b/modules/system/devices/boot/systemd/default.nix
new file mode 100644
index 00000000..bc13baff
--- /dev/null
+++ b/modules/system/devices/boot/systemd/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ boot.loader.systemd-boot = {
+ editor = false;
+ graceful = true;
+ };
+}
diff --git a/modules/system/devices/default.nix b/modules/system/devices/default.nix
index a99c9a26..0ccbcf4d 100644
--- a/modules/system/devices/default.nix
+++ b/modules/system/devices/default.nix
@@ -7,7 +7,6 @@
./disks
./networking
./printing
- ./tlp
./udev
./video
];
diff --git a/modules/system/devices/disks/filesystems/default.nix b/modules/system/devices/disks/filesystems/default.nix
index 20d77e04..8a6e5943 100644
--- a/modules/system/devices/disks/filesystems/default.nix
+++ b/modules/system/devices/disks/filesystems/default.nix
@@ -2,22 +2,17 @@
{
boot = {
supportedFilesystems = {
- ntfs = builtins.elem "pc" config.system.nixos.tags;
- zfs = builtins.elem "server" config.system.nixos.tags;
+ ntfs = config.system.desktop.enable;
+ zfs = config.system.server.enable;
};
swraid = {
- enable = builtins.elem "server" config.system.nixos.tags;
+ enable = config.system.server.enable;
mdadmConf = "MAILADDR contact@nixfox.ca";
};
};
- services = {
- btrfs.autoScrub = {
- enable = (config.fileSystems."/".fsType == "btrfs");
- interval = "weekly";
- };
+ services = lib.mkIf config.environment.persistence."/persist".enable {
+ btrfs.autoScrub.enable = true;
fstrim.enable = true;
};
-
- programs.fuse.userAllowOther = true;
}
diff --git a/modules/system/devices/disks/impermanence/default.nix b/modules/system/devices/disks/impermanence/default.nix
index 8f6d1794..9c555679 100644
--- a/modules/system/devices/disks/impermanence/default.nix
+++ b/modules/system/devices/disks/impermanence/default.nix
@@ -1,17 +1,12 @@
-{ ... }:
+{ impermanence, ... }:
{
+ imports = [ impermanence.nixosModules.impermanence ];
+
environment.persistence."/persist" = {
hideMounts = true;
directories = [
"/storage"
- {
- directory = "/var/lib/nixos";
- mode = "0700";
- }
- {
- directory = "/var/lib/nixos-containers";
- mode = "0700";
- }
+ "/var/lib/nixos"
];
files = [ "/etc/machine-id" ];
};
diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix
index 6046a291..8e6944f9 100644
--- a/modules/system/devices/networking/default.nix
+++ b/modules/system/devices/networking/default.nix
@@ -1,9 +1,6 @@
{ config, ... }:
{
imports = [
- ./hosts
- ./mounts
- ./mycelium
./nameservers
./wireless
];
@@ -19,9 +16,4 @@
enable = config.networking.useNetworkd;
dnsovertls = "true";
};
-
- systemd = {
- services.NetworkManager-wait-online.enable = false;
- network.wait-online.enable = false;
- };
}
diff --git a/modules/system/devices/networking/hosts/default.nix b/modules/system/devices/networking/hosts/default.nix
deleted file mode 100644
index c2f38678..00000000
--- a/modules/system/devices/networking/hosts/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ config, lib, nodes, ... }:
-{
- networking.hosts = with nodes; {
- # PCs
- "${tower.config.deployment.targetHost}" = [ "tower" ];
- "${hidden.config.deployment.targetHost}" = [ "hidden" ];
- "${intuos.config.deployment.targetHost}" = [ "intuos" ];
- "${jupiter.config.deployment.targetHost}" = [ "jupiter" ];
- "${flight.config.deployment.targetHost}" = [ "flight" ];
-
- # Servers
- "${midas.config.deployment.targetHost}" = [ "midas" ];
- "${kitty.config.deployment.targetHost}" = [ "kitty" ];
- "${detritus.config.deployment.targetHost}" = [ "detritus" ];
- "${prophet.config.deployment.targetHost}" = [ "prophet" ];
- };
-}
diff --git a/modules/system/devices/networking/mounts/default.nix b/modules/system/devices/networking/mounts/default.nix
deleted file mode 100644
index b8e7913a..00000000
--- a/modules/system/devices/networking/mounts/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ config, lib, nodes, ... }:
-{
- fileSystems = let
- common = {
- fsType = "nfs";
- options = [
- "noatime"
- "noauto"
- "soft"
- "x-systemd.automount"
- ];
- };
- in with nodes; {
- "midas" = common // {
- device = "midas:/storage";
- mountPoint = "/network/Midas";
- };
- "kitty" = common // {
- device = "kitty:/storage";
- mountPoint = "/network/Kitty";
- };
- "detritus" = common // {
- device = "detritus:/storage";
- mountPoint = "/network/Detritus";
- };
- "prophet" = common // {
- device = "prophet:/storage";
- mountPoint = "/network/Prophet";
- };
- };
-}
diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix
deleted file mode 100644
index 72f637f8..00000000
--- a/modules/system/devices/networking/mycelium/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ ... }:
-{
- services.mycelium = {
- enable = true;
- openFirewall = true;
- peers = [
- "quic://99.247.177.43:9651"
- "quic://174.119.246.206:9651"
- "quic://150.230.26.224:9651"
- ];
- };
-
- environment.persistence."/persist".directories = [ { directory = "/var/lib/private/mycelium"; mode = "0700"; } ];
-}
diff --git a/modules/system/devices/networking/wireless/default.nix b/modules/system/devices/networking/wireless/default.nix
index eab13bb7..2bddfeef 100644
--- a/modules/system/devices/networking/wireless/default.nix
+++ b/modules/system/devices/networking/wireless/default.nix
@@ -1,7 +1,7 @@
-{ ... }:
+{ config, ... }:
{
networking.wireless = {
- enable = true;
+ enable = config.system.desktop.enable;
userControlled.enable = true;
};
}
diff --git a/modules/system/devices/printing/default.nix b/modules/system/devices/printing/default.nix
index a57dbaff..8ea5eed7 100644
--- a/modules/system/devices/printing/default.nix
+++ b/modules/system/devices/printing/default.nix
@@ -2,7 +2,7 @@
{
services = {
printing = {
- enable = builtins.elem "pc" config.system.nixos.tags;
+ enable = config.system.desktop.enable;
drivers = with pkgs; [ hplip ];
};
avahi = {
diff --git a/modules/system/devices/tlp/default.nix b/modules/system/devices/tlp/default.nix
deleted file mode 100644
index 694db2be..00000000
--- a/modules/system/devices/tlp/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ config, ... }:
-{
- services.tlp = {
- enable = true;
- settings = let
- leastBat = 80;
- maxBat = 85;
- in {
- # Stop battery charging after threshold
- START_CHARGE_THRESH_BAT0 = leastBat;
- STOP_CHARGE_THRESH_BAT0 = maxBat;
- START_CHARGE_THRESH_BAT1 = leastBat;
- STOP_CHARGE_THRESH_BAT1 = maxBat;
-
- # Change CPU energy/performance policy to power
- CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
- CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
-
- # Enable the platform profile low-power
- PLATFORM_PROFILE_ON_AC = "performance";
- PLATFORM_PROFILE_ON_BAT = "low-power";
-
- # Disable turbo boost
- CPU_BOOST_ON_AC = 1;
- CPU_BOOST_ON_BAT = 0;
-
- CPU_HWP_DYN_BOOST_ON_AC = 1;
- CPU_HWP_DYN_BOOST_ON_BAT = 0;
- };
- };
-}
diff --git a/modules/system/devices/udev/default.nix b/modules/system/devices/udev/default.nix
index 728dba1e..37191c01 100644
--- a/modules/system/devices/udev/default.nix
+++ b/modules/system/devices/udev/default.nix
@@ -1,7 +1,6 @@
-{ pkgs, ... }:
+{ config, lib, pkgs, ... }:
{
- services.udev.packages = with pkgs; [
- android-udev-rules
+ services.udev.packages = with pkgs; lib.mkIf config.system.desktop.enable [
game-devices-udev-rules
];
}
diff --git a/modules/system/devices/video/amd/default.nix b/modules/system/devices/video/amd/default.nix
deleted file mode 100644
index 8d349fec..00000000
--- a/modules/system/devices/video/amd/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ ... }:
-{
- boot.kernelParams = [ "amd_pstate=active" ];
-
- hardware.amdgpu.legacySupport.enable = true;
-}
diff --git a/modules/system/devices/video/default.nix b/modules/system/devices/video/default.nix
index d4d981ae..de825e6f 100644
--- a/modules/system/devices/video/default.nix
+++ b/modules/system/devices/video/default.nix
@@ -1,12 +1,9 @@
{ config, pkgs, ... }:
{
- imports = [
- ./amd
- ./nvidia
- ];
+ imports = [ ./nvidia ];
hardware.graphics = {
- enable = builtins.elem "pc" config.system.nixos.tags;
+ enable = config.system.desktop.enable;
enable32Bit = if config.nixpkgs.hostPlatform.linuxArch == "x86_64" then true else false;
extraPackages = with pkgs; [
vulkan-loader
diff --git a/modules/system/devices/video/nvidia/default.nix b/modules/system/devices/video/nvidia/default.nix
index ebc7cd42..f9d10a1c 100644
--- a/modules/system/devices/video/nvidia/default.nix
+++ b/modules/system/devices/video/nvidia/default.nix
@@ -1,23 +1,20 @@
{ config, lib, ... }:
{
- boot.kernelParams = [
- "nouveau.config=NvGspRm=1" # Use high power mode for Nouveau
- "nvidia_drm.fbdev=1" # Fix framebuffer
- ];
+ options.system.nvidia.enable = lib.mkEnableOption "Nvidia graphic drivers";
- hardware.nvidia = {
- modesetting.enable = true;
- nvidiaSettings = false;
- open = if lib.versionOlder config.hardware.nvidia.package.version "560" then false else true;
- powerManagement.enable = config.hardware.nvidia.open;
- };
+ config = lib.mkIf config.system.nvidia.enable {
+ hardware.nvidia = {
+ modesetting.enable = true;
+ nvidiaSettings = false;
+ open = true;
+ };
- nixpkgs = {
- allowUnfreePackages = [ "nvidia-x11" ];
- config.nvidia.acceptLicense = true;
- };
+ boot.kernelParams = [ "nvidia_drm.fbdev=1" ]; # Framebuffer fixes TTY access
- specialisation = lib.mkIf (lib.elem "nvidia" config.services.xserver.videoDrivers) {
- nouveau.configuration.config.services.xserver.videoDrivers = lib.mkForce [ "nouveau" ];
+ services.xserver.videoDrivers = [ "nvidia" ];
+
+ nixpkgs.allowUnfreePackages = [ "nvidia-x11" ];
+
+ specialisation.nouveau.configuration.config.system.nvidia.enable = lib.mkForce false;
};
}
diff --git a/modules/system/programs/desktops/default.nix b/modules/system/programs/desktops/default.nix
index 39b1ab5c..d693bd1b 100644
--- a/modules/system/programs/desktops/default.nix
+++ b/modules/system/programs/desktops/default.nix
@@ -1,7 +1,9 @@
{ config, lib, ... }:
{
- config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) {
+ config = lib.mkIf config.system.desktop.enable {
programs.sway.enable = true;
+
+ services.dbus.enable = true;
security.pam.services.swaylock = {};
};
}
diff --git a/modules/system/programs/gaming/default.nix b/modules/system/programs/gaming/default.nix
index 44949786..e9a4ae97 100644
--- a/modules/system/programs/gaming/default.nix
+++ b/modules/system/programs/gaming/default.nix
@@ -1,14 +1,7 @@
{ config, ... }:
{
programs.gamemode = {
- enable = builtins.elem "pc" config.system.nixos.tags;
- settings = {
- general.renice = 10;
- gpu = {
- amd_performance_level = "high";
- apply_gpu_optimisations = "accept-responsibility";
- gpu_device = 0;
- };
- };
+ enable = config.system.desktop.enable;
+ settings.general.renice = 10;
};
}
diff --git a/modules/system/programs/home-manager/default.nix b/modules/system/programs/home-manager/default.nix
index b72752ef..d7e2ce31 100644
--- a/modules/system/programs/home-manager/default.nix
+++ b/modules/system/programs/home-manager/default.nix
@@ -1,5 +1,7 @@
-{ stable, unstable, blender, impermanence, nur, ... }:
+{ hm, stable, unstable, blender, impermanence, nur, ... }:
{
+ imports = [ hm.nixosModules.home-manager ];
+
home-manager = {
useUserPackages = true;
backupFileExtension = "bak";
diff --git a/modules/system/programs/udevil/default.nix b/modules/system/programs/udevil/default.nix
index d5dac7fb..604943ab 100644
--- a/modules/system/programs/udevil/default.nix
+++ b/modules/system/programs/udevil/default.nix
@@ -1,4 +1,4 @@
-{ ... }:
+{ config, ... }:
{
- programs.udevil.enable = true;
+ programs.udevil.enable = config.system.desktop.enable;
}
diff --git a/modules/system/secrets/default.nix b/modules/system/secrets/default.nix
index 0ba12e4d..61e1b921 100644
Binary files a/modules/system/secrets/default.nix and b/modules/system/secrets/default.nix differ
diff --git a/modules/system/secrets/networks/default.nix b/modules/system/secrets/networks/default.nix
index 23f458ad..69744caa 100644
Binary files a/modules/system/secrets/networks/default.nix and b/modules/system/secrets/networks/default.nix differ
diff --git a/modules/system/services/general/default.nix b/modules/system/services/general/default.nix
index 1fbfcf57..5b57ebba 100644
--- a/modules/system/services/general/default.nix
+++ b/modules/system/services/general/default.nix
@@ -4,9 +4,10 @@
./displaymanager
./keyd
./libvirtd
+ ./portals
./snowflake
./ssh
+ ./tlp
./userborn
- ./vmware
];
}
diff --git a/modules/system/services/general/displaymanager/default.nix b/modules/system/services/general/displaymanager/default.nix
index c1cf9e25..585e7f35 100644
--- a/modules/system/services/general/displaymanager/default.nix
+++ b/modules/system/services/general/displaymanager/default.nix
@@ -1,6 +1,6 @@
{ config, lib, pkgs, ... }:
{
- config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) {
+ config = lib.mkIf config.system.desktop.enable {
services.greetd = {
enable = true;
settings.default_session.command = lib.mkDefault (lib.strings.concatStringsSep " " [
diff --git a/modules/system/services/general/libvirtd/default.nix b/modules/system/services/general/libvirtd/default.nix
index 0ff033dc..8cb556dd 100644
--- a/modules/system/services/general/libvirtd/default.nix
+++ b/modules/system/services/general/libvirtd/default.nix
@@ -14,16 +14,13 @@
};
};
- # Isolate devices into more IOMMU groups
- boot.kernelParams = [
- "pcie_acs_override=downstream,multifunction"
- "pci=routeirq"
+ programs.virt-manager.enable = true;
+
+ networking.firewall.trustedInterfaces = [
+ "virbr0"
+ "virbr1"
];
- # Enable the gui manager
- programs.virt-manager.enable = builtins.elem "pc" config.system.nixos.tags;
-
- # Allow looking glass to be accessed by users
systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 - libvirtd -" ];
environment.persistence."/persist".directories = [ "/var/lib/libvirt" ];
diff --git a/modules/system/services/general/portals/default.nix b/modules/system/services/general/portals/default.nix
new file mode 100644
index 00000000..4bdecd68
--- /dev/null
+++ b/modules/system/services/general/portals/default.nix
@@ -0,0 +1,7 @@
+{ config, lib, pkgs, ... }:
+{
+ xdg.portal.extraPortals = with pkgs; lib.mkIf config.system.desktop.enable [
+ xdg-desktop-portal-gnome
+ xdg-desktop-portal-wlr
+ ];
+}
diff --git a/modules/system/services/general/ssh/default.nix b/modules/system/services/general/ssh/default.nix
index 3616641c..7169d070 100644
--- a/modules/system/services/general/ssh/default.nix
+++ b/modules/system/services/general/ssh/default.nix
@@ -1,28 +1,17 @@
-{ ... }:
+{ lib, ... }:
{
imports = [ ./fail2ban ];
services.openssh = {
enable = true;
settings = {
+ AllowGroups = [ "users" ];
AuthenticationMethods = "publickey";
PermitEmptyPasswords = true;
PrintLastLog = "no";
};
};
- programs.ssh = {
- startAgent = true;
-
- # Don't host prompt for servers
- knownHosts = {
- midas.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFcFMvrx9/iUZ1mEubf+QF1i3LNTxFhaU/1zFSjdo0kK";
- kitty.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrGmsya5DXKuXO6jNjUlrYHqk49KLzxM/60GXtLRLrL";
- detritus.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDPD9m/rUjb88C4Kin2YhMrMVigu5IEf20FzwfAvz8SI";
- prophet.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICrp3Y/X2BRUENx+0GMTmB1VDA6SiwkGgdJMHSdMMepM";
- };
- };
-
security.pam.services.sshd.allowNullPassword = true;
environment.persistence."/persist".files = [
diff --git a/modules/system/services/general/ssh/fail2ban/default.nix b/modules/system/services/general/ssh/fail2ban/default.nix
index acc00f8c..15f4349d 100644
--- a/modules/system/services/general/ssh/fail2ban/default.nix
+++ b/modules/system/services/general/ssh/fail2ban/default.nix
@@ -4,6 +4,7 @@
enable = true;
maxretry = 5;
bantime = "10m";
+ ignoreIP = [ "11.0.0.0/8" ];
};
environment.persistence."/persist".directories = [ "/var/lib/fail2ban" ];
diff --git a/modules/system/services/general/tlp/default.nix b/modules/system/services/general/tlp/default.nix
new file mode 100644
index 00000000..4b030f55
--- /dev/null
+++ b/modules/system/services/general/tlp/default.nix
@@ -0,0 +1,4 @@
+{ config, ... }:
+{
+ services.tlp.enable = config.system.desktop.enable;
+}
diff --git a/modules/system/services/general/vmware/default.nix b/modules/system/services/general/vmware/default.nix
deleted file mode 100644
index e7541157..00000000
--- a/modules/system/services/general/vmware/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ config, lib, pkgs, ... }:
-{
- config = lib.mkIf config.virtualisation.vmware.host.enable {
- virtualisation.vmware.host.extraConfig = ''
- mks.gl.allowUnsupportedDrivers = "TRUE"
- mks.vk.allowUnsupportedDevices = "TRUE"
- '';
-
- nixpkgs.allowUnfreePackages = [ "vmware-workstation" ];
- };
-}
diff --git a/modules/system/services/server/cfdyndns/default.nix b/modules/system/services/server/cfdyndns/default.nix
index 922c774b..16760fe1 100644
--- a/modules/system/services/server/cfdyndns/default.nix
+++ b/modules/system/services/server/cfdyndns/default.nix
@@ -1,7 +1,4 @@
-{ config, lib, ... }:
+{ config, pkgs, ... }:
{
- config = lib.mkIf config.services.cloudflare-dyndns.enable {
- services.cloudflare-dyndns.apiTokenFile = "/var/lib/private/cloudflare-dyndns/key";
- environment.persistence."/persist".directories = [ "/var/lib/private/cloudflare-dyndns" ];
- };
+ services.cloudflare-dyndns.apiTokenFile = "${pkgs.writeText "cloudflareapikey" config.secrets.flareApiKey}";
}
diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix
index 59510325..6e2a762f 100644
--- a/modules/system/services/server/default.nix
+++ b/modules/system/services/server/default.nix
@@ -3,10 +3,9 @@
imports = [
./cfdyndns
./forgejo
- ./hedgedoc
./icecast
- ./incus
./jellyfin
+ ./lemmy
./mailserver
./mastodon
./matrix
diff --git a/modules/system/services/server/forgejo/default.nix b/modules/system/services/server/forgejo/default.nix
index 34b29076..37ce0176 100644
--- a/modules/system/services/server/forgejo/default.nix
+++ b/modules/system/services/server/forgejo/default.nix
@@ -8,17 +8,17 @@
lfs.enable = true;
settings = {
server = {
- DOMAIN = "git.${config.vars.primeDomain}";
- ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}:443";
+ DOMAIN = "git.nixfox.ca";
+ ROOT_URL = "https://git.nixfox.ca:443";
HTTP_PORT = 3110;
SSH_PORT = 2299;
START_SSH_SERVER = true;
};
mailer = {
ENABLED = true;
- SMTP_ADDR = "mx.${config.vars.mailDomain}";
- FROM = "NixFox Git ";
- USER = "noreply@${config.vars.primeDomain}";
+ SMTP_ADDR = "mx.nixfox.ca";
+ FROM = "NixFox Git ";
+ USER = "noreply@nixfox.ca";
PASSWD = config.secrets.mailPass.nixfoxNoReply;
PROTOCOL = "smtps";
};
@@ -32,7 +32,7 @@
networking.firewall.allowedTCPPorts = [ 2299 ];
- services.cloudflare-dyndns.domains = [ config.services.forgejo.settings.server.DOMAIN ];
+ services.cloudflare-dyndns.domains = [ "git.nixfox.ca" ];
environment.persistence."/persist".directories = [ "/var/lib/forgejo" ];
};
diff --git a/modules/system/services/server/forgejo/nginx/default.nix b/modules/system/services/server/forgejo/nginx/default.nix
index a40ab52b..5428884a 100644
--- a/modules/system/services/server/forgejo/nginx/default.nix
+++ b/modules/system/services/server/forgejo/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."${config.services.forgejo.settings.server.DOMAIN}" = lib.mkIf config.services.forgejo.enable {
+ services.nginx.virtualHosts."git.nixfox.ca" = lib.mkIf config.services.forgejo.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/hedgedoc/default.nix b/modules/system/services/server/hedgedoc/default.nix
deleted file mode 100644
index c2be42e0..00000000
--- a/modules/system/services/server/hedgedoc/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ config, ... }:
-{
- imports = [ ./nginx ];
-
- services.hedgedoc.settings = {
- domain = "hedgedoc.${config.vars.primeDomain}";
- port = 8001;
- host = "127.0.0.1";
- protocolUseSSL = true;
- allowOrigin = [
- "localhost"
- config.services.hedgedoc.settings.domain
- ];
- };
-}
diff --git a/modules/system/services/server/hedgedoc/nginx/default.nix b/modules/system/services/server/hedgedoc/nginx/default.nix
deleted file mode 100644
index 9848af75..00000000
--- a/modules/system/services/server/hedgedoc/nginx/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ config, lib, ... }:
-{
- services.nginx.virtualHosts."${config.services.hedgedoc.settings.domain}" = lib.mkIf config.services.hedgedoc.enable {
- enableACME = true;
- forceSSL = true;
- locations."/" = {
- proxyPass = "http://127.0.0.1:${toString config.services.hedgedoc.settings.port}";
- proxyWebsockets = true;
- };
- };
-}
diff --git a/modules/system/services/server/icecast/default.nix b/modules/system/services/server/icecast/default.nix
index 453f339f..ec3dce64 100644
--- a/modules/system/services/server/icecast/default.nix
+++ b/modules/system/services/server/icecast/default.nix
@@ -7,9 +7,9 @@
services.icecast = {
listen.port = 73;
- hostname = "radio.${config.vars.primeDomain}";
+ hostname = "radio.nixfox.ca";
admin = {
- user = "admin";
+ user = config.sysusers.main;
password = config.secrets.cast.adminPass;
};
extraConf = ''
@@ -17,7 +17,7 @@
${config.secrets.cast.sourcePass}
Canada
- contact@${config.vars.primeDomain}
+ contact@nixfox.ca
'';
};
}
diff --git a/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix b/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix
index d26b68b3..8d200cb7 100644
--- a/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix
+++ b/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix
@@ -7,7 +7,7 @@
settings.init.allow_root.set(true)
settings.scheduler.fast_queues.set(2)
- stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/network/Midas/Music/NixBops"))
+ stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/storage/Music/NixBops"))
stream_fallback = fallback([stream, stream])
output.icecast(
diff --git a/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix b/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix
index 36e22aef..6f520910 100644
--- a/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix
+++ b/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix
@@ -7,7 +7,7 @@
settings.init.allow_root.set(true)
settings.scheduler.fast_queues.set(2)
- stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/network/Midas/Music/Scrap"))
+ stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/storage/Music/Scrap"))
stream_fallback = fallback([stream, stream])
output.icecast(
diff --git a/modules/system/services/server/icecast/nginx/default.nix b/modules/system/services/server/icecast/nginx/default.nix
index 120cbb66..6573d11f 100644
--- a/modules/system/services/server/icecast/nginx/default.nix
+++ b/modules/system/services/server/icecast/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."${config.services.icecast.hostname}" = lib.mkIf config.services.icecast.enable {
+ services.nginx.virtualHosts."radio.nixfox.ca" = lib.mkIf config.services.icecast.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/incus/default.nix b/modules/system/services/server/incus/default.nix
deleted file mode 100644
index db07d144..00000000
--- a/modules/system/services/server/incus/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ config, lib, pkgs, ... }:
-{
- config = lib.mkIf config.virtualisation.incus.enable {
- networking.firewall.interfaces.incusbr0 = let
- ports = [
- 53
- 67
- ];
- in {
- allowedTCPPorts = ports;
- allowedUDPPorts = ports;
- };
-
- environment.persistence."/persist".directories = [ "/var/lib/incus" ];
- };
-}
diff --git a/modules/system/services/server/jellyfin/nginx/default.nix b/modules/system/services/server/jellyfin/nginx/default.nix
index 550749ae..26d20ab9 100644
--- a/modules/system/services/server/jellyfin/nginx/default.nix
+++ b/modules/system/services/server/jellyfin/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."jelly.${config.vars.primeDomain}" = lib.mkIf config.services.jellyfin.enable {
+ services.nginx.virtualHosts."jelly.nixfox.ca" = lib.mkIf config.services.jellyfin.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/lemmy/default.nix b/modules/system/services/server/lemmy/default.nix
new file mode 100644
index 00000000..2cc6ed6d
--- /dev/null
+++ b/modules/system/services/server/lemmy/default.nix
@@ -0,0 +1,22 @@
+{ config, lib, ... }:
+{
+ imports = [ ./nginx ];
+
+ config = lib.mkIf config.services.lemmy.enable {
+ services.lemmy = lib.mkIf config.services.lemmy.enable {
+ nginx.enable = true;
+ database.createLocally = true;
+ settings = {
+ hostname = "lemmy.nixfox.ca";
+ email = {
+ smtp_server = "mx.nixfox.ca:587";
+ smtp_login = "noreply@nixfox.ca";
+ smtp_from_address = "NixFox Lemmy ";
+ smtp_password = config.secrets.mailPass.nixfoxNoReply;
+ tls_type = "starttls";
+ };
+ };
+ };
+ environment.persistence."/persist".directories = [ "/var/lib/postgresql" ];
+ };
+}
diff --git a/modules/system/services/server/lemmy/nginx/default.nix b/modules/system/services/server/lemmy/nginx/default.nix
new file mode 100644
index 00000000..0ab2106e
--- /dev/null
+++ b/modules/system/services/server/lemmy/nginx/default.nix
@@ -0,0 +1,7 @@
+{ config, lib, ... }:
+{
+ services.nginx.virtualHosts."lemmy.nixfox.ca" = lib.mkIf config.services.lemmy.enable {
+ enableACME = true;
+ forceSSL = true;
+ };
+}
diff --git a/modules/system/services/server/mailserver/default.nix b/modules/system/services/server/mailserver/default.nix
index 744cde04..b2edc8eb 100644
--- a/modules/system/services/server/mailserver/default.nix
+++ b/modules/system/services/server/mailserver/default.nix
@@ -1,75 +1,11 @@
-{ config, lib, pkgs, mailserver, ... }:
+{ lib, ... }:
{
imports = [
./go-autoconfig
./radicale
./roundcube
- mailserver.nixosModule
+ ./simplenix
];
- config = lib.mkIf config.mailserver.enable {
- mailserver = {
- fqdn = "mx.${config.vars.mailDomain}";
- domains = [
- "nixfox.ca"
- "bloxelcom.net"
- "freecorn1854.win"
- "lunamoonlight.xyz"
- ];
- certificateScheme = "acme-nginx";
- localDnsResolver = false;
- redis.port = 1515;
-
- # Passwords made with 'mkpasswd -sm bcrypt'
- loginAccounts = {
- "jimbo@nixfox.ca" = {
- hashedPassword = config.secrets.mailHash.bun;
- aliases = [
- "james@nixfox.ca"
-
- "bun@nixfox.ca"
- "bun@bloxelcom.net"
-
- "contact@nixfox.ca"
- ];
- };
-
- "luna@lunamoonlight.xyz" = {
- hashedPassword = config.secrets.mailHash.luna;
- aliases = [
- "luna@bloxelcom.net"
- "contact@bloxelcom.net"
- "ibu@bloxelcom.net"
- ];
- };
-
- "contact@freecorn1854.win" = {
- hashedPassword = config.secrets.mailHash.corn;
- aliases = [ "freecorn@bloxelcom.net" ];
- };
-
- # Noreply emails
- "noreply@nixfox.ca" = {
- hashedPassword = config.secrets.mailHash.nixfoxNoReply;
- sendOnly = true;
- };
- "noreply@bloxelcom.net" = {
- hashedPassword = config.secrets.mailHash.bloxelNoReply;
- sendOnly = true;
- };
- };
- };
-
- services = {
- redis.servers.rspamd.port = config.mailserver.redis.port;
- cloudflare-dyndns.domains = [ config.mailserver.fqdn ];
- };
-
- environment.persistence."/persist".directories = [
- "/var/vmail"
- "/var/lib/dovecot"
- "/var/lib/postfix"
- "/var/lib/redis-rspamd"
- ];
- };
+ options.services.mailserver.enable = lib.mkEnableOption "Simple NixOS Mailserver";
}
diff --git a/modules/system/services/server/mailserver/go-autoconfig/default.nix b/modules/system/services/server/mailserver/go-autoconfig/default.nix
index 6854adb1..740a3fb6 100644
--- a/modules/system/services/server/mailserver/go-autoconfig/default.nix
+++ b/modules/system/services/server/mailserver/go-autoconfig/default.nix
@@ -2,18 +2,18 @@
{
imports = [ ./nginx ];
- services = lib.mkIf config.mailserver.enable {
+ services = lib.mkIf config.services.mailserver.enable {
go-autoconfig = {
enable = true;
settings = {
service_addr = ":1323";
- domain = "autoconfig.${config.vars.mailDomain}";
+ domain = "autoconfig.nixfox.ca";
imap = {
- server = "mx.${config.vars.mailDomain}";
+ server = "mx.nixfox.ca";
port = 143;
};
smtp = {
- server = "mx.${config.vars.mailDomain}";
+ server = "mx.nixfox.ca";
port = 587;
};
};
diff --git a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix
index d612fce4..1bb0d687 100644
--- a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix
+++ b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."autoconfig.${config.vars.mailDomain}" = lib.mkIf config.services.go-autoconfig.enable {
+ services.nginx.virtualHosts."autoconfig.nixfox.ca" = lib.mkIf config.services.go-autoconfig.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/mailserver/radicale/default.nix b/modules/system/services/server/mailserver/radicale/default.nix
index f553819b..148d064f 100644
--- a/modules/system/services/server/mailserver/radicale/default.nix
+++ b/modules/system/services/server/mailserver/radicale/default.nix
@@ -2,7 +2,7 @@
{
imports = [ ./nginx ];
- config = lib.mkIf config.mailserver.enable {
+ config = lib.mkIf config.services.mailserver.enable {
services = {
radicale = {
enable = true;
@@ -19,7 +19,7 @@
htpasswd_encryption = "bcrypt";
};
};
- cloudflare-dyndns.domains = [ "cal.${config.vars.mailDomain}" ];
+ cloudflare-dyndns.domains = [ "cal.nixfox.ca" ];
};
environment.persistence."/persist".directories = [ "/var/lib/radicale" ];
diff --git a/modules/system/services/server/mailserver/radicale/nginx/default.nix b/modules/system/services/server/mailserver/radicale/nginx/default.nix
index 8d70efbf..d6e1a5be 100644
--- a/modules/system/services/server/mailserver/radicale/nginx/default.nix
+++ b/modules/system/services/server/mailserver/radicale/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."cal.${config.vars.mailDomain}" = lib.mkIf config.services.radicale.enable {
+ services.nginx.virtualHosts."cal.nixfox.ca" = lib.mkIf config.services.go-autoconfig.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/mailserver/roundcube/default.nix b/modules/system/services/server/mailserver/roundcube/default.nix
index c4fc9784..f1d8d44c 100644
--- a/modules/system/services/server/mailserver/roundcube/default.nix
+++ b/modules/system/services/server/mailserver/roundcube/default.nix
@@ -1,11 +1,11 @@
{ config, lib, ... }:
{
- config = lib.mkIf config.mailserver.enable {
+ config = lib.mkIf config.services.mailserver.enable {
services.roundcube = {
enable = true;
- hostName = "mail.${config.vars.mailDomain}";
+ hostName = "mail.nixfox.ca";
extraConfig = ''
- $config['smtp_server'] = "tls://mx.${config.vars.mailDomain}";
+ $config['smtp_server'] = "tls://mx.nixfox.ca";
$config['smtp_user'] = "%u";
$config['smtp_pass'] = "%p";
'';
diff --git a/modules/system/services/server/mailserver/simplenix/default.nix b/modules/system/services/server/mailserver/simplenix/default.nix
new file mode 100644
index 00000000..2e022966
--- /dev/null
+++ b/modules/system/services/server/mailserver/simplenix/default.nix
@@ -0,0 +1,72 @@
+{ config, lib, pkgs, mailserver, ... }:
+{
+ imports = [ mailserver.nixosModule ];
+
+ config = lib.mkIf config.services.mailserver.enable {
+ mailserver = {
+ enable = true;
+ fqdn = "mx.nixfox.ca";
+ domains = [
+ "nixfox.ca"
+ "bloxelcom.net"
+ "freecorn1854.win"
+ "lunamoonlight.xyz"
+ ];
+ certificateScheme = "acme-nginx";
+ localDnsResolver = false;
+ redis.port = 1515;
+
+ # Passwords made with 'mkpasswd -sm bcrypt'
+ loginAccounts = {
+ "jimbo@nixfox.ca" = {
+ hashedPassword = config.secrets.mailHash.bun;
+ aliases = [
+ "james@nixfox.ca"
+ "jimbo@bloxelcom.net"
+
+ "bun@nixfox.ca"
+ "bun@bloxelcom.net"
+
+ "contact@nixfox.ca"
+ ];
+ };
+
+ "luna@lunamoonlight.xyz" = {
+ hashedPassword = config.secrets.mailHash.luna;
+ aliases = [
+ "luna@bloxelcom.net"
+ "contact@bloxelcom.net"
+ "ibu@bloxelcom.net"
+ ];
+ };
+
+ "contact@freecorn1854.win" = {
+ hashedPassword = config.secrets.mailHash.corn;
+ aliases = [ "freecorn@bloxelcom.net" ];
+ };
+
+ # Noreply emails
+ "noreply@nixfox.ca" = {
+ hashedPassword = config.secrets.mailHash.nixfoxNoReply;
+ sendOnly = true;
+ };
+ "noreply@bloxelcom.net" = {
+ hashedPassword = config.secrets.mailHash.bloxelNoReply;
+ sendOnly = true;
+ };
+ };
+ };
+
+ services = {
+ redis.servers.rspamd.port = config.mailserver.redis.port;
+ cloudflare-dyndns.domains = [ config.mailserver.fqdn ];
+ };
+
+ environment.persistence."/persist".directories = [
+ "/var/vmail"
+ "/var/lib/dovecot"
+ "/var/lib/postfix"
+ "/var/lib/redis-rspamd"
+ ];
+ };
+}
diff --git a/modules/system/services/server/mastodon/default.nix b/modules/system/services/server/mastodon/default.nix
index 9cc7bee6..7a8786b2 100644
--- a/modules/system/services/server/mastodon/default.nix
+++ b/modules/system/services/server/mastodon/default.nix
@@ -2,16 +2,16 @@
{
config = lib.mkIf config.services.mastodon.enable {
services.mastodon = {
- localDomain = "social.${config.vars.primeDomain}";
+ localDomain = "social.nixfox.ca";
streamingProcesses = 4;
configureNginx = true;
smtp = {
createLocally = false;
- host = "mx.${config.vars.mailDomain}";
+ host = "mx.nixfox.ca";
port = 587;
authenticate = true;
- fromAddress = "NixFox Mastodon ";
- user = "noreply@${config.vars.primeDomain}";
+ fromAddress = "NixFox Mastodon ";
+ user = "noreply@nixfox.ca";
passwordFile = pkgs.writeText "smtp_pass.txt" config.secrets.mailPass.nixfoxNoReply;
};
};
diff --git a/modules/system/services/server/matrix/coturn/default.nix b/modules/system/services/server/matrix/coturn/default.nix
index 9ef549de..6f98c201 100644
--- a/modules/system/services/server/matrix/coturn/default.nix
+++ b/modules/system/services/server/matrix/coturn/default.nix
@@ -12,7 +12,7 @@
max-port = 50000;
use-auth-secret = true;
static-auth-secret = config.secrets.coturnSecret;
- realm = "turn.${config.vars.primeDomain}";
+ realm = "turn.nixfox.ca";
cert = "/var/lib/acme/${config.services.coturn.realm}/fullchain.pem";
pkey = "/var/lib/acme/${config.services.coturn.realm}/key.pem";
};
diff --git a/modules/system/services/server/matrix/coturn/nginx/default.nix b/modules/system/services/server/matrix/coturn/nginx/default.nix
index c0466107..f73bb312 100644
--- a/modules/system/services/server/matrix/coturn/nginx/default.nix
+++ b/modules/system/services/server/matrix/coturn/nginx/default.nix
@@ -1,7 +1,7 @@
{ config, lib, ... }:
{
config = lib.mkIf config.services.coturn.enable {
- services.nginx.virtualHosts."turn.${config.vars.primeDomain}" = {
+ services.nginx.virtualHosts."turn.nixfox.ca" = {
enableACME = true;
forceSSL = true;
listen = [{
@@ -12,9 +12,11 @@
locations."/".proxyPass = "http://127.0.0.1:1380";
};
- security.acme.certs."turn.${config.vars.primeDomain}" = {
- group = "turnserver";
- postRun = "systemctl restart coturn.service";
+ security.acme.certs = {
+ "turn.nixfox.ca" = {
+ group = "turnserver";
+ postRun = "systemctl restart coturn.service";
+ };
};
};
}
diff --git a/modules/system/services/server/matrix/element/default.nix b/modules/system/services/server/matrix/element/default.nix
index a1ba1067..5e8492a4 100644
--- a/modules/system/services/server/matrix/element/default.nix
+++ b/modules/system/services/server/matrix/element/default.nix
@@ -4,14 +4,14 @@
nixpkgs.config.element-web.conf = {
default_server_config."m.homeserver" = {
- base_url = "https://matrix.${config.vars.primeDomain}";
- server_name = "matrix.${config.vars.primeDomain}";
+ base_url = "https://matrix.nixfox.ca";
+ server_name = "matrix.nixfox.ca";
};
branding = {
- auth_header_logo_url = "https://www.${config.vars.primeDomain}/images/copyright/profile.png";
- #welcome_background_url = "https://www.${config.vars.primeDomain}/images/backgrounds/template-background.png";
+ auth_header_logo_url = "https://www.nixfox.ca/images/copyright/profile.png";
+ #welcome_background_url = "https://www.nixfox.ca/images/backgrounds/template-background.png";
};
- embedded_pages.home_url = "https://www.${config.vars.primeDomain}/";
+ embedded_pages.home_url = "https://www.nixfox.ca/";
disable_custom_urls = true;
disable_guests = true;
default_theme = "dark";
diff --git a/modules/system/services/server/matrix/element/nginx/default.nix b/modules/system/services/server/matrix/element/nginx/default.nix
index 86c601a3..1c085eb3 100644
--- a/modules/system/services/server/matrix/element/nginx/default.nix
+++ b/modules/system/services/server/matrix/element/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, pkgs, ... }:
{
- services.nginx.virtualHosts."chat.${config.vars.primeDomain}" = lib.mkIf config.services.matrix-synapse.enable {
+ services.nginx.virtualHosts."chat.nixfox.ca" = lib.mkIf config.services.matrix-synapse.enable {
enableACME = true;
addSSL = true;
root = "${pkgs.element-web}";
diff --git a/modules/system/services/server/matrix/synapse/default.nix b/modules/system/services/server/matrix/synapse/default.nix
index 40f890a3..342fff38 100644
--- a/modules/system/services/server/matrix/synapse/default.nix
+++ b/modules/system/services/server/matrix/synapse/default.nix
@@ -5,16 +5,16 @@
config = lib.mkIf config.services.matrix-synapse.enable {
services.matrix-synapse = {
settings = {
- server_name = "${config.vars.primeDomain}";
- public_baseurl = "https://matrix.${config.vars.primeDomain}";
+ server_name = "nixfox.ca";
+ public_baseurl = "https://matrix.nixfox.ca";
suppress_key_server_warning = true;
# Email notifications about account status
email = {
- smtp_host = "mx.${config.vars.mailDomain}";
- smtp_user = "noreply@${config.vars.primeDomain}";
+ notif_from = "NixFox Matrix ";
+ smtp_host = "mx.nixfox.ca";
+ smtp_user = "noreply@nixfox.ca";
smtp_pass = config.secrets.mailPass.nixfoxNoReply;
- notif_from = "NixFox Matrix ";
enable_tls = true;
smtp_port = 587;
require_transport_security = true;
diff --git a/modules/system/services/server/matrix/synapse/nginx/default.nix b/modules/system/services/server/matrix/synapse/nginx/default.nix
index dd71d56d..c5d9d5fe 100644
--- a/modules/system/services/server/matrix/synapse/nginx/default.nix
+++ b/modules/system/services/server/matrix/synapse/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."matrix.${config.vars.primeDomain}" = lib.mkIf config.services.matrix-synapse.enable {
+ services.nginx.virtualHosts."matrix.nixfox.ca" = lib.mkIf config.services.matrix-synapse.enable {
enableACME = true;
forceSSL = true;
locations = {
diff --git a/modules/system/services/server/minecraft/default.nix b/modules/system/services/server/minecraft/default.nix
index da5539fa..a2a9131b 100644
--- a/modules/system/services/server/minecraft/default.nix
+++ b/modules/system/services/server/minecraft/default.nix
@@ -3,12 +3,16 @@
imports = [
./common
./servers
+ minecraft.nixosModules.minecraft-servers
];
config = lib.mkIf config.services.minecraft-servers.enable {
- services.minecraft-servers.eula = true;
+ nixpkgs = {
+ overlays = [ minecraft.overlay ];
+ allowUnfreePackages = [ "minecraft-server" ];
+ };
- nixpkgs.allowUnfreePackages = [ "minecraft-server" ];
+ services.minecraft-servers.eula = true;
environment.persistence."/persist".directories = [ "/srv/minecraft" ];
};
diff --git a/modules/system/services/server/minecraft/servers/blockworld/default.nix b/modules/system/services/server/minecraft/servers/blockworld/default.nix
index 5f9c1e68..d6525204 100644
--- a/modules/system/services/server/minecraft/servers/blockworld/default.nix
+++ b/modules/system/services/server/minecraft/servers/blockworld/default.nix
@@ -14,6 +14,6 @@
symlinks = config.services.minecraft-servers.common.paperSymlinks;
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/cornworld/default.nix b/modules/system/services/server/minecraft/servers/cornworld/default.nix
index 28161ebc..fafef772 100644
--- a/modules/system/services/server/minecraft/servers/cornworld/default.nix
+++ b/modules/system/services/server/minecraft/servers/cornworld/default.nix
@@ -13,6 +13,6 @@
symlinks = config.services.minecraft-servers.common.paperSymlinks;
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/default.nix b/modules/system/services/server/minecraft/servers/default.nix
index 5eab36e7..b7088614 100644
--- a/modules/system/services/server/minecraft/servers/default.nix
+++ b/modules/system/services/server/minecraft/servers/default.nix
@@ -6,6 +6,7 @@
./dewdemolisher
./johnside
./marsh
+ ./roguecraft
./skyblock
./uberbeta
./velocity
diff --git a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix
index da6bcdc9..f3d13191 100644
--- a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix
+++ b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix
@@ -13,6 +13,6 @@
symlinks = config.services.minecraft-servers.common.paperSymlinks;
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/johnside/default.nix b/modules/system/services/server/minecraft/servers/johnside/default.nix
index 0c8933af..c65ff0ce 100644
--- a/modules/system/services/server/minecraft/servers/johnside/default.nix
+++ b/modules/system/services/server/minecraft/servers/johnside/default.nix
@@ -26,6 +26,6 @@
};
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/marsh/default.nix b/modules/system/services/server/minecraft/servers/marsh/default.nix
index f6a3030d..4bdbbd2e 100644
--- a/modules/system/services/server/minecraft/servers/marsh/default.nix
+++ b/modules/system/services/server/minecraft/servers/marsh/default.nix
@@ -13,6 +13,6 @@
symlinks = config.services.minecraft-servers.common.paperSymlinks;
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/roguecraft/default.nix b/modules/system/services/server/minecraft/servers/roguecraft/default.nix
new file mode 100644
index 00000000..b7a15a0e
--- /dev/null
+++ b/modules/system/services/server/minecraft/servers/roguecraft/default.nix
@@ -0,0 +1,36 @@
+{ config, lib, pkgs, ... }:
+{
+ services = {
+ minecraft-servers.servers.roguecraft = {
+ package = pkgs.paperServers.paper-1_21_1;
+ jvmOpts = "-Xmx3000M";
+ serverProperties = config.services.minecraft-servers.common.serverProperties // {
+ difficulty = 3;
+ server-port = 30014;
+ motd = "\\u00A7l\\u00A7bNixFox \\u00A7cRoguecraft \\u00A7bserver.";
+ require-resource-pack = true;
+ resource-pack = "https://nixfox.ca/roguecraftresourcepackredir";
+ resource-pack-sha1 = "b540c0562aba90c3ead2356bb9cb74fcf0db36b3";
+ };
+ whitelist = config.services.minecraft-servers.common.whitelist;
+ symlinks = config.services.minecraft-servers.common.paperSymlinks;
+ files = config.services.minecraft-servers.common.configFiles // {
+ "world/datapacks/roguecraft.zip" = builtins.fetchurl {
+ url = "https://nixfox.ca/roguecraftdatapackredir";
+ sha256 = "04zrkvzvi1i898al45fh9j3k635sf9qhwca7phbv4ynkfl8bz3q3";
+ };
+ };
+ };
+
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.roguecraft.enable [ "rogue.nixfox.ca" ];
+
+ nginx.virtualHosts."nixfox.ca".locations = lib.mkIf config.services.minecraft-servers.servers.roguecraft.enable {
+ "/roguecraftdatapackredir" = {
+ return = "301 https://cdn.modrinth.com/data/HtKjVijx/versions/Rme4c23R/Roguecraft%201.2.6%20-%20Data%20Pack.zip";
+ };
+ "/roguecraftresourcepackredir" = {
+ return = "301 https://cdn.modrinth.com/data/HtKjVijx/versions/C6bITJnq/Roguecraft%201.2.5.4%20-%20Resource%20Pack.zip";
+ };
+ };
+ };
+}
diff --git a/modules/system/services/server/minecraft/servers/skyblock/default.nix b/modules/system/services/server/minecraft/servers/skyblock/default.nix
index 12ae26a7..956f84ec 100644
--- a/modules/system/services/server/minecraft/servers/skyblock/default.nix
+++ b/modules/system/services/server/minecraft/servers/skyblock/default.nix
@@ -13,6 +13,6 @@
symlinks = config.services.minecraft-servers.common.paperSymlinks;
files = config.services.minecraft-servers.common.configFiles;
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/uberbeta/default.nix b/modules/system/services/server/minecraft/servers/uberbeta/default.nix
index ef58b477..6f3b3dc5 100644
--- a/modules/system/services/server/minecraft/servers/uberbeta/default.nix
+++ b/modules/system/services/server/minecraft/servers/uberbeta/default.nix
@@ -18,6 +18,6 @@ in {
server-port = 30005;
};
};
- cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.${config.vars.primeDomain}" ];
+ cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.nixfox.ca" ];
};
}
diff --git a/modules/system/services/server/minecraft/servers/velocity/default.nix b/modules/system/services/server/minecraft/servers/velocity/default.nix
index 099eb183..c358006e 100644
--- a/modules/system/services/server/minecraft/servers/velocity/default.nix
+++ b/modules/system/services/server/minecraft/servers/velocity/default.nix
@@ -12,6 +12,10 @@
url = "https://download.geysermc.org/v2/projects/floodgate/versions/2.2.4/builds/116/downloads/velocity";
sha256 = "0sinl47pdyc3zyi3jprjqh8ka754rz2r6gmyd27nq39qf31mbbvy";
};
+ "plugins/LuckPerms.jar" = builtins.fetchurl {
+ url = "https://download.luckperms.net/1571/velocity/LuckPerms-Velocity-5.4.154.jar";
+ sha256 = "03kqgxrf6ssclrwgyfxs521b7kswmpkk90kdwyaajkkx8hqvbqlc";
+ };
"plugins/SkinsRestorer.jar" = builtins.fetchurl {
url = "https://github.com/SkinsRestorer/SkinsRestorer/releases/download/15.4.2/SkinsRestorer.jar";
sha256 = "14nl9mi958bfqwqz9182cxj7m6l15kalq3wjmjqzy50s52si35wf";
diff --git a/modules/system/services/server/nextcloud/default.nix b/modules/system/services/server/nextcloud/default.nix
index 87bfffda..20408682 100644
--- a/modules/system/services/server/nextcloud/default.nix
+++ b/modules/system/services/server/nextcloud/default.nix
@@ -7,23 +7,22 @@
config = lib.mkIf config.services.nextcloud.enable {
services.nextcloud = {
- package = pkgs.nextcloud31;
- hostName = "files.${config.vars.primeDomain}";
+ package = pkgs.nextcloud30;
+ hostName = "files.nixfox.ca";
https = true;
config = {
- adminuser = "admin";
+ adminuser = config.sysusers.main;
adminpassFile = "${pkgs.writeText "initial" config.secrets.initialPass}";
- dbtype = "sqlite";
};
settings = {
trusted_proxies = [ "127.0.0.1" ];
trusted_domains = [ config.services.nextcloud.hostName ];
overwriteprotocol = "https";
- mail_smtphost = "mx.${config.vars.mailDomain}";
- mail_domain = "${config.vars.primeDomain}";
+ mail_smtphost = "mx.nixfox.ca";
+ mail_domain = "nixfox.ca";
mail_from_address = "noreply";
mail_smtpauth = "true";
- mail_smtpname = "noreply@${config.vars.primeDomain}";
+ mail_smtpname = "noreply@nixfox.ca";
mail_smtppassword = config.secrets.mailPass.nixfoxNoReply;
mail_smtpmode = "smtp";
mail_smtpport = 587;
diff --git a/modules/system/services/server/nextcloud/nginx/default.nix b/modules/system/services/server/nextcloud/nginx/default.nix
index 5cc87b9a..5212d535 100644
--- a/modules/system/services/server/nextcloud/nginx/default.nix
+++ b/modules/system/services/server/nextcloud/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."files.${config.vars.primeDomain}" = lib.mkIf config.services.nextcloud.enable {
+ services.nginx.virtualHosts."files.nixfox.ca" = lib.mkIf config.services.nextcloud.enable {
enableACME = true;
addSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix
index 236a7147..b08ba2a4 100644
--- a/modules/system/services/server/nfs/default.nix
+++ b/modules/system/services/server/nfs/default.nix
@@ -1,13 +1,9 @@
-{ config, lib, nodes, ... }:
+{ config, lib, ... }:
{
imports = [ ./user ];
config = lib.mkIf config.services.nfs.server.enable {
services.nfs.server.exports = "/storage *(rw)";
- networking.firewall.extraInputRules = let
- targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes);
- in ''
- ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport 2049 accept
- '';
+ networking.firewall.extraInputRules = "ip saddr { 10.0.0.0/8, 11.0.0.0/8, ${config.secrets.ips.bun} } tcp dport 2049 accept";
};
}
diff --git a/modules/system/services/server/nginx/acme/default.nix b/modules/system/services/server/nginx/acme/default.nix
index 941c8a64..a88a2b7b 100644
--- a/modules/system/services/server/nginx/acme/default.nix
+++ b/modules/system/services/server/nginx/acme/default.nix
@@ -3,7 +3,7 @@
config = lib.mkIf config.services.nginx.enable {
security.acme = {
acceptTerms = true;
- defaults.email = "contact@${config.vars.primeDomain}";
+ defaults.email = "contact@nixfox.ca";
};
environment.persistence."/persist".directories = [ "/var/lib/acme" ];
};
diff --git a/modules/system/services/server/nginx/default.nix b/modules/system/services/server/nginx/default.nix
index 0981fe41..2325e731 100644
--- a/modules/system/services/server/nginx/default.nix
+++ b/modules/system/services/server/nginx/default.nix
@@ -2,21 +2,23 @@
{
imports = [
./acme
+ ./hosts
+ ./rtmp
./user
];
+ options.services.webserver.enable = lib.mkEnableOption "Nginx webpages";
+
config = lib.mkIf config.services.nginx.enable {
services.nginx = {
- recommendedBrotliSettings = true;
- recommendedGzipSettings = true;
- recommendedOptimisation = true;
- recommendedProxySettings = true;
recommendedTlsSettings = true;
+ recommendedOptimisation = true;
+ recommendedGzipSettings = true;
+ recommendedProxySettings = true;
};
networking.firewall.allowedTCPPorts = [
- config.services.nginx.defaultHTTPListenPort
- config.services.nginx.defaultSSLListenPort
+ 80
+ 443
];
- environment.persistence."/persist".directories = [ "/var/www" ];
};
}
diff --git a/modules/system/services/server/nginx/hosts/default.nix b/modules/system/services/server/nginx/hosts/default.nix
new file mode 100644
index 00000000..aef9846f
--- /dev/null
+++ b/modules/system/services/server/nginx/hosts/default.nix
@@ -0,0 +1,9 @@
+{ config, lib, ... }:
+{
+ imports = [
+ ./files
+ ./nixfox
+ ];
+
+ environment.persistence."/persist".directories = lib.mkIf config.services.webserver.enable [ "/var/www" ];
+}
diff --git a/modules/system/services/server/nginx/hosts/files/default.nix b/modules/system/services/server/nginx/hosts/files/default.nix
new file mode 100644
index 00000000..882ffebe
--- /dev/null
+++ b/modules/system/services/server/nginx/hosts/files/default.nix
@@ -0,0 +1,8 @@
+{ config, lib, ... }:
+{
+ services.nginx.virtualHosts."jimbosfiles.com" = lib.mkIf config.services.webserver.enable {
+ enableACME = true;
+ addSSL = true;
+ globalRedirect = "www.nixfox.ca";
+ };
+}
diff --git a/hosts/midas/services/nginx/nixfox/default.nix b/modules/system/services/server/nginx/hosts/nixfox/default.nix
similarity index 90%
rename from hosts/midas/services/nginx/nixfox/default.nix
rename to modules/system/services/server/nginx/hosts/nixfox/default.nix
index c8264276..adbcbd1c 100644
--- a/hosts/midas/services/nginx/nixfox/default.nix
+++ b/modules/system/services/server/nginx/hosts/nixfox/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts = {
+ services.nginx.virtualHosts = lib.mkIf config.services.webserver.enable {
"www.nixfox.ca" = {
enableACME = true;
addSSL = true;
diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix
new file mode 100644
index 00000000..4a619e05
--- /dev/null
+++ b/modules/system/services/server/nginx/rtmp/default.nix
@@ -0,0 +1,29 @@
+{ config, lib, pkgs, ... }:
+{
+ config = lib.mkIf config.services.webserver.enable {
+ services.nginx = {
+ additionalModules = with pkgs.nginxModules; [ rtmp ];
+ appendConfig = ''
+ rtmp {
+ server {
+ listen 1935;
+ chunk_size 4096;
+ allow publish all;
+ application stream {
+ record off;
+ live on;
+ allow play all;
+ hls on;
+ hls_path /var/www/landing-page/streams/hls/;
+ hls_fragment_naming system;
+ hls_fragment 3;
+ hls_playlist_length 40;
+ }
+ }
+ }
+ '';
+ };
+ networking.firewall.extraInputRules = "ip saddr { 11.0.0.0/8, ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept";
+ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ];
+ };
+}
diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix
index 4f620795..b98f402c 100644
--- a/modules/system/services/server/owncast/default.nix
+++ b/modules/system/services/server/owncast/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, nodes, ... }:
+{ config, lib, ... }:
{
imports = [ ./nginx ];
@@ -7,11 +7,7 @@
port = 8060;
rtmp-port = 1945;
};
- networking.firewall.extraInputRules = let
- targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes);
- in ''
- ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport ${toString config.services.owncast.rtmp-port} accept
- '';
+ networking.firewall.extraInputRules = "ip saddr 11.0.0.0/8 tcp dport 1945 accept";
environment.persistence."/persist".directories = [ "/var/lib/owncast" ];
};
}
diff --git a/modules/system/services/server/owncast/nginx/default.nix b/modules/system/services/server/owncast/nginx/default.nix
index 47fcaae0..abc052ff 100644
--- a/modules/system/services/server/owncast/nginx/default.nix
+++ b/modules/system/services/server/owncast/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."live.${config.vars.primeDomain}" = lib.mkIf config.services.owncast.enable {
+ services.nginx.virtualHosts."live.nixfox.ca" = lib.mkIf config.services.owncast.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/transmission/default.nix b/modules/system/services/server/transmission/default.nix
index 78f2411b..50d2abb2 100644
--- a/modules/system/services/server/transmission/default.nix
+++ b/modules/system/services/server/transmission/default.nix
@@ -4,7 +4,6 @@
config = lib.mkIf config.services.transmission.enable {
services.transmission = {
- package = pkgs.transmission_4;
credentialsFile = pkgs.writeText "credentials" config.secrets.transmissionCredFile;
openPeerPorts = true;
settings = {
diff --git a/modules/system/services/server/transmission/nginx/default.nix b/modules/system/services/server/transmission/nginx/default.nix
index 5a66482f..c4c737ab 100644
--- a/modules/system/services/server/transmission/nginx/default.nix
+++ b/modules/system/services/server/transmission/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."tor.${config.vars.primeDomain}" = lib.mkIf config.services.transmission.enable {
+ services.nginx.virtualHosts."tor.nixfox.ca" = lib.mkIf config.services.transmission.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/services/server/vaultwarden/default.nix b/modules/system/services/server/vaultwarden/default.nix
index d46dd0ac..928b3458 100644
--- a/modules/system/services/server/vaultwarden/default.nix
+++ b/modules/system/services/server/vaultwarden/default.nix
@@ -4,16 +4,16 @@
config = lib.mkIf config.services.vaultwarden.enable {
services.vaultwarden.config = {
- domain = "https://pass.${config.vars.primeDomain}";
+ domain = "https://pass.nixfox.ca";
signupsAllowed = false;
rocketAddress = "127.0.0.1";
rocketPort = 8222;
# Smtp email
- smtpHost = "mx.${config.vars.mailDomain}";
- smtpFrom = "noreply@${config.vars.primeDomain}";
+ smtpHost = "mx.nixfox.ca";
+ smtpFrom = "noreply@nixfox.ca";
smtpFromName = "Vaultwarden";
- smtpUsername = "noreply@${config.vars.primeDomain}";
+ smtpUsername = "noreply@nixfox.ca";
smtpPassword = config.secrets.mailPass.nixfoxNoReply;
smtpSecurity = "starttls";
smtpPort = 587;
diff --git a/modules/system/services/server/vaultwarden/nginx/default.nix b/modules/system/services/server/vaultwarden/nginx/default.nix
index 7ae72aeb..0877413e 100644
--- a/modules/system/services/server/vaultwarden/nginx/default.nix
+++ b/modules/system/services/server/vaultwarden/nginx/default.nix
@@ -1,6 +1,6 @@
{ config, lib, ... }:
{
- services.nginx.virtualHosts."pass.${config.vars.primeDomain}" = lib.mkIf config.services.vaultwarden.enable {
+ services.nginx.virtualHosts."pass.nixfox.ca" = lib.mkIf config.services.vaultwarden.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
diff --git a/modules/system/settings/colmena/default.nix b/modules/system/settings/colmena/default.nix
deleted file mode 100644
index 33e99c23..00000000
--- a/modules/system/settings/colmena/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ config, ... }:
-{
- deployment = {
- allowLocalDeployment = true;
- tags = config.system.nixos.tags;
- };
-}
diff --git a/modules/system/settings/default.nix b/modules/system/settings/default.nix
index 0cea70d4..5a196fae 100644
--- a/modules/system/settings/default.nix
+++ b/modules/system/settings/default.nix
@@ -1,10 +1,8 @@
{ ... }:
{
imports = [
- ./colmena
./font
./locale
- ./logind
./minimal
./nix
./security
diff --git a/modules/system/settings/logind/default.nix b/modules/system/settings/logind/default.nix
deleted file mode 100644
index 78b2fd1e..00000000
--- a/modules/system/settings/logind/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ config, lib, ... }:
-{
- services.logind = {
- powerKey = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) "suspend";
- powerKeyLongPress = "reboot";
- };
-}
diff --git a/modules/system/settings/nix/cache/default.nix b/modules/system/settings/nix/cache/default.nix
deleted file mode 100644
index 3041a621..00000000
--- a/modules/system/settings/nix/cache/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ ... }:
-{
- nix.settings = {
- substituters = [
- "https://colmena.cachix.org"
- "https://nix-community.cachix.org"
- ];
- trusted-public-keys = [
- "colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg="
- "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
- ];
- };
-}
diff --git a/modules/system/settings/nix/channels/default.nix b/modules/system/settings/nix/channels/default.nix
index b81caa1f..965eafe3 100644
--- a/modules/system/settings/nix/channels/default.nix
+++ b/modules/system/settings/nix/channels/default.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, stable, unstable, ... }:
+{ config, lib, pkgs, stable, unstable, ... }:
with pkgs; {
_module.args.pkgsStable = import stable {
inherit (stdenv.hostPlatform) system;
diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix
index 02cb38e6..c1115185 100644
--- a/modules/system/settings/nix/default.nix
+++ b/modules/system/settings/nix/default.nix
@@ -1,20 +1,20 @@
{ pkgs, ... }:
{
imports = [
- ./cache
./channels
- ./maintenence
+ ./gc
./unfree
];
nix = {
package = pkgs.lix;
- settings.experimental-features = [
- "flakes"
- "nix-command"
- ];
+ settings = {
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
+ auto-optimise-store = true;
+ trusted-users = [ "@wheel" ];
+ };
};
-
- # Use a newer implementation of nixos-rebuild
- system.rebuild.enableNg = true;
}
diff --git a/modules/system/settings/nix/gc/default.nix b/modules/system/settings/nix/gc/default.nix
new file mode 100644
index 00000000..0ec262af
--- /dev/null
+++ b/modules/system/settings/nix/gc/default.nix
@@ -0,0 +1,8 @@
+{ ... }:
+{
+ nix.gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 7d";
+ };
+}
diff --git a/modules/system/settings/nix/maintenence/default.nix b/modules/system/settings/nix/maintenence/default.nix
deleted file mode 100644
index f1b190c0..00000000
--- a/modules/system/settings/nix/maintenence/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ ... }:
-{
- nix = let
- common = {
- automatic = true;
- persistent = true;
- };
- in {
- gc = common;
- optimise = common;
- settings.auto-optimise-store = true;
- };
-}
diff --git a/modules/system/settings/security/privilege/default.nix b/modules/system/settings/security/privilege/default.nix
index 0dd9a19c..a2700af0 100644
--- a/modules/system/settings/security/privilege/default.nix
+++ b/modules/system/settings/security/privilege/default.nix
@@ -4,9 +4,4 @@
enable = true;
execWheelOnly = true;
};
-
- # Allow root to be accessed via ssh
- users.users.root.openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden"
- ];
}
diff --git a/modules/system/settings/security/rtkit/default.nix b/modules/system/settings/security/rtkit/default.nix
index eea12fa0..31a54f74 100644
--- a/modules/system/settings/security/rtkit/default.nix
+++ b/modules/system/settings/security/rtkit/default.nix
@@ -1,4 +1,4 @@
{ config, ... }:
{
- security.rtkit.enable = builtins.elem "pc" config.system.nixos.tags;
+ security.rtkit.enable = config.system.desktop.enable;
}
diff --git a/modules/system/users/corn/default.nix b/modules/system/users/corn/default.nix
new file mode 100644
index 00000000..82483f41
--- /dev/null
+++ b/modules/system/users/corn/default.nix
@@ -0,0 +1,19 @@
+{ config, lib, pkgs, ... }:
+{
+ users.users."freecorn" = lib.mkIf config.system.extraUsers.enable {
+ isNormalUser = true;
+ createHome = true;
+ openssh.authorizedKeys.keys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBCADciME1/rtWOlR2BxaAkRSgIZt61SYOgjTi6hw+yS Chinook"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtoHVAmq8Ps7EguBsV3VY4snagzkhH6aXqwbKzuGs2H Radiant"
+ ];
+ extraGroups = [
+ "audio"
+ "video"
+ ];
+ uid = 1001;
+ shell = pkgs.zsh;
+ };
+
+ environment.persistence."/persist".directories = [ "/home/freecorn" ];
+}
diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix
index f882f271..138e7f2e 100644
--- a/modules/system/users/default.nix
+++ b/modules/system/users/default.nix
@@ -1,8 +1,6 @@
-{ ... }:
+{ lib, ... }:
{
- imports = [
- ./freecorn
- ./luna
- ./main
- ];
+ imports = [ ./main ];
+
+ options.system.extraUsers.enable = lib.mkEnableOption "Enable a shared system";
}
diff --git a/modules/system/users/freecorn/default.nix b/modules/system/users/freecorn/default.nix
deleted file mode 100644
index 16e7253a..00000000
--- a/modules/system/users/freecorn/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- user = "freecorn";
-in {
- config = lib.mkIf (builtins.elem "extra-users" config.system.nixos.tags) {
- users.users.${user} = {
- isNormalUser = true;
- createHome = true;
- openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBCADciME1/rtWOlR2BxaAkRSgIZt61SYOgjTi6hw+yS Chinook"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtoHVAmq8Ps7EguBsV3VY4snagzkhH6aXqwbKzuGs2H Radiant"
- ];
- shell = pkgs.zsh;
- uid = 1001;
- };
-
- environment.persistence."/persist".directories = [ "/home/${user}" ];
- };
-}
diff --git a/modules/system/users/luna/default.nix b/modules/system/users/luna/default.nix
index 234d98a6..683b8015 100644
--- a/modules/system/users/luna/default.nix
+++ b/modules/system/users/luna/default.nix
@@ -1,17 +1,17 @@
{ config, lib, ... }:
-let
- user = "luna";
-in {
- config = lib.mkIf (builtins.elem "extra-users" config.system.nixos.tags) {
- users.users.${user} = {
- isNormalUser = true;
- createHome = true;
- openssh.authorizedKeys.keys = [
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJ3hzXkv5MVuGZy4HqfEZD0Ck7ZKiLeVmUTFzGSwZkumCpwX/zirD/tY4SNutPczhhYNn1jwkwnnyCwgkaQ7QWBs72G0opmjXDcSqxXJskSKYgjnUHoPV8uAcMwp5C5GNlwo3DFKXc1c7Sipy1s6y9ZnoKfVmjsr0AhamnC/bHEWg8vx0zuamCzvQ5vLWfpULRKwj286f0s2xaAvYaAJwGD0QMHC0ylFYZuq7Og4HVdlnUt+40BxCi+GAQqsFd4vM+RFjZKKD7ioP5DcIDfvfvxX4UpdKtCxVjeyyF+UJpFnQKytO9HvH4H+CRSAuJ+Vguiq/F3lGhvF0yIQ9M2MD3+tl3RZAj4D6n2ew30mn+QGh2fZgC7Utuzo02pMVUzkpm+mM4x8VyESpC1AuBdh0TAKBwS3ubMpegiCWCfIbNC0CQ/zgIq/5xwhXL8zhmfQrIiULBCd1xqThye0tt7knoPZlVCzOuVYoqxYnwYYGcXhzlArrmgRquyMYHdpFd+DTzJfcQIGdT4a+s0Mc2jRa0KT3A4ZrjziP0OPMQ+cpTd1tmQdEKXN6YhB87Hp9meCefFdzGvVembose82d3BOl45+rWM2ZcH93fNguWwYX0ez8+GiGW4P+gDQcfWfQCNa1daDjgoBwjmbG5rYoS6tfLxSSvYB1YOOK9U3AlPxEuTw== ${user}@ThinkPad-T480-Arch"
- ];
- uid = 1002;
- };
-
- environment.persistence."/persist".directories = [ "/home/${user}" ];
+{
+ users.users."luna" = lib.mkIf config.system.extraUsers.enable {
+ isNormalUser = true;
+ createHome = true;
+ openssh.authorizedKeys.keys = [
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJ3hzXkv5MVuGZy4HqfEZD0Ck7ZKiLeVmUTFzGSwZkumCpwX/zirD/tY4SNutPczhhYNn1jwkwnnyCwgkaQ7QWBs72G0opmjXDcSqxXJskSKYgjnUHoPV8uAcMwp5C5GNlwo3DFKXc1c7Sipy1s6y9ZnoKfVmjsr0AhamnC/bHEWg8vx0zuamCzvQ5vLWfpULRKwj286f0s2xaAvYaAJwGD0QMHC0ylFYZuq7Og4HVdlnUt+40BxCi+GAQqsFd4vM+RFjZKKD7ioP5DcIDfvfvxX4UpdKtCxVjeyyF+UJpFnQKytO9HvH4H+CRSAuJ+Vguiq/F3lGhvF0yIQ9M2MD3+tl3RZAj4D6n2ew30mn+QGh2fZgC7Utuzo02pMVUzkpm+mM4x8VyESpC1AuBdh0TAKBwS3ubMpegiCWCfIbNC0CQ/zgIq/5xwhXL8zhmfQrIiULBCd1xqThye0tt7knoPZlVCzOuVYoqxYnwYYGcXhzlArrmgRquyMYHdpFd+DTzJfcQIGdT4a+s0Mc2jRa0KT3A4ZrjziP0OPMQ+cpTd1tmQdEKXN6YhB87Hp9meCefFdzGvVembose82d3BOl45+rWM2ZcH93fNguWwYX0ez8+GiGW4P+gDQcfWfQCNa1daDjgoBwjmbG5rYoS6tfLxSSvYB1YOOK9U3AlPxEuTw== luna@ThinkPad-T480-Arch"
+ ];
+ extraGroups = [
+ "audio"
+ "video"
+ ];
+ uid = 1002;
};
+
+ environment.persistence."/persist".directories = [ "/home/luna" ];
}
diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix
index dee9152e..f15624ec 100644
--- a/modules/system/users/main/default.nix
+++ b/modules/system/users/main/default.nix
@@ -1,47 +1,55 @@
{ config, lib, pkgs, ... }:
{
- users.users."${config.vars.mainUser}" = {
- isNormalUser = true;
- createHome = true;
- linger = true;
- hashedPassword = config.secrets.accPass.main;
- openssh.authorizedKeys.keyFiles = [
- ../../../../hosts/tower/id_ed25519.pub
- ../../../../hosts/intuos/id_ed25519.pub
- ../../../../hosts/jupiter/id_ed25519.pub
- ];
- openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9"
- ];
- extraGroups = [
- # Privilige
- "wheel"
-
- # Devices
- "audio"
- "input"
- "render"
- "rtkit"
- "video"
-
- # Virtualization
- "incus-admin"
- "kvm"
- "libvirtd"
- "qemu-libvirtd"
-
- # Services
- "minecraft"
- "nfsShare"
- "nginx"
- ];
- shell = pkgs.zsh;
- uid = 1000;
+ options.sysusers = lib.mkOption {
+ type = lib.types.attrs;
};
- home-manager.users."${config.vars.mainUser}" = {
- imports = [ ../../../home ];
- home.stateVersion = lib.mkForce config.system.stateVersion;
+ config = {
+ sysusers.main = "bun";
+
+ users.users."${config.sysusers.main}" = {
+ isNormalUser = true;
+ createHome = true;
+ hashedPassword = config.secrets.accPass.main;
+ openssh.authorizedKeys.keyFiles = [
+ ../../../../hosts/tower/id_ed25519.pub
+
+ ../../../../hosts/intuos/id_ed25519.pub
+ ../../../../hosts/jupiter/id_ed25519.pub
+ ../../../../hosts/redmond/id_ed25519.pub
+
+ ../../../../hosts/midas/id_ed25519.pub
+ ../../../../hosts/kitty/id_ed25519.pub
+ ../../../../hosts/prophet/id_ed25519.pub
+ ];
+ openssh.authorizedKeys.keys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKn+61Hd+nQ5tQgt4219+h/zsnej1j2dHU5uvC3k3Bnw Warden"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9"
+ ];
+ extraGroups = [
+ "wheel"
+
+ "audio"
+ "input"
+ "render"
+ "video"
+
+ "dialout"
+ "disk"
+ "rtkit"
+
+ "kvm"
+ "libvirtd"
+ "qemu-libvirtd"
+
+ "minecraft"
+ "nfsShare"
+ "nginx"
+ ];
+ uid = 1000;
+ shell = pkgs.zsh;
+ };
+
+ home-manager.users."${config.sysusers.main}" = import ../../../home;
};
}
diff --git a/modules/system/variables/default.nix b/modules/system/variables/default.nix
deleted file mode 100644
index 42927b33..00000000
--- a/modules/system/variables/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ lib, ... }:
-{
- options.vars = lib.mkOption {
- type = lib.types.attrs;
- };
-
- config.vars = {
- mainUser = "bun";
- primeDomain = "nixfox.ca";
- mailDomain = "nixfox.ca";
- };
-}