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 A5A2D48B66; Wed, 14 Dec 2022 11:10:04 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 496) id A5A8048BA2; Wed, 14 Dec 2022 11:10:01 +0000 (UTC) Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by atuin.qyliss.net (Postfix) with ESMTPS id 2031E48B9E for ; Wed, 14 Dec 2022 11:09:58 +0000 (UTC) Received: by mail-lf1-x135.google.com with SMTP id cf42so9863626lfb.1 for ; Wed, 14 Dec 2022 03:09:58 -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=T26pwo3ZS9bJhv3fN3xnkBVVpvaNwO+1WGcfr0/Waag=; b=d+0GuSMpgSt8k0DSH0xBEQEYrBP/CcmlQtUGgEPIgyET5h29Az9dnsqSg4u21njiVv FB2nU55Z6o9uCyqlaq+IFojNFd/gweQkedDrjXkncGLXFalKSmpDS+9+wKh182wzJ+nM 2t8yb/MoqJJGNcHV8R8BCo+5MsscNsIzFEPLunhRxQQfmBrNZKNL/F32Fofr7icW94zV oFS+t5sEX2wL4Ya04oNCtH2GQtg8u8xD07aTZW88lv8/9SEh7sATBkF/r6Mehxjj+iZ7 JhUV1CB4eeHyp3LfhJ+X0q+ax0uhisH2AjTYxf/ZTyzCYkjoifDZy4J+eHmDMe08AzEk PmZg== 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=T26pwo3ZS9bJhv3fN3xnkBVVpvaNwO+1WGcfr0/Waag=; b=0dX3qbfLEGbN6tmvzPc2CfXEAKsRz0vT68HzSwkbvQreHejZNNo4R10/V7BqajVmfa FSKB/rJDBx46tTiXIir7honXFai7/SbDXtTR1FNMiK9+z5RclEToVTpMAKSErOXL202Z hUg6al8wXyo22VsQ8MwBXzIUiGey+OttwcuuIObpDt9XEHWasH7OL5lZxDYq19wvcQsq /d3ULzAJ4/obLn88M5QK43YkTGxtrUzcQlZLlws0vIZY31trdf5hupmIXaaoyzV/1Haz 5bn8NC97sCNa+urXqYaH/djS7tP8m0DoL2D9MLtLfXYBfnUiA6VN8zWvR6HMy2zO82BU of8A== X-Gm-Message-State: ANoB5plmonOeXBOFXXUaVPv2F5HzZUV/6gQ6YohDIiVFITJ+JY3hSvis Ag+vZBghc75WYj8SFmh4LkkWkaDebn27QwOF X-Google-Smtp-Source: AA0mqf4+qdBPdeE3gr5XGKp3JmeuOXB1zj6+NT9H/4bXP+sIwr+6cr75oKuJNM3r+0j0oRBAlgn37A== X-Received: by 2002:a05:6512:4c6:b0:4b5:70e0:f2e6 with SMTP id w6-20020a05651204c600b004b570e0f2e6mr5393436lfq.24.1671016196539; Wed, 14 Dec 2022 03:09:56 -0800 (PST) Received: from localhost.localdomain ([109.204.204.138]) by smtp.gmail.com with ESMTPSA id m30-20020ac24ade000000b004b4bae1a05asm759076lfp.293.2022.12.14.03.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Dec 2022 03:09:56 -0800 (PST) From: Valentin Kharin To: devel@spectrum-os.org Subject: [PATCH 1/2] Add flakes support Date: Wed, 14 Dec 2022 13:09:53 +0200 Message-Id: <20221214110954.141676-1-valentin.kharin@unikie.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: T6R3YNEAYX7EWSTYCZJG4NY354SNFJHZ X-Message-ID-Hash: T6R3YNEAYX7EWSTYCZJG4NY354SNFJHZ 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.nix | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 flake.lock 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.nix b/flake.nix new file mode 100644 index 0000000..6e77006 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + 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"; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (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; }; + + nixosModules = let + substituters = [ "https://cache.dataaturservice.se/spectrum/" ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "spectrum-os.org-1:rnnSumz3+Dbs5uewPlwZSTP0k3g/5SRG4hD7Wbr9YuQ=" + ]; + in { + # NOTE: See https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-substituters + # and https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-trusted-substituters + # to understand difference between these two modules. + binary-cache = { ... }: { + nix.settings = { inherit trusted-public-keys substituters; }; + }; + # Doesn't enabled by + trusted-binary-cache = { ... }: { + nix.settings = { + inherit trusted-public-keys; + trusted-substituters = substituters; + }; + }; + }; + }); +} -- 2.38.1