Compare commits

..

374 commits

Author SHA1 Message Date
Bruno BELANYI d918bf279d modules: services: wireguard: add 'milady'
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-10 17:16:29 +02:00
Bruno BELANYI 6f3bee895c modules: secrets: wireguard: add 'milady' 2021-10-10 17:16:29 +02:00
Bruno BELANYI 069987f47e pkgs: dragger: change platforms to linux
All checks were successful
continuous-integration/drone/push Build is passing
I haven't tested it on darwin, and it just so happens that some
dependency is broken on that system (breaking `nix flake check`)...

Will revisit this later in case I ever happen to use a darwin system.
2021-10-08 19:39:43 +02:00
Bruno BELANYI 971b6e9b65 profiles: wm: add 'dragger' when a WM is set up 2021-10-08 15:06:33 +02:00
Bruno BELANYI 8c103a2261 home: gammastep: fix typo 2021-10-08 15:03:45 +02:00
Bruno BELANYI 76f33fbd57 flake: use 'recurseIntoAttrs' in 'pkgs' overlay 2021-10-08 15:00:46 +02:00
Bruno BELANYI 7d787a2770 pkgs: add dragger
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-08 14:59:03 +02:00
Bruno BELANYI 323e99bbb0 home: xdg: make gdb store history in XDG_DATA_HOME
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-08 12:46:00 +02:00
Bruno BELANYI 8569a8eb55 home: firefox: add 'reddit-comment-collapser' 2021-10-06 09:48:20 +02:00
Bruno BELANYI 6d393fdef2 home: firefox: re-organise module 2021-10-06 09:48:20 +02:00
Bruno BELANYI a85922b3b3 home: firefox: add 'refined-github' 2021-10-06 09:48:20 +02:00
Bruno BELANYI d1cd5bfa32 overlays: add sabnzbd-fix-missing-dependencies
All checks were successful
continuous-integration/drone/push Build is passing
While waiting for my PR to fix this [1].

[1]: https://github.com/NixOS/nixpkgs/pull/140478
2021-10-04 15:01:39 +02:00
Bruno BELANYI d64a867afc flake: bump inputs 2021-10-04 14:45:41 +02:00
Bruno BELANYI cc21d84808 home: tmux: add tmux service
All checks were successful
continuous-integration/drone/push Build is passing
The service definition is pretty awful, but it deals with the secure
socket correctly...

This avoids having a small lapse when starting the very first shell of a
session, which must first launch the server.
2021-09-30 16:58:44 +02:00
Bruno BELANYI 84cdc30037 home: tmux: make history longer
We got tons of RAM!
2021-09-30 16:47:52 +02:00
Bruno BELANYI 07cf0fa4da home: wm: i3: launch tmux when starting terminal
All checks were successful
continuous-integration/drone/push Build is passing
Similarly to the `zsh` snippet, launch tmux unless I explicitly do not
want it.

The reason I also add it in `i3` is to make the launch happen sooner,
and to avoid doing double work on some shell startup shenanigans if I
can.
2021-09-30 15:38:43 +02:00
Bruno BELANYI 24de1890fc home: zsh: launch tmux when starting a shell 2021-09-30 15:34:16 +02:00
Bruno BELANYI 4055ef17f0 home: vim: switch back to gruvbox theme
All checks were successful
continuous-integration/drone/push Build is passing
Onedark is too annoying to deal with, and I still like gruvbox's colors
best.
2021-09-29 18:50:33 +02:00
Bruno BELANYI 7ce69233c1 flake: bump inputs 2021-09-29 17:37:15 +02:00
Bruno BELANYI 9f86615e77 profiles: gtk: new best practices for dconf
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-27 17:07:47 +02:00
Bruno BELANYI e805496588 modules: secrets: fix permission for grafana
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-26 23:09:33 +02:00
Bruno BELANYI 3201445c08 modules: secrets: fix permission of 'matrix/mail' 2021-09-26 23:09:33 +02:00
Bruno BELANYI 30eaefc1d1 modules: secrets: add 'owner' logic 2021-09-26 23:09:33 +02:00
Bruno BELANYI 5f41bb1647 modules: secrets: remove 'with lib;' 2021-09-26 23:09:33 +02:00
Bruno BELANYI fec4956063 secrets: move into 'modules' 2021-09-26 23:09:33 +02:00
Bruno BELANYI a62c0ad126 project: bootstrap: retrieve agenix key 2021-09-26 23:09:33 +02:00
Bruno BELANYI 2cc13dddb5 ci: use 'nix flake check'
Now that I am using agenix, secrets stays encrypted at rest.
2021-09-26 23:09:33 +02:00
Bruno BELANYI de92358bc0 flake: remove 'git-crypt' 2021-09-26 23:09:33 +02:00
Bruno BELANYI 167db81c6c secrets: remove git-crypt 2021-09-26 23:09:33 +02:00
Bruno BELANYI 738d1760c3 secrets: remove git-crypt secrets 2021-09-26 23:09:33 +02:00
Bruno BELANYI e962d4c574 modules: services: nginx: sso: use runtime secrets 2021-09-26 23:09:33 +02:00
Bruno BELANYI 1c0d671fff machines: porthos: services: switch to agenix
The prep-work should be done now, time to hit the switch.
2021-09-26 23:09:32 +02:00
Bruno BELANYI 3bf3980e45 modules: services: nginx: allow sso secret files
This is in preparation of the migration to agenix, which does not allow
access to the secrets at build time.
2021-09-26 23:09:32 +02:00
Bruno BELANYI f6faa11ff7 home: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 67090494e2 home: terminal: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 0d44b3b9f2 home: x: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 37c20529c1 home: wm: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 2449a96652 home: mail: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 8a9337710f home: firefox: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 7b75ea43ad profiles: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI fb6e2afe89 modules: services: drone: split into files
This is cleaner to read.
2021-09-26 23:09:32 +02:00
Bruno BELANYI 51067582e0 modules: services: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 78ade4c605 modules: hardware: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 5c2921e00d modules: system: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI 62a18cd3f6 modules: programs: put modules into folders 2021-09-26 23:09:32 +02:00
Bruno BELANYI c6cc64e156 modules: home: put into folder 2021-09-26 23:09:32 +02:00
Bruno BELANYI 875a3d8587 machines: porthos: users: use clear-text ssh key 2021-09-26 23:09:32 +02:00
Bruno BELANYI 409e0ef357 modules: system: users: use agenix secrets 2021-09-26 23:09:32 +02:00
Bruno BELANYI b6af754199 modules: services: wireguard: use agenix secrets 2021-09-26 23:09:32 +02:00
Bruno BELANYI ca5e5a53cd modules: services: nginx: use 'credentialsFile'
In preparation for the migration to agenix.
2021-09-26 23:09:32 +02:00
Bruno BELANYI ba10af0644 modules: services: matrix: use 'mailConfigFile'
In preparation of the migration to agenix.
2021-09-26 23:09:32 +02:00
Bruno BELANYI 0f2c20e51d modules: services: paperless: use 'secretKeyFile'
In preparation for the migration to agenix.
2021-09-26 23:09:32 +02:00
Bruno BELANYI ca218730ff modules: services: nextcloud: use 'credentialsfile'
In preparation for the migration to agenix.
2021-09-26 23:09:32 +02:00
Bruno BELANYI ac5fd7f472 modules: services: miniflux: use 'credentialsFiles'
In preparation for the migration to agenix.
2021-09-26 23:09:32 +02:00
Bruno BELANYI db37cea907 modules: services: transmission: secrets w/ file
In preparation for the migration to using agenix.
2021-09-26 23:09:31 +02:00
Bruno BELANYI 1cf93825b2 secrets: register agenix secrets automatically 2021-09-26 23:09:31 +02:00
Bruno BELANYI 8a2aad9b54 secrets: migrate to agenix
It is finally time to graduate to an actually secure, stateless
solution.
2021-09-26 23:09:31 +02:00
Bruno BELANYI 018394b61d secrets: import 'agenix' module 2021-09-25 13:31:43 +02:00
Bruno BELANYI 1e3c633c72 flake: add 'agenix' 2021-09-25 13:30:51 +02:00
Bruno BELANYI df302465c9 home: remove unused 'secrets' module 2021-09-25 13:27:01 +02:00
Bruno BELANYI 673ead7863 home: ssh: add missing 'mkIf cfg.enable'
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-24 01:21:57 +02:00
Bruno BELANYI 3d10461a6e home: remove unused arguments 2021-09-24 01:21:57 +02:00
Bruno BELANYI 75312c747b modules: remove unused arguments 2021-09-24 01:21:57 +02:00
Bruno BELANYI 68be7743ad machines: remove unused arguments 2021-09-24 01:21:57 +02:00
Bruno BELANYI 9d362655e2 pkgs: remove unused arguments 2021-09-24 01:21:57 +02:00
Bruno BELANYI 604b99a7ac lib: remove 'with self;' 2021-09-24 01:21:57 +02:00
Bruno BELANYI 8467fda721 lib: modules: refactor 'mapModules'
Introduce the recursive version of this function, then refactor to
reduce repetition.
2021-09-24 01:21:57 +02:00
Bruno BELANYI bad9b8a06b lib: modules: document 'mapModules' 2021-09-24 00:26:28 +02:00
Bruno BELANYI 2d26b36e31 modules: services: nginx: use 'recursiveMerge'
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-23 22:11:25 +02:00
Bruno BELANYI c93a9e5a98 home: wm: i3: use 'recursiveMerge' 2021-09-23 22:11:25 +02:00
Bruno BELANYI 3fa14ebe71 lib: attrs: add 'recursiveMerge' 2021-09-23 22:11:25 +02:00
Bruno BELANYI bd1a2000fe modules: system: users: use 'initialHashedPassword'
This is the better option to use in case I want to have a stateless
system.
2021-09-23 21:30:24 +02:00
Bruno BELANYI 4a0c10b897 modules: system: users: use 'ambroisie' password
Do not rely on `my.user.name` which could be changed to a value not
available in the secrets.
2021-09-23 21:28:29 +02:00
Bruno BELANYI 9f3811ea3b modules: programs: steam: respect XDG conventions
All checks were successful
continuous-integration/drone/push Build is passing
Steam wants to pollute HOME with `.steam*` files and folders, which are
useless and annoying.

We want to make sure the wrappers are preferred when installing, so use
`lib.hiPrio` to ensure they get chosen.
2021-09-15 19:23:24 +02:00
Bruno BELANYI 5c95ba1113 machines: aramis: programs: enable steam 2021-09-15 19:23:24 +02:00
Bruno BELANYI 37bb7fd625 modules: programs: add steam 2021-09-15 19:23:24 +02:00
Bruno BELANYI 45321072fc modules: add 'programs' directory 2021-09-15 16:48:10 +02:00
Bruno BELANYI ed456c999d modules: system: remove 'media'
All checks were successful
continuous-integration/drone/push Build is passing
It was not the idiomatic way to do this.
2021-09-15 16:10:06 +02:00
Bruno BELANYI ad848ef89d pkgs: make use of scoping
This is the way to make sure `callPackage` picks up my custom packages
to be used in the set.
2021-09-15 15:33:18 +02:00
Bruno BELANYI 680d0c9f37 home: gdb: add nix store to safe path
For now, the nix store path is hard-coded rather than substituted.

This is useful for pretty-printing C++ types compiled with a different
C++ library from my gdb.
2021-09-03 17:34:39 +02:00
Bruno BELANYI 9a06108603 git: remove duplicate ignore directive
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-01 14:52:38 +02:00
Bruno BELANYI c8633abf6d flake: use 'nativeBuildInputs' 2021-09-01 14:51:27 +02:00
Bruno BELANYI aceb4ef901 pkgs: unified-hosts-lists: do not set 'phases'
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-31 20:11:11 +02:00
Bruno BELANYI 5937d43993 pkgs: unbound-zones-adblock: do not set 'phases' 2021-08-31 20:11:00 +02:00
Bruno BELANYI add6326fdf pkgs: matrix-notifier: do not set 'phases' 2021-08-31 20:10:41 +02:00
Bruno BELANYI b0e4475586 pkgs: i3-get-window-criteria: do not set 'phases' 2021-08-31 20:08:22 +02:00
Bruno BELANYI 5c1dd6500a pkgs: havm: use 'nativeBuildInputs'
This is the correct one to use for a compiler like 'ghc'.
2021-08-31 19:50:44 +02:00
Bruno BELANYI 60e977611c pkgs: diff-flake: do not set 'phases' 2021-08-31 19:03:33 +02:00
Bruno BELANYI 99462199bd pkgs: comma: do not set 'phases' 2021-08-31 19:03:25 +02:00
Bruno BELANYI 4fe18ff4cd pkgs: comma: give path to source directly 2021-08-31 19:03:24 +02:00
Bruno BELANYI 02ffbcf970 pkgs: bw-pass: do not set 'phases' 2021-08-31 18:59:05 +02:00
Bruno BELANYI 878c92b67e pkgs: havm: use 'checkInputs' for test dependency 2021-08-31 18:44:17 +02:00
Bruno BELANYI 8596ce8638 home: wm: i3bar: remove redundant '%' 2021-08-31 18:31:32 +02:00
Bruno BELANYI 808058d576 modules: services: paperless: proxy websockets 2021-08-31 13:52:11 +02:00
Bruno BELANYI 8ffad5d41b machines: porthos: services: enable paperless 2021-08-31 13:52:11 +02:00
Bruno BELANYI 52706ab4c4 modules: services: paperless: add admin password
This is a fallback in case SSO stops working...
2021-08-31 13:52:11 +02:00
Bruno BELANYI 5ae7b593e4 secrets: add paperless password
To be used as a fallback.
2021-08-31 13:52:11 +02:00
Bruno BELANYI 87613a9163 modules: services: add paperless 2021-08-31 13:52:11 +02:00
Bruno BELANYI 47d19e5b3f secrets: add paperless 2021-08-31 13:52:11 +02:00
Bruno BELANYI a78091c57c flake: bump inputs 2021-08-31 13:52:10 +02:00
Bruno BELANYI 9aba0d3ce0 home: pager: remove lesspipe
I don't use it anymore.
2021-08-30 21:23:13 +02:00
Bruno BELANYI 78064bb2a1 modules: services: nginx: nginx-sso verbose logs
All checks were successful
continuous-integration/drone/push Build is passing
For some reason it still doesn't appear in the systemd log...
2021-08-30 17:38:25 +02:00
Bruno BELANYI 70af0ba99a modules: services: nginx: add SSO 2021-08-30 17:36:39 +02:00
Bruno BELANYI dc2a3610a6 modules: services: nginx: enable explicitly 2021-08-30 17:36:39 +02:00
Bruno BELANYI 894b571745 secrets: add sso 2021-08-30 17:36:39 +02:00
Bruno BELANYI 2049e7a2c5 secrets: allow lists in types 2021-08-30 15:35:00 +02:00
Bruno BELANYI 7032ddef37 modules: services: use new nginx wrapper
All checks were successful
continuous-integration/drone/push Build is passing
And when not possible, document why.

