about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--home/home.nix107
-rw-r--r--home/machines/chupacabra.nix7
-rw-r--r--home/machines/dobharchu.nix17
-rw-r--r--home/modules/alsi.nix41
-rw-r--r--home/modules/common.nix38
-rw-r--r--home/modules/development.nix6
-rw-r--r--home/modules/emacs.nix106
-rw-r--r--home/modules/games.nix22
-rw-r--r--home/platforms/darwin.nix24
-rw-r--r--home/platforms/linux.nix103
10 files changed, 294 insertions, 177 deletions
diff --git a/home/home.nix b/home/home.nix
index 42debbfc34..39045c147d 100644
--- a/home/home.nix
+++ b/home/home.nix
@@ -1,28 +1,12 @@
 { config, pkgs, ... }:
 
-let machine = ./machines/chupacabra.nix; in
 {
   imports = [
-    ./modules/alacritty.nix
-    ./modules/alsi.nix
-    ./modules/development.nix
-    ./modules/emacs.nix
-    ./modules/email.nix
-    ./modules/firefox.nix
-    ./modules/games.nix
-    ./modules/i3.nix
-    ./modules/shell.nix
-    ./modules/tarsnap.nix
-    ./modules/vim.nix
-
-    ~/code/urb/urbos/home
-
-    machine
+    (throw "Pick a machine from ./machines")
   ];
 
   # Let Home Manager install and manage itself.
   programs.home-manager.enable = true;
-  xsession.enable = true;
 
   # This value determines the Home Manager release that your
   # configuration is compatible with. This helps avoid breakage
@@ -33,93 +17,4 @@ let machine = ./machines/chupacabra.nix; in
   # the Home Manager release notes for a list of state version
   # changes in each release.
   home.stateVersion = "19.09";
-
-  # for when hacking
-  programs.home-manager.path = "/home/grfn/code/home-manager";
-
-  home.packages = with pkgs; [
-    (import (fetchTarball "https://github.com/ashkitten/nixpkgs/archive/init-glimpse.tar.gz") {}).glimpse
-
-    # Desktop stuff
-    arandr
-    firefox
-    feh
-    chromium
-    xclip
-    xorg.xev
-    picom
-    peek
-    signal-desktop
-    apvlv # pdf viewer
-    vlc
-    irssi
-    gnutls
-    pandoc
-    barrier
-
-    # System utilities
-    htop
-    powertop
-    usbutils
-    pciutils
-    killall
-    gdmap
-    bind
-    lsof
-    zip
-    tree
-    ncat
-    unzip
-
-    # Security
-    gnupg
-    keybase
-    openssl
-
-    # Spotify...etc
-    spotify
-    playerctl
-
-    # Nix things
-    nixfmt
-    nix-prefetch-github
-    nix-review
-    cachix
-  ];
-
-  nixpkgs.config.allowUnfree = true;
-
-  programs.password-store.enable = true;
-
-  services.redshift = {
-    enable = true;
-    provider = "geoclue2";
-  };
-
-  services.pasystray.enable = true;
-
-  impure.clonedRepos.passwordStore = {
-    github = "glittershark/pass";
-    path = ".local/share/password-store";
-  };
-
-  urbint.projectPath = "code/urb";
-
-  services.gpg-agent = {
-    enable = true;
-  };
-
-  gtk = {
-    enable = true;
-    gtk3.bookmarks = [
-      "file:///home/grfn/code"
-    ];
-  };
-
-  programs.tarsnap = {
-    enable = true;
-    keyfile = "/home/grfn/.private/tarsnap.key";
-    printStats = true;
-    humanizeNumbers = true;
-  };
 }
