Compare commits

...

59 Commits

Author SHA1 Message Date
Your Name
8defa56f4f fix: remove boot.nix import from elros configuration
Co-authored-by: aider (openrouter/mistralai/devstral-2512:free) <aider@aider.chat>
2025-12-16 19:08:29 +01:00
Your Name
31ae9a3583 feat: add unstable.nix module to flake modules 2025-12-16 19:08:28 +01:00
a44ec01dab Update flake.nix 2025-12-16 18:53:22 +01:00
Your Name
c30e1479cf alros 2025-12-16 18:39:10 +01:00
Your Name
48bfbd1f30 feat: add explicit ROCm and Vulkan support for compilation
Co-authored-by: aider (openrouter/mistralai/devstral-2512:free) <aider@aider.chat>
2025-12-16 18:39:10 +01:00
ddda931c58 galadriel nvidia 2025-12-15 20:54:42 +01:00
9898acd20b jupyter 2025-12-15 20:54:41 +01:00
c82983b6d5 jupyter new packages 2025-12-15 20:53:51 +01:00
338655e0b1 nvidia 2025-12-15 20:53:04 +01:00
2cd032ef2a nvidia 2025-12-15 20:53:02 +01:00
5c25748fec fix 2025-12-14 12:35:24 +01:00
ce86eafd38 coders 2025-12-14 12:24:53 +01:00
6cb75f5957 treefmt 2025-12-09 23:07:55 +01:00
ef13eb8858 fix: allow broken packages in docling module
Co-authored-by: aider (openrouter/google/gemini-3-pro-preview) <aider@aider.chat>
2025-12-08 16:55:51 +01:00
5d9674da2f fix: bind docling-serve to localhost 2025-12-08 16:55:43 +01:00
c76199e73c added basic docling 2025-12-08 16:44:12 +01:00
64f8f359eb dm 2025-12-05 21:04:06 +01:00
2aec319e9f fix sddm 2025-12-05 14:16:41 +01:00
c994b85ca9 vim 2025-12-05 13:27:41 +01:00
243b202360 stylix foot, new colors 2025-12-04 13:56:16 +01:00
2b81323d98 fixed sddm theming 2025-12-04 11:08:42 +01:00
Your Name
0e4702031c updates 2025-12-03 23:25:53 +01:00
Your Name
61896c8791 fix: remove string interpolation from catppuccin-sddm background path
Co-authored-by: aider (openrouter/x-ai/grok-4.1-fast:free) <aider@aider.chat>
2025-12-03 11:00:40 +01:00
a4c23dc36f styled code and dotfiles 2025-12-02 10:43:45 +01:00
b8906d74ef feat: disable stylix auto-enable and enable gtk/qt targets
Co-authored-by: aider (openrouter/google/gemini-3-pro-preview) <aider@aider.chat>
2025-12-01 16:00:07 +01:00
74b1e3f80a refactor: group stylix configuration and remove wallpaper 2025-12-01 15:59:36 +01:00
732ea6f993 fix: update stylix module name and remove conflicting manual theming
Co-authored-by: aider (openrouter/google/gemini-3-pro-preview) <aider@aider.chat>
2025-12-01 15:55:52 +01:00
869172bd48 chore: remove stylix image configuration 2025-12-01 15:55:39 +01:00
9970a7c382 feat: add stylix to home manager config using nix-colors palette
Co-authored-by: aider (openrouter/google/gemini-3-pro-preview) <aider@aider.chat>
2025-12-01 15:50:40 +01:00
3188032143 25.11 final 2025-12-01 15:47:02 +01:00
e39c2a165e fix: resolve NixOS and Home Manager deprecation warnings 2025-12-01 14:42:39 +01:00
b5b7d8560e 25.11 2025-12-01 14:40:43 +01:00
1e0eefe7e4 fix: re-enable useGlobalPkgs to fix missing unstable overlay 2025-12-01 14:36:00 +01:00
73831eef96 chore: update nixpkgs to 25.11 and remove stylix 2025-12-01 14:35:51 +01:00
8da0b07a86 cleanup 2025-12-01 14:25:47 +01:00
db5312b5ca fixes 2025-11-27 21:23:05 +01:00
d3043498a9 fix: adjust kernel params to resolve sleep crashes on legolas 2025-11-27 21:23:05 +01:00
05435bb34d feat: add stylix flake input and enable stylix modules 2025-11-27 21:23:05 +01:00
Your Name
466bde0a26 pull openwebui 2025-11-10 14:33:58 +01:00
Your Name
92b1292880 unstable 2025-11-10 14:22:12 +01:00
4a92a6f4bc kdeconnect testing 2025-11-08 18:46:58 +01:00
2b8f60cf1e kdeconnect 2025-11-03 13:49:10 +01:00
d3c2cd9d70 legoals fixes 2025-11-03 13:31:47 +01:00
0b3df2e535 ollama add granite4:tiny-h 2025-10-27 12:24:58 +01:00
f66c53c9c6 legolas updates 2025-10-27 12:20:34 +01:00
d35039e780 legolas stuff 2025-10-22 12:36:56 +02:00
Your Name
1b188e35e1 sdr stuff 2025-10-19 21:37:46 +02:00
6ec962a860 immich fix 2025-10-16 15:21:22 +02:00
5ba4b94afa jupyteruptade 2025-10-16 15:16:50 +02:00
f79d2959dd immich galadriel 2025-10-16 15:15:24 +02:00
7e048cb77a immich 2025-10-16 15:14:08 +02:00
9e3ababbbc dialout 2025-10-16 13:29:34 +02:00
Your Name
af0b840bdc aragon 2025-10-16 01:39:16 +02:00
20a8370909 final galadriel migration 2025-10-15 12:53:37 +02:00
90da56e58f unstable galadriel 2025-10-14 22:08:09 +02:00
93936eedae add services to galadriel 2025-10-14 21:31:31 +02:00
602bc358ad update galadriel tailscale ip 2025-10-14 21:30:26 +02:00
17cd8d6795 fix miniflux name 2025-10-13 23:50:35 +02:00
Your Name
191835ff2b galadriel 2025-10-13 23:49:50 +02:00
55 changed files with 2095 additions and 1763 deletions

475
flake.lock generated
View File

@@ -1,475 +0,0 @@
{
"nodes": {
"base16-schemes": {
"flake": false,
"locked": {
"lastModified": 1696158499,
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"base16-schemes_2": {
"flake": false,
"locked": {
"lastModified": 1696158499,
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"blog-generator": {
"inputs": {
"flake-utils": "flake-utils",
"nix-colors": "nix-colors",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1760358235,
"narHash": "sha256-uR6lu5QtudOPQrUVVziEzJqAdYMZn+maPxn95a3bs1U=",
"owner": "adrlau",
"repo": "blog-generator",
"rev": "8497f0fada979c6f67e11c5e70f1eb1f6a5e0d4b",
"type": "github"
},
"original": {
"owner": "adrlau",
"repo": "blog-generator",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1731098351,
"narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
"owner": "ipetkov",
"repo": "crane",
"rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"pre-commit-hooks-nix",
"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"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758463745,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1737639419,
"narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "v0.4.2",
"repo": "lanzaboote",
"type": "github"
}
},
"nix-colors": {
"inputs": {
"base16-schemes": "base16-schemes",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1707825078,
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nix-colors_2": {
"inputs": {
"base16-schemes": "base16-schemes_2",
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1707825078,
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1760106635,
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759831965,
"narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c9b6fb798541223bbb396d287d16f43520250518",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1697935651,
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1697935651,
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1730741070,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1760139962,
"narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1731363552,
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"blog-generator": "blog-generator",
"home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"nix-colors": "nix-colors_2",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"sops-nix": "sops-nix",
"unstable": "unstable"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1760063676,
"narHash": "sha256-s5Fjh43skH2L+avOGioLmEHoYZffDbg3abV5h0gjeew=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "897deed0923cc5a1d560c5176abe0d172ec9716d",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1731897198,
"narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "0be641045af6d8666c11c2c40e45ffc9667839b5",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760240450,
"narHash": "sha256-sa9bS9jSyc4vH0jSWrUsPGdqtMvDwmkLg971ntWOo2U=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "41fd1f7570c89f645ee0ada0be4e2d3c4b169549",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1760038930,
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View File

@@ -2,15 +2,19 @@
description = "NixOS configuration for legolas (laptop)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-colors.url = "github:misterio77/nix-colors";
stylix = {
url = "github:nix-community/stylix/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
@@ -18,15 +22,13 @@
};
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.2";
url = "github:nix-community/lanzaboote/v0.4.3";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
blog-generator.url = "github:adrlau/blog-generator";
blog-generator.url = "github:adrlau/blog-generator";
};
outputs =
@@ -36,6 +38,7 @@
unstable,
home-manager,
nix-colors,
stylix,
sops-nix,
lanzaboote,
nixos-hardware,
@@ -49,7 +52,7 @@
# legolas
nixosConfigurations.legolas = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
specialArgs = { inherit inputs system; };
modules = [
./hosts/legolas/configuration.nix
@@ -60,27 +63,30 @@
home-manager.users.gunalx = import ./home/gunalx.nix;
home-manager.backupFileExtension = "bac";
home-manager.extraSpecialArgs = { inherit nix-colors inputs; };
home-manager.sharedModules = [ inputs.sops-nix.homeManagerModules.sops ];
home-manager.sharedModules = [
inputs.sops-nix.homeManagerModules.sops
inputs.stylix.homeModules.stylix
];
}
./modules/unstable.nix
sops-nix.nixosModules.sops
lanzaboote.nixosModules.lanzaboote
nixos-hardware.nixosModules.dell-xps-13-9370
#temporarily for testing run my blog on my laptop
blog-generator.nixosModules.default
];
};
# aragon
nixosConfigurations.aragon = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
specialArgs = { inherit inputs system; };
modules = [
./hosts/aragon/configuration.nix
@@ -91,9 +97,14 @@
home-manager.users.gunalx = import ./home/gunalx.nix;
home-manager.backupFileExtension = "bac";
home-manager.extraSpecialArgs = { inherit nix-colors inputs; };
home-manager.sharedModules = [ inputs.sops-nix.homeManagerModules.sops ];
home-manager.sharedModules = [
inputs.sops-nix.homeManagerModules.sops
inputs.stylix.homeModules.stylix
];
}
./modules/unstable.nix
sops-nix.nixosModules.sops
lanzaboote.nixosModules.lanzaboote
@@ -101,14 +112,13 @@
];
};
# galadriel
nixosConfigurations.galadriel = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
specialArgs = { inherit inputs system; };
modules = [
./modules/unstable.nix
./hosts/galadriel/configuration.nix
sops-nix.nixosModules.sops
@@ -118,7 +128,17 @@
];
};
# elros
nixosConfigurations.elros = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs system; };
modules = [
./modules/unstable.nix
./hosts/elros/configuration.nix
sops-nix.nixosModules.sops
lanzaboote.nixosModules.lanzaboote
];
};
};
}

36
home/aider.nix Normal file
View File

@@ -0,0 +1,36 @@
{
pkgs,
lib,
unstable,
config,
...
}:
{
home.packages = with pkgs; [
aider-chat-full
];
programs.aider-chat = {
enable = true;
package = pkgs.unstable.aider-chat-full;
settings = {
architect = true;
auto-accept-architect = false;
cache-prompts = true;
check-model-accepts-settings = false;
dark-mode = true;
dirty-commits = false;
lint = true;
show-model-warnings = false;
verify-ssl = false;
watch-files=true;
analytics-disable=true;
check-update=false;
multiline=true;
notifications=true;
show-diffs=true;
};
};
}

View File

@@ -59,18 +59,18 @@
YELLOW='\[\e[33m\]'
MAGENTA='\[\e[35m\]'
RED='\[\e[31m\]'
if [[ -n "$SSH_CONNECTION" ]]; then
REMOTE_LABEL="\[''${YELLOW}\] (ssh)\[''${RESET}\]"
else
REMOTE_LABEL=""
fi
# Git branch function
parse_git_branch() {
git branch --show-current 2>/dev/null | awk '{print " (" $1 ")"}'
}
# Set prompt
if [[ $EUID -eq 0 ]]; then
PS1="''${BOLD}''${RED}\u''${RESET}:''${BOLD}''${RED}\h''${REMOTE_LABEL}''${RESET}:''${BOLD}''${GREEN}\w''${MAGENTA}\$(parse_git_branch) ''${BLUE}\A''${RESET}\$ "

View File