Note for the future: there is some repetition in some modules to
configure the correct value of the subdomain, which I happen to know
will line up correctly thanks to the nginx wrapper. A good way to
refactor this in the future would involve avoiding this repetition,
allowing use to query the correct domain in some way...
2021-08-26 15:54:13 +02:00
Bruno BELANYI 81e12969eb modules: services: nginx: overhaul modularity
This should be all that's needed for almost all my services.
2021-08-26 15:54:13 +02:00
Bruno BELANYI b97eff2479 lib: lists: add countValues 2021-08-26 15:54:13 +02:00
Bruno BELANYI 4f742b69f2 lib: lists: add 'mapFilter' 2021-08-26 15:54:13 +02:00
Bruno BELANYI 11fbbd62eb home: zsh: clean-up blank in history
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-25 12:51:38 +02:00
Bruno BELANYI d21087ddcd home: zsh: append to history
Otherwise the file is replaced rather than appended to.
2021-08-25 12:44:42 +02:00
Bruno BELANYI 3919a87d9e home: zsh: do not share history accross shells
It's more annoying than helpful...
2021-08-25 12:22:36 +02:00
Bruno BELANYI 3fd487bbd2 home: gdb: fix configuration path
All checks were successful
continuous-integration/drone/push Build is passing
Turns out the latest version of `gdb` does not yet look for its
configuration in `XDG_CONFIG_HOME`...
2021-08-22 15:02:57 +02:00
Bruno BELANYI 5916ae631d home: gdb: add rr 2021-08-21 01:13:14 +02:00
Bruno BELANYI 1a436fd962 home: gdb: fix auto-load safe path 2021-08-20 21:22:27 +02:00
Bruno BELANYI a48303e66d home: add gdb
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-20 20:03:51 +02:00
Bruno BELANYI 30fc01b5ae modules: services: nextcloud: exclude previews
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-19 14:27:40 +02:00
Bruno BELANYI 13684ecdc4 modules: services: backup: make it verbose 2021-08-19 14:27:40 +02:00
Bruno BELANYI fe720b2de3 machines: porthos: services: enable navidrome
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-19 12:23:06 +02:00
Bruno BELANYI ec6b31f4a6 modules: services: add navidrome 2021-08-19 12:23:06 +02:00
Bruno BELANYI 1335bbfe9d flake: bump inputs
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-19 11:49:41 +02:00
Bruno BELANYI 2cc1925346 modules: services: backup: fix exclude files
All checks were successful
continuous-integration/drone/push Build is passing
I was using the wrong option... Somehow it didn't error out.
2021-08-09 20:08:43 +02:00
Bruno BELANYI eb0c5d5895 pkgs: add drone-scp
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-08 18:03:19 +02:00
Bruno BELANYI 8c298c26f9 pkgs: unified-hosts-lists: 3.6.4 -> 3.8.5
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-07 12:29:41 +02:00
Bruno BELANYI 55a04cfac3 pkgs: bw-pass: report errors to stderr
Useful in case the script can't prompt using `rofi`.
2021-07-31 20:17:37 +02:00
Bruno BELANYI 1783c2838b modules: services: tlp: add power scaling 2021-07-31 16:56:20 +02:00
Bruno BELANYI e215f7aa1d modules: services: nextcloud: upgrade version
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-29 13:42:28 +02:00
Bruno BELANYI afb683f1cf flake: bump inputs
And update package names for grafana dashboards to avoid breaking the
config.
2021-07-29 13:42:28 +02:00
Bruno BELANYI c320387746 modules: services: postgres: upgrade version 2021-07-29 13:03:10 +02:00
Bruno BELANYI bbb1231ad3 modules: services: postgres: add migration script
The process to upgrade is:

* Make sure the version number of the script is one major version over
  the service version.

* Activate the script, rebuild configuration.

* Run `upgrade-pg-cluster` as `root`. One can give arguments like
  `--link` or `--jobs 4` to speedup the process. See documentation for
  some details.

* Change package to new version once the upgrade is finished, rebuild
  configuration.

* Optionally, `ANALYZE` the new database.
2021-07-29 13:02:49 +02:00
Bruno BELANYI 9f00d8a38e modules: services: add postgresql
Enable the service itself in other modules when needed, but pin the
package in a single place.
2021-07-29 12:43:28 +02:00
Bruno BELANYI 820b52314f modules: services: monitoring: add scrape interval
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-15 18:54:07 +02:00
Bruno BELANYI a3293277d9 flake: flatten and filter packages w/ flake-utils
All checks were successful
continuous-integration/drone/push Build is passing
Instead of my home-grown solution, use one that has been upstreamed.
2021-07-14 21:49:31 +02:00
Bruno BELANYI 2ecd417a68 machines: porthos: services: enable monitoring
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-13 19:17:33 +02:00
Bruno BELANYI 4e8045716c secrets: add monitoring password 2021-07-13 19:17:33 +02:00
Bruno BELANYI e060476f32 modules: services: add monitoring dashboard 2021-07-13 19:17:33 +02:00
Bruno BELANYI 2458ddf59d modules: services: add monitoring
This includes a dashboard to monitor system ressources, using
Prometheus.
2021-07-13 19:17:33 +02:00
Bruno BELANYI 8927b3182f flake: bump inputs 2021-07-13 19:08:54 +02:00
Bruno BELANYI f2dfeeb35b home: git: use topological order in log
It is the one that makes most sense, rather than some kind of date
order...
2021-07-13 17:50:44 +02:00
Bruno BELANYI 971b610cd5 modules: services: matrix: SSL only for server
This is a requirement anyway for homeservers, and the `forceSSL` option
tried to create a redirect for non-SSL traffic, except the `listen`
option only provided SSL endpoints anyway, so this resulted in
additional rules in the nginx config looking like this:

```nginx
server {
        server_name matrix.belanyi.fr ;
        location /.well-known/acme-challenge {
                root /var/lib/acme/acme-challenge;
                auth_basic off;
        }
        location / {
                return 301 https://$host$request_uri;
        }
}
```
2021-07-13 17:43:31 +02:00
Bruno BELANYI 21f48b5f71 pkgs: bw-pass: change password prompt
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-04 11:52:07 +02:00
Bruno BELANYI a3edf2548b overlays: transgui: correctly use previous patches 2021-07-04 11:52:07 +02:00
Bruno BELANYI ea7b064546 home: direnv: update to new option name
All checks were successful
continuous-integration/drone/push Build is passing
And enable the flakes option.

I don't actually use this on my own projects, but it could be useful for
other projects that I contribute to.
2021-06-30 20:08:07 +02:00
Bruno BELANYI ff8e64d601 home: mail: add himalaya
This mail client is very KISS. I like it.
2021-06-30 20:08:06 +02:00
Bruno BELANYI 791109c3c1 flake: bump inputs 2021-06-30 20:07:55 +02:00
Bruno BELANYI 6eb3942270 home: firefox: add sponsorblock
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-27 19:51:04 +02:00
Bruno BELANYI 2232062fd9 home: secrets: use more specific type
I will amend it if I need more types, but for now this is fine.
2021-06-27 19:48:42 +02:00
Bruno BELANYI d6e9f9786d secrets: use more specific type
I will amend it if I need more types, but for now this is fine.
2021-06-27 19:48:26 +02:00
Bruno BELANYI 5abe4e929e modules: hardware: sound: refactor options
All checks were successful
continuous-integration/drone/push Build is passing
Do not enable ALSA when using pipewire. Ensure that both pulseaudio and
pipewire are not configured at the same time.
2021-06-27 01:59:07 +02:00
Bruno BELANYI 57717d70ef home: wm: i3: also toggle xss-lock 2021-06-26 18:38:11 +02:00
Bruno BELANYI 7a382368e8 modules: move home configuration from flake 2021-06-25 20:46:36 +02:00
Bruno BELANYI 0f17123d09 modules: change username configuration option
It makes more sense to have a `my.user` option.
2021-06-25 20:45:36 +02:00
Bruno BELANYI c6d21493ef home: zsh: explicitly set history save size
All checks were successful
continuous-integration/drone/push Build is passing
Turns out the `history.save` limit is for what is *loaded into memory*,
not what is written to disk.
2021-06-23 23:14:05 +02:00
Bruno BELANYI 5cebb9b54b home: zsh: explicitly opt out of extended history 2021-06-23 23:13:39 +02:00
Bruno BELANYI 92c2748747 home: wm: dunst: use rofi as 'dmenu' when enabled 2021-06-23 23:08:23 +02:00
Bruno BELANYI 4cae294cf5 home: wm: i3: enable rofi bindings when applicable 2021-06-23 23:06:15 +02:00
Bruno BELANYI 23c6093c36 home: wm: dunst: add line wrapping
All checks were successful
continuous-integration/drone/push Build is passing
Once again, trying to make them actually readable.
2021-06-22 19:48:03 +02:00
Bruno BELANYI 3fdcfb5b5f home: wm: dunst: add max icon size
All checks were successful
continuous-integration/drone/push Build is passing
Otherwise I end up with icons that are way too big...
2021-06-22 19:39:35 +02:00
Bruno BELANYI c9418cc4d3 pkgs: matrix-notifier: 0.1.2 -> 0.2.0
All checks were successful
continuous-integration/drone/push Build is passing
`pandoc` is now a dependency.
2021-06-16 21:19:09 +02:00
Bruno BELANYI cd02cbff45 pkgs: use 'lib' as first input
All checks were successful
continuous-integration/drone/push Build is passing
This is the idiomatic style in nixpkgs.
2021-06-16 20:13:25 +02:00
Bruno BELANYI daa69a54fa modules: services: indexers: limit Jackett memory
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-15 21:25:56 +02:00
Bruno BELANYI 212dd299e2 pkgs: matrix-notifier: 0.1.0 -> 0.1.2
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-15 18:42:13 +02:00
Bruno BELANYI cff3811cad home: wm: screen-lock: use actual assertion
All checks were successful
continuous-integration/drone/push Build is passing
Instead of hijacking the type verification, use an assertion.
2021-06-15 17:45:17 +02:00
Bruno BELANYI 8f266245ee modules: system: add boot
And enable mounting `/tmp` as tmpfs by default.
2021-06-14 16:41:28 +02:00
Bruno BELANYI b8be3d80a8 ci: migrate to 'exec' runner
All checks were successful
continuous-integration/drone/push Build is passing
Now that I have written a script to do the Matrix notification, I can do
that.
2021-06-13 18:38:09 +02:00
Bruno BELANYI b04c1b09ea pkgs: add matrix-notifier 2021-06-13 18:37:11 +02:00
Bruno BELANYI 3a471433ed home: secrets: clean-up 'default.nix'
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-12 20:35:28 +02:00
Bruno BELANYI f8325cc9c7 secrets: clean-up 'default.nix' 2021-06-12 20:35:06 +02:00
Bruno BELANYI cd1173d2f6 flake: filter 'packages' on system 2021-06-12 19:56:17 +02:00
Bruno BELANYI e319eaf09f pkgs: bw-pass: fix 'meta.platforms'
This makes use of 'keyutils' which only works on Linux.
2021-06-12 19:30:25 +02:00
Bruno BELANYI e6ba569b36 modules: system: documentation: include POSIX man
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-12 13:23:09 +02:00
Bruno BELANYI ee21de5b94 modules: services: matrix: add mail configuration
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-09 19:14:09 +02:00
Bruno BELANYI 6614b47546 secrets: matrix: add mail configuration 2021-06-09 19:14:09 +02:00
Bruno BELANYI 06c53620f8 modules: services: matrix: enable spaces 2021-06-09 18:33:54 +02:00
Bruno BELANYI d43045c6d6 modules: services: matrix: add SMS verification 2021-06-09 18:32:59 +02:00
Bruno BELANYI 6113ad154d home: firefox: tridactyl: add tabduplicate mapping
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2021-06-07 17:56:46 +02:00
Bruno BELANYI e8982b8bc9 machines: aramis: profiles: enable devices 2021-06-07 17:56:46 +02:00
Bruno BELANYI 7684489c9a profiles: add devices 2021-06-07 17:56:46 +02:00
Bruno BELANYI 1994ef2b1b modules: hardware: add mx-ergo
This adds the ability to scroll using the ball, which is way better.
2021-06-07 17:56:46 +02:00
Bruno BELANYI a434016252 home: wm: i3: remove 'udiskie' and 'flameshot'
It makes more sense to activate those at the `profile` level.
2021-06-03 17:34:16 +02:00
Bruno BELANYI 1794eefd30 profiles: wm: enable 'i3' helpers
`flameshot` and `udiskie` provide some functionnality that would usually
be found in an actual DE.

