From c897f66375d28aca1a13bdb3d278f178443b9581 Mon Sep 17 00:00:00 2001 From: alydev Date: Tue, 23 Sep 2025 18:28:17 +1000 Subject: [PATCH] Init --- .gitignore | 1 + Justfile | 27 ++++++++++++++++ flake.lock | 49 +++++++++++++++++++++++++++++ flake.nix | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ home.nix | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 250 insertions(+) create mode 100644 .gitignore create mode 100644 Justfile create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..577b0a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +hardware-configuration.nix diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..51526ea --- /dev/null +++ b/Justfile @@ -0,0 +1,27 @@ +up: + nix flake update + +deploy: + nixos-rebuild switch --flake . --use-remote-sudo + +debug: + nixos-rebuild switch --flake . --use-remote-sudo --show-trace --verbose + +# Update specific input +# usage: make upp i=home-manager +upp: + nix flake update $(i) + +history: + nix profile history --profile /nix/var/nix/profiles/system + +repl: + nix repl -f flake:nixpkgs + +clean: + # remove all generations older than 7 days + sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d + +gc: + # garbage collect all unused nix store entries + sudo nix-collect-garbage --delete-old diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..ce4a9c4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,49 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1758346548, + "narHash": "sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..721347d --- /dev/null +++ b/flake.nix @@ -0,0 +1,92 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; + home-manager = { + url = "github:nix-community/home-manager/release-25.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ nixpkgs, home-manager, ... }: { + nixosConfigurations = { + aly-laptop = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./hardware-configuration.nix + ({ config, pkgs, ... }: { + networking.hostName = "aly-laptop"; + services.logind = { + lidSwitch = "suspend"; + lidSwitchDocked = "ignore"; + lidSwitchExternalPower = "ignore"; + }; + }) + ({ config, pkgs, ... }: { + system.stateVersion = "25.05"; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + environment.systemPackages = with pkgs; [ + just + git + vim + wget + obs-studio + ]; + environment.variables.EDITOR = "vim"; + security.sudo.wheelNeedsPassword = false; + + networking.networkmanager.enable = true; + + services.flatpak.enable = true; + services.pulseaudio.enable = false; + services.pipewire = { + enable = true; + pulse.enable = true; + }; + time.timeZone = "Australia/Brisbane"; + users.users.aly = { + isNormalUser = true; + description = "aly"; + hashedPassword = "$y$j9T$Q.yFJjo9LMA8o.7Ac5uSr/$Y8pYIPSzCXHSd4nAlUohaaohwpquK6XEIjxFKq3J4s/"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + # Enable the OpenSSH daemon. + services.openssh = { + enable = true; + settings = { + X11Forwarding = true; + PermitRootLogin = "no"; # disable root login + PasswordAuthentication = false; # disable password login + }; + openFirewall = true; + }; + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + }) + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.users.aly = import ./home.nix; + + # Optionally, use home-manager.extraSpecialArgs to pass arguments to home.nix + } + + ({ pkgs, ... }: { + environment.etc."nixos".source = ./.; + }) + ]; + }; + }; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..26fa3e7 --- /dev/null +++ b/home.nix @@ -0,0 +1,81 @@ +{ config, pkgs, ... }: + +{ + home.username = "aly"; + home.homeDirectory = "/home/aly"; + xresources.properties = { + "Xcursor.size" = 16; + "Xft.dpi" = 172; + }; + home.packages = with pkgs; [ + gnome-tweaks + firefox + neofetch + nnn + zip + xz + unzip + p7zip + ripgrep + jq + yq-go + mtr + iperf3 + dnsutils + ldns + aria2 + socat + nmap + ipcalc + file + which + tree + gnused + gnutar + gawk + zstd + gnupg + nix-output-monitor + + btop + iotop + iftop + strace + ltrace + lsof + sysstat + lm_sensors + ethtool + pciutils + usbutils + ]; + programs.git = { + enable = true; + userName = "alydev"; + userEmail = "alyssa.dev.smith@gmail.com"; + }; + + # alacritty - a cross-platform, GPU-accelerated terminal emulator +# programs.alacritty = { +# enable = true; +# # custom settings +# settings = { +# env.TERM = "xterm-256color"; +# font = { +# size = 12; +# draw_bold_text_with_bright_colors = true; +# }; +# scrolling.multiplier = 5; +# selection.save_to_clipboard = true; +# }; +# }; + + programs.bash = { + enable = true; + enableCompletion = true; + bashrcExtra = '' + export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin" + ''; + }; + home.stateVersion = "25.05"; +}