From 636adf8cf377df437b7c86e407822ef100841aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikodem=20Rabuli=C5=84ski?= Date: Sun, 23 Mar 2025 12:15:58 +0100 Subject: [PATCH] nilla: migrate devshells --- .envrc | 1 + flake.nix | 13 ++++----- nilla.nix | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 82 insertions(+), 14 deletions(-) diff --git a/.envrc b/.envrc index 3550a30..6cb4a53 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,2 @@ use flake +watch_file nilla.nix diff --git a/flake.nix b/flake.nix index e8eaec5..df7b0f7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,9 @@ { outputs = inputs@{ flake-parts, ... }: + let + nilla = import ./nilla.nix { inherit inputs; }; + in flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" @@ -24,17 +27,11 @@ inputs', self', pkgs, + system, ... }: { - devShells.default = pkgs.mkShellNoCC { - packages = [ - inputs'.agenix.packages.agenix - self'.packages.attic-client - # TODO: Contribute darwin support to nh - pkgs.nh - ]; - }; + devShells = builtins.mapAttrs (_: shell: shell.result.${system}) nilla.shells; packages = { # Re-export it for convenience and for caching diff --git a/nilla.nix b/nilla.nix index 48729f7..eb7bf6c 100644 --- a/nilla.nix +++ b/nilla.nix @@ -2,7 +2,7 @@ inputs ? import ./inputs.nix, }: (import inputs.nilla).create ( - { lib }: + { config, lib }: { config.inputs = builtins.mapAttrs (_: src: { inherit src; @@ -20,17 +20,87 @@ build = pkg: lib.attrs.generate pkg.systems ( - system: inputs.nixpkgs.legacyPackages.${system}.callPackage pkg.package pkg.settings.args + system: + inputs.nixpkgs.legacyPackages.${system}.callPackage pkg.package ( + { + self' = builtins.mapAttrs (_: pkg: pkg.result.${system}) config.packages; + } + // pkg.settings.args + ) ); }; + config.builders.custom-load = { + settings.type = lib.types.submodule { + options.args = lib.options.create { + type = lib.types.null; + default.value = null; + }; + }; + settings.default = { }; + build = pkg: lib.attrs.generate pkg.systems (system: pkg.package { inherit system; }); + }; + + config.packages = + let + systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; + mkPackage = package: { + builder = "nixpkgs-flake"; + inherit systems package; + }; + mkPackageFlakeOutput = + { + input, + output ? input, + }: + { + inherit systems; + builder = "custom-load"; + package = { system }: inputs.${input}.packages.${system}.${output}; + }; + in + { + attic-client = mkPackageFlakeOutput { + input = "attic"; + output = "attic-client"; + }; + attic-server = mkPackageFlakeOutput { + input = "attic"; + output = "attic-server"; + }; + agenix = mkPackageFlakeOutput { input = "agenix"; }; + base-packages = mkPackage ( + { symlinkJoin }: + symlinkJoin { + name = "settei-base"; + paths = [ ]; + } + ); + }; + config.shells.default = { - systems = [ "x86_64-linux" ]; + systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; builder = "nixpkgs-flake"; shell = - { mkShell, hello }: - mkShell { - packages = [ hello ]; + { + mkShellNoCC, + nh, + self', + }: + mkShellNoCC { + packages = [ + self'.agenix + self'.attic-client + nh + ]; }; }; }