From 59c97c9143cbf89125dbb0cf932ca18984384d57 Mon Sep 17 00:00:00 2001 From: nest Date: Mon, 8 Dec 2025 20:30:22 -0500 Subject: [PATCH] First pass at crazy --- configuration.nix | 95 ------------------ flake.nix | 81 ++++++++++++--- home-manager/common/default.nix | 25 +++++ .../roles/desktop/common/apps/default.nix | 6 ++ .../roles/desktop/common/apps/librewolf.nix | 80 +++++++++++++++ .../roles/desktop/common/apps/minecraft.nix | 7 ++ home-manager/roles/desktop/common/default.nix | 10 ++ home-manager/roles/desktop/common/nest.webp | Bin 0 -> 3450 bytes home-manager/roles/desktop/niri/default.nix | 22 ++++ home-manager/roles/personal/default.nix | 15 +++ home.nix | 72 ------------- hosts/physical/crow/default.nix | 25 +++++ .../physical/crow/hardware-configuration.nix | 0 hosts/physical/crow/system-configuration.nix | 15 +++ hosts/physical/default.nix | 56 +++++++++++ nixos/common/default.nix | 23 +++++ nixos/modules/home-manager.nix | 22 ++++ nixos/modules/zsh.nix | 40 ++++++++ nixos/roles/physical/desktop/niri/default.nix | 11 ++ users/nest.nix | 14 +++ 20 files changed, 437 insertions(+), 182 deletions(-) delete mode 100644 configuration.nix create mode 100644 home-manager/common/default.nix create mode 100644 home-manager/roles/desktop/common/apps/default.nix create mode 100644 home-manager/roles/desktop/common/apps/librewolf.nix create mode 100644 home-manager/roles/desktop/common/apps/minecraft.nix create mode 100644 home-manager/roles/desktop/common/default.nix create mode 100644 home-manager/roles/desktop/common/nest.webp create mode 100644 home-manager/roles/desktop/niri/default.nix create mode 100644 home-manager/roles/personal/default.nix delete mode 100644 home.nix create mode 100644 hosts/physical/crow/default.nix rename hardware-configuration.nix => hosts/physical/crow/hardware-configuration.nix (100%) create mode 100644 hosts/physical/crow/system-configuration.nix create mode 100644 hosts/physical/default.nix create mode 100644 nixos/common/default.nix create mode 100644 nixos/modules/home-manager.nix create mode 100644 nixos/modules/zsh.nix create mode 100644 nixos/roles/physical/desktop/niri/default.nix create mode 100644 users/nest.nix diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index c5f191e..0000000 --- a/configuration.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - # Use latest kernel. - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.kernelModules = [ "amdgpu" ]; - - networking.hostName = "crow"; # Define your hostname. - - # Configure network connections interactively with nmcli or nmtui. - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/New_York"; - - users.defaultUserShell = pkgs.zsh; - - users.users.nest = { - isNormalUser = true; - extraGroups = [ "wheel" "network" ]; # Enable ‘sudo’ for the user. - - packages = with pkgs; [ - tree - ]; - }; - - programs.niri.enable = true; - programs.zsh.enable = true; - - environment.systemPackages = with pkgs; [ - neovim - wget - ]; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - services.openssh.enable = true; - - # Enable sound. - services.pipewire = { - enable = true; - pulse.enable = true; - }; - - # Enable touchpad support (enabled default in most desktopManager). - services.libinput.enable = true; - - services.getty.autologinUser = "nest"; - - services.displayManager = { - gdm.enable = true; - autoLogin = { - enable = true; - user = "nest"; - }; - }; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "25.11"; # Did you read the comment? -} - diff --git a/flake.nix b/flake.nix index 3ef1d9f..5233fb8 100644 --- a/flake.nix +++ b/flake.nix @@ -10,21 +10,72 @@ }; }; - outputs = inputs@{ nixpkgs, home-manager, ... }: { - nixosConfigurations.crow = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix + outputs = { self, nixpkgs, ... }@inputs: + let + inherit (self) outputs; - home-manager.nixosModules.home-manager { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - users.nest = import ./home.nix; - backupFileExtension = "backup"; - }; - } - ]; - }; + # Set the default user. Can be overitten on a system level + vars.user = "nest"; + + # List of system types our hosts use + systems = [ "x86_64-linux" ]; + + # Generic NixOS config + mkNixOSConfig = { + path, + extraModules ? [], + }: + nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs outputs vars; + }; + + modules = [ + ./nixos/common + path + ] + ++ extraModules; + }; + + # Additional modules for physical hosts + mkPhysicalNixOSConfig = path: + mkNixOSConfig { + path = path; + extraModules = [ ./hosts/physical ]; + }; + + # Additional modules for servers + # mkServerNixOSConfig = path: serverType: + # mkNixOSConfig { + # path = path; + # extraModules = [ + # ./hosts/server + # ./nixos/roles/server/${serverType} + # ./nixos/modules/backup + # ]; + # }; + in { + # Format our nix files using alejandra + formatter = nixpkgs.lib.genAttrs systems (system: nixpkgs.legacyPackages.${system}.alejandra); + + # Collection of all of our configs + # =========== Desktops =========== + crow = mkPhysicalNixOSConfig ./hosts/physical/crow; + + # nixosConfigurations.crow = nixpkgs.lib.nixosSystem { + # system = "x86_64-linux"; + # modules = [ + # ./configuration.nix + + # home-manager.nixosModules.home-manager { + # home-manager = { + # useGlobalPkgs = true; + # useUserPackages = true; + # users.nest = import ./home.nix; + # backupFileExtension = "backup"; + # }; + # } + # ]; + # }; }; } diff --git a/home-manager/common/default.nix b/home-manager/common/default.nix new file mode 100644 index 0000000..57e2d3e --- /dev/null +++ b/home-manager/common/default.nix @@ -0,0 +1,25 @@ +{ + pkgs, + inputs, + vars, + ... +}: + +{ + home = { + username = "${vars.user}"; + homeDirectory = "/home/${vars.user}"; + }; + + home.packages = with pkgs; [ + lazygit + ]; + + programs.zsh = { + shellAliases = { + lg = "lazygit"; + }; + }; + + home.stateVersion = "26.05"; +} diff --git a/home-manager/roles/desktop/common/apps/default.nix b/home-manager/roles/desktop/common/apps/default.nix new file mode 100644 index 0000000..20e6350 --- /dev/null +++ b/home-manager/roles/desktop/common/apps/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./librewolf.nix + ./minecraft.nix + ]; +} diff --git a/home-manager/roles/desktop/common/apps/librewolf.nix b/home-manager/roles/desktop/common/apps/librewolf.nix new file mode 100644 index 0000000..bc35081 --- /dev/null +++ b/home-manager/roles/desktop/common/apps/librewolf.nix @@ -0,0 +1,80 @@ +{ pkgs, vars, ... }: + + +{ + programs.librewolf = { + enable = true; + policies = { + OfferToSaveLogins = false; + PasswordManagerEnabled = false; + DisplayBookmarksToolbar = true; + NoDefaultBookmarks = true; + }; + + profiles."${vars.user}" = { + search = { + force = true; + engines = { + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages?channel=unstable"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@np"]; + }; + "Nix Options" = { + urls = [ + { + template = "https://search.nixos.org/options?channel=unstable"; + params = [ + { + name = "sort"; + value = "alpha_asc"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@no"]; + }; + "NixOS Wiki" = { + urls = [ + { + template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; + } + ]; + icon = "https://nixos.wiki/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = ["@nw"]; + }; + "Home Manager Options" = { + urls = [{template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";}]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@hm"]; + }; + "wikipedia".metaData.alias = "@wiki"; + "google".metaData.hidden = true; + "amazondotcom-us".metaData.hidden = true; + "bing".metaData.hidden = true; + "ebay".metaData.hidden = true; + }; + }; + }; + }; +} diff --git a/home-manager/roles/desktop/common/apps/minecraft.nix b/home-manager/roles/desktop/common/apps/minecraft.nix new file mode 100644 index 0000000..ceb08cd --- /dev/null +++ b/home-manager/roles/desktop/common/apps/minecraft.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + prismlauncher + ]; +} diff --git a/home-manager/roles/desktop/common/default.nix b/home-manager/roles/desktop/common/default.nix new file mode 100644 index 0000000..8c91202 --- /dev/null +++ b/home-manager/roles/desktop/common/default.nix @@ -0,0 +1,10 @@ +{ + imports = [ + ./apps + ]; + + # Setup user profile pic + home.file.".face" = { + source = ./nest.webp; + }; +} diff --git a/home-manager/roles/desktop/common/nest.webp b/home-manager/roles/desktop/common/nest.webp new file mode 100644 index 0000000000000000000000000000000000000000..c9052d136f336e14820a082a8b8ee50e6be2c82e GIT binary patch literal 3450 zcmV-=4TbVjNk&F;4FCXFMM6+kP&goF4FCWzHUOOgDu4ih06uLll0~EMN-%l|Au->iybe^C6O}o$E-@N3r8@qG=RpFnEZ*hB($|@sW z!~WaN4)^{kY6bZ3@{jf2jejrO002Ka{ z=mY6b{eS1a0zaF7W&gSU6WcS`@9kH!KkX0y^%0ZzcvxLW)8^vEa()VX^A{3qA%2buMsgpv`OF@`iffK(8$eq4G+lBInKXwLiFhExKqzO#`LTvFLekaeD#$5fXnV?FY&mCPmjvc|Xod3AsgI2`>=7(FxF2X4 z5CH!A`j&d)&xQI;yp3xJ`p5Iu6`%>~=7mvLdVgxvOS@4Yg-iKkH0+OeWZzPtzIQwQ zJlm3l(>@kiJpBIdy~lc1XaydJz*FWZ8EL0?V*YoDzR`3EzG2|~&LDw&PeNl*PXh+o zA{F$^j6*yLlPEMBc|XqP^S(#kAi>Be|-yJlt@m0){0;MU5_J;l~t+arQa}k zG>z#^BS^jRME@!~zkHvS#ok&Q{J-=1gRf_;|1bRgUY@rQ4EPCjSF(oie9i~R;ccsH z=?(UynSmx~arY9GbI^Sm?o7lH6b&vBgYult7zc)&OUDI;%<0k8fl$NV4%kJ^Mr59Z zETVBk%nUZArwv6Ys{w(Y3LYu27?t7HIt3yXbao#D9w$}P8=02IOG5$=MqSk@qkP>y zYSwRcoMi+_J+DYcbE;W0T*!<@EWG|Fk84jYntwDYfS6@;dG=?fb}yM|SJ^*9Ef-76 z2%b;HZMAq-Uk6)!$m8aMPwk>IM-b+(x-W^PSrQ?${Lp5c$g?6J(KwDKb4U%z8An3> z*X)1swlF=@8p+>LPe;tkF^kxNeZ~a(ieEt zMH@6Ek+;wGC7CMCJ%KQmkj!D`Vm%uGwc$Mi=2ZW?LnG}1=B}1^tFTV=8Y0ifjsIYw zQ5A23(4N4k;=c{VSKcy`xA9qKMxVq8Ufj5Mg-YHzmENQlb4S0ASL2BB*?QsmY2l-$ zg8*d!nN9w*+zB-ge!@&mXlp0*7Z_KkhQ#fm%-+)S$8b`x5`jZ4wfHeO<@l}j$D;kj z#Mbt`O4Ny0V`BZ0V$WWcw}9+`fpYvY*5yUPmuAaeWvAF|Qpk5Y%N=!WU!rci0|%99 zW-`pDlwi|xL`>gcLFJI9ca6A%L{(cbad;igZQNSzrY-EA_}LcR(ZUQYd*xLyq*oIHU7`vUc>oRFX(Ac!}4+Ubs0e1gb)73 zVYEAEq_r|*$LQ8?I3qEZJlVm9+xQO=%az)xC=<+jGBMSV+*m7#H4xwCTPUZkNF!A{fZYShJRjQpswB zoWGB4+hZo?Tba%DAyhOD4T@q=As!#3r76*>eBw|OwcBDwASIb(QJ@q~rj{r%W$S%k z|72o&*;#(*x9?x71%rqtb@KX3j~_>Thz2}f1a|~n^J0@mugixy)m0jH@@NBD{otTh*-jA8CTtN0xCUSt2mK}r>7H#F?jluPZEtK=8e6fU9r+X+ zfj(ZqD0}MpwZ*Cd(nw*RM1q<9x9E?i6hQiF(cgPmX%tORGRjvPJn6`Zqz`g_4B)D$ zPD%(sKcny?&MfO+mHou`3PnQ)l9pwse{oOiZq_0a2B-1kL3K0ajrpxPlF<%j40UpgP+{HE}6>0%ZOB}H=MLX+6%*k=OH!uHQYc!(9b&0Co3!AdXNiLLp&^di zN73@IiVDdG6pTzz%Ks+|hPh(K)G(_(;<%d3+@j3~ch0n9Q z)ty7$+BYU5qarTOM!!|Oh;7}NP=fD|zx0lJ*Ab%U9Ar zK2FOvxUHA)t|@$Q>;3LFritX*A*F0I`HUeMZfo#j6(&PfE!|CI$(M;b*hX%Y7Eu!Y z$9CRqEYNZ?4ariN@7sC)VBijqG_K5w&_QJ(n!bd|D|qANCEhG8Qz#4MML-aW_tsQd znxEnhr*OG08F%Z`^`J4pAxk15bI-@$Mqm8Ubqx5lmW1tLzP_I`Rs9#Hm43hPQxZuX zX*kh}_c-lAqIdg#2>dv4PmOGrx9YZ|t=UD0+~NZ74c5cY$o^nQ2#?eZ|4D?(EYQVL4||?Ehda=j8zFX7OJvl>*Z2lJ zs)T{hj&(WR=@;XM$}ghrKZk%*;scw-FCog>>z5!?A80i=ufzBG?Pi<+=i?@&cepbr z1=z&#OW^>ZsuS@s_~})ReKDBVr>z$4-Jk!DKyb`zU(OFmN&)qg+R}FLQ=YOqi@5fV zV1->x&H}qHf{>L3*aHcr}#z_H6Um#y0->68*2SB<-qBS#$C|fnl>$ad94N zN3*~d1LP?SuDo2+DE!)KUsU2|g%xQEtl{F(`pP=b4Tfy6FqiPV9a=CB6&;SEYg%ow zD9=PcJ&VWht*#yX=)RkmMm^5c4`C?}7Kg*=`dVXweT5A<$?40~|NHZGTe&iKCQl^|%Gt$DfVZ9dsyk$TDd-A5W!4K4c=6 zRl9_ly)hTmL9XgP+ASPNYN(Y&3<*)QcwVZRi~iVN{%!v0^QxCK*mj9ie+s?vPF5l` zV;uVYS2g26Uu;~PH7~9hj9cGkRgYECx(37wj9C0kdRU{{PFP+T=yGj0Y&{0-6Y${J`zXx5v&@F?k3aXz1y3(mNt#la`xr3_L*4 z8uoIyd@?T0&Q|lp)WtD}L7Sg>ue+EdOm@g3X)vSbn=?~;Y$`AVJmu3 zT6(HDW;y_1Y?XHh#ec)&Ru!)2!p2_#;tO0PdoVp>8WGe0dT25tWe43H^J=J2QwG`T4l&G} zjUzgw>l2nB#m|PnL2*G><)20Mdos4GhL)52N)#QZ0A@~p|Mj(wE8x~9si!P^j^%o@ z`etw8Z{7=VsDx}q*jhFastdLily;*$E cNCr3y8V$Aj<%~m?ia($$00aeRv`UNs0K=ui$^ZZW literal 0 HcmV?d00001 diff --git a/home-manager/roles/desktop/niri/default.nix b/home-manager/roles/desktop/niri/default.nix new file mode 100644 index 0000000..fd96b1d --- /dev/null +++ b/home-manager/roles/desktop/niri/default.nix @@ -0,0 +1,22 @@ +{ pkgs, ... }: + +{ + imports = [ + ../common/apps + ]; + + programs.niri.enable = true; + + programs.zsh = { + profileExtra = '' + if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then + exec gdm + fi + ''; + }; + + home.package = with pkgs; [ + swaybg + mako + ]; +} diff --git a/home-manager/roles/personal/default.nix b/home-manager/roles/personal/default.nix new file mode 100644 index 0000000..f213d01 --- /dev/null +++ b/home-manager/roles/personal/default.nix @@ -0,0 +1,15 @@ +{ + pkgs, + ... +}: + +{ + programs.git = { + enable = true; + userName = "KnightArtorias"; + userEmail = "booksandpi@gmail.com"; + extraConfig = { + init.defaultBranch = "main"; + }; + }; +} diff --git a/home.nix b/home.nix deleted file mode 100644 index 365be73..0000000 --- a/home.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ config, pkgs, ... }: - -{ - # ============ Home-Manager ============= - - home.username = "nest"; - home.homeDirectory = "/home/nest"; - - home.stateVersion = "26.05"; - - # ======================================= - - # ================ Programs ============= - - programs.git = { - enable = true; - settings = { - user = { - name = "nest"; - email = "booksandpi@gmail.com"; - }; - }; - }; - - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - history.size = 10000; - - shellAliases = { - ll = "ls -la"; - update = "sudo nixos-rebuild --flake $HOME/.nix#crow"; - }; - - profileExtra = '' - if [-z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then - exec gdm - fi - ''; - - oh-my-zsh = { - enable = true; - plugins = [ "git" ]; - }; - }; - - programs.alacritty.enable = true; - programs.rofi.enable = true; - programs.swaylock.enable = true; - programs.quickshell.enable = true; - programs.librewolf.enable = true; - - # ====================================== - - # ============== Services ============== - - services.swayidle.enable = true; - services.polkit-gnome.enable = true; - - # ====================================== - - # ============ Packages ================ - - home.packages = with pkgs; [ - swaybg - mako - ]; - - # ====================================== -} diff --git a/hosts/physical/crow/default.nix b/hosts/physical/crow/default.nix new file mode 100644 index 0000000..f409832 --- /dev/null +++ b/hosts/physical/crow/default.nix @@ -0,0 +1,25 @@ +{ + vars, + inputs, + ... +}: + +{ + imports = [ + ./hardware-configuration.nix + ./system-configuration.nix + ../default.nix + + ../../../nixos/roles/physical/desktop/niri + ]; + + home-manager = { + users.${vars.user}.imports = [ + ../../../home-manager/common + ../../../home-manager/roles/personal + ../../../home-manager/roles/desktop/niri + ]; + }; + + networking.hostName = "crow"; +} diff --git a/hardware-configuration.nix b/hosts/physical/crow/hardware-configuration.nix similarity index 100% rename from hardware-configuration.nix rename to hosts/physical/crow/hardware-configuration.nix diff --git a/hosts/physical/crow/system-configuration.nix b/hosts/physical/crow/system-configuration.nix new file mode 100644 index 0000000..10d8cf2 --- /dev/null +++ b/hosts/physical/crow/system-configuration.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: + +{ + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.timeout = 1; + + # Use latest kernel + boot.kernelPackages = pkgs.linuxPackages_latest; + boot.kernelModules = [ "amdgpu" ]; + + system.stateVersion = "26.05"; +} + diff --git a/hosts/physical/default.nix b/hosts/physical/default.nix new file mode 100644 index 0000000..6e0e226 --- /dev/null +++ b/hosts/physical/default.nix @@ -0,0 +1,56 @@ +{ + pkgs, + inputs, + vars, + ... +}: + +{ + imports = [ + inputs.home-manager.nixosModules.home-manager + ../../nixos/modules/home-manager.nix + ]; + + # Enable networking + networking.networkmanager.enable = true; + + environment.systemPackages = with pkgs; [ + neovim + wget + ]; + + services.openssh.enable = true; + services.getty.autologinUser = "${vars.user}"; + + boot = { + # Fun boot spinny! + plymouth = { + enable = true; + theme = "circle_flow"; + themePackages = with pkgs; [ + (adi1090x-plymouth-themese.override { + selected_themes = [ + "cirlce_flow" + "colorful" + "colorful_slices" + "double" + "polaroid" + ]; + }) + ]; + }; + + # "Silent" boot + console.LogLevel = 0; + initrd.verbose = false; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + }; +} diff --git a/nixos/common/default.nix b/nixos/common/default.nix new file mode 100644 index 0000000..7ba497d --- /dev/null +++ b/nixos/common/default.nix @@ -0,0 +1,23 @@ +{ + inputs, + pkgs, + vars, + ... +}: + +{ + imports= [ + ../../users/${vars.user}.nix + ../modules/zsh.nix + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + enviroment.systemPackages = with pkgs; [ + tree + htop + dig + traceroute + ]; +} + diff --git a/nixos/modules/home-manager.nix b/nixos/modules/home-manager.nix new file mode 100644 index 0000000..4361e74 --- /dev/null +++ b/nixos/modules/home-manager.nix @@ -0,0 +1,22 @@ +{ + inputs, + vars, + ... +}: + +{ + home-manager = { + backupFileExtension = "backup"; + extraSpecialArgs = { + inherit inputs vars; + }; + + useGlobalPackages = true; + useUserPackages = true; + + # Common home-manager imports + users.${vars.user}.imports = [ + ../../home-manager/common + ]; + }; +} diff --git a/nixos/modules/zsh.nix b/nixos/modules/zsh.nix new file mode 100644 index 0000000..8ff687a --- /dev/null +++ b/nixos/modules/zsh.nix @@ -0,0 +1,40 @@ +{ + pgks, + ... +}: + +{ + environment.systemPackage = with pkgs; [ + zsh + oh-my-zsh + ]; + + enviroment.variables = { + NIX_FLAKE_PATH = "/etc/nixos"; + }; + + programs.zsh = { + enable = true; + enableBashCompletion = true; + enableConpletion = true; + autosuggestions.enable = true; + history.append = true; + history.size = 10000; + + ohMyZsh = { + enable = true; + theme = "bira"; + plugins = [ + sudo + git + ]; + }; + + shellAliases = { + ll = "ls -la"; + update = "sudo nixos-rebuild switch --flake $NIX_FLAKE_PATH"; + }; + }; + + users.defaultUserShell = pkgs.zsh; +} diff --git a/nixos/roles/physical/desktop/niri/default.nix b/nixos/roles/physical/desktop/niri/default.nix new file mode 100644 index 0000000..42ac2b4 --- /dev/null +++ b/nixos/roles/physical/desktop/niri/default.nix @@ -0,0 +1,11 @@ +{ vars, pkgs, ... }: { + security.polkit.enable = true; + + services.displayManager = { + gdm.enable = true; + autoLogin = { + enable = true; + user = "${vars.user}"; + }; + }; +} diff --git a/users/nest.nix b/users/nest.nix new file mode 100644 index 0000000..8313231 --- /dev/null +++ b/users/nest.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: + +{ + users.users.nest = { + description = "nest"; + isNormalUser = true; + extraGroups = [ "wheel" "network" ]; + }; +} +