diff options
Diffstat (limited to 'release.nix')
-rw-r--r-- | release.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/release.nix b/release.nix index a4a1746..4fd73d8 100644 --- a/release.nix +++ b/release.nix @@ -1,9 +1,58 @@ { nixpkgs ? (import <nixpkgs> {}) }: +with nixpkgs.pkgs; +let + pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; + makeSystemTarball = + { module, maintainers ? ["viric"], system }: + + let + versionModule = { + system.nixosVersionSuffix = "orbekk"; + system.nixosRevision = "master"; + }; + + config = (import <nixpkgs/nixos/lib/eval-config.nix> { + inherit system; + modules = [ module versionModule ]; + }).config; + + tarball = import <nixpkgs/nixos/lib/make-system-tarball.nix> { + inherit (pkgs) stdenv perl xz pathsFromGraph; + contents = []; + extraArgs = "--owner=0"; + + # Add init script to image + storeContents = [ + { object = config.system.build.toplevel + "/init"; + symlink = "/init"; + } + ] ++ (pkgs2storeContents [ pkgs.stdenv ]); + + # Some container managers like lxc need these + extraCommands = writeScript "setup.sh" '' + mkdir -p proc sys dev sbin + ln -s init sbin/init + ''; + }; + in + tarball // + { meta = { + description = "NixOS system tarball for ${system} - ${stdenv.platform.name}"; + maintainers = map (x: lib.maintainers.${x}) maintainers; + }; + inherit config; + }; +in { containerTarball = (import <nixpkgs/nixos/release.nix> {}) .containerTarball.x86_64-linux; + orbekkContainerTarball = makeSystemTarball { + module = ./machines/generic-container.nix; + system = "x86_64-linux"; + }; + tests = { common = import tests/common.nix; desktop = import tests/desktop.nix; |