diff --git a/checks/lints.nu b/checks/lints.nu index ffc2047..b70766b 100644 --- a/checks/lints.nu +++ b/checks/lints.nu @@ -1,10 +1,8 @@ #!/usr/bin/env nu -let shell_files = ls **/*.sh | get name let nix_files = ls **/*.nix | where name !~ "hardware-configuration.nix|_sources" | get name let linters = [ - ([shellcheck] ++ $shell_files) ([nixfmt --check --strict] ++ $nix_files) ([deadnix --fail] ++ $nix_files) ([statix check] ++ $nix_files) diff --git a/flake.nix b/flake.nix index b5228c3..76d612f 100644 --- a/flake.nix +++ b/flake.nix @@ -37,7 +37,6 @@ }@inputs: let system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; vm = nixpkgs.lib.nixosSystem { inherit system; @@ -97,15 +96,10 @@ # Garbage collection root # ########################### - packages.${system} = - let - localPkgs = import ./pkgs { inherit pkgs; }; - in - { - default = vm.config.system.build.vm; - crowdsec-hub = localPkgs.crowdsec.hub; - crowdsec-firewall-bouncer = localPkgs.crowdsec.firewall-bouncer; - }; + packages.${system} = { + default = vm.config.system.build.vm; + } + // import ./pkgs { pkgs = nixpkgs.legacyPackages.${system}; }; ################### # Utility scripts # @@ -116,26 +110,10 @@ run-vm = { type = "app"; program = - (pkgs.writeShellScript "" '' + (nixpkgs.legacyPackages.${system}.writeShellScript "" '' ${vm.config.system.build.vm.outPath}/bin/run-testvm-vm '').outPath; }; - - update-crowdsec-packages = - let - git = pkgs.lib.getExe pkgs.git; - nvfetcher = pkgs.lib.getExe pkgs.nvfetcher; - in - { - type = "app"; - program = - (pkgs.writeShellScript "update-crowdsec-packages" '' - cd "$(${git} rev-parse --show-toplevel)" - cd ./pkgs/crowdsec - ${nvfetcher} - echo 'Remember to update the vendorHash of any go packages!' - '').outPath; - }; }; ########################### @@ -147,16 +125,16 @@ "./keys/hosts/" "./keys/users/" ]; - nativeBuildInputs = [ sops-nix.packages.${system}.sops-import-keys-hook ]; - packages = with pkgs; [ - sops-nix.packages.${system}.sops-init-gpg-key - deploy-rs.packages.${system}.default - nixpkgs-fmt - ]; + packages = nixpkgs.lib.attrValues { + inherit (sops-nix.packages.${system}) sops-import-keys-hook sops-init-gpg-key; + inherit (deploy-rs.packages.${system}) default; + }; + }; + + minecraft = nixpkgs.legacyPackages.${system}.mkShell { + packages = nixpkgs.lib.attrValues { inherit (nixpkgs.legacyPackages.${system}) packwiz; }; }; }; - - minecraft = nixpkgs.legacyPackages.${system}.mkShell { packages = [ pkgs.packwiz ]; }; }; } diff --git a/pkgs/crowdsec/_sources/generated.json b/pkgs/crowdsec/_sources/generated.json deleted file mode 100644 index fd61141..0000000 --- a/pkgs/crowdsec/_sources/generated.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "crowdsec-firewall-bouncer": { - "cargoLocks": null, - "date": null, - "extract": null, - "name": "crowdsec-firewall-bouncer", - "passthru": null, - "pinned": false, - "src": { - "deepClone": false, - "fetchSubmodules": false, - "leaveDotGit": false, - "name": null, - "owner": "crowdsecurity", - "repo": "cs-firewall-bouncer", - "rev": "v0.0.34", - "sha256": "sha256-lDO9pwPkbI+FDTdXBv03c0p8wbkRUiIDNl1ip3AZo2g=", - "sparseCheckout": [], - "type": "github" - }, - "version": "v0.0.34" - }, - "crowdsec-hub": { - "cargoLocks": null, - "date": "2025-08-17", - "extract": null, - "name": "crowdsec-hub", - "passthru": null, - "pinned": false, - "src": { - "deepClone": false, - "fetchSubmodules": false, - "leaveDotGit": false, - "name": null, - "owner": "crowdsecurity", - "repo": "hub", - "rev": "fc59f78180f3edfce76df3e77b001c454f567d3d", - "sha256": "sha256-Ejx3ta05SMvV/Dj7wy2iF9QYbGoRvxPB3+QuCIoTX4Q=", - "sparseCheckout": [], - "type": "github" - }, - "version": "fc59f78180f3edfce76df3e77b001c454f567d3d" - } -} \ No newline at end of file diff --git a/pkgs/crowdsec/_sources/generated.nix b/pkgs/crowdsec/_sources/generated.nix deleted file mode 100644 index b5efc4e..0000000 --- a/pkgs/crowdsec/_sources/generated.nix +++ /dev/null @@ -1,27 +0,0 @@ -# This file was generated by nvfetcher, please do not modify it manually. -{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }: -{ - crowdsec-firewall-bouncer = { - pname = "crowdsec-firewall-bouncer"; - version = "v0.0.34"; - src = fetchFromGitHub { - owner = "crowdsecurity"; - repo = "cs-firewall-bouncer"; - rev = "v0.0.34"; - fetchSubmodules = false; - sha256 = "sha256-lDO9pwPkbI+FDTdXBv03c0p8wbkRUiIDNl1ip3AZo2g="; - }; - }; - crowdsec-hub = { - pname = "crowdsec-hub"; - version = "fc59f78180f3edfce76df3e77b001c454f567d3d"; - src = fetchFromGitHub { - owner = "crowdsecurity"; - repo = "hub"; - rev = "fc59f78180f3edfce76df3e77b001c454f567d3d"; - fetchSubmodules = false; - sha256 = "sha256-Ejx3ta05SMvV/Dj7wy2iF9QYbGoRvxPB3+QuCIoTX4Q="; - }; - date = "2025-08-17"; - }; -} diff --git a/pkgs/crowdsec/default.nix b/pkgs/crowdsec/default.nix deleted file mode 100644 index 66faac3..0000000 --- a/pkgs/crowdsec/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs }: -let - sources = pkgs.callPackage ./_sources/generated.nix { }; - callPackage = pkgs.lib.callPackageWith (pkgs // { inherit sources; }); -in -{ - hub = callPackage ./hub.nix { }; - firewall-bouncer = callPackage ./firewall-bouncer.nix { }; -} diff --git a/pkgs/crowdsec/firewall-bouncer.nix b/pkgs/crowdsec/firewall-bouncer.nix deleted file mode 100644 index cfb062a..0000000 --- a/pkgs/crowdsec/firewall-bouncer.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - lib, - sources, - buildGoModule, - envsubst, - coreutils, -}: -let - envsubstBin = lib.getExe envsubst; -in -buildGoModule { - inherit (sources.crowdsec-firewall-bouncer) pname version src; - - vendorHash = "sha256-SbpclloBgd9vffC0lBduGRqPOqmzQ0J91/KeDHCh0jo="; - - postInstall = '' - mkdir -p $out/lib/systemd/system - - CFG=/var/lib/crowdsec/config BIN=$out/bin/cs-firewall-bouncer ${envsubstBin} \ - -i ./config/crowdsec-firewall-bouncer.service \ - -o $out/lib/systemd/system/crowdsec-firewall-bouncer.service - - substituteInPlace $out/lib/systemd/system/crowdsec-firewall-bouncer.service \ - --replace-fail /bin/sleep ${coreutils}/bin/sleep - ''; -} diff --git a/pkgs/crowdsec/hub.nix b/pkgs/crowdsec/hub.nix deleted file mode 100644 index 1b8c9b3..0000000 --- a/pkgs/crowdsec/hub.nix +++ /dev/null @@ -1 +0,0 @@ -{ sources }: sources.crowdsec-hub.src diff --git a/pkgs/crowdsec/nvfetcher.toml b/pkgs/crowdsec/nvfetcher.toml deleted file mode 100644 index 2287dba..0000000 --- a/pkgs/crowdsec/nvfetcher.toml +++ /dev/null @@ -1,7 +0,0 @@ -[crowdsec-hub] -src.git = "https://github.com/crowdsecurity/hub.git" -fetch.github = "crowdsecurity/hub" - -[crowdsec-firewall-bouncer] -src.github = "crowdsecurity/cs-firewall-bouncer" -fetch.github = "crowdsecurity/cs-firewall-bouncer" diff --git a/pkgs/default.nix b/pkgs/default.nix index 0e5de7a..31335a6 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,5 @@ { pkgs }: -{ - crowdsec = import ./crowdsec { inherit pkgs; }; - starbound = pkgs.callPackage ./starbound { }; +pkgs.lib.packagesFromDirectoryRecursive { + inherit (pkgs) callPackage; + directory = ./packages; } diff --git a/pkgs/packages/crowdsec-firewall-bouncer.nix b/pkgs/packages/crowdsec-firewall-bouncer.nix new file mode 100644 index 0000000..41bba86 --- /dev/null +++ b/pkgs/packages/crowdsec-firewall-bouncer.nix @@ -0,0 +1,51 @@ +{ + lib, + fetchFromGitHub, + buildGoModule, + envsubst, + coreutils, + + writers, + nix-update, +}: +let + envsubstBin = lib.getExe envsubst; +in +buildGoModule (drv: { + pname = "crowdsec-firewall-bouncer"; + version = drv.src.rev; + + src = fetchFromGitHub { + owner = "crowdsecurity"; + repo = "cs-firewall-bouncer"; + rev = "0.0.34"; + sha256 = "sha256-lDO9pwPkbI+FDTdXBv03c0p8wbkRUiIDNl1ip3AZo2g="; + }; + + vendorHash = "sha256-SbpclloBgd9vffC0lBduGRqPOqmzQ0J91/KeDHCh0jo="; + + postInstall = '' + mkdir -p $out/lib/systemd/system + + CFG=/var/lib/crowdsec/config BIN=$out/bin/cs-firewall-bouncer ${envsubstBin} \ + -i ./config/crowdsec-firewall-bouncer.service \ + -o $out/lib/systemd/system/crowdsec-firewall-bouncer.service + + substituteInPlace $out/lib/systemd/system/crowdsec-firewall-bouncer.service \ + --replace-fail /bin/sleep ${coreutils}/bin/sleep + ''; + + passthru.updateScript = + writers.writeNuBin "update-crowdsec-firewall-bouncer" + { + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ nix-update ]) + ]; + } + '' + nix-update --flake --format crowdsec-firewall-bouncer + ''; +}) diff --git a/pkgs/packages/crowdsec-hub.nix b/pkgs/packages/crowdsec-hub.nix new file mode 100644 index 0000000..e89c194 --- /dev/null +++ b/pkgs/packages/crowdsec-hub.nix @@ -0,0 +1,38 @@ +{ + lib, + fetchFromGitHub, + stdenvNoCC, + + writers, + nix-update, +}: +# Using `mkDerivation` so nix-update can pick up the version +stdenvNoCC.mkDerivation (drv: { + pname = "crowdsec-hub"; + version = drv.src.rev; + + src = fetchFromGitHub { + owner = "crowdsecurity"; + repo = "hub"; + rev = "fc59f78180f3edfce76df3e77b001c454f567d3d"; + hash = "sha256-Ejx3ta05SMvV/Dj7wy2iF9QYbGoRvxPB3+QuCIoTX4Q="; + }; + + installPhase = '' + cp -r $src $out + ''; + + passthru.updateScript = + writers.writeNuBin "update-crowdsec-hub" + { + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ nix-update ]) + ]; + } + '' + nix-update --flake --format --version=branch crowdsec-hub + ''; +}) diff --git a/pkgs/starbound/default.nix b/pkgs/starbound/default.nix deleted file mode 100644 index 26f2184..0000000 --- a/pkgs/starbound/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - stdenv, - lib, - makeWrapper, - patchelf, - steamPackages, - replace-secret, -}: -let - # Use the directory in which starbound is installed so steamcmd - # doesn't have to be reinstalled constantly (we're using DynamicUser - # with StateDirectory to persist this). - steamcmd = steamPackages.steamcmd.override { steamRoot = "/var/lib/starbound/.steamcmd"; }; - wrapperPath = lib.makeBinPath [ - patchelf - steamcmd - replace-secret - ]; -in -stdenv.mkDerivation { - name = "starbound-update-script"; - nativeBuildInputs = [ makeWrapper ]; - dontUnpack = true; - patchPhase = '' - interpreter="$(cat $NIX_CC/nix-support/dynamic-linker)" - substitute ${./launch-starbound.sh} launch-starbound --subst-var interpreter - ''; - installPhase = '' - mkdir -p $out/bin - cp launch-starbound $out/bin/launch-starbound - chmod +x $out/bin/launch-starbound - ''; - postFixup = '' - wrapProgram $out/bin/launch-starbound \ - --prefix PATH : "${wrapperPath}" - ''; -} diff --git a/pkgs/starbound/launch-starbound.sh b/pkgs/starbound/launch-starbound.sh deleted file mode 100644 index 24d4db1..0000000 --- a/pkgs/starbound/launch-starbound.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -set -eu - -if ! [[ -v STATE_DIRECTORY && -v CREDENTIALS_DIRECTORY ]]; then - echo "Error: Runtime dir or credential not set" - exit 1 -fi - -# Update the server to the latest version -echo "Updating/installing starbound" - -mkdir -p "${STATE_DIRECTORY}/.steamcmd" -steamcmd <