summaryrefslogtreecommitdiffstats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix110
1 files changed, 110 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..4c31b37
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,110 @@
1{
2 description = "My NixOS configurations";
3
4 inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-20.09";
5 inputs.nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
6 inputs.flake-utils.url = "github:numtide/flake-utils";
7 inputs.home-manager = {
8 url = "github:nix-community/home-manager/release-20.09";
9 inputs.nixpkgs.follows = "nixpkgs";
10 };
11
12 outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, flake-utils, home-manager }: {
13
14 nixosModules = {
15 default = { ... }: {
16 imports = [
17 home-manager.nixosModules.home-manager
18 (import ./configuration.nix inputs)
19 ];
20 };
21
22 test = { config, ... }: {
23 imports = [ self.nixosModules.default ];
24
25 home-manager.users.minijackson.home.stateVersion = "20.09";
26 home-manager.users.root.home.stateVersion = "20.09";
27
28 users.users.minijackson.initialHashedPassword = "";
29 users.users.root.initialHashedPassword = "";
30
31 topology.mainVpn = {
32 interfaceName = "tinc.testNet";
33 subnet = "fd1f:340c:c5eb:9b18::/64";
34 currentNodeIP = "fd1f:340c:c5eb:9b18::1";
35 };
36
37 services.tinc.networks.testNet = { };
38
39 # TODO: automate that? {{{
40 networking.interfaces."tinc.testNet" = {
41 virtual = true;
42 virtualType = "tun";
43 ipv6.addresses = [{
44 address = config.topology.mainVpn.currentNodeIP;
45 prefixLength = 64;
46 }];
47 };
48
49 systemd.services."tinc.testNet" = {
50 after = [ "network-addresses-tinc.testNet.service" ];
51 requires = [ "network-addresses-tinc.testNet.service" ];
52 };
53 # }}}
54 };
55
56 usecases.common = {
57 backupClient = (import ./usecases/common/backup-client.nix inputs);
58 };
59
60 usecases.desktop = {
61 default = (import ./usecases/desktop/default.nix inputs);
62 };
63
64 usecases.server = {
65 default = (import ./usecases/server/default.nix inputs);
66 fail2ban = (import ./usecases/server/fail2ban.nix inputs);
67 monitoringTarget = (import ./usecases/server/monitoring-target.nix inputs);
68 };
69
70 profiles = {
71 desktop = (import ./profiles/desktop.nix inputs);
72 server = (import ./profiles/server.nix inputs);
73 };
74 };
75
76 nixosConfigurations = {
77 testDefault = nixpkgs.lib.nixosSystem {
78 system = "x86_64-linux";
79 modules = [
80 self.nixosModules.test
81 ];
82 };
83
84 testDesktop = nixpkgs.lib.nixosSystem {
85 system = "x86_64-linux";
86 modules = [
87 self.nixosModules.test
88 self.nixosModules.profiles.desktop
89 ({ modulesPath, ... }: {
90 imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
91
92 virtualisation = {
93 memorySize = 2048;
94 cores = 3;
95 };
96 })
97 ];
98 };
99
100 testServer = nixpkgs.lib.nixosSystem {
101 system = "x86_64-linux";
102 modules = [
103 self.nixosModules.test
104 self.nixosModules.profiles.server
105 ];
106 };
107 };
108
109 };
110}