IRC channel logs

2019-09-11.log

back to list of logs

<nckx>Here's the list of default %desktop-services. You might want/need to add some of these. You might not. <http://paste.debian.net/1099975/>
<nckx>It all depends on how minimal you want your resulting system to be and which desktop/window manager you'll be running.
<nickey>nckx: thank you. I'm just trying to rebuild my usual arch setup with dwm and other suckless stuff.
<nickey>perhaps I should write my own packages to build my dwm config
<csprng_> lint complaint for a package I'm adding: "source not archived on Software Heritage". Is there something I should do before submitting this patch?
<enderby>anyone have experience installing guixsd on a lenovo x220? do i need extra drivers?
<nckx>enderby: I run Guix System on an X230T, which I think is very similar. The only problem on these machines is the wifi chip (and Bluetooth if you have it): I think all whitelisted models require blobs. At least the ones I've encountered.
<nckx>You'll have to use a dongle to use these machines with Guix's blob-free linux-libre kernel.
<nckx>Well, that or an ethernet cable 🙂
<apteryx>has anyone else noticed how bad of a success rate the 'paste' from mouse middle click has become in recent months? It used to be easy; now it seems I must paste exactly at the cursor point for it to succeed; it usually takes a few tries everytime and is very irritating ;-)
<nckx>apteryx: …no? Where?
<apteryx>anywhere (terminal, icecat, etc)
<nckx>My only irritation is with emacs: when I run it in a terminal, I can middle-click wherever I want and text will appear at point; in a GTK window, middle-clicking will move point and I always forget that.
<nckx>apteryx: Can't say I've noticed a difference.
<nckx>Did Guix perhaps switch to a different input driver (e.g. synaptics → libinput) in recent months?
<apteryx>nckx: ah, I changed PC too, and I must have changed the input driver, will check
<nckx>I've always hated synaptics but there are people who claim to like it. It did have a very different feel from the modern libinput.
<apteryx>nckx: ah, for my previous machine (thinkpad T460), I had configured to use libinput to get the trackpad behaving
<apteryx>but on this "new" machine of mine (X200), I removed that snippet as it has no trackpad; it must be using synaptic
<apteryx>will verify
<nckx>Possible!
<enderby>nckx: thanks, gotcha. hmm, is there a blobbed linux kernel available or no
<nckx>enderby: I really don't know, but we don't support (officially or unofficially) such things in Guix project support channels.
<nckx>Being a GNU project & all 🙂
<enderby>nckx: understood
<apteryx>nckx: I've checked my Xorg.log, and all my devices seems to be using libinput... oh well. I must have gotten older ;-)
<nckx>apteryx: Hmm… I certainly believe you, I just can't think of anything that could have changed. I only use ‘middle-click’ (and trackpoints), I'd notice even the slightest change.
<nckx>(I'm also the kind of person who sets their own custom pressure curves. Maybe the defaults changed. But I'm venturing too deep into maybe territory to be useful now.)
<quiliro>"and remove those that are provably no longer referenced" is with error on probably at https://guix.gnu.org/manual/en/html_node/Features.html
<nckx>quiliro: I don't think so. We want the GC to remove things it can *prove* are no longer needed; we definitely don't want it to remove things that *probably* aren't needed…
<quiliro>nckx: oh...from prove, not from probable
<quiliro>sounds much more technical
<quiliro>it sounded marketing
<quiliro>*as
<nckx>Well, it is a technical/almost mathematical subject.
<quiliro>exactly!
<nckx>We have to be accurate. I'm not sure there's a better word to use here.
<quiliro>what i mean is it sounds better than what i supposed it meant
<quiliro>maybe the word order would make it better
<quiliro>"and remove those where there is proof they are no longer referenced" maybe
<nckx>As a native speaker, I'm unconvinced (‘that's what provably means, and it scans a lot better’). But then I love language in general, and hate to see innocent words scrapped just because they're not Upgoer-5 level…
*nckx shrugs.
*nckx hugs all the unloved words.
<quiliro>I would have understood it better that way...But don't mind me
<quiliro>It is just a suggestion.
<quiliro>nckx: I already understand it thanks to your explanation.
<nckx>I see I came over stronger than intended.
<quiliro>No you didn't. You just don't agree with me. I can accept that.
<quiliro>I got what I needed, which was to understand.
<quiliro>It is ok to disagree.
<quiliro>I have another question, though.
<quiliro>How is it possible that it is not possible to compile everything from source and always a binary is necesary?
<quiliro>redundant...I know.
<quiliro>I will rephrase my question
<nckx>quiliro: Are you talking about bootstrapping?
<nckx>OK.
<quiliro>Yes!
<quiliro>Why is it not possible to build everything from source? Why is almost everything possible to build from source?
<quiliro>is there any documentation about that around?
<quiliro>I love the philosophical topics!
<quiliro>Philosophy is the mother of all other sciences.
<nckx>quiliro: I assume you know the ‘practical’ answer, which is that CPUs can't run source, only ‘binary’, so you always need that first binary on the system before you can compile sources on it.
<nckx>However
<quiliro>Ok....But how did the first binary become compiled?
<quiliro>The God binary!
<nckx>quiliro: By a compiler (well, assembler) that a human wrote in binary.
<nckx>The first compiler was a human.
<nckx>(This is all oversimplified but if you go far back enough it is true.)
<quiliro>oh...so the source bootstrap could be a binary which could be readable by a human?
<quiliro>that would be the best possible in order to be auditable?
<quiliro>What I now think is that software that is not readable by a human is not auditable. Is that correct?
<nckx>To get back to my ‘however’: https://github.com/oriansj/stage0 is part of the bootstrapping effort closely tied to Guix. It's a ‘bootstrapping chain’ where a simple assembler is used to bootstrap a less simple assembler which bootstraps another assembler that can assemble a C compiler, or a Scheme interpreter, or…
<nckx>Now, that first very basic assembler is very basic. It doesn't do much. But. It is very small. And very simple.
<nckx>So simple that, while ‘binary’, a human can actually read it and reason about what it does and how it works.
<nckx>So it is both binary and auditable!
<nckx>It's not a perfect magic trick (there's no substitute for the human being quite clever and knowing how computers work), but it's quite impressive.
<quiliro>Nice explanation!
<nckx>I hope that answers your question. It's *really cool*. I urge you to read more if this kind of thing interests you.
<nckx>OriansJ hangs around here sometimes.
<quiliro>I like the topic. i will probably have to finish some projects first. But it is definitely on my ToDo list.
<quiliro>I would like to delve more into hardware and reverse engineering.
<quiliro>Oh...that is really cool.
<quiliro>that OriansJ comes....
<quiliro>If I understand correctly bootstrapping comes before the kernel or even before the firmware. Does it?
<quiliro>I love this: https://github.com/oriansj/talk-notes/blob/master/bootstrappable.org
<nckx>quiliro: Kernel: yes. Firmware is insanely complex (look up ‘DDR training’, ‘cache as RAM’). Modern CPUs can't boot without hundreds (maybe even thousands) of lines of firmware code. And that all happens before the first byte of the bootstrap binary is read.
<nckx>Modern CPUs aren't what people think they are. Your CPU is an illusion, it's virtualised, it doesn't exist, it's software, it's all of these things at once 😛
*nckx puts the bottle of philosophy back on the shelf… sorry.
<quiliro>FPGA?
<nckx>Not even that.
<quiliro>Any documentation to read about these topics?
<nckx>There's not really much layman intro documentation about this [that I know of]; you just sort of learn about these things while trying (for example) to flash Libreboot to your machine. The {core,libre}boot projects are a treasure trove of information and gory details but of course can be very technical.
<nckx>About firmware, I mean. About CPUs: dunno. It's not actually my background; I just find all this fascinating, and I read a lot.
<nckx>quiliro: Sorry for my rambling, I'm distracted as usual and should not be on IRC at all. But where's the fun in that.
<quiliro>nckx: NP
<bandali>just saw mhw’s post on guix-devel :(
<rekahsoft>bandali: :( me too. I'm new to the community, but I'm curious why he's leaving
<bandali>rekahsoft, yeah, i’m curious too… i wonder if the recent /usr/bin/env discussion had something to do with it
<rekahsoft>bandali: I'm unfamiliar with the conversation. Mind linking me?
<bandali> https://lists.gnu.org/archive/html/guix-devel/2019-09/msg00069.html
*rekahsoft tips hat to bandali
*bandali tips hat right back at rekahsoft
<tune>something has broken wl-copy for me since last reboot...
<tune>also my font in gtk stuff looks bad
<roptat>hi guix!
<efraim>hi!
<jlicht>hey guix!
<civodul>bon dia Guix!
<jlicht>o/
<kmicu>( ^_^)/
<kori>good morning guix
<jlicht>probably a bit off-topic, but can anyone recommend a freedom-respecting smartcard/usb-key containing ssh and gpg keys that work with Guix System?
<apteryx>ohayou gozaimasu
<efraim>jlicht: I think rekado has a yubikey
<rekado_>jlicht: I haven’t really used it much at all yet, so I don’t know if it’s good.
<jlicht>thanks for the pointer nonetheless
<jlicht>woohoo, I was able to build icecat extensions using guix
<roptat>does icecat load them?
<jlicht>It does if I manually install them :-)
<jlicht>I guess something like the scripts at https://framagit.org/tyreunom/guix-home-manager could actually have them be automagically be installed as well, once support for that is written
<roptat>ok, maybe something the guix-home-manager could help with
<jlicht>heh :-)
<roptat>yeah, writing support is hard
<roptat>btw, I tried to add a subcommand from my channel at https://framagit.org/tyreunom/guix-home-manager/tree/subcommand
<roptat>so we could do guix home ...
<roptat>but that doesn't work :/
<jlicht>I still need to work on some sort of build system that rewrites the xpi filename to be consistent with the application id for scripted installations
<jlicht>roptat: does it get picked up, but crashes, or does guix pretend it doesn't even exist?
<roptat>guix says it doesn't exist
<civodul>roptat: what happens if you do ",use(guix scripts home)" at "guix repl"?
<roptat>it seems to exist
<roptat>no error nor warning
<roptat>and there's a guix-home procedure
<civodul>and it's public?
<roptat>yes it is
<roptat>I just used ,use (guix scripts home) and then guix-home is
<roptat>$1 = #<procedure guix-home args>
<civodul>hmm weird
<civodul>i'd say "strace" then :-)
<roptat>stat("/gnu/store/g2gp9x5cgnfn9krabyz7vrmcnk6ygha0-guix-module-union/share/guile/site/2.2/guix/scripts/home.scm", 0x7ffff8431b90) = -1 ENOENT (Aucun fichier ou dossier de ce type)
<roptat>and same for many more locations
<roptat>home.scm is searched in guix-module-union, .guix-profile and in guile
<roptat>same with home.go
<jlicht>roptat: I get a parse-command-line error
<jlicht>in home.scm:56:2
<roptat>so you can run "guix home"?
<roptat>I see guix : home : commande introuvable
<jlicht>I did the following in guix repl: ",m (guix ui)", "(run-guix-command 'home)"
<jlicht> guix/scripts/home.scm:56:2: error: parse-command-line: unbound variable
<roptat>well, if I got this error message instead of not found with guix ui, I'd be already happy :)
<jlicht>it works!
<jlicht>You should import (guix scripts) in your home.scm
<roptat>is that all?
<jlicht>I get: "Guix Home Test", so if that is correct, then yes
<jlicht>and "Usage: guix home CONFIG Manage a user home environment according to CONFIG
<jlicht>for --help
<roptat>ok, let me try :)
<roptat>no, still doesn't work
<roptat>it works on the repl, but it's still not found when I type "guix home" in my terminal
<jlicht>hmm, that must mean you are getting some other error, no? It just seems that _any_ error is reported as "not found"
<PotentialUser-91>Hi! How can I install VirtualBox in guix?
<roptat>PotentialUser-91, I don't think we have a virtualbox package yet
<roptat>its build system is really really hard to build
<jlicht>roptat: I found the issue: for some reason, the `guix' script created by guix pull only sets the load path to the guix-module-union. If I add the right paths to %load-path and %load-compiled-path, it works. I got the store path of the built guix-home-manager from "~/.config/guix/current/manifest".
<jlicht>so either we need to add channel paths to this wrapper script, or directly to guix-module-union
<jlicht>civodul: I noticed that the docstring of `build-and-install' seem to be a bit outdated in guix/scripts/pull.scm, should I make a bug report for this?
<Minall>Hello guix!
<Minall>I'm unable to share internet with guix... I have a dual-boot with another distro...
<Minall>With the same steps in the distro and in guix, I can share internet with the other distro, but with guix I'm unable to
<Minall>Though, I want to be able to use guix when sharing internet, since i work better at guix...
<Minall>What can I do?, maybe guix doesn't have installed something?
<Minall>Hello guix!
<Minall>I'm unable to share internet through guix... Doing the same simple steps in other distros works, I want to share internet through guix too
<jgibbons[m]>For some reason pam doesn't recognize my limits
<jgibbons[m]>I'm trying to diagnose. How can I know what file is loaded when I log in?
<jgibbons[m]>I log in from gdm. Does gdm use login?
<jgibbons[m]>Or does it use gdm-launch-environment or gdm-password?
<roptat>hi Minall, jgibbons[m] I can't answer your questions, and if nobody else does, you should send an email to help-guix@gnu.org :)
<Minall>roptat: Ok!, since I'm at a loss
<Minall>roptat: What should I say, guix describe and my issue right?
<roptat>yes, exactly
<roptat>maybe also explain how you're used to do it on other distros
<jgibbons[m]>roptat: I brought the full issue to help-guix@gnu.org. https://lists.gnu.org/archive/html/help-guix/2019-08/msg00128.html
<jgibbons[m]>I'll try asking the gnome people.
<Minall>Ok!
<civodul>jlicht: if that docstring is obviously wrong, you can go ahead an fix it, but otherwise yeah, you can email bug-guix
<civodul>roptat: re home.scm not found in module-union, what does "guix describe" say?
<roptat>it shows guix and my channel, on the correct branch
<roptat> https://paste.debian.net/1100102/
<civodul>hmm, weird
<civodul>and are other files from that channel present in the union?
<roptat>they don't seem to be present
<civodul>so something is wrong :-)
<civodul>(notice the expert diagnostic :-))
<roptat>they are in ~/.config/guix/current/share/guile/site/2.2/home but not in the guix-union
<civodul>why "/home"?
<civodul>it shouldn't be there
<roptat>hm.. because most of my modules are (home something)
<roptat>but yes, I have ~/.config/guix/current/share/guile/site/2.2/guix/scripts/home.scm
<jlicht>civodul: noted, I'll try to figure the docstring out then
<civodul>roptat: the parens at https://framagit.org/tyreunom/guix-home-manager/tree/subcommand don't match
<jgibbons[m]>pam services is undocumented :(
<roptat>civodul, in which file?
<roptat>oh, the README? It's fixed on the master branch
<civodul>roptat: so i've pulled following the instructions, but it's not pulling the right branch, so there's no (guix scripts home) in there
*civodul tries again with the right branch
<roptat>sure, you should add (branch "subcommand")
<roptat>to your channels.scm
<civodul>yup, i hadn't realized
<kmicu>RIP youtube-dl 😿
<pkill9>what's happened with youtube-dl?
<erudition>Woah wait what
<kmicu>pkill9: no new commints since 2nd Sep, they turned off Issues, muted on #youtube-dl irc channel. No status provided. Extraction down. It looks like legal issues or very poor management.
<pkill9>oh dear
<kmicu>(Invidious still works though. 🤷)
<pkill9>kmicu: they *just* added a commit 2 minutes ago
<pkill9>what a funny coincidence
<erudition>Yeah it looks pretty lively to me
*kmicu grabs it when it lasts!
*kmicu loves Guix. So easy to fix things.
<LostInDocs>Heya! Im new to the project, and have GuixSD installed on my laptop - how should I install an ssh client? Theres nothing that stands out in the package list
<pkill9>LostInDocs: openssh is the package
<roptat>try openssh :)
<LostInDocs>:/ why doesnt that match --search=ssh? Thanks anyway :P
<roptat>LostInDocs, did you see the hint "Run `guix search ... | less' to view all the results."?
<roptat>openssh is definitely in the list, it's just not in the first results
<LostInDocs>Ah! Gotcha, yea that did pop up
<LostInDocs>Cheers
<roptat>:)
<LostInDocs>Also, is it possible to set guix up to use a single cache for all users? Seems kinda redundant to compile a package that already exists on the system
<roptat>it does use the same store
<roptat>multiple users shouldn't have to compile the same thing
<roptat>however, if your users are not using the same version of guix, they might be trying to build different variants of the same package
<LostInDocs>Hum. Could it be something to do with `GUIX_PROFILE`? Im a bit confused about whether I should be using `.guix-profile` or `.config/guix/current` as both have been coming up in hints
<LostInDocs>Is one of those from an old guix version?
<roptat>always .guix-profile
<roptat>current contains only the current version of guix, while .guix-profile contains everything else
<roptat>make sure not to install guix in .guix-profile though
<roptat>and make sure you have ~/.config/guix/current/bin first in your $PATH
<roptat>and you can update current with guix pull, while the rest is updated with guix upgrade
<roptat>(or guix system reconfigure for the system)
<LostInDocs>So.. `current` is the actual guix installation, and its local so that users dont need root to update?
<roptat>yes, it means every user has its own version of guix
<roptat>and of the guix repository (the list of packages)
<roptat>and so when a user says "guix install foo", they install the version of foo that's described in their .config/guix/current
<LostInDocs>Right, nice. Ive been doing it all wrong :P one other thing then - can users reconfigure the system? Sudo ended up using root's guix
<roptat>if two users have a different version of "current", they will install a different variant of foo
<roptat>no, reconfiguring needs root priviledges
<roptat>but there is a way for sudo guix to use your user's "current"
<LostInDocs>And guix doesnt let you use a users store?
<roptat>no, because that's just a cache, as you said
<roptat>if both users have the same version of guix, and install foo, they will both end up with the same foo, bit-for-bit
<roptat>if they install foo from different versions of guix, then the hash-part in the store path will be different
<LostInDocs>Oh, i meant 'sudo guix to you your user's current' :)
<roptat>I think sudo -E guix system reconfigure will use your current user's "current"
<roptat>but I don't use sudo, so I'm not sure
<LostInDocs>Yea, I get the store thing. Id been using the wrong path, and not updating guix properly
<LostInDocs>What do you use?
<roptat>just the root account :)
<joshuaBPMan>Hello guix, does pulseaudio have a terminal application like amixer?
<roptat>I update root's and user's "current" separately
<pkill9>apparently sudo uses the calling-users guix by default, from the result of `sudo which guix`
<LostInDocs>Ah, yea thats easier :P
<joshuaBPMan>on sway I am using alsamixer to turn up my audio...
<roptat>joshuaBPMan, pavucontrol
<roptat>oh, that's not terminal
<joshuaBPMan>roptat: that is at least something.
<roptat>:)
<pkill9>and `sudo -i which guix` shows it will use root's guix
<pkill9>i can't remember why it's usually neccessary to use `sudo -E`
<joshuaBPMan>roptat: I'll try to install pulsoaudio command tools and set up sway to increase my volume too.
<roptat>pkill9, I think it's because otherwise guix is passed the wrong $HOME or $USER and updates the user's profile with root priviledges
<roptat>ok, guix, I need to go now, see you later :)
<LostInDocs>Is `passwd -d`setting the shadow entry to '' a bug? It lets the account be used without login, compared to the '*' on other distros which means it can never log in
<nckx>LostInDocs: It matches what the passwd(1) man page says: ‘Delete a user's password (make it empty). This is a quick way to disable a password for an account. It will set the named account passwordless.’ Which distribution(s) are you referring to? Do you know if they patch passwd?
<nckx>It sounds like the ‘lock-out’ behaviour you refer to (although through a slightly different method) is that of ‘passwd -l’.
<joshuaBPMan>does guix have pactl packaged?
<nckx>joshuaBPMan: Yes, it's part of pulseaudio.
<joshuaBPMan>thanks
<nckx>LostInDocs: On Ubuntu 19.04 (the only non-Guix system I have root access to), ‘passwd -d $user’ keeps ‘…:x:…’ in /etc/passwd, and sets the password to ‘…::…’ in /etc/shadow.
<nckx>I can't find a ‘*’ anywhere.
<LostInDocs>Ah, youre right. Its probably a problem(?) with the login service then. I have x in my passwd file, but unless I put it in shadow too, I can get right unto a root terminal by typing in the username
<nckx>I'd like to fix some CVEs in openssl, but it's not clear to me whether ‘letter releases’ are supposed to be ABI-compatible or not. It would be a big jump (1.0.2p → 1.0.2t), and our current openssl/fixed is just 1.0.2p + 1 patch, so I doubt it. But cherry-picking patches is proving too painful.
<nckx>LostInDocs: But isn't that what's expected?
<nckx>‘Empty password’ means ‘log in without one’; I'd file a bug against any distro that changed that unilaterally.
<nckx>I vaguely remember a ‘nullok’ PAM module. I wonder if that's related. Would be interesting to compare the PAM policy on Guix System and others!
<LostInDocs>... Nvm me :D I thought I remembered using it to lock out an account before
<nckx>Heh, sounds like the beginning of a great post-mortem blog post.
<nckx>I'm glad you double-checked.
<leungbk>sneek: later tell apteryx the update to python-jedi 0.15.1 is not compatible with Guix's current of python-language-server, which expects python-jedi < 0.15. Please review my patch for python-language-server. Thanks.
<sneek>Okay.
<leungbk>sneek: later tell leungbk test
<sneek>Will do.
<leungbk>test2
<sneek>Welcome back leungbk, you have 1 message.
<sneek>leungbk, leungbk says: test
<kirisime>So has anyone installed guix on Sailfish OS before?
<ArneBab>jgibbons[m]: I also have the problems that my limits don’t appear in gnome. When I login to a TTY via CTRL-ALT-F2 my limits are used
<rekado_>jgibbons[m], ArneBab: I find this really strange. I use GNOME as well and … I can confirm that it no longer works for me!
<rekado_>huh.
<rekado_>it’s been a while since I’ve used JACK on this machine, but it used to work a long time ago.
<rekado_>jgibbons[m]: sorry for the frustration! I can actually reproduce your problem after all.
<rekado_>how embarrassing!
<civodul>roptat: re home.scm, the problem is that channels are not added to guix-module-union
<civodul>it's ok for packages because %load-path is modified down the road, from (gnu packages), to include the profile's share/guile/site
<civodul>but it's too late for commands
<civodul>we should fix that
<civodul>not yet sure how :-)
<gnu_srs1>civodul: How to proceed with the GNU/Hurd port?
<rekado_>gnu_srs1: the next step is to use Guile 2.0 for the bootstrap binaries.
<rekado_>have you tried that yet?
<gnu_srs1>rekado_: Is that already implemented? How could I know?
<rekado_>right now Guile 2.2 is used.
<rekado_>this would need to be changed in the Guix code.
<rekado_>I can’t tell you how to do this, because that’s tantamount to doing it by myself :)
<gnu_srs1>Can you give some hints please and I'll try it out myself.
<rekado_>I’d look somewhere in gnu/packages/bootstrap.scm and try to figure out how the bootstrap binaries are built.
<gnu_srs1>I really like to contribute, but my knowledge of guile is almost zero :(
<gnu_srs1>And how to create local ones, to override upstream?
<rekado_>what do you mean by “local ones”?
<rekado_>you need a git checkout of the Guix code and work with that.
<rekado_>this isn’t so much about Guile than it is about understanding how the bootstrap binaries are built.
<rekado_>there’s little Guile knowledge needed (as long as you can read Guix package definitions)
<gnu_srs1>I meant creating local patches, not yet to submit to upstream.
<rekado_>gnu_srs1: you do this by modifying your local git clone of the Guix sources.
<gnu_srs1>OK, and how do I make these activated within guix?
<kirisime>So guix appears to run on the sailfish, except I put the store on an SD card and it's really slow
<gnu_srs1>Sorry for being a thickhead!
<rekado_>gnu_srs1: what do mean by “these” and “activated”?
<gnu_srs1>And then import them to guix, or rebuild, or?
<rekado_>gnu_srs1: we’re miscommunicating. I recommend reading the Contributing section in the manual.
<rekado_>gnu_srs1: you get the Guix source code, change it, compile it, and then use that changed variant of Guix to do stuff (e.g. building the Hurd bootstrap binaries).
<quiliro>gnu_srs1: i understand that you do not know anything about hurd and want to contribute to guix? but you must first learn guix then learn about hurd and then you can contribute hurd to guix...am i missing something?
<montxero>how do I change the default substitute urls used by the guix-daemon?
<rekado_>montxero: with the “--substitute-urls” option.
<montxero>hi rekado_, I grow weary of doing that all the time, moreover it doesn't work with `guix package --upgrade --substitute-urls=$GUIX_SUBSTITUTE_URLS`
<montxero>yeah I do it so often, I have an environment variable for it