diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..518bd34 --- /dev/null +++ b/default.nix @@ -0,0 +1,14 @@ +{ pkgs ? import {} }: +{ + # 'lib', 'modules' and 'overlays' are special, see + # https://github.com/nix-community/NUR for more. + modules = import ./modules; # NixOS modules + + nodeinfo = pkgs.callPackage ./pkgs/nodeinfo { }; + banlist = pkgs.callPackage ./pkgs/banlist { }; + lightning-charge = pkgs.callPackage ./pkgs/lightning-charge { }; + nanopos = pkgs.callPackage ./pkgs/nanopos { }; + spark-wallet = pkgs.callPackage ./pkgs/spark-wallet { }; + electrs = pkgs.callPackage ./pkgs/electrs { }; + liquidd = pkgs.callPackage ./pkgs/liquidd { }; +} diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..ad57e84 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,13 @@ +{ + bitcoind = ./bitcoind.nix; + clightning = ./clightning.nix; + default = ./default.nix; + electrs = ./electrs.nix; + lightning-charge = ./lightning-charge.nix; + liquid = ./liquid.nix; + nanopos = ./nanopos.nix; + nix-bitcoin = ./nix-bitcoin.nix; + nix-bitcoin-pkgs = ./nix-bitcoin-pkgs.nix; + nix-bitcoin-webindex = ./nix-bitcoin-webindex.nix; + spark-wallet = ./spark-wallet.nix; +} diff --git a/modules/nix-bitcoin-pkgs.nix b/modules/nix-bitcoin-pkgs.nix index 10036dd..8ca0d1b 100644 --- a/modules/nix-bitcoin-pkgs.nix +++ b/modules/nix-bitcoin-pkgs.nix @@ -1,35 +1,19 @@ { config, pkgs, ... }: - let - nixpkgs-pinned = import ../pkgs/nixpkgs-pinned.nix; - nixpkgs-unstable = import nixpkgs-pinned.nixpkgs-unstable { }; - - # Custom packages - nodeinfo = pkgs.callPackage ../pkgs/nodeinfo { }; - banlist = pkgs.callPackage ../pkgs/banlist { }; - lightning-charge = pkgs.callPackage ../pkgs/lightning-charge { }; - nanopos = pkgs.callPackage ../pkgs/nanopos { }; - spark-wallet = pkgs.callPackage ../pkgs/spark-wallet { }; - electrs = pkgs.callPackage ../pkgs/electrs { }; - liquidd = pkgs.callPackage ../pkgs/liquidd { }; +let + nixpkgs-pinned = import ../pkgs/nixpkgs-pinned.nix; + nixpkgs-unstable = import nixpkgs-pinned.nixpkgs-unstable { }; in { disabledModules = [ "services/security/tor.nix" ]; imports = [ (nixpkgs-pinned.nixpkgs-unstable + "/nixos/modules/services/security/tor.nix") ]; + nixpkgs.overlays = [ (import ../overlay.nix) ]; + nixpkgs.config.packageOverrides = pkgs: { # Use bitcoin and clightning from unstable bitcoin = nixpkgs-unstable.bitcoin.override { }; altcoins.bitcoind = nixpkgs-unstable.altcoins.bitcoind.override { }; clightning = nixpkgs-unstable.clightning.override { }; - - # Add custom packages - inherit nodeinfo; - inherit banlist; - inherit lightning-charge; - inherit nanopos; - inherit spark-wallet; - inherit electrs; - inherit liquidd; }; } diff --git a/non-broken.nix b/non-broken.nix new file mode 100644 index 0000000..b9a2cf9 --- /dev/null +++ b/non-broken.nix @@ -0,0 +1,27 @@ +# This file filters out all the broken packages from your package set. +# It's what gets built by CI, so if you correctly mark broken packages as +# broken your CI will not try to build them and the non-broken packages will +# be added to the cache. +{ pkgs ? import {} }: + +let filterSet = + (f: g: s: builtins.listToAttrs + (map + (n: { name = n; value = builtins.getAttr n s; }) + (builtins.filter + (n: f n && g (builtins.getAttr n s)) + (builtins.attrNames s) + ) + ) + ); +in filterSet + (n: !(n=="lib"||n=="overlays"||n=="modules")) # filter out non-packages + (p: (builtins.isAttrs p) + && !( + (builtins.hasAttr "meta" p) + && (builtins.hasAttr "broken" p.meta) + && (p.meta.broken) + ) + ) + (import ./default.nix { inherit pkgs; }) + diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..082b038 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,21 @@ +# You can use this file as a nixpkgs overlay. +# It's useful in the case where you don't want to add the whole NUR namespace +# to your configuration. + +self: super: + +let filterSet = + (f: g: s: builtins.listToAttrs + (map + (n: { name = n; value = builtins.getAttr n s; }) + (builtins.filter + (n: f n && g (builtins.getAttr n s)) + (builtins.attrNames s) + ) + ) + ); +in filterSet + (n: !(n=="lib"||n=="overlays"||n=="modules")) # filter out non-packages + (p: true) # all packages are ok + (import ./default.nix { pkgs = super; }) +