guix

my guix configs
git clone git://git.jakekoroman.com/guix
Log | Files | Refs | README

commit 5421a0480aac9ec5a1f05e37b19f85cbbdf8c0fc
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Fri, 30 May 2025 14:41:33 -0400

Ready. Set. Go!

Diffstat:
AREADME | 22++++++++++++++++++++++
Achannels.scm | 22++++++++++++++++++++++
Aguix/jrk/packages/all.scm | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aguix/jrk/packages/patches/gf.patch | 18++++++++++++++++++
Aguix/jrk/packages/patches/st-light.patch | 13+++++++++++++
Aguix/systems/work/home.scm | 311+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aguix/systems/work/system.scm | 236+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aguix_reconfigure.sh | 4++++
Aguix_update_channels.sh | 9+++++++++
Amy-channels.scm | 21+++++++++++++++++++++
10 files changed, 724 insertions(+), 0 deletions(-)

diff --git a/README b/README @@ -0,0 +1,21 @@ +my guix experiment +=================== + +these are my guix configs after a few months with guix. + +guix is a very interesting and fun take on a fully declarative system +that i much prefer to nixos. it is very fun to configure your whole system +in one language and be able to deploy a completely reproducable version of it +anywhere you want. very cool to run a single command and have your system configure +itself. + +structure +========= + +guix/systems dir has the main configurations for my laptop with the ability to add more systems. +guix/jrk is where i have added a couple packages for myself. + +channels.scm and my-channels.scm are used to keep the system reproducible. put channels into my-channels.scm +and guix_update_channels.sh will use those and write the latest commit to channels.scm that will be used by guix. + +guix_reconfigure.sh is a conveniance script that reconfigures the system based on its hostname. +\ No newline at end of file diff --git a/channels.scm b/channels.scm @@ -0,0 +1,22 @@ +(list (channel + (name 'nonguix) + (url "https://codeberg.org/nonguix/nonguix-mirror") + (branch "master") + (commit + "595c2155a61ef7e552269cb1c569a33e3ec32bb2") + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) + (channel + (name 'guix) + (url "https://codeberg.org/guix/guix-mirror") + (branch "master") + (commit + "409bbd801428b90701f625c38e6b5840f12a187b") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) diff --git a/guix/jrk/packages/all.scm b/guix/jrk/packages/all.scm @@ -0,0 +1,68 @@ +(define-module (jrk packages all) + #:use-module (guix) + #:use-module (guix build-system gnu) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages gdb) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages suckless) + #:use-module (gnu packages xorg)) + +(define-public gf + (let ((commit "338b690d8055c2e92fba51e9440a6b127ec1f485") + (revision "1")) + (package + (name "gf") + ;; software is not officialy versioned so using 0.1 + (version (git-version "0.1" revision commit)) + (synopsis "A GDB fronted for unix systems") + (description synopsis) + (home-page "https://github.com/nakst/gf") + (license license:expat) + (native-inputs (list pkg-config)) + (inputs (list freetype libx11)) + (propagated-inputs (list gdb)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nakst/gf") + (commit commit))) + (sha256 + (base32 "1xxc57i4zzfsch29a6zfngwmrq28yml1zajm7xkkzr11ch6fbwls")) + (patches (list (local-file "patches/gf.patch"))) + ;; build with the extra extensions + (snippet '(copy-file "extensions_v5/extensions.cpp" "extensions.cpp")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases + %standard-phases + (delete 'configure) + (delete 'bootstrap) + (delete 'check) + (replace 'build (lambda _ + (invoke "./build.sh"))) + (replace 'install (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "gf2" + (string-append out "/bin"))))))))))) + +(define-public jrk-st + (let ((commit "b3eaee6eac8736473210bd5e72883e9d764527df") + (revision "1")) + (package + (inherit st) + (name "jrk-st") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.jakekoroman.com/st") + (commit commit))) + (sha256 + (base32 "1s5mpff2dlayfadw5bxy35jr5qivvkdskqd87nfgcajgmnpsng28")) + (patches (list (local-file "patches/st-light.patch"))))) + (inputs (modify-inputs (package-inputs st) + (append libxcursor)))))) diff --git a/guix/jrk/packages/patches/gf.patch b/guix/jrk/packages/patches/gf.patch @@ -0,0 +1,18 @@ +diff --git a/build.sh b/build.sh +index fc5f74e..7a8fe4e 100755 +--- a/build.sh ++++ b/build.sh +@@ -5,12 +5,9 @@ gdb --version > /dev/null 2>&1 || printf "\033[0;31mWarning\033[0m: GDB not dete + gdb --version > /dev/null 2>&1 || exit 1 + echo q | gdb | grep "(gdb)" > /dev/null 2>&1 || printf "\033[0;31mWarning\033[0m: Your copy of GDB appears to be non-standard or has been heavily reconfigured with .gdbinit.\nIf you are using GDB plugins like 'GDB Dashboard' you must remove them,\nas otherwise gf will be unable to communicate with GDB.\n" + +-# Check if FreeType is available. +-if [ -d /usr/include/freetype2 ]; then extra_flags="$extra_flags -lfreetype -D UI_FREETYPE -I /usr/include/freetype2"; +-else printf "\033[0;31mWarning\033[0m: FreeType could not be found. The fallback font will be used.\n"; fi +- + # Check if SSE2 is available. + uname -m | grep x86_64 > /dev/null && extra_flags="$extra_flags -DUI_SSE2" + ++extra_flags="$extra_flags -DUI_FREETYPE -lfreetype $(pkg-config freetype2 --cflags)" + # Build the executable. + g++ gf2.cpp -o gf2 -g -O2 -lX11 -pthread $extra_flags -Wall -Wextra -Wno-unused-parameter -Wno-unused-result -Wno-missing-field-initializers -Wno-format-truncation || exit 1 diff --git a/guix/jrk/packages/patches/st-light.patch b/guix/jrk/packages/patches/st-light.patch @@ -0,0 +1,13 @@ +diff --git a/config.def.h b/config.def.h +index 883278a..b286777 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -22,7 +22,7 @@ static const unsigned int mousescrollincrement = 1; + * THEME_GRUBER + * THEME_GRUVBOX + */ +-#define THEME_DEFAULT ++#define THEME_DEFAULT_LIGHT + + /* + * What program is execed by st depends of these precedence rules: diff --git a/guix/systems/work/home.scm b/guix/systems/work/home.scm @@ -0,0 +1,311 @@ +(define-module (systems work home) + #:use-module (jrk packages all) + + #:use-module (gnu home) + #:use-module (gnu home services) + #:use-module (gnu home services desktop) + #:use-module (gnu home services gnupg) + #:use-module (gnu home services mail) + #:use-module (gnu home services shells) + #:use-module (gnu home services shepherd) + #:use-module (gnu home services sound) + #:use-module (gnu home services sway) + + #:use-module (gnu packages base) + #:use-module (gnu packages commencement) + #:use-module (gnu packages dns) + #:use-module (gnu packages emacs) + #:use-module (gnu packages emacs-xyz) + #:use-module (gnu packages engineering) + #:use-module (gnu packages gdb) + #:use-module (gnu packages gimp) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages image) + #:use-module (gnu packages image-viewers) + #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) + #:use-module (gnu packages mail) + #:use-module (gnu packages man) + #:use-module (gnu packages mate) + #:use-module (gnu packages music) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages terminals) + #:use-module (gnu packages tmux) + #:use-module (gnu packages version-control) + #:use-module (gnu packages video) + #:use-module (gnu packages web) + #:use-module (gnu packages wm) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + + #:use-module (gnu services) + #:use-module (gnu system shadow) + + #:use-module (guix gexp) + + #:export (work-home-config) + ) + +(define shell-aliases + '(("ip" . "ip --color=auto") + ("grep" . "grep --color=auto") + ("diff" . "diff --color=auto") + ("ls" . "ls -hN --color=auto --group-directories-first") + ("l" . "ls -l") + ("ll" . "ls -la") + ("f" . "fossil") + ("v" . "$EDITOR") + ("vv" . "$SUDO $EDITOR") + ("nt" . "$BROWSER --new-tab") + ("nw" . "$BROWSER --new-window") + ("cp" . "cp -iv") + ("mv" . "mv -iv") + ("rm" . "rm -vI") + ("be" . "v $MENULAUNCHER_DIR/bookmarks") + ("mkdir" . "mkdir -pv") + ("yt" . "yt-dlp --embed-metadata --embed-chapters --sponsorblock-remove sponsor -i") + ("yta" . "yt-dlp -f bestaudio -x --audio-format mp3 --sponsorblock-remove sponsor -i") + ("mpv" . "mpv --script=~/.guix-home/profile/lib/mpris.so"))) + +(define shell-environment-variables + '(("SUDO" . "sudo") + ("TERMINAL" . "st") + ("BROWSER" . "firefox") + ("EDITOR" . "emacsclient -c -a 'emacs -nw'") + ("XDG_CONFIG_HOME" . "$HOME/.config") + ("XDG_DATA_HOME" . "$HOME/.local/share") + ("XDG_CACHE_HOME" . "$HOME/.cache") + ("XDG_DATA_DIRS" . "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share") + ("ZDOTDIR" . "$XDG_CONFIG_HOME/zsh") + ("WINEPREFIX" . "$XDG_DATA_HOME/wineprefixes/default") + ("GOPATH" . "$XDG_DATA_HOME/go") + ("RUSTUP_HOME" . "$XDG_DATA_HOME/rustup") + ("PASSWORD_STORE_DIR" . "$XDG_DATA_HOME/pass") + ("PYTHON_HISTORY" . "$XDG_DATA_HOME/python/history") + ("NPM_CONFIG_USERCONFIG" . "$XDG_CONFIG_HOME/npm/npmrc") + ("NOTMUCH_CONFIG" . "$XDG_CONFIG_HOME/notmuch-config") + ("CARGO_HOME" . "$XDG_DATA_HOME/cargo") + ("WGETRC" . "$XDG_CONFIG_HOME/wgetrc") + ("MENULAUNCHER_DIR" . "$XDG_DATA_HOME/menulaunchers") + ("MBSYNCRC" . "$XDG_CONFIG_HOME/mbsync/config") + ("MANPATH" . "$MANPATH:$XDG_DATA_HOME/man") + ("_JAVA_AWT_WM_NONREPARENTING" . "1") + ("GUILE_LOAD_PATH" . "$HOME/.config/guix/current/share/guile/site/3.0:$GUILE_LOAD_PATH") + ("PATH" . "$CARGO_HOME/bin:$HOME/.local/bin:$HOME/scripts:$PATH"))) + +(define bash-aliases-service + (simple-service 'bash-aliases + home-bash-service-type + (home-bash-extension + (aliases shell-aliases)))) + +(define bash-environment-variables-service + (simple-service 'bash-aliases + home-bash-service-type + (home-bash-extension + (environment-variables shell-environment-variables)))) + +(define bash-profile + "") + +(define bashrc + " +# 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 + +# Setup eat integration +[ -n \"$EAT_SHELL_INTEGRATION_DIR\" ] && \ + source \"$EAT_SHELL_INTEGRATION_DIR/bash\" + +PS1='\\u@\\h \\w${GUIX_ENVIRONMENT:+ [env]}\\$ ' +#PS1='\\w \\e[1;31m>${GUIX_ENVIRONMENT:+>}\\e[1;0m ' +") + +(define (home-davmail-shepherd-service config) + (list + (shepherd-service + (documentation "Davmail exchange server for work emails") + (provision '(davmail)) + (respawn? #t) + (start #~(make-forkexec-constructor + (list (string-append + (getenv "HOME") + "/opt/davmail/start_davmail.sh")))) + (stop #~(make-kill-destructor))))) + +(define home-davmail-service-type + (service-type + (name 'davmail) + (description "Davmail exchange server for work emails") + (extensions + (list (service-extension + home-shepherd-service-type + home-davmail-shepherd-service))) + (default-value #f))) + +(define (home-emacs-daemon-shepherd-service config) + (list + (shepherd-service + (documentation "Emacs Daemon") + (provision '(emacs-server)) + (respawn? #f) + (modules '((srfi srfi-1))) + (start #~(make-forkexec-constructor + (list + #$(file-append + emacs + "/bin/emacs") + "--fg-daemon") + #:environment-variables (cons* + (string-append "GUILE_LOAD_PATH=" + (getenv "HOME") "/.config/guix/current/share/guile/site/3.0" + ":" + (getenv "GUILE_LOAD_PATH")) + (string-append "PATH=" + (getenv "HOME") "/scripts" + ":" + (getenv "PATH")) + (remove (lambda (var) + (or + (string-prefix? "GUILE_LOAD_PATH=" var) + (string-prefix? "PATH=" var))) + (default-environment-variables))))) + (stop #~(make-kill-destructor))))) + +(define home-emacs-daemon-service-type + (service-type + (name 'emacs-server) + (description "Starts Emacs Server") + (extensions + (list (service-extension + home-shepherd-service-type + home-emacs-daemon-shepherd-service))) + (default-value #f))) + +(define %theme-packages + (list mate-icon-theme-faenza adwaita-icon-theme)) + +(define %media-packages + (list mpv mpv-mpris yt-dlp playerctl gimp pavucontrol wireplumber)) + +(define %emacs-packages + (list emacs emacs-dumb-jump emacs-geiser emacs-geiser-guile + emacs-dash emacs-meow emacs-guix emacs-modus-themes + emacs-ef-themes emacs-minions emacs-olivetti emacs-zenburn-theme + emacs-eat emacs-vertico emacs-orderless emacs-marginalia emacs-company + emacs-yasnippet emacs-magit emacs-go-mode emacs-lua-mode emacs-rust-mode + emacs-zig-mode emacs-glsl-mode emacs-htmlize emacs-org-bullets emacs-notmuch + emacs-elfeed)) + +(define %dev-packages + (list fossil ncurses gdb gf + man-pages-posix man-pages man-db + tmux jq + (list ldns "drill"))) + +(define %misc-packages + (list xset flameshot xrandr arandr autorandr xwallpaper sxhkd freecad + nsxiv notmuch isync jrk-st)) + +(define-public work-home-config + (home-environment + (packages (append %misc-packages + %theme-packages + %media-packages + %dev-packages + %emacs-packages)) + (services + (list + (service home-bash-service-type + (home-bash-configuration + (guix-defaults? #f) + (bashrc (list (plain-file "bashrc" bashrc))) + (bash-profile (list (plain-file "bash_profile" bash-profile))))) + bash-aliases-service + bash-environment-variables-service + + (service home-emacs-daemon-service-type) + (service home-davmail-service-type) + + ;; (service home-sway-service-type + ;; (sway-configuration + ;; (variables `((mod . "Mod4") + ;; (left . "n") + ;; (right . "o") + ;; (down . "e") + ;; (up . "i") + ;; (term . ,(file-append foot "/bin/foot")))) + ;; (outputs + ;; (list (sway-output + ;; (identifier '*) + ;; (background (file-append sway + ;; "/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png"))))))) + + (service home-msmtp-service-type + (home-msmtp-configuration + (accounts + (list + (msmtp-account + (name "work") + (configuration + (msmtp-configuration + (host "localhost") + (from "koromanj@miltonhydro.com") + (port 1025) + (tls-starttls? #f) + (tls? #f) + (extra-content "auth plain") + (user "koromanj@miltonhydro.com") + (password-eval "pass koromanj@miltonhydro.com")))) + (msmtp-account + (name "personal") + (configuration + (msmtp-configuration + (host "smtp.purelymail.com") + (from "jake@jakekoroman.com") + (port 465) + (tls-starttls? #f) + (tls? #t) + (auth? #t) + (user "jake@jakekoroman.com") + (password-eval "pass jake@jakekoroman.com")))))))) + + (service home-pipewire-service-type) + (service home-dbus-service-type) + + (service home-shepherd-transient-service-type) + + (service home-gpg-agent-service-type + (home-gpg-agent-configuration + (pinentry-program (file-append pinentry-rofi "/bin/pinentry-rofi")) + (ssh-support? #t) + (default-cache-ttl 86400) + (max-cache-ttl 86400))) + + (service home-files-service-type + `((".guile" ,%default-dotguile) + (".Xdefaults" ,%default-xdefaults))) + + (service home-xdg-configuration-files-service-type + `(("gdb/gdbinit" ,%default-gdbinit) + ("nano/nanorc" ,%default-nanorc))))))) + +work-home-config diff --git a/guix/systems/work/system.scm b/guix/systems/work/system.scm @@ -0,0 +1,236 @@ +(define-module (systems work system) + #:use-module (systems work home) + + #:use-module (gnu) + #:use-module (gnu packages admin) + #:use-module (gnu packages chromium) + #:use-module (gnu packages containers) + #:use-module (gnu packages cups) + #:use-module (gnu packages curl) + #:use-module (gnu packages emacs) + #:use-module (gnu packages emacs-xyz) + #:use-module (gnu packages file) + #:use-module (gnu packages fonts) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages libreoffice) + #:use-module (gnu packages librewolf) + #:use-module (gnu packages linux) + #:use-module (gnu packages mail) + #:use-module (gnu packages password-utils) + #:use-module (gnu packages rdesktop) + #:use-module (gnu packages samba) + #:use-module (gnu packages suckless) + #:use-module (gnu packages terminals) + #:use-module (gnu packages version-control) + #:use-module (gnu packages vpn) + #:use-module (gnu packages wm) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + + #:use-module (nongnu packages linux) + #:use-module (nongnu packages mozilla) + #:use-module (nongnu system linux-initrd) + + #:use-module (gnu services containers) + #:use-module (gnu services cups) + #:use-module (gnu services desktop) + #:use-module (gnu services guix) + #:use-module (gnu services networking) + #:use-module (gnu services pm) + #:use-module (gnu services sddm) + #:use-module (gnu services shepherd) + #:use-module (gnu services ssh) + #:use-module (gnu services xorg) + + #:use-module (gnu system accounts)) + +(define %system-user-name "jake") + +(define %nonguix-signing-key + (plain-file "non-guix.pub" + "(public-key (ecc (curve Ed25519) (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))")) + +(define %desktop-packages + (list i3-wm i3status xrdb xterm font-iosevka ungoogled-chromium firefox librewolf + brightnessctl network-manager-applet dmenu curl btop git (list git "send-email") + password-store pass-otp rofi pinentry-rofi gnupg amdgpu-firmware + xdg-utils xss-lock file netcat-openbsd podman podman-compose xinit)) + +(define %work-packages + (list samba cifs-utils openconnect libreoffice freerdp)) + +(define %zsa-voyager-rules + (udev-rule "50-zsa.rules" + " +# Rules for Oryx web flashing and live training +KERNEL==\"hidraw*\", ATTRS{idVendor}==\"16c0\", MODE=\"0664\", GROUP=\"plugdev\" +KERNEL==\"hidraw*\", ATTRS{idVendor}==\"3297\", MODE=\"0664\", GROUP=\"plugdev\" +# Keymapp Flashing rules for the Voyager +SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"3297\", MODE:=\"0666\", SYMLINK+=\"ignition_dfu\" +")) + +(define garbage-collect-timer + (shepherd-timer '(garbage-collection) "0 16 * * 5" + #~("/run/current-system/profile/bin/guix" + "gc" "-d" "2m" "-F" "100G") ;; 100GB bc /gun/store is on the root partition which is ~512G. + #:documentation "Garbage collect at 16:00 every friday." + #:requirement '(guix-daemon))) + +(define updatedb-timer + (shepherd-timer '(updatedb) "0 12 * * *" + #~(#$(file-append findutils "/bin/updatedb") + "--prunepaths=/tmp /var/tmp /gnu/store") + #:documentation "Update file db every day at 12:00" + #:requirement '(user-processes))) + +(operating-system + (kernel linux) + (initrd microcode-initrd) + (firmware (list linux-firmware)) + (locale "en_CA.utf8") + (timezone "America/Toronto") + (keyboard-layout + (keyboard-layout + "us" + #:options '("ctrl:nocaps"))) + (host-name "work") + + ;; The list of user accounts ('root' is implicit). + (users (cons* (user-account + (name %system-user-name) + (comment "Jake") + (group "users") + (home-directory "/home/jake") + (supplementary-groups '("wheel" "netdev" "audio" "video" "plugdev"))) + %base-user-accounts)) + (groups (cons* (user-group + (name "plugdev")) + %base-groups)) + + (packages (append %desktop-packages + %work-packages + %base-packages)) + + (setuid-programs %default-privileged-programs) + (name-service-switch %mdns-host-lookup-nss) + + (services + (append (list + (service openssh-service-type) + (service tor-service-type) + (service cups-service-type + (cups-configuration + (extensions (list cups-filters)) + (web-interface? #t))) + (service tlp-service-type) + + (simple-service 'extra-hosts hosts-service-type + (list (host "10.172.91.160" "milton-myaccount.erthcorp.com"))) + + (udev-rules-service 'zsa-voyager %zsa-voyager-rules) + + ;; (service sddm-service-type) + (set-xorg-configuration + (xorg-configuration (keyboard-layout keyboard-layout))) + ;; sddm-service-type) + + (service rootless-podman-service-type + (rootless-podman-configuration + (subgids + (list (subid-range (name %system-user-name)))) + (subuids + (list (subid-range (name %system-user-name)))))) + (service iptables-service-type) + + (simple-service 'my-timers + shepherd-root-service-type + (list + updatedb-timer + garbage-collect-timer)) + + (service guix-home-service-type + `((,%system-user-name ,work-home-config)))) + + (modify-services %desktop-services + (guix-service-type config => (guix-configuration + (inherit config) + ;; XXX: seems to break NetworkManager + ;; https://issues.guix.gnu.org/78047#4 + ;; (privileged? #f) + (substitute-urls + (append (list "https://substitutes.nonguix.org") + %default-substitute-urls)) + (authorized-keys + (cons* %nonguix-signing-key + %default-authorized-guix-keys)))) + (delete gdm-service-type)))) + + (bootloader + (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (keyboard-layout keyboard-layout))) + + (mapped-devices + (list + (mapped-device + (source (uuid "b218be66-7f59-4990-8775-9abe9bec45fb")) + (target "enc") + (type luks-device-mapping)))) + + (file-systems (cons* + (file-system + (mount-point "/") + (device "/dev/mapper/enc") + (options "subvol=root") + (flags '(no-atime)) + (type "btrfs") + (dependencies mapped-devices)) + (file-system + (mount-point "/gnu") + (device "/dev/mapper/enc") + (options "subvol=gnu") + (flags '(no-atime)) + (type "btrfs") + (dependencies mapped-devices)) + (file-system + (mount-point "/home") + (device "/dev/mapper/enc") + (options "subvol=home") + (flags '(no-atime)) + (type "btrfs") + (dependencies mapped-devices)) + (file-system + (mount-point "/boot") + (device "/dev/mapper/enc") + (options "subvol=boot") + (type "btrfs") + (dependencies mapped-devices)) + (file-system + (mount-point "/boot/efi") + (device (uuid "ACA4-E018" 'fat32)) + (type "vfat")) + (file-system + (mount-point "/media/nas") + (type "nfs") + (device "192.168.0.95:/mnt/md0/public") + (options "user,rw") + (mount? #f) + (create-mount-point? #t)) + (file-system + (mount-point "/media/s") + (type "cifs") + (device "//mhshare.miltonhydro.com/shared") + (options "user,gid=users,credentials=/root/smb-creds,forcegid") + (mount? #f) + (create-mount-point? #t)) + (file-system + (mount-point "/media/r") + (type "cifs") + (device "//mhreport.miltonhydro.com/inetpub") + (options "user,gid=users,credentials=/root/smb-creds,forcegid") + (mount? #f) + (create-mount-point? #t)) + %base-file-systems))) diff --git a/guix_reconfigure.sh b/guix_reconfigure.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +echo Updating $(hostname) ... +sudo guix system reconfigure -L ~/opt/dotfiles-framework/guix/ ~/opt/dotfiles-framework/guix/systems/$(hostname)/system.scm diff --git a/guix_update_channels.sh b/guix_update_channels.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +GUIX_DIR="$HOME/.config/guix" +GUIX_CHANNELS="$GUIX_DIR/channels.scm" +GUIX_MY_CHANNELS="$GUIX_DIR/my-channels.scm" + +guix pull --channels="$GUIX_MY_CHANNELS" +guix describe -f channels > "$GUIX_CHANNELS" + diff --git a/my-channels.scm b/my-channels.scm @@ -0,0 +1,21 @@ +;; everything is on codeberg !! + +(list + (channel + (name 'nonguix) + (url "https://codeberg.org/nonguix/nonguix-mirror") + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) + (channel + (name 'guix) + ;; redirects to codeberg + (url "https://git.guix.gnu.org/guix.git") + (branch "master") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))