It makes more sense to activate them here instead of in the home
configuration, so I will remove it in the next commit.
2021-06-03 17:33:13 +02:00
Bruno BELANYI 29437d3e3f home: wm: i3: move script generation out-of-line
This makes for a cleaner configuration file.
2021-06-03 17:18:33 +02:00
Bruno BELANYI a827a34501 git: ignore generated pre-commit configuration
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-31 23:06:37 +02:00
Bruno BELANYI 610b0f2f4b nix: evaluate shell hooks
This activates the pre-commit-hook configuration.
2021-05-31 23:06:20 +02:00
Bruno BELANYI 59cb038045 flake: add pre-commit-hooks
Instead of havin the tool manage versions, use a pinned version.
2021-05-31 23:04:08 +02:00
Bruno BELANYI 15db81eb3b flake: change format 2021-05-31 23:02:32 +02:00
Bruno BELANYI 24efa3edca machines: aramis: hardware: enable trackpoint 2021-05-31 20:30:36 +02:00
Bruno BELANYI 2fe4f1faad modules: home: use 'username' config value 2021-05-30 01:31:05 +02:00
Bruno BELANYI 4f1f687eea flake: use 'username' config value 2021-05-30 01:20:14 +02:00
Bruno BELANYI b90be0acdf home: zsh: remove trailing whitespace
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-30 00:46:09 +02:00
Bruno BELANYI ea4c699b81 modules: system: users: make it configurable
Notably, make use of my global 'username' option.
2021-05-30 00:46:09 +02:00
Bruno BELANYI 8efe75295d modules: add option to specify username
Given that I use it in plenty of places, it makes sense to place it
there for reference in other modules.
2021-05-30 00:46:09 +02:00
Bruno BELANYI 2d9b11406a modules: system: packages: make it configurable 2021-05-30 00:46:09 +02:00
Bruno BELANYI 003c08cb09 modules: system: nix: make it configurable 2021-05-30 00:46:09 +02:00
Bruno BELANYI 6728b50d3a modules: system: language: make it configurable 2021-05-30 00:46:09 +02:00
Bruno BELANYI 2eaf3bf2c7 modules: system: move 'packages' 2021-05-29 16:58:44 +02:00
Bruno BELANYI 0077ce1f94 modules: system: move 'nix' 2021-05-29 16:58:44 +02:00
Bruno BELANYI 14d9fc89f1 modules: system: move 'documentation' 2021-05-29 16:58:44 +02:00
Bruno BELANYI f660bf94e9 modules: system: move 'language' 2021-05-29 16:58:44 +02:00
Bruno BELANYI 3b9f01e780 modules: system: move 'users' 2021-05-29 16:58:44 +02:00
Bruno BELANYI 60f1e693d1 modules: system: move 'media' 2021-05-29 16:56:15 +02:00
Bruno BELANYI ce4b0b8c90 modules: add 'system' directory 2021-05-29 16:56:15 +02:00
Bruno BELANYI d2704b17fe modules: move 'services' into subfolder 2021-05-29 16:56:15 +02:00
Bruno BELANYI 31f8ec6e98 modules: hardware: move 'upower' 2021-05-29 16:56:15 +02:00
Bruno BELANYI af67d04992 modules: hardware: move 'sound' 2021-05-29 16:56:15 +02:00
Bruno BELANYI f9bcf79430 modules: hardware: move 'networking' 2021-05-29 16:56:15 +02:00
Bruno BELANYI b0cc830467 modules: hardware: move 'ergodox' 2021-05-29 16:56:15 +02:00
Bruno BELANYI 9b054d10c7 modules: hardware: move 'bluetooth' 2021-05-29 16:56:15 +02:00
Bruno BELANYI e81aaa8ebc modules: add 'hardware' directory 2021-05-29 16:56:15 +02:00
Bruno BELANYI 737b5e797b modules: ergodox: remove useless group clause
The `zsa` module already add the group itself.
2021-05-29 16:15:20 +02:00
Bruno BELANYI 6728b5b949 flake: bump inputs
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-29 12:23:01 +02:00
Bruno BELANYI 2999ba7c0b services: jellyfin: fix proxy configuration
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-28 11:38:28 +02:00
Bruno BELANYI 1ac9f0cc8c home: comma: configure custom 'nixpkgs' flake
All checks were successful
continuous-integration/drone/push Build is passing
This makes use of my pinned `pkgs` flake from the registry by default.
2021-05-27 21:50:27 +02:00
Bruno BELANYI 6074958292 home: extract 'comma' into its own module 2021-05-27 21:49:24 +02:00
Bruno BELANYI da21e7a6f2 pkgs: comma: allow override which nixpkgs is used
This is useful for me to use my pinned `pkgs` instead.
2021-05-27 21:42:41 +02:00
Bruno BELANYI 395f15f181 pkgs: add volantes-cursors 2021-05-27 19:57:31 +02:00
Bruno BELANYI 059831b532 home: x: cursor: switch to Vimix
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-27 19:15:52 +02:00
Bruno BELANYI 76d165343e pkgs: add vimix-cursors 2021-05-27 19:15:52 +02:00
Bruno BELANYI f66da6fee6 home: git: add 'pick' alias
All checks were successful
continuous-integration/drone/push Build is passing
I wanted to name it 'pickaxe' but for a curious reason, it does not seem
to be working when I use that alias...

I am trying to find a second alias name for `git log -p -S`, which only
shows commits that change the number of occurrences of its pickaxe in
the file. Whereas `-G` shows any commit involving the pickaxe in its
diff.
2021-05-25 23:13:35 +02:00
Bruno BELANYI ca1c7962ea machines: aramis: sound: switch to pipewire
The support for mSBC means I should get better audio on my QC35.
2021-05-25 23:13:35 +02:00
Bruno BELANYI 796df5475e home: wm: i3: use pamixer for audio control
This can be used with either pipewire and pulseaudio without having to
install all of pulseaudio.
2021-05-25 23:13:35 +02:00
Bruno BELANYI 414606b58e modules: bluetooth: add pipewire codecs 2021-05-25 23:13:35 +02:00
Bruno BELANYI 931b67fdb2 modules: sound: add pipewire configuration 2021-05-25 18:19:52 +02:00
Bruno BELANYI 8b4966fcbe machines: aramis: sound: use common module 2021-05-25 18:19:52 +02:00
Bruno BELANYI a508db48c9 modules: add sound
I will probably want to share this configuration between multiple
machines in the future.
2021-05-25 18:19:52 +02:00
Bruno BELANYI 406eeea9f6 services: podgrab: remove mention of merged PR
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-23 00:32:59 +02:00
Bruno BELANYI 9d3d86365c project: readme: mention manual flood config
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-23 00:14:26 +02:00
Bruno BELANYI 78d77890de machines: porthos: services: enable flood
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-22 23:59:27 +02:00
Bruno BELANYI a33fbc6659 services: add flood 2021-05-22 23:59:27 +02:00
Bruno BELANYI b134aedff0 home: wm: i3bar: invert baclight icon
Because I am using an emoji font, it looks better that way.
2021-05-22 23:59:27 +02:00
Bruno BELANYI d31e293cef home: mail: add msmtp 2021-05-22 23:49:57 +02:00
Bruno BELANYI 182ec2a4db home: add mail and accounts configuration 2021-05-22 23:49:57 +02:00
Bruno BELANYI 81647c5a02 home: terminal: use 'cfg.terminal' for TERMINAL 2021-05-22 23:49:57 +02:00
Bruno BELANYI 8a8f7387f4 pkgs: add bw-pass
Until `rbw` gets support for Yubikey 2FA, I still need a decent way to
query for my passwords on the command line...

This wrapper program should be good enough for basic usage with programs
that need a password command.
2021-05-22 23:49:57 +02:00
Bruno BELANYI f2b20c65a8 modules: nix: expose pinned nixpkgs as 'pkgs'
That way if I do want to use that latest version, I can still use
`nixpkgs#<whatever>`.
2021-05-22 23:49:57 +02:00
Bruno BELANYI cc37713839 home: firefox: tridactyl: fix Reddit URL rewriter 2021-05-22 23:49:57 +02:00
Bruno BELANYI e80485018c home: firefox: add ff2mpv
This allows watching videos using mpv via a simple button.
2021-05-22 23:49:57 +02:00
Bruno BELANYI 15abb291ef machines: aramis: home: enable mpv 2021-05-22 23:49:57 +02:00
Bruno BELANYI fb56631ef3 home: add mpv 2021-05-22 23:49:57 +02:00
Bruno BELANYI 9113290161 pkgs: add ff2mpv-go 2021-05-22 23:49:57 +02:00
Bruno BELANYI 943ea20b16 services: podgrab: switch to upstream service 2021-05-22 23:49:57 +02:00
Bruno BELANYI 129fcdd42c pkgs: remove podgrab
Now that it has been merged upstream, no reason to keep it.
2021-05-22 23:49:02 +02:00
Bruno BELANYI d086af7e00 modules: nix: pin flake registry to common inputs 2021-05-22 23:47:27 +02:00
Bruno BELANYI e4d8a4d4b2 flake: inject 'inputs' into NixOS configuration 2021-05-22 23:47:27 +02:00
Bruno BELANYI 1a5dd0b91c home: wm: rofi: configure terminal 2021-05-22 23:47:27 +02:00
Bruno BELANYI 02c2a23ee5 profiles: laptop: enable TLP 2021-05-22 23:47:27 +02:00
Bruno BELANYI f6ace9d438 services: add TLP 2021-05-22 23:47:27 +02:00
Bruno BELANYI 2a0b5b7802 pkgs: add myself as maintainer to all packages 2021-05-22 23:47:27 +02:00
Bruno BELANYI 2c596395b0 home: add nix-index 2021-05-22 23:47:27 +02:00
Bruno BELANYI 986701d1c8 services: adblock: use new 'settings' option
This shows that I have not upgraded the server in a while...
2021-05-22 23:47:27 +02:00
Bruno BELANYI ee33ab11c6 flake: bump inputs 2021-05-20 17:55:45 +02:00
Bruno BELANYI 7d0a772cce home: firefox: tridactyl: fix parent URL on Reddit
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-16 00:03:59 +02:00
Bruno BELANYI 97ee498405 home: packages: add 'comma' to common package set 2021-05-16 00:03:59 +02:00
Bruno BELANYI e5fdfd6c44 pkgs: add comma 2021-05-16 00:03:59 +02:00
Bruno BELANYI 76148d75b8 machines: aramis: services: remove gnupg-agent
The one configured by home-manager is more appropriate.
2021-05-16 00:03:59 +02:00
Bruno BELANYI 9e6bc604f3 home: x: add 'xsel' package
I like it better than 'xclip'.
2021-05-16 00:03:59 +02:00
Bruno BELANYI b4d3b06fbf home: zsh: make history ten times bigger 2021-05-16 00:03:59 +02:00
Bruno BELANYI 8de23feee7 profiles: laptop: enable power-alert 2021-05-16 00:03:59 +02:00
Bruno BELANYI 0fc3bf3096 home: add power-alert 2021-05-16 00:03:59 +02:00
Bruno BELANYI 7d48b0edab profiles: laptop: enable upower 2021-05-16 00:03:59 +02:00
Bruno BELANYI d23ad8f5e1 modules: add upower 2021-05-16 00:03:59 +02:00
Bruno BELANYI f3764ce20e home: pager: fix colorized man pages
Turns out that sessionVariables are not being set at the proper time for
use with `tput`.

This commit also cleans up a bit how the config was being set.
2021-05-16 00:03:59 +02:00
Bruno BELANYI f9d849c5da home: wm: i3bar: add 'backlight' block 2021-05-16 00:03:59 +02:00
Bruno BELANYI 59e833a55b home: wm: i3bar: remove gammastep block
It doesn't seem to be working well with my setup...
2021-05-16 00:03:59 +02:00
Bruno BELANYI 03130ed9ee home: wm: i3: use 'brightnessctl' 2021-05-16 00:03:59 +02:00
Bruno BELANYI ac4cf0c1a2 home: wm: i3: fix screen-related mappings 2021-05-16 00:03:59 +02:00
Bruno BELANYI fab93a5f2f modules: users: simplify 'groupsIfExist' 2021-05-16 00:03:59 +02:00
Bruno BELANYI f04368a71e machines: porthos: set timezone 2021-05-16 00:03:59 +02:00
Bruno BELANYI 30ce91557d machines: aramis: use laptop profile 2021-05-16 00:03:59 +02:00
Bruno BELANYI d46f66842f profiles: add laptop 2021-05-16 00:03:59 +02:00
Bruno BELANYI 737484dcfe machines: aramis: use X profile 2021-05-16 00:03:59 +02:00
Bruno BELANYI 125935ac0f profiles: add X 2021-05-16 00:03:59 +02:00
Bruno BELANYI e786eaddde machines: aramis: use gtk profile 2021-05-16 00:03:59 +02:00
Bruno BELANYI e211ac7d73 profiles: add gtk 2021-05-16 00:03:59 +02:00
Bruno BELANYI 3f50abcbe0 machines: aramis: use wm profile 2021-05-16 00:03:59 +02:00
Bruno BELANYI 1c2193d698 profiles: add wm 2021-05-16 00:03:59 +02:00
Bruno BELANYI 12b3397a20 modules: bluetooth: fix documentation 2021-05-16 00:03:59 +02:00
Bruno BELANYI ca620a4eb6 machines: aramis: enable bluetooth profile 2021-05-16 00:03:59 +02:00
Bruno BELANYI 885b45d39c profiles: add bluetooth 2021-05-16 00:03:59 +02:00
Bruno BELANYI 0c943d8430 flake: add profiles folder
This will be used for configurations that either consolidates multiple options
that make sens to use together, or span accross system and home configuration.
2021-05-16 00:03:59 +02:00
Bruno BELANYI 79dfb3a979 home: gtk: do not set font size
Turns out that I do not like how it interferes with Firefox's
rendering... I should probably investigate this in the future if I want
to use this option.
2021-05-16 00:03:59 +02:00
Bruno BELANYI 00a5d1b076 machines: aramis: home: enable GTK
In order to not have an error at activation, dconf must be made
available to the dbus service.
2021-05-10 00:31:01 +02:00
Bruno BELANYI 5e193b3a42 home: add gtk 2021-05-10 00:31:01 +02:00
Bruno BELANYI bf9de874ce machines: aramis: home: add transgui 2021-05-10 00:31:01 +02:00
Bruno BELANYI 5aaa497653 overlays: add transgui-fix-duplicate-status
Upstream is being slow in merging the patch...
2021-05-10 00:31:01 +02:00
Bruno BELANYI 3887a86650 flake: add overlays folder 2021-05-10 00:31:01 +02:00
Bruno BELANYI f57fd32088 machines: aramis: home: add jellyfin-media-player 2021-05-10 00:31:01 +02:00
Bruno BELANYI 1c147613e4 home: terminal: export TERMINAL when appropriate
This is used by some programs, like 'rofi' to launch terminal programs.
2021-05-10 00:31:01 +02:00
Bruno BELANYI 15190d4b50 pkgs: i3-get-window-criteria: remove whitespace 2021-05-10 00:31:01 +02:00
Bruno BELANYI 5f7d2c74bc home: wm: i3: add i3-get-window-criteria package 2021-05-10 00:31:01 +02:00
Bruno BELANYI 53dd04a0b7 pkgs: add i3-get-window-criteria 2021-05-10 00:31:01 +02:00
Bruno BELANYI 86ab6bf17a machines: aramis: home: enable feh 2021-05-10 00:31:01 +02:00
Bruno BELANYI 6008ac470c home: add feh 2021-05-10 00:31:01 +02:00
Bruno BELANYI 717c628ff1 machines: aramis: home: set up background
`i3` inherits its background from `lightdm`.
2021-05-10 00:31:01 +02:00
Bruno BELANYI 749ef9f072 home: packages: add 'file' to common package set 2021-05-10 00:31:01 +02:00
Bruno BELANYI a0c63f00f9 home: pager: add colored man page support 2021-05-10 00:31:01 +02:00
Bruno BELANYI d9734dd505 machines: aramis: add some additional packages 2021-05-10 00:31:01 +02:00
Bruno BELANYI 4225bdd103 home: packages: add option for additional packages 2021-05-10 00:31:01 +02:00
Bruno BELANYI 3a07cffa14 modules: documentation: add linux man pages option
I want to be able to read about syscalls or the C library.
2021-05-10 00:31:01 +02:00
Bruno BELANYI 06f9f423e9 modules: documentation: use 'mkDisableOption'
The documentation module already gates behind 'documentation.enable' for
the other options.
2021-05-10 00:31:01 +02:00
Bruno BELANYI ad1d907c25 home: x: add cursor
I would like to check out alternative themes. Notably Quintom [1],
Volantes [2], and Vimix [3].

