From 77ab74f97d5716761cfb56936143f270d603b1d4 Mon Sep 17 00:00:00 2001 From: Ember 'n0emis' Keske Date: Sat, 13 Nov 2021 21:52:13 +0100 Subject: [PATCH] initial commit --- batctl-legacy.nix | 27 +++++++++++++++++++++++++++ batman-adv-legacy.nix | 28 ++++++++++++++++++++++++++++ default.nix | 23 +++++++++++++++++++++++ flake.nix | 21 +++++++++++++++++++++ modules/batman.nix | 20 ++++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 batctl-legacy.nix create mode 100644 batman-adv-legacy.nix create mode 100644 default.nix create mode 100644 flake.nix create mode 100644 modules/batman.nix diff --git a/batctl-legacy.nix b/batctl-legacy.nix new file mode 100644 index 0000000..67bce3f --- /dev/null +++ b/batctl-legacy.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchurl, pkg-config, libnl }: + +stdenv.mkDerivation rec { + pname = "batctl"; + version = "2013.4.0"; + + src = fetchurl { + url = "https://downloads.open-mesh.org/batman/releases/batman-adv-${version}/${pname}-${version}.tar.gz"; + sha256 = "TerjtmZNDROs96js50F1oxpy/lj7FcuREqmiAUsyy0w="; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libnl ]; + + preBuild = '' + makeFlags="PREFIX=$out PKG_CONFIG=${pkg-config}/bin/${pkg-config.targetPrefix}pkg-config" + ''; + + meta = { + homepage = "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki"; + description = "B.A.T.M.A.N. routing protocol in a linux kernel module for layer 2, control tool"; + license = lib.licenses.gpl2; + maintainers = with lib.maintainers; [ fpletz ]; + platforms = with lib.platforms; linux; + }; +} + diff --git a/batman-adv-legacy.nix b/batman-adv-legacy.nix new file mode 100644 index 0000000..75cf8f6 --- /dev/null +++ b/batman-adv-legacy.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, kernel }: + +stdenv.mkDerivation rec { + pname = "batman-adv-legacy"; + version = "2013.4.0-65"; + + src = fetchFromGitHub { + owner = "freifunk-gluon"; + repo = "batman-adv-legacy"; + rev = "d8bfd8e4b5bd45023b3d0201ee035f7af3dac44a"; + sha256 = "sha256-9nivJU+GndvlgD2bh3Y2213Qv79gDRagmsCzuN9zt/Y="; + }; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + hardeningDisable = [ "pic" ]; + + preBuild = '' + makeFlags="KERNELPATH=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + sed -i -e "s,INSTALL_MOD_DIR=,INSTALL_MOD_PATH=$out INSTALL_MOD_DIR=," \ + -e /depmod/d Makefile + ''; + + meta = { + homepage = "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki"; + description = "B.A.T.M.A.N. routing protocol in a linux kernel module for layer 2"; + }; +} diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..b41c09c --- /dev/null +++ b/default.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.ffnix; +in +{ + options.ffnix = { + enable = mkEnableOption "ffnix"; + batman-legacy = mkEnableOption "batman-adv-legacy"; + }; + + config = mkIf cfg.enable { + services.vnstat.enable = true; + + programs.mtr.enable = true; + }; + + imports = [ + ./modules/batman.nix + ]; +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..3f42d5f --- /dev/null +++ b/flake.nix @@ -0,0 +1,21 @@ +{ + description = "A very basic flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + let + ffnixModule = import ./.; + in { + overlay = final: prev: { + batman-adv-legacy = kernelPackages: kernelPackages.callPackage ./batman-adv-legacy.nix {}; + batctl-legacy = final.callPackage ./batctl-legacy.nix {}; + }; + overlays = [ self.overlay ]; + nixosModules.ffnix = ffnixModule; + nixosModule = ffnixModule; + }; +} diff --git a/modules/batman.nix b/modules/batman.nix new file mode 100644 index 0000000..95e5799 --- /dev/null +++ b/modules/batman.nix @@ -0,0 +1,20 @@ +{ pkgs, config, lib, ... }: + +with lib; + +let + cfg = config.ffnix; +in +{ + config = mkIf cfg.enable { + boot.kernelModules = [ "batman_adv" ]; + + boot.extraModulePackages = [] + ++ lib.optional (!cfg.batman-legacy) config.boot.kernelPackages.batman_adv + ++ lib.optional cfg.batman-legacy (pkgs.batman-adv-legacy config.boot.kernelPackages); + + environment.systemPackages = [] + ++ lib.optional (!cfg.batman-legacy) pkgs.batctl + ++ lib.optional cfg.batman-legacy pkgs.batctl-legacy; + }; +}