justanotheruser has quit [Ping timeout: 240 seconds]
maier has joined #home-manager
maier has quit [Ping timeout: 256 seconds]
o1lo01ol1o has joined #home-manager
MmeQuignon has joined #home-manager
MmeQuignon has quit [Ping timeout: 260 seconds]
maier has joined #home-manager
__monty__ has joined #home-manager
johannes_ has joined #home-manager
johannes_ is now known as kenran
<kenran>
I've started creating modules in my home-manager config for the programs I that I need different configs for on my systems. Now I created a base.nix which contains some common/basic configuration, and a host-specific hostname.nix file which has base.nix as an import. But if (in hostname.nix) I set an option that has been set in base.nix to a different value, those clash.
<kenran>
What would be a better way to got about specifying only the "delta" to the base configuration?
<patagonicus>
kenran: I think `lib.mkForce someValue` is the canonical way to do that.
<kenran>
patagonicus: Ah, didn't know that, it looks good. thanks!
<patagonicus>
Alternatively you could use lib.mkDefault in base.nix, although that might clash with base modules that use it. You could make your own mkBase = lib.mkOverride 900; which is stronger than mkDefault, but weaker than an option without a specific priority.
<kenran>
I still wonder whether I'm just doing it the wrong way though, I mean the "design" that there is a base configuration and then host-specific home.nix files which may or may not override it.
<__monty__>
Don't see why not. The alternative is branching everywhere.
<patagonicus>
I think that's a valid way of doing things. You could also make your base.nix a module with options (something like `kenran.enableSomeProgram`) and then only set stuff based on these options. Your per-device config can then use your options to enable multiple base options at once.
<kenran>
Another question: Is there a way I can use home-manager to create the config files for a program (think kitty or fish) for me by using the programs.kitty... options, but not having kitty.enable set to true?
<patagonicus>
I don't think there's a way. I looked into that a while ago and it doesn't seem possible. It's possible in theory, but the modules are just not set up that way.
<__monty__>
Maybe it'd be enough to create fake derivations that don't install anything to pass as their `package` attributes?
<kenran>
Oh no :( I've nixified a lot of my configs, but on my new work system where I have to use ubuntu with a quite new GPU, I'm running into all those openGL problems where there's not really a satisfying workaround it seems.
<__monty__>
I keep a dotfiles repo and simply have home-manager symlink those in $HOME.
<kenran>
That is, basically no program that's using OpenGL and is installed via home-manager or nix-env works on this machine, while the apt install does.
<__monty__>
,nixGL
<{^_^}>
nixGL is a bunch of wrappers for getting OpenGL programs to work for your graphics card, https://github.com/guibou/nixGL
<kenran>
__monty__: Yeah, I had that too and still have for some files, but I've moved over to home-manager 100% where it was possible.
<kenran>
__monty__: Oh, that looks interesting. I think I read that and wasn't sure how I'd be using it, but I'll give it a try, thanks!
<patagonicus>
__monty__: Ooh, that's something I hadn't even thought of.
<__monty__>
I just don't see the benefit in dropping dotfiles most of the time. This way I can use them across systems and share them easily. It'd make sense if all of HM modules were like the email stuff, applying to whatever program you choose to back it. But passing extraConfig to everything is unsatisfactory.
<kenran>
__monty__: Are there some duplicate dotfiles for you? I mean, files where you have a home-manager config AND still the resulting dofile?
<__monty__>
Not really. Some things I do have HM manage, like fish, because there's a bunch of environment stuff. And some I never really had dotfiles for and just used HM, like mpv and git.
<kenran>
__monty__: Yes, that seems about right! I was not all too happy with my kitty config, as it was basically 95% extraConfig. For things where I don't use a lot of options and get done with the default hm values, I tend to use those. For DM/WM I still have normal config files, same as with emacs/vim.
<__monty__>
There are disadvantages, of course. Like having to keep track of two repos, I don't really have much/any interdependency so I don't need submodules. But if a program changed its config format or something that'd be on me to keep track of rather than HM simply generating it differently.
<kenran>
Hum, so I need to start all my programs with "nixGL my-stuff". That's a little annoying but not as bad as having to work around that by using system packages... I'd probably create an option in my modules like "wrapWithNixGL" which then simply creates an alias.
<__monty__>
Yeah, it's far from ideal. This is what I used the few times it came up. Maybe there's better solutions out there now though?
<kenran>
I have no idea how to have these programs be startable from a launcher/dmenu though, phew. Ideally I'd need to modify or create different .desktop files, args.
<kenran>
Thanks for all the help. I'll have to ponder :)
maier has quit [Ping timeout: 245 seconds]
<kenran>
Maybe it IS worth it using the system packages, if it's only about 3 things (so far I've seen problem with kitty and qutebrowser only, and I don't even have to stick with kitty).
<__monty__>
Hmm, I'd try wrapProgram. The desktop files probably use the path to the binary which ends up pointing at the wrapper.
<__monty__>
Kitty's hints and unicode input kittens are pretty great though. Wouldn't wanna miss them.
<kenran>
__monty__: Oh, didn't know about wrapProgram. I don't know where to use it yet, but it looks exactly like what I need. Well, time for config again this evening :)
<kenran>
Bye and thanks again!
kenran has quit [Quit: leaving]
MmeQuignon has joined #home-manager
MmeQuignon has quit [Ping timeout: 240 seconds]
MmeQuignon has joined #home-manager
cole-h has joined #home-manager
cole-h has quit [Ping timeout: 245 seconds]
KarlJoad has joined #home-manager
<KarlJoad>
How can I build my configuration when the "anything" attribute is missing?
<KarlJoad>
Is the best thing to just comment those out for now?
rajivr has quit [Quit: Connection closed for inactivity]
kenran has joined #home-manager
Hurttila has joined #home-manager
kenran has quit [Remote host closed the connection]
<nicolas[m]>
KarlJoad: has `types.anything` been removed from unstable?
<nicolas[m]>
otherwise it appears you are mixing Home Manager unstable (the master branch) with a stable release of nixpkgs (20.09 for instance)
<nicolas[m]>
IIRC the 20.09 release doesn't have the required additions to the module system that Home Manager currently uses, i.e. `types.anything` and `lib.formats`
maier has joined #home-manager
maier has quit [Ping timeout: 260 seconds]
Hurttila has quit [Ping timeout: 240 seconds]
maier has joined #home-manager
maier has quit [Ping timeout: 260 seconds]
svrana has quit [Quit: WeeChat 2.9]
<KarlJoad>
nicolas[m]: My branch is based off an older home-manager master commit. But my system uses 20.09 stable.
<nicolas[m]>
Home Manager's master branch has to be used with nixpkgs unstable or 21.05 at least