diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4bc002d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["homelab"] +} diff --git a/flake.lock b/flake.lock index 3f1ef71..bfbaa0e 100644 --- a/flake.lock +++ b/flake.lock @@ -55,32 +55,11 @@ "type": "indirect" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1781847791, - "narHash": "sha256-Mo2YtNEGlcySnbq0YuP3nUKMAQCMAfE+TcCffo5vzD8=", - "ref": "refs/heads/master", - "rev": "68c2c85c33845385f7ab8147b32f1450b1e468e0", - "revCount": 824, - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - } - }, "root": { "inputs": { "disko": "disko", "home-manager": "home-manager", - "nixpkgs": "nixpkgs", - "quickshell": "quickshell" + "nixpkgs": "nixpkgs" } } }, diff --git a/modules/virtualization/lima.nix b/modules/virtualization/lima.nix deleted file mode 100644 index 9676f94..0000000 --- a/modules/virtualization/lima.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - lima - ]; -} diff --git a/modules/virtualization/options.nix b/modules/virtualization/options.nix new file mode 100644 index 0000000..e6463fc --- /dev/null +++ b/modules/virtualization/options.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.homelab.virtualization; +in +{ + options.homelab.virtualization = { + user = lib.mkOption { + type = lib.types.str; + default = "river"; + description = "The user to run virtualization services as."; + }; + + # podman + podman = { + enable = lib.mkEnableOption "Podman support"; + + packages = lib.mkEnableOption "Install Relevant Podman packages" { + enable = true; + default = false; + }; + }; + }; +} diff --git a/modules/virtualization/podman.nix b/modules/virtualization/podman.nix index 004bebe..fe5f94b 100644 --- a/modules/virtualization/podman.nix +++ b/modules/virtualization/podman.nix @@ -1,38 +1,51 @@ -{ pkgs, ... }: - { - virtualisation.podman = { - enable = true; + config, + lib, + pkgs, + ... +}: +let + cfg = config.homelab.virtualization; +in +{ + config = lib.mkMerge [ + (lib.mkIf cfg.podman.enable { + virtualisation.podman = { + enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; - # For rootless containers - security.unprivilegedUsernsClone = true; + # For rootless containers + security.unprivilegedUsernsClone = true; - users.users.river = { - subUidRanges = [ - { - startUid = 100000; - count = 65536; - } - ]; - subGidRanges = [ - { - startGid = 100000; - count = 65536; - } - ]; + users.users.${cfg.user} = { + subUidRanges = [ + { + startUid = 100000; + count = 65536; + } + ]; + subGidRanges = [ + { + startGid = 100000; + count = 65536; + } + ]; - extraGroups = [ - "podman" - ]; - }; + extraGroups = [ + "podman" + ]; + }; + }) - environment.systemPackages = with pkgs; [ - podman - podman-compose - podman-desktop + (lib.mkIf cfg.podman.packages.enable { + environment.systemPackages = with pkgs; [ + podman + podman-compose + podman-desktop + ]; + }) ]; }