diff --git a/hosts/nixos-testbed/configuration.nix b/hosts/nixos-testbed/configuration.nix index 7386640..bdc782f 100755 --- a/hosts/nixos-testbed/configuration.nix +++ b/hosts/nixos-testbed/configuration.nix @@ -10,6 +10,8 @@ tailscale.enable = true; + dropbox.enable = true; + users.users = [ "crumb" ]; diff --git a/modules/nixos/dropbox.nix b/modules/nixos/dropbox.nix new file mode 100644 index 0000000..b0398a6 --- /dev/null +++ b/modules/nixos/dropbox.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.sydnix.dropbox; +in { + options = { + sydnix.dropbox = { + enable = mkEnableOption "Dropbox"; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.dropbox-cli ]; + systemd.user.services.dropbox = { + description = "Dropbox"; + wantedBy = [ "graphical-session.target" ]; + environment = { + QT_PLUGIN_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtPluginPrefix; + QML2_IMPORT_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtQmlPrefix; + }; + serviceConfig = { + ExecStart = "${lib.getBin pkgs.dropbox}/bin/dropbox"; + ExecReload = "${lib.getBin pkgs.coreutils}/bin/kill -HUP $MAINPID"; + KillMode = "control-group"; # upstream recommends process + Restart = "on-failure"; + PrivateTmp = true; + ProtectSystem = "full"; + Nice = 10; + }; + }; + }; +} diff --git a/users/crumb/default.nix b/users/crumb/default.nix index 59e76d2..8238ecb 100755 --- a/users/crumb/default.nix +++ b/users/crumb/default.nix @@ -9,7 +9,10 @@ }; homeConfiguration = { config, lib, pkgs, ... }: { - imports = [ ./programs.nix ]; + imports = [ + ./programs.nix + ./files.nix + ]; sydnix = { sops = { @@ -20,12 +23,10 @@ }; }; - home = { - packages = [ - ]; + home.packages = [ + ]; - # Don't touch! - stateVersion = "18.09"; - }; + # Don't touch! + home.stateVersion = "18.09"; }; } diff --git a/users/crumb/files.nix b/users/crumb/files.nix new file mode 100644 index 0000000..99eaac6 --- /dev/null +++ b/users/crumb/files.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +let mutableSymlink = config.lib.file.mkOutOfStoreSymlink; +in { + home.file."org".source = + mutableSymlink "~/Dropbox/org"; + + # HACK: This all ought to be subsumed by Impermanence. + + home.file."Documents".source = + mutableSymlink "/persist/home/crumb/Documents"; + + home.file."Pictures".source = + mutableSymlink "/persist/home/crumb/Pictures"; + + home.file."src".source = + mutableSymlink "/persist/home/crumb/src"; + + home.file."Music".source = + mutableSymlink "/persist/home/crumb/Music"; + + home.file."Videos".source = + mutableSymlink "/persist/home/crumb/Videos"; +}