From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.6 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id 74EF01EF86; Tue, 27 Dec 2022 09:16:38 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 496) id 638261EF1A; Tue, 27 Dec 2022 09:16:35 +0000 (UTC) Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by atuin.qyliss.net (Postfix) with ESMTPS id D0B281EF18 for ; Tue, 27 Dec 2022 09:16:31 +0000 (UTC) Received: by mail-lj1-x236.google.com with SMTP id s22so13184929ljp.5 for ; Tue, 27 Dec 2022 01:16:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unikie.com; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=XOUbQweMEa0P8PLTelZNoXTtULb6S8KIHGVF7fSKvP4=; b=FXqdQKaQS6OwU4exKyzbnDd6M67zrhR8gL6czfkZdz0dKctu1N2u0IG/1Vjk+20mfW jXZbWuiR+2k4YFF1VVWRc2all+x8R8iJzie2GbuHcKCF+IKmmlBivg/dN8W75hcHL1Mc Qq4Y2lExk32BYHTpRMaASOe/U7nGSGbb3STKda1K7nd6URg85rmrthDiDWQQqqFRFejD PLbBMWs9HVno1ufsjWL3onOKhUc45TQ4PxjQA600xIdp+Y7GKVXhUSoOO2iQgvrEP2ml SoQgoAbPUZQuWDNOiYLUqYQ4/a8C5ZdaZQkJoaRm8mD9498cx4NV8g/MnyYT15Ei8IJJ q5mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XOUbQweMEa0P8PLTelZNoXTtULb6S8KIHGVF7fSKvP4=; b=Hrsk5dHg4/ZkNa97qnlBIhcgWj44pWQN4/zTUABDk7vHe0IBoECEOL4DU7ORUnpAJm mgKFKuDyZHKnFTp3quw9B3ZzpZUaJJZOq2URmJ59vpgGEOLrKwREUqDI5OMSPxzFLq2P w1R59zUx9Z8nMVZJ6GnFJ9diVenQV9vJ0cO6ewJGyE7LEAQTf39gX7VtSLd2VtGPPHHc vEo3dOUosoGpEUfOem+HcsNIrWQrWdI+3MBNubN8ExEwkWV3Db5OG66sUkabDRis6CcI hC+Qmd8L40Gj5uo/SEqJoHELl81YevkJtj19sFo0oFfQlK2gwa5HVAdNOw8wuL+uBz7+ qcNQ== X-Gm-Message-State: AFqh2krXqB70VWfncWi92N019z+bXPl0qID+5PxKr7AF2FAVsKE4gstI HHtLvhrnZj1CxiFa6d+3ntw7PKPnuo5+jRhr X-Google-Smtp-Source: AMrXdXsqR+p+XXbtbXItBimBA2AtMZasSiq/ko/vYScJ0Ksxe86BW2pQsYKSRngwRLLndLH+hW/imw== X-Received: by 2002:a05:651c:130d:b0:27f:c319:8b39 with SMTP id u13-20020a05651c130d00b0027fc3198b39mr1148163lja.45.1672132585847; Tue, 27 Dec 2022 01:16:25 -0800 (PST) Received: from localhost.localdomain (dyfl5jgq-fgrzw6rlb23t-4.rev.dnainternet.fi. [2001:14bb:113:9395:bf21:5d49:69c9:daf]) by smtp.gmail.com with ESMTPSA id v10-20020a2e7a0a000000b0027b52a73b47sm1553367ljc.18.2022.12.27.01.16.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 01:16:25 -0800 (PST) From: Valentin Kharin To: devel@spectrum-os.org Subject: [PATCH v2 1/2] Add flakes support Date: Tue, 27 Dec 2022 11:16:03 +0200 Message-Id: <20221227091604.18039-1-valentin.kharin@unikie.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: I6JQLE2ZVLMUNTJLHFFHXB3CS2JHKFYK X-Message-ID-Hash: I6JQLE2ZVLMUNTJLHFFHXB3CS2JHKFYK X-MailFrom: valentin.kharin@unikie.com X-Mailman-Rule-Hits: header-match-devel.spectrum-os.org-0 X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1 CC: Valentin Kharin X-Mailman-Version: 3.3.5 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Signed-off-by: Valentin Kharin --- flake.lock | 43 ++++++++++++++++++++++++++++++++ flake.lock.license | 3 +++ flake.nix | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 flake.lock create mode 100644 flake.lock.license create mode 100644 flake.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..aa4ee5e --- /dev/null +++ b/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1669635185, + "narHash": "sha256-vYg6GjnsEWNWt/4TmfFN9WtQmSXb4S796J2UOfyTcW0=", + "ref": "refs/heads/rootfs", + "rev": "3176ddef4b4cec85faa2f49d29ce74816d452dc0", + "revCount": 429673, + "type": "git", + "url": "https://spectrum-os.org/git/nixpkgs/" + }, + "original": { + "ref": "refs/heads/rootfs", + "type": "git", + "url": "https://spectrum-os.org/git/nixpkgs/" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.lock.license b/flake.lock.license new file mode 100644 index 0000000..a8a7980 --- /dev/null +++ b/flake.lock.license @@ -0,0 +1,3 @@ +SPDX-License-Identifier: CC0-1.0 +SPDX-FileCopyrightText: 2022 Unikie + diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ab54fed --- /dev/null +++ b/flake.nix @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2022 Unikie + +{ + description = "A compartmentalized operating system"; + + # NOTE: Revision specification format is ?ref=refs%2fheads%2f&rev= + inputs.nixpkgs.url = + "git+https://spectrum-os.org/git/nixpkgs/?ref=refs%2fheads%2frootfs"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + nixConfig = { + extra-substituters = [ "https://cache.dataaturservice.se/spectrum/" ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "spectrum-os.org-1:rnnSumz3+Dbs5uewPlwZSTP0k3g/5SRG4hD7Wbr9YuQ=" + ]; + }; + + outputs = { self, nixpkgs, flake-utils }: + let + supportedSystems = with flake-utils.lib.system; [ x86_64-linux aarch64-linux ]; + in flake-utils.lib.eachSystem supportedSystems (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + config = { inherit pkgs; }; + lib = pkgs.lib; + + mkEntryPoint = { name ? builtins.baseNameOf path, path + , enableShell ? true, enablePackage ? true }: + let + shell = { + # NOTE: https://stackoverflow.com/a/43850372 + devShells.${name} = + import (path + "/shell.nix") { inherit config; }; + }; + package = { packages.${name} = import path { inherit config; }; }; + in (if enableShell then shell else { }) + // (if enablePackage then package else { }); + + # Entry point is a directory with shell.nix and default.nix + # This function maps every entry point to corresponding devShell and package + mapEntryPoints = epoints: + builtins.foldl' lib.recursiveUpdate { } (map mkEntryPoint epoints); + in lib.recursiveUpdate (mapEntryPoints [ + { + path = ./.; + enablePackage = false; + } + { path = ./host/initramfs; } + { path = ./host/rootfs; } + { path = ./host/start-vm; } + { path = ./img/app; } + { path = ./release/live; } + { path = ./vm/sys/net; } + ]) { + # Add some other flake schema related stuff here. + # NOTE: flake-utils.lib.eachDefaultSystem automagically adds ${system}. + devShells.documentation = import ./Documentation { inherit config; }; + packages.documentation = import ./Documentation { inherit config; }; + }); +} -- 2.38.1