summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dotfiles/.bash_profile14
-rw-r--r--rise-home.scm47
-rw-r--r--rise-os.scm122
3 files changed, 183 insertions, 0 deletions
diff --git a/dotfiles/.bash_profile b/dotfiles/.bash_profile
new file mode 100644
index 0000000..7736e39
--- /dev/null
+++ b/dotfiles/.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/rise-home.scm b/rise-home.scm
new file mode 100644
index 0000000..cd6598d
--- /dev/null
+++ b/rise-home.scm
@@ -0,0 +1,47 @@
+(use-modules (gnu home)
+ (gnu packages)
+ (gnu services)
+ (guix gexp)
+ (gnu home services shells))
+
+(home-environment
+ (packages (specifications->packages
+ '("alsa-utils"
+ "ardour"
+ "calf"
+ "carla"
+ "emacs"
+ "emacs-better-defaults"
+ "emacs-buffer-env"
+ "emacs-doom-modeline"
+ "emacs-doom-themes"
+ "emacs-flycheck-guile"
+ "emacs-geiser-guile"
+ "emacs-magit"
+ "emacs-markdown-mode"
+ "emacs-paredit"
+ "emacs-rainbow-delimiters"
+ "emacs-smex"
+ "emacs-use-package"
+ "emacs-which-key"
+ "firefox"
+ "font-google-noto-sans-cjk"
+ "font-google-noto-serif-cjk"
+ "font-inconsolata"
+ "gimp"
+ "git"
+ "gnome-tweaks"
+ "htop"
+ "jack"
+ "lsp-plugins"
+ "milkytracker"
+ "obs"
+ "openssh"
+ "patchage"
+ "qjackctl"
+ "sfxr")))
+ (services
+ (list (service home-bash-service-type
+ (home-bash-configuration
+ (aliases '(("grep" . "grep --color=auto")
+ ("ls" . "ls -ahlp --color=auto"))))))))
diff --git a/rise-os.scm b/rise-os.scm
new file mode 100644
index 0000000..266017c
--- /dev/null
+++ b/rise-os.scm
@@ -0,0 +1,122 @@
+;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Digital Audio Workstation configuration.
+;;
+;; To update using this OS configuration, run:
+;;
+;; sudo -E guix system reconfigure rise.scm
+
+(use-modules (gnu)
+ (gnu services cups)
+ (gnu services desktop)
+ (gnu services pm)
+ (gnu services sound)
+ (nongnu packages linux)
+ (nongnu system linux-initrd))
+
+(operating-system
+ (locale "en_US.utf8")
+ (timezone "America/New_York")
+ (keyboard-layout (keyboard-layout "us"))
+ (host-name "rise")
+ (bootloader (bootloader-configuration
+ (bootloader grub-efi-bootloader)
+ (targets (list "/boot/efi"))
+ (keyboard-layout keyboard-layout)))
+ ;; Use regular Linux with the big bad proprietary firmware blobs.
+ (kernel linux)
+ ;; Install microcode updates because why the heck wouldn't you want
+ ;; this???
+ (initrd microcode-initrd)
+ ;; sof-firmware is required for sound to work, linux-firmware takes
+ ;; care of everything else.
+ (firmware (list sof-firmware linux-firmware))
+ (users (cons* (user-account
+ (name "dave")
+ (comment "David Thompson")
+ (group "users")
+ (home-directory "/home/dave")
+ (supplementary-groups
+ '("audio"
+ "kvm" ; for VMs
+ "lp" ; for bluetooth
+ "netdev"
+ "realtime" ; for realtime prioritization
+ "video"
+ "wheel"))) ; for sudo
+ %base-user-accounts))
+ (groups (cons (user-group
+ (name "realtime")
+ (system? #t))
+ %base-groups))
+ (packages (append (map specification->package
+ '("ncurses" "nss-certs" "strace"))
+ %base-packages))
+ (services (modify-services
+ (cons* (service gnome-desktop-service-type)
+ (service bluetooth-service-type)
+ ;; Keep CPU temp in check.
+ (service thermald-service-type)
+ ;; Enable CUPS web UI and also add the extension
+ ;; for my Brother laser printer.
+ (service cups-service-type
+ (cups-configuration
+ (web-interface? #t)
+ (extensions
+ (map specification->package '("cups-filters" "brlaser")))))
+ ;; The first entry increases the maximum realtime
+ ;; priority for non-privileged processes; the
+ ;; second entry lifts any restriction of the
+ ;; maximum address space that can be locked in
+ ;; memory.
+ (service pam-limits-service-type
+ (list
+ (pam-limits-entry "@realtime"
+ 'both 'rtprio 99)
+ (pam-limits-entry "@realtime"
+ 'both 'memlock 'unlimited)))
+ %desktop-services)
+ ;; In this house, we use JACK.
+ (delete pulseaudio-service-type)
+ ;; Get nonguix substitutes.
+ (guix-service-type config =>
+ (guix-configuration
+ (inherit config)
+ (substitute-urls
+ (append (list "https://substitutes.nonguix.org")
+ %default-substitute-urls))
+ (authorized-keys
+ (append (list (local-file "./nonguix-signing-key.pub"))
+ %default-authorized-guix-keys))))))
+ (mapped-devices (list (mapped-device
+ (source (uuid
+ "ee0a37d1-36d6-4e50-8af0-fc0bfe8c22ef"))
+ (target "cryptroot")
+ (type luks-device-mapping))))
+ (file-systems (cons* (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "1F21-80A1"
+ 'fat32))
+ (type "vfat"))
+ (file-system
+ (mount-point "/")
+ (device "/dev/mapper/cryptroot")
+ (type "ext4")
+ (dependencies mapped-devices)) %base-file-systems))
+ (name-service-switch %mdns-host-lookup-nss))