diff --git a/flake.lock b/flake.lock index 4ad7575..d92c70b 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1747864449, - "narHash": "sha256-PIjVAWghZhr3L0EFM2UObhX84UQxIACbON0IC0zzSKA=", + "lastModified": 1749155310, + "narHash": "sha256-t0HfHg/1+TbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "389372c5f4dc1ac0e7645ed29a35fd6d71672ef5", + "rev": "94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1748080874, - "narHash": "sha256-sUebEzAkrY8Aq5G0GHFyRddmRNGP/a2iTtV7ISNvi/c=", + "lastModified": 1749223974, + "narHash": "sha256-/GAQYRW1duU81KG//2wI9ax8EkHVG/e1UOD97NdwLOY=", "owner": "catppuccin", "repo": "nix", - "rev": "0ba11b12be81f0849a89ed17ab635164ea8f0112", + "rev": "3a42cd79c647360ee8742659e42aeec0947dd3b4", "type": "github" }, "original": { @@ -117,15 +117,37 @@ ] }, "locked": { - "lastModified": 1748925027, - "narHash": "sha256-BJ0qRIdvt5aeqm3zg/5if7b5rruG05zrSX3UpLqjDRk=", + "lastModified": 1749243446, + "narHash": "sha256-P1gumhZN5N9q+39ndePHYrtwOwY1cGx+VoXGl+vTm7A=", "owner": "nix-community", "repo": "home-manager", - "rev": "cb809ec1ff15cf3237c6592af9bbc7e4d983e98c", + "rev": "2d7d65f65b61fdfce23278e59ca266ddd0ef0a36", "type": "github" }, "original": { "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager-stable": { + "inputs": { + "nixpkgs": [ + "nixpkgs-stable" + ] + }, + "locked": { + "lastModified": 1749154018, + "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.05", "repo": "home-manager", "type": "github" } @@ -146,11 +168,11 @@ ] }, "locked": { - "lastModified": 1745948457, - "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "lastModified": 1749155331, + "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", "type": "github" }, "original": { @@ -175,11 +197,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1749145600, + "narHash": "sha256-v2kY5RDk9oyo1x9m8u83GdklC96xlJ7ka1rrvZoYL78=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "80b754e38e836777ad3a9d5d1ffc3491b0332471", "type": "github" }, "original": { @@ -204,11 +226,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1748888571, - "narHash": "sha256-iyZNR6VSJ4zlJ3hMt8+c3MHNeQrXDjsdwFlHdKDxc9A=", + "lastModified": 1749237813, + "narHash": "sha256-TDJHaf01IpP3dN+CC/GGuKRLPLFS9w4v9BufplyJkSY=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "b1d0a727cc594e5329c5971d73391c7529e1c80e", + "rev": "2794f485cb5d52b3ff572953ddcfaf7fd3c25182", "type": "github" }, "original": { @@ -229,11 +251,11 @@ ] }, "locked": { - "lastModified": 1743714874, - "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", "type": "github" }, "original": { @@ -261,11 +283,11 @@ ] }, "locked": { - "lastModified": 1737634706, - "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", "owner": "hyprwm", "repo": "hyprland-qt-support", - "rev": "8810df502cdee755993cb803eba7b23f189db795", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", "type": "github" }, "original": { @@ -297,11 +319,11 @@ ] }, "locked": { - "lastModified": 1745951494, - "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "lastModified": 1749155776, + "narHash": "sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "rev": "396e8aa1c06274835b69da7f9a015fff9a9b7522", "type": "github" }, "original": { @@ -326,11 +348,11 @@ ] }, "locked": { - "lastModified": 1747484975, - "narHash": "sha256-+LAQ81HBwG0lwshHlWe0kfWg4KcChIPpnwtnwqmnoEU=", + "lastModified": 1749145882, + "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "163c83b3db48a17c113729c220a60b94596c9291", + "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", "type": "github" }, "original": { @@ -351,11 +373,11 @@ ] }, "locked": { - "lastModified": 1746635225, - "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "lastModified": 1749135356, + "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", "type": "github" }, "original": { @@ -376,11 +398,11 @@ ] }, "locked": { - "lastModified": 1747584298, - "narHash": "sha256-PH9qZqWLHvSBQiUnA0NzAyQA3tu2no2z8kz0ZeHWj4w=", + "lastModified": 1749145760, + "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "e511882b9c2e1d7a75d45d8fddd2160daeafcbc3", + "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", "type": "github" }, "original": { @@ -405,13 +427,29 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-stable": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1749086602, + "narHash": "sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "4792576cb003c994bd7cc1edada3129def20b27d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1748929857, + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", "type": "github" }, "original": { @@ -423,11 +461,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1748693115, - "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", + "lastModified": 1749143949, + "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", + "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", "type": "github" }, "original": { @@ -446,11 +484,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1748935843, - "narHash": "sha256-ZTbwljoJXgkGAPlYz0GIcNiXQNfPFHe2A0Dqe9KDyPA=", + "lastModified": 1749246388, + "narHash": "sha256-Dwwn4G27Tb3ErlErOThqXI+bIJ3usoHogzmFE20XgBw=", "owner": "nix-community", "repo": "NUR", - "rev": "032af0a65aa867a6209718033995f5ba73fee543", + "rev": "b867f29b2dd10e29477a15aebc4c3f6354ca723d", "type": "github" }, "original": { @@ -509,8 +547,10 @@ "inputs": { "catppuccin": "catppuccin", "home-manager": "home-manager", + "home-manager-stable": "home-manager-stable", "hyprland": "hyprland", "nixpkgs": "nixpkgs_3", + "nixpkgs-stable": "nixpkgs-stable", "nur": "nur", "plasma-manager": "plasma-manager" } @@ -579,11 +619,11 @@ ] }, "locked": { - "lastModified": 1745871725, - "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "lastModified": 1749155346, + "narHash": "sha256-KIkJu3zF8MF3DuGwzAmo3Ww9wsWXolwV30SjJRTAxYE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "rev": "44bf29f1df45786098920c655af523535a9191ae", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6e3eabe..6f2f12e 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ }; catppuccin.url = "github:catppuccin/nix"; home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland.url = "github:hyprwm/Hyprland"; @@ -19,67 +19,95 @@ inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; + + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05"; + home-manager-stable = { + url = "github:nix-community/home-manager/release-25.05"; + inputs.nixpkgs.follows = "nixpkgs-stable"; + }; }; outputs = { self, - nixpkgs, catppuccin, nur, - home-manager, plasma-manager, ... - } @ inputs: { - # Please replace my-nixos with your hostname - nixosConfigurations = { - anzu = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + } @ inputs: let + hosts = import ./hosts/hosts.nix; + + # Make config for non-NixOS hosts + mkHomeConfiguration = { + host, + nixpkgs, + home-manager, + modules ? [], + }: + home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { + system = host.arch; + config = { + allowUnfree = true; + }; + overlays = [ + nur.overlay + ]; + }; + modules = + [ + ./hosts/${host.dir}/home.nix + catppuccin.homeModules.catppuccin + ] + ++ modules; + }; + + # Make config for NixOS hosts + mkNixOSConfigurations = { + host, + nixpkgs, + home-manager, + modules ? [], + }: + nixpkgs.lib.nixosSystem { + system = host.arch; specialArgs = {inherit inputs;}; - modules = [ - # Import the previous configuration.nix we used, - # so the old configuration file still takes effect - ./configuration.nix - ./hosts/anzu/hardware-configuration.nix - # Add NUR overlay - nur.modules.nixos.default - # Add catppuccin - catppuccin.nixosModules.catppuccin - # Add home-manager - home-manager.nixosModules.home-manager - { - home-manager.backupFileExtension = "backup"; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager]; - home-manager.users.chase = { - imports = [ - ./home/home.nix + modules = + [ + ./hosts/${host.dir}/configuration.nix + nur.modules.nixos.default + catppuccin.nixosModules.catppuccin + home-manager.nixosModules.home-manager + { + home-manager.backupFileExtension = "backup"; + home-manager.useGlobalPkgs = true; + home-manager.users."${host.user}".imports = [ + ./hosts/${host.dir}/home.nix catppuccin.homeModules.catppuccin ]; - }; + } + ] + ++ modules; + }; + in { + # Please replace my-nixos with your hostname + nixosConfigurations = { + "anzu" = mkNixOSConfigurations { + host = hosts.anzu; + nixpkgs = inputs.nixpkgs; + home-manager = inputs.home-manager; + modules = [ + { + home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager]; } ]; }; - ichigo = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = {inherit inputs;}; + "ichigo" = mkNixOSConfigurations { + host = hosts.ichigo; + nixpkgs = inputs.nixpkgs; + home-manager = inputs.home-manager; modules = [ - ./configuration.nix - ./hosts/ichigo/hardware-configuration.nix - nur.modules.nixos.default - catppuccin.nixosModules.catppuccin - home-manager.nixosModules.home-manager { - home-manager.backupFileExtension = "backup"; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager]; - home-manager.users.chase = { - imports = [ - ./home/home.nix - catppuccin.homeModules.catppuccin - ]; - }; } ]; }; diff --git a/home/base.nix b/home/base.nix new file mode 100644 index 0000000..dc7589c --- /dev/null +++ b/home/base.nix @@ -0,0 +1,183 @@ +{ + config, + pkgs, + ... +}: { + home = { + username = "chase"; + homeDirectory = "/home/chase"; + preferXdgDirectories = true; + file = { + "scripts" = { + source = config.lib.file.mkOutOfStoreSymlink ./scripts; + recursive = true; + }; + }; + sessionPath = [ + "$HOME/scripts" + ]; + shellAliases = { + gs = "git status"; + "..." = "cd ../.."; + }; + }; + + xdg = { + enable = true; + userDirs.enable = true; + configFile = { + "emacs/early-init.el" = { + source = config.lib.file.mkOutOfStoreSymlink ./emacs/early-init.el; + }; + "emacs/init.el" = { + source = config.lib.file.mkOutOfStoreSymlink ./emacs/init.el; + }; + }; + }; + + catppuccin = { + enable = true; + flavor = "mocha"; + }; + + programs.bash = { + enable = true; + enableCompletion = true; + bashrcExtra = '' + export SSH_AUTH_SOCK=/home/chase/.bitwarden-ssh-agent.sock + ''; + historyIgnore = [ + "ls" + "ls -a" + "ls -l" + "ls -la" + "cd" + "exit" + ]; + }; + + programs.bat.enable = true; + + programs.fastfetch = { + enable = true; + settings = { + logo = { + source = "nixos_small"; + }; + display = { + size = { + binaryPrefix = "si"; + }; + color = "blue"; + separator = ": "; + }; + modules = [ + "title" + "separator" + "os" + "host" + "uptime" + "kernel" + "packages" + "lm" + "de" + "wm" + "shell" + "terminal" + "terminalfont" + { + key = "Display"; + type = "display"; + } + "cpu" + "gpu" + "memory" + "swap" + "disk" + "datetime" + "colors" + "break" + "player" + "media" + ]; + }; + }; + + programs.git = { + enable = true; + userName = "chase"; + userEmail = "chase@cathoderaytube.net"; + extraConfig = { + init.defaultBranch = "main"; + }; + }; + + programs.git-credential-oauth.enable = true; + + programs.gpg = { + enable = true; + homedir = "${config.xdg.dataHome}/gnupg"; + }; + + programs.htop.enable = true; + + programs.ranger.enable = true; + + programs.rmpc = { + enable = true; + config = '' + ( + enable_config_hot_reload: true, + ) + ''; + }; + + # programs.senpai.enable = true; + + # programs.sm64ex.enable = true; + + programs.starship = { + enable = true; + enableBashIntegration = true; + settings = { + line_break = { + disabled = true; + }; + username = { + style_user = "bold blue"; + format = "[$user]($style)@"; + show_always = true; + }; + hostname = { + style = "bold cyan"; + format = "[$ssh_symbol$hostname]($style) "; + ssh_only = false; + }; + directory = { + style = "bold green"; + }; + }; + }; + + programs.texlive.enable = true; + + programs.yazi = { + enable = true; + enableBashIntegration = true; + }; + + programs.yt-dlp = { + enable = true; + settings = { + embed-thumbnail = true; + }; + }; + + home.packages = with pkgs; [ + ffmpeg + fortune + imagemagick + lolcat + nerd-fonts.blex-mono + ]; +} diff --git a/home/home.nix b/home/desktop.nix similarity index 57% rename from home/home.nix rename to home/desktop.nix index 8dd70b1..f435477 100644 --- a/home/home.nix +++ b/home/desktop.nix @@ -4,115 +4,14 @@ ... }: { imports = [ - ./plasma.nix + ./base.nix ]; - home = { - username = "chase"; - homeDirectory = "/home/chase"; - preferXdgDirectories = true; - stateVersion = "24.11"; - file = { - "scripts" = { - source = config.lib.file.mkOutOfStoreSymlink ./scripts; - recursive = true; - }; - }; - sessionPath = [ - "$HOME/scripts" - ]; - shellAliases = { - gs = "git status"; - "..." = "cd ../.."; - }; - }; - - xdg = { - enable = true; - userDirs.enable = true; - configFile = { - "emacs/early-init.el" = { - source = config.lib.file.mkOutOfStoreSymlink ./emacs/early-init.el; - }; - "emacs/init.el" = { - source = config.lib.file.mkOutOfStoreSymlink ./emacs/init.el; - }; - }; - }; - - catppuccin = { - enable = true; - flavor = "mocha"; - }; - - programs.bash = { - enable = true; - enableCompletion = true; - bashrcExtra = '' - export SSH_AUTH_SOCK=/home/chase/.bitwarden-ssh-agent.sock - ''; - historyIgnore = [ - "ls" - "ls -a" - "ls -l" - "ls -la" - "cd" - "exit" - ]; - }; - - programs.bat.enable = true; - programs.emacs = { enable = true; package = pkgs.emacs-pgtk; }; - programs.fastfetch = { - enable = true; - settings = { - logo = { - source = "nixos_small"; - }; - display = { - size = { - binaryPrefix = "si"; - }; - color = "blue"; - separator = ": "; - }; - modules = [ - "title" - "separator" - "os" - "host" - "uptime" - "kernel" - "packages" - "lm" - "de" - "wm" - "shell" - "terminal" - "terminalfont" - { - key = "Display"; - type = "display"; - } - "cpu" - "gpu" - "memory" - "swap" - "disk" - "datetime" - "colors" - "break" - "player" - "media" - ]; - }; - }; - programs.firefox = { enable = true; nativeMessagingHosts = [pkgs.firefoxpwa]; @@ -210,24 +109,6 @@ }; }; - programs.git = { - enable = true; - userName = "chase"; - userEmail = "chase@cathoderaytube.net"; - extraConfig = { - init.defaultBranch = "main"; - }; - }; - - programs.git-credential-oauth.enable = true; - - programs.gpg = { - enable = true; - homedir = "${config.xdg.dataHome}/gnupg"; - }; - - programs.htop.enable = true; - programs.kitty = { enable = true; enableGitIntegration = true; @@ -251,87 +132,21 @@ programs.obs-studio.enable = true; - programs.ranger.enable = true; - - programs.rmpc = { - enable = true; - config = '' - ( - enable_config_hot_reload: true, - ) - ''; - }; - - # programs.senpai.enable = true; - - # programs.sm64ex.enable = true; - - programs.starship = { - enable = true; - enableBashIntegration = true; - settings = { - line_break = { - disabled = true; - }; - username = { - style_user = "bold blue"; - format = "[$user]($style)@"; - show_always = true; - }; - hostname = { - style = "bold cyan"; - format = "[$ssh_symbol$hostname]($style) "; - ssh_only = false; - }; - directory = { - style = "bold green"; - }; - }; - }; - - programs.texlive.enable = true; - - programs.waybar = { - enable = true; - systemd = { - enable = true; - target = "hyprland-session.target"; - }; - }; - - programs.yazi = { - enable = true; - enableBashIntegration = true; - }; - - programs.yt-dlp = { - enable = true; - settings = { - embed-thumbnail = true; - }; - }; - home.packages = with pkgs; [ anki-bin audacity - ffmpeg - fortune gimp ibm-plex - imagemagick kdePackages.kdenlive libnotify libreoffice logiops - lolcat - nerd-fonts.blex-mono picard protonmail-bridge thunderbird vcv-rack runelite ]; - services.arrpc.enable = true; services.emacs = { @@ -347,18 +162,6 @@ defaultEditor = true; }; - services.hyprpolkitagent.enable = true; - - services.hyprsunset.enable = true; - - services.hyprpaper = { - enable = true; - settings = { - preload = ["/home/chase/nixos-config/home/wallpaper.jpg"]; - wallpaper = ["/home/chase/nixos-config/home/wallpaper.jpg"]; - }; - }; - services.mako.enable = true; services.mpd = { @@ -388,11 +191,4 @@ enable = true; mpd.useLocal = true; }; - - wayland.windowManager.hyprland = { - enable = true; - package = null; - portalPackage = null; - systemd.enable = true; - }; } diff --git a/home/hypr.nix b/home/hypr.nix new file mode 100644 index 0000000..7a8e951 --- /dev/null +++ b/home/hypr.nix @@ -0,0 +1,32 @@ +{ + config, + pkgs, + ... +}: { + programs.waybar = { + enable = true; + systemd = { + enable = true; + target = "hyprland-session.target"; + }; + }; + + services.hyprpolkitagent.enable = true; + + services.hyprsunset.enable = true; + + services.hyprpaper = { + enable = true; + settings = { + preload = ["/home/chase/nixos-config/home/wallpaper.jpg"]; + wallpaper = ["/home/chase/nixos-config/home/wallpaper.jpg"]; + }; + }; + + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + systemd.enable = true; + }; +} diff --git a/hosts/anzu/configuration.nix b/hosts/anzu/configuration.nix new file mode 100644 index 0000000..1948ba4 --- /dev/null +++ b/hosts/anzu/configuration.nix @@ -0,0 +1,21 @@ +{ + config, + pkgs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ../../nixos/desktop.nix + ]; + + hardware.graphics = { + extraPackages = with pkgs; [ + amdvlk + ]; + extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + }; + + system.stateVersion = "24.11"; +} diff --git a/hosts/anzu/home.nix b/hosts/anzu/home.nix new file mode 100644 index 0000000..469e193 --- /dev/null +++ b/hosts/anzu/home.nix @@ -0,0 +1,13 @@ +{ + config, + pkgs, + ... +}: { + imports = [ + ../../home/desktop.nix + ../../home/hypr.nix + ../../home/plasma.nix + ]; + + home.stateVersion = "24.11"; +} diff --git a/hosts/hosts.nix b/hosts/hosts.nix new file mode 100644 index 0000000..5092352 --- /dev/null +++ b/hosts/hosts.nix @@ -0,0 +1,22 @@ +let + user = "chase"; +in { + anzu = { + hostname = "anzu"; + dir = "anzu"; + arch = "x86_64-Linux"; + user = user; + }; + ichigo = { + hostname = "ichigo"; + dir = "ichigo"; + arch = "x86_64-Linux"; + user = user; + }; + kuromi = { + hostname = "kuromi"; + dir = "kuromi"; + arch = "x86_64-Linux"; + user = user; + }; +} diff --git a/hosts/ichigo/configuration.nix b/hosts/ichigo/configuration.nix new file mode 100644 index 0000000..1948ba4 --- /dev/null +++ b/hosts/ichigo/configuration.nix @@ -0,0 +1,21 @@ +{ + config, + pkgs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ../../nixos/desktop.nix + ]; + + hardware.graphics = { + extraPackages = with pkgs; [ + amdvlk + ]; + extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + }; + + system.stateVersion = "24.11"; +} diff --git a/hosts/ichigo/home.nix b/hosts/ichigo/home.nix new file mode 100644 index 0000000..469e193 --- /dev/null +++ b/hosts/ichigo/home.nix @@ -0,0 +1,13 @@ +{ + config, + pkgs, + ... +}: { + imports = [ + ../../home/desktop.nix + ../../home/hypr.nix + ../../home/plasma.nix + ]; + + home.stateVersion = "24.11"; +} diff --git a/nixos/base.nix b/nixos/base.nix new file mode 100644 index 0000000..2967dc4 --- /dev/null +++ b/nixos/base.nix @@ -0,0 +1,156 @@ +{ + config, + pkgs, + lib, + inputs, + ... +}: { + # Bootloader. + boot.loader.systemd-boot = { + enable = true; + configurationLimit = 10; + }; + boot.loader.efi.canTouchEfiVariables = true; + + # Garbage collection + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 1w"; + }; + + # Optimize store + nix.settings.auto-optimise-store = true; + + # Allow power management + powerManagement.enable = true; + + # Firmware updates + services.fwupd.enable = true; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/New_York"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "C.UTF-8"; + }; + + # Catppuccin + catppuccin = { + enable = true; + flavor = "mocha"; + }; + + # Configure keymap + console.keyMap = "jp106"; + + services.xserver.xkb = { + layout = lib.mkDefault "jp"; + model = "jp106"; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable Flakes + nix.settings.experimental-features = ["nix-command" "flakes"]; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # Bash config + programs.bash = { + blesh.enable = true; + }; + + # Define a user account + users.users.chase = { + isNormalUser = true; + description = "Chase"; + extraGroups = ["networkmanager" "wheel"]; + }; + + # Install git and enable cache + programs.git = { + enable = true; + config = { + init = { + defaultBranch = "main"; + }; + credential = { + helper = "cache --timeout 21600"; + }; + }; + }; + + # Install Neovim + programs.neovim = { + enable = true; + defaultEditor = true; + configure = { + customRC = '' + set autoindent + set number relativenumber + set tabstop=4 + colorscheme catppuccin-mocha + ''; + packages.myVimPackage = with pkgs.vimPlugins; { + start = [catppuccin-nvim]; + }; + }; + viAlias = true; + vimAlias = true; + }; + + # List packages installed in system profile. + environment.systemPackages = with pkgs; [ + alejandra + bitwarden-cli + cifs-utils + flashrom + gcc + nixd + pciutils + python3 + qemu + rustup + usbutils + wget + ]; + + nix.nixPath = ["nixpkgs=${inputs.nixpkgs}"]; + + # ssh agent + # programs.mtr.enable = true; + programs.gnupg.agent.enable = true; + + programs.ssh = { + enableAskPassword = false; + }; + + services.fstrim.enable = lib.mkDefault true; + + # Enable the OpenSSH daemon. + services.openssh = { + enable = true; + settings = { + PermitRootLogin = "no"; + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + }; + }; +} diff --git a/configuration.nix b/nixos/configuration.nix similarity index 100% rename from configuration.nix rename to nixos/configuration.nix diff --git a/nixos/desktop.nix b/nixos/desktop.nix new file mode 100644 index 0000000..8119e3d --- /dev/null +++ b/nixos/desktop.nix @@ -0,0 +1,138 @@ +{ + config, + pkgs, + inputs, + ... +}: { + imports = [ + ./base.nix + ]; + # Use latest stable kernel + boot.kernelPackages = pkgs.linuxPackages_latest; + + # Enable Bluetooth + hardware.bluetooth.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.xserver.enable = true; + services.displayManager.sddm = { + enable = true; + extraPackages = [pkgs.kdePackages.sddm-kcm]; + wayland.enable = true; + enableHidpi = true; + }; + + services.desktopManager.plasma6.enable = true; + environment.plasma6.excludePackages = with pkgs.kdePackages; [ + elisa + kate + ]; + + # Cachix for Hyprland + nix.settings = { + substituters = ["https://hyprland.cachix.org"]; + trusted-substituters = ["https://hyprland.cachix.org"]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + }; + + # Hyprland + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + }; + + # Catppuccin + catppuccin = { + sddm = { + enable = true; + background = "/home/chase/nixos-config/home/wallpaper.jpg"; + flavor = "mocha"; + font = "IBM Plex Sans"; + fontSize = "11"; + }; + }; + + # Enable graphics + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + i18n.inputMethod = { + type = "fcitx5"; + enable = true; + fcitx5.addons = with pkgs; [ + fcitx5-mozc + kdePackages.fcitx5-qt + ]; + fcitx5.waylandFrontend = true; + }; + + # Fonts + fonts = { + packages = with pkgs; [ + ibm-plex + liberation_ttf + nerd-fonts.blex-mono + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + ]; + fontconfig = { + defaultFonts = { + serif = ["IBM Plex Serif"]; + sansSerif = ["IBM Plex Sans"]; + monospace = ["BlexMono Nerd Font"]; + }; + }; + }; + + # Enable sound with pipewire. + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Install firefox + programs.firefox = { + enable = true; + nativeMessagingHosts.packages = [pkgs.firefoxpwa]; + policies = { + DisableTelemetry = true; + DisableFirefoxAccounts = true; + DisableFirefoxStudies = true; + DisablePocket = true; + }; + }; + + # Install Steam + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + + # List packages installed in system profile. + environment.systemPackages = with pkgs; [ + bitwarden-desktop + (catppuccin-kde.override { + flavour = ["mocha"]; + accents = [ + "blue" + "lavender" + "pink" + "sapphire" + ]; + winDecStyles = ["classic"]; + }) + firefoxpwa + ]; + + services.fprintd.enable = true; +}