expand usage of guix home-manager u noob #3

Closed
opened 2022-08-30 17:09:46 +02:00 by kreyren ยท 24 comments
No description provided.
Owner

..come again? :D not sure I follow.

..come again? :D not sure I follow.
Author
* https://guix.gnu.org/en/blog/2022/keeping-ones-home-tidy * https://guix.gnu.org/manual/devel/en/html_node/Home-Configuration.html * https://github.com/nix-community/home-manager * https://github.com/ghostylee/nix-home Welcome to the 21st century ^-^
Owner

blah blah ... home-manager ... blah blah

hang on..did you see this?

> blah blah ... home-manager ... blah blah hang on..did you see [this](https://git.dotya.ml/wanderer/dotfiles/commit/a907d4236662751cd25829058c9aa5e747db4aa5)?
Owner

it's a work in progress, I just started with home-manager but I'll get there :)

it's a work in progress, I just started with `home-manager` but I'll get there :)
Owner

how do you manage your dotfiles @kreyren ?

how do you manage your dotfiles @kreyren ?
kreyren changed title from Get {g,}nix-home u noob to Get {gu,n}ix-home u noob 2022-08-30 17:23:01 +02:00
Author

how do you manage your dotfiles @kreyren ? -- @wanderer (#3 (comment))

User-specific things with guix-home

Beyond that I keep things like emacs default and make project-specific configuration so that all developers have access to a standard working environment currently projected to be launched from kreyren/pman to get all the system dependencies, env variables, etc.. into a reproducible environment e.g. everyone using the same version of dependencies through {gu,n}ix shell into a disposable environment and with option to use their ~/.emacs.d on startup

#!/usr/bin/env -S guix shell -m
!#

;;; Recipe to provide GNU Emacs through Guix

(use-modules
	(guix channels))

;; DNR-CI(Krey): Needs handling to keep the hash up-to-date
(list (channel
       (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (commit
          "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))

(specifications->manifest
	(list
	  "emacs"
	  ;; DNR(Krey): Used for testing
	  "openscad"
	  ;; EXT(Krey): Used to work with LaTeX
	  "texlive"
	  ;; NOTE(Krey): To build lsp-scheme from emacs
	  "pkg-config"
	  "autoconf"
	  "automake"
	  "texinfo"
	  "guile"
	  "make"
	  "netcat" ;; Required for the runtime
	  ))

Same for FreeCAD, OpenSCAD, etc..

With exception of FreeTube which has synced config files on E2EE nextcloud that gets synced with all my devices, because I prefer to use the UI there atm, but will probably change it to guix-home when I figure out how it want it to work.

And another exception is conky, because I didn't make that functional enough to make it deployable through guix-home yet

> how do you manage your dotfiles @kreyren ? -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2412) User-specific things with `guix-home` Beyond that I keep things like emacs default and make project-specific configuration so that all developers have access to a standard working environment currently projected to be launched from kreyren/pman to get all the system dependencies, env variables, etc.. into a reproducible environment e.g. everyone using the same version of dependencies through `{gu,n}ix shell` into a disposable environment and with option to use their `~/.emacs.d` on startup ```scm #!/usr/bin/env -S guix shell -m !# ;;; Recipe to provide GNU Emacs through Guix (use-modules (guix channels)) ;; DNR-CI(Krey): Needs handling to keep the hash up-to-date (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097") (introduction (make-channel-introduction "9edb3f66fd807b096b48283debdcddccfea34bad" (openpgp-fingerprint "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) (specifications->manifest (list "emacs" ;; DNR(Krey): Used for testing "openscad" ;; EXT(Krey): Used to work with LaTeX "texlive" ;; NOTE(Krey): To build lsp-scheme from emacs "pkg-config" "autoconf" "automake" "texinfo" "guile" "make" "netcat" ;; Required for the runtime )) ``` Same for FreeCAD, OpenSCAD, etc.. With exception of FreeTube which has synced config files on E2EE nextcloud that gets synced with all my devices, because I prefer to use the UI there atm, but will probably change it to guix-home when I figure out how it want it to work. And another exception is conky, because I didn't make that functional enough to make it deployable through guix-home yet
Author

it's a work in progress, I just started with home-manager but I'll get there :) -- @wanderer (#3 (comment))

Great progress! How long til you develop the required neurological paths to convince yourself to use NixOS so that you get to suffer for 4 months until I convince you to use GNU Guix and rewrite the whole dotya.ml deployment into an open-source Code as Infrastructure thing?~ ^-^

e.g. https://git.dotya.ml/OpenVolt/nyxtumops ... deploying gitea is just one line of code and it maintains itself because everyone has the same code and NixOS devs maintain it~

> it's a work in progress, I just started with home-manager but I'll get there :) -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2411) Great progress! How long til you develop the required neurological paths to convince yourself to use NixOS so that you get to suffer for 4 months until I convince you to use GNU Guix and rewrite the whole dotya.ml deployment into an open-source Code as Infrastructure thing?~ ^-^ e.g. https://git.dotya.ml/OpenVolt/nyxtumops ... deploying gitea is just one line of code and it maintains itself because everyone has the same code and NixOS devs maintain it~
Owner

it's a work in progress, I just started with home-manager but I'll get there :) -- @wanderer (#3 (comment))

Great progress! How long til you develop the required neurological paths to convince yourself to use NixOS so that you get to suffer for 4 months until I convince you to use GNU Guix and rewrite the whole dotya.ml deployment into an open-source Code as Infrastructure thing?~ ^-^

nixOs is not going to happen, I am a happy fedora user on the desktop, nix is a perfect dev tool but I don't want it to run the entire system, so that dream of yours is probably never going to realise...

> > it's a work in progress, I just started with home-manager but I'll get there :) -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2411) > > Great progress! How long til you develop the required neurological paths to convince yourself to use NixOS so that you get to suffer for 4 months until I convince you to use GNU Guix and rewrite the whole dotya.ml deployment into an open-source Code as Infrastructure thing?~ ^-^ nixOs is not going to happen, I am a happy fedora user on the desktop, `nix` is a perfect dev tool but I don't want it to run the entire system, so that dream of yours is probably never going to realise...
Owner

