Compare

1ab069379b67fc3e8801f5e0eeaafbf147c3301fbroken-new-portal · 14 commits

merge base 1ab069379b67…

Changed files

Commits

HashSubjectAuthorDate
c12f7856 added initial, but broken, code Ryan Schanzenbacher
7dfd35ba FINALLY added netcat to my profile Ryan Schanzenbacher
fe9be57c gnunet and rust Ryan Schanzenbacher
52fc10ce transparency Ryan Schanzenbacher
5d9d6bcd added iommu Ryan Schanzenbacher
6089f971 fixed waybar? Ryan Schanzenbacher
04dbaab8 updated ryan77627
e2cc3f5f test 1 for auto deploy Ryan Schanzenbacher
a3a44f90 some deploy.sh changes Ryan Schanzenbacher
297ef48f added firefox native Ryan Schanzenbacher
9f69bb20 fixed shebang Ryan Schanzenbacher
24aab6a9 updated deploy script Ryan Schanzenbacher
33a7e152 preparing deploy script Ryan Schanzenbacher
b53809f9 nvim settings update Ryan Schanzenbacher
diff --git a/RyanThinkpad.scm b/RyanThinkpad.scm
index bfacd6b..1066bac 100644
--- a/RyanThinkpad.scm
+++ b/RyanThinkpad.scm
@@ -3,6 +3,10 @@
(operating-system
(inherit base-operating-system)
+ (kernel-arguments (append (list "intel_iommu=on")
+ %default-kernel-arguments))
+ (initrd-modules (cons* "vfio_pci" "vfio" "vfio_iommu_type1"
+ %base-initrd-modules))
(host-name "RyanThinkpad")
(mapped-devices (list (mapped-device
(source (uuid
diff --git a/c.scm b/c.scm
new file mode 100644
index 0000000..afbc055
--- /dev/null
+++ b/c.scm
@@ -0,0 +1,6 @@
+(use-modules (guix ci))
+
+(list (channel-with-substitutes-available
+ %default-guix-channel
+ "https://ci.guix.gnu.org")
+ )
diff --git a/channels.scm b/channels.scm
index fbdff0a..405dd1c 100644
--- a/channels.scm
+++ b/channels.scm
@@ -3,7 +3,7 @@
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(commit
- "d43b53c476b4e9322b31274b788e851d37e72302")
+ "40e78353a4699b8edb6600d82df648914c9110b9")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
@@ -14,7 +14,7 @@
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(commit
- "1a3082c574077aaf6771ff927e725fc390a2d531")
+ "bb184bd0a8f91beec3a00718759e96c7828853de")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
@@ -25,7 +25,7 @@
(url "https://codeberg.org/hako/rosenthal.git")
(branch "trunk")
(commit
- "129ca6fe164bf8b5a37357bab8c5229b611f1df2")
+ "58ad8f96b670fd58c474d188be7ae8fa0840b791")
(introduction
(make-channel-introduction
"7677db76330121a901604dfbad19077893865f35"
diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 0000000..f27d6c9
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,93 @@
+#!/run/current-system/profile/bin/bash
+
+gather_env() {
+ # Gather needed information
+ echo -n "Type 'e' for encrypted or 'd' for decrypted install: "
+ read install_type
+
+ echo -n "Type system hostname: "
+ read install_hostname
+
+ echo -n "Type device file for ROOT data: "
+ read root_dev
+
+ echo -n "Type device file for BOOT data: "
+ read boot_dev
+
+ echo -n "Type device file for SWAP: "
+ read swap_dev
+
+}
+
+copy_and_prepare() {
+ # Associate devs with uuids
+ root_uuid=`blkid $root_dev | awk -F\" '{print $2}'`
+ boot_uuid=`blkid $boot_dev | awk -F\" '{print $2}'`
+ swap_uuid=`blkid $swap_dev | awk -F\" '{print $2}'`
+ # Let's a go!
+ echo "Information gathered. Deploying Guix on $root_dev ($root_uuid) with boot on $boot_dev ($boot_uuid) and swap on $swap_dev ($swap_uuid)"
+ echo -n "Proceed? (y/n): "
+ read install_choice
+
+ if [ "$install_choice" != "y" ]
+ then
+ echo "Bailing!"
+ exit 1
+ fi
+
+ # We are installing!
+ # Copy template to root of repo
+ if [ "$install_type" == "e" ]
+ then
+ cp ./modules/ryan-config/deploy-templates/HostTemplateEncrypted ./$install_hostname.scm
+ elif [ "$install_type" == "d" ]
+ then
+ cp ./modules/ryan-config/deploy-templates/HostTemplate ./$install_hostname.scm
+ else
+ echo "Invalid install type (not d or e), bailing!"
+ exit 1
+ fi
+
+ # Correct the information
+ sed -i "s/ChangeMe_ROOT/$root_uuid/" ./$install_hostname.scm
+ sed -i "s/ChangeMe_BOOTEFI/$boot_uuid/" ./$install_hostname.scm
+ sed -i "s/ChangeMe_SWAP/$swap_uuid/" ./$install_hostname.scm
+ sed -i "s/ChangeMe_HOST/$install_hostname/" ./$install_hostname.scm
+
+ # Install!
+ echo "Mounting /gnu/store to destination disk..."
+ herd start cow-store /mnt
+
+ # Install the non-guix signing keys
+ echo "Installing non-guix signing keys for substitutes..."
+ curl -o sign-key.pub https://substitutes.nonguix.org/signing-key.pub
+ guix archive --authorize < sign-key.pub
+}
+
+install_system() {
+ echo "Beginning install!"
+ guix time-machine -C ./channels.scm -- system -L ./modules --substitute-urls='https://substitutes.nonguix.org https://bordeaux.guix.gnu.org https://ci.guix.gnu.org' init $install_hostname.scm /mnt
+}
+
+install_user_env() {
+ # System should be installed now, we can chroot in and configure the user profile now
+ # NOTE: This assumes the user "ryan" for things, so change the USER var if you change your username
+
+ # Copy some files over to prepare for reboot
+ USER=ryan
+ guix shell git -- git clone https://git.stationery.faith/ryan77627/guix-dotfiles /mnt/home/$USER/.config/guix
+
+ cp ~/guix-dotfiles/$install_hostname.scm /mnt/home/$USER/.config/guix/$install_hostname.scm
+ cp ~/guix-dotfiles/modules/ryan-config/user_first_run.sh /mnt/home/$USER/.bashrc
+
+ chown 1000:1000 -R /mnt/home/ryan
+
+}
+
+gather_env
+copy_and_prepare
+install_system
+install_user_env
+
+# Reboot the machine at this point!
+reboot
diff --git a/home-config/alacritty/alacritty.yml b/home-config/alacritty/alacritty.yml
index becd2f6..4fbd991 100644
--- a/home-config/alacritty/alacritty.yml
+++ b/home-config/alacritty/alacritty.yml
@@ -1,3 +1,5 @@
+window:
+ opacity: 0.70
font:
size: 15
normal:
diff --git a/home-config/deploy-flag b/home-config/deploy-flag
new file mode 100644
index 0000000..e69de29
diff --git a/home-config/home-configuration.scm b/home-config/home-configuration.scm
index 374f673..b84d5e0 100644
--- a/home-config/home-configuration.scm
+++ b/home-config/home-configuration.scm
@@ -17,7 +17,8 @@
(gnu home services gnupg)
(gnu home services)
(ryan-services pipewire)
- (ryan-packages freedesktop))
+ (ryan-packages freedesktop)
+ (ryan-packages mozilla))
(define my-neovim
(package
@@ -35,6 +36,7 @@
"libnotify"
"fzf"
"waypipe"
+ "gnunet"
"qrencode"
"binutils"
"gcc-toolchain"
@@ -48,6 +50,7 @@
"gnupg"
"lsof"
"pavucontrol"
+ "netcat"
"bind:utils"
"font-cns11643"
"syncthing"
@@ -92,7 +95,7 @@
"git"
"node"
"git-lfs"))
- (list my-neovim wl-mirror)))
+ (list my-neovim wl-mirror firefox-wayland-new)))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
diff --git a/home-config/nix-home-manager/home.nix b/home-config/nix-home-manager/home.nix
index f5833e4..8a37125 100644
--- a/home-config/nix-home-manager/home.nix
+++ b/home-config/nix-home-manager/home.nix
@@ -30,6 +30,9 @@
yt-dlp
xdg-desktop-portal-hyprland
pass
+ rustup
+ gcc
+ pkg-config
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
diff --git a/home-config/nvim/config/init.vim b/home-config/nvim/config/init.vim
index b643b99..fc06b50 100644
--- a/home-config/nvim/config/init.vim
+++ b/home-config/nvim/config/init.vim
@@ -5,6 +5,8 @@ set sw=4
set sts=4
set et
set mouse=
+set cursorline
+set cc=79
call plug#begin(stdpath('data') . '/plugged')
"Plug 'prabirshrestha/vim-lsp'
diff --git a/home-config/waybar/config b/home-config/waybar/config
index 18ca0cc..3dff06a 100644
--- a/home-config/waybar/config
+++ b/home-config/waybar/config
@@ -3,14 +3,15 @@
"position": "top",
"height": 30,
- "modules-left": ["wlr/workspaces", "hyprland/submap"],
+ "modules-left": ["hyprland/workspaces", "hyprland/submap"],
"modules-center": ["hyprland/window"],
"modules-right": ["tray", "custom/spotify", "custom/weather", "custom/mail", "custom/storage", "backlight", "bluetooth", "pulseaudio", "network", "idle_inhibitor", "battery", "clock"],
"hyprland/submap": {
"format": " {}"
},
- "wlr/workspaces": {
- "format": "{name}",
+ "hyprland/workspaces": {
+ "format": "{id}",
+ "all-outputs": false,
"disable-scroll": true
},
"hyprland/window": {
diff --git a/modules/ryan-config/deploy-templates/HostTemplate b/modules/ryan-config/deploy-templates/HostTemplate
new file mode 100644
index 0000000..9718c51
--- /dev/null
+++ b/modules/ryan-config/deploy-templates/HostTemplate
@@ -0,0 +1,19 @@
+(use-modules (ryan-config base-system)
+ (gnu))
+
+(operating-system
+ (inherit base-operating-system)
+ (host-name "ChangeMe_HOST")
+ (file-systems (cons* (file-system
+ (mount-point "/")
+ (device (uuid "ChangeMe_ROOT"
+ 'ext4))
+ (type "ext4"))
+ (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "ChangeMe_BOOTEFI"
+ 'fat32))
+ (type "vfat")) %base-file-systems))
+ (swap-devices
+ (list
+ (swap-space (target (uuid "ChangeMe_SWAP"))))))
diff --git a/modules/ryan-config/deploy-templates/HostTemplateEncrypted b/modules/ryan-config/deploy-templates/HostTemplateEncrypted
new file mode 100644
index 0000000..5d74aaa
--- /dev/null
+++ b/modules/ryan-config/deploy-templates/HostTemplateEncrypted
@@ -0,0 +1,24 @@
+(use-modules (ryan-config base-system)
+ (gnu))
+
+(operating-system
+ (inherit base-operating-system)
+ (host-name "ChangeMe_HOST")
+ (mapped-devices (list (mapped-device
+ (source (uuid
+ "ChangeMe_ROOT"))
+ (target "sysroot")
+ (type luks-device-mapping))))
+ (file-systems (cons* (file-system
+ (mount-point "/")
+ (device "/dev/mapper/sysroot")
+ (type "ext4")
+ (dependencies mapped-devices))
+ (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "ChangeMe_BOOTEFI"
+ 'fat32))
+ (type "vfat")) %base-file-systems))
+ (swap-devices
+ (list
+ (swap-space (target (uuid "ChangeMe_SWAP"))))))
diff --git a/modules/ryan-config/user_first_run.sh b/modules/ryan-config/user_first_run.sh
new file mode 100644
index 0000000..6dd77fd
--- /dev/null
+++ b/modules/ryan-config/user_first_run.sh
@@ -0,0 +1,20 @@
+#!/run/current-system/profile/bin/bash
+
+# This should run on user first logon, so let's a go!
+# First, we should run a guix pull
+
+guix pull
+
+hash guix
+
+guix home -L ~/.config/guix/modules reconfigure ~/.config/guix/home-config/home-configuration.scm
+
+sudo herd restart nix-daemon
+
+nix-channel --update
+
+nix-shell '<home-manager>' -A install
+
+source ~/.bashrc
+
+home-manager switch
diff --git a/modules/ryan-packages/freedesktop.scm b/modules/ryan-packages/freedesktop.scm
index 7fb0652..69519cb 100644
--- a/modules/ryan-packages/freedesktop.scm
+++ b/modules/ryan-packages/freedesktop.scm
@@ -18,7 +18,9 @@
#:use-module (gnu packages cmake)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages man)
#:use-module (rosenthal packages wm)
#:use-module (gnu packages wm))
@@ -39,7 +41,7 @@
(native-inputs (modify-inputs (package-native-inputs xdg-desktop-portal-wlr)
(append wlroots)))))
-(define-public xdg-desktop-portal-hyprland
+(define xdg-desktop-portal-hyprland-old-original
(package
(name "xdg-desktop-portal-hyprland")
(version "0.5.0")
@@ -132,4 +134,78 @@
(description "mirror displays")
(license license:expat)))
-wl-mirror
+(define-public xdg-desktop-portal-hyprland
+ (package
+ (name "xdg-desktop-portal-hyprland")
+ (version "1.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "05gcdg3fw7plc9fri6rpq9la1xjij93jqkqmq57mrqjgwg3jlmrb"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:imported-modules
+ (append %meson-build-system-modules
+ %qt-build-system-modules)
+ #:modules
+ '((guix build utils)
+ (guix build meson-build-system)
+ ((guix build qt-build-system) #:prefix qt:))
+ #:tests? #f ;No tests
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "." "\\.cp?*$")
+ (("/bin/sh") "sh")
+ (("\\<(sh|grim|slurp)\\>" _ cmd)
+ (search-input-file inputs (string-append "/bin/" cmd)))
+ (("\"(hyprland-share-picker)\"" _ cmd)
+ (string-append "\"" #$output "/bin/" cmd "\"")))))
+ ;; After building the portal, we need to build the share selector
+ ;; using qt
+ (add-after 'install 'chdir
+ (lambda _
+ (chdir "../source/hyprland-share-picker/")))
+ (add-after 'chdir 'qt-build
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ ((assoc-ref qt:%standard-phases 'build)
+ #:make-flags make-flags
+ #:parallel-build? parallel-build?)))
+ (add-after 'qt-build 'install-hyprland-share-picker
+ (lambda _
+ (install-file "build/hyprland-share-picker"
+ (string-append #$output "/bin"))))
+ (add-after 'install-hyprland-share-picker 'qt-wrap
+ (assoc-ref qt:%standard-phases 'qt-wrap)))))
+ (native-inputs (list cmake-minimal pkg-config))
+ (inputs
+ (list bash-minimal
+ basu
+ grim
+ hyprland-protocols
+ libinih
+ mesa
+ pipewire
+ sdbus-c++
+ qtbase-5
+ slurp
+ `(,util-linux "lib")
+ wayland
+ wayland-protocols))
+ (home-page "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
+ (synopsis "XDG Desktop Portal backend for Hyprland")
+ (description
+ "This package provides @code{xdg-desktop-portal-hyprland}, which extends
+@code{xdg-desktop-portal-wlr} for Hyprland with support for
+@code{xdg-desktop-portal} screenshot and casting interfaces, while adding a few
+extra portals specific to Hyprland, mostly for window sharing.")
+ (license license:expat)))
+
+xdg-desktop-portal-hyprland
diff --git a/modules/ryan-packages/mozilla.scm b/modules/ryan-packages/mozilla.scm
new file mode 100644
index 0000000..8959b07
--- /dev/null
+++ b/modules/ryan-packages/mozilla.scm
@@ -0,0 +1,62 @@
+(define-module (ryan-packages mozilla)
+ #:use-module (gnu)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages linux)
+ #:use-module (nonguix build-system binary)
+ #:use-module (guix build-system trivial)
+ #:use-module (nongnu packages mozilla))
+
+(define firefox*
+ (package/inherit
+ firefox
+ (inputs
+ (modify-inputs
+ (package-inputs firefox)
+ (delete "pipewire")
+ (append pipewire)))))
+
+(define-public firefox-wayland-new
+ (package
+ (inherit firefox*)
+ (name "firefox-wayland-new")
+ (native-inputs '())
+ (inputs
+ `(("bash" ,bash-minimal)
+ ("pipewire" ,pipewire)
+ ("firefox" ,firefox*)))
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((bash (assoc-ref %build-inputs "bash"))
+ (firefox (assoc-ref %build-inputs "firefox"))
+ (pipewire (assoc-ref %build-inputs "pipewire"))
+ (out (assoc-ref %outputs "out"))
+ (exe (string-append out "/bin/firefox")))
+ (mkdir-p (dirname exe))
+
+ (call-with-output-file exe
+ (lambda (port)
+ ;; NOTE: added "export LD_LIBRARY_PATH=pipewire"
+ ;; maybe this can be done better with `wrap-programm'
+ (format port "#!~a \n
+export LD_LIBRARY_PATH=~a \n
+export MOZ_ENABLE_WAYLAND=1 \n
+exec ~a $@\n"
+ (string-append bash "/bin/bash")
+ (string-append pipewire "/lib")
+ (string-append firefox "/bin/firefox"))))
+ (chmod exe #o555)
+
+ ;; Provide the manual and .desktop file.
+ (copy-recursively (string-append firefox "/share")
+ (string-append out "/share"))
+ (substitute* (string-append
+ out "/share/applications/firefox.desktop")
+ ((firefox) out))
+ #t))))))