From 0c99b5e733fe928856453002df29cbc2ab8e7697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= Date: Sat, 22 Apr 2023 15:40:58 +0100 Subject: [PATCH] base nix-packages on an overlay --- default.nix | 68 ++++++++++++++++++++++++++- flake.nix | 131 +++++++++++++++++++++++++--------------------------- overlay.nix | 98 ++++++++++++++++++++++++++++++++++----- 3 files changed, 216 insertions(+), 81 deletions(-) diff --git a/default.nix b/default.nix index 2bd58da..e386951 100644 --- a/default.nix +++ b/default.nix @@ -8,9 +8,75 @@ {pkgs ? import {}}: let lib = import ./lib {inherit pkgs;}; # functions flake = (lib.importFlake {inherit (pkgs) system;}).defaultNix; + pkgsWithOverlay = import pkgs { + overlays = [(import ./overlay.nix pkgs.system)]; + inherit (pkgs) system; + }; in { # The `lib`, `modules`, and `overlay` names are special inherit (flake) lib modules overlays; } - // (flake.packages.${pkgs.system}) + // { + inherit + (pkgsWithOverlay) + akkoma + pleroma-fe + admin-fe + emoji-lotte + emoji-volpeon-blobfox + emoji-volpeon-blobfox-flip + emoji-volpeon-bunhd + emoji-volpeon-bunhd-flip + emoji-volpeon-drgn + emoji-volpeon-fox + emoji-volpeon-gphn + emoji-volpeon-raccoon + emoji-volpeon-vlpn + emoji-caro + lotte-art + alco-sans + constructium + fairfax + fairfax-hd + kreative-square + nasin-nanpa + matrix-media-repo + mautrix-discord + mautrix-whatsapp + mautrix-signal + mautrix-telegram + python-mauutrix + python-tulir-telethon + papermc + python-plover-stroke + python-rtf-tokenize + plover + python-plugins-manager + python-simplefuzzyset + python-plugin-emoji + plover-pluugin-tapey-tape + plover-plugin-yamml-dictionary + plover-plugin-machine-hid + plover-plugin-rkb1-hid + plover-dict-diddoesdigital + miifox-net + old-homepage + python-instagramn + element-web + mautrix-cleanup + woodpecker-agent + woodpecker-cli + woodpecker-frontend + woodpecker-server + hydra + hydra-unstable + ; + } + // ( + if pkgs.system == "riscv64-linux" + then { + inherit (pkgsWithOverlay) vf2Kernel vf2KernelPackages; + } + else {} + ) diff --git a/flake.nix b/flake.nix index 9f123eb..dfaa3cb 100644 --- a/flake.nix +++ b/flake.nix @@ -29,12 +29,11 @@ }; outputs = { + self, nixpkgs, flake-utils, - gomod2nix, - hydra, ... - } @ inputs: + }: flake-utils.lib.eachSystem ["aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" "riscv64-linux"] ( system: let pkgs = import nixpkgs { @@ -42,12 +41,14 @@ config.allowUnfree = true; config.allowUnsupportedSystem = true; overlays = [ - gomod2nix.overlays.default + self.overlays.${system}.default ]; }; in rec { formatter = pkgs.alejandra; + overlays.default = import ./overlay.nix system; + devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ statix @@ -57,77 +58,69 @@ packages = { - akkoma = pkgs.callPackage ./akkoma {}; - pleroma-fe = pkgs.callPackage ./akkoma/pleroma-fe {}; - admin-fe = pkgs.callPackage ./akkoma/admin-fe {}; - emoji-lotte = pkgs.callPackage ./art/emoji/lotte {}; - emoji-volpeon-blobfox = pkgs.callPackage ./art/emoji/volpeon/blobfox.nix {}; - emoji-volpeon-blobfox-flip = pkgs.callPackage ./art/emoji/volpeon/blobfox_flip.nix {}; - emoji-volpeon-bunhd = pkgs.callPackage ./art/emoji/volpeon/bunhd.nix {}; - emoji-volpeon-bunhd-flip = pkgs.callPackage ./art/emoji/volpeon/bunhd_flip.nix {}; - emoji-volpeon-drgn = pkgs.callPackage ./art/emoji/volpeon/drgn.nix {}; - emoji-volpeon-fox = pkgs.callPackage ./art/emoji/volpeon/fox.nix {}; - emoji-volpeon-gphn = pkgs.callPackage ./art/emoji/volpeon/gphn.nix {}; - emoji-volpeon-raccoon = pkgs.callPackage ./art/emoji/volpeon/raccoon.nix {}; - emoji-volpeon-vlpn = pkgs.callPackage ./art/emoji/volpeon/vlpn.nix {}; - emoji-caro = pkgs.callPackage ./art/emoji/caro {}; - lotte-art = pkgs.callPackage ./art/lotte {}; - alco-sans = pkgs.callPackage ./fonts/kreative/alco-sans.nix {}; - constructium = pkgs.callPackage ./fonts/kreative/constructium.nix {}; - fairfax = pkgs.callPackage ./fonts/kreative/fairfax.nix {}; - fairfax-hd = pkgs.callPackage ./fonts/kreative/fairfax-hd.nix {}; - kreative-square = pkgs.callPackage ./fonts/kreative/kreative-square.nix {}; - nasin-nanpa = pkgs.callPackage ./fonts/nasin-nanpa {}; - matrix-media-repo = pkgs.callPackage ./matrix/matrix-media-repo {}; - mautrix-discord = pkgs.callPackage ./matrix/mautrix-discord {}; - mautrix-whatsapp = pkgs.callPackage ./matrix/mautrix-whatsapp {}; - mautrix-signal = pkgs.callPackage ./matrix/mautrix-signal {}; - mautrix-telegram = pkgs.callPackage ./matrix/mautrix-telegram {}; - python-mautrix = pkgs.python3Packages.callPackage ./python/mautrix.nix {}; - python-tulir-telethon = pkgs.python3Packages.callPackage ./python/tulir-telethon.nix {}; - papermc = pkgs.callPackage ./minecraft/papermc {}; - python-plover-stroke = pkgs.python3Packages.callPackage ./plover/plover-stroke.nix {}; - python-rtf-tokenize = pkgs.python3Packages.callPackage ./python/rtf-tokenize.nix {}; - plover = pkgs.python3Packages.callPackage ./plover/plover {}; - plover-plugins-manager = pkgs.python3Packages.callPackage ./plover/plover-plugins-manager.nix {}; - python-simplefuzzyset = pkgs.python3Packages.callPackage ./python/simplefuzzyset.nix {}; - plover-plugin-emoji = pkgs.python3Packages.callPackage ./plover/plover-emoji.nix {}; - plover-plugin-tapey-tape = pkgs.python3Packages.callPackage ./plover/plover-tapey-tape.nix {}; - plover-plugin-yaml-dictionary = pkgs.python3Packages.callPackage ./plover/plover-yaml-dictionary.nix {}; - plover-plugin-machine-hid = pkgs.python3Packages.callPackage ./plover/plover-machine-hid.nix {}; - plover-plugin-rkb1-hid = pkgs.python3Packages.callPackage ./plover/plover-rkb1-hid.nix {}; - plover-dict-didoesdigital = pkgs.callPackage ./plover/didoesdigital-dictionary.nix {}; - miifox-net = pkgs.python3Packages.callPackage ./web/miifox-net.nix {}; - old-homepage = pkgs.callPackage ./web/old-homepage.nix {}; - python-instagram = pkgs.python3Packages.callPackage ./python/instagram.nix {}; - inherit (inputs.attic.packages.${pkgs.system}) attic attic-client attic-server; - element-web = pkgs.callPackage ./matrix/element-web {}; - mautrix-cleanup = inputs.mautrix-cleanup.packages.${pkgs.system}.default; - woodpecker-agent = pkgs.callPackage ./ci/woodpecker/agent.nix {}; - woodpecker-cli = pkgs.callPackage ./ci/woodpecker/cli.nix {}; - woodpecker-frontend = pkgs.callPackage ./ci/woodpecker/frontend.nix {}; - woodpecker-server = pkgs.callPackage ./ci/woodpecker/server.nix {}; + inherit + (pkgs) + akkoma + pleroma-fe + admin-fe + emoji-lotte + emoji-volpeon-blobfox + emoji-volpeon-blobfox-flip + emoji-volpeon-bunhd + emoji-volpeon-bunhd-flip + emoji-volpeon-drgn + emoji-volpeon-fox + emoji-volpeon-gphn + emoji-volpeon-raccoon + emoji-volpeon-vlpn + emoji-caro + lotte-art + alco-sans + constructium + fairfax + fairfax-hd + kreative-square + nasin-nanpa + matrix-media-repo + mautrix-discord + mautrix-whatsapp + mautrix-signal + mautrix-telegram + python-mauutrix + python-tulir-telethon + papermc + python-plover-stroke + python-rtf-tokenize + plover + python-plugins-manager + python-simplefuzzyset + python-plugin-emoji + plover-pluugin-tapey-tape + plover-plugin-yamml-dictionary + plover-plugin-machine-hid + plover-plugin-rkb1-hid + plover-dict-diddoesdigital + miifox-net + old-homepage + python-instagramn + element-web + mautrix-cleanup + woodpecker-agent + woodpecker-cli + woodpecker-frontend + woodpecker-server + hydra + hydra-unstable + ; } // ( if system == "riscv64-linux" - then rec { - vf2Kernel = pkgs.callPackage ./linux/vf2 {kernelPatches = [];}; - vf2KernelPackages = pkgs.linuxPackagesFor vf2Kernel; + then { + inherit (pkgs) vf2Kernel vf2KernelPackages; } else {} - ) // (if system == "aarch64-linux" || system == "x86_64-linux" then { - hydra = hydra.packages.${system}.hydra.overrideAttrs (super: { - doCheck = false; - patches = (super.patches or []) ++ [ - ./ci/hydra/add-ca-support.patch - ./ci/hydra/add-gitea-push-hook.patch - ./ci/hydra/jobset-inputs-for-flakes.patch - ./ci/hydra/remove-hydra-size-limit.patch - ]; - }); - } else {}); + ); - overlays = import ./overlays; modules = import ./modules; lib = import ./lib {inherit pkgs;}; diff --git a/overlay.nix b/overlay.nix index f913ca0..156c8ce 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,15 +1,91 @@ -# You can use this file as a nixpkgs overlay. This is useful in the +# You can use this file as a nixself overlay. This is useful in the # case where you don't want to add the whole NUR namespace to your # configuration. -self: super: let - isReserved = n: n == "lib" || n == "overlays" || n == "modules"; - nameValuePair = n: v: { - name = n; - value = v; +system: self: super: let + lib = import ./lib {pkgs = super;}; # functions + flake = (lib.importFlake {inherit system;}).defaultNix; + + getFlakeOverlay = flakeName: overlay: self: super: let + lib = import ./lib {pkgs = super;}; + flake = (lib.importFlake {inherit system;}).defaultNix; + in + flake.inputs.${flakeName}.outputs.overlays.${overlay} self super; + + riscv-overlay = self: super: { + vf2Kernel = super.callPackage ./linux/vf2 {kernelPatches = [];}; + vf2KernelPackages = super.linuxPackagesFor self.vf2Kernel; }; - nurAttrs = import ./default.nix {pkgs = super;}; + + overlays = [ + #(getFlakeOverlay "attic" "default") + #(getFlakeOverlay "hydra" "default") + (getFlakeOverlay "gomod2nix" "default") + + (self: super: { + akkoma = super.callPackage ./akkoma {}; + pleroma-fe = super.callPackage ./akkoma/pleroma-fe {}; + admin-fe = super.callPackage ./akkoma/admin-fe {}; + emoji-lotte = super.callPackage ./art/emoji/lotte {}; + emoji-volpeon-blobfox = super.callPackage ./art/emoji/volpeon/blobfox.nix {}; + emoji-volpeon-blobfox-flip = super.callPackage ./art/emoji/volpeon/blobfox_flip.nix {}; + emoji-volpeon-bunhd = super.callPackage ./art/emoji/volpeon/bunhd.nix {}; + emoji-volpeon-bunhd-flip = super.callPackage ./art/emoji/volpeon/bunhd_flip.nix {}; + emoji-volpeon-drgn = super.callPackage ./art/emoji/volpeon/drgn.nix {}; + emoji-volpeon-fox = super.callPackage ./art/emoji/volpeon/fox.nix {}; + emoji-volpeon-gphn = super.callPackage ./art/emoji/volpeon/gphn.nix {}; + emoji-volpeon-raccoon = super.callPackage ./art/emoji/volpeon/raccoon.nix {}; + emoji-volpeon-vlpn = super.callPackage ./art/emoji/volpeon/vlpn.nix {}; + emoji-caro = super.callPackage ./art/emoji/caro {}; + lotte-art = super.callPackage ./art/lotte {}; + alco-sans = super.callPackage ./fonts/kreative/alco-sans.nix {}; + constructium = super.callPackage ./fonts/kreative/constructium.nix {}; + fairfax = super.callPackage ./fonts/kreative/fairfax.nix {}; + fairfax-hd = super.callPackage ./fonts/kreative/fairfax-hd.nix {}; + kreative-square = super.callPackage ./fonts/kreative/kreative-square.nix {}; + nasin-nanpa = super.callPackage ./fonts/nasin-nanpa {}; + matrix-media-repo = super.callPackage ./matrix/matrix-media-repo {}; + mautrix-discord = super.callPackage ./matrix/mautrix-discord {}; + mautrix-whatsapp = super.callPackage ./matrix/mautrix-whatsapp {}; + mautrix-signal = super.callPackage ./matrix/mautrix-signal {}; + mautrix-telegram = super.callPackage ./matrix/mautrix-telegram {}; + python-mautrix = super.python3Packages.callPackage ./python/mautrix.nix {}; + python-tulir-telethon = super.python3Packages.callPackage ./python/tulir-telethon.nix {}; + papermc = super.callPackage ./minecraft/papermc {}; + python-plover-stroke = super.python3Packages.callPackage ./plover/plover-stroke.nix {}; + python-rtf-tokenize = super.python3Packages.callPackage ./python/rtf-tokenize.nix {}; + plover = super.python3Packages.callPackage ./plover/plover {}; + plover-plugins-manager = super.python3Packages.callPackage ./plover/plover-plugins-manager.nix {}; + python-simplefuzzyset = super.python3Packages.callPackage ./python/simplefuzzyset.nix {}; + plover-plugin-emoji = super.python3Packages.callPackage ./plover/plover-emoji.nix {}; + plover-plugin-tapey-tape = super.python3Packages.callPackage ./plover/plover-tapey-tape.nix {}; + plover-plugin-yaml-dictionary = super.python3Packages.callPackage ./plover/plover-yaml-dictionary.nix {}; + plover-plugin-machine-hid = super.python3Packages.callPackage ./plover/plover-machine-hid.nix {}; + plover-plugin-rkb1-hid = super.python3Packages.callPackage ./plover/plover-rkb1-hid.nix {}; + plover-dict-didoesdigital = super.callPackage ./plover/didoesdigital-dictionary.nix {}; + miifox-net = super.python3Packages.callPackage ./web/miifox-net.nix {}; + old-homepage = super.callPackage ./web/old-homepage.nix {}; + python-instagram = super.python3Packages.callPackage ./python/instagram.nix {}; + element-web = super.callPackage ./matrix/element-web {}; + mautrix-cleanup = flake.inputs.mautrix-cleanup.packages.${system}.default; + woodpecker-agent = super.callPackage ./ci/woodpecker/agent.nix {}; + woodpecker-cli = super.callPackage ./ci/woodpecker/cli.nix {}; + woodpecker-frontend = super.callPackage ./ci/woodpecker/frontend.nix {}; + woodpecker-server = super.callPackage ./ci/woodpecker/server.nix {}; + hydra = super.hydra.overrideAttrs (super: { + doCheck = false; + patches = + (super.patches or []) + ++ [ + ./ci/hydra/add-ca-support.patch + ./ci/hydra/add-gitea-push-hook.patch + ./ci/hydra/jobset-inputs-for-flakes.patch + ./ci/hydra/remove-hydra-size-limit.patch + ]; + }); + hydra-unstable = self.hydra; + }) + + riscv-overlay + ]; in - builtins.listToAttrs - (map (n: nameValuePair n nurAttrs.${n}) - (builtins.filter (n: !isReserved n) - (builtins.attrNames nurAttrs))) + super.lib.composeManyExtensions overlays self super