From b79769a5ea0ef0e01d9a5cd47bb5a0127679e63d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikodem=20Rabuli=C5=84ski?= Date: Sun, 23 Mar 2025 13:17:56 +0100 Subject: [PATCH] pkgs: migrate to nilla --- flake.nix | 65 +++++++------------ modules/nilla/builders/nixpkgs-flake.nix | 7 +- nilla.nix | 23 +++++-- pkgs/conduit/default.nix | 6 +- pkgs/default.nix | 81 ++++++++++++++---------- 5 files changed, 93 insertions(+), 89 deletions(-) diff --git a/flake.nix b/flake.nix index b971223..a8bdb96 100644 --- a/flake.nix +++ b/flake.nix @@ -35,57 +35,36 @@ ./hosts ./modules ./wrappers - ./pkgs ./services ]; flake.devShells = transpose (builtins.mapAttrs (_: shell: shell.result) nilla.shells); + flake.packages = transpose (builtins.mapAttrs (_: pkg: pkg.result) nilla.packages); - perSystem = - { - inputs', - self', - pkgs, - ... - }: - { - packages = { - # Re-export it for convenience and for caching - inherit (inputs'.attic.packages) attic-client attic-server; - base-packages = pkgs.symlinkJoin { - name = "settei-base"; - paths = with self'.packages; [ - helix - fish - git-commit-last - git-fixup - ]; - }; - }; + perSystem = { + treefmt = { + programs.deadnix.enable = true; + programs.nixfmt.enable = true; + programs.statix.enable = true; + programs.fish_indent.enable = true; + programs.deno.enable = true; + programs.stylua.enable = true; + programs.shfmt.enable = true; + settings.global.excludes = [ + # agenix + "*.age" - treefmt = { - programs.deadnix.enable = true; - programs.nixfmt.enable = true; - programs.statix.enable = true; - programs.fish_indent.enable = true; - programs.deno.enable = true; - programs.stylua.enable = true; - programs.shfmt.enable = true; - settings.global.excludes = [ - # agenix - "*.age" + # racket + "*.rkt" + "**/rashrc" - # racket - "*.rkt" - "**/rashrc" - - # custom assets - "*.png" - "*.svg" - ]; - settings.on-unmatched = "fatal"; - }; + # custom assets + "*.png" + "*.svg" + ]; + settings.on-unmatched = "fatal"; }; + }; }; inputs = { diff --git a/modules/nilla/builders/nixpkgs-flake.nix b/modules/nilla/builders/nixpkgs-flake.nix index a57b0e7..4b0115f 100644 --- a/modules/nilla/builders/nixpkgs-flake.nix +++ b/modules/nilla/builders/nixpkgs-flake.nix @@ -15,12 +15,7 @@ pkg: lib.attrs.generate pkg.systems ( system: - config.inputs.nixpkgs.result.legacyPackages.${system}.callPackage pkg.package ( - { - self' = builtins.mapAttrs (_: pkg: pkg.result.${system}) config.packages; - } - // pkg.settings.args - ) + config.inputs.nixpkgs.result.legacyPackages.${system}.callPackage pkg.package pkg.settings.args ); }; } diff --git a/nilla.nix b/nilla.nix index 7fa2127..7a72441 100644 --- a/nilla.nix +++ b/nilla.nix @@ -4,7 +4,10 @@ (import inputs.nilla).create ( { config, lib }: { - includes = [ ./modules/nilla ]; + includes = [ + ./modules/nilla + ./pkgs + ]; config.inputs = builtins.mapAttrs (_: src: { inherit src; @@ -32,8 +35,10 @@ builder = "custom-load"; package = { system }: inputs.${input}.packages.${system}.${output}; }; + getPkgs = system: builtins.mapAttrs (_: pkg: pkg.result.${system}) config.packages; in { + # Re-export for convenience and for caching attic-client = mkPackageFlakeOutput { input = "attic"; output = "attic-client"; @@ -44,10 +49,16 @@ }; agenix = mkPackageFlakeOutput { input = "agenix"; }; base-packages = mkPackage ( - { symlinkJoin }: + { symlinkJoin, system }: symlinkJoin { name = "settei-base"; - paths = [ ]; + paths = with (getPkgs system); [ + # TODO: wrappers + # helix + # fish + git-commit-last + git-fixup + ]; } ); }; @@ -62,13 +73,13 @@ shell = { mkShellNoCC, + system, nh, - self', }: mkShellNoCC { packages = [ - self'.agenix - self'.attic-client + config.packages.agenix.result.${system} + config.packages.attic-client.result.${system} nh ]; }; diff --git a/pkgs/conduit/default.nix b/pkgs/conduit/default.nix index c2c44b4..2f1ccdd 100644 --- a/pkgs/conduit/default.nix +++ b/pkgs/conduit/default.nix @@ -1,6 +1,8 @@ { lib, stdenv, + pkgs, + system, fenix, crane, src, @@ -11,12 +13,12 @@ }: let rust = - with fenix; + with fenix.${system}; combine [ stable.cargo stable.rustc ]; - crane' = crane.overrideToolchain rust; + crane' = (crane pkgs).overrideToolchain rust; rocksdb' = rocksdb.overrideAttrs ( final: prev: { version = "9.1.1"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 71a2d48..395dc2c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,35 +1,52 @@ -{ inputs, ... }: +let + systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; + builder = "nixpkgs-flake"; + mkPackage = package: { + inherit systems package builder; + }; + +in +{ config }: { - perSystem = - { - pkgs, - lib, - inputs', - ... - }: - { - packages.conduit-next = pkgs.callPackage ./conduit { - src = inputs.conduit-src; - crane = inputs.crane.mkLib pkgs; - fenix = inputs'.fenix.packages; - }; - - packages.git-commit-last = pkgs.writeShellApplication { - name = "git-commit-last"; - text = '' - GITDIR="$(git rev-parse --git-dir)" - git commit -eF "$GITDIR/COMMIT_EDITMSG" - ''; - }; - - packages.git-fixup = pkgs.writeShellApplication { - name = "git-fixup"; - text = '' - git log -n 50 --pretty=format:'%h %s' --no-merges | \ - ${lib.getExe pkgs.fzf} | \ - cut -c -7 | \ - xargs -o git commit --fixup - ''; - }; + config.packages.conduit-next = { + inherit systems builder; + package = import ./conduit; + settings.args = { + src = config.inputs.conduit-src.result; + crane = config.inputs.crane.result.mkLib; + fenix = config.inputs.fenix.result.packages; }; + }; + + config.packages.git-commit-last = mkPackage ( + { writeShellApplication }: + writeShellApplication { + name = "git-commit-last"; + text = '' + GITDIR="$(git rev-parse --git-dir)" + git commit -eF "$GITDIR/COMMIT_EDITMSG" + ''; + } + ); + + config.packages.git-fixup = mkPackage ( + { + lib, + writeShellApplication, + fzf, + }: + writeShellApplication { + name = "git-fixup"; + text = '' + git log -n 50 --pretty=format:'%h %s' --no-merges | \ + ${lib.getExe fzf} | \ + cut -c -7 | \ + xargs -o git commit --fixup + ''; + } + ); }