diff --git a/guix/.bash_profile b/guix/.bash_profile new file mode 100644 index 0000000..7736e39 --- /dev/null +++ b/guix/.bash_profile @@ -0,0 +1,14 @@ +# Set up Guix Home profile +if [ -f ~/.profile ]; then . ~/.profile; fi + +# Honor per-interactive-shell startup file +if [ -f ~/.bashrc ]; then . ~/.bashrc; fi + +# Merge search-paths from multiple profiles, the order matters. +eval "$(guix package --search-paths \ +-p $HOME/.config/guix/current \ +-p $HOME/.guix-profile \ +-p /run/current-system/profile)" + +# Prepend setuid programs. +export PATH=/run/setuid-programs:$PATH diff --git a/guix/.bashrc b/guix/.bashrc new file mode 100644 index 0000000..4c0f896 --- /dev/null +++ b/guix/.bashrc @@ -0,0 +1,24 @@ +# 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. +[ -f /etc/bashrc ] && source /etc/bashrc + +alias ls='ls -p --color=auto' +alias ll='ls -l' +alias grep='grep --color=auto' diff --git a/guix/bash_profile b/guix/bash_profile new file mode 100644 index 0000000..f226f8d --- /dev/null +++ b/guix/bash_profile @@ -0,0 +1,23 @@ +# Set up the system, user profile, and related variables. +# /etc/profile will be sourced by bash automatically +# Set up the home environment profile. +if [ -f ~/.profile ]; then source ~/.profile; fi + +# Honor per-interactive-shell startup file +if [ -f ~/.bashrc ]; then source ~/.bashrc; fi +PS1='\u@\h \w${GUIX_ENVIRONMENT:+ [env]}\$ ' +# Set up Guix Home profile +if [ -f ~/.profile ]; then . ~/.profile; fi + +# Honor per-interactive-shell startup file +if [ -f ~/.bashrc ]; then . ~/.bashrc; fi + +# Merge search-paths from multiple profiles, the order matters. +eval "$(guix package --search-paths \ +-p $HOME/.config/guix/current \ +-p $HOME/.guix-profile \ +-p /run/current-system/profile)" + +# Prepend setuid programs. +export PATH=/run/setuid-programs:$PATH + diff --git a/guix/bashrc b/guix/bashrc new file mode 100644 index 0000000..a8c701f --- /dev/null +++ b/guix/bashrc @@ -0,0 +1,53 @@ +alias grep="grep --color=auto" +alias ll="ls -l" +alias ls="exa -l" +alias la="exa -la" +# 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. +[ -f /etc/bashrc ] && source /etc/bashrc + +alias ls='ls -p --color=auto' +alias ll='ls -l' +alias grep='grep --color=auto' +# 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. +[ -f /etc/bashrc ] && source /etc/bashrc + +alias ls='ls -p --color=auto' +alias ll='ls -l' +alias grep='grep --color=auto' + diff --git a/guix/channels.scm b/guix/channels.scm new file mode 100644 index 0000000..645baa6 --- /dev/null +++ b/guix/channels.scm @@ -0,0 +1,31 @@ +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (branch "master") + (commit + "654fcf9971bb01389d577be07c6ec0f68940c743") + (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") + (commit + "c323f4c866cdf7c9fb958ed968b80e0911ecd899") + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) + (channel + (name 'rosenthal) + (url "https://github.com/rakino/rosenthal") + (branch "trunk") + (introduction + (make-channel-introduction + "7677db76330121a901604dfbad19077893865f35" + (openpgp-fingerprint + "13E7 6CD6 E649 C28C 3385 4DF5 5E5A A665 6149 17F7"))))) diff --git a/guix/home.scm b/guix/home.scm new file mode 100644 index 0000000..914bc1e --- /dev/null +++ b/guix/home.scm @@ -0,0 +1,109 @@ +;; 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 home services) + (gnu packages) + (gnu packages vim) + (gnu packages rust-apps) + (gnu packages video) + (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 "vim" + "exa" + "mpv" + "mpv-mpris" + "yt-dlp" + "ripgrep" + "alacritty" + "nextcloud-client" + "rofi-wayland" + "fd" + "ffmpeg" + "dolphin" + "emacs-next-pgtk" + "emacs-all-the-icons" + "emacs-org-roam" + "emacs-doom-modeline" + "emacs-doom-themes" + "emacs-org" + "emacs-elfeed" + "emacs-elfeed-org" + "emacs-use-package" + "emacs-general" + "emacs-evil" + "emacs-evil-collection" + "emacs-no-littering" + "emacs-evil-escape" + "emacs-smartparens" + "emacs-evil-org" + "emacs-evil-smartparens" + "emacs-aggressive-indent" + "emacs-adaptive-wrap" + "emacs-which-key" + "emacs-evil-surround" + "emacs-websocket" + "emacs-org-modern" + "emacs-org-re-reveal" + "emacs-emojify" + "emacs-pulsar" + "emacs-vertico" + "emacs-consult" + "emacs-tempel" + "emacs-marginalia" + "emacs-embark" + "emacs-wgrep" + "emacs-corfu" + "emacs-cape" + "emacs-rainbow-delimiters" + "emacs-orderless" + "emacs-kind-icon" + "emacs-projectile" + "emacs-simple-httpd" + "emacs-direnv" + "emacs-diredfl" + "emacs-pdf-tools" + "emacs-plz" + "emacs-ement" + "emacs-gcmh" + "emacs-visual-fill-column" + "emacs-eat" + "emacs-all-the-icons-dired" + "emacs-all-the-icons-completion" + "emacs-org-super-agenda" + "emacs-toc-org" + "emacs-dired-sidebar" + "emacs-ledger-mode" + "emacs-ob-restclient" + "emacs-guix" + "emacs-nix-mode" + "emacs-helpful" + ;; "emacs-mu4e" + "mu" + ))) + + ;; 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 + (guix-defaults? #t) + (aliases '(("grep" . "grep --color=auto") + ("ll" . "ls -l") + ("ls" . "exa -l") + ("la" . "exa -la"))))) + (service home-fish-service-type + (home-fish-configuration + (aliases '(("ls" . "exa -l") + ("gh" . "guix home reconfigure ~/.files/guix/home.scm"))))) + (service home-xdg-configuration-files-service-type + `(("hypr/hyprland.conf" ,(local-file "../.config/hypr/hyprland.conf")) + ("alacritty/alacritty.yml" ,(local-file "../.config/alacritty/alacritty.yml"))))))) diff --git a/guix/nonguix b/guix/nonguix new file mode 160000 index 0000000..dd7519a --- /dev/null +++ b/guix/nonguix @@ -0,0 +1 @@ +Subproject commit dd7519aa20948e42469eccc3c7c99c1633420a07 diff --git a/guix/signing-key.pub b/guix/signing-key.pub new file mode 100644 index 0000000..56ee811 --- /dev/null +++ b/guix/signing-key.pub @@ -0,0 +1,6 @@ +(public-key + (ecc + (curve Ed25519) + (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#) + ) + ) diff --git a/guix/system.scm b/guix/system.scm new file mode 100644 index 0000000..5ee9d42 --- /dev/null +++ b/guix/system.scm @@ -0,0 +1,85 @@ +;; 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) + (nongnu system linux-initrd)) +(use-service-modules cups desktop networking ssh xorg) + +(operating-system + (kernel linux) + (initrd microcode-initrd) + (firmware (list linux-firmware)) + (locale "en_US.utf8") + (timezone "America/Chicago") + (keyboard-layout (keyboard-layout "us")) + (host-name "syl") + + ;; The list of user accounts ('root' is implicit). + (users (cons* (user-account + (name "chris") + (comment "Chris") + (group "users") + (home-directory "/home/chris") + (supplementary-groups '("wheel" "netdev" "audio" "video"))) + %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 (list (specification->package "nss-certs") + (specification->package "emacs-next-pgtk")) + %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 (service gnome-desktop-service-type) + + ;; To configure OpenSSH, pass an 'openssh-configuration' + ;; record as a second argument to 'service' below. + (service openssh-service-type) + (service cups-service-type) + (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 + (append (list (plain-file "nonguix.pub" "(public-key (ecc (curve Ed25519) (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))")) + %default-authorized-guix-keys))))))) + + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (keyboard-layout keyboard-layout))) + + ;; 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 "/boot/efi") + (device (uuid "BA76-3723" + 'fat32)) + (type "vfat")) + (file-system + (mount-point "/") + (device (uuid + "db28ba7c-a15d-4c81-8373-99f2f171cac5" + 'btrfs)) + (type "btrfs")) %base-file-systems)))