Compare commits

...

5 Commits

8 changed files with 124 additions and 153 deletions

11
common/container-node.nix Normal file
View File

@@ -0,0 +1,11 @@
{ lib, ... }:
{
imports = [
./impermanence.nix # TODO: find a way to avoid needing this here
];
boot.isContainer = true;
custom.impermanence.enable = false;
custom.tailscale.enable = false;
networking.useDHCP = lib.mkForce false;
}

View File

@@ -7,9 +7,10 @@ in
imports = [ ./tailscale_lib.nix ]; imports = [ ./tailscale_lib.nix ];
options.custom.tailscale = { options.custom.tailscale = {
enable = mkEnableOption { enable = mkOption {
description = "Enable Tailscale"; type = lib.types.bool;
default = true; default = true;
description = "Whether to enable Tailscale";
}; };
}; };

View File

@@ -1,5 +1,17 @@
{ pkgs, inputs, ... }: { pkgs, inputs, lib, config, ... }:
let
cfg = config.custom.impermanence;
in
{ {
options.custom.impermanence = {
enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable impermanent root fs";
};
};
config = lib.mkIf cfg.enable {
environment.persistence = { environment.persistence = {
"/persist" = { "/persist" = {
directories = [ "/var/lib/nixos" ]; directories = [ "/var/lib/nixos" ];
@@ -68,4 +80,5 @@
btrfs subvolume create /mnt/root btrfs subvolume create /mnt/root
umount /mnt umount /mnt
''; '';
};
} }

View File

@@ -1,7 +0,0 @@
{
imports = [
];
custom.tailscale.enable = false;
proxmoxLXC.manageNetwork = true;
}

37
flake.lock generated
View File

@@ -261,42 +261,6 @@
"type": "github" "type": "github"
} }
}, },
"nixlib": {
"locked": {
"lastModified": 1726966855,
"narHash": "sha256-25ByioeOBFcnitO5lM/Mufnv/u7YtHEHEM8QFuiS40k=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "575704ff85d3a41dc5bfef7b55380cbc7b87f3c2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixos-generators": {
"inputs": {
"nixlib": "nixlib",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1727053438,
"narHash": "sha256-t/+z1Tf7hSaStU1pBYkY7i0/GkG+YIPSmfeRrK8eYUw=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "e8c1cd886cc17e31e424f915efd32e84d8af0ce9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-generators",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1726320982, "lastModified": 1726320982,
@@ -388,7 +352,6 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"impermanence": "impermanence", "impermanence": "impermanence",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"nixvim": "nixvim", "nixvim": "nixvim",

View File

@@ -17,10 +17,6 @@
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = { nixvim = {
url = "github:nix-community/nixvim"; url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs-unstable"; inputs.nixpkgs.follows = "nixpkgs-unstable";
@@ -42,7 +38,6 @@
disko, disko,
home-manager, home-manager,
sops-nix, sops-nix,
nixos-generators,
impermanence, impermanence,
... ...
}@inputs: }@inputs:
@@ -66,6 +61,15 @@
disko.nixosModules.disko disko.nixosModules.disko
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
impermanence.nixosModules.impermanence impermanence.nixosModules.impermanence
] ++ modules;
specialArgs = {
inherit inputs self;
};
};
mkHMNixos =
system: modules:
mkNixos system ([
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager = { home-manager = {
@@ -80,12 +84,7 @@
]; ];
}; };
}; };
} }] ++ modules);
] ++ modules;
specialArgs = {
inherit inputs self;
};
};
pkgsFor = pkgsFor =
system: system:
@@ -112,12 +111,13 @@
in in
{ {
nixosConfigurations = { nixosConfigurations = {
c1 = mkNixos "x86_64-linux" [ ./hosts/c1 ]; c1 = mkHMNixos "x86_64-linux" [ ./hosts/c1 ];
c2 = mkNixos "x86_64-linux" [ ./hosts/c2 ]; c2 = mkHMNixos "x86_64-linux" [ ./hosts/c2 ];
c3 = mkNixos "x86_64-linux" [ ./hosts/c3 ]; c3 = mkHMNixos "x86_64-linux" [ ./hosts/c3 ];
alo-cloud-1 = mkNixos "aarch64-linux" [ ./hosts/alo-cloud-1 ]; alo-cloud-1 = mkHMNixos "aarch64-linux" [ ./hosts/alo-cloud-1 ];
zippy = mkNixos "x86_64-linux" [ ./hosts/zippy ]; zippy = mkHMNixos "x86_64-linux" [ ./hosts/zippy ];
chilly = mkNixos "x86_64-linux" [ ./hosts/chilly ]; chilly = mkHMNixos "x86_64-linux" [ ./hosts/chilly ];
kopia = mkNixos "x86_64-linux" [ ./hosts/kopia ];
}; };
deploy = { deploy = {
@@ -173,21 +173,6 @@
}; };
}; };
packages.x86_64-linux = {
kopia-lxc = nixos-generators.nixosGenerate {
system = "x86_64-linux";
format = "proxmox-lxc";
modules = [
sops-nix.nixosModules.sops
impermanence.nixosModules.impermanence
./hosts/kopia-lxc
];
specialArgs = {
inherit inputs self;
};
};
};
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;

View File

@@ -1,7 +0,0 @@
{
imports = [
../../common/global
../../common/lxc-node.nix
];
networking.hostName = "kopia";
}

12
hosts/kopia/default.nix Normal file
View File

@@ -0,0 +1,12 @@
{ pkgs, ... }:
{
imports = [
../../common/global
../../common/container-node.nix
];
networking.hostName = "kopia";
environment.systemPackages = with pkgs; [
kopia
];
}