From 3929746dee861cc11a07542e9ac3093dde2580a7 Mon Sep 17 00:00:00 2001 From: Paul Walko Date: Sat, 14 Mar 2026 14:00:07 -0600 Subject: [PATCH] init commit --- configuration.nix | 192 +++++++++++++++++++++++++++++++++++++ hardware-configuration.nix | 41 ++++++++ qgis.nix | 14 +++ uv2nix.nix | 25 +++++ 4 files changed, 272 insertions(+) create mode 100644 configuration.nix create mode 100644 hardware-configuration.nix create mode 100644 qgis.nix create mode 100644 uv2nix.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..1de042f --- /dev/null +++ b/configuration.nix @@ -0,0 +1,192 @@ +# 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, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix +# ./uv2nix.nix + ./qgis.nix + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Use latest kernel. + boot.kernelPackages = pkgs.linuxPackages_latest; + + networking.hostName = "clover"; # Define your hostname. + networking.extraHosts = + '' + 100.83.140.104 photos.bigcavemaps.com + ''; + # 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"; + }; + + services.blueman.enable = true; + # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + services.fprintd.enable = true; + services.fprintd.tod.enable = true; + services.fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix; + + # 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; + }; + services.tailscale.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.paul = { + isNormalUser = true; + description = "paul"; + extraGroups = [ "dialout" "networkmanager" "wheel" ]; + packages = with pkgs; [ + kdePackages.kate + # thunderbird + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + programs.openvpn3.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; [ + (pass.withExtensions ( + subpkgs: with subpkgs; [ + pass-otp + pass-genphrase + ] + )) + # + asdf-vm + chromium + dig + ffmpeg + gcc + git + gnumake + (gnuradio.override { extraPackages = [ gnuradio.pkgs.osmosdr ]; }) + htop + jq + openscad + openssl + python3 + screen + signal-desktop + speedtest-cli + transmission-remote-gtk + unzip + uv + vim + vscode + wget + whois + wl-clipboard + ]; + + # 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; + }; + programs.nix-ld.enable = true; + + # List services that you want to enable: + services = { + pcscd.enable = true; + udev.packages = [ pkgs.yubikey-personalization ]; + }; + + # 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? + # hardware.pulseaudio.enable = true; + hardware.bluetooth.enable = true; + + security.sudo.wheelNeedsPassword = false; + + systemd.services.openvpn3-autoload = { + enable = true; + wantedBy = [ "multi-user.target" ]; +}; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..b1fcb48 --- /dev/null +++ b/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" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/92d1fae0-5df2-4cbf-b062-22d13e6c5234"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-2bc5f9dd-1260-44b0-96b4-b08b09cf6c25".device = "/dev/disk/by-uuid/2bc5f9dd-1260-44b0-96b4-b08b09cf6c25"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/A754-F01A"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # 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.enp0s31f6.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp82s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/qgis.nix b/qgis.nix new file mode 100644 index 0000000..72e5d39 --- /dev/null +++ b/qgis.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +let + qgis-overlay = final: prev: { + qgis = (builtins.getFlake "github:qgis/QGIS/final-3_44_5").packages.${pkgs.stdenv.hostPlatform.system}.qgis; + }; +in +{ + nixpkgs.overlays = [ qgis-overlay ]; + + environment.systemPackages = with pkgs; [ + qgis + ]; +} diff --git a/uv2nix.nix b/uv2nix.nix new file mode 100644 index 0000000..5cc1ec6 --- /dev/null +++ b/uv2nix.nix @@ -0,0 +1,25 @@ +let + pkgs = import { }; + inherit (pkgs) lib; + + pyproject-nix = import (builtins.fetchGit { + url = "https://github.com/pyproject-nix/pyproject.nix.git"; + }) { + inherit lib; + }; + + uv2nix = import (builtins.fetchGit { + url = "https://github.com/pyproject-nix/uv2nix.git"; + }) { + inherit pyproject-nix lib; + }; + + pyproject-build-systems = import (builtins.fetchGit { + url = "https://github.com/pyproject-nix/build-system-pkgs.git"; + }) { + inherit pyproject-nix uv2nix lib; + }; + +in + ... +