[1]: https://gitlab.com/Burning_Cube/quintom-cursor-theme
[2]: https://github.com/varlesh/volantes-cursors
[3]: https://github.com/vinceliuice/Vimix-cursors
2021-05-10 00:31:01 +02:00
Bruno BELANYI ef0f4bdca5 machines: aramis: home: enable bluetooth 2021-05-10 00:31:01 +02:00
Bruno BELANYI b4d002033a home: add bluetooth 2021-05-10 00:31:01 +02:00
Bruno BELANYI 8837c7c33c home: wm: i3bar: use FontAwesome5 for icons 2021-05-10 00:31:01 +02:00
Bruno BELANYI f4cc68a650 home: wm: i3: use new 'fonts' option type 2021-05-10 00:31:01 +02:00
Bruno BELANYI 79525013b0 flake: bump inputs 2021-05-10 00:31:01 +02:00
Bruno BELANYI 2b8d01f056 machines: aramis: enable bluetooth 2021-05-10 00:31:01 +02:00
Bruno BELANYI b115d94cd6 modules: add bluetooth 2021-05-10 00:31:01 +02:00
Bruno BELANYI 1022601602 machines: aramis: networking: use wireless option 2021-05-10 00:31:01 +02:00
Bruno BELANYI 376e60d71e modules: networking: add 'wireless' option 2021-05-10 00:31:01 +02:00
Bruno BELANYI a03db294fe machines: aramis: install: exit on error 2021-05-10 00:31:01 +02:00
Bruno BELANYI f2b9040175 machines: aramis: home: enable nm-applet 2021-05-10 00:31:01 +02:00
Bruno BELANYI b1e8664e32 home: add nm-applet 2021-05-10 00:31:01 +02:00
Bruno BELANYI b61aca7def modules: users: add myself to 'networkmanager' 2021-05-08 17:14:13 +02:00
Bruno BELANYI d388a379d4 machine: aramis: networking: use networkmanager
I consider WiFi configurations to be ephemeral
2021-05-08 17:14:13 +02:00
Bruno BELANYI 3402b92784 home: gammastep: show tray icon 2021-05-08 17:14:13 +02:00
Bruno BELANYI b55466b791 home: gammastep: change default night temperature
I want the colour to be warmer, and blues even more attenuated.
2021-05-08 17:14:13 +02:00
Bruno BELANYI 036d59ec11 home: wm: i3: add mic mute media key 2021-05-08 17:14:13 +02:00
Bruno BELANYI f89e1ba3e9 home: wm: i3: fix audio media keys 2021-05-08 17:14:13 +02:00
Bruno BELANYI 8788deac5e home: wm: i3bar: extend width of music block 2021-05-08 17:14:13 +02:00
Bruno BELANYI 676cd03c9c home: wm: i3bar: show temperature block by default 2021-05-08 17:14:13 +02:00
Bruno BELANYI e329e7a59a home: zsh: enable VTE integration when appropriate 2021-05-08 17:14:13 +02:00
Bruno BELANYI 98a8e068ea machines: aramis: services: enable wireguard 2021-05-08 17:14:13 +02:00
Bruno BELANYI f5fcd2a7a6 home: wm: screen-lock: add 'notify.delay' setting 2021-05-08 17:14:13 +02:00
Bruno BELANYI 1b9b598662 home: wm: screen-lock: add corner delay setting 2021-05-08 17:14:13 +02:00
Bruno BELANYI 05e0cd4e1f modules: users: reformat 2021-05-08 17:14:13 +02:00
Bruno BELANYI 9973e0d32f home: firefox: add form-history-control extension 2021-05-08 17:14:13 +02:00
Bruno BELANYI 8231e8feaa home: wm: i3: use keycode for shutdown mapping
The motivation for using keycodes for all those mappings is to allow
switch to an actual french keyboard layout it still be able to move
through workspaces etc...
2021-05-08 17:14:13 +02:00
Bruno BELANYI 8dc89846b2 machines: aramis: home: use GTK pinentry
I do have a graphical session, I can afford to be "fancy"
2021-05-08 17:14:13 +02:00
Bruno BELANYI 5a32160954 home: gpg: make pinentry configurable 2021-05-08 17:14:13 +02:00
Bruno BELANYI 6612d0226a modules: packages: prefer user compinit to global
This should make the shell startup faster.
2021-05-08 17:14:13 +02:00
Bruno BELANYI 75e3d9bf70 project: bootstrap: unlock BW when logged in 2021-05-08 17:14:13 +02:00
Bruno BELANYI 9dbfb65c27 home: wm: i3: add display bindings 2021-05-08 17:14:13 +02:00
Bruno BELANYI f8d6447ac4 home: wm: i3: add dunst bindings 2021-05-08 17:14:13 +02:00
Bruno BELANYI 185781a4e2 home: wm: i3: add binding to toggle xautolock 2021-05-08 17:14:13 +02:00
Bruno BELANYI cdc29efafc home: wm: screen-lock: add xautolock options 2021-05-08 17:14:13 +02:00
Bruno BELANYI 9f6c614c9f home: wm: add screen-lock 2021-05-08 17:14:13 +02:00
Bruno BELANYI 54a20058fb home: wm: dunst: add configuration 2021-05-08 17:14:13 +02:00
Bruno BELANYI 6bad81a644 home: wm: add dunst 2021-05-08 17:14:13 +02:00
Bruno BELANYI 971ee359ce home: wm: use explicit 'enable' options
This is so that I can explicitly enable them if I were to use Wayland
and Sway, given that they should be compatible with both environment.

This also means that putting them in `/home/x/` would a misnomer... Will
revisit this if and when I try out Wayland and sway...
2021-05-08 17:14:13 +02:00
Bruno BELANYI c175964630 modules: users: add myself to 'video' and 'audio' 2021-05-08 17:14:13 +02:00
Bruno BELANYI 046391e26e home: wm: i3bar: hide music block when not playing 2021-05-08 17:14:13 +02:00
Bruno BELANYI b32fec2c63 home: wm: i3bar: add gammastep block if enabled 2021-05-08 17:14:13 +02:00
Bruno BELANYI 3ec448bf03 machines: aramis: home: enable gammastep 2021-05-08 17:14:13 +02:00
Bruno BELANYI c3c44bceb6 home: add gammastep 2021-05-08 17:14:13 +02:00
Bruno BELANYI e1240c188e home: firefox: add tridactyl 2021-05-08 17:14:13 +02:00
Bruno BELANYI d5b3b95827 home: firefox: use tridactyl-native when enabled 2021-05-08 17:14:13 +02:00
Bruno BELANYI c17b5f4004 machines: aramis: home: enable firefox 2021-05-08 17:14:13 +02:00
Bruno BELANYI e06edc8f47 home: add firefox 2021-05-08 17:14:13 +02:00
Bruno BELANYI 4d04dd9b9b home: wm: i3: use udiskie service 2021-05-08 17:14:13 +02:00
Bruno BELANYI e6b810b5a1 home: add udiskie 2021-05-08 17:14:13 +02:00
Bruno BELANYI 595720dcd4 home: wm: i3: use flameshot service directly
Instead of starting `flameshot` with `i3`, use the provided service.
2021-05-08 17:14:13 +02:00
Bruno BELANYI e6fb00ce9a home: add flameshot 2021-05-08 17:14:13 +02:00
Bruno BELANYI d01b7963cd machines: aramis: home: enable zathura 2021-05-08 17:14:13 +02:00
Bruno BELANYI 646768c3b7 home: add zathura 2021-05-08 17:14:13 +02:00
Bruno BELANYI b254e0f7ac machines: aramis: home: enable termite 2021-05-08 17:14:13 +02:00
Bruno BELANYI fee045d82c home: wm: i3: use 'my.home.terminal' explicitly 2021-05-08 17:14:13 +02:00
Bruno BELANYI 76b17e924a home: terminal: add termite 2021-05-08 17:14:13 +02:00
Bruno BELANYI 9fe78a5a70 home: add terminal
This module abstracts away the color configuration.
2021-05-08 17:14:13 +02:00
Bruno BELANYI 90ccf42779 home: wm: i3: add configuration 2021-05-08 17:14:13 +02:00
Bruno BELANYI cdbe16e703 home: wm: add rofi 2021-05-08 17:14:13 +02:00
Bruno BELANYI 1da8177ea2 home: wm: add i3bar 2021-05-08 17:14:13 +02:00
Bruno BELANYI fe9f468e06 machines: aramis: home: enable X & i3 2021-05-08 17:14:13 +02:00
Bruno BELANYI 45cb955433 machines: aramis: add home configuration 2021-05-08 17:14:13 +02:00
Bruno BELANYI b6fb77fc34 modules: add home
This makes setting and referring to my home-manager options easier.
2021-05-08 17:14:13 +02:00
Bruno BELANYI f57cfda767 home: wm: add i3
This is only the basic default configuration. The full configuration
will come later.

I am not a fan of `wm.windowManager`, I might rename that option at some
point.
2021-05-08 17:14:13 +02:00
Bruno BELANYI 5427f15a17 home: add X keyboard configuration 2021-05-08 17:14:13 +02:00
Bruno BELANYI 6acf9f4a19 machines: add aramis 2021-05-08 17:14:13 +02:00
Bruno BELANYI cd7c8e2172 lib: attrs: add renaming functions 2021-05-08 17:14:13 +02:00
Bruno BELANYI e0b0f44a9a lib: attrs: document functions 2021-05-08 17:14:13 +02:00
Bruno BELANYI bd53470e46 lib: attrs: add genAttrs' function 2021-05-08 17:14:13 +02:00
Bruno BELANYI f634f1b2ed flake: refactor handling of shared modules 2021-05-08 17:14:13 +02:00
Bruno BELANYI dc052386d1 machine: aramis: add installer script
This is the first time that I am setting up LVM-on-LUKS with NixOS, so a
VM came in handy to test it out.
2021-05-08 17:14:13 +02:00
448 changed files with 3012 additions and 8464 deletions

View file

@ -1,14 +1,16 @@
labels:
backend: local
---
kind: pipeline
type: exec
name: NixOS config check
steps:
- name: nix flake check
image: bash
commands:
- nix flake check
- name: notify
image: bash
- name: notifiy
commands:
- nix run .#matrix-notifier
environment:
ADDRESS:
from_secret: matrix_homeserver
@ -18,9 +20,8 @@ steps:
from_secret: matrix_username
PASS:
from_secret: matrix_password
commands:
- nix run '.#matrix-notifier'
when:
status:
- failure
- success
- failure
- success
...

13
.envrc
View file

@ -1,8 +1,9 @@
if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
fi
watch_file ./flake/checks.nix
watch_file ./flake/dev-shells.nix
use_flake() {
watch_file flake.nix
watch_file flake.lock
eval "$(nix print-dev-env)"
}
ulimit -s unlimited # Bypass current bug in `nix` flakes evaluation
use flake
eval "$shellHooks"

View file

@ -1 +0,0 @@
indent_type = "Spaces"

View file

@ -17,7 +17,7 @@ Secondly, take care of a few manual steps:
* Configure Gitea and Drone
* Configure Lohr webhook and SSH key
* Configure Jellyfin
* Configure Prowlarr,Jackett and NZBHydra2
* Configure Jackett and NZBHydra2
* Configure Sonarr, Radarr, Bazarr
* Configure Transmission's webui port
* Configure Quassel user

View file

