diff --git a/configuration.nix b/configuration.nix index 57ed0fc..1e50cad 100644 --- a/configuration.nix +++ b/configuration.nix @@ -56,9 +56,16 @@ systemd.services.opencode-tailnet = { description = "Expose OpenCode on the tailnet"; - after = [ "network-online.target" "tailscaled.service" "tailscale-set-operator.service" ]; + after = [ + "network-online.target" + "tailscaled.service" + "tailscale-set-operator.service" + ]; wants = [ "network-online.target" ]; - requires = [ "tailscaled.service" "tailscale-set-operator.service" ]; + requires = [ + "tailscaled.service" + "tailscale-set-operator.service" + ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "simple"; @@ -136,11 +143,11 @@ "L+ /usr/bin/bwrap - - - - ${pkgs.bubblewrap}/bin/bwrap" ]; - # Set Kitty as default terminal + # Set Ghostty as default terminal xdg.terminal-exec = { enable = true; settings = { - default = [ "kitty.desktop" ]; + default = [ "ghostty.desktop" ]; }; }; diff --git a/flake.lock b/flake.lock index d83b313..6d89af9 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -21,36 +37,63 @@ "type": "github" } }, - "flake-utils": { + "ghostty": { "inputs": { - "systems": "systems" + "flake-compat": "flake-compat", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "systems": "systems", + "zig": "zig", + "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "lastModified": 1777322026, + "narHash": "sha256-HHHgWuBssEBMfV5hOFdFxp0WUXiwfl20NfkjU/ZNuC8=", + "owner": "ghostty-org", + "repo": "ghostty", + "rev": "6590196661f769dd8f2b3e85d6c98262c4ec5b3b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "ghostty-org", + "ref": "main", + "repo": "ghostty", + "type": "github" + } + }, + "helix": { + "inputs": { + "nixpkgs": "nixpkgs_2", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1776999445, + "narHash": "sha256-vu2S5gnSTS4aDz25mr4yCrKh9sspPVlgD5KQQVHA4AM=", + "owner": "helix-editor", + "repo": "helix", + "rev": "3beb268068d23294a26b47eab43b0a13a2a3a951", + "type": "github" + }, + "original": { + "owner": "helix-editor", + "ref": "master", + "repo": "helix", "type": "github" } }, "home-manager": { "inputs": { "nixpkgs": [ + "ghostty", "nixpkgs" ] }, "locked": { - "lastModified": 1777086106, - "narHash": "sha256-hlNpIN18pw3xo34Lsrp6vAMUPn0aB/zFBqL0QXI1Pmk=", + "lastModified": 1770586272, + "narHash": "sha256-Ucci8mu8QfxwzyfER2DQDbvW9t1BnTUJhBmY7ybralo=", "owner": "nix-community", "repo": "home-manager", - "rev": "5826802354a74af18540aef0b01bc1320f82cc17", + "rev": "b1f916ba052341edc1f80d4b2399f1092a4873ca", "type": "github" }, "original": { @@ -60,6 +103,26 @@ } }, "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777411657, + "narHash": "sha256-P7XjzOo8Cbuj5eBSO1LaQ1hOy3ir8rtUB64EFZ6kKiQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "af59809e9413ec8adb9597a8636491af356fe525", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { "inputs": { "nixpkgs": [ "zen-browser", @@ -87,11 +150,11 @@ ] }, "locked": { - "lastModified": 1776829403, - "narHash": "sha256-oHVcvP2Ahhj1KUsEzp+2BQF55/r5VSa3QxdPdwE1p00=", + "lastModified": 1777181277, + "narHash": "sha256-yVJbd07ortDRAttDFmDV5p220aOLTHgVAx//0nW/xW8=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "c43246d4e9e506178b69baed075d797ec2d873e2", + "rev": "b8eb7acee0f7604fe1bf6a5b3dcf5254369180fa", "type": "github" }, "original": { @@ -117,11 +180,24 @@ }, "nixpkgs": { "locked": { - "lastModified": 1776877367, - "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "lastModified": 1770537093, + "narHash": "sha256-XV30uo8tXuxdzuV8l3sojmlPRLd/8tpMsOp4lNzLGUo=", + "rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51", + "type": "tarball", + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre942631.fef9403a3e4d/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1775036866, + "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", "type": "github" }, "original": { @@ -131,7 +207,23 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { + "locked": { + "lastModified": 1777268161, + "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1776683584, "narHash": "sha256-NuTLMrr10Tng72hurYG8jYQ4XKK8wnpJmOGcPiis96g=", @@ -155,11 +247,11 @@ ] }, "locked": { - "lastModified": 1777134654, - "narHash": "sha256-rMHFp8VNmSUsP8wDCtJkGQdL9Zt3xGxKBL3H9ei9xPM=", + "lastModified": 1777415702, + "narHash": "sha256-07yiaZbPdDD8vfOFd2ZecTD73BTR3OUsuUBv6kNh+IY=", "owner": "nix-community", "repo": "NUR", - "rev": "9aa454f559e8d602df96d6a142c18cfdc4518851", + "rev": "23dbd0a9fb72a35e4b5b0679b0f4b947a7b25db9", "type": "github" }, "original": { @@ -170,14 +262,14 @@ }, "opencode": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1777130202, - "narHash": "sha256-uhZtQ3/TywnFWTU1ceJOWkDXO4p8ZZWTHHOjaQnyObk=", + "lastModified": 1777409456, + "narHash": "sha256-pHBexdcc9uDODYx7zF0VU2WOfbh0UtBHrsifedzPwgE=", "owner": "anomalyco", "repo": "opencode", - "rev": "62651c7114c8fe1b3ec9a2868f32abfc6278993f", + "rev": "ae8904c4ffbb369955127ec39965d4c49cb4bab4", "type": "github" }, "original": { @@ -189,17 +281,40 @@ }, "root": { "inputs": { - "home-manager": "home-manager", + "ghostty": "ghostty", + "helix": "helix", + "home-manager": "home-manager_2", "nix-index-database": "nix-index-database", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_3", "nur": "nur", "opencode": "opencode", - "t3code": "t3code", "zen-browser": "zen-browser" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "helix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775358767, + "narHash": "sha256-f2eC+WIfhjevCPQILuV08i/kmKZzYZpUvkom/33VxCA=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "20fd44bc663daa53a2575e01293e24e681d62244", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { + "flake": false, "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -214,45 +329,98 @@ "type": "github" } }, - "t3code": { + "zen-browser": { "inputs": { - "flake-utils": "flake-utils", + "home-manager": "home-manager_3", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1776969145, - "narHash": "sha256-MY0lwul1fA1jI/Ka9EuaHBOA9Da1Q+PCHP7p2dYWNx0=", - "owner": "Sawrz", - "repo": "t3code-nix", - "rev": "967c9a5c10a7bae21063a127cdb4131af684e734", + "lastModified": 1777356688, + "narHash": "sha256-fOhJpz7QAkBWAAih72CmnIfIN0pHfuZjhZQ/hBLNWxo=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "b3c972b3d8537a9cf7a0db96b164c9c3e580884a", "type": "github" }, "original": { - "owner": "Sawrz", - "repo": "t3code-nix", + "owner": "0xc000022070", + "repo": "zen-browser-flake", "type": "github" } }, - "zen-browser": { + "zig": { "inputs": { - "home-manager": "home-manager_2", + "flake-compat": [ + "ghostty", + "flake-compat" + ], "nixpkgs": [ + "ghostty", + "nixpkgs" + ], + "systems": [ + "ghostty", + "systems" + ] + }, + "locked": { + "lastModified": 1776789209, + "narHash": "sha256-G6B7Q4TXn7MZ1mB+f9rymjsYF5PLWoSvmbxijb/99bw=", + "owner": "mitchellh", + "repo": "zig-overlay", + "rev": "14fe971844e841297ddd2ce9783d6892b467af39", + "type": "github" + }, + "original": { + "owner": "mitchellh", + "repo": "zig-overlay", + "type": "github" + } + }, + "zig_2": { + "inputs": { + "nixpkgs": [ + "ghostty", + "zon2nix", "nixpkgs" ] }, "locked": { - "lastModified": 1777084302, - "narHash": "sha256-qHE5XpgtRedzND5xzaqzbSOw4amse0aA4/BaVI4ONcU=", - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "rev": "f6bab88f8566ddc13fb5e5500bd6c720b61d5321", + "lastModified": 1777234348, + "narHash": "sha256-fKw44a4qbUuI5eTG8k0gPbqMV5TOrjYF35PBzsYgd2U=", + "ref": "refs/heads/main", + "rev": "2c781c0609ecda600ab98f98cca417bbd981bd53", + "revCount": 1677, + "type": "git", + "url": "https://codeberg.org/jcollie/zig-overlay.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/jcollie/zig-overlay.git" + } + }, + "zon2nix": { + "inputs": { + "nixpkgs": [ + "ghostty", + "nixpkgs" + ], + "zig": "zig_2" + }, + "locked": { + "lastModified": 1777314365, + "narHash": "sha256-eLxQaD0wc96Neqkln8wHS0rNq/chPODifFkhwrwilEU=", + "owner": "jcollie", + "repo": "zon2nix", + "rev": "a5a1d412ad1ab6305511997bbc92b3a9dd6cb784", "type": "github" }, "original": { - "owner": "0xc000022070", - "repo": "zen-browser-flake", + "owner": "jcollie", + "ref": "main", + "repo": "zon2nix", "type": "github" } } diff --git a/flake.nix b/flake.nix index c669b4a..5fa5978 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,8 @@ 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"; }; @@ -21,10 +23,6 @@ url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; - t3code = { - url = "github:Sawrz/t3code-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; outputs = @@ -36,33 +34,36 @@ ... }: 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 - { - 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.t3code.overlays.default - (final: prev: { - opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode; - }) - ]; - } - ]; - }; + 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 + { + 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 + (final: prev: { + opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode; + }) + ]; + } + ]; + }; in { formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt; diff --git a/home-modules/core.nix b/home-modules/core.nix index 3fcd571..1912a41 100644 --- a/home-modules/core.nix +++ b/home-modules/core.nix @@ -9,7 +9,7 @@ home.sessionVariables = { BROWSER = "zen"; - TERMINAL = "kitty"; + TERMINAL = "ghostty"; }; xdg.userDirs = { diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index 605db53..a96f5da 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -1,18 +1,23 @@ -{ pkgs, homeLib, hostname, ... }: +{ + pkgs, + homeLib, + hostname, + ... +}: let autostartEntries = if hostname == "framework-work" then [ "${homeLib.zenStartup}/share/applications/zen-startup.desktop" - "${homeLib.kittyZellijStartup}/share/applications/kitty-zellij-startup.desktop" + "${homeLib.ghosttyZellijStartup}/share/applications/ghostty-zellij-startup.desktop" "${pkgs.slack}/share/applications/slack.desktop" "${homeLib.betterbirdStartup}/share/applications/betterbird-startup.desktop" ] else [ "${homeLib.zenStartup}/share/applications/zen-startup.desktop" - "${homeLib.kittyZellijStartup}/share/applications/kitty-zellij-startup.desktop" + "${homeLib.ghosttyZellijStartup}/share/applications/ghostty-zellij-startup.desktop" "${homeLib.signalStartup}/share/applications/signal-startup.desktop" "${pkgs.slack}/share/applications/slack.desktop" "${homeLib.betterbirdStartup}/share/applications/betterbird-startup.desktop" diff --git a/home-modules/lib.nix b/home-modules/lib.nix index a1a77d8..939e101 100644 --- a/home-modules/lib.nix +++ b/home-modules/lib.nix @@ -309,11 +309,11 @@ let terminal = false; categories = [ "Network" ]; }; - kittyZellijStartup = pkgs.makeDesktopItem { - name = "kitty-zellij-startup"; - desktopName = "Kitty Zellij Startup"; - comment = "Open Kitty and attach to the main Zellij session"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijPersistentSession}/bin/zellij-persistent-session"; + ghosttyZellijStartup = pkgs.makeDesktopItem { + name = "ghostty-zellij-startup"; + desktopName = "Ghostty Zellij Startup"; + comment = "Open Ghostty and attach to the main Zellij session"; + exec = "${pkgs.ghostty}/bin/ghostty --fullscreen=true -e ${zellijPersistentSession}/bin/zellij-persistent-session"; terminal = false; categories = [ "TerminalEmulator" @@ -358,8 +358,8 @@ in betterbirdStartup betterbird email + ghosttyZellijStartup greptileSkills - kittyZellijStartup name nasaApodWallpaper signalStartup diff --git a/home-modules/packages.nix b/home-modules/packages.nix index f61a705..9f5be49 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -48,7 +48,6 @@ qbittorrent-enhanced signal-desktop slack - t3code tor-browser vesktop vlc diff --git a/home-modules/terminal.nix b/home-modules/terminal.nix index 42c2ed7..404aab7 100644 --- a/home-modules/terminal.nix +++ b/home-modules/terminal.nix @@ -58,29 +58,29 @@ ''; }; - programs.kitty = { + programs.ghostty = { enable = true; settings = { - hide_window_decorations = "yes"; - draw_minimal_borders = "yes"; - font_family = "CommitMono Nerd Font"; - font_size = "12"; - confirm_os_window_close = "0"; - enable_audio_bell = "no"; + window-decoration = false; + font-family = "CommitMono Nerd Font"; + font-size = 12; + confirm-close-surface = false; + bell-features = "no-audio"; + theme = "GitHub Dark High Contrast"; + fullscreen = true; }; - themeFile = "GitHub_Dark_High_Contrast"; }; - xdg.desktopEntries.kitty = { - name = "Kitty"; + xdg.desktopEntries.ghostty = { + name = "Ghostty"; genericName = "Terminal Emulator"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${homeLib.zellijPersistentSession}/bin/zellij-persistent-session"; - icon = "kitty"; + exec = "${pkgs.ghostty}/bin/ghostty --fullscreen=true -e ${homeLib.zellijPersistentSession}/bin/zellij-persistent-session"; + icon = "com.mitchellh.ghostty"; type = "Application"; categories = [ "System" "TerminalEmulator" ]; - comment = "Fast, featureful, GPU based terminal emulator"; + comment = "Fast, native terminal emulator"; }; }