add workstation role
This commit is contained in:
parent
c2909bd755
commit
625e3da14a
@ -1,7 +1,7 @@
|
|||||||
{ inputs, lib, ... }: {
|
{ inputs, lib, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
inputs.self.nixosRoles.desktop
|
inputs.self.nixosRoles.workstation
|
||||||
];
|
];
|
||||||
|
|
||||||
deviceSpecific.devInfo = {
|
deviceSpecific.devInfo = {
|
||||||
|
@ -14,22 +14,25 @@ with lib; {
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
# (import "${inputs.nixpkgs-mozilla}/lib-overlay.nix")
|
# (import "${inputs.nixpkgs-mozilla}/lib-overlay.nix")
|
||||||
# (import "${inputs.nixpkgs-mozilla}/rust-overlay.nix")
|
# (import "${inputs.nixpkgs-mozilla}/rust-overlay.nix")
|
||||||
|
inputs.android-nixpkgs.overlay
|
||||||
(self: super:
|
(self: super:
|
||||||
rec {
|
rec {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
|
|
||||||
youtube-to-mpv = pkgs.callPackage ./packages/youtube-to-mpv.nix { term = config.defaultApplications.term.cmd; };
|
android-emulator = self.callPackage ./packages/android-emulator.nix { };
|
||||||
i3lock-fancy-rapid = pkgs.callPackage ./packages/i3lock-fancy-rapid.nix { };
|
|
||||||
xonar-fp = pkgs.callPackage ./packages/xonar-fp.nix { };
|
|
||||||
ibm-plex-powerline = pkgs.callPackage ./packages/ibm-plex-powerline.nix { };
|
|
||||||
bibata-cursors = pkgs.callPackage ./packages/bibata-cursors.nix { };
|
bibata-cursors = pkgs.callPackage ./packages/bibata-cursors.nix { };
|
||||||
multimc = pkgs.qt5.callPackage ./packages/multimc.nix { multimc-repo = inputs.multimc-cracked; };
|
|
||||||
ceserver = pkgs.callPackage ./packages/ceserver.nix { };
|
ceserver = pkgs.callPackage ./packages/ceserver.nix { };
|
||||||
|
i3lock-fancy-rapid = pkgs.callPackage ./packages/i3lock-fancy-rapid.nix { };
|
||||||
|
ibm-plex-powerline = pkgs.callPackage ./packages/ibm-plex-powerline.nix { };
|
||||||
mpris-ctl = pkgs.callPackage ./packages/mpris-ctl.nix { };
|
mpris-ctl = pkgs.callPackage ./packages/mpris-ctl.nix { };
|
||||||
tidal-dl = pkgs.callPackage ./packages/tidal-dl.nix { };
|
multimc = pkgs.qt5.callPackage ./packages/multimc.nix { multimc-repo = inputs.multimc-cracked; };
|
||||||
reshade-shaders = pkgs.callPackage ./packages/reshade-shaders.nix { };
|
reshade-shaders = pkgs.callPackage ./packages/reshade-shaders.nix { };
|
||||||
|
tidal-dl = pkgs.callPackage ./packages/tidal-dl.nix { };
|
||||||
vscode = master.vscode;
|
vscode = master.vscode;
|
||||||
vscode-fhs = master.vscode-fhs;
|
vscode-fhs = master.vscode-fhs;
|
||||||
|
xonar-fp = pkgs.callPackage ./packages/xonar-fp.nix { };
|
||||||
|
youtube-to-mpv = pkgs.callPackage ./packages/youtube-to-mpv.nix { term = config.defaultApplications.term.cmd; };
|
||||||
|
|
||||||
vivaldi = master.vivaldi.overrideAttrs (old: rec {
|
vivaldi = master.vivaldi.overrideAttrs (old: rec {
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
substituteInPlace "$out"/bin/vivaldi \
|
substituteInPlace "$out"/bin/vivaldi \
|
||||||
@ -37,7 +40,7 @@ with lib; {
|
|||||||
--enable-zero-copy --use-gl=desktop --enable-features=VaapiVideoDecoder --disable-features=UseOzonePlatform "$@"'
|
--enable-zero-copy --use-gl=desktop --enable-features=VaapiVideoDecoder --disable-features=UseOzonePlatform "$@"'
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
nix-direnv = inputs.nix-direnv.defaultPackage.${system};
|
# nix-direnv = inputs.nix-direnv.defaultPackage.${system};
|
||||||
wine = super.wineWowPackages.staging;
|
wine = super.wineWowPackages.staging;
|
||||||
qbittorrent = super.qbittorrent.overrideAttrs (old: rec {
|
qbittorrent = super.qbittorrent.overrideAttrs (old: rec {
|
||||||
version = "enchanced-edition";
|
version = "enchanced-edition";
|
||||||
|
128
profiles/packages/android-emulator.nix
Normal file
128
profiles/packages/android-emulator.nix
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
{ stdenv, lib, runtimeShell
|
||||||
|
, name ? "android-emulator", sdk ? null, deviceType ? ""
|
||||||
|
, platformVersion ? "30", systemImageType ? "default", abiVersion ? "x86_64"
|
||||||
|
, enableGPU ? false, extraAVDFiles ? []
|
||||||
|
, app ? null, package ? null, activity ? null
|
||||||
|
, avdHomeDir ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
cat > $out/bin/${name}-run << "EOF"
|
||||||
|
#!${runtimeShell} -e
|
||||||
|
|
||||||
|
# We need a TMPDIR
|
||||||
|
if [ "$TMPDIR" = "" ]
|
||||||
|
then
|
||||||
|
export TMPDIR=/tmp
|
||||||
|
fi
|
||||||
|
|
||||||
|
${if avdHomeDir == null then ''
|
||||||
|
# Store the virtual devices somewhere else, instead of polluting a user's HOME directory
|
||||||
|
export ANDROID_SDK_HOME=$(mktemp -d $TMPDIR/nix-android-vm-XXXX)
|
||||||
|
'' else ''
|
||||||
|
mkdir -p "${avdHomeDir}"
|
||||||
|
export ANDROID_SDK_HOME="${avdHomeDir}"
|
||||||
|
''}
|
||||||
|
|
||||||
|
# We need to specify the location of the Android SDK root folder
|
||||||
|
export ANDROID_SDK_ROOT=${sdk}
|
||||||
|
|
||||||
|
# We have to look for a free TCP port
|
||||||
|
|
||||||
|
echo "Looking for a free TCP port in range 5554-5584" >&2
|
||||||
|
|
||||||
|
for i in $(seq 5554 2 5584)
|
||||||
|
do
|
||||||
|
if [ -z "$(${sdk}/platform-tools/adb devices | grep emulator-$i)" ]
|
||||||
|
then
|
||||||
|
port=$i
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$port" ]
|
||||||
|
then
|
||||||
|
echo "Unfortunately, the emulator port space is exhausted!" >&2
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "We have a free TCP port: $port" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ANDROID_SERIAL="emulator-$port"
|
||||||
|
|
||||||
|
# Create a virtual android device for testing if it does not exist
|
||||||
|
# ${sdk}/cmdline-tools/latest/bin/avdmanager list target
|
||||||
|
|
||||||
|
if [ "$(${sdk}/cmdline-tools/latest/bin/avdmanager list avd | grep 'Name: ${name}')" = "" ]
|
||||||
|
then
|
||||||
|
# Create a virtual android device
|
||||||
|
yes "" | ${sdk}/cmdline-tools/latest/bin/avdmanager create avd -n "${name}" -k "system-images;android-${platformVersion};${systemImageType};${abiVersion}" -d "${deviceType}" $NIX_ANDROID_AVD_FLAGS
|
||||||
|
|
||||||
|
# fix wrong sdk path
|
||||||
|
sed -i "s|image.sysdir.1.\+|image.sysdir.1=${sdk}/system-images/android-${platformVersion}/${systemImageType}/${abiVersion}|" "$ANDROID_SDK_HOME/.android/avd/${name}.avd/config.ini"
|
||||||
|
|
||||||
|
${lib.optionalString enableGPU ''
|
||||||
|
# Enable GPU acceleration
|
||||||
|
echo "hw.gpu.enabled=yes" >> "$ANDROID_SDK_HOME/.android/avd/${name}.avd/config.ini"
|
||||||
|
''}
|
||||||
|
|
||||||
|
${lib.concatMapStrings (extraAVDFile: ''
|
||||||
|
ln -sf ${extraAVDFile} "$ANDROID_SDK_HOME/.android/avd/${name}.avd"
|
||||||
|
'') extraAVDFiles}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Launch the emulator
|
||||||
|
${sdk}/emulator/emulator -avd "${name}" -no-boot-anim -port $port $NIX_ANDROID_EMULATOR_FLAGS &
|
||||||
|
|
||||||
|
# Wait until the device has completely booted
|
||||||
|
echo "Waiting until the emulator has booted the device and the package manager is ready..." >&2
|
||||||
|
|
||||||
|
${sdk}/platform-tools/adb -s emulator-$port wait-for-device
|
||||||
|
|
||||||
|
echo "Device state has been reached" >&2
|
||||||
|
|
||||||
|
while [ -z "$(${sdk}/platform-tools/adb -s emulator-$port shell getprop dev.bootcomplete | grep 1)" ]
|
||||||
|
do
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "dev.bootcomplete property is 1" >&2
|
||||||
|
|
||||||
|
#while [ -z "$(${sdk}/platform-tools/adb -s emulator-$port shell getprop sys.boot_completed | grep 1)" ]
|
||||||
|
#do
|
||||||
|
#sleep 5
|
||||||
|
#done
|
||||||
|
|
||||||
|
#echo "sys.boot_completed property is 1" >&2
|
||||||
|
|
||||||
|
echo "ready" >&2
|
||||||
|
|
||||||
|
${lib.optionalString (app != null) ''
|
||||||
|
# Install the App through the debugger, if it has not been installed yet
|
||||||
|
|
||||||
|
if [ -z "${package}" ] || [ "$(${sdk}/platform-tools/adb -s emulator-$port shell pm list packages | grep package:${package})" = "" ]
|
||||||
|
then
|
||||||
|
if [ -d "${app}" ]
|
||||||
|
then
|
||||||
|
appPath="$(echo ${app}/*.apk)"
|
||||||
|
else
|
||||||
|
appPath="${app}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
${sdk}/platform-tools/adb -s emulator-$port install "$appPath"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
${lib.optionalString (package != null && activity != null) ''
|
||||||
|
${sdk}/platform-tools/adb -s emulator-$port shell am start -a android.intent.action.MAIN -n ${package}/${activity}
|
||||||
|
''}
|
||||||
|
''}
|
||||||
|
EOF
|
||||||
|
chmod +x $out/bin/${name}-run
|
||||||
|
'';
|
||||||
|
}
|
51
profiles/workspace/development/flutter.nix
Normal file
51
profiles/workspace/development/flutter.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ config, lib, pkgs, inputs, ... }: {
|
||||||
|
home-manager.users.alukard = rec {
|
||||||
|
imports = [ inputs.android-nixpkgs.hmModule ];
|
||||||
|
|
||||||
|
android-sdk = {
|
||||||
|
enable = true;
|
||||||
|
path = "${config.home-manager.users.alukard.home.homeDirectory}/.android/sdk";
|
||||||
|
packages = sdk: with sdk; [
|
||||||
|
build-tools-31-0-0
|
||||||
|
build-tools-29-0-2
|
||||||
|
cmdline-tools-latest
|
||||||
|
patcher-v4
|
||||||
|
platform-tools
|
||||||
|
platforms-android-30
|
||||||
|
|
||||||
|
|
||||||
|
emulator
|
||||||
|
system-images-android-30-google-apis-x86-64
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
ANDROID_HOME = android-sdk.path;
|
||||||
|
ANDROID_SDK_ROOT = android-sdk.path;
|
||||||
|
JAVA_HOME = pkgs.jdk11.home;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = let
|
||||||
|
android-emulator = pkgs.android-emulator.override {
|
||||||
|
name = "flutter-emulator";
|
||||||
|
avdHomeDir = config.home-manager.users.alukard.home.homeDirectory;
|
||||||
|
sdk = android-sdk.path;
|
||||||
|
platformVersion = "30";
|
||||||
|
systemImageType = "google_apis";
|
||||||
|
abiVersion = "x86_64";
|
||||||
|
deviceType = "pixel";
|
||||||
|
# enableGPU = true;
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
pkgs.flutter
|
||||||
|
android-emulator
|
||||||
|
# jdk11
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
ANDROID_HOME = config.home-manager.users.alukard.android-sdk.path;
|
||||||
|
ANDROID_SDK_ROOT = config.home-manager.users.alukard.android-sdk.path;
|
||||||
|
JAVA_HOME = pkgs.jdk11.home;
|
||||||
|
};
|
||||||
|
}
|
@ -2,4 +2,5 @@
|
|||||||
server = ./server.nix;
|
server = ./server.nix;
|
||||||
desktop = ./desktop.nix;
|
desktop = ./desktop.nix;
|
||||||
base = ./base.nix;
|
base = ./base.nix;
|
||||||
|
workstation = ./workstation.nix;
|
||||||
}
|
}
|
||||||
|
7
roles/workstation.nix
Normal file
7
roles/workstation.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = with inputs.self.nixosModules; with inputs.self.nixosProfiles; [
|
||||||
|
./desktop.nix
|
||||||
|
|
||||||
|
flutter
|
||||||
|
];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user