URI: 
       Title: Making a home NAS using NixOS
       Author: Solène
       Date: 18 October 2020
       Tags: nixos linux nas
       Description: 
       
       Still playing with [NixOS](https://nixos.org/), I wanted to experience
       how difficult it would be to write a NixOS configuration file to
       turn a computer into a simple NAS with basics features: samba
       storage, dlna server and auto suspend/resume.
       
       What is [NixOS](https://nixos.org/features.html)? As a reminder for
       some and introduction to the others, NixOS is a Linux distribution
       built by the Nix package manager, which make it very different than
       any other operating system out there, except
       [Guix](https://guix.gnu.org/)
       which has a similar approach with their own package manager written
       in Scheme.
       
       NixOS uses a declarative configuration approach along with lot of
       others features derived from Nix. What's big here is you no longer
       tweak anything in `/etc` or install packages, you can define the
       working state of the system in one configuration file. This system
       is a totally different beast than the others OS and require some
       time to understand how it work. Good news though, **everything**
       is documented in the man page `configuration.nix`, from fstab
       configuration to users managements or how to enable samba!
       
       Here is the `/etc/nixos/configuration.nix` file on my NAS.
       
       It enables ssh server, samba, minidlna and vnstat. Set up a user
       with my ssh public key. Ready to work.
       
       Using `rtcwake` command (Linux specific), it's possible to put
       the system into standby mode and schedule an auto resume after
       some time. This is triggered by a cron job at 01h00.
       
           { config, pkgs, ... }:
           {
             # include stuff related to hardware, auto generated at install
             imports = [ ./hardware-configuration.nix ];
             boot.loader.grub.device = "/dev/sda";
dataswamp.org:70 /~solene/article-nixos-nas:43: port field too long