From b43b922e787066b1a6691265186ec7cc2f535564 Mon Sep 17 00:00:00 2001 From: Infinidoge Date: Mon, 19 Feb 2024 13:56:36 -0500 Subject: [PATCH] pkgs/mkSymlinks: add method to create arbitrary symlinks --- pkgs/all-packages.nix | 1 + pkgs/mk-symlinks.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/mk-symlinks.nix diff --git a/pkgs/all-packages.nix b/pkgs/all-packages.nix index e577812..ba2617b 100644 --- a/pkgs/all-packages.nix +++ b/pkgs/all-packages.nix @@ -3,6 +3,7 @@ ears-cli = pkgs.callPackage ./ears-cli.nix { }; hexagon = pkgs.callPackage ./hexagon.nix { }; mcaselector = pkgs.callPackage ./mcaselector.nix { }; + mkSymlinks = pkgs.callPackage ./mk-symlinks.nix { }; neocities = pkgs.callPackage ./neocities { }; nix-modrinth-prefetch = pkgs.callPackage ./nix-modrinth-prefetch.nix { }; olympus = pkgs.callPackage ./olympus.nix { }; diff --git a/pkgs/mk-symlinks.nix b/pkgs/mk-symlinks.nix new file mode 100644 index 0000000..07c1dae --- /dev/null +++ b/pkgs/mk-symlinks.nix @@ -0,0 +1,23 @@ +{ lib, stdenv }: + +{ name, symlinks }: +let + normalized = lib.mapAttrs' (n: v: lib.nameValuePair (lib.path.subpath.normalise n) "${v}") symlinks; + linkCommands = lib.mapAttrsToList + (n: v: '' + mkdir -p $out/$(dirname ${n}) + ln -s ${v} $out/${n} + '') + normalized; +in +stdenv.mkDerivation { + name = "firefox"; + phases = [ "installPhase" ]; + preferLocalBuild = true; + allowSubstitutes = false; + installPhase = '' + mkdir $out + + ${lib.concatStringsSep "\n" linkCommands} + ''; +}