122 lines
4.4 KiB
HolyC
122 lines
4.4 KiB
HolyC
{
|
|
description = "flake for jet with Home Manager enabled";
|
|
# https://github.com/drakerossman/nixos-musings/blob/main/how-to-add-home-manager-to-nixos/flake.nix
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
home-manager.url = "github:nix-community/home-manager";
|
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
|
ghostty.url = "github:ghostty-org/ghostty/main";
|
|
helix.url = "github:helix-editor/helix/master";
|
|
opencode.url = "github:anomalyco/opencode/dev";
|
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
|
zen-browser = {
|
|
url = "github:0xc000022070/zen-browser-flake";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nix-index-database = {
|
|
url = "github:nix-community/nix-index-database";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
agenix = {
|
|
url = "github:ryantm/agenix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nur = {
|
|
url = "github:nix-community/NUR";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
inputs@{
|
|
nixpkgs,
|
|
home-manager,
|
|
opencode,
|
|
nixos-hardware,
|
|
...
|
|
}:
|
|
let
|
|
mkHost =
|
|
hostname:
|
|
nixpkgs.lib.nixosSystem {
|
|
modules = [
|
|
{ nixpkgs.hostPlatform = "x86_64-linux"; }
|
|
./hosts/${hostname}
|
|
nixos-hardware.nixosModules.framework-amd-ai-300-series
|
|
home-manager.nixosModules.home-manager
|
|
inputs.nix-index-database.nixosModules.default
|
|
inputs.agenix.nixosModules.default
|
|
{
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.backupFileExtension = "backup";
|
|
home-manager.extraSpecialArgs = {
|
|
inherit inputs hostname;
|
|
};
|
|
home-manager.users.jet = import ./home.nix;
|
|
}
|
|
{
|
|
nixpkgs.overlays = [
|
|
inputs.nur.overlays.default
|
|
inputs.ghostty.overlays.default
|
|
inputs.helix.overlays.default
|
|
opencode.overlays.default
|
|
(final: prev: {
|
|
jj-starship = prev.callPackage ./pkgs/jj-starship.nix { };
|
|
|
|
# These nixpkgs packages still default to EOL Electron 39, but current builds work with Electron 40.
|
|
logseq = prev.logseq.override { electron_39 = prev.electron_40; };
|
|
zulip = prev.zulip.override { electron_39 = prev.electron_40; };
|
|
|
|
gnomeExtensions = prev.gnomeExtensions // {
|
|
# The source moved to a new UUID and already declares GNOME 49/50 support.
|
|
tailscale-qs = prev.gnomeExtensions.tailscale-qs.overrideAttrs (_: {
|
|
postInstall = "";
|
|
});
|
|
};
|
|
|
|
# opencode's dev branch asks for Bun 1.3.14, but this revision builds and runs with nixpkgs' Bun 1.3.13.
|
|
opencode = prev.opencode.overrideAttrs (old: {
|
|
postPatch = (old.postPatch or "") + ''
|
|
substituteInPlace package.json \
|
|
--replace-fail "bun@1.3.14" "bun@1.3.13"
|
|
substituteInPlace packages/ui/package.json \
|
|
--replace-fail '"./v2/*": "./src/v2/components/*.tsx",' '"./v2/*": "./src/v2/components/*.tsx", "./v2/*.css": "./src/v2/components/*.css",'
|
|
'';
|
|
});
|
|
opencode-original = final.opencode;
|
|
})
|
|
];
|
|
}
|
|
];
|
|
};
|
|
in
|
|
{
|
|
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
|
|
nixosConfigurations = {
|
|
framework = mkHost "framework";
|
|
framework-work = mkHost "framework-work";
|
|
};
|
|
|
|
devShells.x86_64-linux.default =
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
nhs = pkgs.writeShellScriptBin "nhs" ''
|
|
sudo -v || exit $?
|
|
nh os switch --hostname "$(${pkgs.hostname}/bin/hostname)" path:. "$@"
|
|
'';
|
|
nhb = pkgs.writeShellScriptBin "nhb" ''
|
|
sudo -v || exit $?
|
|
nh os boot --hostname "$(${pkgs.hostname}/bin/hostname)" path:. "$@"
|
|
'';
|
|
in
|
|
pkgs.mkShell {
|
|
packages = [
|
|
pkgs.nh
|
|
inputs.agenix.packages.x86_64-linux.default
|
|
nhb
|
|
nhs
|
|
];
|
|
};
|
|
};
|
|
}
|