@ -1,6 +1,5 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p bitwarden-cli git gnupg jq nix
# shellcheck shell=bash
#! nix-shell -i bash -p bitwarden-cli git gnupg jq nixFlakes
# Command failure is script failure
set -e
@ -11,6 +10,7 @@ BOLD_GREEN="\e[0;1;32m"
RESET="\e[0m"
DEST="$HOME/.config/nixpkgs"
BW_SESSION=""
warn() {
@ -58,8 +58,8 @@ get_ssh() {
get_doc "SysAdmin/SSH" "shared-key-public" "$HOME/.ssh/shared_rsa.pub" 644
get_doc "SysAdmin/SSH" "shared-key-private" "$HOME/.ssh/shared_rsa" 600
get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/agenix.pub" 644
get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/agenix" 600
get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/id_ed25519.pub" 644
get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/id_ed25519" 600
}
get_pgp() {
@ -87,6 +87,15 @@ get_creds() {
get_pgp
}
setup_gpg() {
info 'Setting up loopback pinentry for GnuPG'
echo "allow-loopback-pinentry" > ~/.gnupg/gpg-agent.conf
info 'Signing dummy message to ensure GnuPG key is usable by `git-crypt`'
echo whatever | gpg --clearsign --armor --pinentry loopback --output /dev/null
}
[ -z "$NOCREDS" ] && get_creds
[ -z "$NOGPG" ] && setup_gpg
nix --experimental-features 'nix-command flakes' develop

View file

@ -2,133 +2,41 @@
"nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
],
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1723293904,
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
"owner": "ryantm",
"repo": "agenix",
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"type": "github"
},
"original": {
"owner": "ryantm",
"ref": "main",
"repo": "agenix",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"lastModified": 1631896269,
"narHash": "sha256-DAyCxJ8JacayOzGgGSfzrn7ghtsfL/EsCyk1NEUaAR8=",
"owner": "ryantm",
"repo": "agenix",
"rev": "daf1d773989ac5d949aeef03fce0fe27e583dbca",
"type": "github"
},
"original": {
"owner": "lnl7",
"owner": "ryantm",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "main",
"repo": "flake-parts",
"repo": "agenix",
"type": "github"
}
},
"futils": {
"inputs": {
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1631561581,
"narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
"type": "github"
},
"original": {
"owner": "numtide",
"ref": "main",
"ref": "master",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -136,11 +44,11 @@
]
},
"locked": {
"lastModified": 1734808199,
"narHash": "sha256-MxlUcLjE8xLbrI1SJ2B2jftlg4wdutEILa3fgqwA98I=",
"lastModified": 1633296444,
"narHash": "sha256-DnC7yVyoYFSsvFze16AWDa5iSHgtT1MbDGgp8rSC3H4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f342df3ad938f205a913973b832f52c12546aac6",
"rev": "099cbcf13e8219f07b493980a66fe64df0e32d09",
"type": "github"
},
"original": {
@ -152,11 +60,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1734424634,
"narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=",
"lastModified": 1633263894,
"narHash": "sha256-InuWViZr3SL8PqRROkWhmSd3N8gGkiP7YaA7BRdjmhk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33",
"rev": "01f2f2842aaa7f3af957fef93439d639e6941e6c",
"type": "github"
},
"original": {
@ -167,21 +75,12 @@
}
},
"nur": {
"inputs": {
"flake-parts": [
"flake-parts"
],
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1734810357,
"narHash": "sha256-Oa6d+y1/PVaPrZ/GYwvmTK9kSrc5Qx/8D3DFN2TzpVA=",
"lastModified": 1633342505,
"narHash": "sha256-UgXnO+jX6V33mtbFgQKPLndNQid1DqOnMcsPlxqeWdk=",
"owner": "nix-community",
"repo": "NUR",
"rev": "e7b7b92a7c97a91f1465ab433bbdf6d00df1db8e",
"rev": "061e44abde1dc11b10ff93fe6a388272850f473c",
"type": "github"
},
"original": {
@ -193,21 +92,19 @@
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
"flake-utils": [
"futils"
],
"nixpkgs-stable": [
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734797603,
"narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=",
"lastModified": 1631170176,
"narHash": "sha256-RLN/kur2Kpxt0cJp0Fms8ixuGpT8IHX0OpeQ8u8f0X4=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498",
"rev": "3ed0e618cebc1ff291c27b749cf7568959cac028",
"type": "github"
},
"original": {
@ -220,50 +117,11 @@
"root": {
"inputs": {
"agenix": "agenix",
"flake-parts": "flake-parts",
"futils": "futils",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nur": "nur",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"ref": "main",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
"pre-commit-hooks": "pre-commit-hooks"
}
}
},

139
flake.nix
View file

@ -5,21 +5,9 @@
type = "github";
owner = "ryantm";
repo = "agenix";
ref = "main";
ref = "master";
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
};
flake-parts = {
type = "github";
owner = "hercules-ci";
repo = "flake-parts";
ref = "main";
inputs = {
nixpkgs-lib.follows = "nixpkgs";
};
};
@ -27,10 +15,7 @@
type = "github";
owner = "numtide";
repo = "flake-utils";
ref = "main";
inputs = {
systems.follows = "systems";
};
ref = "master";
};
home-manager = {
@ -55,10 +40,6 @@
owner = "nix-community";
repo = "NUR";
ref = "master";
inputs = {
flake-parts.follows = "flake-parts";
nixpkgs.follows = "nixpkgs";
};
};
pre-commit-hooks = {
@ -67,19 +48,115 @@
repo = "pre-commit-hooks.nix";
ref = "master";
inputs = {
flake-utils.follows = "futils";
nixpkgs.follows = "nixpkgs";
nixpkgs-stable.follows = "nixpkgs";
};
};
systems = {
type = "github";
owner = "nix-systems";
repo = "default";
ref = "main";
};
};
# Can't eta-reduce a flake outputs...
outputs = inputs: import ./flake inputs;
outputs =
inputs @
{ self
, agenix
, futils
, home-manager
, nixpkgs
, nur
, pre-commit-hooks
}:
let
inherit (futils.lib) eachDefaultSystem;
lib = nixpkgs.lib.extend (self: super: {
my = import ./lib { inherit inputs; pkgs = nixpkgs; lib = self; };
});
defaultModules = [
({ ... }: {
# Let 'nixos-version --json' know about the Git revision
system.configurationRevision = self.rev or "dirty";
})
{
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
nur.overlay
];
}
# Include generic settings
./modules
# Include bundles of settings
./profiles
];
buildHost = name: system: lib.nixosSystem {
inherit system;
modules = defaultModules ++ [
(./. + "/machines/${name}")
];
specialArgs = {
# Use my extended lib in NixOS configuration
inherit lib;
# Inject inputs to use them in global registry
inherit inputs;
};
};
in
eachDefaultSystem
(system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
rec {
apps = {
diff-flake = futils.lib.mkApp { drv = packages.diff-flake; };
};
checks = {
pre-commit = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
nixpkgs-fmt = {
enable = true;
};
};
};
};
defaultApp = apps.diff-flake;
devShell = pkgs.mkShell {
name = "NixOS-config";
nativeBuildInputs = with pkgs; [
gitAndTools.pre-commit
gnupg
nixpkgs-fmt
];
inherit (self.checks.${system}.pre-commit) shellHook;
};
packages =
let
inherit (futils.lib) filterPackages flattenTree;
packages = import ./pkgs { inherit pkgs; };
flattenedPackages = flattenTree packages;
finalPackages = filterPackages system flattenedPackages;
in
finalPackages;
}) // {
overlay = self.overlays.pkgs;
overlays = import ./overlays // {
lib = final: prev: { inherit lib; };
pkgs = final: prev: {
ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; });
};
};
nixosConfigurations = lib.mapAttrs buildHost {
aramis = "x86_64-linux";
porthos = "x86_64-linux";
};
};
}

View file

@ -1,9 +0,0 @@
{ inputs, ... }:
{
perSystem = { self', ... }: {
apps = {
diff-flake = inputs.futils.lib.mkApp { drv = self'.packages.diff-flake; };
default = self'.apps.diff-flake;
};
};
}

View file

@ -1,33 +0,0 @@
{ inputs, ... }:
{
imports = [
inputs.pre-commit-hooks.flakeModule
];
perSystem = { ... }: {
pre-commit = {
# Add itself to `nix flake check`
check.enable = true;
settings = {
hooks = {
deadnix = {
enable = true;
};
nixpkgs-fmt = {
enable = true;
};
shellcheck = {
enable = true;
};
stylua = {
enable = true;
};
};
};
};
};
}

View file

@ -1,22 +0,0 @@
{ flake-parts
, systems
, ...
} @ inputs:
let
mySystems = import systems;
in
flake-parts.lib.mkFlake { inherit inputs; } {
systems = mySystems;
imports = [
./apps.nix
./checks.nix
./dev-shells.nix
./home-manager.nix
./lib.nix
./nixos.nix
./overlays.nix
./packages.nix
./templates.nix
];
}

View file

@ -1,19 +0,0 @@
{ ... }:
{
perSystem = { config, pkgs, ... }: {
devShells = {
default = pkgs.mkShellNoCC {
name = "NixOS-config";
nativeBuildInputs = with pkgs; [
gitAndTools.pre-commit
nixpkgs-fmt
];
shellHook = ''
${config.pre-commit.installationScript}
'';
};
};
};
}

View file

@ -1,62 +0,0 @@
{ self, inputs, lib, ... }:
let
defaultModules = [
# Include generic settings
"${self}/modules/home"
{
# Basic user information defaults
home.username = lib.mkDefault "ambroisie";
home.homeDirectory = lib.mkDefault "/home/ambroisie";
# Make it a Linux installation by default
targets.genericLinux.enable = lib.mkDefault true;
# Enable home-manager
programs.home-manager.enable = true;
}
];
mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration {
# Work-around for home-manager
# * not letting me set `lib` as an extraSpecialArgs
# * not respecting `nixpkgs.overlays` [1]
# [1]: https://github.com/nix-community/home-manager/issues/2954
pkgs = import inputs.nixpkgs {
inherit system;
overlays = (lib.attrValues self.overlays) ++ [
inputs.nur.overlays.default
];
};
modules = defaultModules ++ [
"${self}/hosts/homes/${name}"
];
extraSpecialArgs = {
# Inject inputs to use them in global registry
inherit inputs;
};
};
homes = {
"ambroisie@bazin" = "x86_64-linux";
"ambroisie@mousqueton" = "x86_64-linux";
};
in
{
perSystem = { system, ... }: {
# Work-around for https://github.com/nix-community/home-manager/issues/3075
legacyPackages = {
homeConfigurations =
let
filteredHomes = lib.filterAttrs (_: v: v == system) homes;
allHomes = filteredHomes // {
# Default configuration
ambroisie = system;
};
in
lib.mapAttrs mkHome allHomes;
};
};
}

View file

@ -1,11 +0,0 @@
{ self, inputs, ... }:
let
inherit (inputs) nixpkgs;
lib = nixpkgs.lib.extend (final: _: {
my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; };
});
in
{
flake.lib = lib;
}

View file

@ -1,35 +0,0 @@
{ self, inputs, lib, ... }:
let
defaultModules = [
{
# Let 'nixos-version --json' know about the Git revision
system.configurationRevision = self.rev or "dirty";
}
{
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
inputs.nur.overlays.default
];
}
# Include generic settings
"${self}/modules/nixos"
];
buildHost = name: system: lib.nixosSystem {
inherit system;
modules = defaultModules ++ [
"${self}/hosts/nixos/${name}"
];
specialArgs = {
# Use my extended lib in NixOS configuration
inherit (self) lib;
# Inject inputs to use them in global registry
inherit inputs;
};
};
in
{
flake.nixosConfigurations = lib.mapAttrs buildHost {
aramis = "x86_64-linux";
porthos = "x86_64-linux";
};
}

View file

@ -1,17 +0,0 @@
{ self, ... }:
let
default-overlays = import "${self}/overlays";
additional-overlays = {
# Expose my expanded library
lib = _final: _prev: { inherit (self) lib; };
# Expose my custom packages
pkgs = _final: prev: {
ambroisie = prev.recurseIntoAttrs (import "${self}/pkgs" { pkgs = prev; });
};
};
in
{
flake.overlays = default-overlays // additional-overlays;
}

View file

@ -1,13 +0,0 @@
{ self, inputs, ... }:
{
perSystem = { pkgs, system, ... }: {
packages =
let
inherit (inputs.futils.lib) filterPackages flattenTree;
packages = import "${self}/pkgs" { inherit pkgs; };
flattenedPackages = flattenTree packages;
finalPackages = filterPackages system flattenedPackages;
in
finalPackages;
};
}

View file

@ -1,4 +0,0 @@
{ self, ... }:
{
flake.templates = import "${self}/templates";
}

View file

@ -3,15 +3,13 @@ let
cfg = config.my.home.bat;
in
{
options.my.home.bat = with lib; {
enable = my.mkDisableOption "bat configuration";
options.my.home.bat = with lib.my; {
enable = mkDisableOption "bat configuration";
};
config.programs.bat = lib.mkIf cfg.enable {
enable = true;
config = {
theme = "gruvbox-dark";
pager = with config.home.sessionVariables; "${PAGER} ${LESS}";
};
};

29
home/comma/default.nix Normal file
View file

@ -0,0 +1,29 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.comma;
in
{
options.my.home.comma = with lib; {
enable = my.mkDisableOption "comma configuration";
pkgsFlake = mkOption {
type = types.str;
default = "pkgs";
example = "nixpkgs";
description = ''
Which flake from the registry should be used with
<command>nix shell</command>.
'';
};
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
ambroisie.comma
];
home.sessionVariables = {
COMMA_PKGS_FLAKE = cfg.pkgsFlake;
};
};
}

43
home/default.nix Normal file
View file

@ -0,0 +1,43 @@
{ ... }:
{
imports = [
./bat
./bluetooth
./comma
./direnv
./documentation
./feh
./firefox
./flameshot
./gammastep
./gdb
./git
./gpg
./gtk
./htop
./jq
./mail
./mpv
./nix-index
./nm-applet
./packages
./pager
./power-alert
./ssh
./terminal
./tmux
./udiskie
./vim
./wm
./x
./xdg
./zathura
./zsh
];
# First sane reproducible version
home.stateVersion = "20.09";
# Who am I?
home.username = "ambroisie";
}

19
home/direnv/default.nix Normal file
View file

@ -0,0 +1,19 @@
{ config, lib, ... }:
let
cfg = config.my.home.direnv;
in
{
options.my.home.direnv = with lib.my; {
enable = mkDisableOption "direnv configuration";
};
config.programs.direnv = lib.mkIf cfg.enable {
enable = true;
nix-direnv = {
# A better `use_nix`
enable = true;
# And `use_flake`
enableFlakes = true;
};
};
}

View file

@ -3,8 +3,8 @@ let
cfg = config.my.home.documentation;
in
{
options.my.home.documentation = with lib; {
enable = my.mkDisableOption "documentation integration";
options.my.home.documentation = with lib.my; {
enable = mkDisableOption "documentation integration";
};
# Add documentation for user packages

View file

@ -33,10 +33,13 @@ in
enable = true;
package = pkgs.firefox.override {
nativeMessagingHosts = ([ ]
++ lib.optional cfg.tridactyl.enable pkgs.tridactyl-native
cfg = {
enableTridactylNative = cfg.tridactyl.enable;
};
extraNativeMessagingHosts = with pkgs; ([ ]
# Watch videos using mpv
++ lib.optional cfg.ff2mpv.enable pkgs.ff2mpv-go
++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go
);
};
@ -54,27 +57,28 @@ in
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket
"extensions.pocket.enabled" = false; # Disable pocket
"media.eme.enabled" = true; # Enable DRM
"media.gmp-widevinecdm.enabled" = true; # Enable DRM
"media.gmp-widevinecdm.visible" = true; # Enable DRM
"media.gmp-widevinecdm.enabled" = true; # Enable DRM
"signon.autofillForms" = false; # Disable built-in form-filling
"signon.rememberSignons" = false; # Disable built-in password manager
"ui.systemUsesDarkTheme" = true; # Dark mode
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
bitwarden
consent-o-matic
form-history-control
reddit-comment-collapser
reddit-enhancement-suite
refined-github
sponsorblock
ublock-origin
]
++ lib.optional (cfg.tridactyl.enable) tridactyl
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
);
};
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
bitwarden
form-history-control
https-everywhere
i-dont-care-about-cookies
reddit-comment-collapser
reddit-enhancement-suite
refined-github
sponsorblock
ublock-origin
]
++ lib.optional (cfg.tridactyl.enable) tridactyl
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
);
};
}

