diff options
| author | jdlugosz963 <jdlugosz963@gmail.com> | 2023-07-02 15:36:22 +0200 |
|---|---|---|
| committer | jdlugosz963 <jdlugosz963@gmail.com> | 2023-07-02 15:36:22 +0200 |
| commit | e14390858839d7fd56b579d6489ea7bc88a5e530 (patch) | |
| tree | ff41ac387a8c0c3d4f135bf41d5f95b857d78bdc | |
| parent | 6156f86dd5797de5ea4f912b70d38963c6cf4ad4 (diff) | |
| download | dotfiles-e14390858839d7fd56b579d6489ea7bc88a5e530.tar.gz dotfiles-e14390858839d7fd56b579d6489ea7bc88a5e530.zip | |
Add GNU/Guix config files.
| -rwxr-xr-x | .bin/profile-add-all | 9 | ||||
| -rwxr-xr-x | .bin/system-reconfigure | 3 | ||||
| -rw-r--r-- | guix/jd/desktops/base.scm | 90 | ||||
| -rw-r--r-- | guix/jd/desktops/mimir.scm | 30 | ||||
| -rw-r--r-- | guix/jd/desktops/viking.scm | 29 | ||||
| -rwxr-xr-x | guix/jd/packages/patches/nm-pptp-autogen.patch | 15 | ||||
| -rw-r--r-- | guix/jd/packages/vpn.scm | 144 | ||||
| -rw-r--r-- | guix/jd/utils.scm | 25 |
8 files changed, 345 insertions, 0 deletions
diff --git a/.bin/profile-add-all b/.bin/profile-add-all new file mode 100755 index 0000000..bca4178 --- /dev/null +++ b/.bin/profile-add-all | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles | ||
| 4 | for i in $HOME/.config/guix/manifests/*; do | ||
| 5 | echo $i | ||
| 6 | MANIFEST_NAME=$(basename $i .scm) | ||
| 7 | mkdir -p "$GUIX_EXTRA_PROFILES"/"$MANIFEST_NAME" | ||
| 8 | guix package --manifest=$i --profile="$GUIX_EXTRA_PROFILES/$MANIFEST_NAME/$MANIFEST_NAME" | ||
| 9 | done | ||
diff --git a/.bin/system-reconfigure b/.bin/system-reconfigure new file mode 100755 index 0000000..c4c1a05 --- /dev/null +++ b/.bin/system-reconfigure | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | sudo -E guix system -L $HOME/dotfiles/guix reconfigure $HOME/dotfiles/guix/jd/desktops/$(hostname).scm \ No newline at end of file | ||
diff --git a/guix/jd/desktops/base.scm b/guix/jd/desktops/base.scm new file mode 100644 index 0000000..7618257 --- /dev/null +++ b/guix/jd/desktops/base.scm | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | (define-module (jd desktops base) | ||
| 2 | #:use-module (gnu) | ||
| 3 | #:use-module (jd packages vpn) | ||
| 4 | #:use-module (nongnu packages linux) | ||
| 5 | #:use-module (nongnu system linux-initrd)) | ||
| 6 | |||
| 7 | (use-package-modules wm gnome) | ||
| 8 | (use-service-modules cups desktop networking ssh xorg | ||
| 9 | docker virtualization pm sound) | ||
| 10 | |||
| 11 | ;; Odin is a base operating system | ||
| 12 | (define-public odin | ||
| 13 | (operating-system | ||
| 14 | (kernel linux) | ||
| 15 | (initrd microcode-initrd) | ||
| 16 | (firmware (list linux-firmware)) | ||
| 17 | |||
| 18 | (locale "en_US.utf8") | ||
| 19 | (timezone "Europe/Warsaw") | ||
| 20 | (keyboard-layout (keyboard-layout "pl")) | ||
| 21 | (host-name "odin") | ||
| 22 | |||
| 23 | (users (cons* (user-account | ||
| 24 | (name "jakub") | ||
| 25 | (comment "Jakub Dlugosz") | ||
| 26 | (group "users") | ||
| 27 | (home-directory "/home/jakub") | ||
| 28 | (supplementary-groups '("wheel" "netdev" "audio" "video"))) | ||
| 29 | %base-user-accounts)) | ||
| 30 | |||
| 31 | (packages (append (specifications->packages '("emacs" | ||
| 32 | "emacs-exwm" | ||
| 33 | |||
| 34 | "brightnessctl" | ||
| 35 | |||
| 36 | "bluez" | ||
| 37 | "bluez-alsa" | ||
| 38 | |||
| 39 | "xf86-input-libinput" | ||
| 40 | |||
| 41 | "nss-certs")) | ||
| 42 | |||
| 43 | %base-packages)) | ||
| 44 | |||
| 45 | (services | ||
| 46 | (append (list | ||
| 47 | (service xfce-desktop-service-type) | ||
| 48 | (service openssh-service-type) | ||
| 49 | (set-xorg-configuration | ||
| 50 | (xorg-configuration (keyboard-layout keyboard-layout))) | ||
| 51 | |||
| 52 | (service network-manager-service-type | ||
| 53 | (network-manager-configuration | ||
| 54 | (vpn-plugins (list | ||
| 55 | network-manager-pptp)))) | ||
| 56 | |||
| 57 | (service bluetooth-service-type | ||
| 58 | (bluetooth-configuration | ||
| 59 | (auto-enable? #t))) | ||
| 60 | |||
| 61 | (service docker-service-type) | ||
| 62 | (service libvirt-service-type | ||
| 63 | (libvirt-configuration | ||
| 64 | (unix-sock-group "libvirt") | ||
| 65 | (tls-port "16555"))) | ||
| 66 | |||
| 67 | (service sane-service-type) | ||
| 68 | (service cups-service-type | ||
| 69 | (cups-configuration | ||
| 70 | (web-interface? #t))) | ||
| 71 | |||
| 72 | (service thermald-service-type) | ||
| 73 | (service tlp-service-type | ||
| 74 | (tlp-configuration | ||
| 75 | (cpu-boost-on-ac? #t) | ||
| 76 | (wifi-pwr-on-bat? #t)))) | ||
| 77 | |||
| 78 | (modify-services %desktop-services | ||
| 79 | (delete network-manager-service-type)))) | ||
| 80 | (bootloader (bootloader-configuration | ||
| 81 | (bootloader grub-bootloader) | ||
| 82 | (targets (list "/boot/efi")) | ||
| 83 | (keyboard-layout keyboard-layout))) | ||
| 84 | |||
| 85 | (file-systems (cons* (file-system | ||
| 86 | (mount-point "/tmp") | ||
| 87 | (device "none") | ||
| 88 | (type "tmpfs") | ||
| 89 | (check? #f)) | ||
| 90 | %base-file-systems)))) | ||
diff --git a/guix/jd/desktops/mimir.scm b/guix/jd/desktops/mimir.scm new file mode 100644 index 0000000..a635831 --- /dev/null +++ b/guix/jd/desktops/mimir.scm | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | (define-module (jd desktops mimir) | ||
| 2 | #:use-module (jd desktops base) | ||
| 3 | #:use-module (gnu)) | ||
| 4 | |||
| 5 | |||
| 6 | (operating-system | ||
| 7 | (inherit odin) | ||
| 8 | (host-name "mimir") | ||
| 9 | |||
| 10 | (bootloader (bootloader-configuration | ||
| 11 | (bootloader grub-efi-bootloader) | ||
| 12 | (targets (list "/boot/efi")))) | ||
| 13 | |||
| 14 | |||
| 15 | (swap-devices (list (swap-space | ||
| 16 | (target (uuid | ||
| 17 | "658793cb-d374-426e-bcd5-00d032b003a0"))))) | ||
| 18 | |||
| 19 | (file-systems (cons* (file-system | ||
| 20 | (mount-point "/boot/efi") | ||
| 21 | (device (uuid "64D8-134F" | ||
| 22 | 'fat32)) | ||
| 23 | (type "vfat")) | ||
| 24 | (file-system | ||
| 25 | (mount-point "/") | ||
| 26 | (device (uuid | ||
| 27 | "1f9304b0-5623-4248-ab66-534b5ac85876" | ||
| 28 | 'ext4)) | ||
| 29 | (type "ext4")) %base-file-systems))) | ||
| 30 | |||
diff --git a/guix/jd/desktops/viking.scm b/guix/jd/desktops/viking.scm new file mode 100644 index 0000000..80ddb88 --- /dev/null +++ b/guix/jd/desktops/viking.scm | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | (define-module (jd desktops mimir) | ||
| 2 | #:use-module (jd desktops base) | ||
| 3 | #:use-module (gnu)) | ||
| 4 | |||
| 5 | (operating-system | ||
| 6 | (inherit odin) | ||
| 7 | (host-name "mimir") | ||
| 8 | |||
| 9 | (bootloader (bootloader-configuration | ||
| 10 | (bootloader grub-efi-bootloader) | ||
| 11 | (targets (list "/boot/efi")))) | ||
| 12 | |||
| 13 | |||
| 14 | (swap-devices (list (swap-space | ||
| 15 | (target (uuid | ||
| 16 | "658793cb-d374-426e-bcd5-00d032b003a0"))))) | ||
| 17 | |||
| 18 | (file-systems (cons* (file-system | ||
| 19 | (mount-point "/boot/efi") | ||
| 20 | (device (uuid "64D8-134F" | ||
| 21 | 'fat32)) | ||
| 22 | (type "vfat")) | ||
| 23 | (file-system | ||
| 24 | (mount-point "/") | ||
| 25 | (device (uuid | ||
| 26 | "1f9304b0-5623-4248-ab66-534b5ac85876" | ||
| 27 | 'ext4)) | ||
| 28 | (type "ext4")) %base-file-systems))) | ||
| 29 | |||
diff --git a/guix/jd/packages/patches/nm-pptp-autogen.patch b/guix/jd/packages/patches/nm-pptp-autogen.patch new file mode 100755 index 0000000..ef5c731 --- /dev/null +++ b/guix/jd/packages/patches/nm-pptp-autogen.patch | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | diff --git a/autogen.sh b/autogen.sh | ||
| 2 | index 4ed20c6..34834a6 100755 | ||
| 3 | --- a/autogen.sh | ||
| 4 | +++ b/autogen.sh | ||
| 5 | @@ -13,8 +13,6 @@ PKG_NAME=NetworkManager-pptp | ||
| 6 | exit 1 | ||
| 7 | } | ||
| 8 | |||
| 9 | -(cd $srcdir; | ||
| 10 | - autoreconf --install --symlink && | ||
| 11 | - ./configure --enable-maintainer-mode --enable-more-warnings=error $@ | ||
| 12 | -) | ||
| 13 | +cd $srcdir | ||
| 14 | +autoreconf --install --symlink | ||
| 15 | |||
diff --git a/guix/jd/packages/vpn.scm b/guix/jd/packages/vpn.scm new file mode 100644 index 0000000..2542bae --- /dev/null +++ b/guix/jd/packages/vpn.scm | |||
| @@ -0,0 +1,144 @@ | |||
| 1 | (define-module (jd packages vpn) | ||
| 2 | #:use-module (jd utils) | ||
| 3 | |||
| 4 | #:use-module (gnu packages) | ||
| 5 | #:use-module (gnu packages samba) ;; PPP | ||
| 6 | #:use-module (gnu packages perl) | ||
| 7 | #:use-module (gnu packages linux) | ||
| 8 | #:use-module (gnu packages gnome) | ||
| 9 | #:use-module (gnu packages glib) | ||
| 10 | #:use-module (gnu packages pkg-config) | ||
| 11 | #:use-module (gnu packages build-tools) | ||
| 12 | #:use-module (gnu packages gettext) | ||
| 13 | #:use-module (gnu packages autotools) | ||
| 14 | #:use-module (gnu packages gtk) | ||
| 15 | |||
| 16 | #:use-module (guix gexp) | ||
| 17 | #:use-module (guix git-download) | ||
| 18 | #:use-module ((guix licenses) #:prefix license:) | ||
| 19 | #:use-module (guix build-system) | ||
| 20 | #:use-module (guix build-system gnu) | ||
| 21 | #:use-module (guix utils) | ||
| 22 | #:use-module (guix packages) | ||
| 23 | #:use-module (guix download)) | ||
| 24 | |||
| 25 | |||
| 26 | |||
| 27 | (define-public pptp-client | ||
| 28 | (package | ||
| 29 | (name "pptp-client") | ||
| 30 | (version "1.10.0") | ||
| 31 | (source | ||
| 32 | (origin | ||
| 33 | (method git-fetch) | ||
| 34 | (uri (git-reference | ||
| 35 | (url "https://git.code.sf.net/p/pptpclient/git") | ||
| 36 | (commit version))) | ||
| 37 | (sha256 | ||
| 38 | (base32 "0qixs1dxrr1x4sgi22250231p9kqi8l8ifawxn6ws1d3p7mc6ggh")))) | ||
| 39 | |||
| 40 | (build-system gnu-build-system) | ||
| 41 | (arguments | ||
| 42 | '(#:phases | ||
| 43 | (modify-phases %standard-phases | ||
| 44 | (delete 'configure) | ||
| 45 | (delete 'check) | ||
| 46 | (add-before 'build 'change-location-of-pppd | ||
| 47 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 48 | (substitute* "Makefile" | ||
| 49 | (("^PPPD.=.*$") | ||
| 50 | (string-append "PPPD = " | ||
| 51 | (which "pppd"))) | ||
| 52 | (("^IP.=.*$") | ||
| 53 | (string-append "IP = " | ||
| 54 | (which "ip")))))) | ||
| 55 | (replace 'install | ||
| 56 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 57 | (let* ((out (assoc-ref outputs "out")) | ||
| 58 | (sbin (string-append out "/sbin"))) | ||
| 59 | (mkdir-p sbin) | ||
| 60 | (install-file "pptp" sbin) | ||
| 61 | #t)))))) | ||
| 62 | (inputs | ||
| 63 | (list perl)) | ||
| 64 | (native-inputs | ||
| 65 | (list ppp | ||
| 66 | iproute)) | ||
| 67 | (home-page "https://sourceforge.net/projects/pptpclient/") | ||
| 68 | (synopsis "PPTP-Client") | ||
| 69 | (description | ||
| 70 | "pptp is an implementation of the PPTP protocol for Linux and | ||
| 71 | other Unix systems.") | ||
| 72 | (license license:gpl2+) | ||
| 73 | (properties `((upstream-name . "NetworkManager-pptp"))))) | ||
| 74 | |||
| 75 | |||
| 76 | ;; ================================ | ||
| 77 | |||
| 78 | (define-public network-manager-pptp | ||
| 79 | (package | ||
| 80 | (name "network-manager-pptp") | ||
| 81 | (version "1.2.12") | ||
| 82 | (source | ||
| 83 | (origin | ||
| 84 | (method git-fetch) | ||
| 85 | (uri (git-reference | ||
| 86 | (url "https://gitlab.gnome.org/GNOME/NetworkManager-pptp.git") | ||
| 87 | (commit version))) | ||
| 88 | (file-name (git-file-name name version)) | ||
| 89 | |||
| 90 | (sha256 | ||
| 91 | (base32 "1prl14106kfl5x56v9adwi4wqwrh6k3chkimjpd0clwy3drywhcr")) | ||
| 92 | (patches (jd-search-patches "nm-pptp-autogen.patch")))) | ||
| 93 | |||
| 94 | (build-system gnu-build-system) | ||
| 95 | (arguments | ||
| 96 | '(#:configure-flags '("--enable-absolute-paths" | ||
| 97 | ; "--localstatedir=/var" | ||
| 98 | "--with-gtk4=yes") | ||
| 99 | #:phases | ||
| 100 | (modify-phases %standard-phases | ||
| 101 | (add-after 'configure 'patch-path | ||
| 102 | (lambda* (#:key inputs #:allow-other-keys #:rest args) | ||
| 103 | (let* ((pppd (search-input-file inputs "/sbin/pppd")) | ||
| 104 | (pptp (search-input-file inputs "/sbin/pptp")) | ||
| 105 | (modprobe (search-input-file inputs "/bin/modprobe")) | ||
| 106 | (pretty-pppd (string-append "\"" pppd "\"")) | ||
| 107 | (pretty-pptp (string-append "\"" pptp "\""))) | ||
| 108 | |||
| 109 | (substitute* "src/nm-pptp-service.c" | ||
| 110 | (("\"/usr/local/sbin/pppd\"") pretty-pppd) | ||
| 111 | (("\"/usr/sbin/pppd\"") pretty-pppd) | ||
| 112 | (("\"/sbin/pppd\"") pretty-pppd) | ||
| 113 | (("\"/usr/local/sbin/pptp\"") pretty-pptp) | ||
| 114 | (("\"/usr/sbin/pptp\"") pretty-pptp) | ||
| 115 | (("\"/sbin/pptp\"") pretty-pptp) | ||
| 116 | (("/sbin/modprobe") modprobe)))))))) | ||
| 117 | (native-inputs | ||
| 118 | (list intltool | ||
| 119 | `(,glib "bin") | ||
| 120 | glib | ||
| 121 | `(,gtk "bin") | ||
| 122 | pkg-config)) | ||
| 123 | (inputs | ||
| 124 | (list autoconf | ||
| 125 | autoconf-archive | ||
| 126 | gnulib | ||
| 127 | gnu-gettext | ||
| 128 | automake | ||
| 129 | gtk+ | ||
| 130 | gtk | ||
| 131 | kmod | ||
| 132 | libtool | ||
| 133 | network-manager | ||
| 134 | libnma | ||
| 135 | libsecret | ||
| 136 | ppp | ||
| 137 | pptp-client)) | ||
| 138 | (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN") | ||
| 139 | (synopsis "PPTP plug-in for NetworkManager") | ||
| 140 | (description | ||
| 141 | "This extension of NetworkManager allows it to take care of connections | ||
| 142 | to virtual private networks (VPNs) via pptp.") | ||
| 143 | (license license:gpl2+) | ||
| 144 | (properties `((upstream-name . "NetworkManager-pptp"))))) | ||
diff --git a/guix/jd/utils.scm b/guix/jd/utils.scm new file mode 100644 index 0000000..5be7fa9 --- /dev/null +++ b/guix/jd/utils.scm | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | (define-module (jd utils) | ||
| 2 | #:export (jd-search-patches)) | ||
| 3 | |||
| 4 | ;; This code is copied and modified from (gnu packages) module. | ||
| 5 | |||
| 6 | (define %jd-patch-path | ||
| 7 | (make-parameter | ||
| 8 | (map (lambda (directory) | ||
| 9 | (let ((jd-patch-dir (string-append directory "/jd/packages/patches"))) | ||
| 10 | (if (and (file-exists? jd-patch-dir) | ||
| 11 | (file-is-directory? jd-patch-dir)) | ||
| 12 | jd-patch-dir | ||
| 13 | directory))) | ||
| 14 | %load-path))) | ||
| 15 | |||
| 16 | (define (jd-search-patch file-name) | ||
| 17 | "Search the patch FILE-NAME. Raise an error if not found." | ||
| 18 | (or (search-path (%jd-patch-path) file-name) | ||
| 19 | (raise (string-append file-name | ||
| 20 | ": patch not found")))) | ||
| 21 | |||
| 22 | (define-syntax-rule (jd-search-patches file-name ...) | ||
| 23 | "Return the list of absolute file names corresponding to each | ||
| 24 | FILE-NAME found in %JD-PATCH-PATH." | ||
| 25 | (list (jd-search-patch file-name) ...)) | ||
