summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornzbr <mail@nzbr.de>2022-02-01 04:01:13 +0100
committernzbr <mail@nzbr.de>2022-02-01 04:01:13 +0100
commit4262e1f600ca3d8317f095bb8e511e5243fe0238 (patch)
tree501bc65aaefa7bd60553ae7eec76b4b0e8950925
parenta487bcf303bffb418edda23c9e5ec1d5dbf739c3 (diff)
move build-tarball to a flake module
-rw-r--r--configuration.nix6
-rw-r--r--default.nix13
-rw-r--r--flake.lock17
-rw-r--r--flake.nix19
-rw-r--r--modules/build-tarball.nix (renamed from build-tarball.nix)18
-rw-r--r--nixos.nix7
6 files changed, 60 insertions, 20 deletions
diff --git a/configuration.nix b/configuration.nix
index c64aa06..05df82f 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -5,10 +5,13 @@ let
defaultUser = "nixos";
automountPath = "/mnt";
syschdemd = import ./syschdemd.nix { inherit lib pkgs config defaultUser; };
+ nixos-wsl = import ./default.nix;
in
{
- imports = [
+ imports = with nixos-wsl.nixosModules; [
"${modulesPath}/profiles/minimal.nix"
+
+ build-tarball
];
# WSL is closer to a container than anything else
@@ -68,4 +71,5 @@ in
${pkgs.rsync}/bin/rsync -ar --delete $systemConfig/sw/share/$x/. /usr/share/$x
done
'';
+ };
}
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..873ece4
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,13 @@
+(import
+ (
+ let
+ lock = builtins.fromJSON (builtins.readFile ./flake.lock);
+ in
+ fetchTarball {
+ url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
+ sha256 = lock.nodes.flake-compat.locked.narHash;
+ }
+ )
+ {
+ src = ./.;
+ }).defaultNix
diff --git a/flake.lock b/flake.lock
index 74d3e6b..48993f7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,21 @@
{
"nodes": {
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1641205782,
+ "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
"flake-utils": {
"locked": {
"lastModified": 1623875721,
@@ -32,6 +48,7 @@
},
"root": {
"inputs": {
+ "flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
diff --git a/flake.nix b/flake.nix
index 9e44244..b094c2b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,19 +1,30 @@
{
description = "NixOS WSL";
- inputs.nixpkgs.url = "nixpkgs/nixos-20.09";
- inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs = {
+ nixpkgs.url = "nixpkgs/nixos-20.09";
+ flake-utils.url = "github:numtide/flake-utils";
+
+ flake-compat = {
+ url = "github:edolstra/flake-compat";
+ flake = false;
+ };
+ };
outputs = { self, nixpkgs, flake-utils, ... }:
{
+ nixosModules = {
+ build-tarball = import ./modules/build-tarball.nix;
+ };
+
nixosConfigurations.mysystem = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
- (import ./configuration.nix)
- (import ./build-tarball.nix)
+ ./configuration.nix
];
specialArgs = { inherit nixpkgs; };
};
+
} //
flake-utils.lib.eachDefaultSystem (system:
let
diff --git a/build-tarball.nix b/modules/build-tarball.nix
index cbeb1dd..c91e9c5 100644
--- a/build-tarball.nix
+++ b/modules/build-tarball.nix
@@ -1,6 +1,5 @@
-{ config, pkgs, lib, nixpkgs ? <nixpkgs>, ... }:
-
-with lib;
+{ config, pkgs, lib, ... }:
+with builtins; with lib;
let
pkgs2storeContents = l: map (x: { object = x; symlink = "none"; }) l;
@@ -15,9 +14,9 @@ let
if [ ! -e $out/nixos/nixpkgs ]; then
ln -s . $out/nixos/nixpkgs
fi
- echo -n ${config.system.nixos.revision} > $out/nixos/.git-revision
- echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
- echo ${config.system.nixos.versionSuffix} | sed -e s/pre// > $out/nixos/svn-revision
+ echo -n ${toString config.system.nixos.revision} > $out/nixos/.git-revision
+ echo -n ${toString config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
+ echo ${toString config.system.nixos.versionSuffix} | sed -e s/pre// > $out/nixos/svn-revision
'';
preparer = pkgs.writeShellScriptBin "wsl-prepare" ''
@@ -49,16 +48,17 @@ let
# Copy the system configuration
mkdir -p ./etc/nixos
- cp ${./configuration.nix} ./etc/nixos/configuration.nix
- cp ${./syschdemd.nix} ./etc/nixos/syschdemd.nix
- cp ${./syschdemd.sh} ./etc/nixos/syschdemd.sh
+ cp -R ${../.}/. ./etc/nixos/
'';
+
in
{
system.build.tarball = pkgs.callPackage "${nixpkgs}/nixos/lib/make-system-tarball.nix" {
# No contents, structure will be added by prepare script
contents = [ ];
+ fileName = "nixos-wsl-${config.system.nixos.release}-${pkgs.hostPlatform.system}";
+
storeContents = pkgs2storeContents [
config.system.build.toplevel
channelSources
diff --git a/nixos.nix b/nixos.nix
index 3a32460..f9e850f 100644
--- a/nixos.nix
+++ b/nixos.nix
@@ -2,12 +2,7 @@
# nix-build -A system -A config.system.build.tarball ./nixos.nix
import <nixpkgs/nixos> {
- configuration = {
- imports = [
- ./configuration.nix
- ./build-tarball.nix
- ];
- };
+ configuration = import ./configuration.nix;
system = "x86_64-linux";
}