@@ -6,150 +6,10 @@
...
}:
let
nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; };
c = config.colorScheme.palette; # Access palette colors
# Generate comprehensive CSS overrides using your color palette
gtkColorOverrides = ''
/* UI Colors - Main variables */
@define-color accent_bg_color #${c.base0D};
@define-color accent_fg_color #${c.base07};
@define-color accent_color #${c.base0D};
@define-color destructive_bg_color #${c.base08};
@define-color destructive_fg_color #${c.base07};
@define-color destructive_color #${c.base08};
@define-color success_bg_color #${c.base0B};
@define-color success_fg_color #${c.base07};
@define-color success_color #${c.base0B};
@define-color warning_bg_color #${c.base0A};
@define-color warning_fg_color #${c.base00};
@define-color warning_color #${c.base0A};
@define-color error_bg_color #${c.base08};
@define-color error_fg_color #${c.base07};
@define-color error_color #${c.base08};
/* Window Colors */
@define-color window_bg_color #${c.base00};
@define-color window_fg_color #${c.base05};
/* View Colors */
@define-color view_bg_color #${c.base00};
@define-color view_fg_color #${c.base05};
/* Header Bar Colors */
@define-color headerbar_bg_color #${c.base01};
@define-color headerbar_fg_color #${c.base05};
@define-color headerbar_border_color #${c.base03};
@define-color headerbar_backdrop_color #${c.base00};
@define-color headerbar_shade_color rgba(0, 0, 0, 0.12);
@define-color headerbar_darker_shade_color rgba(0, 0, 0, 0.12);
/* Sidebar Colors */
@define-color sidebar_bg_color #${c.base01};
@define-color sidebar_fg_color #${c.base05};
@define-color sidebar_backdrop_color #${c.base00};
@define-color sidebar_border_color rgba(0, 0, 0, 0.07);
@define-color sidebar_shade_color rgba(0, 0, 0, 0.07);
/* Card Colors */
@define-color card_bg_color #${c.base01};
@define-color card_fg_color #${c.base05};
@define-color card_shade_color rgba(0, 0, 0, 0.07);
/* Dialog Colors */
@define-color dialog_bg_color #${c.base01};
@define-color dialog_fg_color #${c.base05};
/* Popover Colors */
@define-color popover_bg_color #${c.base01};
@define-color popover_fg_color #${c.base05};
@define-color popover_shade_color rgba(0, 0, 0, 0.07);
/* Miscellaneous Colors */
@define-color shade_color rgba(0, 0, 0, 0.07);
@define-color scrollbar_outline_color #${c.base07};
/* Palette Colors */
@define-color blue_1 #99c1f1;
@define-color blue_2 #62a0ea;
@define-color blue_3 #3584e4;
@define-color blue_4 #1c71d8;
@define-color blue_5 #1a5fb4;
@define-color green_1 #8ff0a4;
@define-color green_2 #57e389;
@define-color green_3 #33d17a;
@define-color green_4 #2ec27e;
@define-color green_5 #26a269;
@define-color yellow_1 #f9f06b;
@define-color yellow_2 #f8e45c;
@define-color yellow_3 #f6d32d;
@define-color yellow_4 #f5c211;
@define-color yellow_5 #e5a50a;
@define-color orange_1 #ffbe6f;
@define-color orange_2 #ffa348;
@define-color orange_3 #ff7800;
@define-color orange_4 #e66100;
@define-color orange_5 #c64600;
@define-color red_1 #f66151;
@define-color red_2 #ed333b;
@define-color red_3 #e01b24;
@define-color red_4 #c01c28;
@define-color red_5 #a51d2d;
@define-color purple_1 #dc8add;
@define-color purple_2 #c061cb;
@define-color purple_3 #9141ac;
@define-color purple_4 #813d9c;
@define-color purple_5 #613583;
@define-color brown_1 #cdab8f;
@define-color brown_2 #b5835a;
@define-color brown_3 #986a44;
@define-color brown_4 #865e3c;
@define-color brown_5 #63452c;
@define-color light_1 #ffffff;
@define-color light_2 #f6f5f4;
@define-color light_3 #deddda;
@define-color light_4 #c0bfbc;
@define-color light_5 #9a9996;
@define-color dark_1 #77767b;
@define-color dark_2 #5e5c64;
@define-color dark_3 #3d3846;
@define-color dark_4 #241f31;
@define-color dark_5 #000000;
/* Compatibility Colors */
@define-color theme_bg_color #${c.base00};
@define-color theme_fg_color #${c.base05};
@define-color theme_base_color #${c.base00};
@define-color theme_text_color #${c.base05};
@define-color theme_selected_bg_color #${c.base0D};
@define-color theme_selected_fg_color #${c.base07};
@define-color insensitive_bg_color #${c.base01};
@define-color insensitive_fg_color #${c.base03};
@define-color insensitive_base_color #${c.base00};
@define-color borders rgba(0, 0, 0, 0.15);
@define-color theme_unfocused_bg_color #${c.base00};
@define-color theme_unfocused_fg_color #${c.base05};
@define-color theme_unfocused_base_color #${c.base00};
@define-color theme_unfocused_text_color #${c.base05};
@define-color theme_unfocused_selected_bg_color #${c.base0D};
@define-color theme_unfocused_selected_fg_color #${c.base07};
@define-color unfocused_insensitive_color #${c.base01};
@define-color unfocused_borders rgba(0, 0, 0, 0.15);
/* Standard GTK Colors */
@define-color bg_color #${c.base00};
@define-color fg_color #${c.base05};
@define-color base_color #${c.base00};
@define-color text_color #${c.base05};
@define-color selected_bg_color #${c.base0D};
@define-color selected_fg_color #${c.base07};
@define-color tooltip_bg_color #${c.base01};
@define-color tooltip_fg_color #${c.base05};
'';
in
{
imports = [ nix-colors.homeManagerModules.default ];
imports = [
nix-colors.homeManagerModules.default
];
colorScheme = {
slug = "teal-green-dark";
@@ -157,101 +17,40 @@ in
author = "Adrian";
palette = {
# Base16 TealGreen Dark Theme - Enhanced Teal Version
base00 = "0c1f1d"; # Default background - deeper teal base
base01 = "12302d"; # Lighter background (status bars)
base02 = "1c3b38"; # Selection background
base03 = "26514d"; # Comments, secondary content
base04 = "447b76"; # Dark foreground (status bars)
base05 = "c4e5e0"; # Default foreground
base06 = "d4f0ed"; # Light foreground
base07 = "f0fbfa"; # Lightest background
base08 = "5fcac0"; # Variables, markup link text - teal accent
base09 = "40bfa5"; # Integers, constants - teal-green
base0A = "60d5b0"; # Classes, search highlight - bright teal
base0B = "40c0a0"; # Strings, inserted - true teal (less green)
base0C = "30d0c0"; # Support, escape characters - cyan-teal
base0D = "2aa198"; # Functions, headings - classic teal
base0E = "3cb4ac"; # Keywords, selectors - teal-blue
base0F = "70d0c0"; # Deprecated tags - light teal
# base00 = "0c1f1d"; # Default background - deeper teal base
# base01 = "12302d"; # Lighter background (status bars)
# base02 = "1c3b38"; # Selection background
# base03 = "26514d"; # Comments, secondary content
# base04 = "447b76"; # Dark foreground (status bars)
# base05 = "c4e5e0"; # Default foreground
# base06 = "d4f0ed"; # Light foreground
# base07 = "f0fbfa"; # Lightest background
# base08 = "5fcac0"; # Variables, markup link text - teal accent
# base09 = "40bfa5"; # Integers, constants - teal-green
# base0A = "60d5b0"; # Classes, search highlight - bright teal
# base0B = "40c0a0"; # Strings, inserted - true teal (less green)
# base0C = "30d0c0"; # Support, escape characters - cyan-teal
# base0D = "2aa198"; # Functions, headings - classic teal
# base0E = "3cb4ac"; # Keywords, selectors - teal-blue
# base0F = "70d0c0"; # Deprecated tags - light teal
## catppuccin mocha based
base00 = "0b1c1a"; # Default background — deeper teal-dark background
base01 = "153532"; # Lighter background / status bars
base02 = "1b3d39"; # Selection background / line highlight
base03 = "275454"; # Comments, secondary UI elements
base04 = "6f7389"; # Dark foreground / secondary text
base05 = "95a0b8"; # Default foreground / main text
base06 = "a8b2ce"; # Light foreground / lighter UI elements
base07 = "ccdffa"; # Lightest background / highlight background
base08 = "f38ba8"; # Errors, alerts — red-pink accent
base09 = "e0a878"; # Numbers, constants — muted peach/orange
base0A = "b8c071"; # Warnings, highlights — golden-yellow
base0B = "4fbf93"; # Strings, inserts — teal-green
base0C = "2ac5c2"; # Support, escape/sequences — cyan-teal
base0D = "2fa6b0"; # Functions, types — classic teal-blue
base0E = "c7a8f5"; # Keywords, special — soft magenta/purple
base0F = "b2b4cf"; # Deprecated / special tags — light cool grey-lavender
};
};
# GTK configuration with custom theme
gtk = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "Adwaita-Dark";
package = pkgs.adwaita-icon-theme;
size = 24;
};
gtk2.extraConfig = ''
style "custom-dark" {
bg[NORMAL] = "#${c.base00}"
bg[PRELIGHT] = "#${c.base02}"
bg[ACTIVE] = "#${c.base01}"
bg[SELECTED] = "#${c.base0D}"
bg[INSENSITIVE] = "#${c.base01}"
fg[NORMAL] = "#${c.base05}"
fg[PRELIGHT] = "#${c.base06}"
fg[ACTIVE] = "#${c.base07}"
fg[SELECTED] = "#${c.base07}"
fg[INSENSITIVE] = "#${c.base03}"
base[NORMAL] = "#${c.base01}"
base[PRELIGHT] = "#${c.base02}"
base[ACTIVE] = "#${c.base0D}"
base[SELECTED] = "#${c.base0D}"
base[INSENSITIVE] = "#${c.base00}"
text[NORMAL] = "#${c.base05}"
text[PRELIGHT] = "#${c.base06}"
text[ACTIVE] = "#${c.base07}"
text[SELECTED] = "#${c.base07}"
text[INSENSITIVE] = "#${c.base03}"
}
widget_class "*" style "custom-dark"
gtk-application-prefer-dark-theme="true"
'';
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
# Inject comprehensive color overrides for GTK 3
gtk3.extraCss = gtkColorOverrides;
# Inject comprehensive color overrides for GTK 4
gtk4.extraCss = gtkColorOverrides;
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
icon-theme = "Papirus-Dark";
};
};
home.packages = with pkgs; [
papirus-icon-theme
gnome-themes-extra
adwaita-icon-theme
];
qt = {
enable = true;
#platformTheme.name = "gtk";
platformTheme.name = "gtk3";
style.name = "gtk2";
};
}

View File

