diff --git a/glicid/packages/containers.scm b/glicid/packages/containers.scm index b3b9353..ec7809f 100644 --- a/glicid/packages/containers.scm +++ b/glicid/packages/containers.scm @@ -74,3 +74,62 @@ (synopsis "Manage containers, images, pods, and their volumes") (description "Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers.") (license license:asl2.0))) + +(define-public podman-with-overlayfs + (package + (name "podman") + (version "4.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/containers/podman") + (commit (string-append "v" version)))) + (sha256 (base32 "145v7cq1y1v5kjdlg0vl70y693flagw4m60vm95wizibrf4byv9w")) + (modules '((guix build utils))) + (snippet '(begin + (substitute* "Makefile" ((".*hack/btrfs.*") "")) + ; we build without doc + (substitute* "Makefile" (("all: binaries docs") "all: binaries")) + (substitute* "Makefile" (("install: install.bin install.remote install.man install.systemd") "install: install.bin install.remote install.systemd")))))) + (build-system gnu-build-system) + (arguments + (list + #:make-flags + #~(list #$(string-append "CC=" (cc-for-target)) + (string-append "PREFIX=" #$output)) + #:tests? #f + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'set-env + (lambda* (#:key inputs #:allow-other-keys) + (setenv "HOME" "/tmp"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "localsystem") + (invoke "make" "remotesystem")))) + (add-after 'unpack 'fix-hardcoded-paths + (lambda _ + (substitute* (find-files "libpod" "\\.go") + (("exec.LookPath[(][\"]slirp4netns[\"][)]") (string-append "exec.LookPath(\"" (which "slirp4netns") "\")"))) + (substitute* "hack/install_catatonit.sh" + (("CATATONIT_PATH=\"[^\"]+\"") (string-append "CATATONIT_PATH=" (which "true")))) + (substitute* "vendor/github.com/containers/common/pkg/config/config_linux.go" + (("/usr/local/libexec/podman") (string-append #$output "/bin"))) + (substitute* "vendor/github.com/containers/common/pkg/config/default.go" + (("/usr/libexec/podman/conmon") (which "conmon")) + (("/usr/local/libexec/cni") (string-append #$(this-package-input "cni-plugins") "/bin")) + (("/usr/bin/crun") (which "crun"))))) + (add-after 'install 'install-completions + (lambda _ + (invoke "make" "install.completions" + (string-append "PREFIX=" #$output))))))) + (inputs (list btrfs-progs gnu:cni-plugins gnu:conmon gnu:crun gpgme go-github-com-go-md2man iptables libassuan libseccomp libselinux gnu:slirp4netns)) + (native-inputs (list bats git go-1.18 pkg-config python)) + (home-page "https://podman.io") + (synopsis "Manage containers, images, pods, and their volumes") + (description "Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers.") + (license license:asl2.0))) diff --git a/glicid/services/rc-local.scm b/glicid/services/rc-local.scm index 0bac40e..a91ddc7 100644 --- a/glicid/services/rc-local.scm +++ b/glicid/services/rc-local.scm @@ -31,7 +31,7 @@ (shepherd-service (provision '(rc-local)) (documentation "Run rc-local.") - (requirement '(user-processes)) + (requirement '(user-processes udev)) (respawn? #f) (one-shot? #t) (start #~(make-forkexec-constructor