commit 5d1efc4092d8548b2e473f20805e64184c1a105d Author: Sean Kovacs Date: Wed Nov 5 11:51:34 2025 -0500 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2bf06b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +firmware +hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100755 index 0000000..3ac1a30 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,208 @@ +# 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, lib, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + #./apple-silicon-support + ]; + + # Bootloader. + # boot.loader.systemd-boot = { + # enable = true; + # # configurationLimit = null; + # }; + # boot.loader.efi.canTouchEfiVariables = false; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.users.sckova = { + imports = [ + ./home.nix + ]; + }; + + boot = { + loader = { + timeout = 3; + systemd-boot = { + enable = true; + configurationLimit = null; + # consoleMode = "max"; + }; + efi = { + canTouchEfiVariables = false; + }; + }; + # Silent Boot + # https://wiki.archlinux.org/title/Silent_boot + kernelParams = [ + "quiet" + "splash" + "vga=current" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + "boot.shell_on_fail" + "apple_dcp.show_notch=1" + ]; + consoleLogLevel = 0; + # https://github.com/NixOS/nixpkgs/pull/108294 + initrd.verbose = false; + }; + + swapDevices = [{ + device = "/swapfile"; + size = 32000; # 32GB + }]; + + # networking.hostName = "peach"; # 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/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 = "en_US.UTF-8"; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + + services = { + desktopManager.plasma6.enable = true; + displayManager.sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; + libinput.enable = true; + tailscale = { + enable = true; + useRoutingFeatures = "client"; + }; + }; + + # 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; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.sckova = { + isNormalUser = true; + description = "Sean Kovacs"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; + }; + security.sudo.wheelNeedsPassword = false; + + programs.bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment = { + systemPackages = with pkgs; [ + rclone + git + ]; + }; + + fileSystems."/mnt/nas" = { + device = "synology:/home"; + fsType = "rclone"; + options = [ + "nodev" + "nofail" + "allow_other" + "args2env" + "config=/etc/nixos/configs/rclone.conf" + ]; + }; + + + # programs.nix-ld.enable = true; + # programs.nix-ld.libraries = with pkgs; [ + # # Add any missing dynamic libraries for unpackaged programs + # # here, NOT in environment.systemPackages + # ]; + + # 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? + +} + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9e5e604 --- /dev/null +++ b/flake.lock @@ -0,0 +1,106 @@ +{ + "nodes": { + "apple-silicon": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761514810, + "narHash": "sha256-rOEir3x37RRWO+lFia8C9HAThARg+pubRF2hrWQeeEE=", + "owner": "nix-community", + "repo": "nixos-apple-silicon", + "rev": "e01011ebc0aa7a0ae6444a8429e91196addd45f4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixos-apple-silicon", + "type": "github" + } + }, + "catppuccin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762198582, + "narHash": "sha256-P9giW/1Crn7ekQt4YIbONJ/hKFaHkTwyhz82FCjh+OM=", + "owner": "catppuccin", + "repo": "nix", + "rev": "08716214674ca27914daa52e6fa809cc022b581e", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1746162366, + "narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762351818, + "narHash": "sha256-0ptUDbYwxv1kk/uzEX4+NJjY2e16MaAhtzAOJ6K0TG0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "b959c67241cae17fc9e4ee7eaf13dfa8512477ea", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "apple-silicon": "apple-silicon", + "catppuccin": "catppuccin", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..70d4d69 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + description = "My NixOS Configuration"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + catppuccin = { + url = "github:catppuccin/nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + apple-silicon = { + url = "github:nix-community/nixos-apple-silicon"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { nixpkgs, catppuccin, home-manager, apple-silicon, ... }: + let + mkNixosSystem = { name, system, hostModule, extraModules ? [] }: + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit catppuccin; }; + modules = [ + ./configuration.nix + hostModule + catppuccin.nixosModules.catppuccin + home-manager.nixosModules.home-manager + ] ++ extraModules; + }; + + mkHomeConfig = { user, system }: + home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { inherit system; }; + modules = [ + ./home.nix + catppuccin.homeModules.catppuccin + ]; + }; + in + { + nixosConfigurations = { + peach = mkNixosSystem { + name = "peach"; + system = "aarch64-linux"; + hostModule = ./hosts/peach.nix; + extraModules = [ + apple-silicon.nixosModules.default + { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } + ]; + }; + + alien = mkNixosSystem { + name = "alien"; + system = "x86_64-linux"; + hostModule = ./hosts/alien.nix; + }; + }; + + homeConfigurations = { + peach = mkHomeConfig { user = "sckova"; system = "aarch64-linux"; }; + alien = mkHomeConfig { user = "sckova"; system = "x86_64-linux"; }; + }; + }; +} + diff --git a/home.nix b/home.nix new file mode 100755 index 0000000..9fca78e --- /dev/null +++ b/home.nix @@ -0,0 +1,51 @@ +{ config, pkgs, ... }: + +{ + # Home Manager needs a bit of information about you and the + # paths it should manage. + home.username = "sckova"; + home.homeDirectory = "/home/sckova"; + + home.packages = with pkgs; [ + vesktop + fish + gh + adwsteamgtk + prismlauncher + tmux + fastfetch + btop + neovim + killall + wget + ripgrep + kitty + ncdu + fzf + wl-clipboard + + kde-rounded-corners + kdePackages.partitionmanager + ]; + + catppuccin = { + enable = true; + flavor = "mocha"; + firefox = { + force = true; + }; + }; + + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = "25.05"; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/hosts/alien.nix b/hosts/alien.nix new file mode 100644 index 0000000..2c80d0c --- /dev/null +++ b/hosts/alien.nix @@ -0,0 +1,38 @@ +{ config, pkgs, lib, catppuccin, ... }: { + networking.hostName = "alien"; + + catppuccin = { + accent = "lavender"; + }; + + home-manager.users.sckova = { + imports = [ catppuccin.homeModules.catppuccin ]; + }; + + boot.kernelPackages = pkgs.linuxPackages; + + programs = { + gamescope = { + enable = true; + capSysNice = true; + }; + steam = { + enable = true; + gamescopeSession.enable = true; + localNetworkGameTransfers.openFirewall = true; + }; + }; + + services.xserver.videoDrivers = [ + "modesetting" + "nvidia" + ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + nvidiaSettings = true; + package = pkgs.linuxPackages.nvidiaPackages.stable; + }; +} + diff --git a/hosts/peach.nix b/hosts/peach.nix new file mode 100644 index 0000000..126700e --- /dev/null +++ b/hosts/peach.nix @@ -0,0 +1,17 @@ +{ config, pkgs, lib, catppuccin, ... }: { + networking.hostName = "peach"; + + catppuccin = { + accent = "peach"; + }; + + home-manager.users.sckova = { + imports = [ catppuccin.homeModules.catppuccin ]; + }; + + hardware.asahi = { + extractPeripheralFirmware = true; + peripheralFirmwareDirectory = ../firmware; + }; +} +