commit cf4e62f998909c50f76b663b63b939029f700bab Author: able Date: Tue Jun 13 03:23:55 2023 -0500 Initial diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..392d530 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,368 @@ +# 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 + + ]; + + boot = { + # Bootloader. + loader = { + #systemd-boot = { + # enable = true; + # set this to false, as it allows gaining root access by passing init=/bin/sh as a kernel parameter. + # However, it is enabled by default for backwards compatibility. + # editor = false; + # Prevent boot partition from running out of space + # configurationLimit = 12; + #}; + #efi={ + # canTouchEfiVariables = true; + # efiSysMountPoint = "/boot/efi"; + #}; + + + grub = { + enable = true; + device = "/dev/sda"; + }; + #grub + }; + kernelModules = [ "i2c-dev" "i2c-piix4" ]; + }; + + networking = { + hostName = "nixos"; + networkmanager.enable = true; + firewall.enable = false; + }; + # Set your time zone. + time.timeZone = "America/Chicago"; + + # Select internationalisation properties. + i18n = { + defaultLocale = "en_US.UTF-8"; + 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 = { + # Enable rgb controller + hardware.openrgb.enable = true; + # Enable CUPS to print documents. + + # printing.enable = true; + + # Enable sound with pipewire. + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + }; + + # Enable the X11 windowing system. + xserver = { + enable = true; + desktopManager.cinnamon.enable = true; + # desktopManager.xfce.enable = true; + + videoDrivers = [ "nvidia" ]; + + # Enable touchpad support (enabled default in most desktopManager). + # libinput.enable = false; + + # Configure keymap in X11 + layout = "us"; + xkbVariant = ""; + + # Auto log in + displayManager = { + lightdm.enable = true; + defaultSession = "cinnamon"; + autoLogin = { + enable = true; + user = "able"; + }; + }; + }; + }; + + hardware = { + bluetooth.enable = true; + + opengl.enable = true; + # Optionally, you may need to select the appropriate driver version for your specific GPU. + nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; + openrazer = { + enable = true; + users = [ "able" ]; + }; + pulseaudio.enable = false; + }; + + security.rtkit.enable = true; + + sound.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.able = { + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE8hxhhfB2zomqQLw/o3MaFxHIhE9cfmuW55npfwVtOJ able@nixos" + ]; + + isNormalUser = true; + description = "able"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + home-manager.users.able = { pkgs, ... }: { + nixpkgs.config.allowUnfree = true; + + # "https://rycee.gitlab.io/home-manager/options.html" # opt-dconf.settings + imports = [ ./dconf.nix ]; + + home.stateVersion = "22.11"; + home.packages = with pkgs; [ + # armcord # Smaller discord client + btop + cinnamon.nemo + flameshot + gimp + + gzdoom + enyo-launcher + obs-studio + + + discord + dconf2nix + # hexdino + + # okteta + soundux + firefox + steam + grapejuice + + # adoptopenjdk-hotspot-bin-8 + # adoptopenjdk-hotspot-bin-16 + + spotify + nixfmt + openrgb + prismlauncher + rustup + qemu_full + llvmPackages_16.clangUseLLVM + + OVMFFull + ]; + + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + # environment.usr."share/ovmf/x64/OVMF_CODE.fd" = "${pkgs.OVMF}/ovmf/x64/OVMF_CODE.fd"; + + # programs.steam = { + # enable = true; + # remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + # dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + # }; + + + + programs.bash = { + enable = true; + shellAliases = { + cinnaback = "dconf dump / | dconf2nix > dconf.nix"; + + # Git commands + gcl = "git clone"; + + genpass = "strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo"; + + ################# + # List Variants # + ################# + la = "ls -a"; + labc = "ls -lap --color"; + + }; + + initExtra = '' + PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND" + up(){ + local d="" + limit=$1 + for ((i=1 ; i <= limit ; i++)) + do + d=$d/.. + done + d=$(echo $d | sed 's/^\///') + if [ -z "$d" ]; then + d=.. + fi + cd $d + } + + ######## + # ANSI # + ######## + RED="\[\e[0;38;5;196m\]" + GREEN="\[\e[0;92m\]" + BLUE="\[\e[0;38;5;51m\]" + GREY="\[\e[0;37m\]" + RESET="\[\e[0m\]" + + ######### + # PROMT # + ######### + PROMPT="$RED~> $RESET" + LINE_ONE="[$GREEN\w$RESET]\n" + LINE_TWO="$GREEN\u$GREY@$BLUE\h $PROMPT" + PS1="$LINE_ONE$LINE_TWO" + PS2="$PROMPT" + + ##################### + # History managment # + ##################### + # See: https://unix.stackexchange.com/questions/18212/bash-history-ignoredups-and-erasedups-setting-conflict-with-common-history + HISTCONTROL=ignoredboth:erasedups + shopt -s histappend + PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND" + ''; + + }; + programs.vscode = { + enable = true; + extensions = with pkgs.vscode-extensions; [ + bbenoist.nix + b4dm4n.vscode-nixpkgs-fmt + eamodio.gitlens + mskelton.one-dark-theme + rust-lang.rust-analyzer + tamasfe.even-better-toml + mhutchie.git-graph + ]; + userSettings = { + "rust-analyzer.check.command" = "clippy"; + "files.autoSave" = "off"; + "[nix]"."editor.tabSize" = 2; + "editor.formatOnSave" = true; + "window.zoomLevel" = 2; + "workbench.colorTheme" = "One Dark"; + "editor.multiCursorModifier" = "ctrlCmd"; + "editor.formatOnPaste" = true; + "git.autofetch" = true; + "editor.tokenColorCustomizations" = { + "textMateRules" = [ + { + "name" = "One Dark italic"; + "scope" = [ + "comment" + "entity.other.attribute-name" + "keyword" + "markup.underline.link" + "storage.modifier" + "storage.type" + "string.url" + "variable.language.super" + "variable.language.this" + ]; + "settings" = { + "fontStyle" = "italic"; + }; + } + { + "name" = "One Dark italic reset"; + "scope" = [ + "keyword.operator" + "keyword.other.type" + "storage.modifier.import" + "storage.modifier.package" + "storage.type.built-in" + "storage.type.function.arrow" + "storage.type.generic" + "storage.type.java" + "storage.type.primitive" + ]; + "settings" = { + "fontStyle" = ""; + }; + } + ]; + }; + }; + }; + + programs.git = { + package = pkgs.gitAndTools.gitFull; + enable = true; + userName = "able"; + userEmail = "abl3theabove@gmail.com"; + # signing = { + # key = ""; + # signByDefault = false; + # }; + }; + + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; + [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + ]; + + # 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: + + xdg.mime.defaultApplications = { + "application/pdf" = "firefox.desktop"; + "inode/directory" = [ "nemo.desktop" "code.desktop" ]; + }; + + # 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 = "22.11"; # Did you read the comment? +} diff --git a/dconf.nix b/dconf.nix new file mode 100644 index 0000000..bbb5f11 --- /dev/null +++ b/dconf.nix @@ -0,0 +1,158 @@ +# Generated via dconf2nix: https://github.com/gvolpe/dconf2nix +{ lib, ... }: + +with lib.hm.gvariant; + +{ + dconf.settings = { + "org/cinnamon" = { + enabled-applets = [ "panel1:left:0:menu@cinnamon.org:0" "panel1:left:1:separator@cinnamon.org:1" "panel1:left:2:grouped-window-list@cinnamon.org:2" "panel1:right:0:systray@cinnamon.org:3" "panel1:right:1:xapp-status@cinnamon.org:4" "panel1:right:2:notifications@cinnamon.org:5" "panel1:right:3:printers@cinnamon.org:6" "panel1:right:4:removable-drives@cinnamon.org:7" "panel1:right:5:keyboard@cinnamon.org:8" "panel1:right:6:favorites@cinnamon.org:9" "panel1:right:7:network@cinnamon.org:10" "panel1:right:8:sound@cinnamon.org:11" "panel1:right:9:power@cinnamon.org:12" "panel1:right:10:calendar@cinnamon.org:13" "panel1:right:11:cornerbar@cinnamon.org:14" ]; + next-applet-id = 15; + panels-enabled = [ "1:0:top" ]; + }; + + "org/cinnamon/desktop/interface" = { + cursor-blink-time = 1200; + cursor-theme = "GoogleDot-Black"; + gtk-theme = "Adwaita-dark"; + icon-theme = "HighContrast"; + }; + + "org/cinnamon/desktop/keybindings" = { + custom-list = [ "__dummy__" "custom0" ]; + }; + + "org/cinnamon/desktop/keybindings/custom-keybindings/custom0" = { + binding = [ "Print" ]; + command = "flameshot gui"; + name = "screenshot"; + }; + + "org/cinnamon/desktop/keybindings/media-keys" = { + screenshot = []; + }; + + "org/cinnamon/desktop/peripherals/keyboard" = { + delay = mkUint32 500; + repeat-interval = mkUint32 30; + }; + + "org/cinnamon/desktop/sound" = { + event-sounds = false; + }; + + "org/cinnamon/settings-daemon/peripherals/keyboard" = { + numlock-state = "off"; + }; + + "org/cinnamon/theme" = { + name = "Linux Mint"; + }; + + "org/gnome/evolution-data-server" = { + migrated = true; + }; + + "org/gnome/file-roller/dialogs/extract" = { + recreate-folders = true; + skip-newer = false; + }; + + "org/gnome/file-roller/listing" = { + list-mode = "as-folder"; + name-column-width = 250; + show-path = false; + sort-method = "name"; + sort-type = "ascending"; + }; + + "org/gnome/file-roller/ui" = { + sidebar-width = 200; + window-height = 480; + window-width = 600; + }; + + "org/gtk/settings/file-chooser" = { + date-format = "regular"; + location-mode = "path-bar"; + show-hidden = false; + show-size-column = true; + show-type-column = true; + sidebar-width = 148; + sort-column = "name"; + sort-directories-first = true; + sort-order = "ascending"; + type-format = "category"; + window-position = mkTuple [ 1612 40 ]; + window-size = mkTuple [ 1096 832 ]; + }; + + "org/nemo/preferences" = { + show-hidden-files = false; + }; + + "org/nemo/window-state" = { + geometry = "800x550+1490+90"; + maximized = false; + sidebar-bookmark-breakpoint = 0; + start-with-sidebar = true; + }; + + "org/x/editor/plugins" = { + active-plugins = [ "docinfo" "modelines" "sort" "filebrowser" "spell" "time" ]; + }; + + "org/x/editor/preferences/ui" = { + statusbar-visible = true; + }; + + "org/x/editor/state/window" = { + bottom-panel-size = 140; + side-panel-active-page = 827629879; + side-panel-size = 200; + size = mkTuple [ 650 500 ]; + state = 87168; + }; + + "org/x/pix/browser" = { + filterbar-visible = true; + maximized = false; + properties-visible = true; + show-thumbnails = true; + sort-inverse = false; + sort-type = "file::mtime"; + startup-current-file = "file://~/Pictures/Screenshot%20from%202023-06-11%2018-41-42.png"; + startup-location = "file://~/Pictures"; + thumbnail-list-size = 126; + viewer-sidebar = "hidden"; + }; + + "org/x/pix/data-migration" = { + catalogs-2-10 = true; + }; + + "org/x/pix/general" = { + active-extensions = [ "23hq" "bookmarks" "burn_disc" "catalogs" "change_date" "comments" "contact_sheet" "convert_format" "desktop_background" "edit_metadata" "exiv2_tools" "facebook" "file_manager" "file_tools" "find_duplicates" "flicker" "gstreamer_tools" "gstreamer_utils" "image_print" "image_rotation" "image_viewer" "importer" "jpeg_utils" "list_tools" "oauth" "photo_importer" "photobucket" "picasaweb" "raw_files" "red_eye_removal" "rename_series" "resize_images" "search" "selections" "slideshow" "webalbums" ]; + }; + + "org/x/pix/resize-images" = { + height = 100; + keep-aspect-ratio = false; + mime-type = ""; + unit = "percentage"; + width = 29; + }; + + "org/x/viewer/window" = { + maximized = true; + }; + + "org/x/warpinator/preferences" = { + ask-for-send-permission = true; + autostart = false; + connect-id = "NIXOS-D6BA323433A716DDB295"; + no-overwrite = true; + }; + + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..7659a58 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,31 @@ +# 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 + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1cb7b39d-3473-4530-aee3-1015ff3b2c72"; + fsType = "ext4"; + }; + + 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.enp6s18.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +}