diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9981d02 --- /dev/null +++ b/flake.nix @@ -0,0 +1,41 @@ +{ + + description = "Autumn's laptop config"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self, nixpkgs, home-manager }@inputs: + + let + username = "autumn"; + system = "x86_64-linux"; + timezone = "America/Denver"; + locale = "en_US.UTF-8"; + + in { + + homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + extraSpecialArgs = {inherit inputs;}; + modules = [ ./home-manager/autumn/home.nix ]; + + }; + + nixosConfigurations."yukigekko" = nixpkgs.lib.nixosSystem{ + specialArgs = { + inherit inputs; + inherit system; + inherit username; + inherit timezone; + inherit locale; + }; + modules = [ + ./system/nixos/configuration.nix + ]; + }; + }; + } diff --git a/home-manager/autumn/home.nix b/home-manager/autumn/home.nix new file mode 100644 index 0000000..a984f40 --- /dev/null +++ b/home-manager/autumn/home.nix @@ -0,0 +1,93 @@ +{ config, lib, pkgs, ... }: + +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "autumn"; + home.homeDirectory = "/home/autumn"; + + programs.home-manager.enable = true; + + home.stateVersion = "25.05"; # Please read the comment before changing. + + nixpkgs.config = { + alowUnfree = true; + allowUnfreePredicate = (_: true); + }; + + home.packages = [ + pkgs.neofetch + pkgs.vscodium-fhs + pkgs.nerd-fonts.hack + pkgs.vesktop + pkgs.obsidian + pkgs.ccls + pkgs.docker-language-server + pkgs.nil + pkgs.ty + pkgs.rustc + pkgs.rustup + pkgs.htop + pkgs.starship + pkgs.gnumake + pkgs.python314Full + pkgs.eza + pkgs.gleam + pkgs.ruff + pkgs.ruby + pkgs.vscode-extensions.castwide.solargraph + pkgs.wideriver + ]; + + programs.htop.enable = true; + programs.starship.enable = true; + programs.bash.initExtra = "fish"; + + wayland.windowManager.river.enable = true; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # Home Manager can also manage your environment variables through + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/autumn/etc/profile.d/hm-session-vars.sh + # + home.sessionVariables = { + EDITOR = "helix"; + TERM = "alacritty"; + }; + + imports = [ + ../packages/fish/fish.nix + ../packages/river/river.nix + ../packages/alacritty/alacritty.nix + ../packages/helix/helix.nix + ../packages/fuzzel/fuzzel.nix + ../packages/waybar/waybar.nix + ../packages/git/git.nix + ../packages/starship/starship.nix + ]; + +} diff --git a/home-manager/configuration.nix b/home-manager/configuration.nix new file mode 100644 index 0000000..d3a2012 --- /dev/null +++ b/home-manager/configuration.nix @@ -0,0 +1,169 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, lib, home-manager, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + + networking.hostName = "yukigekko"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # 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 = "en_US.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + services.desktopManager.plasma6.enable = true; + services.displayManager.sddm.wayland.enable = true; + services.displayManager.sddm.enable = true; + services.flatpak.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = false; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # 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; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.autumn = { + isNormalUser = true; + description = "Autumn"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + # thunderbird + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + programs.seahorse.enable = false; + programs.bash.interactiveShellInit = "fish"; + programs.appimage.enable = true; + programs.openvpn3.enable = true; + + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + + hardware.nvidia = { + modesetting.enable = true; + + powerManagement.enable = false; + + powerManagement.finegrained = false; + + open = false; + + nvidiaSettings = true; + + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + hardware.nvidia.prime.intelBusId = "PCI:0@0:2:0"; + hardware.nvidia.prime.nvidiaBusId = "PCI:1@0:0:0"; + hardware.nvidia.prime.sync.enable = true; + hardware.nvidia.prime.offload.enable = false; + hardware.nvidia.prime.offload.enableOffloadCmd = false; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + pkgs.vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + ]; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.05"; # Did you read the comment? + + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; + qt.platformTheme = "kde6"; +} diff --git a/home-manager/flake.lock b/home-manager/flake.lock new file mode 100644 index 0000000..97bf01d --- /dev/null +++ b/home-manager/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1755625756, + "narHash": "sha256-t57ayMEdV9g1aCfHzoQjHj1Fh3LDeyblceADm2hsLHM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "dd026d86420781e84d0732f2fa28e1c051117b59", + "type": "github" + }, + "original": { + "id": "home-manager", + "type": "indirect" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_2" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home-manager/packages/alacritty/alacritty.nix b/home-manager/packages/alacritty/alacritty.nix new file mode 100644 index 0000000..5278cc1 --- /dev/null +++ b/home-manager/packages/alacritty/alacritty.nix @@ -0,0 +1,44 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ + alacritty +]; + + programs.alacritty = { + enable = true; + settings = { + colors = { + normal = { + black = "#2b3339"; + blue = "#7fbbb3"; + cyan = "#83c092"; + green = "#a7c080"; + magenta = "#d699b6"; + red = "#e67e80"; + white = "#fffff7"; + yellow = "#dbbc7f"; + }; + primary = { + background = "#2b3339"; + bright_foreground = "#fff9dd"; + dim_foreground = "#a09377"; + foreground = "#d3c6aa"; + }; + }; + font = { + italic = { + family = "Hack Nerd Font"; + style = "Regular"; + }; + normal = { + family = "Hack Nerd Font"; + style = "Regular"; + }; + }; + window.padding = {x=15;y=15;}; + }; + }; +} + diff --git a/home-manager/packages/fish/fish.nix b/home-manager/packages/fish/fish.nix new file mode 100644 index 0000000..d8f0eb3 --- /dev/null +++ b/home-manager/packages/fish/fish.nix @@ -0,0 +1,21 @@ +{ config, pkgs, ... }: + +{ + + home.packages = with pkgs; [ + fish + ]; + + programs.fish = { + enable = true; + shellAliases = { + ".." = "cd .."; + "..." = "cd ../.."; + "...." = "cd ../../.."; + "nc" = "~/nixos-servers/conf-editor.sh"; + "ls" = "eza"; + }; + }; + +} + diff --git a/home-manager/packages/fuzzel/fuzzel.nix b/home-manager/packages/fuzzel/fuzzel.nix new file mode 100644 index 0000000..a7fbd98 --- /dev/null +++ b/home-manager/packages/fuzzel/fuzzel.nix @@ -0,0 +1,17 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ + fuzzel +]; + + programs.fuzzel = { + enable = true; + settings = { + + }; + }; + +} + diff --git a/home-manager/packages/git/git.nix b/home-manager/packages/git/git.nix new file mode 100644 index 0000000..100330d --- /dev/null +++ b/home-manager/packages/git/git.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ + git +]; + + programs.git = { + enable = true; + userEmail = "autumnal,musing@gmail.com"; + userName = "notkaori"; + }; + +} + diff --git a/home-manager/packages/helix/helix.nix b/home-manager/packages/helix/helix.nix new file mode 100644 index 0000000..5f10d84 --- /dev/null +++ b/home-manager/packages/helix/helix.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ + helix +]; + + programs.helix = { + enable = true; + settings = {theme = "everforest_dark";}; + }; + +} + diff --git a/home-manager/packages/river/river.nix b/home-manager/packages/river/river.nix new file mode 100644 index 0000000..a1d529e --- /dev/null +++ b/home-manager/packages/river/river.nix @@ -0,0 +1,35 @@ +{ config, pkgs, ... }: + +{ + + home.packages = with pkgs; [ + river + ]; + + + + wayland.windowManager.river = { + enable = true; + settings = { + default-layout = "wideriver"; + map = { + normal = { + "Super Return" = "spawn alacritty"; + "Alt Q" = "close"; + "Super J" = "focus-view next"; + "Super K" = "focus-view previous"; + "Super+Shift J" = "swap next"; + "Super+Shift K" = "swap previous"; + + }; + }; + extraConfig = " + `` + wideriver -view-padding 6 -outer-padding 6 & + `` + "; + }; + }; + +} + diff --git a/home-manager/packages/starship/starship.nix b/home-manager/packages/starship/starship.nix new file mode 100644 index 0000000..120904a --- /dev/null +++ b/home-manager/packages/starship/starship.nix @@ -0,0 +1,19 @@ +{ config, pkgs, ... }: + +{ + + home.packages = with pkgs;[ + starship + ]; + + xdg.configFile."starship.toml".source = ./starship.toml; + + programs.starship = { + enable = true; + enableFishIntegration = true; + }; + + + +} + diff --git a/home-manager/packages/starship/starship.toml b/home-manager/packages/starship/starship.toml new file mode 100644 index 0000000..24b5b8e --- /dev/null +++ b/home-manager/packages/starship/starship.toml @@ -0,0 +1,137 @@ +add_newline = true + + +format = """ +[](#D52D00)\ +$username\ +[](bg:#EF7627 fg:#D52D00)\ +$directory\ +[](fg:#EF7627 bg:#FF9A56)\ +$git_branch\ +$git_status\ +[](fg:#FF9A56 bg:#D162A4)\ +$c\ +$python\ +$elixir\ +$elm\ +$golang\ +$haskell\ +$java\ +$julia\ +$nodejs\ +$nim\ +$rust\ +[](fg:#D162A4 bg:#B55690)\ +$docker_context\ +[](fg:#B55690 bg:#A30262)\ +$time\ +[ ](fg:#A30262)\ +\n +""" + +# Disable the blank line at the start of the prompt +# add_newline = false + +# You can also replace your username with a neat symbol like  to save some space +[username] +show_always = true +style_user = "bg:#D52D00" +style_root = "bg:#D52D00" +format = '[$user ]($style)' + +[directory] +style = "bg:#EF7627" +format = "[ $path ]($style)" +truncation_length = 3 +truncation_symbol = "…/" + +# Here is how you can shorten some long paths by text replacement +# similar to mapped_locations in Oh My Posh: +[directory.substitutions] +"Documents" = " " +"Downloads" = " " +"Music" = " " +"Pictures" = " " +# Keep in mind that the order matters. For example: +# "Important Documents" = "  " +# will not be replaced, because "Documents" was already substituted before. +# So either put "Important Documents" before "Documents" or use the substituted version: +# "Important  " = "  " + +[c] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[docker_context] +symbol = " " +style = "fg:#666666 bg:#06969a" +format = '[[ $symbol $context ](fg:#666666 bg:#06969A)]($style) $path' + +[elixir] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[elm] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[git_branch] +symbol = "" +style = "fg:#666666 bg:#FF9A56" +format = '[[ $symbol $branch ](fg:#666666 bg:#FF9A56)]($style)' + +[git_status] +style = "fg:#666666 bg:#FF9A56" +format = '[[($all_status$ahead_behind )](fg:#666666 bg:#FF9A56)]($style)' + +[golang] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[haskell] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[java] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[julia] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[nodejs] +symbol = "" +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[nim] +symbol = " " +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[rust] +symbol = "" +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[ruby] +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ $symbol ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[python] +style = "fg:#d3c6aa bg:#D162A4" +format = '[[ Py ($version) ](fg:#d3c6aa bg:#D162A4)]($style)' + +[time] +disabled = false +time_format = "%R" # Hour:Minute Format +style = "fg:#d3c6aa bg:#A30262" +format = '[[ ♥ $time ](bg:#A30262)]($style)' diff --git a/home-manager/packages/template.nix b/home-manager/packages/template.nix new file mode 100644 index 0000000..2a0cfd4 --- /dev/null +++ b/home-manager/packages/template.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ +]; + + programs. = { + enable = true; + + }; + +} + diff --git a/home-manager/packages/waybar/waybar.nix b/home-manager/packages/waybar/waybar.nix new file mode 100644 index 0000000..0a0c571 --- /dev/null +++ b/home-manager/packages/waybar/waybar.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + +home.packages = with pkgs; [ + waybar +]; + + programs.waybar = { + enable = true; + settings = {}; +# style = {}; + }; + +} + diff --git a/system/nixos/configuration.nix b/system/nixos/configuration.nix new file mode 100644 index 0000000..0120b31 --- /dev/null +++ b/system/nixos/configuration.nix @@ -0,0 +1,153 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, lib, home-manager, timezone, username, system, locale, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + + networking.hostName = "yukigekko"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "${timezone}"; + + # Select internationalisation properties. + i18n.defaultLocale = "${locale}"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "${locale}"; + LC_IDENTIFICATION = "${locale}"; + LC_MEASUREMENT = "${locale}"; + LC_MONETARY = "${locale}"; + LC_NAME = "${locale}"; + LC_NUMERIC = "${locale}"; + LC_PAPER = "${locale}"; + LC_TELEPHONE = "${locale}"; + LC_TIME = "${locale}"; + }; + + + services.displayManager.sddm.wayland.enable = true; + services.displayManager.sddm.enable = true; + programs.river.enable = true; + + services.flatpak.enable = true; + xdg.portal = { + enable = true; + config.common.default = "*"; + extraPortals = [ + pkgs.kdePackages.xdg-desktop-portal-kde + ]; + }; + + services.printing.enable = true; + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.autumn = { + isNormalUser = true; + description = "Autumn"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + # Install firefox. + programs.firefox.enable = true; + programs.bash.interactiveShellInit = "fish"; + programs.appimage.enable = true; + programs.openvpn3.enable = true; + + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + + hardware.nvidia = { + modesetting.enable = true; + + powerManagement.enable = false; + + powerManagement.finegrained = false; + + open = false; + + nvidiaSettings = true; + + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + hardware.nvidia.prime.intelBusId = "PCI:0@0:2:0"; + hardware.nvidia.prime.nvidiaBusId = "PCI:1@0:0:0"; + hardware.nvidia.prime.sync.enable = true; + hardware.nvidia.prime.offload.enable = false; + hardware.nvidia.prime.offload.enableOffloadCmd = false; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + pkgs.vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + ]; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.05"; # Did you read the comment? + + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; + qt.platformTheme = "kde6"; +} diff --git a/system/nixos/flake.nix b/system/nixos/flake.nix new file mode 100644 index 0000000..c6e65a7 --- /dev/null +++ b/system/nixos/flake.nix @@ -0,0 +1,24 @@ +{ + description = "Autumn's laptop config"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs, home-manager }: + let + username = "autumn"; + system = "x86_64-linux"; + in { + homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ + ./configuration.nix + /home/${username}/.config/home-manager/home.nix + ]; + }; + + + + }; + } diff --git a/system/nixos/hardware-configuration.nix b/system/nixos/hardware-configuration.nix new file mode 100644 index 0000000..a4f3545 --- /dev/null +++ b/system/nixos/hardware-configuration.nix @@ -0,0 +1,41 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/764f812a-99d9-4754-9704-ead067694ff9"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B495-E52C"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/c9790e7a-e972-44fe-a6f0-160af701a4b7"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp3s0f1.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}