diff --git a/hosts/nixdesk/default.nix b/hosts/nixdesk/default.nix index a8492e6..d0cd579 100644 --- a/hosts/nixdesk/default.nix +++ b/hosts/nixdesk/default.nix @@ -10,6 +10,7 @@ [ ./hardware.nix ./profiles/hibernate-boot.nix + ./profiles/devshells.nix ./profiles/samba-mount.nix ./profiles/wireguard.nix ./profiles/restic-server.nix diff --git a/hosts/nixdesk/home.nix b/hosts/nixdesk/home.nix index 1d363cd..1e0737a 100644 --- a/hosts/nixdesk/home.nix +++ b/hosts/nixdesk/home.nix @@ -122,16 +122,6 @@ android-studio jetbrains.rider jetbrains.clion - (pkgs.buildFHSEnv { - name = "silk-fhs"; - runScript = "bash"; - targetPkgs = pkgs: - with pkgs; [ - glfw - assimp - wgpu-native - ]; - }) # jetbrains.idea-ultimate # communication diff --git a/hosts/nixdesk/profiles/devshells.nix b/hosts/nixdesk/profiles/devshells.nix new file mode 100644 index 0000000..d174caf --- /dev/null +++ b/hosts/nixdesk/profiles/devshells.nix @@ -0,0 +1,44 @@ +{ + pkgs, + lib, + ... +}: let + shells = { + silk-fhs = "with pkgs; [glfw libGL assimp wgpu-native]"; + }; +in { + environment.systemPackages = [ + (pkgs.writeShellApplication { + name = "runsh"; + + runtimeInputs = [pkgs.nix]; + + text = '' + ${lib.concatMapAttrsStringSep "\n" (name: value: '' + runshell-${name}() { + # shellcheck disable=SC2016 + nix shell --impure --expr '(import {}).buildFHSEnv { + name = "devshell"; + runScript = "$SHELL"; + targetPkgs = pkgs: ${value}; + }' --command devshell + } + '') + shells} + if [ -z "''${1:-}" ]; then + echo "available shells:" + ${lib.concatMapAttrsStringSep "\n" (name: _: "echo ${name}") shells} + exit + fi + + case $1 in + ${lib.concatMapAttrsStringSep "\n" (name: _: '' + "${name}") runshell-${name} ;; + '') + shells} + *) echo no such shell ;; + esac + ''; + }) + ]; +}