Commit f916a4ff966c

Vincent Demeester <vincent@sbr.pm>
2020-06-06 16:39:42
modules: clean nix files…
- remove nix files that are now in `users/vincent` (or `users/…`) - rename `*.nixos.nix` files to `*.nix` - remove unused modules Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent c1bbd04
modules/profiles/assets/fish/fish_prompt.fish
@@ -1,258 +0,0 @@
-# name: lambda
-function __fish_basename -d 'basically basename, but faster'
-    string replace -r '^.*/' '' -- $argv
-end
-
-function __fish_dirname -d 'basically dirname, but faster'
-    string replace -r '/[^/]+/?$' '' -- $argv
-end
-
-
-function __fish_prompt_status -S -a last_status -d 'Display flags for non-zero-exit status, root user, and background jobs'
-    set -l nonzero
-    set -l superuser
-    set -l bg_jobs
-
-    # Last exit was nonzero
-    [ $last_status -ne 0 ]
-    and set nonzero 1
-
-    # If superuser (uid == 0)
-    #
-    # Note that iff the current user is root and '/' is not writeable by root this
-    # will be wrong. But I can't think of a single reason that would happen, and
-    # it is literally 99.5% faster to check it this way, so that's a tradeoff I'm
-    # willing to make.
-    [ -w / ]
-    and [ (id -u) -eq 0 ]
-    and set superuser 1
-
-    # Jobs display
-    jobs -p >/dev/null
-    and set bg_jobs 1
-
-    if [ "$nonzero" ]
-        set_color red
-        echo -n '! '
-        set_color normal
-    end
-
-    if [ "$superuser" ]
-        set_color red
-        echo -n '$ '
-        set_color normal
-    end
-
-    if [ "$bg_jobs" ]
-        set_color gray
-        echo -n '% '
-        set_color normal
-    end
-end
-
-function __fish_prompt_user -S -d 'Display current user and hostname'
-    [ -n "$SSH_CLIENT" ]
-    and set -l display_user_hostname
-
-    if set -q display_user_hostname
-        set -l IFS .
-        hostname | read -l hostname __
-        echo -ns (whoami) '@' $hostname
-    end
-end
-
-function __fish_git_project_dir
-    set -l git_dir (command git rev-parse --git-dir ^/dev/null)
-    or return
-
-    pushd $git_dir
-    set git_dir $PWD
-    popd
-
-    switch $PWD/
-        case $git_dir/\*
-            # Nothing works quite right if we're inside the git dir
-            # TODO: fix the underlying issues then re-enable the stuff below
-
-            # # if we're inside the git dir, sweet. just return that.
-            # set -l toplevel (command git rev-parse --show-toplevel ^/dev/null)
-            # if [ "$toplevel" ]
-            #   switch $git_dir/
-            #     case $toplevel/\*
-            #       echo $git_dir
-            #   end
-            # end
-            return
-    end
-
-    set -l project_dir (__fish_dirname $git_dir)
-
-    switch $PWD/
-        case $project_dir/\*
-            echo $project_dir
-            return
-    end
-
-    set project_dir (command git rev-parse --show-toplevel ^/dev/null)
-    switch $PWD/
-        case $project_dir/\*
-            echo $project_dir
-    end
-end
-
-function __fish_git_ahead -S -d 'Print the ahead/behind state for the current branch'
-    set -l ahead 0
-    set -l behind 0
-    for line in (command git rev-list --left-right '@{upstream}...HEAD' ^/dev/null)
-        switch "$line"
-            case '>*'
-                if [ $behind -eq 1 ]
-                    echo '±'
-                    return
-                end
-                set ahead 1
-            case '<*'
-                if [ $ahead -eq 1 ]
-                    echo "±"
-                    return
-                end
-                set behind 1
-        end
-    end
-
-    if [ $ahead -eq 1 ]
-        echo "+"
-    else if [ $behind -eq 1 ]
-        echo "-"
-    end
-end
-
-function __fish_git_branch -S -d 'Get the current git branch (or commitish)'
-    set -l ref (command git symbolic-ref HEAD ^/dev/null)
-    and begin
-        string replace 'refs/heads/' "" $ref
-        and return
-    end
-
-    set -l tag (command git describe --tags --exact-match ^/dev/null)
-    and echo "tag:$tag"
-    and return
-
-    set -l branch (command git show-ref --head -s --abbrev | head -n1 ^/dev/null)
-    echo "detached:$branch"
-end
-
-function __fish_prompt_git -S -a current_dir -d 'Display the actula git state'
-    set -l dirty ''
-    set -l show_dirty (command git config --bool bash.showDirtyState ^/dev/null)
-    if [ "$show_dirty" != 'false' ]
-        set dirty (command git diff --no-ext-diff --quiet --exit-code ^/dev/null; or echo -n "*")
-    end
-
-    set -l staged (command git diff --cached --no-ext-diff --quiet --exit-code ^/dev/null; or echo -n "~")
-    set -l stashed (command git rev-parse --verify --quiet refs/stash >/dev/null; and echo -n '$')
-    set -l ahead (__fish_git_ahead)
-
-    set -l new ''
-    set -l show_untracked (command git config --bool bash.showUntrackedFiles ^/dev/null)
-    if [ "$show_untracked" != 'false' ]
-        set new (command git ls-files --other --exclude-standard --directory --no-empty-directory ^/dev/null)
-        if [ "$new" ]
-            set new "…"
-        end
-    end
-
-    set -l flags "$dirty$staged$stashed$ahead$new"
-    [ "$flags" ]
-    and set flags ":$flags"
-
-    __fish_path_segment $current_dir
-
-    set_color green
-    echo -n '{'
-    echo -ns (__fish_git_branch) $flags ''
-    echo -n '}'
-    set_color normal
-
-    set -l project_pwd (command git rev-parse --show-prefix ^/dev/null | string trim --right --chars=/)
-
-    if [ "$project_pwd" ]
-        set_color brblack
-        echo -n "/$project_pwd"
-        set_color normal
-    end
-end
-
-function __fish_prompt_dir -S -d 'Display a shortened form of the current directory'
-    __fish_path_segment "$PWD"
-end
-
-function __fish_path_segment -S -a current_dir -d 'Display a shortened form of a directory'
-    set -l directory
-    set -l parent
-
-    switch "$current_dir"
-        case /
-            set directory '/'
-        case "$HOME"
-            set directory '~'
-        case '*'
-            set parent (__fish_pretty_parent "$current_dir")
-            set directory (__fish_basename "$current_dir")
-    end
-
-    set_color white
-    echo -n $parent
-    set_color --bold
-    echo -ns $directory ''
-    set_color normal
-end
-
-function __fish_pretty_parent -S -a current_dir -d 'Print a parent directory, shortened to fit the prompt'
-    set -q fish_prompt_pwd_dir_length
-    or set -l fish_prompt_pwd_dir_length 1
-
-    # Replace $HOME with ~
-    set -l real_home ~
-    set -l parent_dir (string replace -r '^'"$real_home"'($|/)' '~$1' (__fish_dirname $current_dir))
-
-    # Must check whether `$parent_dir = /` if using native dirname
-    if [ -z "$parent_dir" ]
-        echo -n /
-        return
-    end
-
-    if [ $fish_prompt_pwd_dir_length -eq 0 ]
-        echo -n "$parent_dir/"
-        return
-    end
-
-    string replace -ar '(\.?[^/]{'"$fish_prompt_pwd_dir_length"'})[^/]*/' '$1/' "$parent_dir/"
-end
-
-# TODO: handle envs (nix-shell, virtualenv, ...)
-
-function fish_prompt -d 'vde-lambda, a fish theme optimized for me :D'
-    if test $TERM = "dumb"
-        echo "\$ "
-        return 0
-    end
-    # Save the last status for later
-    set -l last_status $status
-
-    __fish_prompt_status $last_status
-    __fish_prompt_user
-
-    # vcs
-    set -l git_root (__fish_git_project_dir)
-
-    if [ "$git_root" ]
-        __fish_prompt_git $git_root
-    else
-        __fish_prompt_dir
-    end
-
-    set_color --bold brblack
-    echo -n " λ "
-    set_color normal
-end
modules/profiles/assets/fish/fish_right_prompt.fish
@@ -1,30 +0,0 @@
-function __fish_prompt_nix_shell
-    [ -z "$IN_NIX_SHELL" ]
-    and return
-    set_color yellow
-    echo -n -s '🄪  '
-    set_color normal
-end
-
-# ⏍ ⧆ ⌗ ⧉
-function __fish_prompt_direnv
-    [ -z "$DIRENV_DIR" ]
-    and return
-    set_color yellow
-    echo -n -s '⧉ '
-    set_color normal
-end
-
-function __fish_prompt_virtualenv
-    [ -z "$VIRTUAL_ENV" ]
-    and return
-    set_color green
-    echo -ns 'venv:' (basename "$VIRTUAL_ENV") ' '
-    set_color normal
-end
-
-function fish_right_prompt
-    __fish_prompt_direnv
-    __fish_prompt_nix_shell
-    __fish_prompt_virtualenv
-end
modules/profiles/assets/fish/go.fish
@@ -1,1 +0,0 @@
-set -gx GOPATH $HOME
modules/profiles/assets/fish/sudope.fish
@@ -1,2 +0,0 @@
-# default key sequence: Ctrl+s
-bind \cs sudope
modules/profiles/assets/fish/sudope.function.fish
@@ -1,54 +0,0 @@
-function sudope -d "Quickly toggle sudo prefix"
-
-    # Save the current command line and cursor position.
-    set -l command_buffer (commandline)
-    set -l cursor_position (commandline -C)
-
-    # If the command line is empty, pull the last command from history.
-    if test -z "$command_buffer"
-        set command_buffer $history[1]
-    end
-
-    # Parse the command line (first line only).
-    set -l command_parts (string match -ir '^(\s*)(sudo(\s+|$))?(.*)' $command_buffer[1])
-
-    # Handle multiline commands with extra care.
-    set -l command_lines_count (count $command_buffer)
-    test $command_lines_count -gt 1
-    and set -l command_rest $command_buffer[2..$command_lines_count]
-
-    switch (count $command_parts)
-        case 3
-            # No "sudo".
-
-            # Add "sudo" to the beginning of the command, after any leading whitespace (if present).
-            commandline -r (string join \n (string join '' $command_parts[2] 'sudo ' $command_parts[3]) $command_rest)
-
-            # Push the cursor position ahead if necessary (+5 for 'sudo ').
-            test $cursor_position -ge (string length -- "$command_parts[2]")
-            and set cursor_position (math $cursor_position+5)
-
-            # Place the cursor where it was (or where it should be).
-            commandline -C $cursor_position
-
-        case 5
-            # "sudo" is present in the beginning of the command.
-
-            # Remove "sudo", leave any leading whitespace (if present).
-            commandline -r (string join \n (string join '' $command_parts[2 5]) $command_rest)
-
-            # Push the cursor position back if appropriate ('sudo' and whitespace).
-            set -l lead_length (string length -- "$command_parts[2]")
-            set -l sudo_length (string length -- "$command_parts[3]")
-            if test $cursor_position -ge (math $lead_length+$sudo_length)
-                # The cursor was after "sudo".
-                set cursor_position (math $cursor_position-$sudo_length)
-            else if test $cursor_position -ge $lead_length
-                # The cursor was somewhere on "sudo".
-                set cursor_position $lead_length
-            end
-
-            # Place the cursor where it was (or where it should be).
-            commandline -C -- $cursor_position
-    end
-end
modules/profiles/assets/git
@@ -1,1 +0,0 @@
-../../../users/vincent/core/git
\ No newline at end of file
modules/profiles/assets/lib.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/lib.mr
\ No newline at end of file
modules/profiles/assets/src.github.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/src.github.mr
\ No newline at end of file
modules/profiles/assets/src.github.openshift.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/src.github.openshift.mr
\ No newline at end of file
modules/profiles/assets/src.knative.dev.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/src.knative.dev.mr
\ No newline at end of file
modules/profiles/assets/src.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/src.mr
\ No newline at end of file
modules/profiles/assets/src.pkgs.devel.redhat.mr
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/mr/src.pkgs.devel.redhat.mr
\ No newline at end of file
modules/profiles/assets/tmux
@@ -1,1 +0,0 @@
-../../../users/vincent/core/tmux
\ No newline at end of file
modules/profiles/assets/xorg
@@ -1,1 +0,0 @@
-../../../users/vincent/core/xorg
\ No newline at end of file
modules/profiles/assets/zsh
@@ -1,1 +0,0 @@
-../../../users/vincent/core/zsh
\ No newline at end of file
modules/profiles/aliases.shell.nix
@@ -1,14 +0,0 @@
-{
-  mkdir = ''mkdir --parents --verbose'';
-  rm = ''rm --interactive'';
-  cp = ''cp --interactive'';
-  mv = ''mv --interactive'';
-  gcd = ''cd (git root)'';
-  ls = ''exa'';
-  ll = ''exa --long'';
-  la = ''exa --all'';
-  l = ''exa --long --all --header'';
-  t = ''exa --tree --level=2'';
-  wget = ''wget -c'';
-  map = ''xargs -n1'';
-}
modules/profiles/audio.nix
@@ -1,56 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.audio;
-in
-{
-  options = {
-    profiles.audio = {
-      enable = mkEnableOption "Enable audio profile";
-      shairport-sync = mkEnableOption "Enable shairport-sync";
-      mpd = {
-        enable = mkEnableOption "Enable mpd";
-        musicDir = mkOption {
-          description = "Data where to find the music for mpd";
-          type = types.str;
-        };
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      services.shairport-sync.enable = cfg.shairport-sync;
-    }
-    (
-      mkIf cfg.mpd.enable {
-        services.mpd = {
-          enable = true;
-          musicDirectory = cfg.mpd.musicDir;
-          network.listenAddress = "any";
-          extraConfig = ''
-            audio_output {
-              type    "pulse"
-              name    "Local MPD"
-            }
-          '';
-        };
-        services.mpdris2 = {
-          enable = true;
-          mpd.host = "127.0.0.1";
-        };
-        home.packages = with pkgs; [
-          mpc_cli
-          ncmpcpp
-        ];
-      }
-    )
-    (
-      mkIf (cfg.mpd.enable && config.profiles.desktop.enable) {
-        home.packages = with pkgs; [
-          ario
-        ];
-      }
-    )
-  ]);
-}
modules/profiles/avahi.nixos.nix → modules/profiles/avahi.nix
File renamed without changes
modules/profiles/base.nixos.nix → modules/profiles/base.nix
File renamed without changes
modules/profiles/bash.nix
@@ -1,23 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.profiles.bash;
-in
-{
-  options = {
-    profiles.bash = {
-      enable = mkOption {
-        default = true;
-        description = "Enable bash profile and configuration";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    programs.bash = {
-      enable = true;
-      shellAliases = import ./aliases.shell.nix;
-    };
-  };
-}
modules/profiles/buildkit.nixos.nix → modules/profiles/buildkit.nix
File renamed without changes
modules/profiles/containerd.nixos.nix → modules/profiles/containerd.nix
File renamed without changes
modules/profiles/containers.nix
@@ -1,40 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.containers;
-in
-{
-  options = {
-    profiles.containers = {
-      enable = mkEnableOption "Enable containers profile";
-      podman = mkOption {
-        default = true;
-        description = "Enable podman tools";
-        type = types.bool;
-      };
-      docker = mkEnableOption "Enable docker tools";
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.docker.enable = cfg.docker;
-    programs.podman.enable = cfg.podman;
-    home.packages = with pkgs; [
-      nur.repos.mic92.cntr
-      my.ko
-      my.yak
-      skopeo
-    ];
-    home.file."bin/kontain.me" = {
-      text = ''
-        #!${pkgs.stdenv.shell}
-        command -v docker >/dev/null && {
-          docker run -ti --rm kontain.me/ko/$@
-        } || {
-          podman run -ti --rm kontain.me/ko/$@
-        }
-      '';
-      executable = true;
-    };
-  };
-}
modules/profiles/default.nix
@@ -1,32 +1,32 @@
 {
   imports = [
     # Remove "nixos" from here
-    ./avahi.nixos.nix
-    ./base.nixos.nix
-    ./buildkit.nixos.nix
-    ./containerd.nixos.nix
-    ./desktop.nixos.nix
-    ./dev.nixos.nix
-    ./docker.nixos.nix
-    ./fish.nixos.nix
-    ./gaming.nixos.nix
-    ./git.nixos.nix
-    ./home.nixos.nix
-    ./i18n.nixos.nix
-    ./ipfs.nixos.nix
-    ./laptop.nixos.nix
-    ./mail.nixos.nix
-    ./nix-auto-update.nixos.nix
-    ./printing.nixos.nix
-    ./pulseaudio.nixos.nix
-    ./qemu.nixos.nix
-    ./scanning.nixos.nix
-    ./ssh.nixos.nix
-    ./syncthing.nixos.nix
-    ./users.nixos.nix
-    ./virtualization.nixos.nix
-    ./wireguard.server.nixos.nix
-    ./yubikey.nixos.nix
-    ./zsh.nixos.nix
+    ./avahi.nix
+    ./base.nix
+    ./buildkit.nix
+    ./containerd.nix
+    ./desktop.nix
+    ./dev.nix
+    ./docker.nix
+    ./fish.nix
+    ./gaming.nix
+    ./git.nix
+    ./home.nix
+    ./i18n.nix
+    ./ipfs.nix
+    ./laptop.nix
+    ./mail.nix
+    ./nix-auto-update.nix
+    ./printing.nix
+    ./pulseaudio.nix
+    ./qemu.nix
+    ./scanning.nix
+    ./ssh.nix
+    ./syncthing.nix
+    ./users.nix
+    ./virtualization.nix
+    ./wireguard.server.nix
+    ./yubikey.nix
+    ./zsh.nix
   ];
 }
modules/profiles/desktop.nix
@@ -3,119 +3,207 @@
 with lib;
 let
   cfg = config.profiles.desktop;
-  dim-screen = pkgs.writeScript "dim-sreen.sh" ''
-    #!${pkgs.stdenv.shell}
-    export PATH=${lib.getBin pkgs.xlibs.xbacklight}/bin:$PATH
-    trap "exit 0" INT TERM
-    trap "kill \$(jobs -p); xbacklight -steps 1 -set $(xbacklight -get);" EXIT
-    xbacklight -time 5000 -steps 400 -set 0 &
-    sleep 2147483647 &
-    wait
-  '';
 in
 {
   options = {
     profiles.desktop = {
-      enable = mkEnableOption "Enable desktop profile";
-      lockCmd = mkOption {
-        default = "-n ${dim-screen} -- ${pkgs.i3lock-color}/bin/i3lock-color -c 666666";
-        description = "Lock command to use";
-        type = types.str;
+      enable = mkOption {
+        default = false;
+        description = "Enable desktop profile";
+        type = types.bool;
       };
-      xsession = {
-        enable = mkOption {
-          default = true;
-          description = "Enable xsession managed";
-          type = types.bool;
-        };
-        i3 = mkOption {
-          default = true;
-          description = "Enable i3 managed window manager";
-          type = types.bool;
-        };
+      avahi = mkOption {
+        default = true;
+        description = "Enable avahi  with the desktop profile";
+        type = types.bool;
+      };
+      pulseaudio = mkOption {
+        default = true;
+        description = "Enable pulseaudio with the desktop profile";
+        type = types.bool;
+      };
+      flatpak = mkOption {
+        default = true;
+        description = "Enable flatpak with the desktop profile";
+        type = types.bool;
+      };
+      syncthing = mkOption {
+        default = true;
+        description = "Enable syncthing with the desktop profile";
+        type = types.bool;
+      };
+      scanning = mkOption {
+        default = true;
+        description = "Enable scanning with the desktop profile";
+        type = types.bool;
+      };
+      printing = mkOption {
+        default = true;
+        description = "Enable printing with the desktop profile";
+        type = types.bool;
+      };
+      networkmanager = mkOption {
+        default = true;
+        description = "Enable networkmanager with the desktop profile";
+        type = types.bool;
+      };
+      autoLogin = mkOption {
+        default = false;
+        description = "Enable auto login";
+        type = types.bool;
       };
     };
   };
   config = mkIf cfg.enable {
-    home.sessionVariables = { WEBKIT_DISABLE_COMPOSITING_MODE = 1; };
-    profiles.gpg.enable = true;
-    profiles.emacs.capture = true;
-    xsession = mkIf cfg.xsession.enable {
-      enable = true;
-      initExtra = ''
-        ${pkgs.xlibs.xmodmap}/bin/xmodmap ${config.home.homeDirectory}.Xmodmap &
-      '';
-      pointerCursor = {
-        package = pkgs.vanilla-dmz;
-        name = "Vanilla-DMZ";
-      };
+    profiles.avahi.enable = cfg.avahi;
+    profiles.printing.enable = cfg.printing;
+    profiles.pulseaudio.enable = cfg.pulseaudio;
+    profiles.scanning.enable = cfg.scanning;
+    profiles.syncthing.enable = cfg.syncthing;
+
+    boot = {
+      tmpOnTmpfs = true;
+      plymouth.enable = true;
     };
-    home.keyboard = mkIf cfg.xsession.enable {
-      layout = "fr(bepo),fr";
-      variant = "oss";
-      options = [ "grp:menu_toggle" "grp_led:caps" "compose:caps" ];
-    };
-    gtk = {
-      enable = true;
-      iconTheme = {
-        name = "Arc";
-        package = pkgs.arc-icon-theme;
-      };
-      theme = {
-        name = "Arc";
-        package = pkgs.arc-theme;
-      };
-    };
-    services = {
-      redshift = {
-        enable = true;
-        brightness = { day = "1"; night = "0.9"; };
-        latitude = "48.3";
-        longitude = "7.5";
-        tray = true;
-      };
-    };
-    home.file.".XCompose".source = ./assets/xorg/XCompose;
-    home.file.".Xmodmap".source = ./assets/xorg/Xmodmap;
-    xdg.configFile."xorg/emoji.compose".source = ./assets/xorg/emoji.compose;
-    xdg.configFile."xorg/parens.compose".source = ./assets/xorg/parens.compose;
-    xdg.configFile."xorg/modletters.compose".source = ./assets/xorg/modletters.compose;
-    xdg.configFile."user-dirs.dirs".source = ./assets/xorg/user-dirs.dirs;
-    xdg.configFile."nr/desktop" = {
-      text = builtins.toJSON [
-        { cmd = "surf"; }
-        { cmd = "next"; }
-        { cmd = "xclip"; }
-        { cmd = "dmenu"; }
-        { cmd = "sxiv"; }
-        { cmd = "screenkey"; }
-        { cmd = "gimp"; }
-        { cmd = "virt-manager"; pkg = "virtmanager"; }
-        { cmd = "update-desktop-database"; pkg = "desktop-file-utils"; chan = "unstable"; }
-        { cmd = "lgogdownloader"; chan = "unstable"; }
-        { cmd = "xev"; pkg = "xorg.xev"; }
+
+    hardware.bluetooth.enable = true;
+
+    networking.networkmanager = {
+      enable = cfg.networkmanager;
+      unmanaged = [
+        "interface-name:ve-*"
+        "interface-name:veth*"
+        "interface-name:wg0"
+        "interface-name:docker0"
+        "interface-name:virbr*"
       ];
-      onChange = "${pkgs.my.nr}/bin/nr desktop";
+      packages = with pkgs; [ networkmanager-openvpn ];
     };
-    programs = {
-      firefox.enable = true;
+
+    programs.dconf.enable = true;
+    xdg.portal.enable = cfg.flatpak;
+
+    services = {
+      flatpak.enable = cfg.flatpak;
+      dbus.packages = [ pkgs.gnome3.dconf ];
+      xserver = {
+        enable = true;
+        enableTCP = false;
+        windowManager.twm.enable = true;
+        libinput.enable = true;
+        synaptics.enable = false;
+        layout = "fr(bepo),fr";
+        xkbVariant = "oss";
+        xkbOptions = "grp:menu_toggle,grp_led:caps,compose:caps";
+        inputClassSections = [
+          ''
+            Identifier      "TypeMatrix"
+            MatchIsKeyboard "on"
+            MatchVendor     "TypeMatrix.com"
+            MatchProduct    "USB Keyboard"
+            Driver          "evdev"
+            Option          "XbkModel"      "tm2030USB"
+            Option          "XkbLayout"     "fr"
+            Option          "XkbVariant"    "bepo"
+          ''
+          ''
+            Identifier      "ErgoDox"
+            #MatchVendor     "ErgoDox_EZ"
+            #MatchProduct    "ErgoDox_EZ"
+            MatchIsKeyboard "on"
+            MatchUSBID      "feed:1307"
+            Driver          "evdev"
+            Option          "XkbLayout"     "fr"
+            Option          "XkbVariant"    "bepo"
+          ''
+        ];
+        displayManager = {
+          # defaultSession = "none+i3";
+          lightdm = {
+            enable = true;
+            autoLogin = {
+              enable = true;
+              user = "vincent";
+            };
+          };
+        };
+      };
     };
-    profiles.i3.enable = cfg.xsession.i3;
-    home.packages = with pkgs; [
-      aspell
-      aspellDicts.en
-      aspellDicts.fr
-      #etBook
-      gnome3.defaultIconTheme
-      gnome3.gnome_themes_standard
-      keybase
-      mpv
-      pass
-      peco
-      profile-sync-daemon
-      xdg-user-dirs
-      xdg_utils
-      xsel
+    fonts = {
+      enableFontDir = true;
+      enableGhostscriptFonts = true;
+      fonts = with pkgs; [
+        corefonts
+        dejavu_fonts
+        emojione
+        feh
+        fira
+        fira-code
+        fira-code-symbols
+        fira-mono
+        hasklig
+        inconsolata
+        iosevka
+        noto-fonts
+        noto-fonts-cjk
+        noto-fonts-emoji
+        noto-fonts-extra
+        overpass
+        symbola
+        source-code-pro
+        twemoji-color-font
+        ubuntu_font_family
+        unifont
+      ];
+    };
+
+    # Polkit.
+    security.polkit.extraConfig = ''
+      polkit.addRule(function(action, subject) {
+      if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
+      action.id == "org.freedesktop.udisks2.encrypted-unlock-system"
+      ) &&
+      subject.local && subject.active && subject.isInGroup("users")) {
+      return polkit.Result.YES;
+      }
+      var YES = polkit.Result.YES;
+      var permission = {
+      // required for udisks1:
+      "org.freedesktop.udisks.filesystem-mount": YES,
+      "org.freedesktop.udisks.luks-unlock": YES,
+      "org.freedesktop.udisks.drive-eject": YES,
+      "org.freedesktop.udisks.drive-detach": YES,
+      // required for udisks2:
+      "org.freedesktop.udisks2.filesystem-mount": YES,
+      "org.freedesktop.udisks2.encrypted-unlock": YES,
+      "org.freedesktop.udisks2.eject-media": YES,
+      "org.freedesktop.udisks2.power-off-drive": YES,
+      // required for udisks2 if using udiskie from another seat (e.g. systemd):
+      "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
+      "org.freedesktop.udisks2.filesystem-unmount-others": YES,
+      "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
+      "org.freedesktop.udisks2.eject-media-other-seat": YES,
+      "org.freedesktop.udisks2.power-off-drive-other-seat": YES
+      };
+      if (subject.isInGroup("wheel")) {
+      return permission[action.id];
+      }
+      });
+    '';
+
+    environment.systemPackages = with pkgs; [
+      cryptsetup
+      xlibs.xmodmap
+      xorg.xbacklight
+      xorg.xdpyinfo
+      xorg.xhost
+      xorg.xinit
+      xss-lock
+      xorg.xmessage
+      unzip
+      gnupg
+      pinentry
+      inxi
     ];
   };
 }
modules/profiles/desktop.nixos.nix
@@ -1,209 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.desktop;
-in
-{
-  options = {
-    profiles.desktop = {
-      enable = mkOption {
-        default = false;
-        description = "Enable desktop profile";
-        type = types.bool;
-      };
-      avahi = mkOption {
-        default = true;
-        description = "Enable avahi  with the desktop profile";
-        type = types.bool;
-      };
-      pulseaudio = mkOption {
-        default = true;
-        description = "Enable pulseaudio with the desktop profile";
-        type = types.bool;
-      };
-      flatpak = mkOption {
-        default = true;
-        description = "Enable flatpak with the desktop profile";
-        type = types.bool;
-      };
-      syncthing = mkOption {
-        default = true;
-        description = "Enable syncthing with the desktop profile";
-        type = types.bool;
-      };
-      scanning = mkOption {
-        default = true;
-        description = "Enable scanning with the desktop profile";
-        type = types.bool;
-      };
-      printing = mkOption {
-        default = true;
-        description = "Enable printing with the desktop profile";
-        type = types.bool;
-      };
-      networkmanager = mkOption {
-        default = true;
-        description = "Enable networkmanager with the desktop profile";
-        type = types.bool;
-      };
-      autoLogin = mkOption {
-        default = false;
-        description = "Enable auto login";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.avahi.enable = cfg.avahi;
-    profiles.printing.enable = cfg.printing;
-    profiles.pulseaudio.enable = cfg.pulseaudio;
-    profiles.scanning.enable = cfg.scanning;
-    profiles.syncthing.enable = cfg.syncthing;
-
-    boot = {
-      tmpOnTmpfs = true;
-      plymouth.enable = true;
-    };
-
-    hardware.bluetooth.enable = true;
-
-    networking.networkmanager = {
-      enable = cfg.networkmanager;
-      unmanaged = [
-        "interface-name:ve-*"
-        "interface-name:veth*"
-        "interface-name:wg0"
-        "interface-name:docker0"
-        "interface-name:virbr*"
-      ];
-      packages = with pkgs; [ networkmanager-openvpn ];
-    };
-
-    programs.dconf.enable = true;
-    xdg.portal.enable = cfg.flatpak;
-
-    services = {
-      flatpak.enable = cfg.flatpak;
-      dbus.packages = [ pkgs.gnome3.dconf ];
-      xserver = {
-        enable = true;
-        enableTCP = false;
-        windowManager.twm.enable = true;
-        libinput.enable = true;
-        synaptics.enable = false;
-        layout = "fr(bepo),fr";
-        xkbVariant = "oss";
-        xkbOptions = "grp:menu_toggle,grp_led:caps,compose:caps";
-        inputClassSections = [
-          ''
-            Identifier      "TypeMatrix"
-            MatchIsKeyboard "on"
-            MatchVendor     "TypeMatrix.com"
-            MatchProduct    "USB Keyboard"
-            Driver          "evdev"
-            Option          "XbkModel"      "tm2030USB"
-            Option          "XkbLayout"     "fr"
-            Option          "XkbVariant"    "bepo"
-          ''
-          ''
-            Identifier      "ErgoDox"
-            #MatchVendor     "ErgoDox_EZ"
-            #MatchProduct    "ErgoDox_EZ"
-            MatchIsKeyboard "on"
-            MatchUSBID      "feed:1307"
-            Driver          "evdev"
-            Option          "XkbLayout"     "fr"
-            Option          "XkbVariant"    "bepo"
-          ''
-        ];
-        displayManager = {
-          # defaultSession = "none+i3";
-          lightdm = {
-            enable = true;
-            autoLogin = {
-              enable = true;
-              user = "vincent";
-            };
-          };
-        };
-      };
-    };
-    fonts = {
-      enableFontDir = true;
-      enableGhostscriptFonts = true;
-      fonts = with pkgs; [
-        corefonts
-        dejavu_fonts
-        emojione
-        feh
-        fira
-        fira-code
-        fira-code-symbols
-        fira-mono
-        hasklig
-        inconsolata
-        iosevka
-        noto-fonts
-        noto-fonts-cjk
-        noto-fonts-emoji
-        noto-fonts-extra
-        overpass
-        symbola
-        source-code-pro
-        twemoji-color-font
-        ubuntu_font_family
-        unifont
-      ];
-    };
-
-    # Polkit.
-    security.polkit.extraConfig = ''
-      polkit.addRule(function(action, subject) {
-      if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
-      action.id == "org.freedesktop.udisks2.encrypted-unlock-system"
-      ) &&
-      subject.local && subject.active && subject.isInGroup("users")) {
-      return polkit.Result.YES;
-      }
-      var YES = polkit.Result.YES;
-      var permission = {
-      // required for udisks1:
-      "org.freedesktop.udisks.filesystem-mount": YES,
-      "org.freedesktop.udisks.luks-unlock": YES,
-      "org.freedesktop.udisks.drive-eject": YES,
-      "org.freedesktop.udisks.drive-detach": YES,
-      // required for udisks2:
-      "org.freedesktop.udisks2.filesystem-mount": YES,
-      "org.freedesktop.udisks2.encrypted-unlock": YES,
-      "org.freedesktop.udisks2.eject-media": YES,
-      "org.freedesktop.udisks2.power-off-drive": YES,
-      // required for udisks2 if using udiskie from another seat (e.g. systemd):
-      "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
-      "org.freedesktop.udisks2.filesystem-unmount-others": YES,
-      "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
-      "org.freedesktop.udisks2.eject-media-other-seat": YES,
-      "org.freedesktop.udisks2.power-off-drive-other-seat": YES
-      };
-      if (subject.isInGroup("wheel")) {
-      return permission[action.id];
-      }
-      });
-    '';
-
-    environment.systemPackages = with pkgs; [
-      cryptsetup
-      xlibs.xmodmap
-      xorg.xbacklight
-      xorg.xdpyinfo
-      xorg.xhost
-      xorg.xinit
-      xss-lock
-      xorg.xmessage
-      unzip
-      gnupg
-      pinentry
-      inxi
-    ];
-  };
-}
modules/profiles/dev.go.nix
@@ -1,61 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.go;
-in
-{
-  options = {
-    profiles.dev.go = {
-      enable = mkEnableOption "Enable go development profile";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.sessionVariables = {
-        GOPATH = "${config.home.homeDirectory}";
-      };
-      profiles.dev.enable = true;
-      home.packages = with pkgs; [
-        gcc
-        go
-        godef
-        golangci-lint
-        golint
-        gopkgs
-        go-outline
-        go-symbols
-        delve
-        goimports
-        # vendoring tools
-        dep
-        # misc
-        protobuf
-        my.protobuild
-        my.ram
-        my.sec
-        my.esc
-        my.yaspell
-      ];
-      xdg.configFile."nr/go" = {
-        text = builtins.toJSON [
-          { cmd = "pprof"; chan = "unstable"; }
-          { cmd = "vndr"; chan = "unstable"; }
-          { cmd = "go2nix"; }
-          { cmd = "dep2nix"; }
-        ];
-        onChange = "${pkgs.my.nr}/bin/nr go";
-      };
-    }
-    (
-      mkIf config.profiles.fish.enable {
-        xdg.configFile."fish/conf.d/go.fish".source = ./assets/fish/go.fish;
-        programs.fish.shellAbbrs = {
-          got = "go test -v";
-          gob = "go build -v";
-          gol = "golangci-lint run";
-        };
-      }
-    )
-  ]);
-}
modules/profiles/dev.haskell.nix
@@ -1,21 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.haskell;
-in
-{
-  options = {
-    profiles.dev.haskell = {
-      enable = mkEnableOption "Enable haskell development profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.dev.enable = true;
-    home.packages = with pkgs; [
-      ghc
-      stack
-      hlint
-    ];
-  };
-}
modules/profiles/dev.java.nix
@@ -1,33 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.java;
-in
-{
-  options = {
-    profiles.dev.java = {
-      enable = mkEnableOption "Enable java development profile";
-      javaPackage = mkOption {
-        default = pkgs.jdk;
-        description = "Java package to use";
-        type = types.package;
-      };
-      idea = mkEnableOption "Install intellij idea";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      profiles.dev.enable = true;
-      home.packages = with pkgs; [
-        cfg.javaPackage
-        gradle
-      ];
-    }
-    (
-      mkIf cfg.idea {
-        home.packages = with pkgs; [ jetbrains.idea-ultimate ];
-      }
-    )
-  ]);
-}
modules/profiles/dev.js.nix
@@ -1,31 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.js;
-in
-{
-  options = {
-    profiles.dev.js = {
-      enable = mkEnableOption "Enable js development profile";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.file.".npmrc".text = ''
-        prefix = ${config.home.homeDirectory}/.local/npm
-      '';
-      home.packages = with pkgs; [
-        nodejs-10_x
-        yarn
-      ];
-    }
-    (
-      mkIf config.profiles.fish.enable {
-        xdg.configFile."fish/conf.d/js.fish".text = ''
-          set -gx PATH ${config.home.homeDirectory}/.local/npm/bin $PATH
-        '';
-      }
-    )
-  ]);
-}
modules/profiles/dev.lisp.nix
@@ -1,19 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.lisp;
-in
-{
-  options = {
-    profiles.dev.lisp = {
-      enable = mkEnableOption "Enable lisp development profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    home-packages = with pkgs; [
-      sbcl
-      asdf
-    ];
-  };
-}
modules/profiles/dev.nix
@@ -7,48 +7,21 @@ in
 {
   options = {
     profiles.dev = {
-      enable = mkEnableOption "Enable development profile";
+      enable = mkOption {
+        default = false;
+        description = "Enable dev profile";
+        type = types.bool;
+      };
     };
   };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      profiles.git.enable = true;
-      profiles.emacs.enable = true;
-      home.file.".ignore".text = ''
-        *.swp
-        *~
-        **/VENDOR-LICENSE
-      '';
-      xdg.configFile."mr".source = ./assets/lib.mr;
-      home.file."src/.mrconfig".source = ./assets/src.mr;
-      home.file."src/knative.dev/.mrconfig".source = ./assets/src.knative.dev.mr;
-      home.file."src/github.com/.mrconfig".source = ./assets/src.github.mr;
-      home.file."src/github.com/openshift/.mrconfig".source = ./assets/src.github.openshift.mr;
-      home.file."src/pkgs.devel.redhat.com/.mrconfig".source = ./assets/src.pkgs.devel.redhat.mr;
-      home.packages = with pkgs;
-        [
-          binutils
-          cmake
-          fswatch
-          gnumake
-          jq
-          mercurial
-          shfmt
-        ];
-      xdg.configFile."nr/dev" = {
-        text = builtins.toJSON [
-          { cmd = "yq"; }
-          { cmd = "lnav"; }
-          { cmd = "miniserve"; }
-          { cmd = "licensor"; }
-          { cmd = "nix-review"; }
-          { cmd = "yamllint"; pkg = "python37Packages.yamllint"; }
-          { cmd = "nix-prefetch-git"; pkg = "nix-prefetch-scripts"; }
-          { cmd = "nix-prefetch-hg"; pkg = "nix-prefetch-scripts"; }
-          { cmd = "http"; pkg = "httpie"; }
-        ];
-        onChange = "${pkgs.my.nr}/bin/nr dev";
-      };
-    }
-  ]);
+  config = mkIf cfg.enable {
+    profiles.git.enable = true;
+    environment.systemPackages = with pkgs; [
+      git
+      tig
+      grc
+      ripgrep
+      gnumake
+    ];
+  };
 }
modules/profiles/dev.nixos.nix
@@ -1,27 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev;
-in
-{
-  options = {
-    profiles.dev = {
-      enable = mkOption {
-        default = false;
-        description = "Enable dev profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.git.enable = true;
-    environment.systemPackages = with pkgs; [
-      git
-      tig
-      grc
-      ripgrep
-      gnumake
-    ];
-  };
-}
modules/profiles/dev.python.nix
@@ -1,23 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.python;
-in
-{
-  options = {
-    profiles.dev.python = {
-      enable = mkEnableOption "Enable python development profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.dev.enable = true;
-    home.packages = with pkgs; [
-      python3
-      python36Packages.virtualenv
-      python36Packages.pip-tools
-      python36Packages.tox
-      pipenv
-    ];
-  };
-}
modules/profiles/dev.rust.nix
@@ -1,29 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.dev.rust;
-in
-{
-  options = {
-    profiles.dev.rust = {
-      enable = mkEnableOption "Enable rust development profile";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      profiles.dev.enable = true;
-      home.packages = with pkgs; [
-        gcc
-        rustup
-      ];
-    }
-    (
-      mkIf config.profiles.emacs.enable {
-        home.packages = with pkgs; [
-          rustracer
-        ];
-      }
-    )
-  ]);
-}
modules/profiles/direnv.nix
@@ -1,49 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.profiles.direnv;
-in
-{
-  options = {
-    profiles.direnv = {
-      enable = mkOption {
-        default = true;
-        description = "Enable direnv profile and configuration";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      programs.direnv = {
-        enable = true;
-        config = {
-          whitelist = {
-            prefix = [
-              "${config.home.homeDirectory}/src/github.com/knative"
-              "${config.home.homeDirectory}/src/github.com/openshift"
-              "${config.home.homeDirectory}/src/github.com/tektoncd"
-              "${config.home.homeDirectory}/src/github.com/vdemeester"
-            ];
-          };
-        };
-      };
-    }
-    (
-      mkIf config.profiles.fish.enable {
-        programs.direnv.enableFishIntegration = true;
-      }
-    )
-    (
-      mkIf config.profiles.zsh.enable {
-        programs.direnv.enableZshIntegration = true;
-      }
-    )
-    (
-      mkIf config.profiles.bash.enable {
-        programs.direnv.enableBashIntegration = true;
-      }
-    )
-  ]);
-}
modules/profiles/docker.nix
@@ -7,25 +7,37 @@ in
 {
   options = {
     profiles.docker = {
-      enable = mkEnableOption "Enable docker profile";
+      enable = mkOption {
+        default = false;
+        description = "Enable docker profile";
+        type = types.bool;
+      };
+      package = mkOption {
+        default = pkgs.docker-edge;
+        description = "docker package to be used";
+        type = types.package;
+      };
+      runcPackage = mkOption {
+        default = pkgs.runc;
+        description = "runc package to be used";
+        type = types.package;
+      };
     };
   };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.packages = with pkgs; [
-        docker
-        docker-machine
-        docker-machine-kvm
-        docker-machine-kvm2
-        docker-compose
-      ];
-    }
-    (
-      mkIf config.profiles.fish.enable {
-        xdg.configFile."fish/conf.d/docker.fish".text = ''
-          # set -gx DOCKER_BUILDKIT 1
-        '';
-      }
-    )
-  ]);
+  config = mkIf cfg.enable {
+    profiles.containerd.enable = true;
+    virtualisation = {
+      docker = {
+        enable = true;
+        package = cfg.package;
+        liveRestore = false;
+        storageDriver = "overlay2";
+        extraOptions = "--experimental --add-runtime docker-runc=${cfg.runcPackage}/bin/runc --default-runtime=docker-runc --containerd=/run/containerd/containerd.sock";
+      };
+    };
+    environment.etc."docker/daemon.json".text = ''
+      {"features":{"buildkit": true}, "insecure-registries": ["172.30.0.0/16", "192.168.12.0/16", "massimo.home:5000", "r.svc.home:5000", "r.svc.home" ]}
+    '';
+    networking.firewall.trustedInterfaces = [ "docker0" ];
+  };
 }
modules/profiles/docker.nixos.nix
@@ -1,43 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.docker;
-in
-{
-  options = {
-    profiles.docker = {
-      enable = mkOption {
-        default = false;
-        description = "Enable docker profile";
-        type = types.bool;
-      };
-      package = mkOption {
-        default = pkgs.docker-edge;
-        description = "docker package to be used";
-        type = types.package;
-      };
-      runcPackage = mkOption {
-        default = pkgs.runc;
-        description = "runc package to be used";
-        type = types.package;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    profiles.containerd.enable = true;
-    virtualisation = {
-      docker = {
-        enable = true;
-        package = cfg.package;
-        liveRestore = false;
-        storageDriver = "overlay2";
-        extraOptions = "--experimental --add-runtime docker-runc=${cfg.runcPackage}/bin/runc --default-runtime=docker-runc --containerd=/run/containerd/containerd.sock";
-      };
-    };
-    environment.etc."docker/daemon.json".text = ''
-      {"features":{"buildkit": true}, "insecure-registries": ["172.30.0.0/16", "192.168.12.0/16", "massimo.home:5000", "r.svc.home:5000", "r.svc.home" ]}
-    '';
-    networking.firewall.trustedInterfaces = [ "docker0" ];
-  };
-}
modules/profiles/emacs.nix
@@ -1,189 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.emacs;
-  capture = pkgs.writeScriptBin "capture" ''
-    #!${pkgs.stdenv.shell}
-    emacsclient -s /run/user/1000/emacs/org -n -F '((name . "capture") (width . 150) (height . 90))' -e '(org-capture)'
-  '';
-  myEmacs = pkgs.emacs27.override { inherit (pkgs) imagemagick; withXwidgets = cfg.withXwidgets; };
-in
-{
-  options = {
-    profiles.emacs = {
-      enable = mkEnableOption "Enable emacs profile";
-      capture = mkEnableOption "Enable capture script(s)";
-      daemonService = mkOption {
-        default = true;
-        description = "Enable emacs daemon service";
-        type = types.bool;
-      };
-      withXwidgets = mkEnableOption "Enable Xwidgets in emacs build";
-      texlive = mkOption {
-        default = true;
-        description = "Enable Texlive";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.file.".local/share/applications/org-protocol.desktop".source = ./assets/xorg/org-protocol.desktop;
-      home.file.".local/share/applications/ec.desktop".source = ./assets/xorg/ec.desktop;
-      home.file.".local/share/applications/capture.desktop".source = ./assets/xorg/capture.desktop;
-      home.packages = with pkgs; [
-        ditaa
-        graphviz
-        pandoc
-        zip
-        hunspell
-        hunspellDicts.en_US-large
-        hunspellDicts.en_GB-ize
-        hunspellDicts.fr-any
-        nixpkgs-fmt
-      ];
-      home.sessionVariables = {
-        EDITOR = "et";
-        ALTERNATE_EDITOR = "et";
-      };
-      programs.emacs = {
-        enable = true;
-        package = myEmacs;
-        extraPackages = epkgs: with epkgs; [
-          ace-window
-          aggressive-indent
-          async
-          avy
-          bbdb
-          beginend
-          pkgs.bookmark-plus
-          company
-          company-emoji
-          company-go
-          dash
-          delight
-          dired-collapse
-          dired-git-info
-          dired-quick-sort
-          dired-narrow
-          dired-rsync
-          pkgs.dired-plus
-          direnv
-          dockerfile-mode
-          easy-kill
-          esup
-          expand-region
-          flycheck
-          flycheck-golangci-lint
-          git-annex
-          git-commit
-          gitattributes-mode
-          gitconfig-mode
-          gitignore-mode
-          github-review
-          goto-last-change
-          hardhat
-          helpful
-          highlight
-          highlight-indentation
-          highlight-numbers
-          ibuffer-vc
-          icomplete-vertical
-          iedit
-          json-mode
-          markdown-mode
-          mpdel
-          multiple-cursors
-          nixpkgs-fmt
-          no-littering
-          ob-async
-          ob-go
-          ob-http
-          orderless
-          orgit
-          org-plus-contrib
-          org-capture-pop-frame
-          org-gcal
-          org-ql
-          org-ref
-          org-super-agenda
-          org-web-tools
-          ox-pandoc
-          pandoc-mode
-          projectile
-          projectile-ripgrep
-          pdf-tools
-          python-mode
-          rainbow-delimiters
-          rainbow-mode
-          region-bindings-mode
-          ripgrep
-          rg
-          try
-          visual-fill-column
-          visual-regexp
-          web-mode
-          wgrep
-          with-editor
-          xterm-color
-          yaml-mode
-          darkroom
-          eshell-prompt-extras
-          esh-autosuggest
-          flimenu
-          forge
-          go-mode
-          magit
-          magit-annex
-          magit-popup
-          magit-todos
-          minions
-          moody
-          mwim
-          nix-buffer
-          nix-mode
-          org-super-agenda
-          org-tree-slide
-          shr-tag-pre-highlight
-          ssh-config-mode
-          smartparens
-          symbol-overlay
-          undo-tree
-          use-package
-          # Highly experimental
-          vterm
-          gotest
-        ];
-      };
-    }
-    (
-      mkIf config.profiles.emacs.capture {
-        home.packages = with pkgs; [ wmctrl capture ];
-      }
-    )
-    (
-      mkIf config.services.gpg-agent.enable {
-        #services.gpg-agent.extraConfig = ''
-        #  allow-emacs-pinentry
-        #'';
-      }
-    )
-    (
-      mkIf cfg.texlive {
-        home.packages = with pkgs; [ texlive.combined.scheme-full ];
-      }
-    )
-    (
-      mkIf cfg.daemonService {
-        services.emacs-server = {
-          enable = true;
-          package = myEmacs;
-          name = "org";
-          shell = pkgs.zsh + "/bin/zsh -i -c";
-          extraOptions = "--dump-file=${config.home.homeDirectory}/.config/emacs/emacs.pdmp";
-        };
-      }
-    )
-  ]);
-}
modules/profiles/finances.nix
@@ -1,16 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.finances;
-in
-{
-  options = {
-    profiles.finances = {
-      enable = mkEnableOption "Enable fincances profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    home.packages = with pkgs; [ ledger ];
-  };
-}
modules/profiles/fish.nix
@@ -9,7 +9,7 @@ in
     profiles.fish = {
       enable = mkOption {
         default = false;
-        description = "Enable fish program and configurations";
+        description = "Enable fish profile";
         type = types.bool;
       };
     };
@@ -17,41 +17,12 @@ in
   config = mkIf cfg.enable {
     programs.fish = {
       enable = true;
-      shellAliases = import ./aliases.shell.nix;
-      shellInit = ''
-        # emacs ansi-term support
-        if test -n "$EMACS"
-          set -x TERM eterm-color
-
-          # this function may be required
-          function fish_title
-            true
-          end
-        end
+      promptInit = ''
+        source /etc/fish/functions/fish_prompt.fish
+        source /etc/fish/functions/fish_right_prompt.fish
       '';
     };
-    xdg.configFile."fish/conf.d/sudope.fish".source = ./assets/fish/sudope.fish;
-    xdg.configFile."fish/functions/sudope.fish".source = ./assets/fish/sudope.function.fish;
-    xdg.configFile."fish/functions/fish_prompt.fish".source = ./assets/fish/fish_prompt.fish;
-    xdg.configFile."fish/functions/fish_right_prompt.fish".source = ./assets/fish/fish_right_prompt.fish;
-    xdg.configFile."nr/default" = {
-      text = builtins.toJSON [
-        { cmd = "ncdu"; }
-        { cmd = "sshfs"; }
-        { cmd = "gotop"; }
-        { cmd = "pandoc"; }
-        { cmd = "nix-review"; }
-        { cmd = "lspci"; pkg = "pciutils"; }
-        { cmd = "lsusb"; pkg = "usbutils"; }
-        { cmd = "9"; pkg = "plan9port"; }
-        { cmd = "wakeonlan"; pkg = "python36Packages.wakeonlan"; }
-        { cmd = "beet"; pkg = "beets"; }
-        { cmd = "http"; pkg = "httpie"; }
-        { cmd = "nix-prefetch-git"; pkg = "nix-prefetch-scripts"; }
-        { cmd = "nix-prefetch-hg"; pkg = "nix-prefetch-scripts"; }
-        { cmd = "op"; pkg = "_1password"; chan = "unstable"; }
-      ];
-      onChange = "${pkgs.my.nr}/bin/nr default";
-    };
+    environment.etc."fish/functions/fish_prompt.fish".source = ./assets/fish/fish_prompt.fish;
+    environment.etc."fish/functions/fish_right_prompt.fish".source = ./assets/fish/fish_right_prompt.fish;
   };
 }
modules/profiles/fish.nixos.nix
@@ -1,28 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.fish;
-in
-{
-  options = {
-    profiles.fish = {
-      enable = mkOption {
-        default = false;
-        description = "Enable fish profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    programs.fish = {
-      enable = true;
-      promptInit = ''
-        source /etc/fish/functions/fish_prompt.fish
-        source /etc/fish/functions/fish_right_prompt.fish
-      '';
-    };
-    environment.etc."fish/functions/fish_prompt.fish".source = ./assets/fish/fish_prompt.fish;
-    environment.etc."fish/functions/fish_right_prompt.fish".source = ./assets/fish/fish_right_prompt.fish;
-  };
-}
modules/profiles/gaming.nix
@@ -7,13 +7,24 @@ in
 {
   options = {
     profiles.gaming = {
-      enable = mkEnableOption "Enable gaming profile";
+      enable = mkOption {
+        default = false;
+        description = "Enable gaming profile";
+        type = types.bool;
+      };
     };
   };
   config = mkIf cfg.enable {
-    home.packages = with pkgs; [
-      steam
-      discord
-    ];
+    hardware = {
+      opengl = {
+        driSupport32Bit = true;
+      };
+    };
+    services.udev.extraRules = ''
+      # Steam controller
+      SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
+      KERNEL=="uinput", MODE="0660", GROUP="users", OPTIONS+="static_node=uinput"
+    '';
+    environment.systemPackages = with pkgs; [ steam ];
   };
 }
modules/profiles/gaming.nixos.nix
@@ -1,30 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.gaming;
-in
-{
-  options = {
-    profiles.gaming = {
-      enable = mkOption {
-        default = false;
-        description = "Enable gaming profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    hardware = {
-      opengl = {
-        driSupport32Bit = true;
-      };
-    };
-    services.udev.extraRules = ''
-      # Steam controller
-      SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
-      KERNEL=="uinput", MODE="0660", GROUP="users", OPTIONS+="static_node=uinput"
-    '';
-    environment.systemPackages = with pkgs; [ steam ];
-  };
-}
modules/profiles/gcloud.nix
@@ -1,16 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.cloud.google;
-in
-{
-  options = {
-    profiles.cloud.google = {
-      enable = mkEnableOption "Enable google cloud profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    home.packages = with pkgs; [ google-cloud-sdk gcsfuse ]; #google-compute-engine
-  };
-}
modules/profiles/git.nix
@@ -3,219 +3,72 @@
 with lib;
 let
   cfg = config.profiles.git;
-  ca-bundle_crt = "/etc/ssl/certs/ca-bundle.crt";
 in
 {
   options = {
     profiles.git = {
-      enable = mkEnableOption "Enable git profile";
+      enable = mkOption {
+        default = false;
+        description = "Enable git profile";
+        type = types.bool;
+      };
     };
   };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.packages = with pkgs; [
-        gist
-        git-lfs
-        gitAndTools.git-annex
-        gitAndTools.hub
-        gitAndTools.gh
-        mr
-        my.prm
-        my.ape
-      ];
-      programs.git = {
-        enable = true;
-        package = pkgs.gitAndTools.gitFull;
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; [
+      gitAndTools.gitFull
+      gitAndTools.git-annex
+      gitAndTools.git-extras
+    ];
+    environment.etc."gitconfig" = rec {
+      text = ''
+        [alias]
+            co = checkout
+            st = status
+            ci = commit --signoff
+            ca = commit --amend
+            b = branc --color -v
+            br = branch
+            unstage = reset HEAD
+            lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
+            lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes
+            lol = log --pretty=oneline --abbrev-commit --graph --decorate
+            conflicts = !git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR
+            resolve = !git ls-files --unmerged | cut -c51- | sort -u | xargs git add
+        [color]
+          branch = auto
+          diff = auto
+          status = auto
+        [color "branch"]
+          current = cyan reverse
+          local = cyan
+          remote = green
+        [color "diff"]
+          meta = white reverse
+          frag = magenta reverse
+          old = red
+          new = green
+        [color "status"]
+          added = green
+          changed = yellow
+          untracked = red
+        [core]
+          #excludesfile = ~/.gitignore.global
+        [push]
+          default = matching
+        [merge]
+            tool = vimdiff
 
-        userName = "Vincent Demeester";
-        userEmail = "vincent@sbr.pm";
+        [user]
+            name = Vincent Demeester
+            email = vincent@sbr.pm
 
-        signing = {
-          key = "6EB699A3";
-          signByDefault = false;
-        };
+        [http]
+                cookiefile = /home/vincent/.gitcookies
 
-        aliases = {
-          b = "branch --color -v";
-          br = "branch";
-          ci = "commit --signoff";
-          co = "checkout";
-          conflicts = "!git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR";
-          ca = "commit --amend";
-          wdiff = "diff --color-words";
-          unstage = "reset HEAD";
-          lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative";
-          lga = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes";
-          lol = "log --pretty=oneline --abbrev-commit --graph --decorate";
-          ls-ignored = "ls-files --exclude-standard --ignored --others";
-          resolve = "!git ls-files --unmerged | cut -c51- | sort -u | xargs git add";
-          su = "submodule update --init --recursive";
-          st = "status";
-          w = "status -sb";
-        };
-        attributes = [
-          "*.org   diff=org"
-        ];
-        extraConfig = {
-          core = {
-            editor = "${pkgs.emacs}/bin/emacsclient -t";
-          };
-          color = {
-            status = "auto";
-            diff = "auto";
-            branch = "auto";
-            interactive = "auto";
-            ui = "auto";
-            sh = "auto";
-          };
-          "color.branch" = {
-            current = "cyan reverse";
-            local = "cyan";
-            remote = "green";
-          };
-          "color.diff" = {
-            current = "white reverse";
-            frag = "magenta reverse";
-            old = "red";
-            new = "green";
-          };
-          "color.status" = {
-            added = "green";
-            changed = "yellow";
-            untracked = "red";
-          };
-          "diff.org" = {
-            xfuncname = "\"^\\\\*+.*\"";
-          };
-          forge = {
-            remote = "upstream";
-          };
-          hub = {
-            protocol = true;
-          };
-          pull = {
-            rebase = true;
-          };
-          push = {
-            default = "upstream";
-            recurseSubmodules = "check";
-          };
-          rebase = {
-            autosquash = true;
-          };
-          advice = {
-            statusHints = false;
-            pushNonFastForward = false;
-          };
-          http = {
-            sslCAinfo = "${ca-bundle_crt}";
-            sslverify = true;
-          };
-          github.user = "vdemeester";
-          "filter \"lfs\"" = {
-            clean = "${pkgs.git-lfs}/bin/git-lfs clean -- %f";
-            smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
-            required = true;
-          };
-          "url \"git@github.com:\"".insteadOf = "git://github.com/";
-        };
-
-        includes = [
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/kubernetes/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/k8s.io/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/knative/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/tektoncd/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir/i:${config.home.homeDirectory}/src/github.com/google**";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/k8s.io/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/minishift/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/operator-framework/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/openshift**";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/redhat**";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/github.com/containers/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/gitlab.cee.redhat.com/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/gitlab.corp.redhat.com/";
-          }
-          {
-            path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-            condition = "gitdir:${config.home.homeDirectory}/src/pkg.devel.redhat.com/";
-          }
-        ];
-        ignores = [
-          "*.elc"
-          "*.vo"
-          "*.aux"
-          "*.v.d"
-          "*.o"
-          "*.a"
-          "*.la"
-          "*.so"
-          "*.dylib"
-          "*.pyc"
-          "*.pyo"
-          ".idea"
-          "*.iml"
-          "*~"
-          "#*#"
-          ".makefile"
-          ".clean"
-        ];
-      };
-      xdg.configFile."git/config.d/redhat.gitconfig".source = ./assets/git/redhat.gitconfig;
-      xdg.configFile."nr/git" = {
-        text = builtins.toJSON [
-          { cmd = "tig"; }
-          { cmd = "grv"; pkg = "gitAndTools.grv"; }
-          { cmd = "git-appraise"; pkg = "gitAndTools.git-appraise"; chan = "unstable"; }
-        ];
-        onChange = "${pkgs.my.nr}/bin/nr git";
-      };
-    }
-    (
-      mkIf config.profiles.fish.enable {
-        programs.fish.shellAbbrs = {
-          gs = "git status";
-          gb = "git b";
-          gfr = "git fetch -p --all;and git rebase -S --autostash";
-        };
-      }
-    )
-  ]);
+        [url "git@github.com:"]
+            pushInsteadOf = git://github.com/
+      '';
+    };
+  };
 }
modules/profiles/git.nixos.nix
@@ -1,74 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.git;
-in
-{
-  options = {
-    profiles.git = {
-      enable = mkOption {
-        default = false;
-        description = "Enable git profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    environment.systemPackages = with pkgs; [
-      gitAndTools.gitFull
-      gitAndTools.git-annex
-      gitAndTools.git-extras
-    ];
-    environment.etc."gitconfig" = rec {
-      text = ''
-        [alias]
-            co = checkout
-            st = status
-            ci = commit --signoff
-            ca = commit --amend
-            b = branc --color -v
-            br = branch
-            unstage = reset HEAD
-            lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
-            lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes
-            lol = log --pretty=oneline --abbrev-commit --graph --decorate
-            conflicts = !git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR
-            resolve = !git ls-files --unmerged | cut -c51- | sort -u | xargs git add
-        [color]
-          branch = auto
-          diff = auto
-          status = auto
-        [color "branch"]
-          current = cyan reverse
-          local = cyan
-          remote = green
-        [color "diff"]
-          meta = white reverse
-          frag = magenta reverse
-          old = red
-          new = green
-        [color "status"]
-          added = green
-          changed = yellow
-          untracked = red
-        [core]
-          #excludesfile = ~/.gitignore.global
-        [push]
-          default = matching
-        [merge]
-            tool = vimdiff
-
-        [user]
-            name = Vincent Demeester
-            email = vincent@sbr.pm
-
-        [http]
-                cookiefile = /home/vincent/.gitcookies
-
-        [url "git@github.com:"]
-            pushInsteadOf = git://github.com/
-      '';
-    };
-  };
-}
modules/profiles/gpg.nix
@@ -1,35 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.gpg;
-in
-{
-  options = {
-    profiles.gpg = {
-      enable = mkOption {
-        default = true;
-        description = "Enable gpg profile and configuration";
-        type = types.bool;
-      };
-      pinentry = mkOption {
-        default = "${pkgs.pinentry}/bin/pinentry";
-        description = "Path to pinentry";
-        type = types.str;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    home.packages = with pkgs; [ gnupg ];
-    services = {
-      gpg-agent = {
-        enable = true;
-        enableSshSupport = true;
-        defaultCacheTtlSsh = 7200;
-        extraConfig = ''
-          pinentry-program ${cfg.pinentry}
-        '';
-      };
-    };
-  };
-}
modules/profiles/home.nixos.nix → modules/profiles/home.nix
File renamed without changes
modules/profiles/i18n.nixos.nix → modules/profiles/i18n.nix
File renamed without changes
modules/profiles/i3.nix
@@ -1,363 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.i3;
-  powermenu = pkgs.writeScript "powermenu.sh" ''
-    #!${pkgs.stdenv.shell}
-    MENU="$(${pkgs.rofi}/bin/rofi -sep "|" -dmenu -i -p 'System' -location 3 -xoffset -10 -yoffset 32 -width 20 -hide-scrollbar -line-padding 4 -padding 20 -lines 5 <<< "Suspend|Hibernate|Reboot|Shutdown")"
-    case "$MENU" in
-      *Suspend) systemctl suspend;;
-      *Hibernate) systemctl hibernate;;
-      *Reboot) systemctl reboot ;;
-      *Shutdown) systemctl -i poweroff
-    esac
-  '';
-in
-{
-  options = {
-    profiles.i3 = {
-      enable = mkEnableOption "Enable i3 profile";
-      lockCmd = mkOption {
-        default = "${pkgs.i3lock-color}/bin/i3lock-color -c 666666";
-        description = "Lock command to use";
-        type = types.str;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    home.packages = with pkgs; [
-      alacritty
-      arandr
-      i3lock-color
-      libnotify
-      maim
-      slop
-    ];
-    programs.rofi.enable = true;
-    services = {
-      dunst = {
-        enable = true;
-        settings = {
-          global = {
-            geometry = "500x5-10+10";
-            follow = "keyboard";
-            frame_color = "#cccccc";
-            font = "Fira Code 10";
-            indicate_hidden = "yes";
-            separator_height = 1;
-            padding = 8;
-            horizontal_padding = 8;
-            frame_width = 2;
-            sort = "yes";
-            markup = "full";
-            format = "<b>%s</b>\n%b";
-            ignore_newline = "no";
-            stack_duplicates = true;
-            show_indicators = "yes";
-          };
-        };
-      };
-      udiskie.enable = true;
-      network-manager-applet.enable = true;
-      screen-locker = {
-        enable = true;
-        lockCmd = cfg.lockCmd;
-        inactiveInterval = 60;
-      };
-      random-background = {
-        enable = true;
-        imageDirectory = "${config.home.homeDirectory}/desktop/pictures/walls";
-        interval = "5h";
-      };
-    };
-    xdg.configFile."alacritty/alacritty.yml".source = ./assets/xorg/alacritty.yml;
-    xsession.windowManager.i3 = {
-      package = pkgs.i3-gaps;
-      enable = true;
-      config = {
-        fonts = [ "Fira Code 10" ];
-        focus = {
-          followMouse = false;
-        };
-        window = {
-          titlebar = false;
-          border = 1;
-          hideEdgeBorders = "both";
-        };
-        keybindings = {
-          "Mod4+Return" = "exec alacritty";
-        };
-        gaps = {
-          inner = 0;
-          outer = 0;
-        };
-        keycodebindings = {
-          "Mod4+Shift+24" = "kill";
-          "Mod4+33" = "exec \"${pkgs.rofi}/bin/rofi -show run -modi 'run,window' -kb-row-select 'Tab' -kb-row-tab '' -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'";
-          # focus window
-          "Mod4+44" = "focus left";
-          "Mod4+45" = "focus down";
-          "Mod4+46" = "focus up";
-          "Mod4+47" = "focus right";
-          "Mod4+38" = "focus parent";
-          # move focused window
-          "Mod4+Shift+44" = "move left";
-          "Mod4+Shift+45" = "move down";
-          "Mod4+Shift+46" = "move up";
-          "Mod4+Shift+47" = "move right";
-          # resize
-          "Mod4+Control+44" = "resize shrink width 5px or 5ppt";
-          "Mod4+Control+45" = "resize grow width 5px or 5ppt";
-          "Mod4+Control+46" = "resize shrink height 5px or 5ppt";
-          "Mod4+Control+47" = "resize grow height 5px or 5ppt";
-          # gaps
-          "Mod4+Mod1+44" = "gaps inner current plus 5";
-          "Mod4+Mod1+45" = "gaps inner current minus 5";
-          "Mod4+Mod1+46" = "gaps outer current plus 5";
-          "Mod4+Mod1+47" = "gaps outer current minus 5";
-          # Split
-          "Mod4+43" = "split h";
-          "Mod4+55" = "split v";
-          # Fullscreen
-          "Mod4+41" = "fullscreen toggle";
-          # Change container layout
-          "Mod4+39" = "layout stacking";
-          "Mod4+25" = "layout tabbed";
-          "Mod4+26" = "layout toggle split";
-          # Manage floating
-          "Mod4+Shift+61" = "floating toggle";
-          "Mod4+61" = "focus mode_toggle";
-          # manage workspace
-          "Mod4+113" = "workspace prev_on_output";
-          "Mod4+114" = "workspace next_on_output";
-          # manage output
-          "Mod4+Shift+113" = "focus output left";
-          "Mod4+Shift+116" = "focus output down";
-          "Mod4+Shift+111" = "focus output up";
-          "Mod4+Shift+114" = "focus output right";
-          # Custom keybinding
-          "Mod4+Shift+32" = "exec ${cfg.lockCmd}";
-          "Mod4+Shift+39" = "exec ~/.screenlayout/home-work.sh && systemctl --user start random-background.service";
-          "Mod4+24" = "border toggle";
-        };
-        modes = { };
-        bars = [
-          {
-            mode = "hide";
-            position = "bottom";
-            trayOutput = "primary";
-            statusCommand = "${pkgs.i3status}/bin/i3status";
-            fonts = [ "Fira Code 12" ];
-          }
-        ];
-      };
-      extraConfig = ''
-          set $mod Mod4
-
-        # Use Mouse+$mod to drag floating windows to their wanted position
-        floating_modifier $mod
-
-        set $WS0 0
-        set $WS1 1
-        set $WS2 2
-        set $WS3 3
-        set $WS4 4
-        set $WS5 5
-        set $WS6 6
-        set $WS7 7
-        set $WS8 8
-        set $WS9 9
-
-        # switch to workspace
-        bindcode $mod+10 workspace $WS1
-        bindcode $mod+11 workspace $WS2
-        bindcode $mod+12 workspace $WS3
-        bindcode $mod+13 workspace $WS4
-        bindcode $mod+14 workspace $WS5
-        bindcode $mod+15 workspace $WS6
-        bindcode $mod+16 workspace $WS7
-        bindcode $mod+17 workspace $WS8
-        bindcode $mod+18 workspace $WS9
-        bindcode $mod+19 workspace $WS0
-
-        # move focused container to workspace
-        bindcode $mod+Shift+10 move container to workspace $WS1
-        bindcode $mod+Shift+11 move container to workspace $WS2
-        bindcode $mod+Shift+12 move container to workspace $WS3
-        bindcode $mod+Shift+13 move container to workspace $WS4
-        bindcode $mod+Shift+14 move container to workspace $WS5
-        bindcode $mod+Shift+15 move container to workspace $WS6
-        bindcode $mod+Shift+16 move container to workspace $WS7
-        bindcode $mod+Shift+17 move container to workspace $WS8
-        bindcode $mod+Shift+18 move container to workspace $WS9
-          bindcode $mod+Shift+19 move container to workspace $WS0
-
-        assign [class="Firefox" window_role="browser"] → $WS1
-        assign [class="Google-chrome" window_role="browser"] → $WS1
-
-        ## quick terminal (tmux)
-        exec --no-startup-id alacritty --title metask --class metask --command tmux
-        for_window [instance="metask"] floating enable;
-        for_window [instance="metask"] move scratchpad; [instance="metask"] scratchpad show; move position center; move scratchpad
-        bindcode $mod+49 [instance="metask"] scratchpad show
-
-        for_window [title="capture"] floating enable;
-
-        bindsym XF86MonBrightnessUp exec "xbacklight -inc 10"
-        bindsym XF86MonBrightnessDown exec "xbacklight -dec 10"
-        bindsym shift+XF86MonBrightnessUp exec "xbacklight -inc 1"
-        bindsym shift+XF86MonBrightnessDown exec "xbacklight -dec 1"
-        bindsym XF86AudioLowerVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ -5%"
-        bindsym XF86AudioRaiseVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ +5%"
-        bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle"
-        bindsym XF86AudioMicMute exec "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
-        bindsym XF86AudioPlay exec "playerctl play-pause"
-        bindsym XF86AudioNext exec "playerctl next"
-        bindsym XF86AudioPrev exec "playerctl previous"
-
-        # reload the configuration file
-        bindsym $mod+Shift+x reload
-        # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
-        bindsym $mod+Shift+o restart
-        # exit i3 (logs you out of your X session)
-        bindsym $mod+Shift+p exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3?' -b 'Yes, exit i3' 'i3-msg exit'"
-        # powermenu
-        bindsym $mod+F12 exec ${powermenu}
-
-        # screen management
-        bindsym $mod+F11 exec "autorandr -c on-the-move"
-        bindsym $mod+Shift+F11 exec "arandr"
-        bindsym $mod+Control+F11 exec "autorandr -c home1"
-
-        # move workspace to output
-        set $workspace_move Move workspace to output : [l]eft [r]ight [d]own [u]p
-
-        mode "$workspace_move" {
-        bindsym left move workspace to output left
-          bindsym l move workspace to output left
-
-        bindsym right move workspace to output right
-          bindsym r move workspace to output right
-
-        bindsym down move workspace to output down
-          bindsym d move workspace to output down
-
-        bindsym up move workspace to output up
-          bindsym u move workspace to output up
-
-        bindsym Escape mode "default"
-        bindsym Return mode "default"
-          }
-
-          bindsym $mod+m mode "$workspace_move"
-
-        # resize window (you can also use the mouse for that)
-        mode "resize" {
-          # These bindings trigger as soon as you enter the resize mode
-
-        # Pressing left will shrink the window’s width.
-        # Pressing right will grow the window’s width.
-        # Pressing up will shrink the window’s height.
-        # Pressing down will grow the window’s height.
-        bindsym t resize shrink width 10 px or 10 ppt
-        bindsym s resize grow height 10 px or 10 ppt
-        bindsym r resize shrink height 10 px or 10 ppt
-        bindsym n resize grow width 10 px or 10 ppt
-
-        # same bindings, but for the arrow keys
-        bindsym Left resize shrink width 10 px or 10 ppt
-        bindsym Down resize grow height 10 px or 10 ppt
-        bindsym Up resize shrink height 10 px or 10 ppt
-        bindsym Right resize grow width 10 px or 10 ppt
-
-        # back to normal: Enter or Escape
-        bindsym Return mode "default"
-        bindsym Escape mode "default"
-          }
-
-        bindsym $mod+o mode "resize"
-      '';
-    };
-    xdg.configFile."i3status/config".text = ''
-      # i3status configuration file.
-      # see "man i3status" for documentation.
-
-      # It is important that this file is edited as UTF-8.
-      # The following line should contain a sharp s:
-      # ß
-      # If the above line is not correctly displayed, fix your editor first!
-
-      general {
-        colors = true
-        interval = 2
-      }
-
-      #order += "disk /"
-      #order += "run_watch 🐳"
-      order += "path_exists 🔑"
-      #order += "wireless _first_"
-      #order += "ethernet _first_"
-      #order += "volume master"
-      order += "battery 0"
-      order += "cpu_temperature 0"
-      order += "load"
-      order += "tztime local"
-
-      wireless _first_ {
-        format_up = "W: (%quality at %essid) %ip"
-        format_down = "W: down"
-      }
-
-      ethernet _first_ {
-        # if you use %speed, i3status requires root privileges
-        format_up = "E: %ip (%speed)"
-        format_down = "E: down"
-      }
-
-      battery 0 {
-        format = "%status %percentage %remaining"
-        format_down = "No battery"
-        status_chr = "⚇"
-        status_bat = "⚡"
-        status_full = "☻"
-        status_unk = "?"
-        path = "/sys/class/power_supply/BAT%d/uevent"
-        low_threshold = 10
-      }
-
-      run_watch 🐳 {
-        pidfile = "/run/docker.pid"
-      }
-
-      path_exists 🔑 {
-        path = "/proc/sys/net/ipv4/conf/wg0"
-      }
-
-      tztime local {
-        format = "%Y-%m-%d %H:%M:%S"
-      }
-
-      load {
-        format = "%1min"
-      }
-
-      cpu_temperature 0 {
-        format = "T: %degrees °C"
-        path = "/sys/class/hwmon/hwmon0/temp1_input"
-      }
-
-      disk "/" {
-        format = "%avail"
-      }
-
-      volume master {
-        format = "♪: %volume"
-        format_muted = "♪: muted (%volume)"
-        device = "default"
-        mixer = "Master"
-        mixer_idx = 0
-      }
-    '';
-  };
-}
modules/profiles/ipfs.nixos.nix → modules/profiles/ipfs.nix
File renamed without changes
modules/profiles/kubernetes.nix
@@ -1,86 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.containers.kubernetes;
-in
-{
-  options = {
-    profiles.containers.kubernetes = {
-      enable = mkEnableOption "Enable kubernetes profile";
-      containers = mkOption {
-        default = true;
-        description = "Enable containers profile alongside";
-        type = types.bool;
-      };
-      nr = mkEnableOption "Enable nr aliasing";
-      krew = mkEnableOption "Enable krew";
-      kind = mkEnableOption "Enable kind";
-      minikube = {
-        enable = mkEnableOption "Enable minikube";
-        package = mkOption {
-          default = pkgs.minikube;
-          description = "Minikube package";
-          type = types.package;
-        };
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.file.".local/share/applications/chos4.desktop".source = ../../users/vincent/containers/chos4.desktop;
-      profiles.containers.enable = cfg.containers;
-      home.packages = with pkgs; [
-        #cri-tools
-        kubectl
-        kail
-        kustomize
-        kube-prompt
-        kubectx
-        my.ko
-        my.kss
-        my.kubernix
-      ];
-    }
-    (
-      mkIf cfg.nr {
-        xdg.configFile."nr/kubernetes" = {
-          text = builtins.toJSON [
-            { cmd = "kubectl"; }
-          ];
-          onChange = "${pkgs.my.nr}/bin/nr -force kubernetes";
-        };
-      }
-    )
-    (
-      mkIf cfg.krew {
-        home.packages = with pkgs; [ my.krew ];
-      }
-    )
-    (
-      mkIf config.profiles.zsh.enable {
-        home.file."${config.programs.zsh.dotDir}/functions/_kubectl".source = ./assets/zsh/_kubectl;
-      }
-    )
-    (
-      mkIf cfg.minikube.enable {
-        home.packages = with pkgs; [
-          cfg.minikube.package
-          docker-machine-kvm2
-        ];
-      }
-    )
-    (
-      mkIf cfg.kind {
-        home.packages = with pkgs; [
-          kind
-        ];
-      }
-    )
-    (
-      mkIf (!config.profiles.containers.openshift.enable) {
-        home.packages = with pkgs; [ kubectl ];
-      }
-    )
-  ]);
-}
modules/profiles/laptop.nix
@@ -1,4 +1,4 @@
-{ config, lib, ... }:
+{ config, lib, pkgs, ... }:
 
 with lib;
 let
@@ -7,13 +7,26 @@ in
 {
   options = {
     profiles.laptop = {
-      enable = mkEnableOption "Enable laptop profile";
+      enable = mkOption {
+        default = false;
+        description = "Enable laptop profile";
+        type = types.bool;
+      };
     };
   };
   config = mkIf cfg.enable {
-    profiles.desktop.enable = true;
-    programs.autorandr = {
-      enable = true;
+    boot.kernel.sysctl = {
+      "vm.swappiness" = 10;
+      "vm.dirty_ratio" = 25;
+      "vm.dirty_background_ratio" = 10;
+      "vm.dirty_writeback_centisecs" = 5000;
+      "vm.dirty_expire_centisecs" = 5000;
     };
+    profiles.desktop.enable = true;
+    environment.systemPackages = with pkgs; [
+      lm_sensors
+      powertop
+      acpi
+    ];
   };
 }
modules/profiles/laptop.nixos.nix
@@ -1,32 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.laptop;
-in
-{
-  options = {
-    profiles.laptop = {
-      enable = mkOption {
-        default = false;
-        description = "Enable laptop profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    boot.kernel.sysctl = {
-      "vm.swappiness" = 10;
-      "vm.dirty_ratio" = 25;
-      "vm.dirty_background_ratio" = 10;
-      "vm.dirty_writeback_centisecs" = 5000;
-      "vm.dirty_expire_centisecs" = 5000;
-    };
-    profiles.desktop.enable = true;
-    environment.systemPackages = with pkgs; [
-      lm_sensors
-      powertop
-      acpi
-    ];
-  };
-}
modules/profiles/mail.nixos.nix → modules/profiles/mail.nix
File renamed without changes
modules/profiles/mails.nix
@@ -1,215 +0,0 @@
-# Generated from an org file 💃
-# See : https://sbr.pm/technical/configurations/mails.html
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.mails;
-in
-{
-
-  options = {
-    profiles.mails = {
-      enable = mkEnableOption "Enable mails configuration";
-      sync = mkEnableOption "Enable sync mail service";
-      frequency = mkOption {
-        default = "*:0/30";
-        description = "Frequency at which the mail should be checked";
-        type = types.str;
-      };
-    };
-  };
-
-  config =
-    mkIf
-      cfg.enable
-      (
-        mkMerge [
-          {
-
-            accounts.email = {
-              maildirBasePath = "desktop/mails";
-              accounts = {
-                "redhat" = {
-                  address = "vdemeest@redhat.com";
-                  userName = "vdemeest@redhat.com";
-                  realName = "Vincent Demeester";
-                  passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/rh.pass -d ${config.home.homeDirectory}/desktop/documents/rh.pass.gpg";
-                  imap.host = "imap.gmail.com";
-                  smtp.host = "smtp.gmail.com";
-                  mbsync = {
-                    enable = true;
-                    create = "both";
-                    expunge = "both";
-                    patterns = [ "*" "![Gmail]*" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" ];
-                    extraConfig = {
-                      channel = {
-                        Sync = "All";
-                      };
-                      account = {
-                        Timeout = 120;
-                        PipelineDepth = 1;
-                      };
-                    };
-                  };
-                  notmuch.enable = cfg.sync;
-                  astroid.enable = cfg.sync;
-                  msmtp.enable = true;
-                };
-                "perso" = {
-                  address = "vinc.demeester@gmail.com";
-                  userName = "vinc.demeester@gmail.com";
-                  realName = "Vincent Demeester";
-                  passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/perso.pass -d ${config.home.homeDirectory}/desktop/documents/perso.pass.gpg";
-                  imap.host = "imap.gmail.com";
-                  smtp.host = "smtp.gmail.com";
-                  mbsync = {
-                    enable = true;
-                    create = "both";
-                    expunge = "both";
-                    patterns = [ "*" "![Gmail]*" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" ];
-                    extraConfig = {
-                      channel = {
-                        Sync = "All";
-                      };
-                      account = {
-                        Timeout = 120;
-                        PipelineDepth = 1;
-                      };
-                    };
-                  };
-                  notmuch.enable = cfg.sync;
-                  astroid.enable = cfg.sync;
-                  msmtp.enable = true;
-                };
-                "prv" = {
-                  primary = true;
-                  address = "vincent@demeester.fr";
-                  userName = "vincent@demeester.fr";
-                  realName = "Vincent Demeester";
-                  passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/prv.pass -d ${config.home.homeDirectory}/desktop/documents/prv.pass.gpg";
-                  imap.host = "mail.gandi.net";
-                  smtp.host = "mail.gandi.net";
-                  mbsync = {
-                    enable = true;
-                    create = "both";
-                    expunge = "both";
-                    patterns = [ "*" ];
-                    extraConfig = {
-                      channel = {
-                        Sync = "All";
-                      };
-                      account = {
-                        Timeout = 120;
-                        PipelineDepth = 1;
-                      };
-                    };
-                  };
-                  notmuch.enable = cfg.sync;
-                  astroid.enable = cfg.sync;
-                  msmtp.enable = true;
-                };
-              };
-            };
-
-            home.file."bin/msmtp" = {
-              text = ''
-                #!${pkgs.stdenv.shell}
-                ${pkgs.libnotify}/bin/notify-send "Sending mail ✉️"
-                ${pkgs.msmtp}/bin/msmtp --read-envelope-from $@
-              '';
-              executable = true;
-            };
-
-            programs.msmtp.enable = true;
-
-          }
-
-          (
-            mkIf cfg.sync {
-
-              services.mbsync = {
-                enable = true;
-                preExec = "${config.xdg.configHome}/mbsync/preExec";
-                postExec = "${config.xdg.configHome}/mbsync/postExec";
-                frequency = cfg.frequency;
-              };
-
-              xdg.configFile."mbsync/preExec" = {
-                text = ''
-                  #!${pkgs.stdenv.shell}
-
-                  export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
-                  export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
-                  ${pkgs.coreutils}/bin/mkdir -p ${config.home.homeDirectory}/desktop/mails/redhat ${config.home.homeDirectory}/desktop/mails/perso
-                  ${pkgs.afew}/bin/afew -C  ${config.xdg.configHome}/notmuch/notmuchrc -m -v
-                '';
-                executable = true;
-              };
-
-              xdg.configFile."mbsync/postExec" = {
-                text = ''
-                  #!${pkgs.stdenv.shell}
-
-                  export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
-                  export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
-                  ${pkgs.notmuch}/bin/notmuch new
-                  ${pkgs.afew}/bin/afew -C ${config.xdg.configHome}/notmuch/notmuchrc --tag --new -v
-                  # Remove inbox (lower-case)
-                  ${pkgs.notmuch}/bin/notmuch tag -inbox -- tag:inbox
-                  # Remove Inbox tagged message that are not in an Inbox
-                  ${pkgs.notmuch}/bin/notmuch tag -Inbox -- not folder:redhat/Inbox and not folder:perso/Inbox and tag:Inbox
-                  ${pkgs.libnotify}/bin/notify-send "Mails synced 📬"
-                '';
-                executable = true;
-              };
-
-              home.file."bin/msync" = {
-                text = ''
-                  #!${pkgs.stdenv.shell}
-                  ${pkgs.libnotify}/bin/notify-send "Syncing mails 📫️"
-                  systemctl --user start mbsync
-                '';
-                executable = true;
-              };
-
-              programs.mbsync.enable = true;
-              programs.notmuch.enable = true;
-
-              programs.afew = {
-                enable = true;
-                extraConfig = ''
-                  [SpamFilter]
-                  [KillThreadsFilter]
-                  [ListMailsFilter]
-                  [ArchiveSentMailsFilter]
-                  [FolderNameFilter]
-                  maildir_separator = /
-
-                  [MailMover]
-                  folders = perso/Inbox redhat/Inbox
-                  rename = true
-
-                  perso/Inbox = 'NOT tag:Inbox':"perso/[Gmail]/All Mail"
-                  redhat/Inbox = 'NOT tag:Inbox':"redhat/[Gmail]/All Mail"
-                '';
-              };
-
-              programs.astroid = {
-                enable = true;
-                externalEditor = "emacsclient -c";
-                extraConfig = {
-                  startup.queries.inbox = "tag:Inbox";
-                  startup.queries.inbox_perso = "folder:perso/Inbox";
-                  startup.queries.inbox_redhat = "folder:redhat/Inbox";
-                };
-              };
-
-            }
-          )
-
-        ]
-      );
-}
modules/profiles/media.nix
@@ -1,23 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.media;
-in
-{
-  options = {
-    profiles.media = {
-      enable = mkEnableOption "Enable media configuration";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.packages = with pkgs; [ youtube-dl ];
-    }
-    (
-      mkIf config.profiles.desktop.enable {
-        home.packages = with pkgs; [ spotify ];
-      }
-    )
-  ]);
-}
modules/profiles/nix-auto-update.nixos.nix → modules/profiles/nix-auto-update.nix
File renamed without changes
modules/profiles/nix-config.nixos.nix → modules/profiles/nix-config.nix
File renamed without changes
modules/profiles/openshift.nix
@@ -1,53 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.containers.openshift;
-in
-{
-  options = {
-    profiles.containers.openshift = {
-      enable = mkEnableOption "Enable openshift profile";
-      package = mkOption {
-        default = pkgs.my.oc;
-        description = "Openshift package";
-        type = types.package;
-      };
-      minishift = {
-        enable = mkEnableOption "Enable minishift";
-        package = mkOption {
-          default = pkgs.minishift;
-          description = "Minishift package";
-          type = types.package;
-        };
-      };
-      crc = mkEnableOption "Enable crc";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      profiles.containers.kubernetes.enable = true;
-      home.packages = with pkgs; [
-        cfg.package
-        #my.openshift-install
-        my.operator-sdk
-      ];
-    }
-    (
-      mkIf cfg.minishift.enable {
-        home.packages = with pkgs; [
-          cfg.minishift.package
-          docker-machine-kvm
-          docker-machine-kvm2
-        ];
-      }
-    )
-    (
-      mkIf cfg.crc {
-        home.packages = with pkgs; [
-          my.crc
-        ];
-      }
-    )
-  ]);
-}
modules/profiles/printing.nixos.nix → modules/profiles/printing.nix
File renamed without changes
modules/profiles/pulseaudio.nixos.nix → modules/profiles/pulseaudio.nix
File renamed without changes
modules/profiles/qemu.nixos.nix → modules/profiles/qemu.nix
File renamed without changes
modules/profiles/scanning.nixos.nix → modules/profiles/scanning.nix
File renamed without changes
modules/profiles/ssh.nix
@@ -3,64 +3,33 @@
 with lib;
 let
   cfg = config.profiles.ssh;
-  patchedOpenSSH = pkgs.openssh.override { withKerberos = true; withGssapiPatches = true; };
 in
 {
   options = {
     profiles.ssh = {
       enable = mkOption {
-        default = true;
-        description = "Enable ssh profile and configuration";
+        default = false;
+        description = "Enable ssh profile";
         type = types.bool;
       };
-      machines = mkOption {
-        default = { };
-        type = types.attrs;
+      forwardX11 = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to allow X11 connections to be forwarded.
+        '';
       };
     };
   };
   config = mkIf cfg.enable {
-    home.packages = [
-      patchedOpenSSH
-    ];
-    home.file.".ssh/sockets/.placeholder".text = '''';
-    xdg.configFile.".ssh/.placeholder".text = '''';
-    programs.ssh = {
-      enable = true;
-
-      serverAliveInterval = 60;
-      hashKnownHosts = true;
-      userKnownHostsFile = "${config.xdg.configHome}/ssh/known_hosts";
-      controlPath = "${config.home.homeDirectory}/.ssh/sockets/%u-%l-%r@%h:%p";
-      matchBlocks = {
-        "github.com" = {
-          hostname = "github.com";
-          user = "git";
-          extraOptions = {
-            controlMaster = "auto";
-            controlPersist = "360";
-          };
-        };
-        "gitlab.com" = {
-          hostname = "gitlab.com";
-          user = "git";
-          extraOptions = {
-            controlMaster = "auto";
-            controlPersist = "360";
-          };
-        };
-        "*.redhat.com" = {
-          user = "vdemeest";
-        };
-        "192.168.1.*" = {
-          forwardAgent = true;
-        };
-      } // cfg.machines;
-      extraConfig = ''
-        PreferredAuthentications gssapi-with-mic,publickey,password
-        GSSAPIAuthentication yes
-        GSSAPIDelegateCredentials yes
-      '';
+    services = {
+      openssh = {
+        enable = true;
+        startWhenNeeded = false;
+        forwardX11 = cfg.forwardX11;
+      };
+      sshguard.enable = true;
     };
+    programs.mosh.enable = true;
   };
 }
modules/profiles/ssh.nixos.nix
@@ -1,35 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.ssh;
-in
-{
-  options = {
-    profiles.ssh = {
-      enable = mkOption {
-        default = false;
-        description = "Enable ssh profile";
-        type = types.bool;
-      };
-      forwardX11 = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Whether to allow X11 connections to be forwarded.
-        '';
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    services = {
-      openssh = {
-        enable = true;
-        startWhenNeeded = false;
-        forwardX11 = cfg.forwardX11;
-      };
-      sshguard.enable = true;
-    };
-    programs.mosh.enable = true;
-  };
-}
modules/profiles/syncthing.nixos.nix → modules/profiles/syncthing.nix
File renamed without changes
modules/profiles/tmux.nix
@@ -1,28 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.tmux;
-in
-{
-  options = {
-    profiles.tmux = {
-      enable = mkOption {
-        default = true;
-        description = "Enable tmux profile and configuration";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    programs.tmux = {
-      enable = true;
-      extraConfig = ''
-        source-file ${config.xdg.configHome}/tmux/commons/keybindings
-        source-file ${config.xdg.configHome}/tmux/tmux.conf
-      '';
-    };
-    xdg.configFile."tmux/tmux.conf".source = ./assets/tmux/tmux.conf;
-    xdg.configFile."tmux/commons/keybindings".source = ./assets/tmux/keybindings;
-  };
-}
modules/profiles/users.nixos.nix → modules/profiles/users.nix
File renamed without changes
modules/profiles/virtualization.nixos.nix → modules/profiles/virtualization.nix
File renamed without changes
modules/profiles/wireguard.server.nixos.nix → modules/profiles/wireguard.server.nix
File renamed without changes
modules/profiles/yubikey.nixos.nix → modules/profiles/yubikey.nix
File renamed without changes
modules/profiles/zsh.nix
@@ -9,166 +9,14 @@ in
     profiles.zsh = {
       enable = mkOption {
         default = true;
-        description = "Enable zsh profile and configuration";
+        description = "Enable zsh profile";
         type = types.bool;
       };
     };
   };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      home.packages = with pkgs; [
-        zsh-syntax-highlighting
-        nix-zsh-completions
-      ];
-      home.file."${config.programs.zsh.dotDir}/completion.zsh".source = ./assets/zsh/completion.zsh;
-      home.file."${config.programs.zsh.dotDir}/prompt.zsh".source = ./assets/zsh/prompt.zsh;
-      home.file."${config.programs.zsh.dotDir}/functions/j".source = ./assets/zsh/j;
-      programs.zsh = {
-        enable = true;
-        dotDir = ".config/zsh";
-        autocd = true;
-        defaultKeymap = "emacs";
-        enableAutosuggestions = true;
-        history = {
-          size = 100000;
-          expireDuplicatesFirst = true;
-          ignoreDups = true;
-        };
-        localVariables = {
-          EMOJI_CLI_KEYBIND = "^n";
-          EMOJI_CLI_USE_EMOJI = "yes";
-          ZSH_HIGHLIGHT_HIGHLIGHTERS = [ "main" "brackets" "pattern" ];
-        };
-        shellAliases = import ./aliases.shell.nix;
-        plugins = [
-          {
-            name = "emoji-cli";
-            src = pkgs.fetchFromGitHub {
-              owner = "b4b4r07";
-              repo = "emoji-cli";
-              rev = "26e2d67d566bfcc741891c8e063a00e0674abc92";
-              sha256 = "0n88w4k5vaz1iyikpmlzdrrkxmfn91x5s4q405k1fxargr1w6bmx";
-            };
-          }
-          {
-            name = "zsh-z";
-            src = pkgs.fetchFromGitHub {
-              owner = "agkozak";
-              repo = "zsh-z";
-              rev = "5b903f8f5489783ee2a4af668a941b7d9a02efc9";
-              sha256 = "07h6ksiqgqyf5m84hv5xf4jcqrl8q1cj8wd4z52cjmy82kk10fkn";
-            };
-          }
-          {
-            name = "async";
-            src = pkgs.fetchFromGitHub {
-              owner = "mafredri";
-              repo = "zsh-async";
-              rev = "v1.7.0";
-              sha256 = "1jbbypgn0r4pilhv2s2p11vbkkvlnf75wrhxfcvr7bfjpzyp9wbc";
-            };
-          }
-          {
-            name = "zsh-completions";
-            src = pkgs.fetchFromGitHub {
-              owner = "zsh-users";
-              repo = "zsh-completions";
-              rev = "922eee0706acb111e9678ac62ee77801941d6df2";
-              sha256 = "04skzxv8j06f1snsx62qnca5f2183w0wfs5kz78rs8hkcyd6g89w";
-            };
-          }
-          {
-            name = "powerlevel10k";
-            src = pkgs.fetchFromGitHub {
-              owner = "romkatv";
-              repo = "powerlevel10k";
-              rev = "700910cd0421a7d25d2800cefa76eb6d80dc62a8";
-              sha256 = "011ja4r3a8vbcs42js9nri4p8pi8z4ccqxl2qyf52pn3pfnidigj";
-            };
-          }
-          {
-            name = "zsh-nix-shell";
-            src = pkgs.fetchFromGitHub {
-              owner = "chisui";
-              repo = "zsh-nix-shell";
-              rev = "v0.1.0";
-              sha256 = "0snhch9hfy83d4amkyxx33izvkhbwmindy0zjjk28hih1a9l2jmx";
-            };
-          }
-        ];
-        envExtra = ''
-          export GOPATH=${config.home.homeDirectory}
-          export WEBKIT_DISABLE_COMPOSITING_MODE=1;
-          export PATH=$HOME/bin:$PATH
-          if [ -d $HOME/.krew/bin ]; then
-            export PATH=$HOME/.krew/bin:$PATH
-          fi
-        '';
-        loginExtra = ''
-          export GOPATH=${config.home.homeDirectory}
-        '';
-        initExtra = ''
-          path+="$HOME/${config.programs.zsh.dotDir}/functions"
-          fpath+="$HOME/.nix-profile/share/zsh/site-functions"
-          fpath+="$HOME/${config.programs.zsh.dotDir}/functions"
-          for func ($HOME/${config.programs.zsh.dotDir}/functions) autoload -U $func/*(x:t)
-          autoload -Uz select-word-style; select-word-style bash
-          if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
-          #if [ -n "$INSIDE_EMACS" ]; then
-          #  chpwd() { print -P "\033AnSiTc %d" }
-          #  print -P "\033AnSiTu %n"
-          #  print -P "\033AnSiTc %d"
-          #fi
-          if [[ "$TERM" == "dumb" || "$TERM" == "emacs" ]]
-          then
-            TERM=eterm-color
-            unsetopt zle
-            unsetopt prompt_cr
-            unsetopt prompt_subst
-            unfunction precmd
-            unfunction preexec
-            PS1='$ '
-            return
-          fi
-          # make sure navigation using emacs keybindings works on all non-alphanumerics
-          # syntax highlighting
-          source $HOME/${config.programs.zsh.dotDir}/plugins/zsh-nix-shell/nix-shell.plugin.zsh
-          source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
-          ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
-          ZSH_HIGHLIGHT_PATTERNS+=('rm -fR *' 'fg=white,bold,bg=red')
-          ZSH_HIGHLIGHT_PATTERNS+=('rm -fr *' 'fg=white,bold,bg=red')
-          source $HOME/${config.programs.zsh.dotDir}/completion.zsh
-          source $HOME/${config.programs.zsh.dotDir}/plugins/powerlevel10k/powerlevel10k.zsh-theme
-          source $HOME/${config.programs.zsh.dotDir}/prompt.zsh
-          setopt hist_ignore_space
-          alias -g L="|less"
-          alias -g EEL=' 2>&1 | less'
-          alias -g GB='`git rev-parse --abbrev-ref HEAD`'
-          alias -g GR='`git rev-parse --show-toplevel`'
-          (( $+commands[jq] )) && alias -g MJ="| jq -C '.'"  || alias -g MJ="| ${pkgs.python3}/bin/python -mjson.tool"
-        '';
-        profileExtra = ''
-          if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
-          export NIX_PATH=$HOME/.nix-defexpr/channels:$NIX_PATH
-        '';
-      };
-      programs.fzf = {
-        enable = true;
-        enableZshIntegration = true;
-        defaultOptions = [ "--bind=ctrl-j:accept" ];
-      };
-    }
-    (
-      mkIf config.profiles.emacs.enable {
-        /*programs.zsh.initExtra = ''
-          export EDITOR=et
-        '';*/
-      }
-    )
-    (
-      mkIf config.machine.home-manager {
-        home.packages = with pkgs; [ hello ];
-      }
-    )
-  ]);
+  config = mkIf cfg.enable {
+    programs.zsh = {
+      enable = true;
+    };
+  };
 }
modules/profiles/zsh.nixos.nix
@@ -1,22 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.profiles.zsh;
-in
-{
-  options = {
-    profiles.zsh = {
-      enable = mkOption {
-        default = true;
-        description = "Enable zsh profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    programs.zsh = {
-      enable = true;
-    };
-  };
-}
modules/programs/default.nix
@@ -2,6 +2,6 @@
   imports = [
     ./crc.nix
     # Remove "nixos" from here
-    ./podman.nixos.nix
+    ./podman.nix
   ];
 }
modules/programs/podman.nix
@@ -9,19 +9,46 @@ in
     programs.podman = {
       enable = mkOption {
         default = false;
-        description = "Enable podman profile";
+        description = ''
+          Whether to configure podman
+        '';
         type = types.bool;
       };
+      package = mkOption {
+        default = pkgs.podman;
+        description = "podman package to be used";
+        type = types.package;
+      };
+      runcPackage = mkOption {
+        default = pkgs.runc;
+        description = "runc package to be used";
+        type = types.package;
+      };
+      conmonPackage = mkOption {
+        default = pkgs.conmon;
+        description = "conmon package to be used";
+        type = types.package;
+      };
+      cniPackage = mkOption {
+        default = pkgs.cni;
+        description = "cni package to be used";
+        type = types.package;
+      };
+      cniPluginsPackage = mkOption {
+        default = pkgs.cni-plugins;
+        description = "cni-plugins package to be used";
+        type = types.package;
+      };
     };
   };
+
   config = mkIf cfg.enable {
-    # FIXME(vdemeester) package podman and conmon in nixpkgs
-    home.packages = with pkgs; [ slirp4netns podman buildah ];
-    xdg.configFile."containers/libpod.conf".text = ''
+
+    environment.etc."containers/libpod.conf".text = ''
       image_default_transport = "docker://"
-      runtime_path = ["/run/current-system/sw/bin/runc"]
-      conmon_path = ["/run/current-system/sw/bin/conmon"]
-      cni_plugin_dir = ["${pkgs.cni-plugins}/bin/"]
+      runtime_path = ["${cfg.runcPackage}/bin/runc"]
+      conmon_path = ["${cfg.conmonPackage}/bin/conmon"]
+      cni_plugin_dir = ["${cfg.cniPluginsPackage}/bin/"]
       cgroup_manager = "systemd"
       cni_config_dir = "/etc/cni/net.d/"
       cni_default_network = "podman"
@@ -30,19 +57,51 @@ in
       pause_command = "/pause"
     '';
 
-    xdg.configFile."containers/registries.conf".text = ''
+    environment.etc."containers/registries.conf".text = ''
       [registries.search]
       registries = ['docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org']
+
       [registries.insecure]
       registries = ['massimo.local:5000', '192.168.12.0/16']
     '';
 
-    xdg.configFile."containers/policy.json".text = ''
+    environment.etc."containers/policy.json".text = ''
       {
         "default": [
           { "type": "insecureAcceptAnything" }
         ]
       }
     '';
+
+    environment.etc."cni/net.d/87-podman-bridge.conflist".text = ''
+      {
+          "cniVersion": "0.3.0",
+          "name": "podman",
+          "plugins": [
+            {
+              "type": "bridge",
+              "bridge": "cni0",
+              "isGateway": true,
+              "ipMasq": true,
+              "ipam": {
+                  "type": "host-local",
+                  "subnet": "10.88.0.0/16",
+                  "routes": [
+                      { "dst": "0.0.0.0/0" }
+                  ]
+              }
+            },
+            {
+              "type": "portmap",
+              "capabilities": {
+                "portMappings": true
+              }
+            }
+          ]
+      }
+    '';
+
+    environment.systemPackages = with pkgs; [ cfg.package cfg.conmonPackage cfg.runcPackage iptables ];
+
   };
 }
modules/programs/podman.nixos.nix
@@ -1,107 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.programs.podman;
-in
-{
-  options = {
-    programs.podman = {
-      enable = mkOption {
-        default = false;
-        description = ''
-          Whether to configure podman
-        '';
-        type = types.bool;
-      };
-      package = mkOption {
-        default = pkgs.podman;
-        description = "podman package to be used";
-        type = types.package;
-      };
-      runcPackage = mkOption {
-        default = pkgs.runc;
-        description = "runc package to be used";
-        type = types.package;
-      };
-      conmonPackage = mkOption {
-        default = pkgs.conmon;
-        description = "conmon package to be used";
-        type = types.package;
-      };
-      cniPackage = mkOption {
-        default = pkgs.cni;
-        description = "cni package to be used";
-        type = types.package;
-      };
-      cniPluginsPackage = mkOption {
-        default = pkgs.cni-plugins;
-        description = "cni-plugins package to be used";
-        type = types.package;
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-
-    environment.etc."containers/libpod.conf".text = ''
-      image_default_transport = "docker://"
-      runtime_path = ["${cfg.runcPackage}/bin/runc"]
-      conmon_path = ["${cfg.conmonPackage}/bin/conmon"]
-      cni_plugin_dir = ["${cfg.cniPluginsPackage}/bin/"]
-      cgroup_manager = "systemd"
-      cni_config_dir = "/etc/cni/net.d/"
-      cni_default_network = "podman"
-      # pause
-      pause_image = "k8s.gcr.io/pause:3.1"
-      pause_command = "/pause"
-    '';
-
-    environment.etc."containers/registries.conf".text = ''
-      [registries.search]
-      registries = ['docker.io', 'registry.fedoraproject.org', 'quay.io', 'registry.access.redhat.com', 'registry.centos.org']
-
-      [registries.insecure]
-      registries = ['massimo.local:5000', '192.168.12.0/16']
-    '';
-
-    environment.etc."containers/policy.json".text = ''
-      {
-        "default": [
-          { "type": "insecureAcceptAnything" }
-        ]
-      }
-    '';
-
-    environment.etc."cni/net.d/87-podman-bridge.conflist".text = ''
-      {
-          "cniVersion": "0.3.0",
-          "name": "podman",
-          "plugins": [
-            {
-              "type": "bridge",
-              "bridge": "cni0",
-              "isGateway": true,
-              "ipMasq": true,
-              "ipam": {
-                  "type": "host-local",
-                  "subnet": "10.88.0.0/16",
-                  "routes": [
-                      { "dst": "0.0.0.0/0" }
-                  ]
-              }
-            },
-            {
-              "type": "portmap",
-              "capabilities": {
-                "portMappings": true
-              }
-            }
-          ]
-      }
-    '';
-
-    environment.systemPackages = with pkgs; [ cfg.package cfg.conmonPackage cfg.runcPackage iptables ];
-
-  };
-}
modules/services/athens.nixos.nix → modules/services/athens.nix
File renamed without changes
modules/services/default.nix
@@ -1,7 +1,7 @@
 {
   imports = [
-    ./govanityurl.nixos.nix
-    ./nix-binary-cache.nixos.nix
-    ./wireguard.client.nixos.nix
+    ./govanityurl.nix
+    ./nix-binary-cache.nix
+    ./wireguard.client.nix
   ];
 }
modules/services/emacs-server.nix
@@ -1,55 +0,0 @@
-{ config, lib, pkgs, ... }:
-with lib;
-let
-  cfg = config.services.emacs-server;
-in
-{
-  options.services.emacs-server = {
-    enable = mkEnableOption "the Emacs daemon";
-    name = mkOption {
-      type = types.str;
-      description = "Name of the emacs server";
-      default = "default";
-    };
-    package = mkOption {
-      type = types.package;
-      description = "The Emacs package to use for running the daemon.";
-    };
-    shell = mkOption {
-      type = types.str;
-      description = "The shell used for starting Emacs.";
-    };
-    extraOptions = mkOption {
-      type = types.separatedString " ";
-      default = "";
-      description =
-        ''
-          The extra command-line options to pass to
-          <command>emacs</command> daemon.
-        '';
-    };
-  };
-
-  config = mkIf cfg.enable {
-    systemd.user.services.emacs = {
-      Unit = {
-        Description = "Emacs: the extensible, self-documenting text editor";
-        Documentation =
-          "info:emacs man:emacs(1) https://gnu.org/software/emacs/";
-
-        # Avoid killing the Emacs session, which may be full of
-        # unsaved buffers.
-        X-RestartIfChanged = false;
-      };
-
-      Service = {
-        ExecStart =
-          "${cfg.shell} 'exec ${cfg.package}/bin/emacs --fg-daemon=${cfg.name} ${cfg.extraOptions}'";
-        ExecStop = "${cfg.package}/bin/emacsclient --eval '(kill-emacs)'";
-        Restart = "on-failure";
-      };
-
-      Install = { WantedBy = [ "default.target" ]; };
-    };
-  };
-}
modules/services/govanityurl.nixos.nix → modules/services/govanityurl.nix
File renamed without changes
modules/services/nix-binary-cache.nixos.nix → modules/services/nix-binary-cache.nix
File renamed without changes
modules/services/shairport-sync.nix
@@ -1,68 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
-  cfg = config.services.shairport-sync;
-in
-{
-
-  ###### interface
-
-  options = {
-
-    services.shairport-sync = {
-
-      enable = mkOption {
-        default = false;
-        description = ''
-          Enable the shairport-sync daemon.
-
-          Running with a local system-wide or remote pulseaudio server
-          is recommended.
-        '';
-      };
-
-      arguments = mkOption {
-        default = "-v -o pa";
-        description = ''
-          Arguments to pass to the daemon. Defaults to a local pulseaudio
-          server.
-        '';
-      };
-
-    };
-
-  };
-
-
-  ###### implementation
-
-  config = mkIf cfg.enable {
-
-    /*
-    Requires the following in NixOS (or elsewhere).
-
-    services.avahi.enable = true;
-    services.avahi.publish.enable = true;
-    services.avahi.publish.userServices = true;
-    networking.firewall.allowedUDPPortRanges = [ { from = 6001; to = 6101; } ];
-    networking.firewall.allowedTCPPorts = [ 5000 ];
-    */
-
-    systemd.user.services.shairport-sync = {
-      Unit = {
-        After = [ "network.target" "sound.target" ];
-        Description = "Airplay audio player";
-      };
-      Install = {
-        WantedBy = [ "default.target" ];
-      };
-      Service = {
-        Environment = "PATH=${config.home.profileDirectory}/bin";
-        ExecStart = "${pkgs.shairport-sync}/bin/shairport-sync ${cfg.arguments}";
-        ExecStop = "${pkgs.procps}/bin/pkill shairport-sync";
-        Type = "simple";
-      };
-    };
-  };
-}
modules/services/wireguard.client.nixos.nix → modules/services/wireguard.client.nix
File renamed without changes
modules/virtualisation/buildkit.nixos.nix → modules/virtualisation/buildkit.nix
File renamed without changes
modules/virtualisation/containerd.nixos.nix → modules/virtualisation/containerd.nix
File renamed without changes
modules/virtualisation/default.nix
@@ -1,7 +1,7 @@
 {
   imports = [
     # Remove "nixos" from here
-    ./buildkit.nixos.nix
-    ./containerd.nixos.nix
+    ./buildkit.nix
+    ./containerd.nix
   ];
 }
modules/machines.nix
@@ -1,15 +0,0 @@
-{ config, lib, ... }:
-
-with lib; {
-  options = {
-    machine = {
-      home-manager = mkEnableOption "It is a home-manager configuration";
-      nixos = mkEnableOption "It is a nixos configuration";
-      base = {
-        fedora = mkEnableOption "The base OS is Fedora";
-        debian = mkEnableOption "The base OS is Debian";
-        ubuntu = mkEnableOption "The base OS is Ubuntu";
-      };
-    };
-  };
-}
modules/module-list.nix
@@ -1,38 +0,0 @@
-{
-  imports = [
-    ./machines.nix
-    ./profiles/audio.nix
-    ./profiles/bash.nix
-    ./profiles/containers.nix
-    ./profiles/desktop.nix
-    ./profiles/dev.nix
-    ./profiles/dev.go.nix
-    ./profiles/dev.haskell.nix
-    ./profiles/dev.java.nix
-    ./profiles/dev.js.nix
-    ./profiles/dev.python.nix
-    ./profiles/dev.rust.nix
-    ./profiles/direnv.nix
-    ./profiles/docker.nix
-    ./profiles/emacs.nix
-    ./profiles/finances.nix
-    ./profiles/fish.nix
-    ./profiles/gaming.nix
-    ./profiles/gcloud.nix
-    ./profiles/git.nix
-    ./profiles/gpg.nix
-    ./profiles/i3.nix
-    ./profiles/kubernetes.nix
-    ./profiles/laptop.nix
-    ./profiles/mails.nix
-    ./profiles/media.nix
-    ./profiles/openshift.nix
-    ./profiles/ssh.nix
-    ./profiles/tmux.nix
-    ./profiles/vscode.nix
-    ./profiles/zsh.nix
-    ./programs/podman.nix
-    ./services/shairport-sync.nix
-    ./services/emacs-server.nix
-  ];
-}
modules/module-list.nixos.nix
@@ -1,41 +0,0 @@
-{
-  imports = [
-    ./machines.nix
-    ./hardware/sane-extra-config.nixos.nix
-    ./profiles/avahi.nixos.nix
-    ./profiles/base.nixos.nix
-    ./profiles/buildkit.nixos.nix
-    ./profiles/containerd.nixos.nix
-    ./profiles/desktop.nixos.nix
-    ./profiles/dev.nixos.nix
-    ./profiles/docker.nixos.nix
-    ./profiles/fish.nixos.nix
-    ./profiles/gaming.nixos.nix
-    ./profiles/git.nixos.nix
-    ./profiles/home.nixos.nix
-    ./profiles/i18n.nixos.nix
-    ./profiles/ipfs.nixos.nix
-    ./profiles/laptop.nixos.nix
-    ./profiles/mail.nixos.nix
-    ./profiles/nix-config.nixos.nix
-    ./profiles/nix-auto-update.nixos.nix
-    ./profiles/printing.nixos.nix
-    ./profiles/pulseaudio.nixos.nix
-    ./profiles/qemu.nixos.nix
-    ./profiles/scanning.nixos.nix
-    ./profiles/ssh.nixos.nix
-    ./profiles/syncthing.nixos.nix
-    ./profiles/users.nixos.nix
-    ./profiles/virtualization.nixos.nix
-    ./profiles/wireguard.server.nixos.nix
-    ./profiles/yubikey.nixos.nix
-    ./profiles/zsh.nixos.nix
-    ./programs/podman.nixos.nix
-    ./services/athens.nixos.nix
-    ./services/govanityurl.nixos.nix
-    ./services/nix-binary-cache.nixos.nix
-    ./services/wireguard.client.nixos.nix
-    ./virtualisation/buildkit.nixos.nix
-    ./virtualisation/containerd.nixos.nix
-  ];
-}
modules/profiles/vscode.nix → users/modules/profiles/vscode.nix
File renamed without changes
users/vincent/dev/js.nix
@@ -0,0 +1,6 @@
+{ config, pkgs, ... }:
+{
+  home.file.".npmrc".text = ''
+    prefix = ${config.home.homeDirectory}/.local/npm
+  '';
+}
users/vincent/dev/lisp.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [
+    sbcl
+    asdf
+  ];
+}