diff options
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/programs/extra-container.nix | 17 | ||||
-rw-r--r-- | pkgs/tools/virtualization/extra-container/default.nix | 37 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
4 files changed, 57 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index bff7b83ea71..3aa9b786c9c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -135,6 +135,7 @@ ./programs/droidcam.nix ./programs/environment.nix ./programs/evince.nix + ./programs/extra-container.nix ./programs/feedbackd.nix ./programs/file-roller.nix ./programs/firejail.nix diff --git a/nixos/modules/programs/extra-container.nix b/nixos/modules/programs/extra-container.nix new file mode 100644 index 00000000000..c10ccd76916 --- /dev/null +++ b/nixos/modules/programs/extra-container.nix @@ -0,0 +1,17 @@ +{ config, pkgs, lib, ... }: + +with lib; +let + cfg = config.programs.extra-container; +in { + options = { + programs.extra-container.enable = mkEnableOption '' + extra-container, a tool for running declarative NixOS containers + without host system rebuilds + ''; + }; + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.extra-container ]; + boot.extraSystemdUnitPaths = [ "/etc/systemd-mutable/system" ]; + }; +} diff --git a/pkgs/tools/virtualization/extra-container/default.nix b/pkgs/tools/virtualization/extra-container/default.nix new file mode 100644 index 00000000000..ad0601a5243 --- /dev/null +++ b/pkgs/tools/virtualization/extra-container/default.nix @@ -0,0 +1,37 @@ +{ stdenv, lib, nixos-container, openssh, glibcLocales, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "extra-container"; + version = "0.8"; + + src = fetchFromGitHub { + owner = "erikarvstedt"; + repo = pname; + rev = version; + hash = "sha256-/AetqDPkz32JMdjbSdzZCBVmGbvzjeAb8Wv82iTgHFE="; + }; + + buildCommand = '' + install -D $src/extra-container $out/bin/extra-container + patchShebangs $out/bin + share=$out/share/extra-container + install $src/eval-config.nix -Dt $share + + # Use existing PATH for systemctl and machinectl + scriptPath="export PATH=${lib.makeBinPath [ nixos-container openssh ]}:\$PATH" + + sed -i \ + -e "s|evalConfig=.*|evalConfig=$share/eval-config.nix|" \ + -e "s|LOCALE_ARCHIVE=.*|LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive|" \ + -e "2i$scriptPath" \ + $out/bin/extra-container + ''; + + meta = with lib; { + description = "Run declarative containers without full system rebuilds"; + homepage = https://github.com/erikarvstedt/extra-container; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.earvstedt ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e1e26856b5..c61bdbb4629 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31942,6 +31942,8 @@ with pkgs; nixos-rebuild = callPackage ../os-specific/linux/nixos-rebuild { }; + extra-container = callPackage ../tools/virtualization/extra-container { }; + norwester-font = callPackage ../data/fonts/norwester {}; nut = callPackage ../applications/misc/nut { }; |