diff options
author | stuebinm | 2024-04-28 21:30:47 +0200 |
---|---|---|
committer | stuebinm | 2024-04-29 00:02:55 +0200 |
commit | 9e7a775e2578e126dddb1c6f7514874265e3d08e (patch) | |
tree | 68a72299d6c5ca706ee357fdbc73d8dd4ceef010 /inputs.nix | |
parent | 806593f53dde83f367fd9f6ee74a21aef97faf44 (diff) |
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)
Diffstat (limited to 'inputs.nix')
-rw-r--r-- | inputs.nix | 53 |
1 files changed, 53 insertions, 0 deletions
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 |