From 6288091b7fea9bb2df667612fe7a4461a6311b0b Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Tue, 18 Apr 2023 01:02:27 -0400 Subject: [PATCH] Initial commit, more to come! --- .gitignore | 1 + channels.scm | 18 ++++ home-config/.bash_profile | 8 ++ home-config/.bashrc | 41 ++++++++ home-config/home-configuration.scm | 49 ++++++++++ system.scm | 148 +++++++++++++++++++++++++++++ 6 files changed, 265 insertions(+) create mode 100644 .gitignore create mode 100644 channels.scm create mode 100644 home-config/.bash_profile create mode 100644 home-config/.bashrc create mode 100644 home-config/home-configuration.scm create mode 100644 system.scm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b9023a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +current diff --git a/channels.scm b/channels.scm new file mode 100644 index 0000000..3b14d78 --- /dev/null +++ b/channels.scm @@ -0,0 +1,18 @@ +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (branch "master") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))) + (channel + (name 'nonguix) + (url "https://gitlab.com/nonguix/nonguix") + (branch "master") + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))) diff --git a/home-config/.bash_profile b/home-config/.bash_profile new file mode 100644 index 0000000..319a0ca --- /dev/null +++ b/home-config/.bash_profile @@ -0,0 +1,8 @@ +export MOZ_ENABLE_WAYLAND=1 + +export XDG_CURRENT_DESKTOP=sway +export XDG_SESSION_DESKTOP=sway +export _JAVA_AWT_WM_NONREPEATING=1 + +# Honor per-interactive-shell startup file +if [ -f ~/.bashrc ]; then . ~/.bashrc; fi diff --git a/home-config/.bashrc b/home-config/.bashrc new file mode 100644 index 0000000..76bfbec --- /dev/null +++ b/home-config/.bashrc @@ -0,0 +1,41 @@ +# Bash initialization for interactive non-login shells and +# for remote shells (info "(bash) Bash Startup Files"). + +# Export 'SHELL' to child processes. Programs such as 'screen' +# honor it and otherwise use /bin/sh. +export SHELL + +if [[ $- != *i* ]] +then + # We are being invoked from a non-interactive shell. If this + # is an SSH session (as in "ssh host command"), source + # /etc/profile so we get PATH and other essential variables. + [[ -n "$SSH_CLIENT" ]] && source /etc/profile + + # Don't do anything else. + return +fi + +# Source the system-wide file. +source /etc/bashrc + +# Adjust the prompt depending on whether we're in 'guix environment'. +if [ -n "$GUIX_ENVIRONMENT" ] +then + PS1='\u@\h \w [env]\$ ' +else + PS1='\u@\h \w\$ ' +fi +alias ls='ls -p --color=auto' +alias ll='ls -l' +alias grep='grep --color=auto' + +# Ryan's custom stuff +alias quit='exit' +export EDITOR=nvim +alias cat='bat --paging=never' + +# GPG SETUP FOR SSH +export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +gpgconf --launch gpg-agent +export GPG_TTY=$(tty) diff --git a/home-config/home-configuration.scm b/home-config/home-configuration.scm new file mode 100644 index 0000000..3ee4f76 --- /dev/null +++ b/home-config/home-configuration.scm @@ -0,0 +1,49 @@ +;; This "home-environment" file can be passed to 'guix home reconfigure' +;; to reproduce the content of your profile. This is "symbolic": it only +;; specifies package names. To reproduce the exact same profile, you also +;; need to capture the channels being used, as returned by "guix describe". +;; See the "Replicating Guix" section in the manual. + +(use-modules (gnu home) + (gnu packages) + (gnu services) + (guix gexp) + (gnu home services shells)) + +(home-environment + ;; Below is the list of packages that will show up in your + ;; Home profile, under ~/.guix-home/profile. + (packages (specifications->packages (list "bat" + "qrencode" + "libreoffice" + "flatpak" + "gnupg" + "lsof" + "pavucontrol" + "bind:utils" + ;"firefox" + "irssi" + "font-cns11643" + "syncthing" + "perl" + "tor" + "unzip" + "alacritty" + "htop" + "curl" + "neovim" + "git"))) + + ;; Below is the list of Home services. To search for available + ;; services, run 'guix home search KEYWORD' in a terminal. + (services + (list (service home-bash-service-type + (home-bash-configuration + (aliases '(("grep" . "grep --color=auto") ("ll" . "ls -l") + ("ls" . "ls -p --color=auto"))) + (bashrc (list (local-file + "/home/ryan/.config/guix/home-config/.bashrc" + "bashrc"))) + (bash-profile (list (local-file + "/home/ryan/.config/guix/home-config/.bash_profile" + "bash_profile")))))))) diff --git a/system.scm b/system.scm new file mode 100644 index 0000000..90e99ab --- /dev/null +++ b/system.scm @@ -0,0 +1,148 @@ +;; This is an operating system configuration generated +;; by the graphical installer. +;; +;; Once installation is complete, you can learn and modify +;; this file to tweak the system configuration, and pass it +;; to the 'guix system reconfigure' command to effect your +;; changes. + + +;; Indicate which modules to import to access the variables +;; used in this configuration. +(use-modules (gnu) (nongnu packages linux)) +(use-modules (gnu system setuid)) +(use-modules (gnu packages admin)) +(use-modules (guix packages)) +(use-modules (gnu services authentication)) +(use-modules (gnu packages shells)) +(use-modules (srfi srfi-1)) +(use-package-modules security-token) +(use-service-modules cups desktop networking ssh xorg sound security-token) + +; Re-define the base packages to remove sudo +(define %my-base-packages + (remove (lambda (package) + (member (package-name package) + (list "sudo" "nano"))) + %base-packages )) + +(operating-system + (kernel linux) + (firmware (list linux-firmware)) + (locale "en_US.utf8") + (timezone "America/New_York") + (keyboard-layout (keyboard-layout "us")) + (host-name "RyanThinkpad") + + ;; The list of user accounts ('root' is implicit). + (users (cons* (user-account + (name "ryan") + (comment "Ryan") + (group "users") + ;(shell (file-append zsh "/bin/zsh")) + (home-directory "/home/ryan") + (supplementary-groups '("wheel" "netdev" "audio" "video" "lp" "plugdev"))) + %base-user-accounts)) + + ;; Packages installed system-wide. Users can also install packages + ;; under their own account: use 'guix search KEYWORD' to search + ;; for packages and 'guix install PACKAGE' to install a package. + (packages (append (map specification->package (list "sway" + "swaybg" + "swayidle" + "swaylock-effects" + "fuzzel" + "alacritty" + "pinentry-qt" + "adwaita-icon-theme" + "hicolor-icon-theme" + "git" + "nss-certs" + "waybar" + "gnupg" + "light" + "mako" + "grim" + "slurp" + "wl-clipboard" + "bluez" + "blueman" + "opendoas" + "xdg-desktop-portal-wlr" + "xdg-desktop-portal" + "pipewire" + "fprintd" + "wireplumber" + "zsh")) + %my-base-packages )) + + ;; Below is the list of system services. To search for available + ;; services, run 'guix system search KEYWORD' in a terminal. + (services + (append (list + + ;; To configure OpenSSH, pass an 'openssh-configuration' + ;; record as a second argument to 'service' below. + (service openssh-service-type) + (service pcscd-service-type) + (service fprintd-service-type) + (service bluetooth-service-type) + (udev-rules-service 'fido2 libfido2 #:groups '("plugdev")) + (set-xorg-configuration + (xorg-configuration (keyboard-layout keyboard-layout)))) + + ;; This is the default list of services we + ;; are appending to. + (modify-services %desktop-services + (guix-service-type config => + (guix-configuration + (inherit config) + (substitute-urls + (append (list "https://substitutes.nonguix.org") + %default-substitute-urls)) + (authorized-keys + (cons* (plain-file "non-guix.pub" + "(public-key + (ecc + (curve Ed25519) + (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#) + ) + )" ) %default-authorized-guix-keys)))) + (delete pulseaudio-service-type) + (delete gdm-service-type) ))) + (setuid-programs + (append (list (file-like->setuid-program + (file-append + (specification->package "swaylock-effects") + "/bin/swaylock")) + (file-like->setuid-program + (file-append + (specification->package "opendoas") + "/bin/doas"))) + (delete sudo %setuid-programs))) + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (keyboard-layout keyboard-layout))) + (mapped-devices (list (mapped-device + (source (uuid + "adcaf322-7ee5-48ec-abf6-4a9b10643878")) + (target "sysroot") + (type luks-device-mapping)))) + + ;; The list of file systems that get "mounted". The unique + ;; file system identifiers there ("UUIDs") can be obtained + ;; by running 'blkid' in a terminal. + (file-systems (cons* (file-system + (mount-point "/") + (device "/dev/mapper/sysroot") + (type "ext4") + (dependencies mapped-devices)) + (file-system + (mount-point "/boot/efi") + (device (uuid "DFE8-32EF" + 'fat32)) + (type "vfat")) %base-file-systems)) + (swap-devices + (list + (swap-space (target (uuid "7e1bb7c5-da2a-4509-8263-f707fc752993"))) )))