From 606b45b96aa3caaa36984478378ff516b66fdf91 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 28 Oct 2019 20:19:52 +0100 Subject: [PATCH] Initial Nix flake --- flake.lock | 30 ++++++++++++++ flake.nix | 40 +++++++++++++++++++ hydra/jobsets.json | 29 -------------- hydra/jobsets.nix | 78 ------------------------------------- hydra/solo5-jobs.nix | 44 --------------------- hydra/solo5.nix | 33 ---------------- default.nix => packages.nix | 26 +++++++------ pkgs/solo5/default.nix | 4 +- release.nix | 33 ---------------- tests/default.nix | 10 ++--- tests/driver-nova.nix | 8 ++-- tests/solo5/default.nix | 20 +++++----- 12 files changed, 106 insertions(+), 249 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 hydra/jobsets.json delete mode 100644 hydra/jobsets.nix delete mode 100644 hydra/solo5-jobs.nix delete mode 100644 hydra/solo5.nix rename default.nix => packages.nix (61%) delete mode 100644 release.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c943301 --- /dev/null +++ b/flake.lock @@ -0,0 +1,30 @@ +{ + "inputs": { + "dhall-haskell": { + "inputs": { + "nixpkgs": { + "inputs": {}, + "narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY=", + "originalUri": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148", + "uri": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148" + }, + "nixpkgsStaticLinux": { + "inputs": {}, + "narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8=", + "originalUri": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working", + "uri": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b" + } + }, + "narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=", + "originalUri": "git+https://git.sr.ht/~ehmry/dhall-haskell?ref=flake", + "uri": "git+https://git.sr.ht/~ehmry/dhall-haskell?ref=flake&rev=256810cd5adf1ae5862eed0ffdaab4cf49f6fe67" + }, + "nixpkgs": { + "inputs": {}, + "narHash": "sha256-v6oDxjvJ7c0BWZJ/fd4L1gtnctQvkkFjL41lEt37vLg=", + "originalUri": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genodeFlake", + "uri": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genodeFlake&rev=28f37882fbb71230d6947af244a34cd3d42b280a" + } + }, + "version": 3 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9fc2014 --- /dev/null +++ b/flake.nix @@ -0,0 +1,40 @@ +{ + edition = 201909; + + description = "Genode package overlay"; + + inputs = { + nixpkgs = { + uri = "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genodeFlake"; + flake = false; + }; + + dhall-haskell = { uri = "git+https://git.sr.ht/~ehmry/dhall-haskell?ref=flake"; }; + + }; + + outputs = { self, nixpkgs, dhall-haskell }: + let fullPkgs = import ./packages.nix { inherit nixpkgs; }; + in { + + packages = with fullPkgs; { + inherit stdenv nova genode-os genode-base genode-base-nova + genode-base-linux solo5; + }; + + defaultPackage = self.packages.solo5; + + hydraJobs = { + build.x86_64 = { + inherit (self.packages) + nova stdenv solo5 genode-base-linux genode-base-nova genode-os; + }; + tests = import ./tests { + inherit nixpkgs dhall-haskell; + genodepkgs = fullPkgs; + }; + }; + + checks = self.hydraJobs.tests.x86_64.nova.solo5; + }; +} diff --git a/hydra/jobsets.json b/hydra/jobsets.json deleted file mode 100644 index 352e97a..0000000 --- a/hydra/jobsets.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "enabled": 1, - "hidden": true, - "description": ".jobsets", - "nixexprinput": "genodepkgs", - "nixexprpath": "hydra/jobsets.nix", - "checkinterval": 300, - "schedulingshares": 100, - "enableemail": false, - "emailoverride": "ehmry@posteo.net", - "keepnr": 3, - "inputs": { - "genodepkgs": { - "type": "git", - "value": "https://gitea.c3d2.de/ehmry/genodepkgs.git master", - "emailresponsible": false - }, - "nixpkgs": { - "type": "git", - "value": "https://gitea.c3d2.de/ehmry/nixpkgs.git hybrid-19.09", - "emailresponsible": false - }, - "solo5PullRequests": { - "type": "githubpulls", - "value": "solo5 solo5", - "emailresponsible": false - } - } -} diff --git a/hydra/jobsets.nix b/hydra/jobsets.nix deleted file mode 100644 index 5f528bd..0000000 --- a/hydra/jobsets.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ genodepkgs ? ../default.nix -, nixpkgs ? import ../nixpkgs.nix -, solo5PullRequests -}: - -let - pkgs = import nixpkgs { }; - - mkJobSet = { description, nixexprpath, inputs }: { - inherit description nixexprpath inputs; - enabled = 1; - hidden = false; - nixexprinput = "genodepkgs"; - checkinterval = 300; - schedulingshares = 100; - enableemail = false; - emailoverride = ""; - keepnr = 8; - }; - - releaseInputs = { - - dhall-haskell = { - type = "git"; - value = "https://github.com/dhall-lang/dhall-haskell.git master"; - emailresponsible = false; - }; - - dhallNixpkgsStaticLinux = { - type = "git"; - value = - "https://github.com/nh2/nixpkgs.git 925aac04f4ca58aceb83beef18cb7dae0715421b"; - emailresponsible = false; - }; - - dhallNixpkgs = { - type = "git"; - value = - "https://gitea.c3d2.de/ehmry/nixpkgs.git 1d4de0d552ae9aa66a5b8dee5fb0650a4372d148"; - emailresponsible = false; - }; - - genodepkgs = { - type = "git"; - value = "https://gitea.c3d2.de/ehmry/genodepkgs.git master"; - emailresponsible = false; - }; - - nixpkgs = { - type = "git"; - value = "https://gitea.c3d2.de/ehmry/nixpkgs.git hybrid-19.09"; - emailresponsible = false; - }; - - nim-overlay = { - type = "git"; - value = "https://git.sr.ht/~ehmry/nim-overlay"; - emailresponsible = false; - }; - - }; - - solo5 = import ./solo5-jobs.nix { - inherit releaseInputs; - pullRequests = solo5PullRequests; - }; - - jobsets = ({ - - trunk = mkJobSet { - description = "Genodepkgs master branch"; - nixexprpath = "release.nix"; - inputs = releaseInputs; - }; - - } // solo5); - -in { jobsets = pkgs.writeText "jobsets.json" (builtins.toJSON jobsets); } diff --git a/hydra/solo5-jobs.nix b/hydra/solo5-jobs.nix deleted file mode 100644 index 22aec68..0000000 --- a/hydra/solo5-jobs.nix +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-FileCopyrightText: Emery Hemingway -# -# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1 - -{ releaseInputs, pullRequests }: - -with builtins; - -let - pullRequests' = fromJSON (readFile pullRequests); - - prToJob = pr: { - name = "solo5-${toString pr.number}"; - value = { - - description = pr.title; - nixexprpath = "hydra/solo5.nix"; - enabled = 1; - hidden = false; - nixexprinput = "genodepkgs"; - checkinterval = 300; - schedulingshares = 100; - enableemail = false; - emailoverride = ""; - keepnr = 8; - - inputs = releaseInputs // { - - prSrc = { - type = "git"; - value = "https://github.com/Solo5/solo5.git pull/${ - toString pr.number - }/head"; - emailresponsible = false; - }; - - }; - - }; - }; - - jobs = map prToJob (attrValues pullRequests'); - -in listToAttrs jobs diff --git a/hydra/solo5.nix b/hydra/solo5.nix deleted file mode 100644 index 0c1e0b5..0000000 --- a/hydra/solo5.nix +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Emery Hemingway -# -# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1 - -{ genodepkgs, nixpkgs, dhall-haskell, dhallNixpkgs, dhallNixpkgsStaticLinux -, nim-overlay, prSrc }: - -let - - prOverride = attrs: { - src = prSrc; - preConfigure = '' - cat <include/solo5/solo5_version.h.distrib - #ifndef __VERSION_H__ - #define __VERSION_H__ - #define SOLO5_VERSION "pull-request-test" - #endif - EOM - ''; - }; - - extraOverlays = - [ (self: super: { solo5 = super.solo5.overrideAttrs prOverride; }) ]; - - release = import ../release.nix { - inherit dhall-haskell dhallNixpkgs dhallNixpkgsStaticLinux nixpkgs - genodepkgs nim-overlay extraOverlays; - }; - -in { - build.x86_64.solo5 = release.build.x86_64.solo5; - tests.x86_64.nova.solo5 = release.tests.x86_64.nova.solo5; -} diff --git a/default.nix b/packages.nix similarity index 61% rename from default.nix rename to packages.nix index 39c74ac..37e3262 100644 --- a/default.nix +++ b/packages.nix @@ -5,13 +5,21 @@ let nativeOverlay = self: super: # Overlay of locally defined packages - with self; { - depot = callPackage ./depot { }; - dhallPackages = super.dhallPackages // (callPackage ./dhall { }); + with self; + let genode = (callPackage ./upstream { } // { libc = callPackage ./pkgs/libc { }; nic_bus = callPackage ./pkgs/nic_bus { }; }); + dhallPackages = super.dhallPackages // (callPackage ./dhall { }); + in { + genode-base = genode.base; + genode-base-linux = genode.base-linux; + genode-base-nova = genode.base-nova; + genode-os = genode.os; + depot = callPackage ./depot { }; + dhallGenode = dhallPackages.genode; + dhallPrelude = dhallPackages.prelude; nova = callPackage ./NOVA { }; solo5 = callPackage ./pkgs/solo5 { }; }; @@ -19,15 +27,11 @@ let toolchainOverlay = import ./toolchain-overlay; # Overlay of toolchain patches -in { nixpkgs ? ../nixpkgs, nim-overlay ? , extraOverlays ? [] }: +in { nixpkgs, extraOverlays ? [ ] }: import nixpkgs { # Evaluate an overlayed Nixpkgs for a Genode target - config.allowUnsupportedSystem = true; - crossSystem = { - isx86_64 = true; - isGenode = true; - imports = [ ./platform.nix ]; - }; - overlays = [ toolchainOverlay nativeOverlay (import nim-overlay) ] ++ extraOverlays; + localSystem = "x86_64-linux"; + crossSystem = "x86_64-genode"; + overlays = [ toolchainOverlay nativeOverlay ] ++ extraOverlays; } diff --git a/pkgs/solo5/default.nix b/pkgs/solo5/default.nix index cabedba..c8e328b 100644 --- a/pkgs/solo5/default.nix +++ b/pkgs/solo5/default.nix @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: LicenseRef-Hippocratic-1.1 -{ stdenv, buildPackages, fetchurl, llvmPackages, pkgconfig, genode }: +{ stdenv, buildPackages, fetchurl, llvmPackages, pkgconfig, genode-base, genode-os }: let version = "0.6.3"; in stdenv.mkDerivation { @@ -13,7 +13,7 @@ in stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ genode.base.dev genode.os.dev ]; + buildInputs = [ genode-base.dev genode-os.dev ]; src = fetchurl { url = "https://github.com/Solo5/solo5/releases/download/v${version}/solo5-v${version}.tar.gz"; diff --git a/release.nix b/release.nix deleted file mode 100644 index 5e92718..0000000 --- a/release.nix +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Emery Hemingway -# -# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1 - -let dhallPinned = import ../dhall-haskell/nix/pinnedNixpkgs.nix; in - -{ genodepkgs ? ./default.nix -, nixpkgs ? import ./nixpkgs.nix -, dhall-haskell ? -, dhallNixpkgs ? dhallPinned.nixpkgs -, dhallNixpkgsStaticLinux ? dhallPinned.nixpkgsStaticLinux -, nim-overlay ? -, extraOverlays ? [] -}: - -let - pkgs = import genodepkgs { inherit nixpkgs nim-overlay extraOverlays; }; - dhall-haskell' = import (dhall-haskell + "/release.nix") { - nixpkgs = dhallNixpkgs; - nixpkgsStaticLinux = dhallNixpkgsStaticLinux; - }; -in { - build.x86_64 = { - inherit (pkgs) nova stdenv solo5; - genode = removeAttrs pkgs.genode [ "override" "overrideDerivation" ]; - }; - - tests = import ./tests { - inherit nixpkgs; - genodepkgs = pkgs; - dhall-haskell = dhall-haskell'; - }; -} diff --git a/tests/default.nix b/tests/default.nix index 62b69bf..8439fde 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -11,12 +11,12 @@ let solo5 = call ./solo5 { }; }; -in { genodepkgs ? import ./../default.nix { }, nixpkgs ? import ./../nixpkgs.nix -, dhall-haskell }: +in { genodepkgs, nixpkgs, dhall-haskell }: let hostPkgs = import nixpkgs { - overlays = [ (self: super: { dhall = dhall-haskell.linux-dhall; }) ]; + system = "x86_64-linux"; + overlays = [ (self: super: { inherit (dhall-haskell.packages) dhall; }) ]; }; testPkgs = genodepkgs; @@ -40,8 +40,8 @@ let buildInputs = [ hostPkgs.dhall ]; initConfig = path; initArgs = args; - DHALL_PRELUDE = "${testPkgs.dhallPackages.prelude}/package.dhall"; - DHALL_GENODE = "${testPkgs.dhallPackages.genode}/package.dhall"; + DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall"; + DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall"; } '' export XDG_CACHE_HOME=$NIX_BUILD_TOP dhall text \ diff --git a/tests/driver-nova.nix b/tests/driver-nova.nix index 00ef105..76d6b66 100644 --- a/tests/driver-nova.nix +++ b/tests/driver-nova.nix @@ -38,7 +38,7 @@ let mkIso = import ./nova-iso.nix { inherit hostPkgs testPkgs; - coreNovaObj = "${testPkgs.genode.base-nova}/lib/core-nova.o"; + coreNovaObj = "${testPkgs.genode-base-nova}/lib/core-nova.o"; }; mkTest = { name ? "unamed", testScript, testConfig, bootModules, qemuMem ? 32 @@ -48,9 +48,9 @@ let { inherit testConfig; config = ./driver-config.xml; - init = "${genode.os}/bin/init"; + init = "${genode-os}/bin/init"; "ld.lib.so" = "${depot.base-nova}/lib/ld.lib.so"; - timer = "${genode.base-nova}/bin/nova_timer_drv"; + timer = "${genode-base-nova}/bin/nova_timer_drv"; } // bootModules); iso = mkIso bootModules'; @@ -94,7 +94,7 @@ let } global spawn_id - spawn ${hostPkgs.qemu}/bin/qemu-system-x86_64 -cdrom ${iso} -nographic \ + spawn ${hostPkgs.qemu_test}/bin/qemu-system-x86_64 -cdrom ${iso} -nographic \ -machine q35 -m size=${toString qemuMem} wait_for_output $wait_for_re $timeout_value $spawn_id } diff --git a/tests/solo5/default.nix b/tests/solo5/default.nix index 3ef5dd8..195e291 100644 --- a/tests/solo5/default.nix +++ b/tests/solo5/default.nix @@ -28,7 +28,7 @@ let name = "blk"; bootModules = { test = "${solo5.tests}/bin/solo5-test_blk"; - ram_block = "${genode.os}/bin/ram_block"; + ram_block = "${genode-os}/bin/ram_block"; }; testConfig = testEnv.lib.renderDhallInit ./blk.dhall "{=}"; } @@ -69,7 +69,7 @@ let name = "mft_maxdevices"; bootModules = { test = "${solo5.tests}/bin/solo5-test_mft_maxdevices"; - rom_block = "${genode.os}/bin/rom_block"; + rom_block = "${genode-os}/bin/rom_block"; }; testConfig = testEnv.lib.renderDhallInit ./mft_maxdevices.dhall "{=}"; } @@ -79,9 +79,9 @@ let name = "net"; bootModules = { test = "${solo5.tests}/bin/solo5-test_net"; - nic_bridge = "${genode.os}/bin/nic_bridge"; - nic_loopback = "${genode.os}/bin/nic_loopback"; - ping = "${genode.os}/bin/ping"; + nic_bridge = "${genode-os}/bin/nic_bridge"; + nic_loopback = "${genode-os}/bin/nic_loopback"; + ping = "${genode-os}/bin/ping"; }; testConfig = testEnv.lib.renderDhallInit ./net.dhall "{=}"; testScript = '' @@ -93,10 +93,10 @@ let name = "net_2if"; bootModules = { test = "${solo5.tests}/bin/solo5-test_net_2if"; - sequence = "${genode.os}/bin/sequence"; - nic_bridge = "${genode.os}/bin/nic_bridge"; - nic_loopback = "${genode.os}/bin/nic_loopback"; - ping = "${genode.os}/bin/ping"; + sequence = "${genode-os}/bin/sequence"; + nic_bridge = "${genode-os}/bin/nic_bridge"; + nic_loopback = "${genode-os}/bin/nic_loopback"; + ping = "${genode-os}/bin/ping"; }; testConfig = testEnv.lib.renderDhallInit ./net_2if.dhall "{=}"; testScript = '' @@ -151,7 +151,7 @@ let name = "time"; bootModules = { test = "${solo5.tests}/bin/solo5-test_time"; - rtc_drv = "${genode.os}/bin/rtc_drv"; + rtc_drv = "${genode-os}/bin/rtc_drv"; }; testConfig = testEnv.lib.renderDhallInit ./time.dhall "{=}"; }