how do you manage your dotfiles @kreyren ? -- @wanderer (#3 (comment))

User-specific things with guix-home

Beyond that I keep things like emacs default and make project-specific configuration so that all developers have access to a standard working environment currently projected to be launched from kreyren/pman to get all the system dependencies, env variables, etc.. into a reproducible environment e.g. everyone using the same version of dependencies through {gu,n}ix shell into a disposable environment and with option to use their ~/.emacs.d on startup

#!/usr/bin/env -S guix shell -m
!#

;;; Recipe to provide GNU Emacs through Guix

(use-modules
	(guix channels))

;; DNR-CI(Krey): Needs handling to keep the hash up-to-date
(list (channel
       (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (commit
          "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))

(specifications->manifest
	(list
	  "emacs"
	  ;; DNR(Krey): Used for testing
	  "openscad"
	  ;; EXT(Krey): Used to work with LaTeX
	  "texlive"
	  ;; NOTE(Krey): To build lsp-scheme from emacs
	  "pkg-config"
	  "autoconf"
	  "automake"
	  "texinfo"
	  "guile"
	  "make"
	  "netcat" ;; Required for the runtime
	  ))

Same for FreeCAD, OpenSCAD, etc..

With exception of FreeTube which has synced config files on E2EE nextcloud that gets synced with all my devices, because I prefer to use the UI there atm, but will probably change it to guix-home when I figure out how it want it to work.

And another exception is conky, because I didn't make that functional enough to make it deployable through guix-home yet

I am familiar with using nix for go, latex and python enviroments, but I have come to prefer flakes over just nix-shell...

I am curious to see how this home-manager thing is going to work...

> > how do you manage your dotfiles @kreyren ? -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2412) > > > User-specific things with `guix-home` > > Beyond that I keep things like emacs default and make project-specific configuration so that all developers have access to a standard working environment currently projected to be launched from kreyren/pman to get all the system dependencies, env variables, etc.. into a reproducible environment e.g. everyone using the same version of dependencies through `{gu,n}ix shell` into a disposable environment and with option to use their `~/.emacs.d` on startup > > ```scm > #!/usr/bin/env -S guix shell -m > !# > > ;;; Recipe to provide GNU Emacs through Guix > > (use-modules > (guix channels)) > > ;; DNR-CI(Krey): Needs handling to keep the hash up-to-date > (list (channel > (name 'guix) > (url "https://git.savannah.gnu.org/git/guix.git") > (commit > "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097") > (introduction > (make-channel-introduction > "9edb3f66fd807b096b48283debdcddccfea34bad" > (openpgp-fingerprint > "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) > > (specifications->manifest > (list > "emacs" > ;; DNR(Krey): Used for testing > "openscad" > ;; EXT(Krey): Used to work with LaTeX > "texlive" > ;; NOTE(Krey): To build lsp-scheme from emacs > "pkg-config" > "autoconf" > "automake" > "texinfo" > "guile" > "make" > "netcat" ;; Required for the runtime > )) > ``` > > Same for FreeCAD, OpenSCAD, etc.. > > With exception of FreeTube which has synced config files on E2EE nextcloud that gets synced with all my devices, because I prefer to use the UI there atm, but will probably change it to guix-home when I figure out how it want it to work. > > And another exception is conky, because I didn't make that functional enough to make it deployable through guix-home yet I am familiar with using `nix` for go, latex and python enviroments, but I have come to prefer flakes over just `nix-shell`... I am curious to see how this home-manager thing is going to work...
wanderer changed title from Get {gu,n}ix-home u noob to expand usage of nix home-manager u noob 2022-08-30 17:42:54 +02:00
Author

nix bad run away while you can it's passive anxiety generator with JSON marketed as "functional language"

$ pacman -Syu guix

We have the most functional of all functional languages!

nix bad run away while you can it's passive anxiety generator with JSON marketed as "functional language" $ pacman -Syu guix We have the most functional of all functional languages!
kreyren changed title from expand usage of nix home-manager u noob to expand usage of guix home-manager u noob 2022-08-30 19:21:23 +02:00
Owner

nix bad run away while you can it's passive anxiety generator with JSON marketed as "functional language"

you know what I still like it more than Scheme... ๐Ÿ˜†

$ pacman -Syu guix

I kid you not...
image

We have the most functional of all functional languages!

I bet :D

> nix bad run away while you can it's passive anxiety generator with JSON marketed as "functional language" you know what I still like it more than Scheme... ๐Ÿ˜† > $ pacman -Syu guix I kid you not... ![image](/attachments/94e26783-f066-41cf-8143-15a95d769cb7) > We have the most functional of all functional languages! I bet :D
Author

I kid you not... -- @wanderer (#3 (comment))

https://aur.archlinux.org/packages/guix

Fix yo arch boy

I bet :D -- @wanderer (#3 (comment))

Literally the oldest functional programming language used before C was even a thing! Nixlang's dirty implementation of haskel-like functionality into a JSON is not even close! :P

https://en.wikipedia.org/wiki/Scheme_(programming_language)

> I kid you not... -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2431) https://aur.archlinux.org/packages/guix Fix yo arch boy > I bet :D -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2431) Literally the oldest functional programming language used before C was even a thing! Nixlang's dirty implementation of haskel-like functionality into a JSON is not even close! :P https://en.wikipedia.org/wiki/Scheme_(programming_language)
Owner

I kid you not... -- @wanderer (#3 (comment))

https://aur.archlinux.org/packages/guix

Fix yo arch boy

yeah..noo ๐Ÿ˜ at least it's in the AUR, though.

I bet :D -- @wanderer (#3 (comment))

Literally the oldest functional programming language used before C was even a thing! Nixlang's dirty implementation of haskel-like functionality into a JSON is not even close! :P

https://en.wikipedia.org/wiki/Scheme_(programming_language)

still not convinced (Scheme). even nix is more readable than that stuff.

> > I kid you not... -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2431) > > https://aur.archlinux.org/packages/guix > > Fix yo arch boy yeah..noo ๐Ÿ˜ at least it's in the AUR, though. > > I bet :D -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2431) > > Literally the oldest functional programming language used before C was even a thing! Nixlang's dirty implementation of haskel-like functionality into a JSON is not even close! :P > > https://en.wikipedia.org/wiki/Scheme_(programming_language) still not convinced (Scheme). even `nix` is more readable than that stuff.
Author

still not convinced (Scheme). even nix is more readable than that stuff -- @wanderer (#3 (comment))

Hmm it's very different from C so i guess you have to learn the basics to realize how easy it is to read.. also it's about the functionality

;; Library imports
(use-modules (guix)
             (guix build-system gnu)
             (guix licenses))

;; Package definition
(define-public hello-2.10)
  (package
   (name "hello") ; Package Name
   (version "2.10") ; Version
   ;; Declaring downloader
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz"))
            (sha256
             (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
   ;; Build system, to avoid making a long lines of code with `./configure`, etc..
   (build-system gnu-build-system)
   ;; Metadata
   (synopsis "Hello, GNU world: An example GNU package")
   (description "Guess what GNU Hello prints!")
   (home-page "http://www.gnu.org/software/hello")
   (license gpl3+)))
kreyren@dreamon ~$ guix shell hello -- hello
substitute: updating substitutes from 'https://substitutes.nonguix.org'...   0.0substitute: updating substitutes from 'https://substitutes.nonguix.org'...  50.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/hflvj49lprrbydwsnzzwfpx0cvy3cnp5-profile.drv

0,1 MB will be downloaded
 hello-2.12.1  59KiB                  314KiB/s 00:00 [##################] 100.0%
building CA certificate bundle...
listing Emacs sub-directories...
building fonts directory...
building directory of Info manuals...
building profile with 1 package...
Hello, world!
> still not convinced (Scheme). even nix is more readable than that stuff -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2437) Hmm it's very different from C so i guess you have to learn the basics to realize how easy it is to read.. also it's about the functionality ```scheme ;; Library imports (use-modules (guix) (guix build-system gnu) (guix licenses)) ;; Package definition (define-public hello-2.10) (package (name "hello") ; Package Name (version "2.10") ; Version ;; Declaring downloader (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) ;; Build system, to avoid making a long lines of code with `./configure`, etc.. (build-system gnu-build-system) ;; Metadata (synopsis "Hello, GNU world: An example GNU package") (description "Guess what GNU Hello prints!") (home-page "http://www.gnu.org/software/hello") (license gpl3+))) ``` ```console kreyren@dreamon ~$ guix shell hello -- hello substitute: updating substitutes from 'https://substitutes.nonguix.org'... 0.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 50.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 100.0% substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following derivation will be built: /gnu/store/hflvj49lprrbydwsnzzwfpx0cvy3cnp5-profile.drv 0,1 MB will be downloaded hello-2.12.1 59KiB 314KiB/s 00:00 [##################] 100.0% building CA certificate bundle... listing Emacs sub-directories... building fonts directory... building directory of Info manuals... building profile with 1 package... Hello, world! ```
Owner

still not convinced (Scheme). even nix is more readable than that stuff -- @wanderer (#3 (comment))

Hmm it's very different from C so i guess you have to learn the basics to realize how easy it is to read.. also it's about the functionality

yeah, that would probably take some time, dunno.

;; Library imports
(use-modules (guix)
             (guix build-system gnu)
             (guix licenses))

;; Package definition
(define-public hello-2.10)
  (package
   (name "hello") ; Package Name
   (version "2.10") ; Version
   ;; Declaring downloader
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz"))
            (sha256
             (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
   ;; Build system, to avoid making a long lines of code with `./configure`, etc..
   (build-system gnu-build-system)
   ;; Metadata
   (synopsis "Hello, GNU world: An example GNU package")
   (description "Guess what GNU Hello prints!")
   (home-page "http://www.gnu.org/software/hello")
   (license gpl3+)))

I don't know about you but to me this definitely looks more convoluted than nix.

kreyren@dreamon ~$ guix shell hello -- hello
substitute: updating substitutes from 'https://substitutes.nonguix.org'...   0.0substitute: updating substitutes from 'https://substitutes.nonguix.org'...  50.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/hflvj49lprrbydwsnzzwfpx0cvy3cnp5-profile.drv

0,1 MB will be downloaded
 hello-2.12.1  59KiB                  314KiB/s 00:00 [##################] 100.0%
building CA certificate bundle...
listing Emacs sub-directories...
building fonts directory...
building directory of Info manuals...
building profile with 1 package...
Hello, world!

this is familiar from nix, since this is the part the GNU folks kanged from nix... ๐Ÿ˜†

> > still not convinced (Scheme). even nix is more readable than that stuff -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2437) > > Hmm it's very different from C so i guess you have to learn the basics to realize how easy it is to read.. also it's about the functionality yeah, that would probably take some time, dunno. > > ```scheme > ;; Library imports > (use-modules (guix) > (guix build-system gnu) > (guix licenses)) > > ;; Package definition > (define-public hello-2.10) > (package > (name "hello") ; Package Name > (version "2.10") ; Version > ;; Declaring downloader > (source (origin > (method url-fetch) > (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) > (sha256 > (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) > ;; Build system, to avoid making a long lines of code with `./configure`, etc.. > (build-system gnu-build-system) > ;; Metadata > (synopsis "Hello, GNU world: An example GNU package") > (description "Guess what GNU Hello prints!") > (home-page "http://www.gnu.org/software/hello") > (license gpl3+))) > ``` I don't know about you but to me this definitely looks more convoluted than nix. > ```console > kreyren@dreamon ~$ guix shell hello -- hello > substitute: updating substitutes from 'https://substitutes.nonguix.org'... 0.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 50.0substitute: updating substitutes from 'https://substitutes.nonguix.org'... 100.0% > substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% > The following derivation will be built: > /gnu/store/hflvj49lprrbydwsnzzwfpx0cvy3cnp5-profile.drv > > 0,1 MB will be downloaded > hello-2.12.1 59KiB 314KiB/s 00:00 [##################] 100.0% > building CA certificate bundle... > listing Emacs sub-directories... > building fonts directory... > building directory of Info manuals... > building profile with 1 package... > Hello, world! > ``` this is familiar from nix, since this is the part the GNU folks kanged from nix... ๐Ÿ˜†
Author

I don't know about you but to me this definitely looks more convoluted than nix. -- @wanderer (#3 (comment))

Just use Guix for like 2 weeks and you will see that it's significantly more pleasant to work with :p I am never touching nixlang again it's anxiety generator

> I don't know about you but to me this definitely looks more convoluted than nix. -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2445) Just use Guix for like 2 weeks and you will see that it's significantly more pleasant to work with :p I am never touching nixlang again it's anxiety generator
Owner

I don't know about you but to me this definitely looks more convoluted than nix. -- @wanderer (#3 (comment))

Just use Guix for like 2 weeks and you will see that it's significantly more pleasant to work with :p I am never touching nixlang again it's anxiety generator

really... @kreyren
image

> > I don't know about you but to me this definitely looks more convoluted than nix. -- @wanderer (https://git.dotya.ml/wanderer/dotfiles/issues/3#issuecomment-2445) > > Just use Guix for like 2 weeks and you will see that it's significantly more pleasant to work with :p I am never touching nixlang again it's anxiety generator [really...](https://git.dotya.ml/kruix) @kreyren ![image](/attachments/6cf6abcc-9d36-4975-897e-b63fcd6d0b7f)
Author

Yes! The guix backend and frontend is not up to my expectations so i am refactoring it :p

Yes! The guix backend and frontend is not up to my expectations so i am refactoring it :p
Author

Also fuck nckx

Also fuck nckx
Author

also i want to do like the libfive-way that will generate bindings so that in theory if the instruction in nixlang does the exact same thing as it does in scheme then it should be able to grab the same definitions

also i want to do like the libfive-way that will generate bindings so that in theory if the instruction in nixlang does the exact same thing as it does in scheme then it should be able to grab the same definitions
Owner

Yes! The guix backend and frontend is not up to my expectations so i am refactoring it :p

yeah but what about not using Nix ever?

> Yes! The guix backend and frontend is not up to my expectations so i am refactoring it :p yeah but what about not using Nix ever?
Author

I will when there is a better alternative to it :p

I will when there is a better alternative to it :p
Owner

I will when there is a better alternative to it :p

meanwhile, I'm pretty happy with Nix..would love it if I was able to do more with it.

> I will when there is a better alternative to it :p meanwhile, I'm pretty happy with Nix..would love it if I was able to do more with it.
Author

Do Code As Infra for dotya then e.g. see git.dotya.ml/OpenVolt which is NixOS management i made for OpenVolt

tldr: public repository that has nixEL things in it used to change the system configruation on push-trigger

... so that you realize how much of a pain NixEL is to use xD

Do Code As Infra for dotya then e.g. see git.dotya.ml/OpenVolt which is NixOS management i made for OpenVolt tldr: public repository that has nixEL things in it used to change the system configruation on push-trigger ... so that you realize how much of a pain NixEL is to use xD
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wanderer/dotfiles#3