From 7f3dc64568b600597980e4b8f97e9addea21ec6d Mon Sep 17 00:00:00 2001 From: atagen Date: Tue, 20 Aug 2024 11:19:45 +1000 Subject: [PATCH] meat --- flake.lock | 127 ++++++++++++++++++++++----------- flake.nix | 8 ++- flakes/meat/flake.lock | 38 ++++++++++ flakes/meat/flake.nix | 74 +++++++++++++++++++ flakes/meat/meat.nix | 39 ++++++++++ flakes/meat/src/meat | 54 ++++++++++++++ home/bolt.nix | 5 +- home/modules/media-players.nix | 1 - system/configuration.nix | 1 + system/quiver.nix | 2 + 10 files changed, 302 insertions(+), 47 deletions(-) create mode 100644 flakes/meat/flake.lock create mode 100644 flakes/meat/flake.nix create mode 100644 flakes/meat/meat.nix create mode 100755 flakes/meat/src/meat diff --git a/flake.lock b/flake.lock index 80f99f6..885c409 100644 --- a/flake.lock +++ b/flake.lock @@ -216,11 +216,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1723657484, - "narHash": "sha256-oSxczvhDKCc/ilTPiMz46RmTLhyBoVxhGWhp7Ee54eA=", + "lastModified": 1724110726, + "narHash": "sha256-d4vqblq6e5LOowA6OBro3w0sLsT7HOUYBwV6Wa6zLS8=", "owner": "helix-editor", "repo": "helix", - "rev": "ff33b07756548935577aefc15cf48a1beb27b162", + "rev": "9e7c488ee33eaabab6ee7c3436f4c58b8c647b4f", "type": "github" }, "original": { @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1723621879, - "narHash": "sha256-7/VysfDaFfmFJ7zgt2H8J04PkSO2bMjoN7e0wwUu6Ek=", + "lastModified": 1723954948, + "narHash": "sha256-TViNzTQdc1BfUftqKTPePwDL0NqliTcX5GyDHM5IHQQ=", "owner": "n-hass", "repo": "home-manager", - "rev": "639ab4410badd2a7a4c28b678452e1dc2d30450a", + "rev": "774b50e0b28c9654cfbcb78584ec4819629f6541", "type": "github" }, "original": { @@ -269,11 +269,11 @@ "lix": { "flake": false, "locked": { - "lastModified": 1723577950, - "narHash": "sha256-kOpGI9WPmte1L4QWHviuXsr8jxmGn27zwi82jtzYObM=", - "rev": "b016eb0895bb6714a4f6530d9a2bb6577ac6c3cf", + "lastModified": 1724058824, + "narHash": "sha256-WkRs8plqBYxIgrcz1jenmxbcLVVpo9Z9Waot9qIlqmI=", + "rev": "e727dbc3a3d59d7742a24a2b394b63a04ecb4d24", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/b016eb0895bb6714a4f6530d9a2bb6577ac6c3cf.tar.gz" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/e727dbc3a3d59d7742a24a2b394b63a04ecb4d24.tar.gz" }, "original": { "type": "tarball", @@ -318,16 +318,32 @@ "type": "github" } }, - "nix-index-database": { + "meat": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_2", + "src": "src" }, "locked": { - "lastModified": 1723352546, - "narHash": "sha256-WTIrvp0yV8ODd6lxAq4F7EbrPQv0gscBnyfn559c3k8=", + "lastModified": 1, + "narHash": "sha256-7X+B0Gt3ns9QlI0sanZm+dst0UIpc3OH7HmbMf/ixE4=", + "path": "flakes/meat", + "type": "path" + }, + "original": { + "path": "flakes/meat", + "type": "path" + } + }, + "nix-index-database": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1723950649, + "narHash": "sha256-dHMkGjwwCGj0c2MKyCjRXVBXq2Sz3TWbbM23AS7/5Hc=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "ec78079a904d7d55e81a0468d764d0fffb50ac06", + "rev": "392828aafbed62a6ea6ccab13728df2e67481805", "type": "github" }, "original": { @@ -362,15 +378,15 @@ "inputs": { "flake-parts": "flake-parts", "flake-root": "flake-root", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1723381807, - "narHash": "sha256-tBvNlNvI3xRjmfUuzwgwWFrk+SO50wlrmAGRuG3Yzi4=", + "lastModified": 1724075735, + "narHash": "sha256-w9MlAKAdcfSR9t3oasYj8L+XJ3r81f8MWSw9e0NCPpk=", "owner": "nix-community", "repo": "nixd", - "rev": "c9d8970a646dbaa82981d050d905637a29bbdd21", + "rev": "c37ef77223d819eb673b9be828a2450271e3f08a", "type": "github" }, "original": { @@ -382,16 +398,16 @@ "nixos-cosmic": { "inputs": { "flake-compat": "flake-compat_3", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "nixpkgs-stable": "nixpkgs-stable_2", "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1723599342, - "narHash": "sha256-4eUNZxze/tMkKzfAJSS+o3o4LcMH1znWfCUICO/Sw4A=", + "lastModified": 1724031331, + "narHash": "sha256-X1SK0Xrty5yo5DyihYtM7NFyOoO+dnkz9uhywjntiqY=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "5e861c29989be12691f90bda3a7b97891a629ed3", + "rev": "1c1b4a675c4c1b5ccf04f2112ad34a7622cfca7d", "type": "github" }, "original": { @@ -467,11 +483,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1723556749, - "narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=", + "lastModified": 1723938990, + "narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a92571f9207810b559c9eac203d1f4d79830073", + "rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890", "type": "github" }, "original": { @@ -483,11 +499,24 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1723175592, - "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=", + "lastModified": 1723362943, + "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", + "path": "/nix/store/h60m1fwahjd2mv6gsg77ji3vb4gpj4dk-source", + "rev": "a58bc8ad779655e790115244571758e8de055e3d", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -497,7 +526,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1681303793, "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", @@ -513,7 +542,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1714562304, "narHash": "sha256-Mr3U37Rh6tH0FbaDFu0aZDwk9mPAe7ASaqDOGgLqqLU=", @@ -529,13 +558,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { - "lastModified": 1723362943, - "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a58bc8ad779655e790115244571758e8de055e3d", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -547,11 +576,11 @@ }, "nur": { "locked": { - "lastModified": 1723664702, - "narHash": "sha256-ErRJ3oUHFOzUXoDAzws/h5u7c6dCExETjmm5uIFL/QY=", + "lastModified": 1724103901, + "narHash": "sha256-yupLp7tv5yu3KvrWQ9mLpCKyVks8RyEvNQVCFToyxdw=", "owner": "nix-community", "repo": "NUR", - "rev": "7bcbb0362c92f230ba4a2c5ad227e04f84fc1ce0", + "rev": "7d49736b4409f42a795a9129f66e1fc02983221b", "type": "github" }, "original": { @@ -568,7 +597,7 @@ "flake-utils" ], "gitignore": "gitignore", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -593,6 +622,7 @@ "lix": "lix", "lix-module": "lix-module", "madness": "madness", + "meat": "meat", "nix-index-database": "nix-index-database", "nix-rice": "nix-rice", "nixd": "nixd", @@ -641,11 +671,11 @@ ] }, "locked": { - "lastModified": 1723515680, - "narHash": "sha256-nHdKymsHCVIh0Wdm4MvSgxcTTg34FJIYHRQkQYaSuvk=", + "lastModified": 1723947704, + "narHash": "sha256-TcVf66N2NgGhxORFytzgqWcg0XJ+kk8uNLNsTRI5sYM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "4ee3d9e9569f70d7bb40f28804d6fe950c81eab3", + "rev": "456e78a55feade2c3bc6d7bc0bf5e710c9d86120", "type": "github" }, "original": { @@ -654,6 +684,19 @@ "type": "github" } }, + "src": { + "flake": false, + "locked": { + "lastModified": 1, + "narHash": "sha256-driDd0H33lcvEb5fnsUnLZ9Df+m7MNJvBvqQ7KB4+iA=", + "path": "src", + "type": "path" + }, + "original": { + "path": "src", + "type": "path" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index 1f43633..b7fe29c 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,8 @@ madness.url = "github:antithesishq/madness"; + nh.url = "github:viperML/nh"; + lix = { url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"; flake = false; @@ -43,6 +45,8 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.lix.follows = "lix"; }; + + meat.url = "path:flakes/meat"; }; outputs = { @@ -54,14 +58,16 @@ flatpaks, nix-index-database, madness, - lix, lix-module, + nh, + meat, ... } @ inputs: let inherit (self) outputs; inherit (nixpkgs) lib; inherit (lib) mapAttrs; sharedModules = [ + meat.nixosModules.meat lix-module.nixosModules.default madness.nixosModules.madness nur.nixosModules.nur diff --git a/flakes/meat/flake.lock b/flakes/meat/flake.lock new file mode 100644 index 0000000..49bfdc2 --- /dev/null +++ b/flakes/meat/flake.lock @@ -0,0 +1,38 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1723362943, + "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", + "path": "/nix/store/h60m1fwahjd2mv6gsg77ji3vb4gpj4dk-source", + "rev": "a58bc8ad779655e790115244571758e8de055e3d", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "src": "src" + } + }, + "src": { + "flake": false, + "locked": { + "lastModified": 1, + "narHash": "sha256-driDd0H33lcvEb5fnsUnLZ9Df+m7MNJvBvqQ7KB4+iA=", + "path": "src", + "type": "path" + }, + "original": { + "path": "src", + "type": "path" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/meat/flake.nix b/flakes/meat/flake.nix new file mode 100644 index 0000000..0eff001 --- /dev/null +++ b/flakes/meat/flake.nix @@ -0,0 +1,74 @@ +{ + description = "the meat (package) manager"; + + inputs = { + # use registry nixpkgs + # nixpkgs.url = "nixpkgs/nixos-unstable"; + + src = { + url = "path:src"; + flake = false; + }; + }; + + outputs = { + self, + nixpkgs, + src, + }: let + # System types to support. + supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; + + # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'. + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + + # Nixpkgs instantiated for supported system types. + nixpkgsFor = forAllSystems (system: + import nixpkgs { + inherit system; + # overlays = [self.overlay]; + }); + in { + # Provide some binary packages for selected system types. + packages = forAllSystems (system: let + pkgs = nixpkgsFor.${system}; + in { + meat = pkgs.callPackage ./meat.nix { + inherit src; + }; + }); + + # The default package for 'nix build'. This makes sense if the + # flake provides only one package or there is a clear "main" + # package. + defaultPackage = forAllSystems (system: self.packages.${system}.meat); + + # A NixOS module, if applicable (e.g. if the package provides a system service). + nixosModules.meat = { + pkgs, + config, + ... + }: { + options.programs.meat = with pkgs.lib; { + flake = mkOption { + type = with types; nullOr (either path str); + default = null; + description = "path to your system flake"; + }; + }; + config = { + environment.systemPackages = [self.defaultPackage.${pkgs.system}]; + environment.sessionVariables = let + cfg = config.programs.meat; + in { + FLAKE = + if (cfg.flake == null) + then throw "Please set the programs.meat.flake option to your system flake." + else config.programs.meat.flake; + }; + }; + }; + + # Tests run by 'nix flake check' and by Hydra. + }; +} diff --git a/flakes/meat/meat.nix b/flakes/meat/meat.nix new file mode 100644 index 0000000..b7f5588 --- /dev/null +++ b/flakes/meat/meat.nix @@ -0,0 +1,39 @@ +{ + lib, + src, + stdenvNoCC, + bash, + nix, + nh, + git, + sudo, + makeWrapper, +}: let + deps = [ + bash + nix + nh + git + sudo + ]; +in + stdenvNoCC.mkDerivation { + inherit src; + name = "meat"; + version = "0.0.1"; + nativeBuildInputs = [ + makeWrapper + ]; + buildInputs = deps; + installPhase = '' + mkdir -p $out/bin + cp meat $out/bin + ''; + postFixup = '' + wrapProgram $out/bin/meat \ + --set PATH ${lib.makeBinPath deps} + ''; + meta = { + mainProgram = "meat"; + }; + } diff --git a/flakes/meat/src/meat b/flakes/meat/src/meat new file mode 100755 index 0000000..a055ae4 --- /dev/null +++ b/flakes/meat/src/meat @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +cmd=${1:help} +shift + + +call_nix() { + cd $(dirname $0) + nixpkgs_pin=$(nix eval --raw -f npins/default.nix nixpkgs) + nix_path="nixpkgs=${nixpkgs_pin}:nixos-config=${HOME}/.nix/entry.nix" + local cmd=$1 + shift + env NIX_PATH="${nix_path}" nixos-rebuild "$cmd" --fast "$@" +} + +cd $FLAKE +case $cmd in + look) + nix flake show + ;; + + fresh) + nix flake update "$@" + ;; + + yum) + nh os switch -- "$@" + # call_nix switch "$@" + ;; + + cook) + nh os build "$@" + # call_nix build "$@" + ;; + + poke) + nh os build -- --show-trace "$@" + # call_nix build --show-trace "$@" + ;; + + help|*) + printf " +--- MEAT --------------------------------------------- + + FRESH \t\t| GET LATEST MEAT + YUM \t\t| CONSUME DELICIOUS MEAT + COOK \t\t| ONLY PREPARE MEAT + POKE \t\t| TRY COOK SUSPICIOUS MEAT + LOOK \t\t| INSPECT MEATS + +------------------------------------------------------\n" + ;; +esac +cd $PWD diff --git a/home/bolt.nix b/home/bolt.nix index 22949ab..5b55b44 100644 --- a/home/bolt.nix +++ b/home/bolt.nix @@ -5,13 +5,12 @@ ./util/containers.nix # ./programs/stable-diffusion.nix # ./programs/openwebui.nix - ./programs/sillytavern.nix + ./programs/anything-llm.nix ]; - home = rec { + home = { username = "bolt"; homeDirectory = "/home/bolt"; - sessionVariables.FLAKE = "${homeDirectory}/.nix"; }; home.packages = with pkgs; [ diff --git a/home/modules/media-players.nix b/home/modules/media-players.nix index aa40de3..7e94699 100644 --- a/home/modules/media-players.nix +++ b/home/modules/media-players.nix @@ -3,7 +3,6 @@ mpv imv strawberry - termusic zathura playerctl ]; diff --git a/system/configuration.nix b/system/configuration.nix index f4747c2..116306e 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -17,6 +17,7 @@ outputs.overlays.rice inputs.helix.overlays.default inputs.nixd.overlays.default + inputs.nh.overlays.default ]; config = { allowUnfree = true; diff --git a/system/quiver.nix b/system/quiver.nix index 33baefc..49cfc55 100644 --- a/system/quiver.nix +++ b/system/quiver.nix @@ -20,6 +20,8 @@ ]; }; + programs.meat.flake = "/home/bolt/.nix"; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbcore" "sd_mod"]; boot.initrd.kernelModules = []; boot.initrd.systemd.enable = true;