From 5a9a6ea04f1365ab542aa1b65d656249ac2c4bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Sat, 28 Oct 2023 15:09:54 +0200 Subject: [PATCH] migrate packages to home manager --- flake.nix | 2 +- home.nix | 2 +- packages.nix | 66 +++++++++++++++++----- packages/firefox-gnome-theme-installer.nix | 17 ++++++ packages/hid-fanatecff-tools.nix | 44 +++++++++++++++ packages/intellij.nix | 10 ++-- packages/threema-desktop.nix | 5 ++ update-intellij.sh | 18 ++++++ 8 files changed, 142 insertions(+), 22 deletions(-) create mode 100644 packages/firefox-gnome-theme-installer.nix create mode 100644 packages/hid-fanatecff-tools.nix create mode 100644 packages/threema-desktop.nix create mode 100755 update-intellij.sh diff --git a/flake.nix b/flake.nix index 226ca74..11ce2f2 100644 --- a/flake.nix +++ b/flake.nix @@ -22,7 +22,7 @@ }; homeDirPrefix = if pkgs.stdenv.hostPlatform.isDarwin then "/Users" else "/home"; - homeDirectory = "/${homeDirPrefix}/${username}"; + homeDirectory = "${homeDirPrefix}/${username}"; home = (import ./home.nix { inherit homeDirectory pkgs stateVersion system username; diff --git a/home.nix b/home.nix index 9ead097..8e3afac 100644 --- a/home.nix +++ b/home.nix @@ -6,7 +6,7 @@ in { inherit homeDirectory packages stateVersion username; shellAliases = { - reload-home-manager-config = "home-manager switch --flake ${builtins.toString ./.}"; + reload-home-manager-config = "home-manager switch --flake ${homeDirectory}/.config/home-manager"; }; }; diff --git a/packages.nix b/packages.nix index 4e66c0b..5fea080 100644 --- a/packages.nix +++ b/packages.nix @@ -1,16 +1,52 @@ { pkgs }: with pkgs; [ - cachix - lorri - - # chat apps - (discord.override { - withOpenASAR = true; - withVencord = true; - }) - - # development - (import ./packages/intellij.nix { inherit pkgs; - version = "2023.2.4"; - build = "232.10203.10"; - }) - ]; + # nix + cachix + lorri + + # browsers + firefox-wayland + chromium + brave + + # media + jellyfin-media-player + youtube-music + vlc + makemkv + handbrake + metadata-cleaner + + # chat apps + (import ./packages/threema-desktop.nix { inherit pkgs; }) + (discord.override { + withOpenASAR = true; + withVencord = true; + }) + slack + + # office + libreoffice + apostrophe # markdown editor + + # creative + gimp-with-plugins + inkscape-with-extensions + audacity + friture + blender + + # development + (import ./packages/intellij.nix { inherit pkgs; }) + jetbrains.rust-rover + insomnia + avalonia-ilspy + + # gaming + steam + oversteer + obs-studio + cartridges + bottles + protontricks + mangohud +] diff --git a/packages/firefox-gnome-theme-installer.nix b/packages/firefox-gnome-theme-installer.nix new file mode 100644 index 0000000..95e55fe --- /dev/null +++ b/packages/firefox-gnome-theme-installer.nix @@ -0,0 +1,17 @@ +{ lib, stdenv, fetchFromGitHub, pkgs }: + +stdenv.mkDerivation rec { + name = "firefox-gnome-theme"; + version = "116.0.0"; + src = fetchFromGitHub { + owner = "rafaelmardojai"; + repo = "firefox-gnome-theme"; + sparseCheckout = ["scripts"]; + rev = "v116"; + sha256 = "0IS5na2WRSNWNygHhmZOcXhdrx2aFhCDQY8XVVeHf8Q="; + }; + installPhase = '' + mkdir -p $out/bin + cp scripts/install-by-curl.sh $out/bin/install-firefox-gnome-theme + ''; +} diff --git a/packages/hid-fanatecff-tools.nix b/packages/hid-fanatecff-tools.nix new file mode 100644 index 0000000..e5e5bf3 --- /dev/null +++ b/packages/hid-fanatecff-tools.nix @@ -0,0 +1,44 @@ +{ lib, stdenv, fetchFromGitHub, pkgs }: + +stdenv.mkDerivation rec { + pname = "hid-fanatecff-tools"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "gotzl"; + repo = "hid-fanatecff-tools"; + rev = "7f9ab82a5e46a60811a9917765ec5d3cdbf0ecbd"; + hash = "sha256-urgAMa3xPe6iYLwXavJ5rtjsbtueUG64XPsAlB1x/Y8="; + }; + + patchPhase = '' + substituteInPlace "tools/fanatec_led_server.py" --replace "#!/usr/bin/python3" "#!/${pkgs.python312}" + rm Makefile + ''; + + installPhase = '' + mkdir -p $out/share/${pname} + cp . $out/share/${pname} + + mkdir -p $out/bin + ln -s $out/share/${pname}/tools/fanatec_led_server $out/bin/${pname} + + cp -v dbus/org.fanatec.conf $out/etc/dbus-1/system.d/ + cp -v dbus/org.fanatec.service $out/share/dbus-1/system-services/ + + ln -s dbus/fanatec-input.py $out/bin/fanatec-input + ln -s dbus/fanatec-input.systemd.service $out/lib/systemd/system/fanatec-input.service + + ''; + + meta = with lib; { + description = '' + Helper to access sysfs functions from the hid-fanatec driver + and aims to connect games with the (extended) features of + the CSL Elite Wheel. It is not needed for force-feedback to work. + ''; + homepage = "https://github.com/gotzl/hid-fanatecff-tools"; + license = licenses.gpl2Only; + platforms = platforms.linux; + }; +} diff --git a/packages/intellij.nix b/packages/intellij.nix index 4b7e911..bcc96ca 100644 --- a/packages/intellij.nix +++ b/packages/intellij.nix @@ -1,7 +1,7 @@ -{ pkgs, version, build }: pkgs.jetbrains.idea-ultimate.overrideAttrs(prev: { - version = "${version}"; - build_number = "${build}"; +{ pkgs }: pkgs.jetbrains.idea-ultimate.overrideAttrs(prev: { + version = "2023.2.4"; src = builtins.fetchurl { - url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz"; + url = "https://download.jetbrains.com/idea/ideaIU-2023.2.4.tar.gz"; + sha256 = "26fea1a8597e8124dcc24e8ed1dd6f5268e0cd1ba736bbe0e22df3f635ad280b"; }; -}); +}) diff --git a/packages/threema-desktop.nix b/packages/threema-desktop.nix new file mode 100644 index 0000000..d9fa0d4 --- /dev/null +++ b/packages/threema-desktop.nix @@ -0,0 +1,5 @@ +{ pkgs }: pkgs.threema-desktop.overrideAttrs(prev: { + postFixup = prev.postFixup + '' + echo "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations}}" >> $out/bin/threema + ''; +})) diff --git a/update-intellij.sh b/update-intellij.sh new file mode 100755 index 0000000..8ab7a5e --- /dev/null +++ b/update-intellij.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +nixFile="./packages/intellij.nix" +info=$(curl --silent --fail --show-error "https://download.jetbrains.com/idea/ideaIU-$1.tar.gz.sha256") +checksum=$(echo $info | grep -oE '^[0-9a-f]{64}') +filename=$(echo $info | grep -oE '[^* ]+$') +if [ -z "${checksum}" ] || [ -z "${filename}" ]; then + exit -1 +fi +echo "Filename: $filename" +echo "Checksum: $checksum" + +sed -i "s|version\s*=.*|version = \"$1\";|" "$nixFile" +sed -i "s|url\s*=.*|url = \"https://download.jetbrains.com/idea/$filename\";|" "$nixFile" +sed -i "s|sha256\s*=.*|sha256 = \"$checksum\";|" "$nixFile" + +echo "" +echo "IntelliJ updated to $1" +