diff --git a/home/machines/chupacabra.nix b/home/machines/chupacabra.nix
index c0d1fce431..86be9b361d 100644
--- a/home/machines/chupacabra.nix
+++ b/home/machines/chupacabra.nix
@@ -2,6 +2,13 @@
 let
   laptopKeyboardId = "25";
 in {
+  imports = [
+    ../platforms/linux.nix
+
+    ../modules/common.nix
+    ../modules/games.nix
+  ];
+
   system.machine = {
     wirelessInterface = "wlp59s0";
     i3FontSize = 9;
diff --git a/home/machines/dobharchu.nix b/home/machines/dobharchu.nix
new file mode 100644
index 0000000000..0b8503a00e
--- /dev/null
+++ b/home/machines/dobharchu.nix
@@ -0,0 +1,17 @@
+{ config, lib, pkgs, ... }:
+
+{
+  imports = [
+    ../platforms/darwin.nix
+    ../modules/common.nix
+    ../modules/games.nix
+  ];
+
+  home.packages = with pkgs; [
+    coreutils
+    gnupg
+    nix-prefetch-github
+    pass
+    pinentry_mac
+  ];
+}
diff --git a/home/modules/alsi.nix b/home/modules/alsi.nix
index cb9802e2ce..e42524bb88 100644
--- a/home/modules/alsi.nix
+++ b/home/modules/alsi.nix
@@ -1,29 +1,30 @@
 { config, lib, pkgs, ... }:
-let alsi = pkgs.callPackage ../../pkgs/alsi {};
+let alsi = pkgs.callPackage ~/code/system/pkgs/alsi {};
 in
 {
   home.packages = [ alsi ];
 
-  home.file.".config/alsi/alsi.logo" = {
+  xdg.configFile."alsi/alsi.logo" = {
     source = ./nixos-logo.txt;
     force = true;
   };
 
-  home.file.".config/alsi/alsi.conf" = {
+  xdg.configFile."alsi/alsi.conf" = {
+    force = true;
     text = ''
     #!${pkgs.perl}/bin/perl
 
     scalar {
       ALSI_VERSION         => "0.4.8",
-      COLORS_FILE          => "/home/grfn/.config/alsi/alsi.colors",
-      DE_FILE              => "/home/grfn/.config/alsi/alsi.de",
+      COLORS_FILE          => "/${config.home.homeDirectory}/.config/alsi/alsi.colors",
+      DE_FILE              => "/${config.home.homeDirectory}/.config/alsi/alsi.de",
       DEFAULT_COLOR_BOLD   => "blue",
       DEFAULT_COLOR_NORMAL => "blue",
       DF_COMMAND           => "df -Th -x sys -x tmpfs -x devtmpfs &>/dev/stdout",
-      GTK2_RC_FILE         => "/home/grfn/.gtkrc-2.0",
-      GTK3_RC_FILE         => "/home/grfn/.config/gtk-3.0/settings.ini",
-      LOGO_FILE            => "/home/grfn/.config/alsi/alsi.logo",
-      OUTPUT_FILE          => "/home/grfn/.config/alsi/alsi.output",
+      GTK2_RC_FILE         => "/${config.home.homeDirectory}/.gtkrc-2.0",
+      GTK3_RC_FILE         => "/${config.home.homeDirectory}/.config/gtk-3.0/settings.ini",
+      LOGO_FILE            => "/${config.home.homeDirectory}/.config/alsi/alsi.logo",
+      OUTPUT_FILE          => "/${config.home.homeDirectory}/.config/alsi/alsi.output",
       # PACKAGES_PATH        => "/var/lib/pacman/local/",
       PS_COMMAND           => "ps -A",
       USAGE_COLORS         => 0,
@@ -33,9 +34,27 @@ in
       USAGE_PRECENT_YELLOW => 85,
       USE_LOGO_FROM_FILE   => 1,
       USE_VALUES_COLOR     => 0,
-      WM_FILE              => "/home/grfn/.config/alsi/alsi.wm",
+      WM_FILE              => "/${config.home.homeDirectory}/.config/alsi/alsi.wm",
     }
     '';
-    force = true;
   };
+
+  xdg.configFile."alsi/alsi.colors".text = ''
+    #!${pkgs.perl}/bin/perl
+
+    # Colors for alsi
+
+    scalar {
+       black   => {normal => "\e[0;30m", bold => "\e[1;30m"},
+       red     => {normal => "\e[0;31m", bold => "\e[1;31m"},
+       green   => {normal => "\e[0;32m", bold => "\e[1;32m"},
+       yellow  => {normal => "\e[0;33m", bold => "\e[1;33m"},
+       default => {normal => "\e[0;34m", bold => "\e[1;34m"},
+       blue    => {normal => "\e[0;34m", bold => "\e[1;34m"},
+       purple  => {normal => "\e[0;35m", bold => "\e[1;35m"},
+       cyan    => {normal => "\e[0;36m", bold => "\e[1;36m"},
+       white   => {normal => "\e[0;37m", bold => "\e[1;37m"},
+       reset   => "\e[0m",
+    }
+  '';
 }
diff --git a/home/modules/common.nix b/home/modules/common.nix
new file mode 100644
index 0000000000..ad712a335b
--- /dev/null
+++ b/home/modules/common.nix
@@ -0,0 +1,38 @@
+{ config, lib, pkgs, ... }:
+
+{
+  imports = [
+    ../modules/shell.nix
+    ../modules/development.nix
+    ../modules/emacs.nix
+    ../modules/vim.nix
+    ../modules/tarsnap.nix
+  ];
+
+  nixpkgs.config.allowUnfree = true;
+  programs.password-store.enable = true;
+
+  impure.clonedRepos.passwordStore = {
+    github = "glittershark/pass";
+    path = ".local/share/password-store";
+  };
+
+  home.packages = with pkgs; [
+    htop
+    killall
+    bind
+    zip unzip
+    tree
+    ncat
+
+    gnupg
+    keybase
+    openssl
+
+    # Nix things
+    nixfmt
+    nix-prefetch-github
+    nix-review
+    cachix
+  ];
+}
diff --git a/home/modules/development.nix b/home/modules/development.nix
index 3417b21261..5e17a7a925 100644
--- a/home/modules/development.nix
+++ b/home/modules/development.nix
@@ -1,5 +1,7 @@
 { config, lib, pkgs, ... }:
 
+with lib;
+
 {
   imports = [
     ./development/kube.nix
@@ -21,14 +23,14 @@
       rev = "9e7279edde2a4e0f5ec04c53f5cd64440a27a1ae";
       sha256 = "0zz2lrwn3y3rb8gzaiwxgz02dvy3s552zc70zvfqc0zh5dhydgn7";
     }) { inherit pkgs; }).yarn2nix
-    julia
     (pkgs.callPackage (pkgs.fetchFromGitHub {
       owner = "hlolli";
       repo = "clj2nix";
       rev = "3ab3480a25e850b35d1f532a5e4e7b3202232383";
       sha256 = "1lry026mlpxp1j563qs13nhxf37i2zpl7lh0lgfdwc44afybqka6";
     }) {})
-  ];
+  ] ++ 
+  optional (stdenv.isLinux) julia;
 
   programs.git = {
     enable = true;
diff --git a/home/modules/emacs.nix b/home/modules/emacs.nix
index 71d7cbf70e..2a4babf5e1 100644
--- a/home/modules/emacs.nix
+++ b/home/modules/emacs.nix
@@ -1,5 +1,7 @@
 { pkgs, lib, ... }:
 
+with lib;
+
 let
  # doom-emacs = pkgs.callPackage (builtins.fetchTarball {
  #   url = https://github.com/vlaci/nix-doom-emacs/archive/master.tar.gz;
@@ -8,7 +10,7 @@ let
  #                               # and packages.el files
  # };
 in {
-  # imports = [ ./lib/cloneRepo.nix ];
+  imports = [ ./lib/cloneRepo.nix ];
 
   # home.packages = [ doom-emacs ];
   # home.file.".emacs.d/init.el".text = ''
@@ -16,61 +18,67 @@ in {
   # '';
   #
 
-  home.packages = with pkgs; [
-    # haskellPackages.Agda BROKEN
+  config = mkMerge [
+    {
+      home.packages = with pkgs; [
+        haskellPackages.Agda 
 
-    # LaTeX (for org export)
-    (pkgs.texlive.combine {
-      inherit (pkgs.texlive)
-        scheme-basic collection-fontsrecommended ulem
-        fncychap titlesec tabulary varwidth framed fancyvrb float parskip
-        wrapfig upquote capt-of needspace;
-    })
+        # LaTeX (for org export)
+        (pkgs.texlive.combine {
+          inherit (pkgs.texlive)
+          scheme-basic collection-fontsrecommended ulem
+          fncychap titlesec tabulary varwidth framed fancyvrb float parskip
+          wrapfig upquote capt-of needspace;
+        })
 
-    ispell
+        ispell
 
-    ripgrep
-    coreutils
-    fd
-    clang
-    gnutls
-  ];
+        ripgrep
+        coreutils
+        fd
+        clang
+        gnutls
+      ];
 
-  nixpkgs.overlays = [
-    (import (builtins.fetchTarball {
-      url = "https://github.com/nix-community/emacs-overlay/archive/54afb061bdd12c61bbfcc13bad98b7a3aab7d8d3.tar.gz";
-      sha256 = "0hrbg65d5h0cb0nky7a46md7vlvhajq1hf0328l2f7ln9hznqz6j";
-    }))
-  ];
+      nixpkgs.overlays = [
+        (import (builtins.fetchTarball {
+          url = "https://github.com/nix-community/emacs-overlay/archive/54afb061bdd12c61bbfcc13bad98b7a3aab7d8d3.tar.gz";
+          sha256 = "0hrbg65d5h0cb0nky7a46md7vlvhajq1hf0328l2f7ln9hznqz6j";
+        }))
+      ];
 
-  programs.emacs = {
-    enable = true;
-    package = pkgs.emacsUnstable;
-  };
+      programs.emacs = {
+        enable = true;
+        package = pkgs.emacsUnstable;
+      };
 
-  impure.clonedRepos = {
-    orgClubhouse = {
-      github = "glittershark/org-clubhouse";
-      path = "code/org-clubhouse";
-    };
+      impure.clonedRepos = {
+        orgClubhouse = {
+          github = "glittershark/org-clubhouse";
+          path = "code/org-clubhouse";
+        };
 
-    doomEmacs = {
-      github = "hlissner/doom-emacs";
-      path = ".emacs.d";
-      after = ["emacs.d"];
-      onClone = "bin/doom install";
-    };
+        doomEmacs = {
+          github = "hlissner/doom-emacs";
+          path = ".emacs.d";
+          after = ["emacs.d"];
+          onClone = "bin/doom install";
+        };
 
-    "emacs.d" = {
-      github = "glittershark/emacs.d";
-      path = ".doom.d";
-      after = ["orgClubhouse"];
-    };
-  };
+        "emacs.d" = {
+          github = "glittershark/emacs.d";
+          path = ".doom.d";
+          after = ["orgClubhouse"];
+        };
+      };
 
-  # Notes
-  services.syncthing = {
-    enable = true;
-    tray = true;
-  };
+    }
+    (mkIf pkgs.stdenv.isLinux {
+      # Notes
+      services.syncthing = {
+        enable = true;
+        tray = true;
+      };
+    })
+  ];
 }
diff --git a/home/modules/games.nix b/home/modules/games.nix
index c68342ba6b..a9adf9c910 100644
--- a/home/modules/games.nix
+++ b/home/modules/games.nix
@@ -1,6 +1,7 @@
 { config, lib, pkgs, ... }:
 
 with pkgs;
+with lib;
 
 let
 
@@ -42,13 +43,16 @@ let
     chmod +x $out/bin/dwarf-fortress
   '';
 
-in {
-  imports = [
-    ./obs.nix
-  ];
+in mkMerge [
+  {
+    home.packages = [
+      crawl
+    ];
+  }
+  (mkIf stdenv.isLinux {
+    home.packages = [
+      df
+    ];
+  })
+]
 
-  home.packages = [
-    crawl
-    df
-  ];
-}
diff --git a/home/platforms/darwin.nix b/home/platforms/darwin.nix
new file mode 100644
index 0000000000..d6b33ba562
--- /dev/null
+++ b/home/platforms/darwin.nix
@@ -0,0 +1,24 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+  home.packages = with pkgs; [
+    coreutils
+    gnupg
+    pinentry_mac
+  ];
+
+  home.activation.linkApplications = lib.hm.dag.entryAfter ["writeBoundary"] ''
+    $DRY_RUN_CMD ln -sf $VERBOSE_ARG \
+      ~/.nix-profile/Applications/* ~/Applications/
+  '';
+
+  programs.zsh.initExtra = ''
+    export NIX_PATH=$HOME/.nix-defexpr/channels:$NIX_PATH
+
+    if [[ "$TERM" == "alacritty" ]]; then
+      export TERM="xterm-256color"
+    fi
+  '';
+}
diff --git a/home/platforms/linux.nix b/home/platforms/linux.nix
new file mode 100644
index 0000000000..b49193442b
--- /dev/null
+++ b/home/platforms/linux.nix
@@ -0,0 +1,103 @@
+{ config, pkgs, ... }:
+
+{
+  imports = [
+    ../modules/alacritty.nix
+    ../modules/alsi.nix
+    ../modules/development.nix
+    ../modules/emacs.nix
+    ../modules/email.nix
+    ../modules/firefox.nix
+    ../modules/games.nix
+    ../modules/obs.nix
+    ../modules/i3.nix
+    ../modules/shell.nix
+    ../modules/tarsnap.nix
+    ../modules/vim.nix
+
+    ~/code/urb/urbos/home
+
+    machine
+  ];
+
+  xsession.enable = true;
+
+  home.packages = with pkgs; [
+    (import (fetchTarball "https://github.com/ashkitten/nixpkgs/archive/init-glimpse.tar.gz") {}).glimpse
+
+    # Desktop stuff
+    arandr
+    firefox
+    feh
+    chromium
+    xclip
+    xorg.xev
+    picom
+    peek
+    signal-desktop
+    apvlv # pdf viewer
+    vlc
+    irssi
+    gnutls
+    pandoc
+    barrier
+
+    # System utilities
+    powertop
+    usbutils
+    pciutils
+    gdmap
+    lsof
+    tree
+    ncat
+
+    # Security
+    gnupg
+    keybase
+    openssl
+
+    # Spotify...etc
+    spotify
+    playerctl
+  ];
+
+  nixpkgs.config.allowUnfree = true;
+
+  programs.password-store.enable = true;
+
+  services.redshift = {
+    enable = true;
+    provider = "geoclue2";
+  };
+
+  services.pasystray.enable = true;
+
+  impure.clonedRepos.passwordStore = {
+    github = "glittershark/pass";
+    path = ".local/share/password-store";
+  };
+
+  urbint.projectPath = "code/urb";
+
+  services.gpg-agent = {
+    enable = true;
+  };
+
+  gtk = {
+    enable = true;
+    gtk3.bookmarks = [
+      "file:///home/grfn/code"
+    ];
+  };
+
+  programs.tarsnap = {
+    enable = true;
+    keyfile = "/home/grfn/.private/tarsnap.key";
+    printStats = true;
+    humanizeNumbers = true;
+  };
+
+  programs.zsh.initExtra = ''
+    [[ ! $IN_NIX_SHELL ]] && alsi -l
+  '';
+}