@@ -9,8 +9,7 @@
fcitx5-rime
fcitx5-mozc
fcitx5-gtk
fcitx5-configtool
fcitx5-material-color # Add the theme package
qt6Packages.fcitx5-configtool
];
settings = {
@@ -18,16 +17,6 @@
globalOptions.Hotkey = {
TriggerKey = "Control+space";
};
# Addon settings for the theme
addons.classicui = {
globalSection = {
Theme = "Material-Color-Dark";
DarkTheme = "Material-Color-Dark";
UseDarkTheme = true;
};
};
inputMethod = {
"Groups/0" = {
Name = "Default";

View File

@@ -12,38 +12,38 @@
main = {
term = "xterm-256color";
font = "0xproto:size=14";
#font = "0xproto:size=14";
#dpi-aware = "yes";
};
mouse = {
hide-when-typing = "yes";
};
colors = {
alpha = "0.7";
foreground = "${config.colorScheme.palette.base05}";
background = "${config.colorScheme.palette.base00}";
#colors = {
#alpha = "0.7";
#foreground = "${config.colorScheme.palette.base05}";
#background = "${config.colorScheme.palette.base00}";
regular0 = "${config.colorScheme.palette.base00}";
regular1 = "${config.colorScheme.palette.base08}";
regular2 = "${config.colorScheme.palette.base0B}";
regular3 = "${config.colorScheme.palette.base0A}";
regular4 = "${config.colorScheme.palette.base0D}";
regular5 = "${config.colorScheme.palette.base0E}";
regular6 = "${config.colorScheme.palette.base0C}";
regular7 = "${config.colorScheme.palette.base05}";
#regular0 = "${config.colorScheme.palette.base00}";
#regular1 = "${config.colorScheme.palette.base08}";
#regular2 = "${config.colorScheme.palette.base0B}";
#regular3 = "${config.colorScheme.palette.base0A}";
#regular4 = "${config.colorScheme.palette.base0D}";
#regular5 = "${config.colorScheme.palette.base0E}";
#regular6 = "${config.colorScheme.palette.base0C}";
#regular7 = "${config.colorScheme.palette.base05}";
bright0 = "${config.colorScheme.palette.base03}";
bright1 = "${config.colorScheme.palette.base08}";
bright2 = "${config.colorScheme.palette.base0B}";
bright3 = "${config.colorScheme.palette.base0A}";
bright4 = "${config.colorScheme.palette.base0D}";
bright5 = "${config.colorScheme.palette.base0E}";
bright6 = "${config.colorScheme.palette.base0C}";
bright7 = "${config.colorScheme.palette.base07}";
selection-foreground = "${config.colorScheme.palette.base00}";
selection-background = "${config.colorScheme.palette.base0A}";
};
#bright0 = "${config.colorScheme.palette.base03}";
#bright1 = "${config.colorScheme.palette.base08}";
#bright2 = "${config.colorScheme.palette.base0B}";
#bright3 = "${config.colorScheme.palette.base0A}";
#bright4 = "${config.colorScheme.palette.base0D}";
#bright5 = "${config.colorScheme.palette.base0E}";
#bright6 = "${config.colorScheme.palette.base0C}";
#bright7 = "${config.colorScheme.palette.base07}";
#selection-foreground = "${config.colorScheme.palette.base00}";
#selection-background = "${config.colorScheme.palette.base0A}";
#};
};

View File

@@ -7,7 +7,7 @@
{
programs.git = {
enable = true;
extraConfig = {
settings = {
pull.rebase = true;
push.autoSetupRemote = true;
color.ui = "auto";

View File

@@ -12,8 +12,11 @@
./bash.nix
./xdg.nix
#graphical
# theming
./colors.nix
./stylix.nix
#graphical
./fuzzel.nix
./swaylock.nix
./gtklock.nix
@@ -29,6 +32,8 @@
./mako.nix
./foot.nix
./zed.nix
./aider.nix
./opencode.nix
./neovim.nix
./fcitx5.nix

18
home/kdeconnect.nix Normal file
View File

@@ -0,0 +1,18 @@
{
pkgs,
lib,
config,
...
}:
{
home.packages = with pkgs; [
kdePackages.xdg-desktop-portal-kde
kdePackages.kdeconnect-kde
];
services.kdeconnect = {
enable = true;
#package = pkgs.kdePackages.kdeconnect-kde;
package = pkgs.gnomeExtensions.gsconnect;
indicator = true;
};
}

View File

@@ -5,47 +5,133 @@
viAlias = true;
vimAlias = true;
defaultEditor = true;
# Required for render-markdown and coc
withPython3 = true;
withNodeJs = true;
extraConfig = ''
set backspace=indent,eol,start
syntax on
set tabstop=2 softtabstop=0 autoindent expandtab shiftwidth=2 smarttab
# Keep your python deps for latex rendering
extraPython3Packages = ps: [ ps.pylatexenc ];
" Use <Tab> completion instead of ctrl n and ctrl p
inoremap <expr> <Tab> pumvisible() ? "\<C-y>" : "\<Tab>"
inoremap <expr> <S-Tab> "\<Tab>"
'';
extraLuaConfig = ''
vim.wo.number = true
-- vim.wo.relativenumber = true
vim.api.nvim_set_option("clipboard", "unnamedplus")
'';
extraPackages = [ pkgs.fzf ]; # For fzf-vim functionality
plugins = with pkgs.vimPlugins; [
vim-nix
vim-lastplace
vim-yaml
fzf-vim
chadtree
typst-vim
typst-preview-nvim
aider-nvim
#magma-nvim #jupyter
#molten-nvim #jupyter
extraPackages = with pkgs; [
fzf
wl-clipboard
xclip
ripgrep # Nvim-tree (and fzf) work better with ripgrep installed
];
# CoC configuration (replacing coc-rust-analyzer plugin)
coc.enable = true;
coc.settings = {
"coc.globalExtensions" = [
"coc-rust-analyzer"
];
};
plugins = with pkgs.vimPlugins; [
# --- UI / File Explorer (Replaces Chadtree) ---
nvim-tree-lua
nvim-web-devicons
# --- Fuzzy Finder ---
fzf-vim
# --- Editor Utilities ---
vim-lastplace
vim-nix
vim-yaml
# --- Coding / LSP (CoC) ---
# Keeping CoC as requested (switching to Native LSP is a bigger task)
coc-nvim
coc-vimtex
coc-rust-analyzer
# --- Markdown / LaTeX / Typst ---
vimtex
typst-vim
typst-preview-nvim
render-markdown-nvim
markdown-preview-nvim
# --- AI ---
aider-nvim
# --- Treesitter ---
(nvim-treesitter.withPlugins (p: [
p.markdown
p.markdown_inline
p.latex
p.yaml
p.bash
p.rust
p.nix
p.lua
]))
];
# We can consolidate most settings into Lua for simplicity
extraLuaConfig = ''
-- ============================
-- 1. General Settings
-- ============================
vim.opt.number = true
vim.opt.backspace = { "indent", "eol", "start" }
vim.opt.tabstop = 2
vim.opt.softtabstop = 0
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
vim.opt.smarttab = true
vim.opt.autoindent = true
-- Clipboard setup
vim.opt.clipboard = "unnamedplus"
-- ============================
-- 2. File Explorer (Nvim-tree)
-- ============================
-- This replaces Chadtree. It is much more stable.
require("nvim-tree").setup({
sort = { sorter = "case_sensitive" },
view = { width = 30 },
renderer = { group_empty = true },
filters = { dotfiles = false },
})
-- Toggle file explorer with <Leader>e
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<CR>', { silent = true })
-- ============================
-- 3. Render Markdown Setup
-- ============================
require('render-markdown').setup({
latex = {
enabled = true,
converter = 'latex2text',
highlight = 'RenderMarkdownMath',
top_pad = 0,
bottom_pad = 0,
},
})
'';
# Vimscript is still best for specific CoC and FZF tweaks
extraConfig = ''
syntax on
set mouse=a
" --- CoC Configuration ---
" Use Tab to trigger completion and navigate
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" Make <CR> (Enter) accept the selected item
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" --- Keymaps ---
" Browser Preview Hotkey
nmap <leader>m <Plug>MarkdownPreviewToggle
'';
};
}

File diff suppressed because it is too large Load Diff

141
home/opencode.nix Normal file
View File

@@ -0,0 +1,141 @@
{
pkgs,
lib,
unstable,
config,
...
}:
{
home.packages = with pkgs; [
opencode
];
programs.opencode = {
enable = true;
enableMcpIntegration = true;
settings = {
model = "anthropic/claude-sonnet-4-20250514";
small_model = "anthropic/claude-haiku-4-5";
autoshare = false;
autoupdate = false;
};
agents = {
code-reviewer = ''
# Code Reviewer Agent
You are a senior software engineer specializing in code reviews.
Focus on code quality, security, and maintainability.
## Guidelines
- Review for potential bugs and edge cases
- Check for security vulnerabilities
- Ensure code follows best practices
- Suggest improvements for readability and performance
'';
debugger = ''
# Debugger Agent
You are a software engineer specializing in debugging and troubleshooting.
Focus on identifying issues, providing insights into existing bugs, and suggesting improvements to the debugging process.
## Guidelines
- Look for unhandled exceptions, crashes, or error states.
- Identify and remove redundant or unnecessary debug/print statements.
- Check for proper logging practices: ensure log levels (info, debug, error) are used correctly.
- Examine error messages for clarity and contextensure they aid in troubleshooting.
- Look for missing or incorrect error handling and suggest improvements.
- Trace the flow of execution to catch logical or state-related bugs.
- Ensure relevant variable states are being monitored during runtime to spot anomalies.
- Suggest improvements to breakpoints, watchpoints, or other debugging tools for better visibility.
- Look for performance bottlenecks that could be causing issues and suggest optimizations.
- Check for edge cases and race conditions that might not be covered by current debugging.
- Ensure debugging steps or tools dont affect production environments (i.e., avoid verbose logging in production).
- Document findings and proposed fixes clearly for future reference.
'';
simplifier = ''
# Simplifier Agent
You are a software engineer specializing in simplifying and refactoring complex code.
Focus on making the code more readable, maintainable, and easier to understand without altering its functionality.
## Guidelines
- Break down long or complex functions into smaller, well-named helper functions or methods.
- Identify and remove any redundant or duplicate logic, consolidating wherever possible.
- Use more descriptive variable and function names to improve clarity.
- Simplify nested loops or conditionals (e.g., consider early returns to reduce indentation).
- Replace complex data structures or algorithms with simpler, more efficient alternatives if appropriate.
- Refactor complex conditional logic (e.g., using polymorphism, strategy pattern, or lookup tables where applicable).
- Replace hardcoded values with constants or configuration variables to improve flexibility.
- Group related logic together to improve cohesion within classes or functions.
- Ensure the code follows the DRY (Don't Repeat Yourself) principle and refactor to remove duplication.
- Simplify error handling by centralizing common error paths or using more consistent exception handling.
- Remove unnecessary comments or redundant code that doesnt add value to readability.
- Check for opportunities to use built-in language features or libraries to reduce custom code (e.g., use `map()` instead of for-loops in Python).
- Ensure code is modular and maintainable, facilitating easier testing and future updates.
- Use early exits or guard clauses to minimize nested logic and make the code more straightforward.
'';
};
commands = {
commit = ''
# Commit Command
Create a git commit with proper message formatting following conventional commits.
Usage: /commit [message]
'';
};
rules = ''
### **General Project Guidelines**
#### **Separation of Concerns**
* Keep your code **loosely coupled** components/modules should only know about what they need.
* Maintain clear **separation between domain logic and business logic** ensure your domain layer is independent of infrastructure or framework specific details.
* Ensure **separation of data concerns** never mix UI data, business data, and domain entities in a single layer.
#### **Typing and Type Safety**
* **Always define types** explicitly for variables, parameters, and return values.
* Avoid using `any` if you're unsure about a type, lean on **unknown** or **generics** until you can define it properly.
* **Interfaces and Types** should be descriptive and reusable prefer interfaces for object shapes, and types for unions/intersections or specific business rules.
* Avoid overcomplicating types focus on clarity and consistency.
#### **Code Simplicity**
* Write **simple, understandable code** don't over engineer solutions unless absolutely necessary.
* Keep methods and functions **small and focused** follow the Single Responsibility Principle.
* **Comment only when necessary** to explain complex or non obvious patterns **no comments for simple or self explanatory code**.
#### **Production-Ready Code**
* Always write **production-grade code** optimize for maintainability, readability, and scalability.
* Ensure **robust error handling** catch edge cases, validate inputs, and handle exceptions gracefully.
#### **Framework and Library Usage**
* Use frameworks and libraries **where they make sense**, but avoid unnecessary dependencies, we usually want to keep dependencies down.
* Follow **framework best practices** for structure, state management, and lifecycle methods
* Keep **UI and business logic separate** don't directly tie your UI components to business logic; use hooks or services to handle interactions.
#### **Documentation**
* **Document key architecture decisions** especially if they are complex or non intuitive.
* Only document the **why** and **how** when it's not obvious avoid redundant or trivial comments.
* Keep your documentation to the developmentlog.md Make a new section, dont write to long, just briefely what needs to be documented.
#### **Performance Considerations**
* Optimize for **readability first**, then **performance** measure performance bottlenecks before optimizing.
* When optimizing, our first priority is finding arcitectural problems, then finding out ways to parralelize.
'';
};
}

View File

@@ -17,10 +17,13 @@
programs.ssh = {
enable = true;
compression = true;
# compression moved to matchBlocks."*"
# Default config is deprecated, disabling it and managing defaults manually if needed
enableDefaultConfig = false;
matchBlocks = {
"*" = {
compression = true;
identityFile = [
"~/.ssh/nixos"
"~/.ssh/id_ed25519"
@@ -82,7 +85,7 @@
"galadriel" = {
port = 6969;
hostname = "100.84.215.84";
hostname = "100.110.96.125";
};
"gandalf" = {

68
home/stylix.nix Normal file
View File

@@ -0,0 +1,68 @@
{ pkgs, config, ... }:
{
stylix = {
enable = true;
#autoEnable = false;
#targets.gtk.enable = true;
#targets.qt.enable = true;
#manually disable stuff i have done manually
targets.mako.enable = false;
#targets.foot.enable = false;
targets.swaylock.enable = false;
targets.fuzzel.enable = false;
targets.zed.enable = false;
base16Scheme = {
scheme = config.colorScheme.name;
author = config.colorScheme.author;
base00 = config.colorScheme.palette.base00;
base01 = config.colorScheme.palette.base01;
base02 = config.colorScheme.palette.base02;
base03 = config.colorScheme.palette.base03;
base04 = config.colorScheme.palette.base04;
base05 = config.colorScheme.palette.base05;
base06 = config.colorScheme.palette.base06;
base07 = config.colorScheme.palette.base07;
base08 = config.colorScheme.palette.base08;
base09 = config.colorScheme.palette.base09;
base0A = config.colorScheme.palette.base0A;
base0B = config.colorScheme.palette.base0B;
base0C = config.colorScheme.palette.base0C;
base0D = config.colorScheme.palette.base0D;
base0E = config.colorScheme.palette.base0E;
base0F = config.colorScheme.palette.base0F;
};
opacity = {
desktop = 0.5;
terminal = 0.7;
};
fonts = {
sizes = {
applications = 14;
terminal = 24;
desktop = 12;
};
serif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Serif";
};
sansSerif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans";
};
monospace = {
package = pkgs.notonoto-35;
#name = "NOTONOTO-35-Bold";
name = "NOTONOTO-35";
};
emoji = {
package = pkgs.noto-fonts-monochrome-emoji;
name = "Noto Emoji";
};
};
};
}

View File

@@ -11,15 +11,16 @@
timeouts = [
{
timeout = 180;
timeout = 210;
#command = "swaylock";
command = "gtklock";
resumeCommand = null;
}
{
timeout = 210;
timeout = 180;
command = "niri msg action power-off-monitors";
resumeCommand = null;
resumeCommand = "niri msg action power-on-monitors";
}
];

View File

@@ -30,7 +30,7 @@ in
layout = [
{
label = "lock";
action = "swaylock";
action = "gtklock";
text = "Lock";
keybind = "l";
}

View File

@@ -8,9 +8,10 @@
home.packages = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal
xdg-desktop-portal-wlr
#xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
xdg-desktop-portal-gnome
kdePackages.xdg-desktop-portal-kde
xdg-launch
xdg-ninja
xdg-utils

View File

@@ -1,12 +1,73 @@
{
pkgs,
lib,
unstable,
config,
...
}:
{
home.packages = with pkgs; [
copilot-language-server
github-copilot-cli
nixd
vscode-extensions.github.copilot
];
programs.zed-editor = {
enable = true;
package = pkgs.zed-editor-fhs;
package = pkgs.unstable.zed-editor-fhs;
extraPackages = with pkgs; [
nodejs
copilot-language-server
github-copilot-cli
nixd
vscode-extensions.github.copilot
];
extensions = [
"nix"
"toml"
"rust"
"html"
"yaml"
"python"
"make"
"xml"
"dockerfile"
"vue"
"latex"
"csv"
"rainbow csv"
"snippets"
"typst"
"mermaid"
"markdownlint"
"markdown oxide"
"java"
"dart"
"go"
"c#"
"json"
"flask snippets"
"python snippets"
"flutter snippets"
"tokyo night themes"
"opencode"
];
userSettings = {
theme = {
mode = "system";
dark = "Tokyo Night";
light = "Tokyo Night Storm";
};
hour_format = "hour24";
node = {
path = lib.getExe pkgs.nodejs;
npm_path = lib.getExe' pkgs.nodejs "npm";
};
load_direnv = "shell_hook";
base_keymap = "VSCode";
show_whitespaces = "boundary";
};
};
}

View File

@@ -2,50 +2,75 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
# Core system modules
../../modules/boot.nix
../../modules/zram.nix
../../modules/displaymanager.nix
../../modules/polkit.nix
../../modules/nix.nix
../../modules/openssh.nix
../../secrets/sops.nix
../../secrets/sopsconf.nix
../../modules/sound.nix
../../modules/gunalx.nix
../../modules/pam.nix
../../modules/polkit.nix
../../modules/zram.nix
# Networking and remote access
../../modules/openssh.nix
../../modules/tailscale.nix
../../modules/podman.nix
../../modules/steam.nix
# User interface and desktop
../../modules/displaymanager.nix
../../modules/xdg.nix
../../modules/sound.nix
../../modules/bluetooth.nix
../../modules/desktopApplications.nix
# Development tools and user configuration
../../modules/basePackages.nix
../../modules/develPackages.nix
../../modules/desktopApplications.nix
../../modules/comfyui.nix
../../modules/gunalx.nix
# Containerization and cloud
../../modules/podman.nix
# Scientific and data tools
../../modules/jupyterhub.nix
# Software and gaming
../../modules/steam.nix
# SDR (Software Defined Radio)
../../modules/rtlsdr.nix
../../modules/websdr.nix
# Secrets management
../../secrets/sops.nix
../../secrets/sopsconf.nix
];
services.desktopManager.gnome.enable = true;
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Setup keyfile
boot.initrd.secrets = {
"/crypto_keyfile.bin" = null;
};
# Enable swap on luks
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".device = "/dev/disk/by-uuid/08650b6b-6143-4503-8bf5-a3d32ef62d73";
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".keyFile = "/crypto_keyfile.bin";
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".device =
"/dev/disk/by-uuid/08650b6b-6143-4503-8bf5-a3d32ef62d73";
boot.initrd.luks.devices."luks-08650b6b-6143-4503-8bf5-a3d32ef62d73".keyFile =
"/crypto_keyfile.bin";
networking.hostName = "aragon"; # Define your hostname.
time.timeZone = "Europe/Amsterdam";
@@ -59,15 +84,14 @@
# sleep wakeup rules
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
'';
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
'';
#comment out to enable sleep. Uncommented over vacations
# systemd.targets.sleep.enable = false;
# systemd.targets.suspend.enable = false;
# systemd.targets.hibernate.enable = false;
# systemd.targets.hybrid-sleep.enable = false;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];

View File

@@ -1,26 +1,35 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = ["amdgpu" ];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usb_storage"
"usbhid"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ "amdgpu" ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
hardware.amdgpu.opencl.enable = true;
hardware.amdgpu.amdvlk.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
hardware.graphics = {
enable = true;
};
services.xserver.videoDrivers = [ "amdgpu" ];
systemd.tmpfiles.rules = [
@@ -28,62 +37,84 @@
];
nixpkgs.config.rocmSupport = true;
environment.variables = {
HSA_OVERRIDE_GFX_VERSION="10.3.0";
nixpkgs.config.rocmTargets = [ "gfx1030" ];
environment.variables = {
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
};
# Environment variables for ROCm
environment.sessionVariables = {
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
ROCM_PATH = "${pkgs.rocmPackages.rocm-core}/opt/rocm";
HIP_PATH = "${pkgs.rocmPackages.rocm-core}/opt/rocm/hip";
};
#hardware.opengl.extraPackages32 = with pkgs; [
# driversi686Linux.amdvlk
#];
environment.systemPackages = with pkgs; [
lact
rocmPackages.rocminfo
rocmPackages.rocm-smi
rocmPackages.rocm-runtime
rocmPackages.rocm-device-libs
rocmPackages.rocm-core
rocmPackages.rocm-cmake
rocmPackages.rocgdb
rocmPackages.rocblas
rocmPackages.rccl
];
systemd.packages = with pkgs; [ lact ];
systemd.services.lactd.wantedBy = ["multi-user.target"];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/8ab16ad5-08d2-44f9-a9e4-2e6240bfd8f8";
fsType = "ext4";
};
fileSystems."/mnt/steam" =
{ device = "/dev/disk/by-id/nvme-Samsung_SSD_990_PRO_with_Heatsink_2TB_S7HPNJ0X304250L-part1";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-31bf11fb-518a-408a-af06-93af528a5985".device = "/dev/disk/by-uuid/31bf11fb-518a-408a-af06-93af528a5985";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/9A50-906F";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/c7cdfab4-2c92-42de-b951-ccc6fcd7b7d7"; }
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
};
# Enable Vulkan support
hardware.opengl.enable = true;
hardware.opengl.extraPackages = with pkgs; [
vulkan-loader
vulkan-tools
vulkan-headers
];
# You *can* still put utilities here
environment.systemPackages = with pkgs; [
vulkan-tools
clinfo
rocmPackages.clr
rocmPackages.rocminfo
rocmPackages.rocm-runtime
rocmPackages.rocm-core
rocmPackages.rocm-smi
rocmPackages.rocblas
rocmPackages.rccl
rocmPackages.hipcc
lact
rocmPackages.rocminfo
rocmPackages.rocm-smi
rocmPackages.rocm-runtime
rocmPackages.rocm-device-libs
rocmPackages.rocm-core
rocmPackages.rocm-cmake
rocmPackages.rocgdb
rocmPackages.rocblas
rocmPackages.rccl
rocmPackages.hipcc
];
systemd.packages = with pkgs; [ lact ];
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/8ab16ad5-08d2-44f9-a9e4-2e6240bfd8f8";
fsType = "ext4";
};
fileSystems."/mnt/steam" = {
device = "/dev/disk/by-id/nvme-Samsung_SSD_990_PRO_with_Heatsink_2TB_S7HPNJ0X304250L-part1";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-31bf11fb-518a-408a-af06-93af528a5985".device =
"/dev/disk/by-uuid/31bf11fb-518a-408a-af06-93af528a5985";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/9A50-906F";
fsType = "vfat";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/c7cdfab4-2c92-42de-b951-ccc6fcd7b7d7"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp10s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,56 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
config,
lib,
pkgs,
...
}:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
../../modules/zram.nix
../../modules/nix.nix
../../modules/openssh.nix
../../modules/gunalx.nix
../../secrets/sops.nix
../../secrets/sopsconf.nix
../../modules/pam.nix
../../modules/tailscale.nix
../../modules/basePackages.nix
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "elros";
networking.networkmanager.enable = true;
time.timeZone = "Europe/Amsterdam";
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment?
}

View File

@@ -0,0 +1,55 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/7fa4de3a-20bb-4d0f-b049-dd6a0a0aee6e";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/E04D-431D";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
services.qemuGuest.enable = true;
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -1,108 +1,75 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
../../modules/boot.nix
../../modules/zram.nix
../../modules/nix.nix
../../modules/openssh.nix
../../secrets/sops.nix
../../secrets/sopsconf.nix
../../modules/pam.nix
../../modules/tailscale.nix
../../modules/podman.nix
../../modules/basePackages.nix
../../modules/develPackages.nix
];
config,
lib,
pkgs,
...
}:
# Bootloader.
#boot.loader.grub.enable = true;
#boot.loader.grub.device = "/dev/nvme0n1";
#boot.loader.grub.useOSProber = true;
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
./nvidia.nix
../../modules/boot.nix
../../modules/zram.nix
../../modules/zfs.nix
../../modules/polkit.nix
../../modules/nix.nix
../../modules/openssh.nix
../../modules/gunalx.nix
../../secrets/sops.nix
../../secrets/sopsconf.nix
../../modules/pam.nix
../../modules/tailscale.nix
../../modules/podman.nix
../../modules/basePackages.nix
../../modules/develPackages.nix
# Setup keyfile
boot.initrd.secrets = {
"/boot/crypto_keyfile.bin" = null;
};
../../modules/vaultvarden.nix
../../modules/jellyfin.nix
../../modules/jupyterhub.nix
../../modules/qbittorrent.nix
../../modules/mealie.nix
../../modules/miniflux.nix
../../modules/ollama.nix
../../modules/openwebui.nix
../../modules/immich.nix
#boot.loader.grub.enableCryptodisk = true;
];
boot.initrd.luks.devices."luks-c88c45f4-58e0-424c-98e0-6e4a73655349".keyFile = "/boot/crypto_keyfile.bin";
networking.hostName = "galadriel"; # Define your hostname.
#Load zfs pool
boot.zfs.extraPools = [ "Main" ];
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable networking
networking.hostName = "galadriel";
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Oslo";
time.timeZone = "Europe/Amsterdam";
# Select internationalisation properties.
i18n.defaultLocale = "nb_NO.UTF-8";
# Configure keymap in X11
services.xserver.xkb = {
layout = "no";
variant = "";
};
# Configure console keymap
console.keyMap = "no";
# Define a user account. Don't forget to set a password with passwd.
users.users.gunalx = {
isNormalUser = true;
description = "Adrian Gunnar Lauterer";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
git
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment?
}

View File

@@ -1,24 +1,47 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usb_storage"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/edc50395-0b8d-4945-8d9e-69fd3dbb6e7e";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/7789ad41-d578-40bc-bf86-b761e0a4921e";
fsType = "btrfs";
};
boot.initrd.luks.devices."luks-c88c45f4-58e0-424c-98e0-6e4a73655349".device = "/dev/disk/by-uuid/c88c45f4-58e0-424c-98e0-6e4a73655349";
boot.initrd.luks.devices."NIXROOT".device =
"/dev/disk/by-uuid/082790fd-3d4b-4307-8a43-b9c56bd86e03";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/3DE0-D86E";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
@@ -28,7 +51,7 @@
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0f3u3.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0f3u2.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View File

@@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
{
# Enable OpenGL
hardware.graphics = {
enable = true;
enable32Bit = true;
};
# Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = ["nvidia"];
boot = {
blacklistedKernelModules = [ "nouveau" ];
extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
initrd.kernelModules = [ "nvidia" ];
};
hardware.nvidia = {
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
#powerManagement.enable = true;
# Fine-grained power management. Turns off GPU when not in use. Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the independent third-party "nouveau" open source driver).
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false; #need proprietary for cuda.
# Enable the Nvidia settings menu, accessible via `nvidia-settings`.
#nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
# Enable the CUDA toolkit
#install packages
environment.systemPackages = with pkgs; [
cudaPackages.cudatoolkit
cudaPackages.cudnn
nvtopPackages.nvidia
cudaPackages.nccl
pkgs.cudaPackages.libcublas
];
}

View File

@@ -33,6 +33,9 @@
../../modules/develPackages.nix
../../modules/jupyterhub.nix
../../modules/blog.nix
../../modules/ollama.nix
../../modules/docling.nix # temp for dev
../../modules/kdeconnect.nix
../../modules/desktopApplications.nix
];
@@ -43,6 +46,10 @@
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
#testing terminal from printer cable.
services.printing.enable = true;
boot.kernelModules = [ "usblp" ];
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.videoDrivers = [
@@ -59,6 +66,7 @@
enableSSHSupport = true;
};
services.desktopManager.gnome.enable = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.

View File

@@ -1,20 +1,31 @@
{ config, lib, pkgs, modulesPath, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.kernelPackages = pkgs.linuxPackages_zen;
#boot.kernelPackages = pkgs.linuxPackages_zen;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [
"nvme_core.default_ps_max_latency_us=0"
"pcie_aspm=off"
"pcie_port_pm=off"
"mem_sleep_default=deep"
];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "uas" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"nvme"
"uas"
"rtsx_pci_sdmmc"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-label/NIXROOT";
@@ -24,46 +35,48 @@
fileSystems."/boot" = {
device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
boot.initrd.luks.devices.luks_secure = {
device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
crypttabExtraOpts = [
"tpm2-device=auto"
"tpm2-measure-pcr=yes"
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [
{
device = "/swapfile";
size = 98 * 1024; # 32GB in MB
}
];
boot.kernel.sysctl = {
"vm.swappiness" = 10;
boot.initrd.luks.devices.luks_secure = {
device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
crypttabExtraOpts = [
#"tpm2-device=auto"
#"tpm2-measure-pcr=yes"
];
};
services.logind.lidSwitch = "suspend-then-hibernate";
powerManagement.enable = true;
boot.kernel.sysctl = {
# "vm.swappiness" = 10;
};
systemd.targets.hibernate.enable = false;
#services.logind.lidSwitch = "suspend";
powerManagement.enable = true;
# Disable hibernation
systemd.sleep = {
extraConfig = ''
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no
'';
};
# Disable PCIe wakeups
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="pci", DRIVER=="pcieport", ATTR{power/wakeup}="disabled"
'';
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [ vpl-gpu-rt intel-media-sdk ];
enable = true;
extraPackages = with pkgs; [ vpl-gpu-rt ];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -8,11 +8,19 @@
environment.systemPackages = with pkgs; [
vim
git
wget
htop
busybox
nixfmt-rfc-style
nixfmt-tree
zip
unzip
ripgrep
eza
fastfetch
];
}

View File

@@ -1,8 +1,8 @@
{ pkgs, ... }:
{ pkgs, ... }:
{
services.blog-generator = {
enable = true;
contentDir = "/var/lib/www/blog/content";
port = 8080;
};
}
};
}

View File

@@ -13,13 +13,6 @@
kernelParams = [
"quiet"
"splash"
"loglevel=0"
"udev.log_priority=3"
"vt.global_cursor_default=0"
"rd.systemd.show_status=auto"
"rd.udev.log_level=3"
"boot.shell_on_fail"
"console=tty1"
];
initrd = {

View File

@@ -17,12 +17,12 @@
gparted
libreoffice-fresh
kdePackages.okular
zed-editor-fhs
#zed-editor-fhs
inkscape
krita
sweethome3d.application
audacity
bitwarden
bitwarden-desktop
openvpn
zettlr # notes
logseq
@@ -33,9 +33,7 @@
prusa-slicer
freecad-wayland
openscad-unstable
kicad-unstable
kicadAddons.kikit
kicadAddons.kikit-library
#kicad-unstable
easyeffects
musescore
mpv

View File

@@ -6,10 +6,13 @@
}:
{
environment.systemPackages = with pkgs; [
aider-chat-full
zip
unzip
jq
curl
wget
openssl
gdb
@@ -46,7 +49,7 @@
python3
python3Packages.uv
python3Packages.ipykernel
python3Packages.flask
python3Packages.flask-sqlalchemy
python3Packages.flask-socketio
@@ -57,8 +60,11 @@
python3Packages.requests
python3Packages.flake8
python3Packages.torch
python3Packages.litellm
python3Packages.pycryptodome
github-copilot-cli
#dotnet-sdk_8
#dotnet-sdk_9
#dotnet-sdk_10

View File

@@ -6,18 +6,40 @@
}:
{
imports = [ ];
services.displayManager = {
enable = true;
sessionPackages = with pkgs; [ niri ];
defaultSession = "niri";
sddm = {
enable = true;
autoNumlock = true;
enableHidpi = true;
};
lemurs.enable = true;
};
#environment.systemPackages = [
# (pkgs.catppuccin-sddm.override {
# flavor = "mocha";
# accent = "teal";
# fontSize = "24";
# background = ../home/Wallpapers/1346679.jpg;
# loginBackground = true;
# })
#];
#services.displayManager = {
# enable = true;
# sessionPackages = with pkgs; [ niri ];
# defaultSession = "niri";
# sddm = {
# enable = true;
# autoNumlock = true;
# enableHidpi = true;
# wayland.enable = true;
# theme = "catppuccin-mocha-teal";
# package = pkgs.kdePackages.sddm;
# };
#};
}

16
modules/docling.nix Normal file
View File

@@ -0,0 +1,16 @@
{
config,
pkgs,
lib,
...
}:
{
services.docling-serve = {
enable = false; #this is broken for now.
package = pkgs.python312Packages.docling-serve;
port = 5001;
host = "127.0.0.1";
openFirewall = true;
};
}

View File

@@ -15,6 +15,8 @@
"networking"
"podman"
"pipewire"
"plugdev"
"dialout"
];
packages = with pkgs; [ ];
};

23
modules/immich.nix Normal file
View File

@@ -0,0 +1,23 @@
{
config,
pkgs,
lib,
...
}:
{
services.immich = {
enable = true;
port = 2283;
host = "0.0.0.0";
openFirewall = true;
mediaLocation = "/Main/Data/media/pictures";
accelerationDevices = null;
settings = {
newVersionCheck.enabled = false;
};
};
}

View File

@@ -1,9 +1,14 @@
{ config, pkgs, lib, ... }:
{
users.groups.media.members = ["jellyfin"]; #have media directory owned by media group
config,
pkgs,
lib,
...
}:
{
users.groups.media.members = [ "jellyfin" ]; # have media directory owned by media group
services.jellyfin = {
enable = true;
group = "media";
group = "media";
openFirewall = true;
};

View File

@@ -1,33 +1,42 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
let
myPython = pkgs.python3;
myPython = pkgs.python3;
myJupyterHubEnv = myPython.withPackages (ps: with ps; [
jupyterhub
jupyterhub-systemdspawner
ipython
jupyterlab
notebook
ipykernel
numpy
scipy
pandas
matplotlib
seaborn
scikit-learn
]);
myJupyterHubEnv = myPython.withPackages (
ps: with ps; [
jupyterhub
jupyterhub-systemdspawner
ipython
jupyterlab
notebook
ipykernel
numpy
scipy
pandas
matplotlib
seaborn
scikit-learn
]
);
myJupyterLabEnv = myPython.withPackages (ps: with ps; [
jupyterhub
jupyterlab
ipykernel
numpy
scipy
pandas
matplotlib
seaborn
scikit-learn
]);
myJupyterLabEnv = myPython.withPackages (
ps: with ps; [
jupyterhub
jupyterlab
ipykernel
numpy
scipy
pandas
matplotlib
seaborn
scikit-learn
]
);
in
{
@@ -39,13 +48,14 @@ in
python3Packages.seaborn
python3Packages.scikit-learn
];
users.users.tdt4117 = {
isNormalUser = true;
home = "/home/tdt4117";
description = "tdt4117 - delete after h25";
extraGroups = [ ];
extraGroups = [ ];
# openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... " ];
extraGroups = [ ];
};
services.jupyterhub = {
@@ -58,11 +68,14 @@ in
c.Authenticator.allow_all = True
c.ConfigurableHTTPProxy.api_url = 'http://0.0.0.0:8770'
c.JupyterHub.bind_url = 'http://0.0.0.0:8771'
'';
'';
kernels = {
python3 = let
env = (pkgs.python3.withPackages (pythonPackages: with pythonPackages; [
python3 =
let
env = (
pkgs.python3.withPackages (
pythonPackages: with pythonPackages; [
ipykernel
pandas
scikit-learn
@@ -73,21 +86,36 @@ in
tqdm
numpy
scipy
]));
in {
displayName = "Python 3 for machine learning";
argv = [
"${env.interpreter}"
"-m"
"ipykernel_launcher"
"-f"
"{connection_file}"
];
language = "python";
logo32 = "${env}/${env.sitePackages}/ipykernel/resources/logo-32x32.png";
logo64 = "${env}/${env.sitePackages}/ipykernel/resources/logo-64x64.png";
};
pip
torch
torchvision
lightning
numpy
scipy
matplotlib
scikit-image
jupyterlab
ipykernel
pillow
tqdm
pandas
]
)
);
in
{
displayName = "Python 3 for machine learning";
argv = [
"${env.interpreter}"
"-m"
"ipykernel_launcher"
"-f"
"{connection_file}"
];
language = "python";
logo32 = "${env}/${env.sitePackages}/ipykernel/resources/logo-32x32.png";
logo64 = "${env}/${env.sitePackages}/ipykernel/resources/logo-64x64.png";
};
};
};
}

27
modules/kdeconnect.nix Normal file
View File

@@ -0,0 +1,27 @@
{
pkgs,
lib,
config,
...
}:
{
environment.systemPackages = with pkgs; [
kdePackages.xdg-desktop-portal-kde
kdePackages.kdeconnect-kde
gnomeExtensions.gsconnect
];
programs.kdeconnect = {
#package = pkgs.kdePackages.kdeconnect-kde;
package = pkgs.gnomeExtensions.gsconnect;
enable = true;
};
networking.firewall = rec {
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = allowedTCPPortRanges;
};
}

View File

@@ -1,4 +1,9 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
services.mealie = {
enable = true;

17
modules/miniflux.nix Normal file
View File

@@ -0,0 +1,17 @@
{
config,
pkgs,
lib,
...
}:
{
sops.secrets."miniflux/adminCredentialsFile" = {
restartUnits = [ "miniflux.service" ];
mode = "0755";
};
services.miniflux.enable = true;
services.miniflux.config.LISTEN_ADDR = "0.0.0.0:8089";
services.miniflux.adminCredentialsFile = config.sops.secrets."miniflux/adminCredentialsFile".path;
}

View File

@@ -1,14 +0,0 @@
{ config, pkgs, lib, ... }:
{
sops.secrets."miniflux/adminCredentialsFile" = {
restartUnits = [ "miniflux.service" ];
owner = "miniflux";
mode = "0755";
};
services.miniflux.enable = true;
services.miniflux.config.LISTEN_ADDR = "0.0.0.0:8089";
services.miniflux.adminCredentialsFile = config.sops.secrets."miniflux/adminCredentialsFile".path;
}

View File

@@ -1,4 +1,10 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
unstable,
...
}:
let
hostname = config.networking.hostName;
@@ -24,6 +30,7 @@ in
"gemma3:4b"
"qwen2.5vl:3b"
"granite3.2-vision"
"granite4:tiny-h"
"gpt-oss:20b"
];
};

View File

@@ -1,4 +1,15 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
let
sshLookup = pkgs.writeShellScriptBin "ssh-lookup-root-pubs" ''
#!/bin/sh
cat /root/.ssh/*.pub 2>/dev/null
'';
in
{
services.openssh = {
enable = true;
@@ -14,12 +25,12 @@
# "aes256-ctr"
# # remove some weaker ciphers
#];
authorizedKeysCommand = "${sshLookup}";
};
services.endlessh-go = {
enable = true;
port = 22;
openFirewall = true;
};
services.sshguard.enable = true; #protection against brute force attacks
services.sshguard.enable = true; # protection against brute force attacks
}

59
modules/openwebui.nix Normal file
View File

@@ -0,0 +1,59 @@
{
config,
pkgs,
lib,
...
}:
let
stateDir = "/var/lib/open-webui";
port = 11111;
in
{
virtualisation.podman.enable = true;
virtualisation.oci-containers.backend = "podman";
virtualisation.oci-containers.containers.openwebui = {
image = "ghcr.io/open-webui/open-webui:latest";
autoStart = true;
ports = [
"0.0.0.0:${toString port}:8080"
];
volumes = [
"${stateDir}/data:/app/backend/data"
"${stateDir}/static:/app/backend/static"
"${stateDir}/build:/app/frontend/build"
];
extraOptions = [ "--pull=newer" ];
environment = {
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
WEBUI_AUTH = "True";
ENABLE_SIGNUP = "True";
DEFAULT_USER_ROLE = "pending";
ENV = "prod";
# Optional — helps internal routing
WEBUI_PORT = toString port;
WEBUI_HOST = "0.0.0.0";
};
};
# Create persistent state directories (like StateDirectory in systemd)
systemd.tmpfiles.rules = [
"d ${stateDir}/data 0755 root root - -"
"d ${stateDir}/static 0755 root root - -"
"d ${stateDir}/build 0755 root root - -"
];
# Optional — open firewall for access
networking.firewall.allowedTCPPorts = [ port ];
}

View File

@@ -1,18 +1,25 @@
{ config, lib, pkgs, ... }:
let
interfaceaddress = builtins.readFile config.sops.secrets."qbittorrent/interfaceAddress".path;
in
{
config,
lib,
pkgs,
...
}:
{
sops.secrets."qbittorrent/interfaceAddress" = {
restartUnits = [ "qbittorrent-nox.service" ];
owner = "qbittorrent";
mode = "0755";
};
sops.templates."qbittorrent-interface-addr.conf".content = ''
# This is injected via sops template
interfaceAddress = "${config.sops.placeholder."qbittorrent/interfaceAddress"}";
'';
sops.templates."qbittorrent-interface-addr.conf".owner = "qbittorrent";
users.users.qbittorrent = {
group = lib.mkForce "media";
};
users.groups.qbittorrent = {};
users.groups.qbittorrent = { };
services.qbittorrent = {
enable = true;
@@ -22,58 +29,58 @@ in
serverConfig = {
LegalNotice.Accepted = true;
Meta.MigrationVersion=6;
Network.PortForwardingEnabled=true;
Meta.MigrationVersion = 6;
Network.PortForwardingEnabled = true;
Preferences = {
WebUI = {
AuthSubnetWhitelist="192.168.1.0/24, 100.0.0.0/8";
AuthSubnetWhitelistEnabled=true;
UseUPnP=false;
AuthSubnetWhitelist = "192.168.1.0/24, 100.0.0.0/8";
AuthSubnetWhitelistEnabled = true;
UseUPnP = false;
};
BitTorrent = {
Session = {
AddExtensionToIncompleteFiles=true;
AlternativeGlobalDLSpeedLimit=1000;
AlternativeGlobalUPSpeedLimit=1000;
AnonymousModeEnabled=false;
BTProtocol="Both";
BandwidthSchedulerEnabled=false;
DefaultSavePath="/Main/Data/media/Downloads";
Encryption=1;
FinishedTorrentExportDirectory="/Main/Data/media/Downloads/torrents-complete";
GlobalDLSpeedLimit=0;
GlobalMaxRatio=1.5;
GlobalUPSpeedLimit=0;
I2P.Enabled=true;
IgnoreLimitsOnLAN=true;
IncludeOverheadInLimits=true;
Interface="tun0";
#InterfaceAddress="${config.sops.placeholder."qbittorrent/interfaceAddress"}";
InterfaceAddress="${interfaceaddress}";
InterfaceName="tun0";
LSDEnabled="true";
MaxActiveCheckingTorrents=15;
MaxRatioAction=1;
Port=44183;
Preallocation=true;
QueueingSystemEnabled=false;
SubcategoriesEnabled=true;
Tags="movie, anime";
TempPath="/Main/Data/media/Downloads/temp";
TempPathEnabled=true;
TorrentContentLayout="Subfolder";
TorrentExportDirectory="/Main/Data/media/Downloads/torrents";
UseAlternativeGlobalSpeedLimit=false;
BitTorrent = {
Session = {
AddExtensionToIncompleteFiles = true;
AlternativeGlobalDLSpeedLimit = 1000;
AlternativeGlobalUPSpeedLimit = 1000;
AnonymousModeEnabled = false;
BTProtocol = "Both";
BandwidthSchedulerEnabled = false;
DefaultSavePath = "/Main/Data/media/Downloads";
Encryption = 1;
FinishedTorrentExportDirectory = "/Main/Data/media/Downloads/torrents-complete";
GlobalDLSpeedLimit = 0;
GlobalMaxRatio = 1.5;
GlobalUPSpeedLimit = 0;
I2P.Enabled = true;
IgnoreLimitsOnLAN = true;
IncludeOverheadInLimits = true;
Interface = "tun0";
InterfaceAddress = "${config.sops.placeholder."qbittorrent/interfaceAddress"}";
#InterfaceAddress="${interfaceaddress}";
InterfaceName = "tun0";
LSDEnabled = "true";
MaxActiveCheckingTorrents = 15;
MaxRatioAction = 1;
Port = 44183;
Preallocation = true;
QueueingSystemEnabled = false;
SubcategoriesEnabled = true;
Tags = "movie, anime";
TempPath = "/Main/Data/media/Downloads/temp";
TempPathEnabled = true;
TorrentContentLayout = "Subfolder";
TorrentExportDirectory = "/Main/Data/media/Downloads/torrents";
UseAlternativeGlobalSpeedLimit = false;
};
};
};
RSS = {
AutoDownloader = {
DownloadRepacks=true;
EnableProcessing=true;
SmartEpisodeFilter="s(\\d+)e(\\d+), (\\d+)x(\\d+), \"(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})\", \"(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})\"";
RSS = {
AutoDownloader = {
DownloadRepacks = true;
EnableProcessing = true;
SmartEpisodeFilter = "s(\\d+)e(\\d+), (\\d+)x(\\d+), \"(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})\", \"(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})\"";
};
Session.EnableProcessing = true;
};
Session.EnableProcessing=true;
};
General.Locale = "en";
};
};

21
modules/rtlsdr.nix Normal file
View File

@@ -0,0 +1,21 @@
{
config,
pkgs,
lib,
...
}:
{
hardware.rtl-sdr.enable = true;
environment.systemPackages = with pkgs; [
libusb1
pkgs.rtl-sdr
gqrx
cubicsdr
openwebrx
];
}

19
modules/unstable.nix Normal file
View File

@@ -0,0 +1,19 @@
{
config,
pkgs,
inputs,
system,
...
}:
let
unstableOverlay = final: prev: {
unstable = import inputs.unstable {
inherit system;
config = prev.config;
};
};
in
{
nixpkgs.overlays = [ unstableOverlay ];
}

View File

@@ -1,21 +1,26 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# environment.systemPackages = [
# pkgs.sendmail
# ];
environment.systemPackages = [
pkgs.system-sendmail
];
sops.secrets."vaultwarden/environmentFile" = {
restartUnits = [ "vaultwarden.service" ];
owner = "vaultwarden";
mode = "0755";
};
sops.secrets."vaultwarden/environmentFile" = {
restartUnits = [ "vaultwarden.service" ];
owner = "vaultwarden";
mode = "0755";
};
services.vaultwarden = {
enable = true;
environmentFile = config.sops.secrets."vaultwarden/environmentFile".path;
dbBackend = "sqlite";
backupDir = "/var/backup/vaultwarden";
};
services.vaultwarden = {
enable = true;
environmentFile = config.sops.secrets."vaultwarden/environmentFile".path;
dbBackend = "sqlite";
backupDir = "/var/backup/vaultwarden";
};
}

13
modules/websdr.nix Normal file
View File

@@ -0,0 +1,13 @@
{
config,
pkgs,
lib,
...
}:
{
hardware.rtl-sdr.enable = true;
services.openwebrx.enable = true;
}

View File

@@ -14,18 +14,19 @@
xdg = {
autostart.enable = true;
menus.enable= true;
icons.enable= true;
sounds.enable= true;
menus.enable = true;
icons.enable = true;
sounds.enable = true;
portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal
xdg-desktop-portal-wlr
#xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
xdg-desktop-portal-gnome
kdePackages.xdg-desktop-portal-kde
xdg-launch
xdg-ninja
xdg-utils

24
modules/zfs.nix Normal file
View File

@@ -0,0 +1,24 @@
{
config,
pkgs,
lib,
...
}:
{
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.forceImportRoot = false;
networking.hostId = "1ccccd3a";
services.zfs.trim.enable = true;
services.zfs.autoScrub.enable = true;
services.zfs.autoSnapshot.enable = true;
services.zfs.autoSnapshot.flags = "-k -p --utc";
environment.systemPackages = with pkgs; [
zfs
zfsnap
zfstools
zfsbackup
lz4
];
}

View File

@@ -1,41 +1,52 @@
#ENC[AES256_GCM,data:dz8znC0Os5eA4nUkoqaMVw==,iv:cx8HN12ClwwUZxn2/6mc1Q5Eh2XBIRsrhG/ETRf0cnw=,tag:AuGmWa+LM9dcfVlAs1CuOw==,type:comment]
#ENC[AES256_GCM,data:7kh9f2LAKp46UTh8LmDqvK8xOhHO9mVUD2yzLg4LRR2WU98EpztHmDcHKOF0AG60NsndYaw1en5efU0x/NVAzfdTVPJA2apDs3vtAlzGjvv593Snwb2wa4iK0tM0beMyGvzkSEPs8HOuSLvNpLHWaB1xlC0=,iv:eBoUwZfMPhBnT2+jWqT/EGh/CVNK5qiYeaspFf1VJxY=,tag:nEcuwi2nnACadGR8zw63HA==,type:comment]
#ENC[AES256_GCM,data:iFOJJlRLRz2m7NyHzPhgUg==,iv:cx8HN12ClwwUZxn2/6mc1Q5Eh2XBIRsrhG/ETRf0cnw=,tag:ITcKcojB8Cpk5cICcxV/Hw==,type:comment]
#ENC[AES256_GCM,data:kvu25CX2iZURTBGQXYZTkwT00EqhPNF/ORglzJCsDRthR9hwLomlCzsdDCCwBmbEYbUSnyup0/yt6kj5gUA1iTpoGLVJK1EMoAUm7H7Vl4V0XheizUyTUJdfQUzQQXONzB2kTlE2DHuIWKN5Bz8+LKqoDrI=,iv:eBoUwZfMPhBnT2+jWqT/EGh/CVNK5qiYeaspFf1VJxY=,tag:yY+w4rJvDHLo93HgkcKahw==,type:comment]
acme:
certs: ENC[AES256_GCM,data:L9v0y/T4Vq+fZt5U8YAcyxtvMzv8w+gCwk2z5N027cYiuauuNFYDQ4WV5bTfDL1cSjp30oYvGTlgn3+8s9MA8xqaPJytCNNClRK4isvZKP1YdiVwKdxTg814LDzgPoZsyErSHb+MvgMEUpONifRxFJ7n1HHqcyfeXpV1Bx0=,iv:dnct9KU24ZVaQThA6rTTClRjT+vTi4aD+7UV+oiqoVU=,tag:vTMcHHexHVST3r4wiiTuXA==,type:str]
certs: ENC[AES256_GCM,data:v3eIoxXPCGU3nnj9LbpC6q9TIbmw0pwlBCjyfsmMxAMgp5oZttHUimXU3jmrFSDNLMXKyKp5ibBpL+pJDl+HGXbZ2ERWUfV0xqI+vUWetnO8tN4VrW0NZNs/TxdwdTVEA/st8zYON+Qnxrd0xUYAz2TzM9T4cEaRCpTKdIg=,iv:dnct9KU24ZVaQThA6rTTClRjT+vTi4aD+7UV+oiqoVU=,tag:eFmep+I41nVf51/i3v/53Q==,type:str]
github:
api: ENC[AES256_GCM,data:QYXx+9QxXJ4WwDp6FsaSmrngs/+hBugGD8L6ZdiAgu/1/RW/ip1IEC52g49N70PGh545fAone3IiZJKGxqHeitSxTFv111cmTL4dq5s1yXEwUrsrll8n6rEVMJeHnPeAhz8MNYNxJuIfwugp7XlT61v2f/ylNVa77ZubSdNa5w==,iv:Cdnlb8LFQgsWnjEl+eQUHYIiVpXFabb70FFtnWDfIl8=,tag:vzzfJlQFQBncjLJvmFxuzw==,type:str]
api: ENC[AES256_GCM,data:PcalL0rNd0nfNPMlWP05FWh3ff6rp5eQUmu3NzKmuSPcS5w6zSKCLsoCegltENjTWomGAJDoJF8rYfE3tTo4xQBAzFsK7v3GFXfefB+Ec7/FrUT6jjcHK4+c0e1u3cAgUkFpKq+IzS0yDBgMtXuC5oRzw0u0cEjXT4akiyO9Hg==,iv:GVPXrS9gwpw5JgsO6+YAMT96CsX7dz0NAcaq/IxXzec=,tag:Vxb4LOf0mm52W7Ege7mi6A==,type:str]
nginx:
defaultpass: ENC[AES256_GCM,data:kbWRuL4GiHjOoy4bvDZN9etrnP9mm3Sc5+ltxXzFzU5G1cbHAa6Si9zzhoA67/MXXvOQ1mp31rQpV1K/WsrxGaajFdHgVYGUJB/RaZfZfg1THF5qvqR7vdOiVRWSIalzGMOSUyJTNg2dgQMbymVbmc/k/vZjkjjsI3oze7oN/NZnQ7nolGybQ6W8DCTRzHi5x20/zTJdXNmJf450az9sWOw7i1A6Avg2pPZ9t2N0WyuIcy1MsQICs7PE4ztrxIF82IsFLQNj6LmXXRQaZ9dCF/3h3yyNShfjgI2owYMmrRJssZCdF5dOPq+HVCEfE3jYBFcAWrvCCnYBczCx+WGl+5sQbfJtZdcDGw1bRw41I71h/W4micjo6W5XbeHVx+Rd,iv:h6gn2VKancyy6dZlON99zjRj4smArwt6I4a3PRjGfZ8=,tag:F++P/Qhh+uUUhBJYp3rGvA==,type:str]
defaultpass: ENC[AES256_GCM,data:dJn/Q0jV83PgfFH2ODJO/nXGqew2TZG3ItudJZQ/eCo7Ek2IPlHHQq52bzaVYPqhxUsvXpLV9FgR3FQVOHyiUK3MBsLDNvCTzpnALSflnpj0nKqrXWg3YgEKfi+FdHQ1s0SFQqBOsEw+Xt6eWkNykrl9Jgq5UF7Bp4iC4jmDwQeAFIWaIsWK0117X4seBRQc5rxz1XYNsTaVTzp102I1QmrWLRHGjuvpT5jLVvNEoaU/imT+beAmQAnq5pFOMiEwd4q5FFUdy8XHi7CcT4fql92m2I61pgQbjnHwGklLZvRYO5gIKLwj7u19x8lnFBefDoAshuZOch8397T+vjTxVe0fsuZeLAtLXdPKwoF3L0jp4ffNmPq8H3BTnFwJ2NZo,iv:h6gn2VKancyy6dZlON99zjRj4smArwt6I4a3PRjGfZ8=,tag:Gt4yl0zK7vF3Is/g8cow0g==,type:str]
qbittorrent:
interfaceAddress: ENC[AES256_GCM,data:GsDv+UB07bQGh/DISw==,iv:Hn1zGJweLj5jy8sk4aN9rob/6kfzo7iLXPgaLBIMSVs=,tag:fbKSrAIOqTsnCCI1DBUZkA==,type:str]
interfaceAddress: ENC[AES256_GCM,data:mj1YDgdKrXNuHVNJqQ==,iv:FNfwK9VdNswm19fZ7Nu1IpNO0/ZehSOiGIIrKVUkBrk=,tag:9FZx1qGJd1g/ySyNQ02YYw==,type:str]
miniflux:
adminCredentialsFile: ENC[AES256_GCM,data:FPcdTiJqbI6MloU9JqAYPABoD/odegXks+JyEeCri8hOV0dPMd0TNDV8fN1bbIiJ4llzaclZbjl0HKM=,iv:5fd3O008aP34+7lGlG8vBPAIdmEjFPoneH+rJ6d9TI0=,tag:HKOHjGLiAIDBR54HJv9teA==,type:str]
adminCredentialsFile: ENC[AES256_GCM,data:aBOsgGUMAFmU6LfCL0RGv/gNnnwHdJEXDmw2UrR/OaU0jXW0PLvRYx+9tvJFEotmXzEFoOdx0IeBplc=,iv:5fd3O008aP34+7lGlG8vBPAIdmEjFPoneH+rJ6d9TI0=,tag:eBaZx9uyMe/HKfSWi9QW4w==,type:str]
ai:
openai: ENC[AES256_GCM,data:aFNl4S66JSpP94Lky0x10F5mAJMQ7XWIOTmFjq0IdZYoxqjHZW8nnwbUcsU4zHjBNrFwEyZJNw8QWWoA0LHYRIJzdiCOFk/xWTgAssaDSbXnozIYsa14RkHUma4fho1s/g6QgwFLtgtv1Qr/nlunwjp+m1d34w4MHjSNQnwcGl14ib3suvzorTkCZKI3tg1JGi3cCva0vYzpAACIT54dfaqM0tsoq3w=,iv:rFad2sTdvNHZ5n/DgTLUfHe1qjR8O9nTagsWO5qvbJs=,tag:HFEtMDWis+7N/+ULl7Fu5A==,type:str]
openrouter: ENC[AES256_GCM,data:KCxE/tf/5wXmCuEIN4dXExUki18hcbTOYWFuNIT3T4+HsZ0/Y/FkTmlivjYsYmgdZlA+o/Pb2i1nnkAVruIZJkl3xOK+10LeVQ==,iv:pvVc8JThQL+adYo3lyM2N+RrM1rVL8IqN25R6DTplsQ=,tag:6DuvUBY9PgFXL40Tv4SPlA==,type:str]
fireworks: ENC[AES256_GCM,data:NRMhwIzashk1oKPB4A8ExFa3K8bE7kWqLSzL,iv:awolsk2O0nx/8UutC4DDxxNcQCMMt376pbtBUFbkjkw=,tag:BzbZmZhLZ1rMXtZCwfdW1g==,type:str]
cerebras: ENC[AES256_GCM,data:WcdDsWIgKr0lRb/daoqmzl6E5q3ToICHMLJKrj2rW7pdDpEIZ95DtdNFGQE8Vpy3u9x/SA==,iv:1tZU5nfWCur/Uk54RccS7ldv+94D3CKPgAeK30PB8j4=,tag:IeCgemTemEcKr94YwQKevQ==,type:str]
groq: ENC[AES256_GCM,data:m/BTJoBCP6pxM9zPsf2V78BaHGrueakFjtqkut4fuXxluSlEXVDCCupWVbKF2Eo8phrOhxGcgVc=,iv:taiWwphOVhbLuO5ygf5iDIvhEoAxncTEQ8CFNKOObP4=,tag:VFU4ORxUodiGf9dNINYoww==,type:str]
mistral: ENC[AES256_GCM,data:tZ7gZatfyhffKyKmlbtiNEp9MaIp4cVvSkZbrHFaAKE=,iv:r9QSqstFiR9QrLehHrQu09iaF0PYroz/p1ENChch/I0=,tag:iOjSupJ5ZFAyAcuxXcjNpg==,type:str]
openai: ENC[AES256_GCM,data:jHABPUEDjpfoHmMQtYzBaUM5zvU7YUF4e6nEKWD/mVm+wlaC6w0F1PbWlJ18B4zsYJnrws36qbrbbArUKjnbBNABhQTYueCJgGopklM052UDeAZoS8VrIcXdD61wY6XcyEIB3weMVABulixhpkhZ1QtIPt1u70nFaU7bG4u1SmKU7M492nwYJTJGs+MvQVurFO4AHbM8mNhvi5lqtNvIJQtLuevZTbc=,iv:rFad2sTdvNHZ5n/DgTLUfHe1qjR8O9nTagsWO5qvbJs=,tag:IPWtHD9wcIdvNhuLLDfiFA==,type:str]
openrouter: ENC[AES256_GCM,data:I31Oo3UuA7o3tvDqPR1eoCWrHS9+HGdGOJnXPVyC5q/XrA5zJ52TZVgt6cJJ91VB4vlFTPVP2yoJmJgesrSLx6Bwvw/Eglywfg==,iv:pvVc8JThQL+adYo3lyM2N+RrM1rVL8IqN25R6DTplsQ=,tag:JC5Mobbfddvi5aOL3hxyGg==,type:str]
fireworks: ENC[AES256_GCM,data:mRaJOZMePIVpv+49AeRt+3tQhIpBHQitKV4S,iv:awolsk2O0nx/8UutC4DDxxNcQCMMt376pbtBUFbkjkw=,tag:yBZirjH6+va78jsSoqirPA==,type:str]
cerebras: ENC[AES256_GCM,data:ZGXy4FWauVb6cqFIDNCjYZhA3fb7t8s9wHEQvV5UQS0LwOM1F6+prid5entFiU/zJhxUDA==,iv:1tZU5nfWCur/Uk54RccS7ldv+94D3CKPgAeK30PB8j4=,tag:y9ZDVTTOExTY6nLRbIxoLg==,type:str]
groq: ENC[AES256_GCM,data:63HBVYQEXCqG/xN7zluZl3yledOlqxou09Lvgh585LnZAvIFUN+eSDn44mT5mgpqMsRL8Wbqjq8=,iv:taiWwphOVhbLuO5ygf5iDIvhEoAxncTEQ8CFNKOObP4=,tag:1j7wCg9tFuP36mBr5yN0dA==,type:str]
mistral: ENC[AES256_GCM,data:z7qUyaJBaLF+fe3DFMRjkUEXiXGZwtFeC189fuEGjEo=,iv:r9QSqstFiR9QrLehHrQu09iaF0PYroz/p1ENChch/I0=,tag:XN7jcXv6TftbXaFBsZYVmw==,type:str]
vaultwarden:
environmentFile: ENC[AES256_GCM,data:HUFCO4di1hSEMitCSGy5wiDNPZ858NIlW/BnaxrFkE4Tws9RwvmhJ+l89/w7A0VGHAp3yNC+t1GUHgNadA15/Ymr7qL8Zby6o69CqZ3tFnMFmBJ9BL3ni0v1E/4iN5YFInMpmM+c8FjlGfTU2nRRu0WUOGR+5s7C8YSGILrDR+jr98YOKuTfiEKqvsGg8o0dc95CjhEtejeaVGimt9f+bWA54BPGkCT1HzD5boAoTwVbD4sxKDP5l5SnBC+mpzX3sECFkoE5E7SnQQEhKtrL+IffnMrcA3nG6AAyAGODuYZ7VNYQ3zNWBhR2nP0ospDelxaTu9aH6IMgMn4h4Y9LU+nCSHkJGykxGt4W6S8DnHxiaqJCpYwAeOaWFlItlsqlMSjYR2nB7OgUHIv5HLaC1Heyn9azZc/HQyHEjsDa0EsHX8HnmJ6kr2PkAXno+zCBZHnZvxKDWPfV9QqUPakZX9VwPg724zFFe+4OsFBzRiJLePA3hXdmnKJFJUr8cFj0QC/JXlkG3FbfogrnBE2BV6YH8PBmjLuZCII0St1LwB77YPcZDbNLnXUbbiM5/F+fGy04qg3/97sE7Sk/ZXh/Yv+SyvrqrizhXcnOlaciC0zY6DGirHzPuPAYraCkIpPmvTV+MGOICOg77sLSronoN7QohCw6SEZdPD9wSDpRMcbIs5PjfqlVu0rziyl8D1cbT6pmktrGcPKnzKeCpBJNgKE+EwwnB7Zymfj3xRxLZSl/x/1GPFuFtvDvwcWWBIU3IDEtI1zaH0PXbErtuvrttIYWx0+Il9VbxLpxjYl2NxEwfwdUmhU+O2Xw18h8leyu4hfX6a2BvLzLR7cLmSJdIeWiW7rU+qy+H9AMZ5TIZNgepXcN9TmVfTmoEm3HCzG+WJD66iMkdspkggpOxxyIMXia3ws80Eht+m0lrSM2eU6NFfVXxixEylQsxZJuiTqof7mQ71OlGlwWYyY11w2QZNeWmmZIOWwrH2L4u7Npj0qUxurafWOFr/022Y70BxpYO+CKysYppSjTKhiPLS5/8d0u4R3a30gnf/JigXisE06DiLYV6LYRxd003Q41A9UOUoZ7j+A115GUqwAuyD9mEHsH9e2zb3bF+a4QCQ2EaVTaWLHWN/pKnDTY4tSUnpr2HiBcF/dRYh9hMZ3S9khiG+7mj/8Wj1eHMB0dEkUMlU5HE/3Qgoga0oKmATekv6gFyRJ5FQxNNJH9RMN4h6ej6BxDbs5g2bdNScs3qPahpefJA/ITipe1y3qrsfHP4dgqGEn8oaiQxDnNvf5TwbHoX+kS5rlLi4x42cS9v8Ov9oZV92O3c+EuXwDVKW8FAoJh1wMNkJhHjjSCVmQWG1UQngkl3HPDjuPadhec0dWCxQh7/TIaS2JJXeHrURYSLmUV9RlzhGYJqmCZbw7oLU//EukfD9vjm591gX7U3rhu1aQNioZWdFtoGj88BJdHtSa2pxhJnwhruDrwpLOV7xXEK8FsV0SOXWP+MNAgCCWxL2KoLBqDvbr21x6rXS4a6M0+iYxIEIZRsODwTKW7hf+g7mLdKLTIv8ptJVX+zhCaFOR0JMAm/P+L48FPH9ccEUoNCwlSnl02wC9oxB+bTvIDnE7OB705ezwSi8Okh8V1fiQopRIKSutXVhMN7J+wda3Y39UzdEiVr/Qzf+pVkOY2RBp4pNQ2G4Umb31qbtamxOf5JoPqmXQhFopdFttC+iHNa0b13aj4kQITUX/lo7gzssSHyTABpkD5mBaA4HRGkVDTo2bAwsVttVH399NYXmSoGU8XKoLbtJ3caa38KrxN8czTl+oDMurds2xrWHIG+fU4nHIeRW3HxuTz+1zwuYoZD2L+813VEZ3+fcnH1AjdoZ21Ioi1P496s4v4huLC/NMq6A==,iv:n41XecN53vEw2xzCO+gS46TwH7Qy08Hra2NFJNHTEHg=,tag:4ypcVk6TvJbDoG11A5miCw==,type:str]
openvpn:
galadriel:
config: ENC[AES256_GCM,data:f9uDYNLHP63oee5lGMPsmZ76f80n51eYxd3hvF5ZhPGtCspBEOMLHRonTSEril1wKCT3i1DWR967lWTdjJs6KOpoX5JqKz2Qj9tkpXS5jnHZAf0JQg1l7jmf9/a2OKJparVCFJyNPTN5mzl3gGOyDGe0TIT+ZtP8/PCWsQNjB89Crd/kHSSAmIUb2fcNXEkxs6XwgsBAlhbR69e+06NYaRyX5ydVV/kDekx+ixpx2bIqMQqIdEk358RLCauP3wAh1FoqTTJ2eqLcDhuPySFol9cLCInWnColNdyb/0+czrEa4DiLrbFVXx7bUVwjd9rb+eoajC1e09d41aJkVHG1LxlSRjq1sBlI3v3E1vaUBJWegZBROEpqEOCKfHSagkmaanaBv/KMq1MFmXJ1MzyskDJb9MdNFKRQBjQLwBXnURts/Yj9ChrT51z+/bwItxt8XmlwIEgL65F/8h1+bUJGOi27ZAvfkixflff0ELYSPvQI+N1vFlF9QP6AmIFxF2SdmOSlYzTYIz0+LMejLltCEUdU2qdlZ0a9DuYlsxvnZ75JgWXviw==,iv:C2Zb1DLTMlsEqQ5/UUrpT9k5Z51YYGu3SUcu1F20ydc=,tag:wGkQ7LWgCfy0K3zM38JxHQ==,type:str]
ca: ENC[AES256_GCM,data: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,iv:1PfKLDXQTyg5CanOFnYQ5TIlHMTjEFfUYL8+Zw0xdrw=,tag:gXjfagkBh8FX5wZd4LlLLg==,type:str]
cert: ENC[AES256_GCM,data:w90+WMeDkL3q5ex9n34fM+Efute3iizc0a6HOw2Pma9BpgaLL1NJ7bczjrNaI/9D12d3SAP1/BeONTEyXUDGAvfmJTx5/ZMX4+TWF8yrPPkdm5yQ58Aqkz3Cu5ntgm4xRxPnD5O2Qo1EQuBQlUpnwWqITmeUTmAGT3JYgAobN5Bkjn3h/d0XPnu+5f4jBVSTDFOW4WeJP1WdcYGtpnEj70wTotngoTMwLOKYDGppgoHG5sAxigGeXx5cPvwqecbqOZ5p6FJwCK6iiPGmopWsFgSrA+1ES5P4x0S9q/O3R5+XfqRh21Hjvc7G95J4HWA6LxdDutVl5yS/BQWgBAM4fso/tbIbwFEiNRD3zswa/1nHGTyHisCPJUgaZTS/s3KOL74VoaKl+Upsb0C48yMKJIrL8F3LDF5OjihUWcWX/e0gOJZ+rpPaNv2Qc12TNM6cy0TorxA78fyM9zStgvumi3HjHZ7ZVeMimfraNVT4qTcWXcXrDbfGORxAZlrpKwT8HWdGkGyB3GK9l3KW0nkt0VZJT+SPAII3dimRASc7X1ECTOTgHImE/a4GnlMzg3ik+3HRV/5absZwx3tkUpBtMBUXV4+HA8WXRUeWaGgg2sybC2C7X4l1ChefepVa0JbzLMt1X2vbp+UMeGWbV4lv2V5qlXrQOEBnSwQz4kc0bMoQxSh/p3kohWMtviRuWRq99K9eHsQyD3U59rs9d98E9DIwdH2/8N0/XricaXnSOHErjUTTSSTXfPawJ2bfKMjOAfOkuCHIyFqeQsLElQnR51lzS2jJV6OhEDwVEWElPsvRBxTpafSL0RD90iO39Wbn7FTTBSbzf6YnJNpLu7YG/jysiLcf3zVjarsk648WcXMnCb7Geemqn3voRrJMdKA79sZPNl6jkNi/Jbs/+MPK1VS3v2kLr64lQPctfUaWSL4OGrHRdrO4RVdO3CaDI2H5ylUVoKZmy6LXCj9mQjmvKrK8l9ehrVg0i7O39V0qNP06D5wm/KmfYQtIhAlXy5r8cVR2B4klaxfcG+O/JuIROB1udmNAVz5SkHVTBkLGzlvmV5XAHOVE5+7SRf+ncLtKHoQ6lVGJSSfdgFgqjjQnWKcICvkLL9mtWl7cEPxGg8NlLjLwEExmn1XUa99QZmLDlxFyiJZ8FlSQOngoGkA2ZmT9m8531orzzIUudImnxeiiVpZeTmxL+xKo2He0YBDnAIa+SCzJcM8KaNttVrs7Gc8Jdl1q2HZK8j/dEc31zC0gG+7lODwa9Ce+Lguu+ffsspaAwhmHA5qJElFP5gzBeUfmqDM4YJGPthPxpZCkOePQ6KcZGys1DuaMKfoOuBnFKhAoyP32dgnn8XAHmloCGaVxNbZi0kZZlY7YpubleJlDlib781EDc8WXXokiLSlVyKgstQ+tSO2MtdaEJ4ZWZ4V7p++MQQuFof0GCwNbPUabAuhqsX+6X7Q2LiS3Lakz4PUn1BSKsxWMS1C0GEoY5VBHXxukIbCWoRLCqBQAwjDDLYfUIUp7Y32Nwl0ZK7KqiYyj9ORNe8keBnWZKDHB9kjSnP4C5HQnyoe/fTL4v2mSHDeixS2DH0S83JmV8FxAQm67YWC7WBJzNZL577MQlIOArGGIAx7O5/o0sG1LxAz4/Aa+IAteebPmyqtXW4zmv0CC6H2HGq3WuPvZreSXOcMUOUpWwWsyloh6oZVTMqUHXjRvEL3B5DHGV9RFIBOAETkEP30xfl0FR5QXiavbZ+JoGt7NX+qu5rZ/u6Qx56URJ3cu2LzcGmb77cdcFKHV86f/rXdbAlr+OnqO0cXE6g5NhPr9u8j7Sxm/zTIwCVLod2coCnr/HhL0CF6f73IVWYadaXNP/tnOUYe3yEJv63IMYPQh//aOZG2BSuDxznQH1NnwNoa68lPzauK2UHHV1F/f7GEIPZJE7n+Dy5ai7Ysba91Hbv11rLXQHDypzUkj2mp6VIrC4I+FSKEGorbAXspJhuDnX1Q7mm8GOD8NxZb+rQmZOYRf+UG1z6gdpNwAlwk2bO6SeW0QCBBr0YbAAFA95uOuRpDphLQ4y/jcrKR11cWPetgtzBBIZRMT3ixq3As/MED542VffQtsQOAeUkMNz0UIMm0xIMlV/reC/woZwBLp60bhjlkwJP4bh7+6dsH9KF8ZS8jYn502MZpOTmhHJ9CxE8xVs7OSTkJTaDGkoisyaZ6jfwm18Jl4MkVjXXt0A5PrMYfOt2CbRjYS+BjUQIFZb46EWoWiPt6LV9YMaBv9IQ59ZQo02Nn4ZC9/J3MD7SZH5fWr+OJWaKPFiaFpTCyDJ8kDGq5i995X3vvKTJY8lOeBO1eFMnFe/RFyLylvGDST75P+SfG9HbT4hlR7+x9YDioZhR9FgnM7rts4pSzMZENlG7vPuzfmaTAOWxlL5F1TgaZoOnzOlc69PAPtRiLiigadRTRolDnJlFTHlQa5qby0ARvcvT2eWQGnoGCa4aDlPzPM+1pu6VwT9SkpHXR7O3HTcMZO/HZIUe93qVeZQ93WkkFl+BIlWGBAzTYJwKoEBvPY0lrP9FkLyMOLuq4BBf4RaP0lplBt9CczE0qriWhR5w48QyIv5pJRgyLU7hqOUs7WeKenNMohAy4lKiz/Njr4jXImZmY7mcuoMw27FbW+jzXlImr0QvjTpjhx4INb7iQOZTSXpm+B0jcKmxXtC3jmoT5jAks7UbXIi4VgQs2fF0Ypn77D0IIAlRh3UKr7Qd779vzHfDJAN/uqrlstzyCoLirkcLDacp1fYfmF89w+1GTKvPYKUw64fqRjGFLc/CYpLA0THP7GL3PSZo1RGl9nawm4mAX0OrE+BzVpblReAMVmxezGkV7+CYBZiHRJK5rr4kK/0lxauZb02H9MvmTVCpk36s4Mrs56HQX20sfFrW6EUQqDjrdicEEXYMTPu8tYeGgKJr2Oqin/3GEIR0BhHwh3pTjzPAn9Nh78BQFvCNVTHg24NB6SfZFWjhVMZM4qSvZeCoOoYerPDxTjq7jItzqLPhX8s/u83D2AHzHRNgsKt7NBnOOBtPL9hKSXsK5IsDhXMS1U89atiyE7E6TCIE52+32ufJgbcqhc0u03GWPk6KW+ZofEnxbVpvBsJ9+tj3j3G5ogoGxDnUshrA+9tGCqgOGA0FZo4qOhYGu14uOFL8GJpgdEECnsBAM9soz5,iv:46DOOjh6yun/FfespTsPgQdN7/z6EVDUEY2V3OJQXwk=,tag:mAicNQoXQFcUE0d4A7Frrg==,type:str]
userkey: ENC[AES256_GCM,data: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,iv:kR5g0wvCQ3NGAqviN1jvqscgAYrGzHLqhooIljtJ+gg=,tag:Z+U5Wn4U5ADIxjdfI37cBA==,type:str]
tlscrypt: ENC[AES256_GCM,data:zG12fAsc9/LcxO0eGx4ytjHm07BMnf5aBHlfTtif4noCXcPAx5xunhJCOaWEoTobwOEpdgXoZzQcJa7EW6N/4kEnGzk8gfSl+BFswO6LEoqzYJb4sfy2qJJQrjUNxsI9yib+OCgb4DQ94apdvVG/dVypdMQrw+x+xg8K+hdZ5LZWdZLKKcBxHKeHoZ+lt/gJNv3BbtQP6Vy+1biWxjdHy1YfvLm+iqaJfi3/9HV8YAi/iePoY+rNNtc8GlaUp/HrHfmCFF4EBWuFr2knQ5t8bx7sHGlhdcTIyHJwNQdCUIsyVqckhxDulLM8luuGJZsiulkdK2f4NSpa6CPYZPWPHQ2BfSnugBEjbWrF2RQT3eOLAEJBS9YSV1/nvHA/lU2ymf0PBzzXhE9Ms0twecrS8Ql/qRbWSqiQNzHv/P7k5i5E8iw4zqaUtir7gpu3AkC2GxMVuQfowiruZGPi6i2YbDzgaBi5fZJAosWQHvZXnVApqFqzWXCzw4ACXlMI6MZ1rb3Ut9wEDXHGMRhhcWmHDsCO6I4/EphDfLiexYeVHKB++MLilXaUa6wXN0yGefj+NC3Am5YQRwR3rd4KrjXOrbKWELoIkyYrGWkZ5w5O5fC4Z+h8jxPjng/lNM3JAzREgKcw+0IcY5q3/bRXWGMScVm5qqc9LXozhWU9gghQOhbcb4NYFob8yczTJT8IdA6D72N4pAm+524DMjTPRiAi1KQInICeZp2mILvT5aUgTEXtj+iwyqyo+io3ffOjQdHa9HU2IrZKmoapkvEOsFHm3L63uY1T92/Han8=,iv:cjIKuwyLtXT5Wg/VzinC2Lf5EysoxsgnEsHei/+Yum8=,tag:b5LKO8urIBC7BJgyfs5kWw==,type:str]
config: ENC[AES256_GCM,data:Mm0X2k2m8D+b5svU0N6/vKrgrukIwMReATwyLZYAtWtHUr0UyhncAO5HjuP7LrSqHHloWrP8oI8u5YqRW7/XgzcBP7u3c2EmDnfVDlRm/4FiFlgPUwxDHF7QDwMY/CCk5NbLzvcK0Bg5rx8KdwJSeVhYPw34gTBiIrFAFsBFTSV3baH7wmt+SMclXx5fcSj2tZczgpqGqTzKxVrQIVgT+xKeF/Bh2iD1vwyRjd6wxuXizzelhE7bZh9vv8jXiLGsoOtQaPRRpggmLlYevoRdRY9Js+NDOWbcxs6uoV25dvJjy/qOo2p77bYwIt0uZ3Jsl4xeTU36gbk50Vc49S0KCBUockGGte7h18sV6eA6otJEqslbjDWk+zriBNcWgz1sw9xSI+TUaS6iT1nAxZZB/+uEsWlvI8k7tupk/S6BszxCBXTcQoZo5U8mWnjluT8igmsjMCoAFDIMsNea9cYD7OuuiPk+4Sx1Q6whznwk+RIYe5+RDz6Viufq/oQUnAGYln4ulF7NEkdF/9+qPj80qaeU0QqQ2baSMgopVlH0mJsUPOaQeQ==,iv:C2Zb1DLTMlsEqQ5/UUrpT9k5Z51YYGu3SUcu1F20ydc=,tag:sdMgyA1U2wrMY5ZKRbXoEg==,type:str]
ca: ENC[AES256_GCM,data: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,iv:1PfKLDXQTyg5CanOFnYQ5TIlHMTjEFfUYL8+Zw0xdrw=,tag:rbkP80im3Sy57LVWYYMN0w==,type:str]
cert: ENC[AES256_GCM,data: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,iv:46DOOjh6yun/FfespTsPgQdN7/z6EVDUEY2V3OJQXwk=,tag:LDEGXAIAJ167nHmie8npUQ==,type:str]
userkey: ENC[AES256_GCM,data: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,iv:kR5g0wvCQ3NGAqviN1jvqscgAYrGzHLqhooIljtJ+gg=,tag:A7Bu+iCToY9k+rf7Bv169w==,type:str]
tlscrypt: ENC[AES256_GCM,data:Ny1BCkSd41jO/BxKjBn5/FdM5D2GACxVkFj24rJA0F89nHh0k1wTfY7coi5aqiyV74QidSX5dyWseq15+ceMtZKRQ+lH3sN3zcf1xnC/ziHBS1s+i4KDPr5YfI4f3jDjC3kn4eXdzoqTsV0T9sNeGo22na2zCsqd3h9wFwQByL3cnElygnrdpyE2uW/RQWQSjlrnJMZr21gbPWGBpc0bXbnWHxSCvl0d39xJt4YGAYDAkZGyomPDEzFHoSEH+CwNzyVmdaE2ijMnb3nwA451PKRn4m8n8yCqVOTIQK56JJgfnURZVhgE0RiU+oZvuZ6vX9Btx5mBlgPfl2nF9fTdWpTbucBaPYe5f9eEE4LLonBy9/BPqwtk0fjUVtloFovMEXukTIr/4Fmz2bIwVRmxOfU83qeJiuJPbMzGdyrabWPoTWDqjyKzR4iEYN7q4fSCZWhl4uyYOFS8xyUKjWQ9h1lbBPAqGsVf7TXQ9OIJWMEVRhutfH2+zYpfxhiHYNb8aY0Vu9Md1j0DIdcnfFRwwgvaFE897XUxEP3MUvLaacg2ScYFZQEsuPrhgpaYKgnT1oM9yhgs4hsQ5SGv/2e4Oe86y3M8SivoAkCibqxQkSVOpSa3j485p+3HygFHELBnhCztXqHwi1wJa9TbtRfe9eVVlwthiNpQwyX+63tFd4WxjznRObZ67TcT2EAfsk0+FViXmESQyQNg5S5KgtHPB+J30SxulkolE5q6iEU3N0oTSk6igDemwIUO8VMrl66AcOD4qe4pEbHQXNbpzJP6yn5nPMFOlgsJOyk=,iv:cjIKuwyLtXT5Wg/VzinC2Lf5EysoxsgnEsHei/+Yum8=,tag:9S8pOkWo9yhAyRHVfGf6Jw==,type:str]
sops:
age:
- recipient: age14cpm59h7hx8gr54hrn4uxu4xnrp9wy3f2kdxvy6xwuyxsfg8g9zs8z5e77
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1YW5Ob0RscXBCODV2d3Z0
TFVVMVQwdTZKZWZDZzNHOXZobThRZ3lyOHlZCnhWQTB5aVd5enBXYUtaYWprT1B1
ZHhndW1vcHExYlAyTXpXWEYrSjhxaUEKLS0tIDRodGpsSS9rZzlOeWMxOTRhVnBF
OHNBdXMzZTN0VEVTYkVSbUVRYmo3eUUKvRiPgmrCCK1F5QoSHlV89C2MPl5FvU5i
z61NMJu68UEDsDu8qNRaW3aqpT+1GYsr1evi5imzNwr0qTM2oRwkFQ==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1UW8wQkY5clorYThkdDdJ
Y3BNdG1Gc0UvNUNMVVRiNk5nODQyY0ttOVJNCjZ6bUwrUzJob0RnT0l1dmxhM3Nl
ZHdrSHJqOEo2OE02b3RXdnZFT3dUcTgKLS0tIHgvNkF4YU5BWFJjOWhxeEREYysx
bnpmM0w1UjIvQU5QTy9nUTVEc3QrSEUKA00FnHXn2FsxByYBumLLSazg0byHmC3x
iYLyn9vEs/pnM6Mvvr1SWC+UglF+Xpfrx0lx1mZQsrgqk/c8JumXPA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-09-29T18:54:55Z"
mac: ENC[AES256_GCM,data:mju2fz9txxzB28V3JkPYdbLrrgiSLNo95urNMr5B4eWJViln0oW5VYJsrO0nVg3QKrVWg3bVo4Bhoxo2r8QBQTxSwHobjX9nWd4fBsQZ59PqhSVSG2xmza+8SX4NgovPoLeT4h475l2Y1MmFs+LFqTtjgRv3t0xjHDMle/FhXuk=,iv:RJIEdz/eni3Gmn5i49N0MgMIKqF3Z62yx615Qor7MIY=,tag:/3w1JrnOVNq8KLDO9vxhWA==,type:str]
- recipient: age1l3xa77vgtkl44z8re8wla2u2vhjwztat3qnqd3ypczku23xq9pwqjdy8c7
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5QXNPaDlzRHI3ZHgxUTJp
dnRnR1FMS1laTzNyU1ZXR3ZIR093TGpNZ0RRCjhadGxCY20vWXNRYmtqRE5wUGpt
UXN5ekljVU1nSmtWNmlVT0tSN3ZrTHcKLS0tIGxvQmdrK2orUUZPcWsrbVppMEtN
TEhuRFBFQUppVjFKL3JKa0ozNmRLcTAKDrrS8mpHoQoZ54VkY+SYbjoE6AS0fLjc
uHuFCrUWqQIwfqHXGlXn7EPUweTfwQ7Od+4JeVp1GbgNLIyH5xNN1g==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-01T15:16:22Z"
mac: ENC[AES256_GCM,data:e+nLoUc3ybRoznmQqUdEF01dOIPleG7Hxv9U05f2y68eLo+QzP8/dznIhdc8DC4dAB7IkS4qXGiCyyWfzhVTPy8Aor4pAO0wwHR3cylKswetX0RVJErRO2r6mDMz6bjOseo1WZ6Jq6EOo2Z0SZli+lnLrxTpnoVDlOL6XO6TP2A=,iv:57LHCw0SY5cG2woS5op378RhhgqJGSRhA8oO+76/maM=,tag:aYs9KnXSQyRyawRcc+MITw==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2
version: 3.11.0

View File

@@ -14,9 +14,10 @@
"/root/.ssh/nixos"
"/home/gunalx/.ssh/nixos"
];
#This is using an age key that is expected to already be in the filesystem
age.keyFile = "/var/lib/sops-nix/key.txt";
#age.keyFile = "/root/.config/sops/age/key.txt";
age.keyFile = "/var/lib/sops-nix/keys.txt";
#age.keyFile = "/root/.config/sops/age/keys.txt";
age.generateKey = true;
# This is the actual specification of the secrets.
#secrets."myservice/my_subdir/my_secret" = {};