diff --git a/flake.lock b/flake.lock
new file mode 100644
index 00000000..a3c7a927
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,156 @@
+{
+  "nodes": {
+    "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1650374568,
+        "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-utils": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "home-manager": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "utils": "utils"
+      },
+      "locked": {
+        "lastModified": 1664217366,
+        "narHash": "sha256-YsqVv0D4YIXjeaz37V4/aRZrkAtEMZpFTn+tduI5fAM=",
+        "owner": "nix-community",
+        "repo": "home-manager",
+        "rev": "65b65ce5ef08d54bc09336fe3f35e33be487e2fe",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "home-manager",
+        "type": "github"
+      }
+    },
+    "neovim-flake": {
+      "inputs": {
+        "flake-utils": "flake-utils",
+        "nixpkgs": [
+          "neovim-nightly",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "dir": "contrib",
+        "lastModified": 1664176858,
+        "narHash": "sha256-SIF3XyX22GQ2u4AAq5qsVeLZ/2fHSlBX+8hd5IGQ3+Y=",
+        "owner": "neovim",
+        "repo": "neovim",
+        "rev": "6596f7e136b7ceba2a94c708e2a179ec60b6d048",
+        "type": "github"
+      },
+      "original": {
+        "dir": "contrib",
+        "owner": "neovim",
+        "repo": "neovim",
+        "type": "github"
+      }
+    },
+    "neovim-nightly": {
+      "inputs": {
+        "flake-compat": "flake-compat",
+        "neovim-flake": "neovim-flake",
+        "nixpkgs": "nixpkgs"
+      },
+      "locked": {
+        "lastModified": 1664180387,
+        "narHash": "sha256-5fT/Nnv4QWVASqjMBKuHZKSFV+YHVH5jbTRakvQivuw=",
+        "owner": "nix-community",
+        "repo": "neovim-nightly-overlay",
+        "rev": "b7c02b63405cfc346b1faecc0602aeb7aaf79ee7",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "neovim-nightly-overlay",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1664117201,
+        "narHash": "sha256-6QVOY28vj9eJqTVW5bT65hfY6qwmUi+fclgbRMotAzI=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "f3e200bd7fa6f62edbfad82fe9fefe7b02f28603",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1664106353,
+        "narHash": "sha256-HMJP80+DSxFySpWyuxz5+iNozS3+dVt0b4n6YMIU5/8=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "79d3ca08920364759c63fd3eb562e99c0c17044a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "home-manager": "home-manager",
+        "neovim-nightly": "neovim-nightly",
+        "nixpkgs": "nixpkgs_2"
+      }
+    },
+    "utils": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 00000000..977f92b3
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,24 @@
+# https://nix-community.github.io/home-manager/index.html#ch-nix-flakes
+{
+  inputs = {
+    home-manager.inputs.nixpkgs.follows = "nixpkgs";
+    home-manager.url = "github:nix-community/home-manager";
+    neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+  };
+
+  outputs = { self, home-manager, neovim-nightly, nixpkgs, ... }:
+  let
+    overlays = [ neovim-nightly.overlay ];
+  in {
+    homeConfigurations = {
+      pop-os = home-manager.lib.homeManagerConfiguration {
+        modules = [     
+          { nixpkgs.overlays = overlays; }
+          ./home-manager/pop-os.nix
+        ];
+        pkgs = nixpkgs.legacyPackages.x86_64-linux;
+      };
+    };
+  };
+}
diff --git a/home-manager/home.nix b/home-manager/pop-os.nix
similarity index 92%
rename from home-manager/home.nix
rename to home-manager/pop-os.nix
index c716674e..36b93326 100644
--- a/home-manager/home.nix
+++ b/home-manager/pop-os.nix
@@ -1,24 +1,25 @@
 { config, pkgs, ... }:
 
 {
-  # Home Manager needs a bit of information about you and the
-  # paths it should manage.
   home.username = "opdavies";
   home.homeDirectory = "/home/opdavies";
 
-  # 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 can update Home Manager without changing this value. See
-  # the Home Manager release notes for a list of state version
-  # changes in each release.
   home.stateVersion = "22.05";
 
   # Let Home Manager install and manage itself.
   programs.home-manager.enable = true;
 
+  fonts.fontconfig.enable = true;
+
+  home.packages = with pkgs; [
+    docker
+    docker-compose
+    jetbrains-mono
+    just
+    meslo-lg
+    neovim
+  ];
+
   programs.bat.enable = true;
 
   programs.git = {
@@ -127,7 +128,7 @@
 
       set-option -g status-keys "emacs"
       set-option -ga terminal-overrides ",*256col*:Tc"
-      set-option -g default-terminal "xterm-256color"
+      set-option -g default-terminal "screen-256color"
 
       bind-key h split-window -v  -c "#{pane_current_path}"
       bind-key v split-window -h  -c "#{pane_current_path}"
diff --git a/justfile b/justfile
index 4fd4d334..ba1fc555 100644
--- a/justfile
+++ b/justfile
@@ -1,5 +1,5 @@
 default:
   just --list
 
-update:
-  home-manager switch -f home-manager/home.nix
+pop-os *args:
+  home-manager switch -f home-manager/home.nix --flake .#pop-os {{ args }}