diff --git a/configuration.nix b/configuration.nix index d607a41..c606e0c 100644 --- a/configuration.nix +++ b/configuration.nix @@ -110,6 +110,7 @@ code-cursor adwaita-icon-theme obsidian + claude-code ]; # Some programs need SUID wrappers, can be configured further or are @@ -216,18 +217,9 @@ # security.pki.certificateFiles = [ /etc/nixos/certs/ipa-ca.crt ]; - programs.hyprland = { - enable = true; - withUWSM = true; # Recommended for NixOS 24.11+ - xwayland.enable = true; - }; - # Enable necessary services xdg.portal = { enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-hyprland - ]; }; security.pam.services = { @@ -244,15 +236,34 @@ RUN+="${pkgs.systemd}/bin/loginctl lock-sessions" ''; + # Optimize shutdown handling to prevent user manager hangs + # Reduce timeout for user manager service during shutdown (default is 90s, reducing to 30s) + # This prevents the 2-minute hang when shutting down with linger enabled + systemd.services."user@".serviceConfig = { + TimeoutStopSec = "30s"; + }; + # Reduce default timeout for all user services + systemd.user.extraConfig = '' + DefaultTimeoutStopSec=30s + ''; + # Gnome Configuration fonts.packages = [ pkgs.adwaita-icon-theme pkgs.nerd-fonts._0xproto ]; fonts.fontconfig.enable = true; - services.gnome.core-apps.enable = false; - services.gnome.core-developer-tools.enable = false; - services.gnome.games.enable = false; + services.gnome = { + core-apps.enable = true; + core-developer-tools.enable = true; + games.enable = false; + }; + + services.desktopManager.gnome.extraGSettingsOverrides = '' + [org.gnome.mutter] + experimental-features=['scale-monitor-framebuffer', 'xwayland-native-scaling'] + ''; + environment.gnome.excludePackages = with pkgs; [ gnome-tour gnome-user-docs ]; @@ -263,5 +274,15 @@ style = "adwaita-dark"; }; + + security.wrappers = { + # Low-level unprivileged sandboxing tool, see . + bwrap = { + owner = "root"; + group = "root"; + source = "${pkgs.bubblewrap}/bin/bwrap"; + setuid = true; + }; + }; } diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..1fe054b --- /dev/null +++ b/flake.lock @@ -0,0 +1,117 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "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" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1771531206, + "narHash": "sha256-1R3Wx6KUkMb4x4E5UOhW9p6rqiexzSGGWxZqSHqW5n0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "91be7cce763fa4022c7cf025a71b0c366d1b6e77", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "kickstart-nvim": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1771545825, + "narHash": "sha256-xGrTr8aXGzKBpF+RRwnLR8y8yDweojaoqttfA6RH1ws=", + "owner": "0xWheatyz", + "repo": "kickstart.nvim", + "rev": "cef178c27d1b3840d943f5a28b3a45f9eae049d7", + "type": "github" + }, + "original": { + "owner": "0xWheatyz", + "repo": "kickstart.nvim", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0182a361324364ae3f436a63005877674cf45efb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0182a361324364ae3f436a63005877674cf45efb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "kickstart-nvim": "kickstart-nvim", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 4c55c86..0305c5b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,47 +1,25 @@ { - description = "FrostPhoenix's nixos configuration"; + description = "Home Manager configuration with kickstart.nvim"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - nur.url = "github:nix-community/NUR"; - + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - - nix-gaming.url = "github:fufexan/nix-gaming"; - nix-flatpak.url = "github:gmodena/nix-flatpak"; - - nix-index-database = { - url = "github:nix-community/nix-index-database"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - maple-mono = { - url = "github:subframe7536/maple-font/variable"; - flake = false; - }; - - superfile.url = "github:yorukot/superfile"; - vicinae.url = "github:vicinaehq/vicinae"; - zen-browser.url = "github:0xc000022070/zen-browser-flake/beta"; + kickstart-nvim.url = "github:0xWheatyz/kickstart.nvim"; }; - outputs = { self, nixpkgs, home-manager, ... }: { - nixosConfigurations = { - yourhostname = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + outputs = { nixpkgs, home-manager, kickstart-nvim, ... }: { + homeConfigurations = { + "l-wyatt" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; + modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.yourusername = import ./home.nix; - } + ./home.nix + kickstart-nvim.homeManagerModules.default ]; }; }; }; -}` +} diff --git a/home.nix b/home.nix index d9f16ff..c8880ba 100644 --- a/home.nix +++ b/home.nix @@ -114,30 +114,34 @@ }; }; - # Neovim management - programs.neovim = { - enable = true; - defaultEditor = true; + # Neovim management - using kickstart.nvim via flake + # Basic fallback config (uncomment if not using the flake) + #programs.neovim = { + # enable = true; + # defaultEditor = true; + # + # # Load Lua config inline + # extraLuaConfig = '' + # vim.opt.number = true + # vim.opt.tabstop = 2 + # vim.opt.shiftwidth = 2 + # vim.opt.expandtab = true + # vim.opt.relativenumber = true + # + # require("telescope").setup {} + # require("nvim-treesitter.configs").setup { highlight = { enable = true } } + # ''; + # + # plugins = with pkgs.vimPlugins; [ + # telescope-nvim + # nvim-treesitter + # nvim-lspconfig + # gruvbox + # ]; + #}; - # Load Lua config inline - extraLuaConfig = '' - vim.opt.number = true - vim.opt.tabstop = 2 - vim.opt.shiftwidth = 2 - vim.opt.expandtab = true - vim.opt.relativenumber = true - - require("telescope").setup {} - require("nvim-treesitter.configs").setup { highlight = { enable = true } } - ''; - - plugins = with pkgs.vimPlugins; [ - telescope-nvim - nvim-treesitter - nvim-lspconfig - gruvbox - ]; - }; + # Use kickstart.nvim configuration from flake + programs.neovim-kickstart.enable = true; programs.ssh = { enable = true;