From 1418e625985c93b4cb857a71f0f8f109bfbe6646 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Tue, 22 Jul 2025 18:59:16 +0200 Subject: [PATCH] Flake: Add nixpkgs-stable input, put the overlays in the correct place and add jetbrains.rider overlay Jetbrains apps are currently broken on unstable because of a jetbrains.jdk buildfailure --- flake.lock | 17 ++++++++++ flake.nix | 50 ++++++++++------------------ home/christoph/nixinator/default.nix | 39 +++++++++++----------- home/modules/hyprland/settings.nix | 2 +- overlays/default.nix | 36 +++++++++++++++++--- 5 files changed, 87 insertions(+), 57 deletions(-) diff --git a/flake.lock b/flake.lock index d0988fef..721cd053 100644 --- a/flake.lock +++ b/flake.lock @@ -718,6 +718,22 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1753115646, + "narHash": "sha256-yLuz5cz5Z+sn8DRAfNkrd2Z1cV6DaYO9JMrEz4KZo/c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "92c2e04a475523e723c67ef872d8037379073681", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1752950548, @@ -889,6 +905,7 @@ "nix-alien": "nix-alien", "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", + "nixpkgs-stable": "nixpkgs-stable", "nixvim": "nixvim", "nps": "nps", "nur": "nur", diff --git a/flake.nix b/flake.nix index 6148698c..437258fe 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,9 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; hardware.url = "github:nixos/nixos-hardware"; + # NOTE: Update this after May and November + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05"; + # Home Manager home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; @@ -52,7 +55,7 @@ hypr-dynamic-cursors.inputs.nixpkgs.follows = "nixpkgs"; hypr-dynamic-cursors.inputs.hyprland.follows = "hyprland"; hyprspace.url = "github:KZDKM/Hyprspace"; - hyprspace.inputs.nixpkgs.follows = "nixpkgs"; + # hyprspace.inputs.nixpkgs.follows = "nixpkgs"; hyprspace.inputs.hyprland.follows = "hyprland"; # NeoVim <3 @@ -111,41 +114,24 @@ # firefox = prev.firefox.override { ... }; # myBrowser = final.firefox; # } - overlays = [ + overlays = let + # Maintain additional stable pkgs. + # This is supposed to provide a backup for packages in case they + # stop building on the unstable branch. + # It should otherwise not be mixed with this configuration, + # so don't even pass it to the modules. + pkgs-stable = import inputs.nixpkgs-stable { + inherit system; + config.allowUnfree = true; + config.allowUnfreePredicate = pkg: true; + }; + in [ inputs.devshell.overlays.default inputs.nur.overlays.default # inputs.emacs-overlay.overlay - # Overriding specific packages from a different nixpkgs (e.g. a pull request) - # can be done like this. Note that this creates an additional nixpkgs instance. - # https://github.com/NixOS/nixpkgs/issues/418451 - # (final: prev: { - # unityhub_pinned_3_13 = import inputs.unityhub-pinned { - # config.allowUnfree = true; - # localSystem = {inherit (prev) system;}; - # }; - # }) - - # TODO: Remove this after 0.15.1 hit nixpkgs - (final: prev: { - neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: { - version = "0.15.1"; - src = prev.fetchFromGitHub { - owner = "neovide"; - repo = "neovide"; - tag = finalAttrs.version; - hash = "sha256-2iV3g6tcCkMF7sFG/GZDz3czPZNIDi6YLfrVzYO9jYI="; - }; - cargoHash = "sha256-YlHAcUCRk6ROg5yXIumHfsiR/2TrsSzbuXz/IQK7sEo="; - cargoDeps = prev.rustPlatform.fetchCargoVendor { - inherit (finalAttrs) pname src version; - hash = finalAttrs.cargoHash; - }; - }); - }) - - # All my own overlays - (import ./overlays {inherit nixpkgs inputs;}) + # All my own overlays (derivations + modifications) + (import ./overlays {inherit inputs nixpkgs pkgs-stable;}) ]; }; diff --git a/home/christoph/nixinator/default.nix b/home/christoph/nixinator/default.nix index 52a122cd..42c4dfd0 100644 --- a/home/christoph/nixinator/default.nix +++ b/home/christoph/nixinator/default.nix @@ -91,8 +91,7 @@ # Add any extra libraries you want accessible to Rider here ]; - # TODO: Broken, jetbrains.jdk doesn't build (see nixpkgs #425328) - unity-rider = pkgs.jetbrains.rider.overrideAttrs (attrs: { + rider-unity = pkgs.jetbrains.rider.overrideAttrs (attrs: { postInstall = '' # Wrap rider with extra tools and libraries @@ -115,21 +114,22 @@ }); in { packages = with pkgs; [ - # quartus-prime-lite # Intel FPGA design software + # Intel FPGA design software + # quartus-prime-lite - # Don't want heavy IDE's on the laptop # jetbrains.clion # jetbrains.rust-rover # jetbrains.pycharm-professional # jetbrains.idea-ultimate # jetbrains.webstorm + # jetbrains.rider # Unity Stuff # TODO: Unity module # unityhub # TODO: Wait for https://nixpk.gs/pr-tracker.html?pr=422785 - # unity-rider - # dotnetCore - # mono + rider-unity + dotnetCore + mono blender godot_4 @@ -144,19 +144,20 @@ file = lib.mkMerge [ { - # ".local/share/applications/jetbrains-rider.desktop".source = let - # desktopFile = pkgs.makeDesktopItem { - # name = "jetbrains-rider"; - # desktopName = "Rider"; - # exec = "\"${unity-rider}/bin/rider\""; - # icon = "rider"; - # type = "Application"; - # # Don't show desktop icon in search or run launcher - # extraConfig.NoDisplay = "true"; - # }; - # in "${desktopFile}/share/applications/jetbrains-rider.desktop"; + ".local/share/applications/jetbrains-rider.desktop".source = let + desktopFile = pkgs.makeDesktopItem { + name = "jetbrains-rider"; + desktopName = "Rider"; + exec = "\"${rider-unity}/bin/rider\""; + icon = "rider"; + type = "Application"; + # Don't show desktop icon in search or run launcher + extraConfig.NoDisplay = "true"; + }; + in "${desktopFile}/share/applications/jetbrains-rider.desktop"; - ".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = ../../../config/mangohud/MangoHud.conf; + ".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = + ../../../config/mangohud/MangoHud.conf; } (lib.optionalAttrs (mylib.modules.contains config.home.packages pkgs.makemkv) { ".MakeMKV/settings.conf".source = diff --git a/home/modules/hyprland/settings.nix b/home/modules/hyprland/settings.nix index 62ec2b9b..761991a9 100644 --- a/home/modules/hyprland/settings.nix +++ b/home/modules/hyprland/settings.nix @@ -248,7 +248,7 @@ # rotate - rotate the cursor based on movement direction # stretch - stretch the cursor shape based on direction and velocity # none - do not change the cursors behaviour - mode = "tilt"; + mode = "rotate"; # minimum angle difference in degrees after which the shape is changed # smaller values are smoother, but more expensive for hw cursors diff --git a/overlays/default.nix b/overlays/default.nix index b8657361..8329b36e 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,6 +1,7 @@ { inputs, nixpkgs, + pkgs-stable, ... }: let # Taken from https://github.com/Misterio77/nix-config/blob/main/overlay/default.nix @@ -11,14 +12,39 @@ pkgs = final; }; - modifications = final: prev: rec { + modifications = final: prev: { # Only kept as an example, has nothing to do with current dconf-editor-wrapped derivation # dconf-editor-wrapped = import ./dconf-editor.nix { inherit final prev; }; # Use dconf-editor.nix: { final, prev }: final..overrideAttrs (oldAttrs: { ... }) or sth similar + + # Overriding specific packages from a different nixpkgs (e.g. a pull request) + # can be done like this. Note that this creates an additional nixpkgs instance. + # https://github.com/NixOS/nixpkgs/issues/418451 + # unityhub_pinned_3_13 = + # (import inputs.unityhub-pinned { + # config.allowUnfree = true; + # localSystem = {inherit (prev) system;}; + # }).unityhub; + + # TODO: Remove this after 0.15.1 hits nixpkgs + neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: { + version = "0.15.1"; + src = prev.fetchFromGitHub { + owner = "neovide"; + repo = "neovide"; + tag = finalAttrs.version; + hash = "sha256-2iV3g6tcCkMF7sFG/GZDz3czPZNIDi6YLfrVzYO9jYI="; + }; + cargoHash = "sha256-YlHAcUCRk6ROg5yXIumHfsiR/2TrsSzbuXz/IQK7sEo="; + cargoDeps = prev.rustPlatform.fetchCargoVendor { + inherit (finalAttrs) pname src version; + hash = finalAttrs.cargoHash; + }; + }); + + # TODO: Remove this after jetbrains.jdk builds again (nixpkgs issue 425328) + jetbrains.rider = pkgs-stable.jetbrains.rider; }; in - # TODO: I have absolutely no clue what happens here lol - # Basically we need some sort of list of all overlays that can be imported from the flake - # in the overlays = [ ... ] section of the pkgs = import nixpkgs { ... } configuration - # Somehow this library function turns additions/modifications into that + # Composes a list of overlays and returns a single overlay function that combines them. nixpkgs.lib.composeManyExtensions [additions modifications]