pin to nixos 26.05, drop hyprland/anyrun flakes

Stable restore point before 26.05 — last known good unstable config.

Unify all hosts on nixos-26.05 + home-manager release-26.05.
Drop hyprland, anyrun, nixpkgs-stable, home-manager-stable,
stylix-stable inputs. Hyprland 0.55.2 and anyrun 25.12.0 from
nixpkgs. Anyrun config via xdg.configFile (no HM module in 26.05).
Stylix on master until release-26.05 branch exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
rope 2026-05-30 11:11:33 +01:00
parent f5d7fd440e
commit 72246fc440
5 changed files with 104 additions and 1048 deletions

958
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -2,25 +2,17 @@
description = "FredOS NixOS configuration";
inputs = {
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager-stable = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
# Unstable HM for Hyprland Lua config support (configType = "lua",
# available since HM master / future 26.05).
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
home-manager = {
url = "github:nix-community/home-manager";
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs = {
nixpkgs.follows = "nixpkgs-stable";
home-manager.follows = "home-manager-stable";
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
@ -28,57 +20,39 @@
proton-cachyos-nix.url = "github:powerofthe69/proton-cachyos-nix";
# Pin Hyprland to upstream so we get the 0.52.2+ fixes ahead of
# nixos-25.11's slower bump cadence. Doesn't follow our nixpkgs —
# upstream needs newer stdenv than 25.11 ships.
hyprland.url = "github:hyprwm/Hyprland";
anyrun = {
url = "github:anyrun-org/anyrun";
inputs.nixpkgs.follows = "nixpkgs";
};
# No release-26.05 branch yet — use master until stylix cuts one.
stylix.url = "github:nix-community/stylix";
stylix-stable = {
url = "github:nix-community/stylix/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
};
outputs =
{ self
, nixpkgs-stable
, nixpkgs
, home-manager-stable
, home-manager
, zen-browser
, nix-cachyos-kernel
, hyprland
, anyrun
, stylix
, stylix-stable
, proton-cachyos-nix
, ...
} @ inputs:
let
system = "x86_64-linux";
mkHost = hostname: pkgsInput: hmInput: extraModules: pkgsInput.lib.nixosSystem {
mkHost = hostname: extraModules: nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; pkgs-unstable = nixpkgs.legacyPackages.${system}; };
specialArgs = { inherit inputs; };
modules = [
./hosts/${hostname}.nix
./hosts/hardware/${hostname}.nix
./common.nix
hmInput.nixosModules.home-manager
home-manager.nixosModules.home-manager
stylix.nixosModules.stylix
./settings/stylix.nix
] ++ extraModules;
};
in
{
nixosConfigurations = {
# Gaming and Macbook use nixpkgs unstable — required by home-manager
# unstable which needs lib/services/lib.nix added in nixpkgs after 25.11.
FredOS-Gaming = mkHost "FredOS-Gaming" nixpkgs home-manager [ stylix.nixosModules.stylix ./settings/stylix.nix ];
FredOS-Mediaserver = mkHost "FredOS-Mediaserver" nixpkgs-stable home-manager-stable [ stylix-stable.nixosModules.stylix ./settings/stylix.nix ];
FredOS-Macbook = mkHost "FredOS-Macbook" nixpkgs home-manager [ stylix.nixosModules.stylix ./settings/stylix.nix ];
FredOS-Gaming = mkHost "FredOS-Gaming" [];
FredOS-Mediaserver = mkHost "FredOS-Mediaserver" [];
FredOS-Macbook = mkHost "FredOS-Macbook" [];
};
};
}

View file

@ -5,12 +5,11 @@
# password gate). After deploy, install the Claude extension from a terminal:
# code-server --install-extension anthropic.claude-code
# and set ANTHROPIC_API_KEY in ~/.config/code-server/env or via a shell profile.
{ config, pkgs, lib, pkgs-unstable, ... }:
{ config, pkgs, lib, ... }:
{
config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") {
services.code-server = {
enable = true;
package = pkgs-unstable.code-server;
host = "127.0.0.1";
port = 4444;
auth = "none";

View file

@ -1,9 +1,6 @@
# settings/hyprland.nix
{ config, pkgs, lib, inputs, ... }:
let
hyprland-pkgs = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system};
anyrun-pkgs = inputs.anyrun.packages.${pkgs.stdenv.hostPlatform.system};
isMacbook = config.networking.hostName == "FredOS-Macbook";
isGaming = !isMacbook;
@ -13,8 +10,6 @@ in
programs.hyprland = {
enable = true;
xwayland.enable = true;
package = hyprland-pkgs.hyprland;
portalPackage = hyprland-pkgs.xdg-desktop-portal-hyprland;
};
xdg.portal = {
@ -61,20 +56,12 @@ in
pavucontrol
polkit_gnome
quickshell
anyrun
qt6.qt5compat
zenity
libcanberra-gtk3
];
# Use upstream anyrun flake's HM module instead of the built-in one
# for working daemon mode.
home-manager.sharedModules = [
({ modulesPath, ... }: {
disabledModules = [ "${modulesPath}/programs/anyrun.nix" ];
})
inputs.anyrun.homeManagerModules.default
];
home-manager.users.fred = { config, lib, pkgs, inputs, ... }:
let
c = config.lib.stylix.colors;
@ -96,7 +83,6 @@ in
enable = true;
configType = "lua";
systemd.variables = [ "--all" ];
package = hyprland-pkgs.hyprland;
settings = {
# hl.config({...}) — all static named-section configuration.
@ -192,8 +178,8 @@ in
$'\uf08b Logout' \
$'\uf01e Reboot' \
$'\uf011 Shutdown' \
| ${anyrun-pkgs.anyrun}/bin/anyrun \
--plugins "${anyrun-pkgs.stdin}/lib/libstdin.so" \
| ${pkgs.anyrun}/bin/anyrun \
--plugins "${pkgs.anyrun}/lib/libstdin.so" \
--show-results-immediately true \
--hide-plugin-info true \
--close-on-click true)
@ -343,64 +329,6 @@ in
'';
};
programs.anyrun = {
enable = true;
config = {
plugins = [ anyrun-pkgs.applications ];
x.fraction = 0.5;
y.fraction = 0.25;
width.absolute = 350;
height.absolute = 0;
hideIcons = false;
ignoreExclusiveZones = false;
layer = "overlay";
hidePluginInfo = true;
closeOnClick = true;
maxEntries = 8;
};
extraCss =
let c = config.lib.stylix.colors; in
''
* { all: unset; font-family: "FiraMono Nerd Font", monospace; font-size: 13px; }
window { background: transparent; }
box.main {
background: #${c.base00};
border: 1px solid #${c.base03};
border-radius: 10px;
padding: 8px;
margin: 16px;
}
text {
background: #${c.base01};
color: #${c.base05};
caret-color: #${c.base0D};
padding: 8px 16px;
border-radius: 6px;
min-height: 0;
}
list.plugin { background: transparent; }
.matches { background: transparent; }
.match {
padding: 4px 16px;
border-radius: 6px;
color: #${c.base05};
background: transparent;
}
.match:selected {
background: #${c.base02};
border: none;
}
label.match.description { color: #${c.base04}; font-size: 11px; }
'';
extraConfigFiles."applications.ron".text = ''
Config(
desktop_actions: false,
max_entries: 8,
terminal: Some("ghostty"),
)
'';
};
programs.hyprlock = {
enable = true;
settings = {
@ -2445,6 +2373,64 @@ in
}
'';
};
# anyrun config — written manually since HM 26.05 has no anyrun module.
"anyrun/config.ron".text = ''
Config(
x: Fraction(0.5),
y: Fraction(0.25),
width: Absolute(350),
height: Absolute(0),
hide_icons: false,
ignore_exclusive_zones: false,
layer: Overlay,
hide_plugin_info: true,
close_on_click: true,
max_entries: 8,
plugins: [
"${pkgs.anyrun}/lib/libapplications.so",
],
)
'';
"anyrun/style.css".text = ''
* { all: unset; font-family: "FiraMono Nerd Font", monospace; font-size: 13px; }
window { background: transparent; }
box.main {
background: #${c.base00};
border: 1px solid #${c.base03};
border-radius: 10px;
padding: 8px;
margin: 16px;
}
text {
background: #${c.base01};
color: #${c.base05};
caret-color: #${c.base0D};
padding: 8px 16px;
border-radius: 6px;
min-height: 0;
}
list.plugin { background: transparent; }
.matches { background: transparent; }
.match {
padding: 4px 16px;
border-radius: 6px;
color: #${c.base05};
background: transparent;
}
.match:selected {
background: #${c.base02};
border: none;
}
label.match.description { color: #${c.base04}; font-size: 11px; }
'';
"anyrun/applications.ron".text = ''
Config(
desktop_actions: false,
max_entries: 8,
terminal: Some("ghostty"),
)
'';
};
};

View file

@ -1,7 +1,6 @@
{ config, pkgs, lib, inputs, ... }:
{
# Imported for all hosts via flake.nix extraModules.
# Desktop hosts use stylix (unstable), Mediaserver uses stylix-stable (25.11).
# Imported for all hosts via flake.nix.
config = {
stylix = {