From 9e7a775e2578e126dddb1c6f7514874265e3d08e Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sun, 28 Apr 2024 21:30:47 +0200 Subject: yeet the nix flakes this is, in the widest possible sense, a revert of e88fed18f499a3e8ac98c772bbb62f00d1f8d1d7, which was now a little over two years ago. Of course, lots of things have changed since then: - this uses npins instead of niv, which is both simpler and still maintained - i haven't brought back the old deploy lib; I still use deploy-rs (with some modifications) to deploy things - if you actually use my stuff downstream, you can now use packages/ & tests/ & modules/ as entry points directly, while still having some control over inputs - (since i also don't believe any downstream users actually exist, i've not bothered to have a shim flake.nix so your stuff probably just broke. well, it was an experimental feature, anyways) - in general there's a lot more of the old-fashioned structure back again, with default.nix files in subdirectories that form a structure, not like how almost everything was just imported in the one big flake.nix file For people who are interested in also having a non-flake config similar to this one, it's probably best to take a look at inputs.nix (and also at npins, of course) --- inputs.nix | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 inputs.nix (limited to 'inputs.nix') diff --git a/inputs.nix b/inputs.nix new file mode 100644 index 0000000..50c4deb --- /dev/null +++ b/inputs.nix @@ -0,0 +1,53 @@ +{ system ? "x86_64-linux", sources ? import ./npins }: + +let + + # some of my dependencies are only usable as flakes. this is just enough + # nonsense to import these + callFlake = name: inputs: + let + self = (import "${sources.${name}}/flake.nix").outputs + ({ inherit self; } // inputs); + in + self // { outPath = sources.${name}.outPath; }; + + inputs = sources // rec { + + flake-utils = callFlake "flake-utils" { }; + + deploy-rs = callFlake "deploy-rs" { + # there's an implicit contract here that the module deploy-rs produces + # will not depend on the nixpkgs it is given, but that works out + inherit nixpkgs; + utils = flake-utils; + }; + + # both copies of nixpkgs get // { outPath = }'d, so that the nixPath + # override can use these paths. + nixpkgs = import sources.nixpkgs { + inherit system; + overlays = [ + (import sources.rust-overlay) + deploy-rs.overlay + (import ./pkgs/overlay.nix { inherit inputs; }) + ]; + } // { outPath = sources.nixpkgs.outPath; }; + + nixpkgs-unstable = + import sources.nixpkgs-unstable { inherit system; } + // { outPath = sources.nixpkgs-unstable.outPath; }; + + # this absurd third copy only exists because non-flake nixpkgs does not + # as easily expose the evalConfig function .. + nixpkgs-flake = + (import "${sources.nixpkgs}/flake.nix").outputs { self = nixpkgs-flake; }; + + home-manager = callFlake "home-manager" { inherit nixpkgs; }; + + feeds = import /home/stuebinm/org/nonpublic.nix; + + sops-nix = import "${sources.sops-nix}/modules/sops"; + + simple-nixos-mailserver = import sources.simple-nixos-mailserver; + }; +in inputs -- cgit v1.2.3