View file

@ -0,0 +1,9 @@
{ config, lib, ... }:
let
cfg = config.my.home.firefox.tridactyl;
in
{
config = lib.mkIf cfg.enable {
xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc;
};
}

View file

@ -4,30 +4,26 @@
" Use dark color scheme
colorscheme dark
" Make tridactyl open Vim in my preferred terminal
set editorcmd @editorcmd@
" Remove editor file after use
alias editor_rm composite editor | jsb -p tri.native.run(`rm -f '${JS_ARG[0]}'`)
bind --mode=insert <C-i> editor_rm
bind --mode=input <C-i> editor_rm
" Make tridactyl open Vim in my prefered terminal
" FIXME: make it follow my prefered terminal
set editorcmd termite --class tridactyl_editor -e 'vim %f'
" }}}
" Binds {{{
" Reddit et al. {{{
" Toggle comments on Reddit, Hacker News, Lobste.rs, LWN
bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"],[class="CommentTitle"]
" Toggle comments on Reddit, Hacker News, Lobste.rs
bind ;c hint -c [class*="expand"],[class="togg"],[class="comment_folder"]
" Make `gu` take me back to subreddit from comments
bindurl reddit.com gu urlparent 3
" Only hint search results on Google
bindurl www.google.com f hint -Jc #search a
bindurl www.google.com F hint -Jbc #search a
bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a
bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a
" Only hint search results on DuckDuckGo
bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result"]
bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result"]
bindurl ^https://duckduckgo.com f hint -Jc [class=result__a]
bindurl ^https://duckduckgo.com F hint -Jbc [class=result__a]
" Only hint item pages on Hacker News
bindurl news.ycombinator.com ;f hint -Jc .age > a
@ -73,7 +69,6 @@ autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www",
" Disabled websites {{{
blacklistadd netflix.com
blacklistadd primevideo.com
blacklistadd jellyfin.belanyi.fr
" }}}

42
home/gdb/default.nix Normal file
View file

@ -0,0 +1,42 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.gdb;
in
{
options.my.home.gdb = with lib; {
enable = my.mkDisableOption "gdb configuration";
rr = {
enable = my.mkDisableOption "rr configuration";
package = mkOption {
type = types.package;
default = pkgs.rr;
defaultText = literalExample "pkgs.rr";
description = ''
Package providing rr
'';
};
};
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
home.packages = with pkgs; [
gdb
];
# FIXME: waiting for commit 64aaad6349d2b2c45063a5383f877ce9a3a0c354
xdg.configFile."gdb/gdbinit".source = ./gdbinit;
# FIXME: remove once `gdb` is updated from version 10.2
home.file.".gdbinit".source = ./gdbinit;
})
(lib.mkIf cfg.rr.enable {
home.packages = [
cfg.rr.package
];
})
];
}

View file

@ -19,6 +19,6 @@ set print demangle on
set auto-load python-scripts
# Allow autoloading project-local .gdbinit files
add-auto-load-safe-path ~/git/
set auto-load safe-path ~/git/
# Allow autoloading from the Nix store
add-auto-load-safe-path /nix/store
set auto-load safe-path /nix/store

View file

@ -24,11 +24,3 @@ compile_commands.json
# Swap and backup files
*~
~.swp
# Direnv files
.envrc
.direnv/
# Project-local neovim configuration files
.nvim.lua
.nvimrc

View file

@ -1,34 +1,23 @@
{ config, pkgs, lib, ... }:
let
cfg = config.my.home.git;
inherit (lib.my) mkMailAddress;
in
{
options.my.home.git = with lib; {
enable = my.mkDisableOption "git configuration";
# I want the full experience by default
package = mkPackageOption pkgs "git" { default = [ "gitFull" ]; };
options.my.home.git = with lib.my; {
enable = mkDisableOption "git configuration";
};
config.home.packages = with pkgs; lib.mkIf cfg.enable [
git-absorb
git-revise
tig
];
config.programs.git = lib.mkIf cfg.enable {
enable = true;
# Who am I?
userEmail = mkMailAddress "bruno" "belanyi.fr";
userEmail = "bruno@belanyi.fr";
userName = "Bruno BELANYI";
inherit (cfg) package;
# I want the full experience
package = pkgs.gitAndTools.gitFull;
aliases = {
git = "!git";
lol = "log --graph --decorate --pretty=oneline --abbrev-commit --topo-order";
lola = "lol --all";
assume = "update-index --assume-unchanged";
@ -37,39 +26,10 @@ in
pick = "log -p -G";
push-new = "!git push -u origin "
+ ''"$(git branch | grep '^* ' | cut -f2- -d' ')"'';
root = "git rev-parse --show-toplevel";
};
lfs.enable = true;
delta = {
enable = true;
options = {
features = "diff-highlight decorations";
# Less jarring style for `diff-highlight` emulation
diff-highlight = {
minus-style = "red";
minus-non-emph-style = "red";
minus-emph-style = "bold red 52";
plus-style = "green";
plus-non-emph-style = "green";
plus-emph-style = "bold green 22";
whitespace-error-style = "reverse red";
};
# Personal preference for easier reading
decorations = {
commit-style = "raw"; # Do not recolor meta information
keep-plus-minus-markers = true;
paging = "always";
};
};
};
# There's more
extraConfig = {
# Makes it a bit more readable
@ -103,6 +63,13 @@ in
whitespace = "red reverse";
};
"color.diff-highlight" = {
oldNormal = "red bold";
oldHighlight = "red bold 52";
newNormal = "green bold";
newHighlight = "green bold 22";
};
commit = {
# Show my changes when writing the message
verbose = true;
@ -123,14 +90,15 @@ in
defaultBranch = "main";
};
# Local configuration, not-versioned
include = {
path = "config.local";
};
merge = {
conflictStyle = "zdiff3";
};
pager =
let
diff-highlight = "${pkgs.gitAndTools.gitFull}/share/git/contrib/diff-highlight/diff-highlight";
in
{
diff = "${diff-highlight} | less";
log = "${diff-highlight} | less";
show = "${diff-highlight} | less";
};
pull = {
# Avoid useless merge commits
@ -147,46 +115,11 @@ in
autoSquash = true;
autoStash = true;
};
rerere = {
enabled = true;
};
url = {
"git@git.belanyi.fr:" = {
insteadOf = "https://git.belanyi.fr/";
};
"git@github.com:" = {
insteadOf = "https://github.com/";
};
"git@gitlab.com:" = {
insteadOf = "https://gitlab.com/";
};
};
};
# Multiple identities
includes = [
{
condition = "gitdir:~/git/EPITA/";
contents = {
user = {
name = "Bruno BELANYI";
email = mkMailAddress "bruno.belanyi" "epita.fr";
};
};
}
{
condition = "gitdir:~/git/work/";
contents = {
user = {
name = "Bruno BELANYI";
email = mkMailAddress "ambroisie" "google.com";
};
};
}
{ path = ./epita.config; condition = "gitdir:~/git/EPITA/"; }
];
ignores =

4
home/git/epita.config Normal file
View file

@ -0,0 +1,4 @@
[user]
email = bruno.belanyi@epita.fr
name = Bruno BELANYI
# vim: set ft=gitconfig:

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
let
cfg = config.my.home.gpg;
in
@ -6,7 +6,12 @@ in
options.my.home.gpg = with lib; {
enable = my.mkDisableOption "gpg configuration";
pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; };
pinentry = mkOption {
type = types.str;
default = "tty";
example = "gtk2";
description = "Which pinentry interface to use";
};
};
config = lib.mkIf cfg.enable {
@ -17,15 +22,10 @@ in
services.gpg-agent = {
enable = true;
enableSshSupport = true; # One agent to rule them all
pinentryPackage = cfg.pinentry;
pinentryFlavor = cfg.pinentry;
extraConfig = ''
allow-loopback-pinentry
'';
};
home.shellAliases = {
# Sometime `gpg-agent` errors out...
reset-agent = "gpg-connect-agent updatestartuptty /bye";
};
};
}

View file

@ -21,12 +21,12 @@ in
};
iconTheme = {
package = pkgs.gnome-themes-extra;
package = pkgs.gnome3.gnome_themes_standard;
name = "Adwaita";
};
theme = {
package = pkgs.gnome-themes-extra;
package = pkgs.gnome3.gnome_themes_standard;
name = "Adwaita";
};
};

View file

