From 99abfabc12d00a6cd399e8d1b213ca6b3cb2e555 Mon Sep 17 00:00:00 2001 From: Jack Mechem Date: Fri, 3 Apr 2026 15:10:55 -0700 Subject: [PATCH] Lots of changes... Fix flake.nix merge conflict --- flake.lock | 120 ++++++++++++++++++++--- flake.nix | 106 ++++++++++---------- hosts/t480/configuration.nix | 134 ++++++++++++++++---------- modules/home-manager/homepackages.nix | 59 ++++++------ modules/home-manager/hyprland.nix | 11 ++- 5 files changed, 280 insertions(+), 150 deletions(-) diff --git a/flake.lock b/flake.lock index e3a494c..f31d8d8 100755 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "nodes": { + "crane": { + "locked": { + "lastModified": 1775236976, + "narHash": "sha256-gCgX+AXN7K1gAIEqcLcZHxmC+QoZcwn9m6Z9r2Az+N8=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6c23998526351a53ce734f0ac84940da988ccef1", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -36,6 +51,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "gtkapps": { "inputs": { "flake-utils": "flake-utils", @@ -61,11 +94,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1772153827, - "narHash": "sha256-xUjYgc6JhP6poKwC8eLipENIP8DBc0zJjQyowVWbEl0=", + "lastModified": 1774395694, + "narHash": "sha256-3lgJc02mSjwoFF4rmot3TLKkXAfG7EOOQG2pXn1XwgI=", "owner": "JackMechem", "repo": "gtkbar", - "rev": "c4915d89278f609777983030f8cf64f2bc08b3a8", + "rev": "79161abfc138d7ccbb1d0207dc1c15e8d5220179", "type": "github" }, "original": { @@ -81,11 +114,11 @@ ] }, "locked": { - "lastModified": 1772060133, - "narHash": "sha256-VuyRptb8v1lVGMlLp4/1vRX3Efwec0CN0S6mKmDPzLg=", + "lastModified": 1773367248, + "narHash": "sha256-FFMc1uAwy2GYasd0rdNDVxKyAgzuoJH2M+GglBQbqf0=", "owner": "nix-community", "repo": "home-manager", - "rev": "ce9b6e52500a0ea0ec48f0bbf6d7a3e431d9dfa4", + "rev": "be0c641a6a5564caa33982faa1fe2c60d92131c7", "type": "github" }, "original": { @@ -102,11 +135,11 @@ ] }, "locked": { - "lastModified": 1771756436, - "narHash": "sha256-Tl2I0YXdhSTufGqAaD1ySh8x+cvVsEI1mJyJg12lxhI=", + "lastModified": 1772330611, + "narHash": "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=", "owner": "nix-community", "repo": "home-manager", - "rev": "5bd3589390b431a63072868a90c0f24771ff4cbb", + "rev": "58fd7ff0eec2cda43e705c4c0585729ec471d400", "type": "github" }, "original": { @@ -149,11 +182,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1771848320, - "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", + "lastModified": 1773122722, + "narHash": "sha256-FIqHByVqxCprNjor1NqF80F2QQoiiyqanNNefdlvOg4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2fc6539b481e1d2569f25f8799236694180c0993", + "rev": "62dc67aa6a52b4364dd75994ec00b51fbf474e50", "type": "github" }, "original": { @@ -169,9 +202,51 @@ "gtkbar": "gtkbar", "home-manager": "home-manager", "nixpkgs": "nixpkgs_3", + "rust-app-menu": "rust-app-menu", "zen-browser": "zen-browser" } }, + "rust-app-menu": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1775253460, + "narHash": "sha256-If2c4Jpo1B6PCzSo2/qONmL5rmdQrVyO7wnojpmMg/0=", + "path": "/home/jack/Projects/rust-app-menu", + "type": "path" + }, + "original": { + "path": "/home/jack/Projects/rust-app-menu", + "type": "path" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "rust-app-menu", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775099554, + "narHash": "sha256-3xBsGnGDLOFtnPZ1D3j2LU19wpAlYefRKTlkv648rU0=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "8d6387ed6d8e6e6672fd3ed4b61b59d44b124d99", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -202,6 +277,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "zen-browser": { "inputs": { "home-manager": "home-manager_2", @@ -210,11 +300,11 @@ ] }, "locked": { - "lastModified": 1772085492, - "narHash": "sha256-1o9qkvOI/ThFDgEbW4Q4GVK7aV+traAIWSqP7gom7/0=", + "lastModified": 1773290887, + "narHash": "sha256-L1yMYmFffHfZNP+hKJGRBmrFKkn/VDhu7jEbVftBQuM=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "6577a70551b52ef35138e5d8b87a35d40b14eeeb", + "rev": "9346698c4562819f61b4e5097151ec0b17729fab", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7efc5fa..e3f0e71 100755 --- a/flake.nix +++ b/flake.nix @@ -1,58 +1,60 @@ { - description = "Nixos config flake"; + description = "Nixos config flake"; - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - gtkapps.url = "github:JackMechem/gtkapps"; - gtkbar.url = "github:JackMechem/gtkbar"; - # midirun.url = "path:/home/jack/Projects/midirun"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + gtkapps.url = "github:JackMechem/gtkapps"; + gtkbar.url = "github:JackMechem/gtkbar"; + # midirun.url = "path:/home/jack/Projects/midirun"; - zen-browser = { - url = "github:0xc000022070/zen-browser-flake"; - # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure - # to have it up-to-date or simply don't specify the nixpkgs input - inputs.nixpkgs.follows = "nixpkgs"; - }; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - server-dash = { - url = "path:/home/jack/Projects/server-dash"; - }; - server-dash-api = { - url = "path:/home/jack/Projects/server-dash-api"; - }; + zen-browser = { + url = "github:0xc000022070/zen-browser-flake"; + # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure + # to have it up-to-date or simply don't specify the nixpkgs input + inputs.nixpkgs.follows = "nixpkgs"; }; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + server-dash = { + url = "path:/home/jack/Projects/server-dash"; + }; + server-dash-api = { + url = "path:/home/jack/Projects/server-dash-api"; + }; + rust-app-menu.url = "path:/home/jack/Projects/rust-app-menu"; + rust-app-menu.inputs.nixpkgs.follows = "nixpkgs"; + }; - outputs = - { self, nixpkgs, ... }@inputs: - { - # use "nixos", or your hostname as the name of the configuration - # it's a better practice than "default" shown in the video - nixosConfigurations.t480 = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./hosts/t480/configuration.nix - inputs.home-manager.nixosModules.default - ]; - }; - nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./hosts/desktop/configuration.nix - inputs.home-manager.nixosModules.default - #inputs.midirun.nixosModules.default - ]; - }; - nixosConfigurations.dellserv = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./hosts/dellserv/configuration.nix - inputs.home-manager.nixosModules.default - inputs.server-dash.nixosModules.default - inputs.server-dash-api.nixosModules.default - ]; - }; - }; + outputs = + { self, nixpkgs, ... }@inputs: + { + # use "nixos", or your hostname as the name of the configuration + # it's a better practice than "default" shown in the video + nixosConfigurations.t480 = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/t480/configuration.nix + inputs.home-manager.nixosModules.default + ]; + }; + nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/desktop/configuration.nix + inputs.home-manager.nixosModules.default + #inputs.midirun.nixosModules.default + ]; + }; + nixosConfigurations.dellserv = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/dellserv/configuration.nix + inputs.home-manager.nixosModules.default + inputs.server-dash.nixosModules.default + inputs.server-dash-api.nixosModules.default + ]; + }; + }; } diff --git a/hosts/t480/configuration.nix b/hosts/t480/configuration.nix index c20f713..ebd8ad6 100644 --- a/hosts/t480/configuration.nix +++ b/hosts/t480/configuration.nix @@ -1,78 +1,106 @@ { - config, - lib, - pkgs, - inputs, - ... + config, + lib, + pkgs, + inputs, + ... }: { - imports = [ - ./hardware-configuration.nix - inputs.home-manager.nixosModules.default - ../../modules/nixos/gtkapps.nix - ../../modules/nixos/gtkbar.nix - ../../modules/nixos/fonts.nix - ../../modules/nixos/system-packages.nix - ../../modules/nixos/user-jack.nix - ../../modules/nixos/sound.nix - ../../modules/nixos/syncthing.nix + imports = [ + ./hardware-configuration.nix + inputs.home-manager.nixosModules.default + ../../modules/nixos/gtkapps.nix + ../../modules/nixos/gtkbar.nix + ../../modules/nixos/fonts.nix + ../../modules/nixos/system-packages.nix + ../../modules/nixos/user-jack.nix + ../../modules/nixos/sound.nix + ../../modules/nixos/syncthing.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + networking.hostName = "t480"; + networking.networkmanager.enable = true; + + nix.settings = { + # Use all cores for building + cores = 0; # 0 = use all available cores + max-jobs = "auto"; + + # Binary caches — fetch pre-built packages instead of compiling + substituters = [ + "https://cache.nixos.org" + "https://nix-community.cachix.org" # useful for rust-overlay, lix, etc. + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "nix-community.cachix.org-1:mB9FSh9qf2dde0enLeymSlflN93qlwkTnNQsGbLFPzU=" ]; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + # Avoid redundant downloads + http-connections = 128; + http2 = true; - boot.kernelPackages = pkgs.linuxPackages_latest; + # Keep build dependencies around so incremental builds are faster + keep-outputs = true; + keep-derivations = true; - networking.hostName = "t480"; - networking.networkmanager.enable = true; - - nix.settings.experimental-features = [ - "nix-command" - "flakes" + # Experimental features (you likely already have these) + experimental-features = [ + "nix-command" + "flakes" ]; + }; - time.timeZone = "America/Los_Angeles"; + time.timeZone = "America/Los_Angeles"; - # Enable CUPS to print documents. - services.printing.enable = true; + # Enable CUPS to print documents. + services.printing.enable = true; - services.dbus.enable = true; + services.dbus.enable = true; - programs.zsh.enable = true; + programs.zsh.enable = true; - programs.thunar.enable = true; + programs.thunar.enable = true; - programs.dconf.enable = true; + programs.dconf.enable = true; - nixpkgs.config.allowUnfree = true; + nixpkgs.config.allowUnfree = true; - virtualisation.docker.enable = true; + virtualisation.docker.enable = true; - services.gtkapps.enable = true; - services.gtkbar.enable = true; + # services.gtkapps.enable = true; + services.gtkbar.enable = true; + environment.systemPackages = [ + inputs.rust-app-menu.packages.${pkgs.system}.default + ]; - xdg.portal = { - enable = true; - wlr.enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - xdg-desktop-portal-hyprland - xdg-desktop-portal-gnome - ]; + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-hyprland + xdg-desktop-portal-gnome + ]; + }; + + home-manager = { + extraSpecialArgs = { inherit inputs; }; + users = { + "jack" = import ./home.nix; }; + }; - home-manager = { - extraSpecialArgs = { inherit inputs; }; - users = { - "jack" = import ./home.nix; - }; - }; + services.libinput.enable = true; - services.libinput.enable = true; + services.openssh.enable = true; - services.openssh.enable = true; - - system.stateVersion = "25.05"; + system.stateVersion = "25.05"; } diff --git a/modules/home-manager/homepackages.nix b/modules/home-manager/homepackages.nix index 9a600b5..1b28501 100644 --- a/modules/home-manager/homepackages.nix +++ b/modules/home-manager/homepackages.nix @@ -1,36 +1,39 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - ### Desktop Stuff - pkgs.sway-contrib.grimshot - waypaper - hyprpaper - swaybg + home.packages = with pkgs; [ + ### Desktop Stuff + pkgs.sway-contrib.grimshot + waypaper + hyprpaper + swaybg - ### Audio - playerctl - spotify - pavucontrol + ### Audio + playerctl + spotify + pavucontrol - ### Chat apps - lunar-client - discord - zoom-us + ### Chat apps + lunar-client + discord + zoom-us - ### Random Libraries and Dependencies - gtk3 - glib - zlib - deno + ### Random Libraries and Dependencies + gtk3 + glib + zlib + deno - ### System Monitoring Tools - mission-center - htop + ### System Monitoring Tools + mission-center + htop - ### Development Tools - jetbrains.idea - jetbrains-toolbox - jdk - gnumake - ]; + ### Development Tools + jetbrains.idea + jetbrains-toolbox + jdk + gnumake + + ### Note taking tools + obsidian + ]; } diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix index 9112108..30c87ea 100644 --- a/modules/home-manager/hyprland.nix +++ b/modules/home-manager/hyprland.nix @@ -32,6 +32,7 @@ exec-once = [ "waypaper --restore" "gtkbar" + "rust-app-menu" "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "solaar -w hide" ]; @@ -39,7 +40,7 @@ # --- Variables --- "$terminal" = "ghostty"; "$fileManager" = "thunar"; - "$menu" = "gtkapps"; + "$menu" = "rust-app-menu"; env = [ "XCURSOR_SIZE,24" @@ -51,7 +52,7 @@ kb_layout = "us"; kb_options = "caps:escape"; follow_mouse = 1; - mouse_refocus = false; + mouse_refocus = true; touchpad = { natural_scroll = "no"; }; @@ -75,6 +76,12 @@ allow_tearing = false; }; + # --- Fix Zoom --- + windowrule = [ + "match:class ^(zoom)$, no_follow_mouse 1" + "match:class ^(zoom)$, suppress_event maximize" + ]; + # --- Decoration --- decoration = { rounding = 12;