From 46aa44a23e445613ccc7d39c3f9c46e9ac321602 Mon Sep 17 00:00:00 2001
From: Leyla Becker <git@jan-leila.com>
Date: Mon, 11 Mar 2024 01:57:17 -0500
Subject: [PATCH] added home manager for leyla

---
 enviroments/client/default.nix |  6 ++-
 flake.lock                     |  8 ++--
 flake.nix                      |  2 +-
 users/default.nix              |  4 +-
 users/leyla/default.nix        |  2 +
 users/leyla/home.nix           | 82 ++++++++++++++++++++++++++++++++++
 users/leyla/packages.nix       |  4 +-
 7 files changed, 99 insertions(+), 9 deletions(-)
 create mode 100644 users/leyla/home.nix

diff --git a/enviroments/client/default.nix b/enviroments/client/default.nix
index 239058c..fc05ac1 100644
--- a/enviroments/client/default.nix
+++ b/enviroments/client/default.nix
@@ -23,8 +23,10 @@
 
   # Configure keymap in X11
   services.xserver = {
-    layout = "us,it,de";
-    xkbVariant = "";
+    xkb = {
+      layout = "us,it,de";
+      variant = "";
+    };
   };
 
   # Enable sound with pipewire.
diff --git a/flake.lock b/flake.lock
index f13caba..eb6a19f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -22,16 +22,16 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1709884566,
-        "narHash": "sha256-NSYJg2sfdO/XS3L8XN/59Zhzn0dqWm7XtVnKI2mHq3w=",
+        "lastModified": 1709961763,
+        "narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "2be119add7b37dc535da2dd4cba68e2cf8d1517e",
+        "rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixos-23.11",
+        "ref": "nixos-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
diff --git a/flake.nix b/flake.nix
index bc7b3d1..43f8cd7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,7 +2,7 @@
   description = "Nixos config flake";
 
   inputs = {
-    nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
 
     sops-nix.url = "github:Mic92/sops-nix";
 
diff --git a/users/default.nix b/users/default.nix
index 077fda5..97133d9 100644
--- a/users/default.nix
+++ b/users/default.nix
@@ -1,6 +1,8 @@
-{ ... }:
+{ inputs, ... }:
 {
   imports = [ ./leyla ./ester ./eve ./remote ];
 
   users.mutableUsers = false;
+
+  home-manager.extraSpecialArgs = { inherit inputs; };
 }
\ No newline at end of file
diff --git a/users/leyla/default.nix b/users/leyla/default.nix
index 96ea3cb..8745e7b 100644
--- a/users/leyla/default.nix
+++ b/users/leyla/default.nix
@@ -43,5 +43,7 @@ in
         }
       )
     ];
+
+    home-manager.users.leyla = lib.mkIf cfg.isNormalUser (import ./home.nix);
   };
 }
\ No newline at end of file
diff --git a/users/leyla/home.nix b/users/leyla/home.nix
new file mode 100644
index 0000000..baf2ebf
--- /dev/null
+++ b/users/leyla/home.nix
@@ -0,0 +1,82 @@
+{ config, pkgs, ... }:
+
+{
+  # Home Manager needs a bit of information about you and the paths it should
+  # manage.
+  home.username = "leyla";
+  home.homeDirectory = "/home/leyla";
+
+  # This value determines the Home Manager release that your configuration is
+  # compatible with. This helps avoid breakage when a new Home Manager release
+  # introduces backwards incompatible changes.
+  #
+  # You should not change this value, even if you update Home Manager. If you do
+  # want to update the value, then make sure to first check the Home Manager
+  # release notes.
+  home.stateVersion = "23.11"; # Please read the comment before changing.
+
+  # The home.packages option allows you to install Nix packages into your
+  # environment.
+  home.packages = [
+    # # Adds the 'hello' command to your environment. It prints a friendly
+    # # "Hello, world!" when run.
+    # pkgs.hello
+
+    # # It is sometimes useful to fine-tune packages, for example, by applying
+    # # overrides. You can do that directly here, just don't forget the
+    # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
+    # # fonts?
+    # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
+
+    # # You can also create simple shell scripts directly inside your
+    # # configuration. For example, this adds a command 'my-hello' to your
+    # # environment:
+    # (pkgs.writeShellScriptBin "my-hello" ''
+    #   echo "Hello, ${config.home.username}!"
+    # '')
+  ];
+
+  # Home Manager is pretty good at managing dotfiles. The primary way to manage
+  # plain files is through 'home.file'.
+  home.file = {
+    # # Building this configuration will create a copy of 'dotfiles/screenrc' in
+    # # the Nix store. Activating the configuration will then make '~/.screenrc' a
+    # # symlink to the Nix store copy.
+    # ".screenrc".source = dotfiles/screenrc;
+
+    # # You can also set the file content immediately.
+    # ".gradle/gradle.properties".text = ''
+    #   org.gradle.console=verbose
+    #   org.gradle.daemon.idletimeout=3600000
+    # '';
+  };
+
+  # Home Manager can also manage your environment variables through
+  # 'home.sessionVariables'. If you don't want to manage your shell through Home
+  # Manager then you have to manually source 'hm-session-vars.sh' located at
+  # either
+  #
+  #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh
+  #
+  # or
+  #
+  #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
+  #
+  # or
+  #
+  #  /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh
+  #
+  home.sessionVariables = {
+    # EDITOR = "emacs";
+  };
+
+  programs = {
+  # Let Home Manager install and manage itself.
+    home-manager.enable = true;
+    git = {
+      enable = true;
+      userName  = "Leyla Becker";
+      userEmail = "git@jan-leila.com";
+    };
+  };
+}
diff --git a/users/leyla/packages.nix b/users/leyla/packages.nix
index 554b8c0..c1311a7 100644
--- a/users/leyla/packages.nix
+++ b/users/leyla/packages.nix
@@ -74,8 +74,10 @@ in
       # steam
       # emulators
       # nintendo
+      # TODO: replace this with self hosted flake
       (lib.mkIf cfg.hasGPU yuzu-mainline) # Switch Emulator
-      citra-canary # 3DS emulator
+      # TODO: replace this with self hosted flake
+      # citra-canary # 3DS emulator
       (lib.mkIf cfg.hasGPU cemu) # Wii-U emulator
       dolphin-emu # GameCube and Wii Emulator
       desmume # DS Emulator