@ -3,8 +3,8 @@ let
cfg = config.my.home.htop;
in
{
options.my.home.htop = with lib; {
enable = my.mkDisableOption "htop configuration";
options.my.home.htop = with lib.my; {
enable = mkDisableOption "htop configuration";
};
config.programs.htop = lib.mkIf cfg.enable {

View file

@ -3,8 +3,8 @@ let
cfg = config.my.home.jq;
in
{
options.my.home.jq = with lib; {
enable = my.mkDisableOption "jq configuration";
options.my.home.jq = with lib.my; {
enable = mkDisableOption "jq configuration";
};
config.programs.jq = lib.mkIf cfg.enable {

View file

@ -2,22 +2,21 @@
let
cfg = config.my.home.mail;
inherit (lib.my) mkMailAddress;
mkAddress = address: domain: "${address}@${domain}";
mkConfig = { domain, address, passName, aliases ? [ ], primary ? false }: {
realName = lib.mkDefault "Bruno BELANYI";
userName = lib.mkDefault (mkMailAddress address domain);
userName = lib.mkDefault (mkAddress address domain);
passwordCommand =
lib.mkDefault [ (lib.getExe pkgs.ambroisie.rbw-pass) "Mail" passName ];
lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ];
address = mkMailAddress address domain;
aliases = builtins.map (lib.flip mkMailAddress domain) aliases;
address = mkAddress address domain;
aliases = builtins.map (lib.flip mkAddress domain) aliases;
inherit primary;
himalaya = {
enable = cfg.himalaya.enable;
# FIXME: try to actually configure it at some point
};
msmtp = {
@ -52,13 +51,27 @@ let
};
office365Config = {
flavor = "outlook.office365.com";
imap = {
host = "outlook.office365.com";
port = 993;
tls = {
enable = true;
};
};
smtp = {
host = "outlook.office365.com";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
};
in
{
config.accounts.email.accounts = {
personal = lib.mkMerge [
# Common configuration
# Common configuraton
(mkConfig {
domain = "belanyi.fr";
address = "bruno";
@ -70,7 +83,7 @@ in
];
gmail = lib.mkMerge [
# Common configuration
# Common configuraton
(mkConfig {
domain = "gmail.com";
address = "brunobelanyi";

View file

@ -15,7 +15,7 @@ in
enable = my.mkDisableOption "email configuration";
himalaya = {
enable = mkEnableOption "himalaya configuration";
enable = mkRelatedOption "himalaya configuration";
};
msmtp = {

View file

@ -9,7 +9,7 @@ in
settings = {
notify-cmd =
let
notify-send = lib.getExe pkgs.libnotify;
notify-send = "${pkgs.libnotify}/bin/notify-send";
in
pkgs.writeScript "mail-notifier" ''
SENDER="$1"

View file

@ -13,8 +13,6 @@ in
scripts = [
pkgs.mpvScripts.mpris # Allow controlling using media keys
pkgs.mpvScripts.mpv-cheatsheet # Show some simple mappings on '?'
pkgs.mpvScripts.uosc # Nicer UI
];
};
};

View file

@ -3,8 +3,8 @@ let
cfg = config.my.home.nix-index;
in
{
options.my.home.nix-index = with lib; {
enable = my.mkDisableOption "nix-index configuration";
options.my.home.nix-index = with lib.my; {
enable = mkDisableOption "nix-index configuration";
};
config.programs.nix-index = lib.mkIf cfg.enable {

View file

@ -6,10 +6,6 @@ in
options.my.home.packages = with lib; {
enable = my.mkDisableOption "user packages";
allowAliases = mkEnableOption "allow package aliases";
allowUnfree = my.mkDisableOption "allow unfree packages";
additionalPackages = mkOption {
type = with types; listOf package;
default = [ ];
@ -21,16 +17,12 @@ in
};
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; ([
fd
file
ripgrep
tree
] ++ cfg.additionalPackages);
nixpkgs.config = {
inherit (cfg) allowAliases allowUnfree;
};
};
config.home.packages = with pkgs; lib.mkIf cfg.enable ([
file
gitAndTools.git-absorb
gitAndTools.git-revise
gitAndTools.tig
rr
termite.terminfo
] ++ cfg.additionalPackages);
}

36
home/pager/default.nix Normal file
View file

@ -0,0 +1,36 @@
{ config, lib, ... }:
let
cfg = config.my.home.pager;
in
{
options.my.home.pager = with lib.my; {
enable = mkDisableOption "pager configuration";
};
config = lib.mkIf cfg.enable {
home.sessionVariables = {
# My default pager
PAGER = "less";
# Clear the screen on start and exit
LESS = "-R -+X -c";
};
programs.zsh.localVariables = {
# Colored man pages
LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)";
LESS_TERMCAP_md = "$(tput bold; tput setaf 6)";
LESS_TERMCAP_me = "$(tput sgr0)";
LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)";
LESS_TERMCAP_se = "$(tput rmso; tput sgr0)";
LESS_TERMCAP_us = "$(tput bold; tput setaf 2)";
LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)";
LESS_TERMCAP_mr = "$(tput rev)";
LESS_TERMCAP_mh = "$(tput dim)";
LESS_TERMCAP_ZN = "$(tput ssubm)";
LESS_TERMCAP_ZV = "$(tput rsubm)";
LESS_TERMCAP_ZO = "$(tput ssupm)";
LESS_TERMCAP_ZW = "$(tput rsupm)";
};
};
}

49
home/ssh/default.nix Normal file
View file

@ -0,0 +1,49 @@
{ config, lib, ... }:
let
cfg = config.my.home.ssh;
in
{
options.my.home.ssh = with lib.my; {
enable = mkDisableOption "ssh configuration";
};
config.programs.ssh = lib.mkIf cfg.enable {
enable = true;
matchBlocks = {
"github.com" = {
hostname = "github.com";
identityFile = "~/.ssh/shared_rsa";
user = "git";
};
"gitlab.com" = {
hostname = "gitlab.com";
identityFile = "~/.ssh/shared_rsa";
user = "git";
};
"git.sr.ht" = {
hostname = "git.sr.ht";
identityFile = "~/.ssh/shared_rsa";
user = "git";
};
"gitea.belanyi.fr" = {
hostname = "gitea.belanyi.fr";
identityFile = "~/.ssh/shared_rsa";
user = "git";
};
porthos = {
hostname = "91.121.177.163";
identityFile = "~/.ssh/shared_rsa";
user = "ambroisie";
};
};
extraConfig = ''
AddKeysToAgent yes
'';
};
}

View file

@ -10,14 +10,13 @@ let
in
{
imports = [
./alacritty
./termite
];
options.my.home = with lib; {
terminal = {
program = mkOption {
type = with types; nullOr (enum [ "alacritty" "termite" ]);
type = with types; nullOr (enum [ "termite" ]);
default = null;
example = "termite";
description = "Which terminal to use for home session";

77
home/tmux/default.nix Normal file
View file

@ -0,0 +1,77 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.tmux;
in
{
options.my.home.tmux = with lib.my; {
enable = mkDisableOption "tmux terminal multiplexer";
service = {
enable = mkDisableOption "tmux server service";
};
};
config.programs.tmux = lib.mkIf cfg.enable {
enable = true;
keyMode = "vi"; # Home-row keys and other niceties
clock24 = true; # I'm one of those heathens
escapeTime = 0; # Let vim do its thing instead
historyLimit = 50000; # Bigger buffer
terminal = "tmux-256color"; # I want accurate termcap info
plugins = with pkgs.tmuxPlugins; [
# Open high-lighted files in copy mode
open
# Better pane management
pain-control
# Better session management
sessionist
# X clipboard integration
yank
{
# Show when prefix has been pressed
plugin = prefix-highlight;
extraConfig = ''
# Also show when I'm in copy or sync mode
set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_show_sync_mode 'on'
# Show prefix mode in status bar
set -g status-right '#{prefix_highlight} %a %Y-%m-%d %H:%M'
'';
}
];
extraConfig = ''
# Better vim mode
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
'';
};
config.systemd.user.services.tmux = lib.mkIf cfg.service.enable {
Unit = {
Description = "tmux server";
};
Install = {
WantedBy = [ "default.target" ];
};
Service =
let
# Wrap `tmux` in a login shell and set the socket path
tmuxCmd = "${config.programs.tmux.package}/bin/tmux";
socketExport = lib.optionalString
config.programs.tmux.secureSocket
''export TMUX_TMPDIR=''${XDG_RUNTIME_DIR:-"/run/user/\$(id -u)"};'';
mkTmuxCommand =
c: "${pkgs.runtimeShell} -l -c '${socketExport} ${tmuxCmd} ${c}'";
in
{
Type = "forking";
ExecStart = mkTmuxCommand "new -d -s ambroisie";
ExecStop = mkTmuxCommand "kill-server";
};
};
}

View file

@ -0,0 +1,14 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use shfmt as ALE fixer for bash
let b:ale_fixers=[ 'shfmt' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Indent with 4 spaces, simplify script, indent switch cases, use Bash variant
let b:ale_sh_shfmt_options='-i 4 -s -ci -ln bash'
let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options'
" Use bash dialect explicitly, require explicit empty string test
let b:ale_sh_shellcheck_options='-s bash -o avoid-nullary-conditions'
let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options'

View file

@ -7,3 +7,7 @@ let b:undo_ftplugin.='|setlocal shiftwidth<'
" Have automatic padding of transactions so that decimal is on 52nd column
let g:beancount_separator_col=52
" Automatic padding for transactions
nnoremap <buffer> <leader>= :AlignCommodity<CR>
vnoremap <buffer> <leader>= :AlignCommodity<CR>

View file

@ -0,0 +1,14 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" More warnings and the usual version in flags for Clang
let b:ale_c_clang_options='-Wall -Wextra -pedantic -std=c99'
let b:undo_ftplugin.='|unlet! b:ale_c_clang_options'
" More warnings and the usual version in flags for GCC
let b:ale_c_gcc_options='-Wall -Wextra -pedantic -std=c99'
let b:undo_ftplugin.='|unlet! b:ale_c_gcc_options'
" Use compile_commands.json to look for additional flags
let b:ale_c_parse_compile_commands=1
let b:undo_ftplugin.='|unlet! b:ale_c_parse_compile_commands'

View file

@ -0,0 +1,14 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" More warnings and the usual version in flags for Clang
let b:ale_cpp_clang_options='-Wall -Wextra -pedantic -std=c++17'
let b:undo_ftplugin.='|unlet! b:ale_cpp_clang_options'
" More warnings and the usual version in flags for GCC
let b:ale_cpp_gcc_options='-Wall -Wextra -pedantic -std=c++17'
let b:undo_ftplugin.='|unlet! b:ale_cpp_gcc_options'
" Use compile_commands.json to look for additional flags
let b:ale_c_parse_compile_commands=1
let b:undo_ftplugin.='|unlet! b:ale_c_parse_compile_commands'

View file

@ -0,0 +1,6 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use my desired ALE fixer for D
let b:ale_fixers=[ 'dfmt' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'

View file

@ -4,7 +4,3 @@ call ftplugined#check_undo_ft()
" Enable spell checking on commit messages
setlocal spell
let b:undo_ftplugin.='|setlocal spell<'
" Change max length of a line to 72 for this buffer
setlocal colorcolumn=72
let b:undo_ftplugin.='|setlocal colorcolumn<'

View file

@ -0,0 +1,2 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()

View file

@ -0,0 +1,30 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use a small indentation value on Haskell files
setlocal shiftwidth=2
let b:undo_ftplugin.='|setlocal shiftwidth<'
" Use my desired ALE fixers for Haskell
let b:ale_fixers=[ 'brittany' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Use stack-managed `hlint`
let b:ale_haskell_hlint_executable='stack'
let b:undo_ftplugin.='|unlet! b:ale_haskell_hlint_executable'
" Use stack-managed `brittany`
let b:ale_haskell_brittany_executable='stack'
let b:undo_ftplugin.='|unlet! b:ale_haskell_brittany_executable'
" Use dynamic libraries because of Arch linux, with default ALE options
let b:ale_haskell_ghc_options='--dynamic -fno-code -v0'
let b:undo_ftplugin.='|unlet! b:ale_haskell_ghc_options'
" Automatically format files when saving them
let b:ale_fix_on_save=1
let b:undo_ftplugin='|unlet! b:ale_lint_on_save'
" Change max length of a line to 100 for this buffer to match official guidelines
setlocal colorcolumn=100
let b:undo_ftplugin.='|setlocal colorcolumn<'

View file

@ -0,0 +1,6 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use my desired ALE fixer for JSON
let b:ale_fixers=[ 'jq' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'

View file

@ -0,0 +1,6 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Don't show Netrw in buffer list
setlocal bufhidden=delete
let b:undo_ftplugin='|setlocal bufhidden<'

View file

@ -1,6 +1,10 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Let ALE know that I want Markdown linters
let b:ale_linter_aliases=[ 'markdown' ]
let b:undo_ftplugin.='|unlet! b:ale_linter_aliases'
" Use a small indentation value on Pandoc files
setlocal shiftwidth=2
let b:undo_ftplugin.='|setlocal shiftwidth<'

View file

@ -0,0 +1,40 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use my desired ALE fixers for python
let b:ale_fixers=[ 'black', 'isort' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Use my desired ALE linters for python
let b:ale_linters=[ 'flake8', 'mypy', 'pylint', 'pyls' ]
let b:undo_ftplugin.='|unlet! b:ale_linters'
" Use pyls inside the python environment if needed
let b:ale_python_pyls_auto_pipenv=1
let b:undo_ftplugin.='|unlet! b:ale_python_pyls_auto_pipenv'
" Disable pycodestyle checks from pyls because I'm already using flake8
let b:ale_python_pyls_config={
\ 'pyls': {
\ 'plugins': {
\ 'pycodestyle': {
\ 'enabled': v:false
\ },
\ },
\ },
\ }
let b:undo_ftplugin.='|unlet! b:ale_python_pyls_config'
" Don't use mypy to check for syntax errors
let b:ale_python_mypy_ignore_invalid_syntax=1
let b:undo_ftplugin.='|unlet! b:ale_python_mypy_ignore_invalid_syntax'
" Use mypy inside the python environment if needed
let b:ale_python_mypy_auto_pipenv=1
let b:undo_ftplugin.='|unlet! b:ale_python_mypy_auto_pipenv'
" Automatically format files when saving them
let b:ale_fix_on_save=1
let b:undo_ftplugin='|unlet! b:ale_lint_on_save'
" Change max length of a line to 88 for this buffer to match black's settings
setlocal colorcolumn=88
let b:undo_ftplugin.='|setlocal colorcolumn<'

View file

@ -0,0 +1,8 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use h/l to go to the previous/next non-empty quickfix or location list
nnoremap <silent> <buffer> h :call quickfixed#older()<CR>
let b:undo_ftplugin.='|nunmap <buffer> h'
nnoremap <silent> <buffer> l :call quickfixed#newer()<CR>
let b:undo_ftplugin.='|nunmap <buffer> l'

View file

@ -0,0 +1,31 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Check tests too
let b:ale_rust_cargo_check_tests=1
let b:undo_ftplugin='|unlet! b:ale_rust_cargo_check_tests'
" Check examples too
let b:ale_rust_cargo_check_examples=1
let b:undo_ftplugin='|unlet! b:ale_rust_cargo_check_examples'
" Use clippy if it's available instead of just cargo check
let b:ale_rust_cargo_use_clippy=executable('cargo-clippy')
let b:undo_ftplugin='|unlet! b:ale_rust_cargo_use_clippy'
" Use rust-analyzer instead of RLS as a linter
let b:ale_linters=[ 'cargo', 'analyzer' ]
let b:undo_ftplugin='|unlet! b:ale_linters'
" Use rustfmt as ALE fixer for rust
let b:ale_fixers=[ 'rustfmt' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Automatically format files when saving them
let b:ale_fix_on_save=1
let b:undo_ftplugin='|unlet! b:ale_lint_on_save'
" Change max length of a line to 99 for this buffer to match official guidelines
setlocal colorcolumn=99
let b:undo_ftplugin.='|setlocal colorcolumn<'

View file

@ -0,0 +1,14 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use shfmt as ALE fixer for sh
let b:ale_fixers=[ 'shfmt' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Indent with 4 spaces, simplify the code, indent switch cases, use POSIX
let b:ale_sh_shfmt_options='-i 4 -s -ci -ln posix'
let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options'
" Require explicit empty string test
let b:ale_sh_shellcheck_options='-o avoid-nullary-conditions'
let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options'

View file

@ -0,0 +1,14 @@
" Create the `b:undo_ftplugin` variable if it doesn't exist
call ftplugined#check_undo_ft()
" Use shfmt as ALE fixer for zsh
let b:ale_fixers=[ 'shfmt' ]
let b:undo_ftplugin.='|unlet! b:ale_fixers'
" Indent with 4 spaces, simplify script, indent switch cases, use Bash variant
let b:ale_sh_shfmt_options='-i 4 -s -ci -ln bash'
let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options'
" Use bash dialect explicitly, require explicit empty string test
let b:ale_sh_shellcheck_options='-s bash -o avoid-nullary-conditions'
let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options'

View file

@ -0,0 +1,2 @@
" Use ALE LSP-powered symbol information
nnoremap <Leader>K :ALEHover<CR>

View file

@ -0,0 +1,10 @@
" Visual bindings for merging diffs as in normal mode
xnoremap dp :diffput<cr>
xnoremap do :diffget<cr>
" Open status window
nnoremap <Leader>gs :Gstatus<CR>
" Open diff view of current buffer: the up/left window is the current index
nnoremap <Leader>gd :Gdiffsplit!<CR>
" Open current file log in new tab, populate its location list with history
nnoremap <Leader>gl :sp<CR><C-w>T:Gllog --follow -- %:p<CR>

View file

@ -0,0 +1,38 @@
" Only git-tracked files, Vim needs to be in a Git repository
nnoremap <Leader>fg :GFiles<CR>
" All files
nnoremap <Leader>ff :Files<CR>
" Currently open buffers
nnoremap <Leader>fb :Buffers<CR>
" Buffer history
nnoremap <Leader>fh :History<CR>
" Tags in buffer
nnoremap <Leader>ft :BTags<CR>
" Tags in all project files
nnoremap <Leader>fT :Tags<CR>
" Snippets for the current fileytpe (using Ultisnips)
nnoremap <Leader>fs :Snippets<CR>
" All available commands
nnoremap <Leader>f: :Commands<CR>
" All commits (using fugitive)
nnoremap <Leader>fc :Commits<CR>
" All commits for the current buffer (using fugitive)
nnoremap <Leader>fC :BCommits<CR>
" Select normal mode mapping by searching for its name
nmap <Leader><Tab> <Plug>(fzf-maps-n)
" Select visual mode mapping by searching for its name
xmap <Leader><Tab> <Plug>(fzf-maps-x)
" Select operator pending mode mapping by searching for its name
omap <Leader><Tab> <Plug>(fzf-maps-o)

View file

@ -0,0 +1,8 @@
" Yank until the end of line with Y, to be more consistent with D and C
nnoremap Y y$
" Run make silently, then skip the 'Press ENTER to continue'
noremap <Leader>m :silent! :make! \| :redraw!<CR>
" Remove search-highlighting
noremap <Leader><Leader> :nohls<CR>

View file

@ -0,0 +1,11 @@
" Next and previous in quick-fix list
nmap <Leader>fn <Plug>(qf_qf_next)
nmap <Leader>fp <Plug>(qf_qf_previous)
" Next and previous in location list
nmap <Leader>ln <Plug>(qf_loc_next)
nmap <Leader>lp <Plug>(qf_loc_previous)
" Toggle quick-fix and location lists
nmap <Leader>tf <Plug>(qf_qf_toggle)
nmap <Leader>tl <Plug>(qf_loc_toggle)

View file

@ -0,0 +1,7 @@
" Better fr layout mappings for vim-unimpaired and other '[' and ']' commands
nmap ( [
nmap ) ]
omap ( [
omap ) ]
xmap ( [
xmap ) ]

View file

@ -0,0 +1,68 @@
" Taken from the Vimways article
function! s:isLocation()
" Get dictionary of properties of the current window
let wininfo = filter(getwininfo(), {i,v -> v.winnr == winnr()})[0]
return wininfo.loclist
endfunction
function! s:length()
" Get the size of the current quickfix/location list
return len(s:isLocation() ? getloclist(0) : getqflist())
endfunction
function! s:getProperty(key, ...)
" getqflist() and getloclist() expect a dictionary argument
" If a 2nd argument has been passed in, use it as the value, else 0
let l:what = {a:key : a:0 ? a:1 : 0}
let l:listdict = s:isLocation() ? getloclist(0, l:what) : getqflist(l:what)
return get(l:listdict, a:key)
endfunction
function! s:isFirst()
return s:getProperty('nr') <= 1
endfunction
function! s:isLast()
return s:getProperty('nr') == s:getProperty('nr', '$')
endfunction
function! s:history(goNewer)
" Build the command: one of colder/cnewer/lolder/lnewer
let l:cmd = (s:isLocation() ? 'l' : 'c') . (a:goNewer ? 'newer' : 'older')
" Apply the cmd repeatedly until we hit a non-empty list, or first/last list
" is reached
while 1
if (a:goNewer && s:isLast()) || (!a:goNewer && s:isFirst()) | break | endif
" Run the command. Use :silent to suppress message-history output.
" Note that the :try wrapper is no longer necessary
silent execute l:cmd
if s:length() | break | endif
endwhile
" Echo a description of the new quickfix / location list.
" And make it look like a rainbow.
let l:nr = s:getProperty('nr')
let l:last = s:getProperty('nr', '$')
echohl MoreMsg | echon '('
echohl Identifier | echon l:nr
if l:last > 1
echohl LineNr | echon ' of '
echohl Identifier | echon l:last
endif
echohl MoreMsg | echon ') '
echohl MoreMsg | echon '['
echohl Identifier | echon s:length()
echohl MoreMsg | echon '] '
echohl Normal | echon s:getProperty('title')
echohl None
endfunction
function! quickfixed#older()
call s:history(0)
endfunction
function! quickfixed#newer()
call s:history(1)
endfunction

74
home/vim/default.nix Normal file
View file

@ -0,0 +1,74 @@
{ config, pkgs, lib, ... }:
let
cfg = config.my.home.vim;
configFiles =
let
toSource = directory: { source = ./. + "/${directory}"; };
configureDirectory =
name: lib.nameValuePair "nvim/${name}" (toSource name);
linkDirectories =
dirs: builtins.listToAttrs (map configureDirectory dirs);
in
linkDirectories [
"after"
"autoload"
"ftdetect"
"plugin"
];
in
{
options.my.home.vim = with lib.my; {
enable = mkDisableOption "vim configuration";
};
config.programs.neovim = lib.mkIf cfg.enable {
enable = true;
# All the aliases
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
plugins = with pkgs.vimPlugins; [
# Theming
lightline-vim # Fancy status bar
vim-gruvbox8 # Nice dark theme
# tpope essentials
vim-commentary # Easy comments
vim-eunuch # UNIX integrations
vim-fugitive # A 'git' wrapper
vim-git # Sane git syntax files
vim-repeat # Enanche '.' for plugins
vim-rsi # Readline mappings
vim-surround # Deal with pairs
vim-unimpaired # Some ex command mappings
vim-vinegar # Better netrw
# Languages
rust-vim
vim-beancount
vim-jsonnet
vim-nix
vim-pandoc
vim-pandoc-syntax
vim-toml
# General enhancements
fastfold # Better folding
vim-qf # Better quick-fix list
# Other wrappers
fzfWrapper # The vim plugin inside the 'fzf' package
fzf-vim # Fuzzy commands
git-messenger-vim # A simple blame window
# LSP and linting
ale # Asynchronous Linting Engine
lightline-ale # Status bar integration
];
extraConfig = builtins.readFile ./init.vim;
};
config.xdg.configFile = lib.mkIf cfg.enable configFiles;
}

View file

@ -0,0 +1,2 @@
" Use Automake filetype for `local.am` files, explicit `set` to force override
au BufNewFile,BufRead local.am set filetype=automake

View file

@ -0,0 +1,2 @@
" Use LaTeX filetype for TikZ files
au BufNewFile,BufRead *.tikz setfiletype tex

View file

@ -1,4 +1,4 @@
" Basic configuration {{{
" Basic configuraion {{{
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Use UTF-8
set encoding=utf-8
@ -13,13 +13,6 @@ set wildmenu
" Enable syntax high-lighting and file-type specific plugins
syntax on
filetype plugin indent on
" Map leader to space (needs the noremap trick to avoid moving the cursor)
nnoremap <Space> <Nop>
let mapleader=" "
" Map localleader to '!' (if I want to filter text, I use visual mode)
let maplocalleader="!"
" }}}
" Indentation configuration {{{
@ -38,10 +31,10 @@ set tabstop=8
" File parameters {{{
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Disable swap files
" Disable backups, we have source control for that
set nobackup
" Disable swapfiles too
set noswapfile
" Enable undo files
set undofile
" }}}
" UI and UX parameters {{{
@ -66,51 +59,21 @@ set list
" Show a tab as an arrow, trailing spaces as ¤, non-breaking spaces as dots
set listchars=tab:>,trail,nbsp
" Use patience diff
set diffopt+=algorithm:patience
" Align similar lines in each hunk
set diffopt+=linematch:50
" Don't redraw when executing macros
set lazyredraw
" Timeout quickly on shortcuts, I can't wait two seconds to delete in visual
set timeoutlen=500
" Timeout quickly for CursorHold events (and also swap file)
set updatetime=250
" Disable all mouse integrations
set mouse=
" Set dark mode by default
set background=dark
" Setup some overrides for gruvbox
lua << EOF
local gruvbox = require("gruvbox")
local colors = gruvbox.palette
gruvbox.setup({
overrides = {
-- Only URLs should be underlined
["@string.special.path"] = { link = "GruvboxOrange" },
-- Revert back to the better diff highlighting
DiffAdd = { fg = colors.green, bg = "NONE" },
DiffChange = { fg = colors.aqua, bg = "NONE" },
DiffDelete = { fg = colors.red, bg = "NONE" },
DiffText = { fg = colors.yellow, bg = colors.bg0 },
-- Directories "pop" better in blue
Directory = { link = "GruvboxBlueBold" },
},
italic = {
-- Comments should not be italic, for e.g: box drawing
comments = false,
},
})
EOF
" Include plug-in integration
let g:gruvbox_plugin_hi_groups=1
" Include filetype integration
let g:gruvbox_filetype_hi_groups=1
" Use my preferred colorscheme
colorscheme gruvbox
colorscheme gruvbox8
" }}}
" Search parameters {{{
@ -123,10 +86,12 @@ set ignorecase
set smartcase
" }}}
" Project-local settings {{{
" Import settings when inside a git repository {{{
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Securely read `.nvim.lua` or `.nvimrc`.
set exrc
let git_settings=system("git config --get vim.settings")
if strlen(git_settings)
exe "set" git_settings
endif
" }}}
" vim: foldmethod=marker

View file

@ -0,0 +1,5 @@
" A few useful sets of abbreviations
" A few things that are hard to write in ASCII
abbreviate (R) ©
abbreviate (TM)

View file

@ -0,0 +1,6 @@
" Map leader to space (needs the noremap trick to avoid moving the cursor)
nnoremap <Space> <Nop>
let mapleader=" "
" Map localleader to '!' (if I want to filter text, I use visual mode)
let maplocalleader="!"

View file

@ -0,0 +1,13 @@
" Idea for toggling taken from jeffkreeftmeijer
" Show line numbers
set number
augroup numbertoggle
autocmd!
" Toggle numbers between relative and absolute when changing buffers
autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
" Disable line numbers and relative line numbers in terminal
autocmd TermOpen * setlocal nonu nornu
augroup END

View file

@ -0,0 +1,24 @@
" Always display the sign column to avoid moving the buffer all the time
let g:ale_sign_column_always=1
" Change the way ALE display messages
let g:ale_echo_msg_info_str='I'
let g:ale_echo_msg_warning_str='W'
let g:ale_echo_msg_error_str='E'
" The message displayed in the command line area
let g:ale_echo_msg_format='[%linter%][%severity%]%(code):% %s'
" The message displayed in the location list
let g:ale_loclist_msg_format='[%linter%]%(code):% %s'
" Don't lint every time I change the buffer
let g:ale_lint_on_text_changed=0
" Don't lint on leaving insert mode
let g:ale_lint_on_insert_leave=0
" Don't lint on entering a buffer
let g:ale_lint_on_enter=0
" Do lint on save
let g:ale_lint_on_save=1
" Lint on changing the filetype
let g:ale_lint_on_filetype_changed=1

View file

@ -0,0 +1,5 @@
" Intercept all fold commands
let g:fastfold_fold_command_suffixes=[
\ 'x', 'X', 'a', 'A', 'o', 'O', 'c', 'C',
\ 'r', 'R', 'm', 'M', 'i', 'n', 'N'
\ ]

View file

@ -0,0 +1,8 @@
" Use a floating window when availble
if has('nvim-0.4.0') || has("patch-8.2.0191")
let g:fzf_layout = { 'window': {
\ 'width': 0.9,
\ 'height': 0.7,
\ 'highlight': 'Comment',
\ 'rounded': v:false } }
endif

View file

@ -0,0 +1,5 @@
" Use the high-contrast theme
let g:gruvbox_contrast_dark='hard'
" Enable italics because urxvt supports them
let g:gruvbox_italic=1

View file

@ -0,0 +1,81 @@
" Initialise light-line setting structure
let g:lightline={}
" Use the wombat colorscheme
let g:lightline.colorscheme='wombat'
" Status-line for active buffer
let g:lightline.active={
\ 'left': [
\ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified' ],
\ [ 'spell' ],
\ ],
\ 'right': [
\ [ 'lineinfo' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ],
\ [ 'linter_check', 'linter_errors', 'linter_warn', 'linter_ok' ],
\ [ 'ctags_status' ],
\ ]
\ }
" Status-line for inactive buffer
let g:lightline.inactive={
\ 'left': [
\ [ 'filename' ],
\ ],
\ 'right': [
\ [ 'lineinfo' ],
\ [ 'percent' ],
\ ],
\ }
" Which component should be written using which function
let g:lightline.component_function={
\ 'readonly': 'LightlineReadonly',
\ 'modified': 'LightlineModified',
\ 'gitbranch': 'LightlineFugitive',
\ }
" Which component can be expanded by using which function
let g:lightline.component_expand={
\ 'linter_check': 'lightline#ale#checking',
\ 'linter_warn': 'lightline#ale#warnings',
\ 'linter_errors': 'lightline#ale#errors',
\ 'linter_ok': 'lightline#ale#ok',
\ }
" How to color custom components
let g:lightline.component_type={
\ 'readonly': 'error',
\ 'linter_checking': 'left',
\ 'linter_warn': 'warning',
\ 'linter_errors': 'error',
\ 'linter_ok': 'left',
\ }
" Show pretty icons instead of text for linting status
let g:lightline#ale#indicator_checking='⏳'
let g:lightline#ale#indicator_warnings='◆'
let g:lightline#ale#indicator_errors='✗'
let g:lightline#ale#indicator_ok='✓'
" Show a lock icon when editing a read-only file when it makes sense
function! LightlineReadonly()
return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '' : ''
endfunction
" Show a '+' when the buffer is modified, '-' if not, when it makes sense
function! LightlineModified()
return &ft=~'help\|vimfiler\|netrw' ? '' : &modified ? '+' : &modifiable ? '' : '-'
endfunction
" Show branch name with nice icon in status line, when it makes sense
function! LightlineFugitive()
if &ft!~?'help\|vimfiler\|netrw' && exists('*fugitive#head')
let branch=fugitive#head()
return branch!=#'' ? ' '.branch : ''
endif
return ''
endfunction

View file

@ -0,0 +1,20 @@
" Which code-block languages should I expect to be high-lighted.
let g:pandoc#syntax#codeblocks#embeds#langs=[
\ "bash=sh",
\ "c",
\ "cpp",
\ "go",
\ "haskell",
\ "python",
\ "rust",
\ "sh",
\ "vim",
\ "yaml",
\ "tex",
\ "toml",
\ "perl",
\ "json",
\ "latex=tex",
\ "make",
\ "makefile=make",
\ ]

View file

@ -0,0 +1,8 @@
augroup signtoggle
autocmd!
" Only show the sign column for the current focused buffer
autocmd BufEnter,FocusGained,WinEnter * set signcolumn=yes
autocmd BufLeave,FocusLost,WinLeave * set signcolumn=no
" Disable the sign column in terminal
autocmd TermOpen * setlocal signcolumn=no
augroup END

View file

@ -10,7 +10,6 @@ let
in
{
imports = [
./cursor
./dunst
./i3
./i3bar
@ -26,41 +25,12 @@ in
description = "Which window manager to use for home session";
};
cursor = {
enable = mkRelatedOption "dunst configuration" [ "i3" ];
};
dunst = {
enable = mkRelatedOption "dunst configuration" [ "i3" ];
};
i3bar = {
enable = mkRelatedOption "i3bar configuration" [ "i3" ];
vpn = {
enable = my.mkDisableOption "VPN configuration";
blockConfigs = mkOption {
type = with types; listOf (attrsOf str);
default = [
{
active_format = " VPN ";
service = "wg-quick-wg";
}
{
active_format = " VPN (LAN) ";
service = "wg-quick-lan";
}
];
example = [
{
active_format = " WORK ";
service = "some-service-name";
}
];
description = "list of block configurations, merged with the defaults";
};
};
};
rofi = {
@ -72,8 +42,8 @@ in
command = mkOption {
type = types.str;
default = "${lib.getExe pkgs.i3lock} -n -c 000000";
example = "\${lib.getExe pkgs.i3lock} -n -i lock.png";
default = "${pkgs.i3lock}/bin/i3lock -n -c 000000";
example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png";
description = "Locker command to run";
};
@ -108,7 +78,7 @@ in
timeout = mkOption {
type = types.ints.between 1 60;
default = 15;
default = 5;
example = 1;
description = "Inactive time interval to lock the screen automatically";
};

Some files were not shown because too many files have changed in this diff Show more